<?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>57345</bug_id>
          
          <creation_ts>2011-03-29 08:47:14 -0700</creation_ts>
          <short_desc>Web Inspector: split debugger agent into Page and Worker-specific ones</short_desc>
          <delta_ts>2011-03-30 12:23:12 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yury Semikhatsky">yurys</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>buildbot</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>375385</commentid>
    <comment_count>0</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-29 08:47:14 -0700</bug_when>
    <thetext>Web Inspector: split debugger agent into Page and Worker-specific ones. All Page-specific interaction should be moved into descendants of InspectorDebuggerAgent and ScriptDebugServer. Workers will have their own implementation of the agent and server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376250</commentid>
    <comment_count>1</comment_count>
      <attachid>87519</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-30 06:20:25 -0700</bug_when>
    <thetext>Created attachment 87519
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376253</commentid>
    <comment_count>2</comment_count>
      <attachid>87520</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-30 06:23:30 -0700</bug_when>
    <thetext>Created attachment 87520
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376264</commentid>
    <comment_count>3</comment_count>
      <attachid>87519</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-03-30 06:37:34 -0700</bug_when>
    <thetext>Comment on attachment 87519
Patch

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

Please split this at least into 5 patches since it is nearly impossible to follow what is going on here. Conceptually, it is all right.

&gt; Source/WebCore/bindings/js/PageScriptDebugServer.cpp:63
&gt; +/*

Please remove this comment.

&gt; Source/WebCore/bindings/js/PageScriptDebugServer.cpp:72
&gt; +PageScriptDebugServer&amp; PageScriptDebugServer::shared()

We don&apos;t really need static server.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376283</commentid>
    <comment_count>4</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-30 07:00:40 -0700</bug_when>
    <thetext>Committed r82436: &lt;http://trac.webkit.org/changeset/82436&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376304</commentid>
    <comment_count>5</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-30 07:39:13 -0700</bug_when>
    <thetext>Reopening since the change was rolled out in r82438 due to compilation failures on EFL and Win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376338</commentid>
    <comment_count>6</comment_count>
      <attachid>87539</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-30 08:22:09 -0700</bug_when>
    <thetext>Created attachment 87539
Patch that compiles

Patch with additional changes to build files that should make it compile on EFL and Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376339</commentid>
    <comment_count>7</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-03-30 08:22:47 -0700</bug_when>
    <thetext>Attachment 87520 did not build on win:
Build output: http://queues.webkit.org/results/8285851</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376346</commentid>
    <comment_count>8</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-03-30 08:26:53 -0700</bug_when>
    <thetext>Committed r82449: &lt;http://trac.webkit.org/changeset/82449&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>376585</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-30 12:23:12 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/82436 might have broken WinCE Release (Build)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87519</attachid>
            <date>2011-03-30 06:20:25 -0700</date>
            <delta_ts>2011-03-30 06:37:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57345-20110330172022.patch</filename>
            <type>text/plain</type>
            <size>125233</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI0MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOTM2OTY2ZjRhZjIwNTJk
MjYxZWM1MDRmZmVlMWFlZTE0ZGRiMGM5Li4zM2QyZDAzYzE1NDg4MTAzYzM2MTk5MGNkZjM5NmU3
MDhiYzhkMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM5IEBACisyMDExLTAzLTMwICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNwbGl0IGRlYnVnZ2Vy
IGFnZW50IGludG8gUGFnZSBhbmQgV29ya2VyLXNwZWNpZmljIG9uZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MzQ1CisKKyAgICAgICAgU2NyaXB0
RGVidWdTZXJ2ZXIgYW5kIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgY29udGFpbiBvbmx5IGZ1bmN0
aW9uYWxpdHkgY29tbW9uCisgICAgICAgIGZvciBXb3JrZXIgYW5kIFBhZ2UgZGVidWdnZXIuIEFs
bCBzcGVjaWZpY3MgaXMgbW92ZWQgaW50byBQYWdlL1dvcmtlclNjcmlwdERlYnVnU2VydmVyCisg
ICAgICAgIGFuZCBQYWdlL1dvcmtlckRlYnVnZ2VyQWdlbnQuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6Y3VycmVudENhbGxGcmFtZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjp0b1BhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlw
dERlYnVnU2VydmVyOjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVn
U2VydmVyOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNj
cmlwdERlYnVnU2VydmVyOjp+UGFnZVNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6Z2V0TGlzdGVuZXJzRm9yR2xv
YmFsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlk
UGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250
aW51ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlbW92
ZUxhc3RMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OnNldEphdmFTY3JpcHRQYXVzZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0RGVi
dWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNvdXJjZVBh
cnNlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpj
cmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dERlYnVnU2VydmVyOjp1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdERlYnVnU2VydmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVMaXN0ZW5lcik6CisgICAg
ICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6fldvcmtlclNjcmlwdERlYnVn
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpyZWNv
bXBpbGVBbGxKU0Z1bmN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlcjo6Z2V0TGlzdGVuZXJzRm9yR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkQ29udGludWUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
cmV0cmlldmVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OnNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OlBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2
ZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZl
cjo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjpzZXRDbGllbnRNZXNzYWdlTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OmdldERlYnVnTGlzdGVuZXJGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuTWVzc2FnZUxvb3BPblBhdXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cXVpdE1lc3NhZ2VMb29wT25QYXVz
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6Q2xpZW50TWVzc2FnZUxv
b3A6On5DbGllbnRNZXNzYWdlTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXI6On5QYWdlU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6Y29udGludWVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpzdGVwSW50b1N0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6c3RlcE92ZXJTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjplZGl0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2NyaXB0
RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFr
UHJvZ3JhbUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp2
OERlYnVnRXZlbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjppc1BhdXNlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OldvcmtlclNj
cmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2Vy
dmVyOjphZGRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcjo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlclNjcmlw
dERlYnVnU2VydmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXI6On5Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6Z2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bk1lc3NhZ2VMb29wT25Q
YXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cXVpdE1l
c3NhZ2VMb29wT25QYXVzZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3Jp
cHRIb3N0OjpjdXJyZW50Q2FsbEZyYW1lQ2FsbGJhY2spOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9z
dDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmRlYnVnZ2Vy
QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludHNBY3RpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFr
cG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZWRpdFNj
cmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
Y2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwT3Zlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwSW50byk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VE
ZWJ1Z2dlckFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJB
Z2VudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpQYWdl
RGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6flBh
Z2VEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpz
dGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VE
ZWJ1Z2dlckFnZW50OjpzdG9wTGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OnNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1
Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckRlYnVnZ2VyQWdlbnQ6On5Xb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckRlYnVnZ2VyQWdlbnQ6OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6c3RvcExpc3RlbmluZ1Njcmlw
dERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OnNj
cmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2Vu
dC5oOiBBZGRlZC4KKwogMjAxMS0wMy0zMCAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CmluZGV4IDM0ZTZiOGNjNDU0ZWEwM2QyYjQwYTQ2ZTRmZmI1YTc0MmJjN2E4YTkuLjk4ODY5ZTRk
NmJmNGJmMjliM2JjZWNlNWFhNzQ4YzQ5ZmViNzk5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC04OTMsNiArODkzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9PcHRpb25zT2JqZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmNwcCBcCkBAIC05MzEsNiArOTMzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmggXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmggXAorCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvQnJpZGdlLmggXApAQCAtMjA0NCw2ICsyMDQ4LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZURlYnVnZ2VyQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dEFyZ3VtZW50cy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVu
dHMuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaCBcCkBA
IC0yMDU1LDYgKzIwNjEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRHQ0V2ZW50TGlzdGVuZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyRGVidWdnZXJBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNl
SlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IGZlMzMxYmZkNjAy
ZDFjZGM0YjcwMDg1ZTgxMTE5NWVlMTIwYmY4OWIuLmNkY2QzOGEwMTAxNjA3NmViYWY1OTEzNTNk
MTUxNjhkNGYyZmE0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTE0MSw2ICsxNDEsNyBAQCBMSVNU
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
VXBsb2FkQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5j
cHAKICAgICBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAorICAgIGJpbmRpbmdz
L2pzL1BhZ2VEZWJ1Z1NlcnZlci5jcHAKICAgICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAogICAgIGJpbmRp
bmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0xNTYsNiArMTU3LDcgQEAgTElT
VChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3Bw
CiAgICAgYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAogICAgIGJpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisgICAgYmluZGluZ3MvanMvV29ya2VyRGVi
dWdTZXJ2ZXIuY3BwCiAKICAgICBicmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKICAgICBicmlkZ2Uv
TlBfanNvYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWM4ZWFkN2JmMDU1MTk3YzZhOTQ2
MjM1ZDkwNmI0ZmM1OWIwMDRmMi4uMzUyYmM2MTFiNTE1MDQwMjg3YTMwZjE1NDZkZDhiYzNjNjM0
NWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTkyOSw2ICsxOTI5LDggQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvT3B0aW9uc09iamVjdC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9Pd25IYW5kbGUu
aCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCcs
CisgICAgICAgICAgICAnYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmgnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9SZXRhaW5lZE9iamVjdEluZm8uaCcsCkBAIC0yMDI2LDYgKzIwMjgsOCBAQAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oJywKKyAgICAgICAgICAgICdi
aW5kaW5ncy92OC9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAnLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1dvcmxkQ29udGV4dEhhbmRsZS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9XcmFwcGVy
VHlwZUluZm8uaCcsCkBAIC0zMjI4LDYgKzMyMzIsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9y
V29ya2VyUmVzb3VyY2UuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3RydW1lbnRpbmdB
Z2VudHMuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCcs
CisgICAgICAgICAgICAnaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvU2NyaXB0QXJndW1lbnRzLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRDYWxs
RnJhbWUuY3BwJywKQEAgLTMyMzcsNiArMzI0Myw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9y
L1NjcmlwdEdDRXZlbnRMaXN0ZW5lci5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgnLAog
ICAgICAgICAgICAgJ2xvYWRlci9DYWNoZWRNZXRhZGF0YS5oJywKICAgICAgICAgICAgICdsb2Fk
ZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZDJkMjgwOTAzNjI5
MmE4MWIwNTQ1Njk3NDIyM2M3YzBlYjA5NjQwNC4uN2YyMWVlMDEwYjlhYmQzMmYxZTJjMjRmNzI1
Mzk2MjcxYWRlYjBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM0Niw2ICszNDYsNyBAQCB2OCB7CiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0UG9pbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9q
cy9KU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pz
L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIFwK
QEAgLTgzMCwxMCArODMxLDEyIEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBcCisgICAgaW5zcGVjdG9y
L1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5j
cHAgXAogICAgIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKICAgICBpbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmNwcCBcCiAgICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9y
eS5jcHAgXAorICAgIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBcCiAgICAgbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcCBcCiAgICAgbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAgXAogICAgIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHAgXApAQCAtMTMwMCw5ICsxMzAzLDExIEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMv
SlNTdG9yYWdlQ3VzdG9tLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRC
YXNlLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmggXAorICAg
ICAgICBiaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oIFwKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgg
XAorICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIFwKICAgICAgICAgYmlu
ZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5oIFwKICAgICAgICAgYmluZGluZ3MvanMvU2Ny
aXB0RnVuY3Rpb25DYWxsLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRHQ0V2ZW50Lmgg
XApAQCAtMTMyMCw2ICsxMzI1LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9TdHJpbmdT
b3VyY2VQcm92aWRlci5oIFwKICAgICAgICAgYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIFwKICAgICAgICAgYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIFwKKyAg
ICAgICAgYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCBcCiAgICAgICAgIGJy
aWRnZS9CcmlkZ2UuaCBcCiAgICAgICAgIGJyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmggXAogICAg
ICAgICBicmlkZ2UvYy9jX2NsYXNzLmggXApAQCAtMTc1NSw4ICsxNzYxLDEwIEBAIEhFQURFUlMg
Kz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnN0cnVtZW50aW5n
QWdlbnRzLmggXAorICAgIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oIFwKICAgICBpbnNw
ZWN0b3IvU2NyaXB0R0NFdmVudExpc3RlbmVyLmggXAogICAgIGluc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuaCBcCisgICAgaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaCBcCiAg
ICAgbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIFwKICAgICBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBcCiAgICAgbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGUuaCBcCkBAIC0yODY4LDcgKzI4NzYsOCBAQCBjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfV09SS0VSUz0xKSB7CiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1dvcmtlckNv
bnRleHRCYXNlLmNwcCBcCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRD
dXN0b20uY3BwIFwKICAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcCBc
Ci0gICAgICAgICAgICBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorICAg
ICAgICAgICAgYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgXAorICAgICAg
ICAgICAgYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgfQogICAg
IFNPVVJDRVMgKz0gXAogICAgICAgICBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBk
Y2ViMzVkYTY1OTVkY2VkMzE4ODVhYjQ0Y2IzMjcyNzBkNWM0NmRkLi5lYmE4MGIyZjY1OTRhOThm
ZmEzOTNiZjMzZjFkMzE2ZDc5Zjg1ODRiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjMxMTcsNiArNjMxMTcsNjIgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0
ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJ
PFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJE
ZWJ1Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4K
KwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJ
TmFtZT0iUmVsZWFzZV9MVENHfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFBhZ2VTY3JpcHREZWJ1Z1NlcnZl
ci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcU2NoZWR1bGVkQWN0aW9uLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KQEAgLTYzODk2LDYgKzYzOTUyLDYyIEBACiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcV29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxU
b29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVi
dWdfQWxsfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJ
CQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5h
bWU9IlJlbGVhc2VfTFRDR3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xQYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
aCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KIAkJCTwvRmlsdGVyPgogCQkJPEZpbHRlcgogCQkJCU5h
bWU9InNjcmlwdHMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMmU3MWU1NzRjZjUwZDQ4YjBmYjAxNmFlYWFkODI3NzA5NDBhZjI2
OS4uNzczYTUzZGQ2Y2JlODM2ZmIxMTY2NzkxZjkwNDVkMzk2MDI3NmZkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTY0NSw2
ICs1NjQ1LDE0IEBACiAJCUYzNDRDNzE0MTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjM0NEM3MTIxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjM0NEM3
NTMxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNDRDNzUyMTEyOTRE
OUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjM0NEM3NTgxMTI5NEZGNjAw
RjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NEM3NTcxMTI5NEZGNjAwRjI2RUVF
IC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwICovOyB9OworCQlGMzQ3NDJEQzEz
NDM2MkYwMDA1MzFCQzIgLyogUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NzQyREExMzQzNjJGMDAwNTMxQkMyIC8q
IFBhZ2VEZWJ1Z2dlckFnZW50LmNwcCAqLzsgfTsKKwkJRjM0NzQyREQxMzQzNjJGMDAwNTMxQkMy
IC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGMzQ3NDJEQjEzNDM2MkYwMDA1MzFCQzIgLyogUGFnZURlYnVnZ2VyQWdl
bnQuaCAqLzsgfTsKKwkJRjM0NzQyRTAxMzQzNjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjM0NzQyREUxMzQzNjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuY3BwICovOyB9
OworCQlGMzQ3NDJFMTEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJBZ2VudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NzQyREYxMzQz
NjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuaCAqLzsgfTsKKwkJRjM0NzQyRTQx
MzQzNjMzQzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzQ3NDJFMjEzNDM2MzNDMDA1MzFC
QzIgLyogUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCAqLzsgfTsKKwkJRjM0NzQyRTUxMzQzNjMz
QzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NzQyRTMxMzQzNjMzQzAwNTMxQkMyIC8qIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5oICovOyB9OworCQlGMzQ3NDJFODEzNDM2MzUwMDA1MzFCQzIg
LyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NzQyRTYxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNj
cmlwdERlYnVnU2VydmVyLmNwcCAqLzsgfTsKKwkJRjM0NzQyRTkxMzQzNjM1MDAwNTMxQkMyIC8q
IFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGMzQ3NDJFNzEzNDM2MzUwMDA1MzFCQzIgLyogV29ya2VyU2NyaXB0
RGVidWdTZXJ2ZXIuaCAqLzsgfTsKIAkJRjM2NDRBRkYxMTE5ODA1OTAwRTBENTM3IC8qIEluamVj
dGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5jcHAgKi87IH07
CiAJCUYzNjQ0QjAwMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2NDRBRkUxMTE5ODA1OTAw
RTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggKi87IH07CiAJCUYzNzVDQzA3MTE1MEQzMDAwMDhE
REI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3Bl
Y3RvcldvcmtlclJlc291cmNlLmggKi87IH07CkBAIC0xMjExNyw2ICsxMjEyNSwxNCBAQAogCQlG
MzQ0QzcxMjExMjVCODJDMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjM0NEM3NTIxMTI5NEQ5RDAwRjI2RUVFIC8q
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGMzQ0Qzc1NzExMjk0RkY2MDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjM0NzQyREExMzQzNjJGMDAwNTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1Z2dlckFnZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM0NzQyREIxMzQzNjJGMDAwNTMxQkMy
IC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhZ2VEZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzNDc0
MkRFMTM0MzYzMUYwMDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGMzQ3NDJERjEzNDM2MzFGMDA1MzFCQzIgLyogV29y
a2VyRGVidWdnZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3Jr
ZXJEZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzNDc0MkUy
MTM0MzYzM0MwMDUzMUJDMiAvKiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM0NzQyRTMxMzQzNjMzQzAwNTMxQkMyIC8qIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM0
NzQyRTYxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlclNjcmlwdERlYnVnU2VydmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM0NzQyRTcxMzQzNjM1MDAwNTMx
QkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNjQ0QUZFMTExOTgwNTkwMEUwRDUzNyAv
KiBJbmplY3RlZFNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmpl
Y3RlZFNjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzc1Q0MwNjExNTBE
MzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTgyLDYgKzEzMTk4LDggQEAKIAkJCQlGM0FCRkUwQjEzMEU5
REEwMDBFN0Y3RDEgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5oICovLAogCQkJCTFDODFCQTA1MEU5
NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCAqLywKIAkJCQlCQ0M2NEY1
RjBEQ0ZCODRFMDA4MUVGM0IgLyogbG9jYWxpemVkU3RyaW5ncy5qcyAqLywKKwkJCQlGMzQ3NDJE
QTEzNDM2MkYwMDA1MzFCQzIgLyogUGFnZURlYnVnZ2VyQWdlbnQuY3BwICovLAorCQkJCUYzNDc0
MkRCMTM0MzYyRjAwMDUzMUJDMiAvKiBQYWdlRGVidWdnZXJBZ2VudC5oICovLAogCQkJCUYzOUJF
OTU5MTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuY3BwICovLAogCQkJCUYzOUJF
OTVBMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLywKIAkJCQk3QUZENEE4
QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovLApAQCAtMTMxOTQsNiAr
MTMyMTIsOCBAQAogCQkJCTlGQTM3RUYwMTE3MkZENDEwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxl
Tm9kZS5pZGwgKi8sCiAJCQkJNzU1M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVj
b3JkRmFjdG9yeS5jcHAgKi8sCiAJCQkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVs
aW5lUmVjb3JkRmFjdG9yeS5oICovLAorCQkJCUYzNDc0MkRFMTM0MzYzMUYwMDUzMUJDMiAvKiBX
b3JrZXJEZWJ1Z2dlckFnZW50LmNwcCAqLywKKwkJCQlGMzQ3NDJERjEzNDM2MzFGMDA1MzFCQzIg
LyogV29ya2VyRGVidWdnZXJBZ2VudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpbnNwZWN0b3I7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTc5NTcsNiArMTc5NzcsOCBAQAogCQkJ
CTE0Q0Q4RDgxMTA2QjUyOTAwMEE0NkQyMyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8s
CiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyQ29udGV4dEJhc2UuY3Bw
ICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckNvbnRleHRCYXNl
LmggKi8sCisJCQkJRjM0NzQyRTIxMzQzNjMzQzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAgKi8sCisJCQkJRjM0NzQyRTMxMzQzNjMzQzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5oICovLAogCQkJCUJDQTM3OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVs
ZWRBY3Rpb24uY3BwICovLAogCQkJCUJDQTM3OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVs
ZWRBY3Rpb24uaCAqLywKIAkJCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhLmNwcCAqLywKQEAgLTE3OTk2LDYgKzE4MDE4LDggQEAKIAkJCQlCQzUzRDkx
MDExNDMxMENDMDAwRDgxN0UgLyogV2ViQ29yZUpTQ2xpZW50RGF0YS5oICovLAogCQkJCUUxQTY0
M0ZDMEVDMDk3QTAwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCAqLywKIAkJ
CQlFMUE2NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oICov
LAorCQkJCUYzNDc0MkU2MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAgKi8sCisJCQkJRjM0NzQyRTcxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERl
YnVnU2VydmVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGpzOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTIyNzI1LDYgKzIyNzQ5LDEwIEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAw
MkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYx
MkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTk5QzY3
MUUxMzQzNDM5NDAwQzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlGMzQ3NDJERDEzNDM2MkYwMDA1MzFCQzIgLyogUGFnZURlYnVnZ2VyQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUYzNDc0MkUxMTM0MzYzMUYwMDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dl
ckFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGMzQ3NDJFNTEzNDM2MzNDMDA1MzFCQzIgLyog
UGFnZVNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGMzQ3NDJFOTEzNDM2
MzUwMDA1MzFCQzIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMjUzOTgsNiArMjU0MjYsMTAgQEAKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyog
WFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMw
MEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTk5QzY3MUMxMzQz
NDM4OTAwQzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUYzNDc0MkRDMTM0MzYyRjAwMDUzMUJDMiAvKiBQYWdlRGVidWdnZXJBZ2VudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGMzQ3NDJFMDEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJB
Z2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGMzQ3NDJFNDEzNDM2MzNDMDA1MzFCQzIgLyog
UGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYzNDc0MkU4MTM0
MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCAxMmM4YjdhNjRlMTMxZjRjNGUwZGVmMWUwNTY4MmYx
OTM2ODRjMjBiLi5kNTYyNTFmYjQwN2RlNjU3ZjNlNGM0ZGZlZDkxNDE4YzAzNWJkMDIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjZW5kaWYKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgog
I2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCkBAIC03NSw3ICs3
Niw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUo
U2NyaXB0U3RhdGUqIHN0YXRlLCBOb2RlKiBub2RlCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjpjdXJyZW50Q2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLSAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuY3VycmVudENhbGxGcmFtZSgpOworICAgIEphdmFT
Y3JpcHRDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IGltcGwoKS0+ZGVidWdnZXJBZ2VudCgpLT5zY3Jp
cHREZWJ1Z1NlcnZlcigpLmN1cnJlbnRDYWxsRnJhbWUoKTsKICAgICBpZiAoIWNhbGxGcmFtZSB8
fCAhY2FsbEZyYW1lLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2Vy
dmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYWQxZjVjNjM0ODhlMDQ3ZWNmOTcyNDRkZDViZjFiYWMyZmM3
N2YxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcApAQCAtMCwwICsxLDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKworI2lmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKQorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCisjaW5jbHVkZSAi
U2NyaXB0RGVidWdMaXN0ZW5lci5oIgorI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIFBhZ2UqIHRvUGFnZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIEFTU0VSVF9BUkcoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpOworCisgICAg
SlNET01XaW5kb3cqIHdpbmRvdyA9IGFzSlNET01XaW5kb3coZ2xvYmFsT2JqZWN0KTsKKyAgICBG
cmFtZSogZnJhbWUgPSB3aW5kb3ctPmltcGwoKS0+ZnJhbWUoKTsKKyAgICByZXR1cm4gZnJhbWUg
PyBmcmFtZS0+cGFnZSgpIDogMDsKK30KKworLyoKK3N0YXRpYyBTY3JpcHRXb3JsZFR5cGUgY3Vy
cmVudFdvcmxkVHlwZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGN1cnJlbnRXb3JsZChl
eGVjKSA9PSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKKyAgICAgICAgcmV0dXJuIE1BSU5fV09S
TEQ7CisgICAgcmV0dXJuIEVYVEVOU0lPTlNfV09STEQ7Cit9CisqLworCitQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXImIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciwgc2VydmVyLCAoKSk7CisgICAgcmV0
dXJuIHNlcnZlcjsKK30KKworUGFnZVNjcmlwdERlYnVnU2VydmVyOjpQYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIoKQorICAgIDogU2NyaXB0RGVidWdTZXJ2ZXIoKQoreworfQorCitQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXI6On5QYWdlU2NyaXB0RGVidWdTZXJ2ZXIoKQoreworICAgIGRlbGV0ZUFsbFZhbHVl
cyhtX3BhZ2VMaXN0ZW5lcnNNYXApOworfQorCit2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6
YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCit7
CisgICAgQVNTRVJUX0FSRyhsaXN0ZW5lciwgbGlzdGVuZXIpOworICAgIEFTU0VSVF9BUkcocGFn
ZSwgcGFnZSk7CisKKyAgICBwYWlyPFBhZ2VMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIDApOworICAgIGlmIChyZXN1bHQu
c2Vjb25kKQorICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBMaXN0ZW5lclNldDsK
KworICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAg
ICBsaXN0ZW5lcnMtPmFkZChsaXN0ZW5lcik7CisKKyAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9u
c1Nvb24oKTsKKyAgICBwYWdlLT5zZXREZWJ1Z2dlcih0aGlzKTsKK30KKwordm9pZCBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3Rl
bmVyLCBQYWdlKiBwYWdlKQoreworICAgIEFTU0VSVF9BUkcobGlzdGVuZXIsIGxpc3RlbmVyKTsK
KyAgICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOworCisgICAgUGFnZUxpc3RlbmVyc01hcDo6aXRl
cmF0b3IgaXQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuZmluZChwYWdlKTsKKyAgICBpZiAoaXQgPT0g
bV9wYWdlTGlzdGVuZXJzTWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMaXN0ZW5l
clNldCogbGlzdGVuZXJzID0gaXQtPnNlY29uZDsKKyAgICBsaXN0ZW5lcnMtPnJlbW92ZShsaXN0
ZW5lcik7CisgICAgaWYgKGxpc3RlbmVycy0+aXNFbXB0eSgpKSB7CisgICAgICAgIG1fcGFnZUxp
c3RlbmVyc01hcC5yZW1vdmUoaXQpOworICAgICAgICBkZWxldGUgbGlzdGVuZXJzOworICAgICAg
ICBkaWRSZW1vdmVMYXN0TGlzdGVuZXIocGFnZSk7CisgICAgfQorfQorCit2b2lkIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdT
ZXJ2ZXI+KikKK3sKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAg
IC8vIElmIEphdmFTY3JpcHQgc3RhY2sgaXMgbm90IGVtcHR5IHBvc3Rwb25lIHJlY29tcGlsYXRp
b24uCisgICAgaWYgKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+ZHluYW1pY0ds
b2JhbE9iamVjdCkKKyAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7CisgICAg
ZWxzZQorICAgICAgICBEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNET01XaW5k
b3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKK30KKworU2NyaXB0RGVidWdTZXJ2ZXI6Okxpc3Rl
bmVyU2V0KiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmdldExpc3RlbmVyc0Zvckdsb2JhbE9iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFBhZ2UqIHBhZ2UgPSB0b1Bh
Z2UoZ2xvYmFsT2JqZWN0KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBtX3BhZ2VMaXN0ZW5lcnNNYXAuZ2V0KHBhZ2UpOworfQorCit2b2lkIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIFBhZ2UqIHBhZ2UgPSB0b1BhZ2UoZ2xvYmFsT2JqZWN0KTsKKyAgICBtX3BhdXNl
ZFBhZ2UgPSBwYWdlOworICAgIHNldEphdmFTY3JpcHRQYXVzZWQocGFnZS0+Z3JvdXAoKSwgdHJ1
ZSk7Cit9CisKK3ZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250aW51ZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgUGFnZSogcGFnZSA9IHRvUGFnZShn
bG9iYWxPYmplY3QpOworICAgIG1fcGF1c2VkUGFnZSA9IDA7CisgICAgc2V0SmF2YVNjcmlwdFBh
dXNlZChwYWdlLT5ncm91cCgpLCBmYWxzZSk7Cit9CisKK3ZvaWQgUGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjpkaWRSZW1vdmVMYXN0TGlzdGVuZXIoUGFnZSogcGFnZSkKK3sKKyAgICBpZiAobV9wYXVz
ZWRQYWdlID09IHBhZ2UpCisgICAgICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9
IHRydWU7CisKKyAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKKyAgICBwYWdlLT5z
ZXREZWJ1Z2dlcigwKTsKK30KKwordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFT
Y3JpcHRQYXVzZWQoY29uc3QgUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGJvb2wgcGF1c2VkKQorewor
ICAgIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQocGF1c2VkKTsKKworICAgIGNvbnN0IEhh
c2hTZXQ8UGFnZSo+JiBwYWdlcyA9IHBhZ2VHcm91cC5wYWdlcygpOworCisgICAgSGFzaFNldDxQ
YWdlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBhZ2VzLmVuZCgpOworICAgIGZvciAoSGFzaFNl
dDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKCppdCwgcGF1c2VkKTsKK30KKwordm9p
ZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoUGFnZSogcGFnZSwg
Ym9vbCBwYXVzZWQpCit7CisgICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsKKworICAgIHBhZ2Ut
PnNldERlZmVyc0xvYWRpbmcocGF1c2VkKTsKKworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFn
ZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dCgpKQorICAgICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKGZyYW1lLCBwYXVzZWQpOworfQorCit2
b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSogZnJh
bWUsIGJvb2wgcGF1c2VkKQoreworICAgIEFTU0VSVF9BUkcoZnJhbWUsIGZyYW1lKTsKKworICAg
IGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0
ZVNjcmlwdCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0UGF1
c2VkKHBhdXNlZCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKKyAgICBpZiAocGF1c2VkKSB7CisgICAgICAgIGRvY3VtZW50LT5zdXNwZW5kU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgIGRvY3VtZW50LT5zdXNwZW5k
QWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNl
ZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG9jdW1lbnQtPnJlc3VtZUFjdGl2ZURPTU9iamVj
dHMoKTsKKyAgICAgICAgZG9jdW1lbnQtPnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ckNhbGxiYWNrcygpOworICAgIH0KKworICAgIHNldEphdmFTY3JpcHRQYXVzZWQoZnJhbWUtPnZp
ZXcoKSwgcGF1c2VkKTsKK30KKwordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFT
Y3JpcHRQYXVzZWQoRnJhbWVWaWV3KiB2aWV3LCBib29sIHBhdXNlZCkKK3sKKyAgICBpZiAoIXZp
ZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4g
PiogY2hpbGRyZW4gPSB2aWV3LT5jaGlsZHJlbigpOworICAgIEFTU0VSVChjaGlsZHJlbik7CisK
KyAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNoaWxk
cmVuLT5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBjaGlsZHJlbi0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
IFdpZGdldCogd2lkZ2V0ID0gKCppdCkuZ2V0KCk7CisgICAgICAgIGlmICghd2lkZ2V0LT5pc1Bs
dWdpblZpZXcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBzdGF0aWNfY2FzdDxQ
bHVnaW5WaWV3Kj4od2lkZ2V0KS0+c2V0SmF2YVNjcmlwdFBhdXNlZChwYXVzZWQpOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdl
U2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1NjNlMjY5NTBjOTZhM2ZlYmYyNzdmMzE3ODY4
YjQ3MTRlMjUzYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXJfaAorI2RlZmluZSBQYWdlU2NyaXB0RGVidWdTZXJ2ZXJfaAorCisjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZl
ci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRnJhbWU7CitjbGFzcyBGcmFtZVZpZXc7CitjbGFzcyBQYWdlOworY2xhc3MgUGFnZUdy
b3VwOworCitjbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIgOiBwdWJsaWMgU2NyaXB0RGVidWdT
ZXJ2ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcik7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciYgc2hhcmVkKCk7CisK
KyAgICB2b2lkIGFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBQYWdlKik7CisgICAg
dm9pZCByZW1vdmVMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOworCisgICAg
dmlydHVhbCB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVyPFNjcmlwdERlYnVnU2Vy
dmVyPiopOworCitwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxQYWdlKiwgTGlzdGVuZXJT
ZXQqPiBQYWdlTGlzdGVuZXJzTWFwOworCisgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyKCk7Cisg
ICAgdmlydHVhbCB+UGFnZVNjcmlwdERlYnVnU2VydmVyKCk7CisKKyAgICB2aXJ0dWFsIExpc3Rl
bmVyU2V0KiBnZXRMaXN0ZW5lcnNGb3JHbG9iYWxPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
dmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKworICAgIHZv
aWQgZGlkUmVtb3ZlTGFzdExpc3RlbmVyKFBhZ2UqKTsKKworICAgIHZvaWQgc2V0SmF2YVNjcmlw
dFBhdXNlZChjb25zdCBQYWdlR3JvdXAmLCBib29sIHBhdXNlZCk7CisgICAgdm9pZCBzZXRKYXZh
U2NyaXB0UGF1c2VkKFBhZ2UqLCBib29sIHBhdXNlZCk7CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0
UGF1c2VkKEZyYW1lKiwgYm9vbCBwYXVzZWQpOworICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNl
ZChGcmFtZVZpZXcqLCBib29sIHBhdXNlZCk7CisKKyAgICBQYWdlTGlzdGVuZXJzTWFwIG1fcGFn
ZUxpc3RlbmVyc01hcDsKKyAgICBQYWdlKiBtX3BhdXNlZFBhZ2U7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKwor
I2VuZGlmIC8vIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMzJhM2IyZGYzNWU4NDJhMTg0
MGI5ZDM5ZGRkODc5NmEyYmQ2YmJmMS4uMDVjMGYyYzk4MGE0MjYwNTNiYWQyZDcwMDM2ZGEyMzkw
OTg4MWYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMiw0NSArMzIsMjcgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29w
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZVRyZWUuaCIKLSNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUg
IkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGFn
ZUdyb3VwLmgiCi0jaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdEJyZWFr
cG9pbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RGVidWdMaXN0ZW5lci5oIgotI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKLSNpbmNsdWRlICJXaWRn
ZXQuaCIKICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oPgogI2luY2x1ZGUg
PHBhcnNlci9Tb3VyY2VQcm92aWRlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYv
VW51c2VkUGFyYW0uaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TY3JpcHREZWJ1Z1NlcnZlciYgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpCi17
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTY3JpcHREZWJ1Z1NlcnZlciwgc2VydmVyLCAoKSk7
Ci0gICAgcmV0dXJuIHNlcnZlcjsKLX0KLQogU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERlYnVn
U2VydmVyKCkKICAgICA6IG1fY2FsbGluZ0xpc3RlbmVycyhmYWxzZSkKICAgICAsIG1fcGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZShEb250UGF1c2VPbkV4Y2VwdGlvbnMpCiAgICAgLCBtX3BhdXNlT25O
ZXh0U3RhdGVtZW50KGZhbHNlKQogICAgICwgbV9wYXVzZWQoZmFsc2UpCi0gICAgLCBtX3BhdXNl
ZFBhZ2UoMCkKICAgICAsIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyh0cnVlKQogICAg
ICwgbV9icmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKQogICAgICwgbV9wYXVzZU9uQ2FsbEZyYW1l
KDApCkBAIC04Myw0NyArNjUsNiBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6flNjcmlwdERlYnVnU2Vy
dmVyKCkKICAgICBkZWxldGVBbGxWYWx1ZXMobV9wYWdlTGlzdGVuZXJzTWFwKTsKIH0KIAotdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlz
dGVuZXIsIFBhZ2UqIHBhZ2UpCi17Ci0gICAgQVNTRVJUX0FSRyhsaXN0ZW5lciwgbGlzdGVuZXIp
OwotICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7Ci0KLSAgICBwYWlyPFBhZ2VMaXN0ZW5lcnNN
YXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2Us
IDApOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29u
ZCA9IG5ldyBMaXN0ZW5lclNldDsKLQotICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSByZXN1
bHQuZmlyc3QtPnNlY29uZDsKLSAgICBsaXN0ZW5lcnMtPmFkZChsaXN0ZW5lcik7Ci0KLSAgICBk
aWRBZGRMaXN0ZW5lcihwYWdlKTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3Zl
TGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCi17Ci0g
ICAgQVNTRVJUX0FSRyhsaXN0ZW5lciwgbGlzdGVuZXIpOwotICAgIEFTU0VSVF9BUkcocGFnZSwg
cGFnZSk7Ci0KLSAgICBQYWdlTGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdCA9IG1fcGFnZUxpc3Rl
bmVyc01hcC5maW5kKHBhZ2UpOwotICAgIGlmIChpdCA9PSBtX3BhZ2VMaXN0ZW5lcnNNYXAuZW5k
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSBpdC0+
c2Vjb25kOwotICAgIGxpc3RlbmVycy0+cmVtb3ZlKGxpc3RlbmVyKTsKLSAgICBpZiAobGlzdGVu
ZXJzLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9wYWdlTGlzdGVuZXJzTWFwLnJlbW92ZShpdCk7
Ci0gICAgICAgIGRlbGV0ZSBsaXN0ZW5lcnM7Ci0gICAgfQotCi0gICAgZGlkUmVtb3ZlTGlzdGVu
ZXIocGFnZSk7Ci19Ci0KLWJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0xpc3RlbmVyc0ludGVy
ZXN0ZWRJblBhZ2UoUGFnZSogcGFnZSkKLXsKLSAgICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOwot
Ci0gICAgcmV0dXJuIG1fcGFnZUxpc3RlbmVyc01hcC5jb250YWlucyhwYWdlKTsKLX0KLQogU3Ry
aW5nIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIHNjcmlwdEJyZWFrcG9pbnQsIGludCogYWN0dWFs
TGluZU51bWJlciwgaW50KiBhY3R1YWxDb2x1bW5OdW1iZXIpCiB7CiAgICAgaW50cHRyX3Qgc291
cmNlSURWYWx1ZSA9IHNvdXJjZUlELnRvSW50UHRyKCk7CkBAIC0yOTksMTUgKzI0MCw2IEBAIHZv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBM
aXN0ZW5lclNldCYgbGlzdGVuZXJzCiAgICAgICAgIGNvcHlbaV0tPmZhaWxlZFRvUGFyc2VTb3Vy
Y2UodXJsLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAot
c3RhdGljIFBhZ2UqIHRvUGFnZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAg
IEFTU0VSVF9BUkcoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpOwotCi0gICAgSlNET01XaW5k
b3cqIHdpbmRvdyA9IGFzSlNET01XaW5kb3coZ2xvYmFsT2JqZWN0KTsKLSAgICBGcmFtZSogZnJh
bWUgPSB3aW5kb3ctPmltcGwoKS0+ZnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUgPyBmcmFtZS0+
cGFnZSgpIDogMDsKLX0KLQogc3RhdGljIFNjcmlwdFdvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoY3VycmVudFdvcmxkKGV4ZWMpID09IG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpKQpAQCAtMzMzLDIyICsyNjUsMTkgQEAgdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6c291cmNlUGFyc2VkKEV4ZWNTdGF0ZSogZXhlYywgU291cmNlUHJvdmlkZXIqIHNv
dXJjZVByb3YKICAgICBpZiAobV9jYWxsaW5nTGlzdGVuZXJzKQogICAgICAgICByZXR1cm47CiAK
LSAgICBQYWdlKiBwYWdlID0gdG9QYWdlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0g
ICAgaWYgKCFwYWdlKQorICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnNG
b3JHbG9iYWxPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBpZiAoIWxp
c3RlbmVycykKICAgICAgICAgcmV0dXJuOwotCi0gICAgU2NyaXB0V29ybGRUeXBlIHdvcmxkVHlw
ZSA9IGN1cnJlbnRXb3JsZFR5cGUoZXhlYyk7CisgICAgQVNTRVJUKCFsaXN0ZW5lcnMtPmlzRW1w
dHkoKSk7CiAKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSB0cnVlOwogCiAgICAgYm9vbCBpc0Vy
cm9yID0gZXJyb3JMaW5lICE9IC0xOwotCi0gICAgaWYgKExpc3RlbmVyU2V0KiBwYWdlTGlzdGVu
ZXJzID0gbV9wYWdlTGlzdGVuZXJzTWFwLmdldChwYWdlKSkgewotICAgICAgICBBU1NFUlQoIXBh
Z2VMaXN0ZW5lcnMtPmlzRW1wdHkoKSk7Ci0gICAgICAgIGlmIChpc0Vycm9yKQotICAgICAgICAg
ICAgZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNlKCpwYWdlTGlzdGVuZXJzLCBzb3VyY2VQcm92
aWRlciwgZXJyb3JMaW5lLCB1c3RyaW5nVG9TdHJpbmcoZXJyb3JNZXNzYWdlKSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoKnBhZ2VMaXN0ZW5lcnMs
IHNvdXJjZVByb3ZpZGVyLCB3b3JsZFR5cGUpOworICAgIGlmIChpc0Vycm9yKQorICAgICAgICBk
aXNwYXRjaEZhaWxlZFRvUGFyc2VTb3VyY2UoKmxpc3RlbmVycywgc291cmNlUHJvdmlkZXIsIGVy
cm9yTGluZSwgdXN0cmluZ1RvU3RyaW5nKGVycm9yTWVzc2FnZSkpOworICAgIGVsc2UgeworICAg
ICAgICBTY3JpcHRXb3JsZFR5cGUgd29ybGRUeXBlID0gY3VycmVudFdvcmxkVHlwZShleGVjKTsK
KyAgICAgICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZSgqbGlzdGVuZXJzLCBzb3VyY2VQcm92aWRl
ciwgd29ybGRUeXBlKTsKICAgICB9CiAKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSBmYWxzZTsK
QEAgLTM2Miw4NSArMjkxLDI2IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVu
Y3Rpb25Ub0xpc3RlbmVycyhjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzCiAgICAgICAgICh0
aGlzLT4qY2FsbGJhY2spKGNvcHlbaV0pOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpk
aXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrIGNh
bGxiYWNrLCBQYWdlKiBwYWdlKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjayBjYWxsYmFjaywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBpZiAobV9jYWxsaW5nTGlzdGVuZXJz
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSB0cnVlOwogCi0g
ICAgaWYgKExpc3RlbmVyU2V0KiBwYWdlTGlzdGVuZXJzID0gbV9wYWdlTGlzdGVuZXJzTWFwLmdl
dChwYWdlKSkgewotICAgICAgICBBU1NFUlQoIXBhZ2VMaXN0ZW5lcnMtPmlzRW1wdHkoKSk7Ci0g
ICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygqcGFnZUxpc3RlbmVycywgY2FsbGJh
Y2spOworICAgIGlmIChMaXN0ZW5lclNldCogbGlzdGVuZXJzID0gZ2V0TGlzdGVuZXJzRm9yR2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdCkpIHsKKyAgICAgICAgQVNTRVJUKCFsaXN0ZW5lcnMtPmlz
RW1wdHkoKSk7CisgICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygqbGlzdGVuZXJz
LCBjYWxsYmFjayk7CiAgICAgfQogCiAgICAgbV9jYWxsaW5nTGlzdGVuZXJzID0gZmFsc2U7CiB9
CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoY29uc3QgUGFn
ZUdyb3VwJiBwYWdlR3JvdXAsIGJvb2wgcGF1c2VkKQotewotICAgIHNldE1haW5UaHJlYWRDYWxs
YmFja3NQYXVzZWQocGF1c2VkKTsKLQotICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9
IHBhZ2VHcm91cC5wYWdlcygpOwotCi0gICAgSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IHBhZ2VzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gcGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBzZXRKYXZh
U2NyaXB0UGF1c2VkKCppdCwgcGF1c2VkKTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2V0SmF2YVNjcmlwdFBhdXNlZChQYWdlKiBwYWdlLCBib29sIHBhdXNlZCkKLXsKLSAgICBBU1NF
UlRfQVJHKHBhZ2UsIHBhZ2UpOwotCi0gICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhwYXVzZWQp
OwotCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIHNldEphdmFTY3Jp
cHRQYXVzZWQoZnJhbWUsIHBhdXNlZCk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNl
dEphdmFTY3JpcHRQYXVzZWQoRnJhbWUqIGZyYW1lLCBib29sIHBhdXNlZCkKLXsKLSAgICBBU1NF
UlRfQVJHKGZyYW1lLCBmcmFtZSk7Ci0KLSAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhl
Y3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmcmFtZS0+c2NyaXB0KCktPnNldFBhdXNlZChwYXVzZWQpOwotCi0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgaWYgKHBhdXNlZCkgewotICAgICAg
ICBkb2N1bWVudC0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygp
OwotICAgICAgICBkb2N1bWVudC0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2Jq
ZWN0OjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRv
Y3VtZW50LT5yZXN1bWVBY3RpdmVET01PYmplY3RzKCk7Ci0gICAgICAgIGRvY3VtZW50LT5yZXN1
bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKLSAgICB9Ci0KLSAgICBz
ZXRKYXZhU2NyaXB0UGF1c2VkKGZyYW1lLT52aWV3KCksIHBhdXNlZCk7Ci19Ci0KLXZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWVWaWV3KiB2aWV3LCBib29s
IHBhdXNlZCkKLXsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0
IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPiogY2hpbGRyZW4gPSB2aWV3LT5jaGlsZHJlbigpOwot
ICAgIEFTU0VSVChjaGlsZHJlbik7Ci0KLSAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGNoaWxkcmVuLT5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVm
UHRyPFdpZGdldD4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZHJlbi0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFdpZGdldCogd2lkZ2V0ID0gKCppdCkuZ2V0KCk7Ci0g
ICAgICAgIGlmICghd2lkZ2V0LT5pc1BsdWdpblZpZXcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3Kj4od2lkZ2V0KS0+c2V0SmF2YVNjcmlw
dFBhdXNlZChwYXVzZWQpOwotICAgIH0KLX0KLQogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3Jl
YXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVi
dWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKIHsKICAg
ICBUZXh0UG9zaXRpb24wIHRleHRQb3NpdGlvbihXVEY6Ok9uZUJhc2VkTnVtYmVyOjpmcm9tT25l
QmFzZWRJbnQobGluZU51bWJlcikuY29udmVydFRvWmVyb0Jhc2VkKCksIFdURjo6WmVyb0Jhc2Vk
TnVtYmVyOjpiYXNlKCkpOwogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxs
RnJhbWU6OmNyZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSwgbV9jdXJyZW50Q2FsbEZyYW1lLCBzb3Vy
Y2VJRCwgdGV4dFBvc2l0aW9uKTsKLSAgICBwYXVzZUlmTmVlZGVkKHRvUGFnZShkZWJ1Z2dlckNh
bGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCkpKTsKKyAgICBwYXVzZUlmTmVlZGVkKGRlYnVn
Z2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJD
YWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIpCkBAIC00NTEsMTUgKzMyMSwxNSBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRh
dGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJgogCiAg
ICAgVGV4dFBvc2l0aW9uMCB0ZXh0UG9zaXRpb24oV1RGOjpPbmVCYXNlZE51bWJlcjo6ZnJvbU9u
ZUJhc2VkSW50KGxpbmVOdW1iZXIpLmNvbnZlcnRUb1plcm9CYXNlZCgpLCBXVEY6Olplcm9CYXNl
ZE51bWJlcjo6YmFzZSgpKTsKICAgICBtX2N1cnJlbnRDYWxsRnJhbWUtPnVwZGF0ZShkZWJ1Z2dl
ckNhbGxGcmFtZSwgc291cmNlSUQsIHRleHRQb3NpdGlvbik7Ci0gICAgcGF1c2VJZk5lZWRlZCh0
b1BhZ2UoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgpKSk7CisgICAgcGF1
c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCkpOwogfQog
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKFBhZ2UqIHBhZ2UpCit2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBkeW5hbWlj
R2xvYmFsT2JqZWN0KQogewogICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKCFwYWdlIHx8ICFoYXNMaXN0ZW5lcnNJbnRlcmVzdGVkSW5QYWdlKHBhZ2UpKQorIAor
ICAgIGlmICghZ2V0TGlzdGVuZXJzRm9yR2xvYmFsT2JqZWN0KGR5bmFtaWNHbG9iYWxPYmplY3Qp
KQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIHBhdXNlTm93ID0gbV9wYXVzZU9uTmV4dFN0
YXRlbWVudDsKQEAgLTQ3MSwxMSArMzQxLDkgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1
c2VJZk5lZWRlZChQYWdlKiBwYWdlKQogICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IDA7CiAgICAg
bV9wYXVzZU9uTmV4dFN0YXRlbWVudCA9IGZhbHNlOwogICAgIG1fcGF1c2VkID0gdHJ1ZTsKLSAg
ICBtX3BhdXNlZFBhZ2UgPSBwYWdlOwogCi0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJz
KCZTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXVzZSwgcGFnZSk7Ci0KLSAgICBzZXRK
YXZhU2NyaXB0UGF1c2VkKHBhZ2UtPmdyb3VwKCksIHRydWUpOworICAgIGRpc3BhdGNoRnVuY3Rp
b25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UsIGR5bmFt
aWNHbG9iYWxPYmplY3QpOworICAgIGRpZFBhdXNlKGR5bmFtaWNHbG9iYWxPYmplY3QpOwogCiAg
ICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKIApAQCAtNDg0LDEy
ICszNTIsMTAgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VJZk5lZWRlZChQYWdlKiBw
YWdlKQogICAgIHdoaWxlICghbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzICYmICFsb29w
LmVuZGVkKCkpCiAgICAgICAgIGxvb3AuY3ljbGUoKTsKIAotICAgIHNldEphdmFTY3JpcHRQYXVz
ZWQocGFnZS0+Z3JvdXAoKSwgZmFsc2UpOworICAgIGRpZENvbnRpbnVlKGR5bmFtaWNHbG9iYWxP
YmplY3QpOworICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2
ZXI6OmRpc3BhdGNoRGlkQ29udGludWUsIGR5bmFtaWNHbG9iYWxPYmplY3QpOwogCiAgICAgbV9w
YXVzZWQgPSBmYWxzZTsKLSAgICBtX3BhdXNlZFBhZ2UgPSAwOwotCi0gICAgZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKCZTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZSwg
cGFnZSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudChjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlcikKQEAgLTU2NSwzNCArNDMxLDYgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
cmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCkKICAgICBtX3JlY29tcGlsZVRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNG
dW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+KikKLXsKLSAgICBKU0xvY2sgbG9jayhT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgIC8vIElmIEphdmFTY3JpcHQgc3RhY2sgaXMgbm90
IGVtcHR5IHBvc3Rwb25lIHJlY29tcGlsYXRpb24uCi0gICAgaWYgKEpTRE9NV2luZG93Ojpjb21t
b25KU0dsb2JhbERhdGEoKS0+ZHluYW1pY0dsb2JhbE9iamVjdCkKLSAgICAgICAgcmVjb21waWxl
QWxsSlNGdW5jdGlvbnNTb29uKCk7Ci0gICAgZWxzZQotICAgICAgICBEZWJ1Z2dlcjo6cmVjb21w
aWxlQWxsSlNGdW5jdGlvbnMoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKLX0K
LQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkQWRkTGlzdGVuZXIoUGFnZSogcGFnZSkKLXsK
LSAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKLSAgICBwYWdlLT5zZXREZWJ1Z2dl
cih0aGlzKTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUmVtb3ZlTGlzdGVuZXIo
UGFnZSogcGFnZSkKLXsKLSAgICBpZiAoaGFzTGlzdGVuZXJzSW50ZXJlc3RlZEluUGFnZShwYWdl
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fcGF1c2VkUGFnZSA9PSBwYWdlKQotICAg
ICAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwotCi0gICAgcmVjb21w
aWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7Ci0gICAgcGFnZS0+c2V0RGVidWdnZXIoMCk7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmgKaW5kZXggZTdlODUwMmFmMjgyZjEyMjA5M2I5MjRjZWM4ZTBmZmYzY2NlOWY5ZC4uZTUzY2I0
ZDc3MWYzMTBhZDY2YzU2MDBjODRjZTY1N2ZjMjcyZTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDIxICs1MCwxMiBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKIH0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7Ci1j
bGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBQYWdlOwotY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgU2Ny
aXB0RGVidWdMaXN0ZW5lcjsKIGNsYXNzIEphdmFTY3JpcHRDYWxsRnJhbWU7CiAKLWNsYXNzIFNj
cmlwdERlYnVnU2VydmVyIDogSlNDOjpEZWJ1Z2dlciB7CitjbGFzcyBTY3JpcHREZWJ1Z1NlcnZl
ciA6IHByb3RlY3RlZCBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y3JpcHREZWJ1Z1NlcnZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHN0YXRpYyBTY3JpcHREZWJ1Z1NlcnZlciYgc2hhcmVkKCk7Ci0KLSAgICB2b2lkIGFkZExpc3Rl
bmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBQYWdlKik7Ci0gICAgdm9pZCByZW1vdmVMaXN0ZW5l
cihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOwotCiAgICAgU3RyaW5nIHNldEJyZWFrcG9p
bnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYsIGludCog
YWN0dWFsTGluZU51bWJlciwgaW50KiBhY3R1YWxDb2x1bW5OdW1iZXIpOwogICAgIHZvaWQgcmVt
b3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCk7CiAgICAgdm9pZCBjbGVh
ckJyZWFrcG9pbnRzKCk7CkBAIC05MCwyNiArODEsMjQgQEAgcHVibGljOgogICAgIGJvb2wgZWRp
dFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0Nv
bnRlbnQsIFN0cmluZyYgbmV3U291cmNlT3JFcnJvck1lc3NhZ2UpOwogCiAgICAgdm9pZCByZWNv
bXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKLSAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rp
b25zKFRpbWVyPFNjcmlwdERlYnVnU2VydmVyPiogPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
b21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+KiA9IDApID0gMDsK
IAogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIGN1cnJlbnRDYWxsRnJhbWUoKTsKIAotcHJpdmF0
ZToKK3Byb3RlY3RlZDoKICAgICB0eXBlZGVmIEhhc2hTZXQ8U2NyaXB0RGVidWdMaXN0ZW5lcio+
IExpc3RlbmVyU2V0OwogICAgIHR5cGVkZWYgdm9pZCAoU2NyaXB0RGVidWdTZXJ2ZXI6OipKYXZh
U2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2spKFNjcmlwdERlYnVnTGlzdGVuZXIqKTsKIAogICAgIFNj
cmlwdERlYnVnU2VydmVyKCk7CiAgICAgflNjcmlwdERlYnVnU2VydmVyKCk7CiAKLSAgICBib29s
IGhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbjAmIHBv
c2l0aW9uKSBjb25zdDsKLSAgICBib29sIGhhc0xpc3RlbmVyc0ludGVyZXN0ZWRJblBhZ2UoUGFn
ZSopOworICAgIHZpcnR1YWwgTGlzdGVuZXJTZXQqIGdldExpc3RlbmVyc0Zvckdsb2JhbE9iamVj
dChKU0M6OkpTR2xvYmFsT2JqZWN0KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShK
U0M6OkpTR2xvYmFsT2JqZWN0KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KikgPSAwOwogCi0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2Vk
KGNvbnN0IFBhZ2VHcm91cCYsIGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQ
YXVzZWQoUGFnZSosIGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQo
RnJhbWUqLCBib29sIHBhdXNlZCk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1l
VmlldyosIGJvb2wgcGF1c2VkKTsKKyAgICBib29sIGhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291
cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbjAmKSBjb25zdDsKIAotICAgIHZvaWQgZGlzcGF0Y2hG
dW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjaywgUGFnZSopOwor
ICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25D
YWxsYmFjaywgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlv
blRvTGlzdGVuZXJzKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEphdmFTY3JpcHRFeGVj
dXRpb25DYWxsYmFjayBjYWxsYmFjayk7CiAgICAgdm9pZCBkaXNwYXRjaERpZFBhdXNlKFNjcmlw
dERlYnVnTGlzdGVuZXIqKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0RGVi
dWdMaXN0ZW5lciopOwpAQCAtMTE4LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNy
ZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFt
ZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CiAgICAgdm9pZCB1cGRhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwotICAgIHZvaWQgcGF1c2VJZk5lZWRl
ZChQYWdlKik7CisgICAgdm9pZCBwYXVzZUlmTmVlZGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5
bmFtaWNHbG9iYWxPYmplY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaChKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CiAKQEAgLTEzMSw5ICsxMjAsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJy
ZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZW5vKTsKIAotICAgIHZvaWQgZGlkQWRkTGlzdGVuZXIoUGFnZSopOwotICAgIHZv
aWQgZGlkUmVtb3ZlTGlzdGVuZXIoUGFnZSopOwotCiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhZ2Uq
LCBMaXN0ZW5lclNldCo+IFBhZ2VMaXN0ZW5lcnNNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGxv
bmcsIFNjcmlwdEJyZWFrcG9pbnQ+IExpbmVUb0JyZWFrcG9pbnRNYXA7CiAgICAgdHlwZWRlZiBI
YXNoTWFwPGludHB0cl90LCBMaW5lVG9CcmVha3BvaW50TWFwPiBTb3VyY2VJZFRvQnJlYWtwb2lu
dHNNYXA7CkBAIC0xNDMsNyArMTI5LDYgQEAgcHJpdmF0ZToKICAgICBQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZTsKICAgICBib29sIG1fcGF1c2VPbk5leHRT
dGF0ZW1lbnQ7CiAgICAgYm9vbCBtX3BhdXNlZDsKLSAgICBQYWdlKiBtX3BhdXNlZFBhZ2U7CiAg
ICAgYm9vbCBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHM7CiAgICAgYm9vbCBtX2JyZWFr
cG9pbnRzQWN0aXZhdGVkOwogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIG1fcGF1c2VPbkNhbGxG
cmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dERlYnVnU2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTJhY2QyYzY4MzEyNmRjOTg2MGMzNDUwMTcy
M2M0ZWRkMTZhODliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKworI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUg
IldvcmtlckNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoKQorICAgIDogU2NyaXB0RGVidWdT
ZXJ2ZXIoKQoreworfQorCit2b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5l
cihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgV29ya2VyQ29udGV4dCopCit7Cit9CisKK3ZvaWQgV29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIq
LCBXb3JrZXJDb250ZXh0KikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShXT1JLRVJTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDA2MjQzNTg2ZDk4ZGI3MGM3Y2U3Y2Y3NWQ3YzE5ODcwN2ZkY2Y2YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dERlYnVnU2VydmVyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV29ya2VyU2NyaXB0RGVidWdT
ZXJ2ZXJfaAorI2RlZmluZSBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcl9oCisKKyNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJTY3Jp
cHREZWJ1Z1NlcnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdvcmtlckNv
bnRleHQ7CisKK2NsYXNzIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIDogcHVibGljIFNjcmlwdERl
YnVnU2VydmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcik7CitwdWJsaWM6CisgICAgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoKTsKKyAgICB+V29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KKworICAgIHZvaWQgYWRkTGlzdGVuZXIoU2NyaXB0
RGVidWdMaXN0ZW5lciosIFdvcmtlckNvbnRleHQqKTsKKyAgICB2b2lkIHJlbW92ZUxpc3RlbmVy
KFNjcmlwdERlYnVnTGlzdGVuZXIqLCBXb3JrZXJDb250ZXh0Kik7CisKK3ByaXZhdGU6CisgICAg
dmlydHVhbCB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVyPFNjcmlwdERlYnVnU2Vy
dmVyPiopIHsgfQorICAgIHZpcnR1YWwgTGlzdGVuZXJTZXQqIGdldExpc3RlbmVyc0Zvckdsb2Jh
bE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSB7IH0KK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBF
TkFCTEUoV09SS0VSUykKKworI2VuZGlmIC8vIFdvcmtlclNjcmlwdERlYnVnU2VydmVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYxNDlkOGY2MWMyMjA2NmQyMTgxMWQ2NzY0YmRhYzQ4MTZkZTQzMzAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5j
bHVkZSAiVjhET01XaW5kb3cuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBGcmFtZSogcmV0
cmlldmVGcmFtZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQoreworICAgIGlmIChj
b250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBUZXN0IHRoYXQg
Y29udGV4dCBoYXMgYXNzb2NpYXRlZCBnbG9iYWwgZG9tIHdpbmRvdyBvYmplY3QuCisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKKyAgICBpZiAo
Z2xvYmFsLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBnbG9iYWwgPSBWOERP
TVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGds
b2JhbCk7CisgICAgaWYgKGdsb2JhbC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIFY4UHJveHk6OnJldHJpZXZlRnJhbWUoY29udGV4dCk7Cit9CisKK1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlciYgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoUGFnZVNjcmlwdERlYnVnU2VydmVyLCBzZXJ2ZXIsICgpKTsKKyAg
ICByZXR1cm4gc2VydmVyOworfQorCitQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OlBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcigpCisgICAgOiBTY3JpcHREZWJ1Z1NlcnZlcigpCisgICAgLCBtX3BhdXNlZFBh
Z2UoMCkKKyAgICAsIG1fZW5hYmxlZCh0cnVlKQoreworfQorCit2b2lkIFBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2Uq
IHBhZ2UpCit7CisgICAgaWYgKCFtX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFY4
UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUocGFnZS0+bWFpbkZyYW1lKCkpOworICAg
IGlmICghcHJveHkpCisgICAgICAgIHJldHVybjsKKworICAgIHY4OjpIYW5kbGVTY29wZSBzY29w
ZTsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGRlYnVnZ2VyQ29udGV4dCA9IHY4OjpEZWJ1
Zzo6R2V0RGVidWdDb250ZXh0KCk7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29w
ZShkZWJ1Z2dlckNvbnRleHQpOworCisgICAgaWYgKCFtX2xpc3RlbmVyc01hcC5zaXplKCkpIHsK
KyAgICAgICAgZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgpOworICAgICAgICBBU1NFUlQo
IW1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPklzVW5kZWZpbmVkKCkpOworICAgICAgICB2ODo6RGVi
dWc6OlNldERlYnVnRXZlbnRMaXN0ZW5lcjIoJlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6djhEZWJ1
Z0V2ZW50Q2FsbGJhY2ssIHY4OjpFeHRlcm5hbDo6TmV3KHRoaXMpKTsKKyAgICB9CisgICAgbV9s
aXN0ZW5lcnNNYXAuc2V0KHBhZ2UsIGxpc3RlbmVyKTsKKworICAgIFY4RE9NV2luZG93U2hlbGwq
IHNoZWxsID0gcHJveHktPndpbmRvd1NoZWxsKCk7CisgICAgaWYgKCFzaGVsbC0+aXNDb250ZXh0
SW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGNvbnRleHQgPSBzaGVsbC0+Y29udGV4dCgpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uPiBnZXRTY3JpcHRzRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdCht
X2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJnZXRTY3JpcHRzIikp
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBjb250ZXh0LT5HZXREYXRh
KCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBnZXRTY3JpcHRzRnVuY3Rp
b24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAgaWYgKHZhbHVl
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghdmFsdWUtPklzVW5kZWZp
bmVkKCkgJiYgdmFsdWUtPklzQXJyYXkoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6QXJyYXk+IHNj
cmlwdHNBcnJheSA9IHY4OjpIYW5kbGU8djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNjcmlwdHNBcnJheS0+TGVuZ3RoKCk7ICsraSkKKyAgICAg
ICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShsaXN0ZW5lciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChzY3JpcHRzQXJyYXktPkdldCh2ODo6SW50ZWdlcjo6TmV3KGkpKSkpOworfQorCit2
b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0
ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKCFtX2xpc3RlbmVyc01hcC5j
b250YWlucyhwYWdlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcGF1c2VkUGFnZSA9
PSBwYWdlKQorICAgICAgICBjb250aW51ZVByb2dyYW0oKTsKKworICAgIG1fbGlzdGVuZXJzTWFw
LnJlbW92ZShwYWdlKTsKKworICAgIGlmIChtX2xpc3RlbmVyc01hcC5pc0VtcHR5KCkpCisgICAg
ICAgIHY4OjpEZWJ1Zzo6U2V0RGVidWdFdmVudExpc3RlbmVyKDApOworICAgIC8vIEZJWE1FOiBS
ZW1vdmUgYWxsIGJyZWFrcG9pbnRzIHNldCBieSB0aGUgYWdlbnQuCit9CisKK3ZvaWQgUGFnZVNj
cmlwdERlYnVnU2VydmVyOjpzZXRDbGllbnRNZXNzYWdlTG9vcChQYXNzT3duUHRyPENsaWVudE1l
c3NhZ2VMb29wPiBjbGllbnRNZXNzYWdlTG9vcCkKK3sKKyAgICBtX2NsaWVudE1lc3NhZ2VMb29w
ID0gY2xpZW50TWVzc2FnZUxvb3A7Cit9CisKK1NjcmlwdERlYnVnTGlzdGVuZXIqIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6Z2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQodjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4gY29udGV4dCkKK3sKKyAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAgRnJh
bWUqIGZyYW1lID0gcmV0cmlldmVGcmFtZShjb250ZXh0KTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1lLT5wYWdl
KCkpOworfQorCit2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuTWVzc2FnZUxvb3BPblBh
dXNlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCit7CisgICAgdjg6OkhhbmRsZVNj
b3BlIHNjb3BlOworICAgIEZyYW1lKiBmcmFtZSA9IHJldHJpZXZlRnJhbWUoY29udGV4dCk7Cisg
ICAgbV9wYXVzZWRQYWdlID0gZnJhbWUtPnBhZ2UoKTsKKworICAgIC8vIFdhaXQgZm9yIGNvbnRp
bnVlIG9yIHN0ZXAgY29tbWFuZC4KKyAgICBtX2NsaWVudE1lc3NhZ2VMb29wLT5ydW4obV9wYXVz
ZWRQYWdlKTsKKworICAgIC8vIFRoZSBsaXN0ZW5lciBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgaW4g
dGhlIG5lc3RlZCBsb29wLgorICAgIGlmIChTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciA9
IG1fbGlzdGVuZXJzTWFwLmdldChtX3BhdXNlZFBhZ2UpKQorICAgICAgICBsaXN0ZW5lci0+ZGlk
Q29udGludWUoKTsKKyAgICAgCisgICAgbV9wYXVzZWRQYWdlID0gMDsKK30KKwordm9pZCBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OnF1aXRNZXNzYWdlTG9vcE9uUGF1c2UoKQoreworICAgIG1fY2xp
ZW50TWVzc2FnZUxvb3AtPnF1aXROb3coKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRi
MTM0YzE4ZGI4ZWI2OThlNjYwNTgzNjViNzlkOGZmZTYxZWFkZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAt
MCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXJfaAorI2RlZmluZSBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXJfaAorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisK
KyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZTsKKworY2xhc3MgUGFnZVNjcmlw
dERlYnVnU2VydmVyIDogcHVibGljIFNjcmlwdERlYnVnU2VydmVyIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShQYWdlU2NyaXB0RGVidWdTZXJ2ZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXImIHNoYXJlZCgpOworCisgICAgdm9pZCBhZGRMaXN0ZW5lcihT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOworICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoU2Ny
aXB0RGVidWdMaXN0ZW5lciosIFBhZ2UqKTsKKworICAgIC8vIHY4LXNwZWNpZmljIG1ldGhvZHMu
CisgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgdmFsdWUpIHsgbV9lbmFibGVkID0gdmFsdWU7IH0K
KyAgICAKKyAgICBjbGFzcyBDbGllbnRNZXNzYWdlTG9vcCB7CisgICAgcHVibGljOgorICAgICAg
ICB2aXJ0dWFsIH5DbGllbnRNZXNzYWdlTG9vcCgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
cnVuKFBhZ2UqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBxdWl0Tm93KCkgPSAwOworICAg
IH07CisgICAgdm9pZCBzZXRDbGllbnRNZXNzYWdlTG9vcChQYXNzT3duUHRyPENsaWVudE1lc3Nh
Z2VMb29wPik7CisKK3ByaXZhdGU6CisgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyKCk7CisgICAg
dmlydHVhbCB+UGFnZVNjcmlwdERlYnVnU2VydmVyKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiBnZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dCh2ODo6SGFuZGxl
PHY4OjpDb250ZXh0Pik7CisgICAgdmlydHVhbCB2b2lkIHJ1bk1lc3NhZ2VMb29wT25QYXVzZSh2
ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CisgICAgdmlydHVhbCB2b2lkIHF1aXRNZXNzYWdlTG9v
cE9uUGF1c2UoKTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxQYWdlKiwgU2NyaXB0RGVidWdMaXN0
ZW5lcio+IExpc3RlbmVyc01hcDsKKyAgICBMaXN0ZW5lcnNNYXAgbV9saXN0ZW5lcnNNYXA7Cisg
ICAgT3duUHRyPENsaWVudE1lc3NhZ2VMb29wPiBtX2NsaWVudE1lc3NhZ2VMb29wOworICAgIFBh
Z2UqIG1fcGF1c2VkUGFnZTsKKyAgICBib29sIG1fZW5hYmxlZDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisj
ZW5kaWYgLy8gUGFnZVNjcmlwdERlYnVnU2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBhMmNmMzBhMjBjMWExOTJiY2Ji
YjFlNmVlMmU3M2I4YjEzMDA2ZTg1Li41NzU4NjM5ZGEwZDFiMGJkMjQ3ZjkyMDEwYTI4YjczMjEx
NjZiNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1
Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC0zNCwxMyArMzQsOSBAQAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQogCiAjaW5jbHVkZSAiRGVidWdnZXJTY3JpcHRTb3VyY2UuaCIKLSNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgotI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgs
ODcgKzU0LDEyIEBAIHByaXZhdGU6CiAKIH0KIAotc3RhdGljIEZyYW1lKiByZXRyaWV2ZUZyYW1l
KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCi17Ci0gICAgaWYgKGNvbnRleHQuSXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFRlc3QgdGhhdCBjb250ZXh0IGhh
cyBhc3NvY2lhdGVkIGdsb2JhbCBkb20gd2luZG93IG9iamVjdC4KLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwotICAgIGlmIChnbG9iYWwuSXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGdsb2JhbCA9IFY4RE9NV3JhcHBlcjo6
bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgZ2xvYmFsKTsKLSAg
ICBpZiAoZ2xvYmFsLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4g
VjhQcm94eTo6cmV0cmlldmVGcmFtZShjb250ZXh0KTsKLX0KLQotU2NyaXB0RGVidWdTZXJ2ZXIm
IFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U2NyaXB0RGVidWdTZXJ2ZXIsIHNlcnZlciwgKCkpOwotICAgIHJldHVybiBzZXJ2ZXI7Ci19Ci0K
IFNjcmlwdERlYnVnU2VydmVyOjpTY3JpcHREZWJ1Z1NlcnZlcigpCiAgICAgOiBtX3BhdXNlT25F
eGNlcHRpb25zU3RhdGUoRG9udFBhdXNlT25FeGNlcHRpb25zKQotICAgICwgbV9wYXVzZWRQYWdl
KDApCi0gICAgLCBtX2VuYWJsZWQodHJ1ZSkKICAgICAsIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQo
dHJ1ZSkKIHsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0
RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2VuYWJs
ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0
cmlldmUocGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGlmICghcHJveHkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+IGRlYnVnZ2VyQ29udGV4dCA9IHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCk7Ci0gICAg
djg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShkZWJ1Z2dlckNvbnRleHQpOwotCi0gICAg
aWYgKCFtX2xpc3RlbmVyc01hcC5zaXplKCkpIHsKLSAgICAgICAgZW5zdXJlRGVidWdnZXJTY3Jp
cHRDb21waWxlZCgpOwotICAgICAgICBBU1NFUlQoIW1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPklz
VW5kZWZpbmVkKCkpOwotICAgICAgICB2ODo6RGVidWc6OlNldERlYnVnRXZlbnRMaXN0ZW5lcjIo
JlNjcmlwdERlYnVnU2VydmVyOjp2OERlYnVnRXZlbnRDYWxsYmFjayk7Ci0gICAgfQotICAgIG1f
bGlzdGVuZXJzTWFwLnNldChwYWdlLCBsaXN0ZW5lcik7Ci0KLSAgICBWOERPTVdpbmRvd1NoZWxs
KiBzaGVsbCA9IHByb3h5LT53aW5kb3dTaGVsbCgpOwotICAgIGlmICghc2hlbGwtPmlzQ29udGV4
dEluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiBjb250ZXh0ID0gc2hlbGwtPmNvbnRleHQoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvbj4gZ2V0U2NyaXB0c0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3Qo
bV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZ2V0U2NyaXB0cyIp
KSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgY29udGV4dC0+R2V0RGF0
YSgpIH07Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0
aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwotICAgIGlmICh2YWx1
ZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoIXZhbHVlLT5Jc1VuZGVm
aW5lZCgpICYmIHZhbHVlLT5Jc0FycmF5KCkpOwotICAgIHY4OjpIYW5kbGU8djg6OkFycmF5PiBz
Y3JpcHRzQXJyYXkgPSB2ODo6SGFuZGxlPHY4OjpBcnJheT46OkNhc3QodmFsdWUpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzY3JpcHRzQXJyYXktPkxlbmd0aCgpOyArK2kpCi0gICAg
ICAgIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UobGlzdGVuZXIsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3Qoc2NyaXB0c0FycmF5LT5HZXQodjg6OkludGVnZXI6Ok5ldyhpKSkpKTsKLX0KLQot
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5l
ciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2xpc3RlbmVyc01hcC5jb250
YWlucyhwYWdlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fcGF1c2VkUGFnZSA9PSBw
YWdlKQotICAgICAgICBjb250aW51ZVByb2dyYW0oKTsKLQotICAgIG1fbGlzdGVuZXJzTWFwLnJl
bW92ZShwYWdlKTsKLQotICAgIGlmIChtX2xpc3RlbmVyc01hcC5pc0VtcHR5KCkpCi0gICAgICAg
IHY4OjpEZWJ1Zzo6U2V0RGVidWdFdmVudExpc3RlbmVyKDApOwotICAgIC8vIEZJWE1FOiBSZW1v
dmUgYWxsIGJyZWFrcG9pbnRzIHNldCBieSB0aGUgYWdlbnQuCi19Ci0KIFN0cmluZyBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBT
Y3JpcHRCcmVha3BvaW50JiBzY3JpcHRCcmVha3BvaW50LCBpbnQqIGFjdHVhbExpbmVOdW1iZXIs
IGludCogYWN0dWFsQ29sdW1uTnVtYmVyKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsK
QEAgLTIyNSw3ICsxNDYsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzZXRQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUgcGF1c2VPbgogCiB2b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpzZXRQYXVzZU9uTmV4dFN0YXRlbWVudChib29sIHBhdXNlKQogewotICAg
IGlmIChtX3BhdXNlZFBhZ2UpCisgICAgaWYgKGlzUGF1c2VkKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAocGF1c2UpCiAgICAgICAgIHY4OjpEZWJ1Zzo6RGVidWdCcmVhaygpOwpAQCAtMjM1
LDE3ICsxNTYsMTUgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0UGF1c2VPbk5leHRTdGF0
ZW1lbnQoYm9vbCBwYXVzZSkKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFt
KCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiwgY2FsbGJhY2tUZW1wbGF0ZSwgKCkpOwotCiAgICAgaWYgKCFtX2JyZWFrcG9p
bnRzQWN0aXZhdGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXY4OjpDb250ZXh0OjpJ
bkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNhbGxiYWNrVGVtcGxhdGUu
SXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCkpOwot
ICAgICAgICBjYWxsYmFja1RlbXBsYXRlLT5TZXRDYWxsSGFuZGxlcigmU2NyaXB0RGVidWdTZXJ2
ZXI6OmJyZWFrUHJvZ3JhbUNhbGxiYWNrKTsKKyAgICBpZiAobV9icmVha1Byb2dyYW1DYWxsYmFj
a1RlbXBsYXRlLmdldCgpLklzRW1wdHkoKSkgeworICAgICAgICBtX2JyZWFrUHJvZ3JhbUNhbGxi
YWNrVGVtcGxhdGUuc2V0KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoKSk7CisgICAgICAgIG1f
YnJlYWtQcm9ncmFtQ2FsbGJhY2tUZW1wbGF0ZS5nZXQoKS0+U2V0Q2FsbEhhbmRsZXIoJlNjcmlw
dERlYnVnU2VydmVyOjpicmVha1Byb2dyYW1DYWxsYmFjaywgdjg6OkV4dGVybmFsOjpOZXcodGhp
cykpOwogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6
Q29udGV4dDo6R2V0Q3VycmVudCgpOwpAQCAtMjUzLDIxICsxNzIsMjIgQEAgdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYXVz
ZWRQYWdlQ29udGV4dCA9ICpjb250ZXh0OwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBi
cmVha1Byb2dyYW1GdW5jdGlvbiA9IGNhbGxiYWNrVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGJyZWFrUHJvZ3JhbUZ1bmN0aW9uID0gbV9icmVh
a1Byb2dyYW1DYWxsYmFja1RlbXBsYXRlLmdldCgpLT5HZXRGdW5jdGlvbigpOwogICAgIHY4OjpE
ZWJ1Zzo6Q2FsbChicmVha1Byb2dyYW1GdW5jdGlvbik7CiAgICAgbV9wYXVzZWRQYWdlQ29udGV4
dC5DbGVhcigpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjb250aW51ZVByb2dyYW0o
KQogewotICAgIGlmIChtX3BhdXNlZFBhZ2UpCi0gICAgICAgIG1fY2xpZW50TWVzc2FnZUxvb3At
PnF1aXROb3coKTsKLSAgICBkaWRSZXN1bWUoKTsKKyAgICBpZiAoaXNQYXVzZWQoKSkKKyAgICAg
ICAgcXVpdE1lc3NhZ2VMb29wT25QYXVzZSgpOworICAgIG1fY3VycmVudENhbGxGcmFtZS5jbGVh
cigpOworICAgIG1fZXhlY3V0aW9uU3RhdGUuY2xlYXIoKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6c3RlcEludG9TdGF0ZW1lbnQoKQogewotICAgIEFTU0VSVChtX3BhdXNlZFBhZ2Up
OworICAgIEFTU0VSVChpc1BhdXNlZCgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4g
ZnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0
LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJzdGVwSW50b1N0YXRlbWVudCIpKSk7CiAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9
OwogICAgIGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwpA
QCAtMjc2LDcgKzE5Niw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVt
ZW50KCkKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c3RlcE92ZXJTdGF0ZW1lbnQoKQogewot
ICAgIEFTU0VSVChtX3BhdXNlZFBhZ2UpOworICAgIEFTU0VSVChpc1BhdXNlZCgpKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9u
Pjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJzdGVw
T3ZlclN0YXRlbWVudCIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsg
bV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9OwogICAgIGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJT
Y3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwpAQCAtMjg1LDcgKzIwNSw3IEBAIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnN0ZXBPdmVyU3RhdGVtZW50KCkKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
c3RlcE91dE9mRnVuY3Rpb24oKQogewotICAgIEFTU0VSVChtX3BhdXNlZFBhZ2UpOworICAgIEFT
U0VSVChpc1BhdXNlZCgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24g
PSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5H
ZXQodjg6OlN0cmluZzo6TmV3KCJzdGVwT3V0T2ZGdW5jdGlvbiIpKSk7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9OwogICAgIGZ1
bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwpAQCAtMjk4LDcg
KzIxOCw3IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRTb3VyY2UoY29uc3Qg
U3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuCiAgICAgdjg6OkhhbmRsZVNjb3BlIHNj
b3BlOwogCiAgICAgT3duUHRyPHY4OjpDb250ZXh0OjpTY29wZT4gY29udGV4dFNjb3BlOwotICAg
IGlmICghbV9wYXVzZWRQYWdlKQorICAgIGlmICghaXNQYXVzZWQoKSkKICAgICAgICAgY29udGV4
dFNjb3BlLnNldChuZXcgdjg6OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250
ZXh0KCkpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpM
b2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6
U3RyaW5nOjpOZXcoImVkaXRTY3JpcHRTb3VyY2UiKSkpOwpAQCAtMzMzLDExICsyNTMsNiBAQCBQ
YXNzUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IFNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50
Q2FsbEZyYW1lKCkKICAgICByZXR1cm4gbV9jdXJyZW50Q2FsbEZyYW1lOwogfQogCi12b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpzZXRFbmFibGVkKGJvb2wgdmFsdWUpCi17Ci0gICAgIG1fZW5hYmxl
ZCA9IHZhbHVlOwotfQotCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjppbnRlcnJ1cHRBbmRSdW4o
UGFzc093blB0cjxUYXNrPiB0YXNrKQogewogICAgIHY4OjpEZWJ1Zzo6RGVidWdCcmVha0ZvckNv
bW1hbmQobmV3IENsaWVudERhdGFJbXBsKHRhc2spKTsKQEAgLTM0OCw0NCArMjYzLDQyIEBAIHZv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1blBlbmRpbmdUYXNrcygpCiAgICAgdjg6OkRlYnVnOjpQ
cm9jZXNzRGVidWdNZXNzYWdlcygpOwogfQogCitzdGF0aWMgU2NyaXB0RGVidWdTZXJ2ZXIqIHRv
U2NyaXB0RGVidWdTZXJ2ZXIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEpCit7CisgICAgdm9p
ZCogcCA9IHY4OjpIYW5kbGU8djg6OkV4dGVybmFsPjo6Q2FzdChkYXRhKS0+VmFsdWUoKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U2NyaXB0RGVidWdTZXJ2ZXIqPihwKTsKK30KKwogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW1DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIEFTU0VSVCgyID09IGFyZ3MuTGVuZ3Ro
KCkpOwotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5icmVha1Byb2dyYW0odjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CisgICAgCisgICAgU2NyaXB0RGVidWdT
ZXJ2ZXIqIHRoaXNQdHIgPSB0b1NjcmlwdERlYnVnU2VydmVyKGFyZ3MuRGF0YSgpKTsKKyAgICB0
aGlzUHRyLT5icmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBd
KSk7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9uU3RhdGUp
CiB7CiAgICAgLy8gRG9uJ3QgYWxsb3cgbmVzdGVkIGJyZWFrcy4KLSAgICBpZiAobV9wYXVzZWRQ
YWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBGcmFtZSogZnJhbWUgPSByZXRyaWV2ZUZyYW1l
KG1fcGF1c2VkUGFnZUNvbnRleHQpOwotICAgIGlmICghZnJhbWUpCisgICAgaWYgKGlzUGF1c2Vk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVy
ID0gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1lLT5wYWdlKCkpOworICAgIFNjcmlwdERlYnVnTGlz
dGVuZXIqIGxpc3RlbmVyID0gZ2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQobV9wYXVzZWRQYWdl
Q29udGV4dCk7CiAgICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9l
eGVjdXRpb25TdGF0ZS5zZXQoZXhlY3V0aW9uU3RhdGUpOwotICAgIG1fcGF1c2VkUGFnZSA9IGZy
YW1lLT5wYWdlKCk7CiAgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9IFNj
cmlwdFN0YXRlOjpmb3JDb250ZXh0KG1fcGF1c2VkUGFnZUNvbnRleHQpOwogICAgIGxpc3RlbmVy
LT5kaWRQYXVzZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUpOwogCi0gICAgLy8gV2FpdCBmb3IgY29u
dGludWUgb3Igc3RlcCBjb21tYW5kLgotICAgIG1fY2xpZW50TWVzc2FnZUxvb3AtPnJ1bihtX3Bh
dXNlZFBhZ2UpOwotICAgIEFTU0VSVCghbV9wYXVzZWRQYWdlKTsKLQotICAgIC8vIFRoZSBsaXN0
ZW5lciBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5lc3RlZCBsb29wLgotICAgIGlmIChT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+
cGFnZSgpKSkKLSAgICAgICAgbGlzdGVuZXItPmRpZENvbnRpbnVlKCk7CisgICAgcnVuTWVzc2Fn
ZUxvb3BPblBhdXNlKG1fcGF1c2VkUGFnZUNvbnRleHQpOwogfQogCiB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjp2OERlYnVnRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWls
cyYgZXZlbnREZXRhaWxzKQogewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5oYW5k
bGVWOERlYnVnRXZlbnQoZXZlbnREZXRhaWxzKTsKKyAgICBTY3JpcHREZWJ1Z1NlcnZlciogdGhp
c1B0ciA9IHRvU2NyaXB0RGVidWdTZXJ2ZXIoZXZlbnREZXRhaWxzLkdldENhbGxiYWNrRGF0YSgp
KTsKKyAgICB0aGlzUHRyLT5oYW5kbGVWOERlYnVnRXZlbnQoZXZlbnREZXRhaWxzKTsKIH0KIAog
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1
Zzo6RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMpCkBAIC00MDQsMzEgKzMxNywyOCBAQCB2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpF
dmVudERldGFpbHMmIGV2ZW50RAogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGV2ZW50Q29u
dGV4dCA9IGV2ZW50RGV0YWlscy5HZXRFdmVudENvbnRleHQoKTsKICAgICBBU1NFUlQoIWV2ZW50
Q29udGV4dC5Jc0VtcHR5KCkpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gcmV0cmlldmVGcmFtZShl
dmVudENvbnRleHQpOwotICAgIGlmIChmcmFtZSkgewotICAgICAgICBTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiBsaXN0ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKTsKLSAgICAg
ICAgaWYgKGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0g
ICAgICAgICAgICBpZiAoZXZlbnQgPT0gdjg6OkFmdGVyQ29tcGlsZSkgewotICAgICAgICAgICAg
ICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0Nv
bnRleHQoKSk7Ci0gICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IG9uQWZ0
ZXJDb21waWxlRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVn
Z2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJnZXRBZnRlckNvbXBpbGVTY3Jp
cHQiKSkpOwotICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7
IGV2ZW50RGV0YWlscy5HZXRFdmVudERhdGEoKSB9OwotICAgICAgICAgICAgICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSA9IG9uQWZ0ZXJDb21waWxlRnVuY3Rpb24tPkNhbGwobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHZhbHVl
LT5Jc09iamVjdCgpKTsKLSAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOwotICAgICAgICAgICAg
ICAgIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UobGlzdGVuZXIsIG9iamVjdCk7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKGV2ZW50ID09IHY4OjpCcmVhayB8fCBldmVudCA9PSB2ODo6RXhjZXB0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGV2ZW50ID09IHY4OjpFeGNlcHRpb24pIHsKLSAgICAg
ICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlID0gdjg6
OlN0YWNrVHJhY2U6OkN1cnJlbnRTdGFja1RyYWNlKDEpOwotICAgICAgICAgICAgICAgICAgICAv
LyBTdGFjayB0cmFjZSBpcyBlbXB0eSBpbiBjYXNlIG9mIHN5bnRheCBlcnJvci4gU2lsZW50bHkg
Y29udGludWUgZXhlY3V0aW9uIGluIHN1Y2ggY2FzZXMuCi0gICAgICAgICAgICAgICAgICAgIGlm
ICghc3RhY2tUcmFjZS0+R2V0RnJhbWVDb3VudCgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1fcGF1c2VkUGFn
ZUNvbnRleHQgPSAqZXZlbnRDb250ZXh0OwotICAgICAgICAgICAgICAgIGJyZWFrUHJvZ3JhbShl
dmVudERldGFpbHMuR2V0RXhlY3V0aW9uU3RhdGUoKSk7Ci0gICAgICAgICAgICAgICAgbV9wYXVz
ZWRQYWdlQ29udGV4dC5DbGVhcigpOworICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVy
ID0gZ2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQoZXZlbnRDb250ZXh0KTsKKyAgICBpZiAobGlz
dGVuZXIpIHsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgICAgICBpZiAoZXZl
bnQgPT0gdjg6OkFmdGVyQ29tcGlsZSkgeworICAgICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IGNvbnRleHRTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKTsKKyAgICAgICAgICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBvbkFmdGVyQ29tcGlsZUZ1bmN0aW9uID0gdjg6Okxv
Y2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpT
dHJpbmc6Ok5ldygiZ2V0QWZ0ZXJDb21waWxlU2NyaXB0IikpKTsKKyAgICAgICAgICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IGV2ZW50RGV0YWlscy5HZXRFdmVudERhdGEoKSB9
OworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gb25BZnRlckNvbXBp
bGVGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICAg
ICAgICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7CisgICAgICAgICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUp
OworICAgICAgICAgICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShsaXN0ZW5lciwgb2JqZWN0KTsK
KyAgICAgICAgfSBlbHNlIGlmIChldmVudCA9PSB2ODo6QnJlYWsgfHwgZXZlbnQgPT0gdjg6OkV4
Y2VwdGlvbikgeworICAgICAgICAgICAgaWYgKGV2ZW50ID09IHY4OjpFeGNlcHRpb24pIHsKKyAg
ICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UgPSB2ODo6
U3RhY2tUcmFjZTo6Q3VycmVudFN0YWNrVHJhY2UoMSk7CisgICAgICAgICAgICAgICAgLy8gU3Rh
Y2sgdHJhY2UgaXMgZW1wdHkgaW4gY2FzZSBvZiBzeW50YXggZXJyb3IuIFNpbGVudGx5IGNvbnRp
bnVlIGV4ZWN1dGlvbiBpbiBzdWNoIGNhc2VzLgorICAgICAgICAgICAgICAgIGlmICghc3RhY2tU
cmFjZS0+R2V0RnJhbWVDb3VudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAqZXZlbnRDb250
ZXh0OworICAgICAgICAgICAgYnJlYWtQcm9ncmFtKGV2ZW50RGV0YWlscy5HZXRFeGVjdXRpb25T
dGF0ZSgpKTsKKyAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuQ2xlYXIoKTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTQ1NSwxMSArMzY1LDkgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6ZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgpCiAgICAgfQogfQogCi12b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpkaWRSZXN1bWUoKQorYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aXNQYXVz
ZWQoKQogewotICAgIG1fY3VycmVudENhbGxGcmFtZS5jbGVhcigpOwotICAgIG1fZXhlY3V0aW9u
U3RhdGUuY2xlYXIoKTsKLSAgICBtX3BhdXNlZFBhZ2UgPSAwOworICAgIHJldHVybiAhbV9leGVj
dXRpb25TdGF0ZS5nZXQoKS5Jc0VtcHR5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4
IGVlOTJkMDg3Y2VhOTNkOTZkZmQ5ZGRmMDdlMjlkMjJkY2NmOTk2NmEuLjE1MDA0ZWEzNzE3ZGU2
N2MwYTBhY2U4OGUzYjA5ODAyNzAwYjAwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNDUsMTcgKzQ1LDExIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgUGFnZTsKIGNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXI7CiAK
IGNsYXNzIFNjcmlwdERlYnVnU2VydmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3Jp
cHREZWJ1Z1NlcnZlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNjcmlwdERlYnVnU2VydmVyJiBz
aGFyZWQoKTsKLQotICAgIHZvaWQgYWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciosIFBh
Z2UqKTsKLSAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBQYWdl
Kik7Ci0KICAgICBTdHJpbmcgc2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBj
b25zdCBTY3JpcHRCcmVha3BvaW50JiwgaW50KiBhY3R1YWxMaW5lTnVtYmVyLCBpbnQqIGFjdHVh
bENvbHVtbk51bWJlcik7CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYg
YnJlYWtwb2ludElkKTsKICAgICB2b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKQEAgLTgzLDIxICs3
Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpIHsg
fQogICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdTZXJ2
ZXI+KiA9IDApIHsgfQogCi0gICAgdm9pZCBwYWdlQ3JlYXRlZChQYWdlKikgeyB9Ci0KLSAgICAv
LyB2OC1zcGVjaWZpYyBtZXRob2RzLgotICAgIGNsYXNzIENsaWVudE1lc3NhZ2VMb29wIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkNsaWVudE1lc3NhZ2VMb29wKCkgeyB9Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBydW4oUGFnZSopID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHF1
aXROb3coKSA9IDA7Ci0gICAgfTsKLSAgICB2b2lkIHNldENsaWVudE1lc3NhZ2VMb29wKFBhc3NP
d25QdHI8Q2xpZW50TWVzc2FnZUxvb3A+IGNsaWVudE1lc3NhZ2VMb29wKSB7IG1fY2xpZW50TWVz
c2FnZUxvb3AgPSBjbGllbnRNZXNzYWdlTG9vcDsgfQotCiAgICAgUGFzc1JlZlB0cjxKYXZhU2Ny
aXB0Q2FsbEZyYW1lPiBjdXJyZW50Q2FsbEZyYW1lKCk7CiAKLSAgICB2b2lkIHNldEVuYWJsZWQo
Ym9vbCk7Ci0KICAgICBjbGFzcyBUYXNrIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwg
flRhc2soKSB7IH0KQEAgLTEwNiw5ICs4NywxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
aW50ZXJydXB0QW5kUnVuKFBhc3NPd25QdHI8VGFzaz4pOwogICAgIHZvaWQgcnVuUGVuZGluZ1Rh
c2tzKCk7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXIoKTsK
ICAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFNjcmlwdERl
YnVnTGlzdGVuZXIqIGdldERlYnVnTGlzdGVuZXJGb3JDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJ1bk1lc3NhZ2VMb29wT25QYXVzZSh2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBxdWl0TWVzc2FnZUxv
b3BPblBhdXNlKCkgPSAwOwogCiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBicmVh
a1Byb2dyYW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKTsKICAgICB2b2lkIGJy
ZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGV4ZWN1dGlvblN0YXRlKTsKQEAgLTEx
OSwyMCArMTA0LDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaERpZFBhcnNlU291cmNl
KFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHNv
dXJjZU9iamVjdCk7CiAKICAgICB2b2lkIGVuc3VyZURlYnVnZ2VyU2NyaXB0Q29tcGlsZWQoKTsK
LSAgICB2b2lkIGRpZFJlc3VtZSgpOworICAgIAorICAgIGJvb2wgaXNQYXVzZWQoKTsKIAotICAg
IHR5cGVkZWYgSGFzaE1hcDxQYWdlKiwgU2NyaXB0RGVidWdMaXN0ZW5lcio+IExpc3RlbmVyc01h
cDsKLSAgICBMaXN0ZW5lcnNNYXAgbV9saXN0ZW5lcnNNYXA7CiAgICAgUGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSBtX3BhdXNlT25FeGNlcHRpb25zU3RhdGU7CiAgICAgT3duSGFuZGxlPHY4OjpPYmpl
Y3Q+IG1fZGVidWdnZXJTY3JpcHQ7CiAgICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IG1f
Y3VycmVudENhbGxGcmFtZTsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9leGVjdXRpb25T
dGF0ZTsKLSAgICBPd25QdHI8Q2xpZW50TWVzc2FnZUxvb3A+IG1fY2xpZW50TWVzc2FnZUxvb3A7
Ci0gICAgUGFnZSogbV9wYXVzZWRQYWdlOwogICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbV9w
YXVzZWRQYWdlQ29udGV4dDsKLSAgICBib29sIG1fZW5hYmxlZDsKIAogICAgIGJvb2wgbV9icmVh
a3BvaW50c0FjdGl2YXRlZDsKKyAgICBPd25IYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1f
YnJlYWtQcm9ncmFtQ2FsbGJhY2tUZW1wbGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERl
YnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERl
YnVnU2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTJhY2QyYzY4MzEyNmRjOTg2MGMzNDUwMTcyM2M0
ZWRkMTZhODliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKworI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUgIldv
cmtlckNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoKQorICAgIDogU2NyaXB0RGVidWdTZXJ2
ZXIoKQoreworfQorCit2b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcihT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiwgV29ya2VyQ29udGV4dCopCit7Cit9CisKK3ZvaWQgV29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBX
b3JrZXJDb250ZXh0KikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmRjNDdhY2RmOTcxNWM0MTk0ODk0MjdiMWEzOTdmM2E4MDlkNTA0ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERl
YnVnU2VydmVyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV29ya2VyU2NyaXB0RGVidWdTZXJ2
ZXJfaAorI2RlZmluZSBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcl9oCisKKyNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJTY3JpcHRE
ZWJ1Z1NlcnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdvcmtlckNvbnRl
eHQ7CisKK2NsYXNzIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIDogcHVibGljIFNjcmlwdERlYnVn
U2VydmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
cik7CitwdWJsaWM6CisgICAgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoKTsKKyAgICB+V29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KKworICAgIHZvaWQgYWRkTGlzdGVuZXIoU2NyaXB0RGVi
dWdMaXN0ZW5lciosIFdvcmtlckNvbnRleHQqKTsKKyAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKFNj
cmlwdERlYnVnTGlzdGVuZXIqLCBXb3JrZXJDb250ZXh0Kik7CisKK3ByaXZhdGU6CisgICAgdmly
dHVhbCBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBnZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dCh2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5N
ZXNzYWdlTG9vcE9uUGF1c2Uodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBxdWl0TWVzc2FnZUxvb3BPblBhdXNlKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5B
QkxFKFdPUktFUlMpCisKKyNlbmRpZiAvLyBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCBhNmYxMDU1ZjA0MTllZGYzN2Y0YjVkMDEw
YTAzZjhmZjliYjdkZjMyLi4zZGJhY2IyOGVjMTQzNDc2MGUyYmFiNjVlMDc2MGU0N2E0ZTA3OGMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVn
U2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTEwOSw3ICsxMTAsOCBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmN1cnJlbnRDYWxsRnJh
bWVDYWxsYmFjayhjb25zdCB2ODo6QQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LmN1cnJlbnRDYWxsRnJhbWUoKSIp
OwotICAgIHJldHVybiB0b1Y4KFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5jdXJyZW50Q2Fs
bEZyYW1lKCkpOworICAgIEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCA9IFY4SW5qZWN0ZWRTY3Jp
cHRIb3N0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdG9WOChob3N0LT5k
ZWJ1Z2dlckFnZW50KCktPnNjcmlwdERlYnVnU2VydmVyKCkuY3VycmVudENhbGxGcmFtZSgpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKaW5k
ZXggYjU5MmQ5YmFlMDg1N2RkYjE1ZGRmYTVlY2QwMjY3NWNmY2FhNThmNC4uODlhNTAzMWU3YjYz
OGRjNTljMGM4MDQ2YWY1YjA5Njg1Yzk1M2NhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBJbnNwZWN0
b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CitjbGFzcyBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7CiBjbGFzcyBOb2RlOwpAQCAtNjgsNiArNjksOSBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKQogICAgICAgICAgICAgLCBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQqIGRvbVN0b3JhZ2VBZ2VudAogI2VuZGlmCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCisgICAgICAgICAgICAsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQK
KyNlbmRpZgogICAgICAgICApCiAgICAgewogICAgICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5z
cGVjdG9yQWdlbnQ7CkBAIC03OCw2ICs4Miw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRE9NX1NU
T1JBR0UpCiAgICAgICAgIG1fZG9tU3RvcmFnZUFnZW50ID0gZG9tU3RvcmFnZUFnZW50OwogI2Vu
ZGlmCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgICAgIG1fZGVidWdnZXJB
Z2VudCA9IGRlYnVnZ2VyQWdlbnQ7CisjZW5kaWYKICAgICB9CiAgICAgdm9pZCBzZXRGcm9udGVu
ZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpIHsgbV9mcm9udGVuZCA9IGZyb250ZW5kOyB9
CiAgICAgdm9pZCBjbGVhckZyb250ZW5kKCkgeyBtX2Zyb250ZW5kID0gMDsgfQpAQCAtMTA1LDYg
KzExMiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENyZWF0ZVdvcmtlcihsb25nIGlkLCBjb25z
dCBTdHJpbmcmIHVybCwgYm9vbCBpc1NoYXJlZFdvcmtlcik7CiAgICAgdm9pZCBkaWREZXN0cm95
V29ya2VyKGxvbmcgaWQpOwogI2VuZGlmCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCgpIHsgcmV0dXJuIG1f
ZGVidWdnZXJBZ2VudDsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRTY3JpcHRI
b3N0KCk7CkBAIC0xMTcsNiArMTI3LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpCiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBtX2RvbVN0b3JhZ2VBZ2VudDsKICNl
bmRpZgorI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKKyNlbmRpZgogICAgIEluc3BlY3RvckZyb250ZW5k
KiBtX2Zyb250ZW5kOwogICAgIGxvbmcgbV9sYXN0V29ya2VySWQ7CiAgICAgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+IG1faW5zcGVjdGVkTm9kZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcAppbmRleCA0MjZjNWYyYmE1ZjA5OWNlNGI3YzZjOWE0YWFjOTRlNGY2
OTUyNTUxLi5iZWFjNTA3ZGE2ZDkyZmUwZDQ3NjMwZjk4YTA1NjVmNDA2OWMwNThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTEsNiArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3
ZWJraXRAbWF0dGxpbGVrLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
NCw3ICs0NSw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50Lmgi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRz
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxs
LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCkBAIC0xMTEsNyArMTEyLDcgQEAgSW5zcGVj
dG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xp
ZW50LCBJbmplY3RlZFNjcmkKICAgICAsIG1fcmVzb3VyY2VBZ2VudChJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlLCBtX3N0YXRl
LmdldCgpKSkKICAgICAsIG1fY29uc29sZUFnZW50KG5ldyBJbnNwZWN0b3JDb25zb2xlQWdlbnQo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCB0aGlzLCBtX3N0YXRlLmdldCgpLCBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIsIG1fZG9tQWdlbnQuZ2V0KCkpKQogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQotICAgICwgbV9kZWJ1Z2dlckFnZW50KEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2Us
IGluamVjdGVkU2NyaXB0TWFuYWdlcikpCisgICAgLCBtX2RlYnVnZ2VyQWdlbnQoUGFnZURlYnVn
Z2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0
KCksIHBhZ2UsIGluamVjdGVkU2NyaXB0TWFuYWdlcikpCiAgICAgLCBtX2Jyb3dzZXJEZWJ1Z2dl
ckFnZW50KEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX2RvbUFnZW50LmdldCgpLCBtX2RlYnVn
Z2VyQWdlbnQuZ2V0KCksIHRoaXMpKQogICAgICwgbV9wcm9maWxlckFnZW50KEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fY29uc29s
ZUFnZW50LmdldCgpLCBwYWdlLCBtX3N0YXRlLmdldCgpKSkKICNlbmRpZgpAQCAtMTMwLDYgKzEz
MSw5IEBAIEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChQYWdlKiBwYWdlLCBJbnNwZWN0
b3JDbGllbnQqIGNsaWVudCwgSW5qZWN0ZWRTY3JpCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQog
ICAgICAgICAsIG1fZG9tU3RvcmFnZUFnZW50LmdldCgpCiAjZW5kaWYKKyNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKKyAgICAgICAgLCBtX2RlYnVnZ2VyQWdlbnQuZ2V0KCkKKyNlbmRp
ZgogICAgICk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBkNDU5NTNhMTdhMDljNmQzZmY0NzY0YmZjZTVlOTUy
MDEwZGUyNzA1Li41NmJjN2I3MmI2NDE2OWQ1ZWZmNmIwNDI1MDViOTcwYmJjZTA0MmIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQ4LDE1ICs0OCw5IEBAIHN0YXRpYyBjb25zdCBjaGFyIGRlYnVnZ2VyRW5hYmxlZFtdID0g
ImRlYnVnZ2VyRW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBqYXZhU2NyaXB0QnJlYWtwb2lu
dHNbXSA9ICJqYXZhU2NyaXB0QnJlYWtvcGludHMiOwogfTsKIAotUGFzc093blB0cjxJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3Rv
clN0YXRlLCBQYWdlKiBpbnNwZWN0ZWRQYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVj
dGVkU2NyaXB0TWFuYWdlcikKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUsIGluc3BlY3Rl
ZFBhZ2UsIGluamVjdGVkU2NyaXB0TWFuYWdlcikpOwotfQotCi1JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgUGFnZSogaW5zcGVj
dGVkUGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JT
dGF0ZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAg
OiBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5z
cGVjdG9yU3RhdGUoaW5zcGVjdG9yU3RhdGUpCi0gICAgLCBtX2luc3BlY3RlZFBhZ2UoaW5zcGVj
dGVkUGFnZSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFu
YWdlcikKICAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fcGF1c2VkU2NyaXB0U3RhdGUoMCkK
QEAgLTc4LDEwICs3MiwxMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVuYWJsZShi
b29sIHJlc3RvcmluZ0Zyb21TdGF0ZSkKICAgICBtX2luc3BlY3RvclN0YXRlLT5zZXRCb29sZWFu
KERlYnVnZ2VyQWdlbnRTdGF0ZTo6ZGVidWdnZXJFbmFibGVkLCB0cnVlKTsKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQodGhpcyk7CiAKLSAgICBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuY2xlYXJCcmVha3BvaW50cygpOworICAgIHNjcmlw
dERlYnVnU2VydmVyKCkuY2xlYXJCcmVha3BvaW50cygpOwogICAgIC8vIEZJWE1FKFdLNDQ1MTMp
OiBicmVha3BvaW50cyBhY3RpdmF0ZWQgZmxhZyBzaG91bGQgYmUgc3luY2hyb25pemVkIGJldHdl
ZW4gYWxsIGZyb250LWVuZHMKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0QnJl
YWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSk7Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgp
LmFkZExpc3RlbmVyKHRoaXMsIG1faW5zcGVjdGVkUGFnZSk7CisgICAgc2NyaXB0RGVidWdTZXJ2
ZXIoKS5zZXRCcmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKTsKKyAgICBzdGFydExpc3RlbmluZ1Nj
cmlwdERlYnVnU2VydmVyKCk7CiAKICAgICBtX2Zyb250ZW5kLT5kZWJ1Z2dlcldhc0VuYWJsZWQo
KTsKICAgICBpZiAobV9saXN0ZW5lcikKQEAgLTk2LDcgKzkwLDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKICAgICBtX2luc3BlY3RvclN0YXRlLT5zZXRPYmplY3Qo
RGVidWdnZXJBZ2VudFN0YXRlOjpqYXZhU2NyaXB0QnJlYWtwb2ludHMsIEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCkpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudCgwKTsKIAotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZW1vdmVM
aXN0ZW5lcih0aGlzLCBtX2luc3BlY3RlZFBhZ2UpOworICAgIHN0b3BMaXN0ZW5pbmdTY3JpcHRE
ZWJ1Z1NlcnZlcigpOwogICAgIGNsZWFyKCk7CiAKICAgICBpZiAobV9mcm9udGVuZCkKQEAgLTEz
Niw5ICsxMzAsOSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRnJvbnRlbmQo
KQogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJv
clN0cmluZyosIGJvb2wgYWN0aXZlKQogewogICAgIGlmIChhY3RpdmUpCi0gICAgICAgIFNjcmlw
dERlYnVnU2VydmVyOjpzaGFyZWQoKS5hY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CisgICAgICAgIHNj
cmlwdERlYnVnU2VydmVyKCkuYWN0aXZhdGVCcmVha3BvaW50cygpOwogICAgIGVsc2UKLSAgICAg
ICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmRlYWN0aXZhdGVCcmVha3BvaW50cygpOwor
ICAgICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLmRlYWN0aXZhdGVCcmVha3BvaW50cygpOwogfQog
CiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3Qg
U3RyaW5nJikKQEAgLTE5OSwxOCArMTkzLDE4IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6cmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwCiAg
ICAgaWYgKGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yID09IG1fYnJlYWtwb2ludElk
VG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yLT5z
ZWNvbmQuc2l6ZSgpOyArK2kpCi0gICAgICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5y
ZW1vdmVCcmVha3BvaW50KGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yLT5zZWNvbmRb
aV0pOworICAgICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnJlbW92ZUJyZWFrcG9pbnQoZGVidWdT
ZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3ItPnNlY29uZFtpXSk7CiAgICAgbV9icmVha3BvaW50
SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5yZW1vdmUoZGVidWdTZXJ2ZXJCcmVha3BvaW50
SWRzSXRlcmF0b3IpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVl
VG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc291cmNlSWQsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlmICghbV9jb250aW51ZVRv
TG9jYXRpb25CcmVha3BvaW50SWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFNjcmlwdERlYnVnU2Vy
dmVyOjpzaGFyZWQoKS5yZW1vdmVCcmVha3BvaW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtw
b2ludElkKTsKKyAgICAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVCcmVha3BvaW50KG1f
Y29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkKTsKICAgICAgICAgbV9jb250aW51ZVRvTG9j
YXRpb25CcmVha3BvaW50SWQgPSAiIjsKICAgICB9CiAgICAgU2NyaXB0QnJlYWtwb2ludCBicmVh
a3BvaW50KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgIiIsIHRydWUpOwotICAgIG1fY29udGlu
dWVUb0xvY2F0aW9uQnJlYWtwb2ludElkID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNl
dEJyZWFrcG9pbnQoc291cmNlSWQsIGJyZWFrcG9pbnQsICZsaW5lTnVtYmVyLCAmY29sdW1uTnVt
YmVyKTsKKyAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJZCA9IHNjcmlwdERlYnVn
U2VydmVyKCkuc2V0QnJlYWtwb2ludChzb3VyY2VJZCwgYnJlYWtwb2ludCwgJmxpbmVOdW1iZXIs
ICZjb2x1bW5OdW1iZXIpOwogICAgIHJlc3VtZShlcnJvcik7CiB9CiAKQEAgLTIzMiw3ICsyMjYs
NyBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0
IFN0cmluZyYgYnJlYWtwb2ludElkLCBjb25zdAogICAgIGlmIChicmVha3BvaW50LmxpbmVOdW1i
ZXIgPj0gc2NyaXB0LmxpbmVPZmZzZXQgKyBzY3JpcHQubGluZXNDb3VudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIGRlYnVnU2VydmVyQnJlYWtwb2ludElkID0gU2NyaXB0
RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldEJyZWFrcG9pbnQoc291cmNlSWQsIGJyZWFrcG9pbnQs
IGFjdHVhbExpbmVOdW1iZXIsIGFjdHVhbENvbHVtbk51bWJlcik7CisgICAgU3RyaW5nIGRlYnVn
U2VydmVyQnJlYWtwb2ludElkID0gc2NyaXB0RGVidWdTZXJ2ZXIoKS5zZXRCcmVha3BvaW50KHNv
dXJjZUlkLCBicmVha3BvaW50LCBhY3R1YWxMaW5lTnVtYmVyLCBhY3R1YWxDb2x1bW5OdW1iZXIp
OwogICAgIGlmIChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtMjQ3LDcgKzI0MSw3IEBAIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQsIGNvbnN0
CiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVkaXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5l
d0NvbnRlbnQsIFN0cmluZyogcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBuZXdDYWxs
RnJhbWVzKQogewogICAgIFN0cmluZyBlZGl0UmVzdWx0OwotICAgIGlmIChTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2hhcmVkKCkuZWRpdFNjcmlwdFNvdXJjZShzb3VyY2VJRCwgbmV3Q29udGVudCwgZWRp
dFJlc3VsdCkpIHsKKyAgICBpZiAoc2NyaXB0RGVidWdTZXJ2ZXIoKS5lZGl0U2NyaXB0U291cmNl
KHNvdXJjZUlELCBuZXdDb250ZW50LCBlZGl0UmVzdWx0KSkgewogICAgICAgICAqbmV3Q2FsbEZy
YW1lcyA9IGN1cnJlbnRDYWxsRnJhbWVzKCk7CiAgICAgICAgICpyZXN1bHQgPSBlZGl0UmVzdWx0
OwogICAgIH0gZWxzZQpAQCAtMjY2LDcgKzI2MCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckV2ZW50VHlwZSB0eXBl
CiAgICAgbV9icmVha1Byb2dyYW1EZXRhaWxzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMtPnNldE51bWJlcigiZXZlbnRUeXBlIiwgdHlwZSk7
CiAgICAgbV9icmVha1Byb2dyYW1EZXRhaWxzLT5zZXRWYWx1ZSgiZXZlbnREYXRhIiwgZGF0YSk7
Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldFBhdXNlT25OZXh0U3RhdGVtZW50
KHRydWUpOworICAgIHNjcmlwdERlYnVnU2VydmVyKCkuc2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQo
dHJ1ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VPbk5l
eHRTdGF0ZW1lbnQoKQpAQCAtMjc0LDcgKzI2OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6Y2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKQogICAgIGlmIChtX2phdmFTY3JpcHRQ
YXVzZVNjaGVkdWxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYnJlYWtQcm9ncmFtRGV0YWls
cyA9IDA7Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldFBhdXNlT25OZXh0U3Rh
dGVtZW50KGZhbHNlKTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnNldFBhdXNlT25OZXh0U3Rh
dGVtZW50KGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZShF
cnJvclN0cmluZyopCkBAIC0yODUsMjggKzI3OSwyOCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnBhdXNlKEVycm9yU3RyaW5nKikKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpyZXN1bWUoRXJyb3JTdHJpbmcqKQogewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQo
KS5jb250aW51ZVByb2dyYW0oKTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLmNvbnRpbnVlUHJv
Z3JhbSgpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBPdmVyKEVycm9y
U3RyaW5nKikKIHsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc3RlcE92ZXJTdGF0
ZW1lbnQoKTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnN0ZXBPdmVyU3RhdGVtZW50KCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c3RlcEludG8oRXJyb3JTdHJpbmcqKQog
ewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5zdGVwSW50b1N0YXRlbWVudCgpOwor
ICAgIHNjcmlwdERlYnVnU2VydmVyKCkuc3RlcEludG9TdGF0ZW1lbnQoKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwT3V0KEVycm9yU3RyaW5nKikKIHsKLSAgICBTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc3RlcE91dE9mRnVuY3Rpb24oKTsKKyAgICBzY3JpcHRE
ZWJ1Z1NlcnZlcigpLnN0ZXBPdXRPZkZ1bmN0aW9uKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBwYXVzZVN0YXRlKQogewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQo
KS5zZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKHN0YXRpY19jYXN0PFNjcmlwdERlYnVnU2VydmVy
OjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlPihwYXVzZVN0YXRlKSk7Ci0gICAgaWYgKFNjcmlwdERl
YnVnU2VydmVyOjpzaGFyZWQoKS5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCkgIT0gcGF1c2VTdGF0
ZSkKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoc3Rh
dGljX2Nhc3Q8U2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGU+KHBhdXNl
U3RhdGUpKTsKKyAgICBpZiAoc2NyaXB0RGVidWdTZXJ2ZXIoKS5wYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKCkgIT0gcGF1c2VTdGF0ZSkKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVy
cm9yLiBDb3VsZCBub3QgY2hhbmdlIHBhdXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUuIjsKIH0KIApA
QCAtMzc3LDcgKzM3MSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2Uo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQogICAgIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVk
ID0gZmFsc2U7CiAKICAgICBpZiAoIW1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkLmlz
RW1wdHkoKSkgewotICAgICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVtb3ZlQnJl
YWtwb2ludChtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJZCk7CisgICAgICAgIHNjcmlw
dERlYnVnU2VydmVyKCkucmVtb3ZlQnJlYWtwb2ludChtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFr
cG9pbnRJZCk7CiAgICAgICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkID0gIiI7
CiAgICAgfQogfQpAQCAtMzk0LDcgKzM4OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6YnJlYWtQcm9ncmFtKERlYnVnZ2VyRXZlbnRUeXBlIHR5cGUsIFBhc3NSZWZQdHI8SW5zCiAg
ICAgbV9icmVha1Byb2dyYW1EZXRhaWxzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAg
ICBtX2JyZWFrUHJvZ3JhbURldGFpbHMtPnNldE51bWJlcigiZXZlbnRUeXBlIiwgdHlwZSk7CiAg
ICAgbV9icmVha1Byb2dyYW1EZXRhaWxzLT5zZXRWYWx1ZSgiZXZlbnREYXRhIiwgZGF0YSk7Ci0g
ICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmJyZWFrUHJvZ3JhbSgpOworICAgIHNjcmlw
dERlYnVnU2VydmVyKCkuYnJlYWtQcm9ncmFtKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Y2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNDYzYmI4YTk5OWRkMTEwM2Q1YjBhMDczNGM2ZmM4N2Zh
MDNlNWQ5YS4uZDU3MjZlNzYwMTZhMDI4ZjA1ODhiN2IxMWExZDQyYzUxNjJjMzBjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUx
LDcgKzUxLDcgQEAgY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7
CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFz
cyBQYWdlOworY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOwogCkBAIC02NCw3ICs2NCw2IEBAIGVudW0gRGVidWdnZXJFdmVudFR5cGUgewogY2xh
c3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVj
dG9yRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JT
dGF0ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KCk7CiAKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIHsg
ZW5hYmxlKGZhbHNlKTsgfQpAQCAtMTA2LDkgKzEwNSwxNSBAQCBwdWJsaWM6CiAgICAgfTsKICAg
ICB2b2lkIHNldExpc3RlbmVyKExpc3RlbmVyKiBsaXN0ZW5lcikgeyBtX2xpc3RlbmVyID0gbGlz
dGVuZXI7IH0KIAotcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqKTsKKyAgICB2aXJ0dWFsIFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigp
ID0gMDsKKworcHJvdGVjdGVkOgorICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkgPSAwOwor
Citwcml2YXRlOgogICAgIHZvaWQgZW5hYmxlKGJvb2wgcmVzdG9yaW5nRnJvbVN0YXRlKTsKIAog
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGN1cnJlbnRDYWxsRnJhbWVzKCk7CkBAIC0x
NTEsNyArMTU2LDYgQEAgcHJpdmF0ZToKIAogICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5z
dHJ1bWVudGluZ0FnZW50czsKICAgICBJbnNwZWN0b3JTdGF0ZSogbV9pbnNwZWN0b3JTdGF0ZTsK
LSAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXIq
IG1fZnJvbnRlbmQ7CiAgICAgU2NyaXB0U3RhdGUqIG1fcGF1c2VkU2NyaXB0U3RhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAK
aW5kZXggMWY5NWI2NDY4NzE4ZGZlYzc2ZTUxYWI5ZTEwOGFmMDNlMTZmMjZkNS4uODcwYTEyMGE2
YjM5Mzc2MjRiZjJmN2MyNDNlNzMyYWZlNGJiNzc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAtNDAsOCArNDAsOCBA
QAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5o
IgogI2luY2x1ZGUgIlNjcmlwdEhlYXBTbmFwc2hvdC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2Zp
bGUuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZv
aWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAgaWYgKCFtX2VuYWJsZWQp
CiAgICAgICAgIHJldHVybjsKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKLSAgICBTY3JpcHREZWJ1
Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7CisgICAgUGFn
ZVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24o
KTsKICAgICBpZiAobV9mcm9udGVuZCkKICAgICAgICAgbV9mcm9udGVuZC0+cHJvZmlsZXJXYXNE
aXNhYmxlZCgpOwogfQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6ZW5hYmxlKGJvb2wgc2tpcFJlY29tcGlsZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1f
ZW5hYmxlZCA9IHRydWU7CiAgICAgaWYgKCFza2lwUmVjb21waWxlKQotICAgICAgICBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7CisgICAg
ICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21waWxlQWxsSlNGdW5jdGlv
bnNTb29uKCk7CiAgICAgaWYgKG1fZnJvbnRlbmQpCiAgICAgICAgIG1fZnJvbnRlbmQtPnByb2Zp
bGVyV2FzRW5hYmxlZCgpOwogfQpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmICghZW5hYmxlZCgpKSB7CiAgICAgICAgIGVuYWJsZSh0cnVlKTsKLSAgICAgICAg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7Cisg
ICAgICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21waWxlQWxsSlNGdW5j
dGlvbnMoMCk7CiAgICAgfQogICAgIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUgPSB0
cnVlOwogICAgIFN0cmluZyB0aXRsZSA9IGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5h
bWUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMzUzNjU2MWExYzE0MzY0MGY5ODQ3Mjk2YWZkOTdmNmRlZmI4YzQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBhZ2VEZWJ1Z2dlckFnZW50LmgiCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikg
JiYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJQYWdl
U2NyaXB0RGVidWdTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRy
PFBhZ2VEZWJ1Z2dlckFnZW50PiBQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JT
dGF0ZSwgUGFnZSogaW5zcGVjdGVkUGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlRGVidWdnZXJB
Z2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgaW5zcGVjdGVkUGFnZSwg
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSk7Cit9CisKK1BhZ2VEZWJ1Z2dlckFnZW50OjpQYWdlRGVi
dWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNw
ZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIFBhZ2UqIGluc3BlY3RlZFBhZ2UsIEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgIDogSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQorICAgICwgbV9pbnNwZWN0ZWRQYWdlKGluc3BlY3RlZFBhZ2UpCit7Cit9
CisKK1BhZ2VEZWJ1Z2dlckFnZW50Ojp+UGFnZURlYnVnZ2VyQWdlbnQoKQoreworfQorCit2b2lk
IFBhZ2VEZWJ1Z2dlckFnZW50OjpzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkKK3sK
KyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLmFkZExpc3RlbmVyKHRoaXMsIG1faW5zcGVjdGVkUGFn
ZSk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1
Z1NlcnZlcigpCit7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVMaXN0ZW5lcih0aGlz
LCBtX2luc3BlY3RlZFBhZ2UpOworfQorCitQYWdlU2NyaXB0RGVidWdTZXJ2ZXImIFBhZ2VEZWJ1
Z2dlckFnZW50OjpzY3JpcHREZWJ1Z1NlcnZlcigpCit7CisgICAgcmV0dXJuIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2hhcmVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKSAm
JiBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q2YWY2YzJiNjM1MWJmNzRlOTI5NzQzMWU3MDcxOGZhN2U2
NjBlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVi
dWdnZXJBZ2VudC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhZ2VEZWJ1Z2dlckFnZW50X2gK
KyNkZWZpbmUgUGFnZURlYnVnZ2VyQWdlbnRfaAorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oIgorI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFBhZ2U7CitjbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI7CisK
K2NsYXNzIFBhZ2VEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VEZWJ1Z2dlckFnZW50KTsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYWdl
RGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0
ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIH5QYWdlRGVi
dWdnZXJBZ2VudCgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBzdGFydExpc3Rlbmlu
Z1NjcmlwdERlYnVnU2VydmVyKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdTY3Jp
cHREZWJ1Z1NlcnZlcigpOworICAgIHZpcnR1YWwgUGFnZVNjcmlwdERlYnVnU2VydmVyJiBzY3Jp
cHREZWJ1Z1NlcnZlcigpOworCisgICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIEluc3BlY3RvclN0YXRlKiwgUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwor
ICAgIFBhZ2UqIGNvbnN0IG1faW5zcGVjdGVkUGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUo
SU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoUGFnZURlYnVnZ2VyQWdlbnRfaCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZmQwMGE1ZmQ5NTM5ZTM1OGZhNDgxYzM0NjU1NmQ1OWI0ZjA4OWViCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQu
Y3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2Vy
RGVidWdnZXJBZ2VudC5oIgorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVO
QUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShXT1JLRVJTKQorI2luY2x1ZGUgIlNjcmlwdERlYnVn
U2VydmVyLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1Bhc3NPd25QdHI8V29ya2VyRGVidWdnZXJBZ2VudD4gV29ya2VyRGVidWdnZXJBZ2Vu
dDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgV29ya2VyQ29udGV4dCogaW5zcGVjdGVkV29ya2Vy
Q29udGV4dCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCit7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJEZWJ1Z2dlckFnZW50KGluc3RydW1lbnRp
bmdBZ2VudHMsIGluc3BlY3RvclN0YXRlLCBpbnNwZWN0ZWRXb3JrZXJDb250ZXh0LCBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpKTsKK30KKworV29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVidWdn
ZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0
b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIFdvcmtlckNvbnRleHQqIGluc3BlY3RlZFdvcmtlckNv
bnRleHQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAg
IDogSW5zcGVjdG9yRGVidWdnZXJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JT
dGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgICwgbV9pbnNwZWN0ZWRXb3JrZXJDb250
ZXh0KGluc3BlY3RlZFdvcmtlckNvbnRleHQpCit7Cit9CisKK1dvcmtlckRlYnVnZ2VyQWdlbnQ6
On5Xb3JrZXJEZWJ1Z2dlckFnZW50KCkKK3sKK30KKwordm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50
OjpzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkKK3sKK30KKwordm9pZCBXb3JrZXJE
ZWJ1Z2dlckFnZW50OjpzdG9wTGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKQoreworfQorCitX
b3JrZXJTY3JpcHREZWJ1Z1NlcnZlciYgV29ya2VyRGVidWdnZXJBZ2VudDo6c2NyaXB0RGVidWdT
ZXJ2ZXIoKQoreworICAgIHJldHVybiBtX3NjcmlwdERlYnVnU2VydmVyOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikg
JiYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYWQzNTJlNDAw
NTM5ODdlMDdjMjgxZjBhYjI0NjhkZDcyMmI3MjIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXb3JrZXJEZWJ1Z2dlckFnZW50X2gKKyNkZWZpbmUgV29ya2VyRGVidWdnZXJBZ2Vu
dF9oCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RP
UikgJiYgRU5BQkxFKFdPUktFUlMpCisjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
IgorI2luY2x1ZGUgIldvcmtlclNjcmlwdERlYnVnU2VydmVyLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgV29ya2VyQ29udGV4dDsKKworY2xhc3MgV29ya2VyRGVidWdnZXJBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXb3JrZXJEZWJ1Z2dlckFnZW50KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJEZWJ1Z2dlckFnZW50PiBjcmVh
dGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgV29ya2VyQ29udGV4dCos
IEluamVjdGVkU2NyaXB0TWFuYWdlciopOworICAgIHZpcnR1YWwgfldvcmtlckRlYnVnZ2VyQWdl
bnQoKTsKKworcHJpdmF0ZToKKyAgICBXb3JrZXJEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFdvcmtlckNvbnRleHQqLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqKTsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2Vy
dmVyKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigp
OworICAgIHZpcnR1YWwgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVy
KCk7CisKKyAgICBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlciBtX3NjcmlwdERlYnVnU2VydmVyOwor
ICAgIFdvcmtlckNvbnRleHQqIG1faW5zcGVjdGVkV29ya2VyQ29udGV4dDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KSAmJiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoV09SS0VSUykKKworI2VuZGlmIC8vICFk
ZWZpbmVkKFdvcmtlckRlYnVnZ2VyQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggYWZhNGQ2MWU5YjI5ZTkxZGE3ZGRjYTdmZTVhMDMzZjRiMWVhYzM5OC4uZTdlMjAxMzA1YzAy
MTIxZjNkOTQyMjJlMTkzOTg5ZmM5MzIxMDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMS0wMy0zMCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBzcGxpdCBkZWJ1Z2dlciBhZ2VudCBpbnRvIFBhZ2UgYW5kIFdv
cmtlci1zcGVjaWZpYyBvbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NzM0NQorCisgICAgICAgIFNjcmlwdERlYnVnU2VydmVyIGFuZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50IGNvbnRhaW4gb25seSBmdW5jdGlvbmFsaXR5IGNvbW1vbgorICAgICAg
ICBmb3IgV29ya2VyIGFuZCBQYWdlIGRlYnVnZ2VyLiBBbGwgc3BlY2lmaWNzIGlzIG1vdmVkIGlu
dG8gUGFnZS9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcgorICAgICAgICBhbmQgUGFnZS9Xb3JrZXJE
ZWJ1Z2dlckFnZW50LgorCisgICAgICAgICogc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RGVidWdnZXJBZ2VudE1hbmFnZXI6OnNldEV4cG9zZVY4RGVidWdn
ZXJQcm90b2NvbCk6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudDo6aW50ZXJydXB0QW5kRGlzcGF0Y2gpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50Ojpwcm9jZXNzUGVuZGluZ01lc3NhZ2Vz
KToKKwogMjAxMS0wMy0yOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgyMjkzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCmluZGV4
IGI3NmJjZmU2ODMyN2JmMzY2NzViYzg1ZGFmNTg3ZDQ2MGEzZWNhYWUuLjM2OGI3OGNmMzY1NDBj
ODRhODI2MzYyMWJjOTE2OWI0MzViYTFmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNp
bmNsdWRlICJEZWJ1Z2dlckFnZW50SW1wbC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIu
aCIKKyNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJWOFByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudEltcGwuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZUltcGwuaCIKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpz
ZXRNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlcihXZWJEZXZUb29sc0FnZW50OjpNZXNzYQogdm9p
ZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2V0RXhwb3NlVjhEZWJ1Z2dlclByb3RvY29sKGJvb2wg
dmFsdWUpCiB7CiAgICAgc19leHBvc2VWOERlYnVnZ2VyUHJvdG9jb2wgPSB2YWx1ZTsKLSAgICBX
ZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0RW5hYmxlZCghc19leHBvc2VW
OERlYnVnZ2VyUHJvdG9jb2wpOworICAgIFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6
c2hhcmVkKCkuc2V0RW5hYmxlZCghc19leHBvc2VWOERlYnVnZ2VyUHJvdG9jb2wpOwogfQogCiB2
b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZXRIb3N0SWQoV2ViRnJhbWVJbXBsKiB3ZWJmcmFt
ZSwgaW50IGhvc3RJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRl
dlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCBkNzE4ZTJmNDAwMDI5Y2YxN2RjZTY2OGY3MzYxMTRh
NWViZTA3Y2UyLi5jMWE1ZjljYzg5M2FlOTM2Y2IzNmEwMWI1ZGUwZGY5YjJjOGY2ZDA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTQwLDExICs0MCwxMSBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNs
dWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdT
ZXJ2ZXIuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAj
aW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKQEAgLTcyLDE0ICs3MiwxNCBAQCBuYW1lc3BhY2Ugewog
c3RhdGljIGNvbnN0IGNoYXIga0Zyb250ZW5kQ29ubmVjdGVkRmVhdHVyZU5hbWVbXSA9ICJmcm9u
dGVuZC1jb25uZWN0ZWQiOwogc3RhdGljIGNvbnN0IGNoYXIga0luc3BlY3RvclN0YXRlRmVhdHVy
ZU5hbWVbXSA9ICJpbnNwZWN0b3Itc3RhdGUiOwogCi1jbGFzcyBDbGllbnRNZXNzYWdlTG9vcEFk
YXB0ZXIgOiBwdWJsaWMgU2NyaXB0RGVidWdTZXJ2ZXI6OkNsaWVudE1lc3NhZ2VMb29wIHsKK2Ns
YXNzIENsaWVudE1lc3NhZ2VMb29wQWRhcHRlciA6IHB1YmxpYyBQYWdlU2NyaXB0RGVidWdTZXJ2
ZXI6OkNsaWVudE1lc3NhZ2VMb29wIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVD
bGllbnRNZXNzYWdlTG9vcENyZWF0ZWQoV2ViRGV2VG9vbHNBZ2VudENsaWVudCogY2xpZW50KQog
ICAgIHsKICAgICAgICAgaWYgKHNfaW5zdGFuY2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIHNfaW5zdGFuY2UgPSBuZXcgQ2xpZW50TWVzc2FnZUxvb3BBZGFwdGVyKGNsaWVudC0+Y3Jl
YXRlQ2xpZW50TWVzc2FnZUxvb3AoKSk7Ci0gICAgICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFy
ZWQoKS5zZXRDbGllbnRNZXNzYWdlTG9vcChzX2luc3RhbmNlKTsKKyAgICAgICAgUGFnZVNjcmlw
dERlYnVnU2VydmVyOjpzaGFyZWQoKS5zZXRDbGllbnRNZXNzYWdlTG9vcChzX2luc3RhbmNlKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBpbnNwZWN0ZWRWaWV3Q2xvc2VkKFdlYlZpZXdJbXBs
KiB2aWV3KQpAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBSZWxl
YXNlIHJlbmRlciB0aHJlYWQgaWYgbmVjZXNzYXJ5LgogICAgICAgICBpZiAoc19pbnN0YW5jZSAm
JiBzX2luc3RhbmNlLT5tX3J1bm5pbmcpCi0gICAgICAgICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2hhcmVkKCkuY29udGludWVQcm9ncmFtKCk7CisgICAgICAgICAgICBQYWdlU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNoYXJlZCgpLmNvbnRpbnVlUHJvZ3JhbSgpOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTMxOSw3ICszMTksNyBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnQ6OmRlYnVnZ2VyUGF1c2VTY3Jp
cHQoKQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnQ6OmludGVycnVwdEFuZERpc3BhdGNoKE1lc3Nh
Z2VEZXNjcmlwdG9yKiBkKQogewotICAgIGNsYXNzIERlYnVnZ2VyVGFzayA6IHB1YmxpYyBTY3Jp
cHREZWJ1Z1NlcnZlcjo6VGFzayB7CisgICAgY2xhc3MgRGVidWdnZXJUYXNrIDogcHVibGljIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlcjo6VGFzayB7CiAgICAgcHVibGljOgogICAgICAgICBEZWJ1Z2dl
clRhc2soV2ViRGV2VG9vbHNBZ2VudDo6TWVzc2FnZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpIDog
bV9kZXNjcmlwdG9yKGRlc2NyaXB0b3IpIHsgfQogICAgICAgICB2aXJ0dWFsIH5EZWJ1Z2dlclRh
c2soKSB7IH0KQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnQ6OmludGVy
cnVwdEFuZERpc3BhdGNoKE1lc3NhZ2VEZXNjcmlwdG9yKiBkKQogICAgIHByaXZhdGU6CiAgICAg
ICAgIE93blB0cjxXZWJEZXZUb29sc0FnZW50OjpNZXNzYWdlRGVzY3JpcHRvcj4gbV9kZXNjcmlw
dG9yOwogICAgIH07Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OmludGVycnVwdEFuZFJ1bihuZXcg
RGVidWdnZXJUYXNrKGQpKTsKKyAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmludGVycnVwdEFu
ZFJ1bihuZXcgRGVidWdnZXJUYXNrKGQpKTsKIH0KIAogYm9vbCBXZWJEZXZUb29sc0FnZW50Ojpz
aG91bGRJbnRlcnJ1cHRGb3JNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKQEAgLTM1
MSw3ICszNTEsNyBAQCBib29sIFdlYkRldlRvb2xzQWdlbnQ6OnNob3VsZEludGVycnVwdEZvck1l
c3NhZ2UoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnQ6
OnByb2Nlc3NQZW5kaW5nTWVzc2FnZXMoKQogewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFy
ZWQoKS5ydW5QZW5kaW5nVGFza3MoKTsKKyAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJl
ZCgpLnJ1blBlbmRpbmdUYXNrcygpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnQ6OnNldE1l
c3NhZ2VMb29wRGlzcGF0Y2hIYW5kbGVyKE1lc3NhZ2VMb29wRGlzcGF0Y2hIYW5kbGVyIGhhbmRs
ZXIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87520</attachid>
            <date>2011-03-30 06:23:30 -0700</date>
            <delta_ts>2011-03-30 06:38:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-57345-20110330172318.patch</filename>
            <type>text/plain</type>
            <size>125233</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODI0MjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjOTM2OTY2ZjRhZjIwNTJk
MjYxZWM1MDRmZmVlMWFlZTE0ZGRiMGM5Li4zM2QyZDAzYzE1NDg4MTAzYzM2MTk5MGNkZjM5NmU3
MDhiYzhkMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTM5IEBACisyMDExLTAzLTMwICBZdXJ5
IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNwbGl0IGRlYnVnZ2Vy
IGFnZW50IGludG8gUGFnZSBhbmQgV29ya2VyLXNwZWNpZmljIG9uZXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU3MzQ1CisKKyAgICAgICAgU2NyaXB0
RGVidWdTZXJ2ZXIgYW5kIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgY29udGFpbiBvbmx5IGZ1bmN0
aW9uYWxpdHkgY29tbW9uCisgICAgICAgIGZvciBXb3JrZXIgYW5kIFBhZ2UgZGVidWdnZXIuIEFs
bCBzcGVjaWZpY3MgaXMgbW92ZWQgaW50byBQYWdlL1dvcmtlclNjcmlwdERlYnVnU2VydmVyCisg
ICAgICAgIGFuZCBQYWdlL1dvcmtlckRlYnVnZ2VyQWdlbnQuCisKKyAgICAgICAgKiBHTlVtYWtl
ZmlsZS5hbToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6Y3VycmVudENhbGxGcmFtZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjp0b1BhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlw
dERlYnVnU2VydmVyOjpzaGFyZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVn
U2VydmVyOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNj
cmlwdERlYnVnU2VydmVyOjp+UGFnZVNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6Z2V0TGlzdGVuZXJzRm9yR2xv
YmFsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlk
UGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250
aW51ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJlbW92
ZUxhc3RMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OnNldEphdmFTY3JpcHRQYXVzZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6U2NyaXB0RGVi
dWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNvdXJjZVBh
cnNlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpj
cmVhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dERlYnVnU2VydmVyOjp1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdERlYnVnU2VydmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVMaXN0ZW5lcik6CisgICAg
ICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6fldvcmtlclNjcmlwdERlYnVn
U2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpyZWNv
bXBpbGVBbGxKU0Z1bmN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlcjo6Z2V0TGlzdGVuZXJzRm9yR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkQ29udGludWUpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
cmV0cmlldmVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OnNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OlBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2
ZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZl
cjo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjpzZXRDbGllbnRNZXNzYWdlTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OmdldERlYnVnTGlzdGVuZXJGb3JDb250ZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuTWVzc2FnZUxvb3BPblBhdXNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cXVpdE1lc3NhZ2VMb29wT25QYXVz
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRFbmFibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6Q2xpZW50TWVzc2FnZUxv
b3A6On5DbGllbnRNZXNzYWdlTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXI6On5QYWdlU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OmJyZWFrUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6Y29udGludWVQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpzdGVwSW50b1N0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6c3RlcE92ZXJTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjplZGl0U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvU2NyaXB0
RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFr
UHJvZ3JhbUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjp2
OERlYnVnRXZlbnRDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZl
cjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjppc1BhdXNlZCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
aDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHA6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OldvcmtlclNj
cmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2Vy
dmVyOjphZGRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcjo6cmVtb3ZlTGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlclNjcmlw
dERlYnVnU2VydmVyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXI6On5Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6Z2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bk1lc3NhZ2VMb29wT25Q
YXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cXVpdE1l
c3NhZ2VMb29wT25QYXVzZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3Jp
cHRIb3N0OjpjdXJyZW50Q2FsbEZyYW1lQ2FsbGJhY2spOgorICAgICAgICAqIGluc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9z
dDo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpJbmplY3RlZFNjcmlwdEhvc3Q6OmRlYnVnZ2Vy
QWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JBZ2VudDo6SW5zcGVjdG9yQWdlbnQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludHNBY3RpdmUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFr
cG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZWRpdFNj
cmlwdFNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
Y2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwT3Zlcik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwSW50byk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwT3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2Zp
bGVyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6ZW5hYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclByb2ZpbGVyQWdlbnQ6
OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VE
ZWJ1Z2dlckFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJB
Z2VudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpQYWdl
RGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6flBh
Z2VEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpz
dGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VE
ZWJ1Z2dlckFnZW50OjpzdG9wTGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OnNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaDogQWRkZWQuCisgICAgICAgICogaW5zcGVj
dG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1
Z2dlckFnZW50OjpXb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckRlYnVnZ2VyQWdlbnQ6On5Xb3JrZXJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckRlYnVnZ2VyQWdlbnQ6OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6c3RvcExpc3RlbmluZ1Njcmlw
dERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OnNj
cmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2Vu
dC5oOiBBZGRlZC4KKwogMjAxMS0wMy0zMCAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CmluZGV4IDM0ZTZiOGNjNDU0ZWEwM2QyYjQwYTQ2ZTRmZmI1YTc0MmJjN2E4YTkuLjk4ODY5ZTRk
NmJmNGJmMjliM2JjZWNlNWFhNzQ4YzQ5ZmViNzk5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBA
IC04OTMsNiArODkzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSmF2YVNjcmlwdENhbGxGcmFtZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9PcHRpb25zT2JqZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmNwcCBcCkBAIC05MzEsNiArOTMzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3JlSlNDbGllbnREYXRhLmggXAogCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmggXAorCVNvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCBcCiAJU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9icmlk
Z2UvQnJpZGdlLmggXApAQCAtMjA0NCw2ICsyMDQ4LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oIFwKKwlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvUGFnZURlYnVnZ2VyQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dEFyZ3VtZW50cy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVu
dHMuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaCBcCkBA
IC0yMDU1LDYgKzIwNjEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRHQ0V2ZW50TGlzdGVuZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyRGVidWdnZXJBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNl
SlNDLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCmluZGV4IGZlMzMxYmZkNjAy
ZDFjZGM0YjcwMDg1ZTgxMTE5NWVlMTIwYmY4OWIuLmNkY2QzOGEwMTAxNjA3NmViYWY1OTEzNTNk
MTUxNjhkNGYyZmE0NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1VzZUpTQy5jbWFrZQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKQEAgLTE0MSw2ICsxNDEsNyBAQCBMSVNU
KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0
VXBsb2FkQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5j
cHAKICAgICBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAorICAgIGJpbmRpbmdz
L2pzL1BhZ2VEZWJ1Z1NlcnZlci5jcHAKICAgICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcAogICAgIGJpbmRp
bmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0xNTYsNiArMTU3LDcgQEAgTElT
VChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3Bw
CiAgICAgYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAogICAgIGJpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisgICAgYmluZGluZ3MvanMvV29ya2VyRGVi
dWdTZXJ2ZXIuY3BwCiAKICAgICBicmlkZ2UvSWRlbnRpZmllclJlcC5jcHAKICAgICBicmlkZ2Uv
TlBfanNvYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOWM4ZWFkN2JmMDU1MTk3YzZhOTQ2
MjM1ZDkwNmI0ZmM1OWIwMDRmMi4uMzUyYmM2MTFiNTE1MDQwMjg3YTMwZjE1NDZkZDhiYzNjNjM0
NWMxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMTkyOSw2ICsxOTI5LDggQEAKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mv
djgvT3B0aW9uc09iamVjdC5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9Pd25IYW5kbGUu
aCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCcs
CisgICAgICAgICAgICAnYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmgnLAogICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5jcHAnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L1JldGFpbmVkRE9NSW5mby5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9SZXRhaW5lZE9iamVjdEluZm8uaCcsCkBAIC0yMDI2LDYgKzIwMjgsOCBAQAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1dvcmtlckNvbnRleHRFeGVjdXRpb25Qcm94eS5oJywKICAgICAgICAg
ICAgICdiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAg
ICAnYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oJywKKyAgICAgICAgICAgICdi
aW5kaW5ncy92OC9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAnLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgnLAogICAgICAgICAgICAgJ2JpbmRp
bmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1dvcmxkQ29udGV4dEhhbmRsZS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9XcmFwcGVy
VHlwZUluZm8uaCcsCkBAIC0zMjI4LDYgKzMyMzIsOCBAQAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvSW5zcGVjdG9y
V29ya2VyUmVzb3VyY2UuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3RydW1lbnRpbmdB
Z2VudHMuaCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCcs
CisgICAgICAgICAgICAnaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvU2NyaXB0QXJndW1lbnRzLmgnLAogICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRDYWxs
RnJhbWUuY3BwJywKQEAgLTMyMzcsNiArMzI0Myw4IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9y
L1NjcmlwdEdDRXZlbnRMaXN0ZW5lci5oJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmNwcCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2Vu
dC5jcHAnLAorICAgICAgICAgICAgJ2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgnLAog
ICAgICAgICAgICAgJ2xvYWRlci9DYWNoZWRNZXRhZGF0YS5oJywKICAgICAgICAgICAgICdsb2Fk
ZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVyL0Ny
b3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUucHJvIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggZDJkMjgwOTAzNjI5
MmE4MWIwNTQ1Njk3NDIyM2M3YzBlYjA5NjQwNC4uN2YyMWVlMDEwYjlhYmQzMmYxZTJjMjRmNzI1
Mzk2MjcxYWRlYjBlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTM0Niw2ICszNDYsNyBAQCB2OCB7CiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTV2ViS2l0UG9pbnRDdXN0b20uY3BwIFwKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9q
cy9KU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pz
L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9TY2hlZHVs
ZWRBY3Rpb24uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwIFwK
QEAgLTgzMCwxMCArODMxLDEyIEBAIFNPVVJDRVMgKz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0
b3JTdHlsZVNoZWV0LmNwcCBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcCBcCisgICAgaW5zcGVjdG9y
L1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCBcCiAgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5j
cHAgXAogICAgIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwIFwKICAgICBpbnNwZWN0b3Iv
U2NyaXB0Q2FsbFN0YWNrLmNwcCBcCiAgICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9y
eS5jcHAgXAorICAgIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCBcCiAgICAgbG9h
ZGVyL2FyY2hpdmUvQXJjaGl2ZVJlc291cmNlLmNwcCBcCiAgICAgbG9hZGVyL2FyY2hpdmUvQXJj
aGl2ZVJlc291cmNlQ29sbGVjdGlvbi5jcHAgXAogICAgIGxvYWRlci9jYWNoZS9NZW1vcnlDYWNo
ZS5jcHAgXApAQCAtMTMwMCw5ICsxMzAzLDExIEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMv
SlNTdG9yYWdlQ3VzdG9tLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRC
YXNlLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9KYXZhU2NyaXB0Q2FsbEZyYW1lLmggXAorICAg
ICAgICBiaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oIFwKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgg
XAorICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oIFwKICAgICAgICAgYmlu
ZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5oIFwKICAgICAgICAgYmluZGluZ3MvanMvU2Ny
aXB0RnVuY3Rpb25DYWxsLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRHQ0V2ZW50Lmgg
XApAQCAtMTMyMCw2ICsxMzI1LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy9qcy9TdHJpbmdT
b3VyY2VQcm92aWRlci5oIFwKICAgICAgICAgYmluZGluZ3MvanMvV2ViQ29yZUpTQ2xpZW50RGF0
YS5oIFwKICAgICAgICAgYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIFwKKyAg
ICAgICAgYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCBcCiAgICAgICAgIGJy
aWRnZS9CcmlkZ2UuaCBcCiAgICAgICAgIGJyaWRnZS9jL0NSdW50aW1lT2JqZWN0LmggXAogICAg
ICAgICBicmlkZ2UvYy9jX2NsYXNzLmggXApAQCAtMTc1NSw4ICsxNzYxLDEwIEBAIEhFQURFUlMg
Kz0gXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmggXAogICAgIGluc3BlY3Rv
ci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggXAogICAgIGluc3BlY3Rvci9JbnN0cnVtZW50aW5n
QWdlbnRzLmggXAorICAgIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oIFwKICAgICBpbnNw
ZWN0b3IvU2NyaXB0R0NFdmVudExpc3RlbmVyLmggXAogICAgIGluc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuaCBcCisgICAgaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaCBcCiAg
ICAgbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oIFwKICAgICBsb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaCBcCiAgICAgbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGUuaCBcCkBAIC0yODY4LDcgKzI4NzYsOCBAQCBjb250YWlucyhERUZJTkVT
LCBFTkFCTEVfV09SS0VSUz0xKSB7CiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1dvcmtlckNv
bnRleHRCYXNlLmNwcCBcCiAgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRD
dXN0b20uY3BwIFwKICAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pTV29ya2VyQ3VzdG9tLmNwcCBc
Ci0gICAgICAgICAgICBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorICAg
ICAgICAgICAgYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgXAorICAgICAg
ICAgICAgYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAgICAgfQogICAg
IFNPVVJDRVMgKz0gXAogICAgICAgICBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCBk
Y2ViMzVkYTY1OTVkY2VkMzE4ODVhYjQ0Y2IzMjcyNzBkNWM0NmRkLi5lYmE4MGIyZjY1OTRhOThm
ZmEzOTNiZjMzZjFkMzE2ZDc5Zjg1ODRiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZj
cHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNjMxMTcsNiArNjMxMTcsNjIgQEAKIAkJCQkJPgogCQkJ
CTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9u
CisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVl
IgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgor
CQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4K
KwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NGTGl0
ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJ
PFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJE
ZWJ1Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4K
KwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJ
CQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJ
TmFtZT0iUmVsZWFzZV9MVENHfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
CisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJ
CQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8Rmls
ZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFBhZ2VTY3JpcHREZWJ1Z1NlcnZl
ci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcU2NoZWR1bGVkQWN0aW9uLmNwcCIKIAkJCQkJPgogCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KQEAgLTYzODk2LDYgKzYzOTUyLDYyIEBACiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgogCQkJCQk+CiAJCQkJPC9G
aWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcV29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwIgorCQkJCQk+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgor
CQkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIK
KwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJ
CQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlv
bgorCQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z19DYWlyb19DRkxpdGV8V2luMzIiCisJCQkJCQlFeGNs
dWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJ
CQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iUmVsZWFzZV9DYWlyb19DRkxpdGV8
V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxU
b29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVi
dWdfQWxsfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJ
CQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5h
bWU9IlJlbGVhc2VfTFRDR3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgor
CQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJ
CQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUK
KwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xQYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
aCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KIAkJCTwvRmlsdGVyPgogCQkJPEZpbHRlcgogCQkJCU5h
bWU9InNjcmlwdHMiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMmU3MWU1NzRjZjUwZDQ4YjBmYjAxNmFlYWFkODI3NzA5NDBhZjI2
OS4uNzczYTUzZGQ2Y2JlODM2ZmIxMTY2NzkxZjkwNDVkMzk2MDI3NmZkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTY0NSw2
ICs1NjQ1LDE0IEBACiAJCUYzNDRDNzE0MTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjM0NEM3MTIxMTI1QjgyQzAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjM0NEM3
NTMxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNDRDNzUyMTEyOTRE
OUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjM0NEM3NTgxMTI5NEZGNjAw
RjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NEM3NTcxMTI5NEZGNjAwRjI2RUVF
IC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwICovOyB9OworCQlGMzQ3NDJEQzEz
NDM2MkYwMDA1MzFCQzIgLyogUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NzQyREExMzQzNjJGMDAwNTMxQkMyIC8q
IFBhZ2VEZWJ1Z2dlckFnZW50LmNwcCAqLzsgfTsKKwkJRjM0NzQyREQxMzQzNjJGMDAwNTMxQkMy
IC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGMzQ3NDJEQjEzNDM2MkYwMDA1MzFCQzIgLyogUGFnZURlYnVnZ2VyQWdl
bnQuaCAqLzsgfTsKKwkJRjM0NzQyRTAxMzQzNjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjM0NzQyREUxMzQzNjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuY3BwICovOyB9
OworCQlGMzQ3NDJFMTEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJBZ2VudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NzQyREYxMzQz
NjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuaCAqLzsgfTsKKwkJRjM0NzQyRTQx
MzQzNjMzQzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzQ3NDJFMjEzNDM2MzNDMDA1MzFC
QzIgLyogUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCAqLzsgfTsKKwkJRjM0NzQyRTUxMzQzNjMz
QzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NzQyRTMxMzQzNjMzQzAwNTMxQkMyIC8qIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5oICovOyB9OworCQlGMzQ3NDJFODEzNDM2MzUwMDA1MzFCQzIg
LyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NzQyRTYxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNj
cmlwdERlYnVnU2VydmVyLmNwcCAqLzsgfTsKKwkJRjM0NzQyRTkxMzQzNjM1MDAwNTMxQkMyIC8q
IFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGMzQ3NDJFNzEzNDM2MzUwMDA1MzFCQzIgLyogV29ya2VyU2NyaXB0
RGVidWdTZXJ2ZXIuaCAqLzsgfTsKIAkJRjM2NDRBRkYxMTE5ODA1OTAwRTBENTM3IC8qIEluamVj
dGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5jcHAgKi87IH07
CiAJCUYzNjQ0QjAwMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM2NDRBRkUxMTE5ODA1OTAw
RTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmggKi87IH07CiAJCUYzNzVDQzA3MTE1MEQzMDAwMDhE
REI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM3NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3Bl
Y3RvcldvcmtlclJlc291cmNlLmggKi87IH07CkBAIC0xMjExNyw2ICsxMjEyNSwxNCBAQAogCQlG
MzQ0QzcxMjExMjVCODJDMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjM0NEM3NTIxMTI5NEQ5RDAwRjI2RUVFIC8q
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGMzQ0Qzc1NzExMjk0RkY2MDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjM0NzQyREExMzQzNjJGMDAwNTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VEZWJ1Z2dlckFnZW50LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM0NzQyREIxMzQzNjJGMDAwNTMxQkMy
IC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFBhZ2VEZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzNDc0
MkRFMTM0MzYzMUYwMDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGMzQ3NDJERjEzNDM2MzFGMDA1MzFCQzIgLyogV29y
a2VyRGVidWdnZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3Jr
ZXJEZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzNDc0MkUy
MTM0MzYzM0MwMDUzMUJDMiAvKiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM0NzQyRTMxMzQzNjMzQzAwNTMxQkMyIC8qIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM0
NzQyRTYxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlclNjcmlwdERlYnVnU2VydmVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM0NzQyRTcxMzQzNjM1MDAwNTMx
QkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUYzNjQ0QUZEMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNjQ0QUZFMTExOTgwNTkwMEUwRDUzNyAv
KiBJbmplY3RlZFNjcmlwdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmpl
Y3RlZFNjcmlwdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzc1Q0MwNjExNTBE
MzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTgyLDYgKzEzMTk4LDggQEAKIAkJCQlGM0FCRkUwQjEzMEU5
REEwMDBFN0Y3RDEgLyogSW5zdHJ1bWVudGluZ0FnZW50cy5oICovLAogCQkJCTFDODFCQTA1MEU5
NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCAqLywKIAkJCQlCQ0M2NEY1
RjBEQ0ZCODRFMDA4MUVGM0IgLyogbG9jYWxpemVkU3RyaW5ncy5qcyAqLywKKwkJCQlGMzQ3NDJE
QTEzNDM2MkYwMDA1MzFCQzIgLyogUGFnZURlYnVnZ2VyQWdlbnQuY3BwICovLAorCQkJCUYzNDc0
MkRCMTM0MzYyRjAwMDUzMUJDMiAvKiBQYWdlRGVidWdnZXJBZ2VudC5oICovLAogCQkJCUYzOUJF
OTU5MTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuY3BwICovLAogCQkJCUYzOUJF
OTVBMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLywKIAkJCQk3QUZENEE4
QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0QnJlYWtwb2ludC5oICovLApAQCAtMTMxOTQsNiAr
MTMyMTIsOCBAQAogCQkJCTlGQTM3RUYwMTE3MkZENDEwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxl
Tm9kZS5pZGwgKi8sCiAJCQkJNzU1M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVj
b3JkRmFjdG9yeS5jcHAgKi8sCiAJCQkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVs
aW5lUmVjb3JkRmFjdG9yeS5oICovLAorCQkJCUYzNDc0MkRFMTM0MzYzMUYwMDUzMUJDMiAvKiBX
b3JrZXJEZWJ1Z2dlckFnZW50LmNwcCAqLywKKwkJCQlGMzQ3NDJERjEzNDM2MzFGMDA1MzFCQzIg
LyogV29ya2VyRGVidWdnZXJBZ2VudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpbnNwZWN0b3I7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTc5NTcsNiArMTc5NzcsOCBAQAogCQkJ
CTE0Q0Q4RDgxMTA2QjUyOTAwMEE0NkQyMyAvKiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8s
CiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQxMEJDIC8qIEpTV29ya2VyQ29udGV4dEJhc2UuY3Bw
ICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dvcmtlckNvbnRleHRCYXNl
LmggKi8sCisJCQkJRjM0NzQyRTIxMzQzNjMzQzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAgKi8sCisJCQkJRjM0NzQyRTMxMzQzNjMzQzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5oICovLAogCQkJCUJDQTM3OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVs
ZWRBY3Rpb24uY3BwICovLAogCQkJCUJDQTM3OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVs
ZWRBY3Rpb24uaCAqLywKIAkJCQk0MUYxRDIxRTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2Fj
aGVkRnJhbWVEYXRhLmNwcCAqLywKQEAgLTE3OTk2LDYgKzE4MDE4LDggQEAKIAkJCQlCQzUzRDkx
MDExNDMxMENDMDAwRDgxN0UgLyogV2ViQ29yZUpTQ2xpZW50RGF0YS5oICovLAogCQkJCUUxQTY0
M0ZDMEVDMDk3QTAwMDc3OTY2OCAvKiBXb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCAqLywKIAkJ
CQlFMUE2NDNGMTBFQzA5NzI1MDA3Nzk2NjggLyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oICov
LAorCQkJCUYzNDc0MkU2MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAgKi8sCisJCQkJRjM0NzQyRTcxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERl
YnVnU2VydmVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGpzOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTIyNzI1LDYgKzIyNzQ5LDEwIEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAw
MkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYx
MkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTk5QzY3
MUUxMzQzNDM5NDAwQzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0LmggaW4gSGVhZGVycyAqLywK
KwkJCQlGMzQ3NDJERDEzNDM2MkYwMDA1MzFCQzIgLyogUGFnZURlYnVnZ2VyQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUYzNDc0MkUxMTM0MzYzMUYwMDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dl
ckFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQlGMzQ3NDJFNTEzNDM2MzNDMDA1MzFCQzIgLyog
UGFnZVNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQlGMzQ3NDJFOTEzNDM2
MzUwMDA1MzFCQzIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMjUzOTgsNiArMjU0MjYsMTAgQEAKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyog
WFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMw
MEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTk5QzY3MUMxMzQz
NDM4OTAwQzM0MjNDIC8qIEphdmFNZXRob2RKb2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUYzNDc0MkRDMTM0MzYyRjAwMDUzMUJDMiAvKiBQYWdlRGVidWdnZXJBZ2VudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGMzQ3NDJFMDEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJB
Z2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGMzQ3NDJFNDEzNDM2MzNDMDA1MzFCQzIgLyog
UGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYzNDc0MkU4MTM0
MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRT
Y3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCAxMmM4YjdhNjRlMTMxZjRjNGUwZGVmMWUwNTY4MmYx
OTM2ODRjMjBiLi5kNTYyNTFmYjQwN2RlNjU3ZjNlNGM0ZGZlZDkxNDE4YzAzNWJkMDIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCkBAIC00MSw2ICs0MSw3IEBACiAjZW5kaWYKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgog
I2luY2x1ZGUgIkpTTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCkBAIC03NSw3ICs3
Niw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2NyaXB0VmFsdWUo
U2NyaXB0U3RhdGUqIHN0YXRlLCBOb2RlKiBub2RlCiBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjpjdXJyZW50Q2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKLSAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuY3VycmVudENhbGxGcmFtZSgpOworICAgIEphdmFT
Y3JpcHRDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IGltcGwoKS0+ZGVidWdnZXJBZ2VudCgpLT5zY3Jp
cHREZWJ1Z1NlcnZlcigpLmN1cnJlbnRDYWxsRnJhbWUoKTsKICAgICBpZiAoIWNhbGxGcmFtZSB8
fCAhY2FsbEZyYW1lLT5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2Vy
dmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYWQxZjVjNjM0ODhlMDQ3ZWNmOTcyNDRkZDViZjFiYWMyZmM3
N2YxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcApAQCAtMCwwICsxLDIyNCBAQAorLyoKKyAqIENvcHlyaWdodCAo
YykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKworI2lmIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKQorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCisjaW5jbHVkZSAi
U2NyaXB0RGVidWdMaXN0ZW5lci5oIgorI2luY2x1ZGUgIldpZGdldC5oIgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNMb2NrLmg+CisjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworc3RhdGljIFBhZ2UqIHRvUGFnZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIEFTU0VSVF9BUkcoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpOworCisgICAg
SlNET01XaW5kb3cqIHdpbmRvdyA9IGFzSlNET01XaW5kb3coZ2xvYmFsT2JqZWN0KTsKKyAgICBG
cmFtZSogZnJhbWUgPSB3aW5kb3ctPmltcGwoKS0+ZnJhbWUoKTsKKyAgICByZXR1cm4gZnJhbWUg
PyBmcmFtZS0+cGFnZSgpIDogMDsKK30KKworLyoKK3N0YXRpYyBTY3JpcHRXb3JsZFR5cGUgY3Vy
cmVudFdvcmxkVHlwZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGN1cnJlbnRXb3JsZChl
eGVjKSA9PSBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSkKKyAgICAgICAgcmV0dXJuIE1BSU5fV09S
TEQ7CisgICAgcmV0dXJuIEVYVEVOU0lPTlNfV09STEQ7Cit9CisqLworCitQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXImIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciwgc2VydmVyLCAoKSk7CisgICAgcmV0
dXJuIHNlcnZlcjsKK30KKworUGFnZVNjcmlwdERlYnVnU2VydmVyOjpQYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIoKQorICAgIDogU2NyaXB0RGVidWdTZXJ2ZXIoKQoreworfQorCitQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXI6On5QYWdlU2NyaXB0RGVidWdTZXJ2ZXIoKQoreworICAgIGRlbGV0ZUFsbFZhbHVl
cyhtX3BhZ2VMaXN0ZW5lcnNNYXApOworfQorCit2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6
YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCit7
CisgICAgQVNTRVJUX0FSRyhsaXN0ZW5lciwgbGlzdGVuZXIpOworICAgIEFTU0VSVF9BUkcocGFn
ZSwgcGFnZSk7CisKKyAgICBwYWlyPFBhZ2VMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yLCBib29sPiBy
ZXN1bHQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIDApOworICAgIGlmIChyZXN1bHQu
c2Vjb25kKQorICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBMaXN0ZW5lclNldDsK
KworICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsKKyAg
ICBsaXN0ZW5lcnMtPmFkZChsaXN0ZW5lcik7CisKKyAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9u
c1Nvb24oKTsKKyAgICBwYWdlLT5zZXREZWJ1Z2dlcih0aGlzKTsKK30KKwordm9pZCBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3Rl
bmVyLCBQYWdlKiBwYWdlKQoreworICAgIEFTU0VSVF9BUkcobGlzdGVuZXIsIGxpc3RlbmVyKTsK
KyAgICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOworCisgICAgUGFnZUxpc3RlbmVyc01hcDo6aXRl
cmF0b3IgaXQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuZmluZChwYWdlKTsKKyAgICBpZiAoaXQgPT0g
bV9wYWdlTGlzdGVuZXJzTWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMaXN0ZW5l
clNldCogbGlzdGVuZXJzID0gaXQtPnNlY29uZDsKKyAgICBsaXN0ZW5lcnMtPnJlbW92ZShsaXN0
ZW5lcik7CisgICAgaWYgKGxpc3RlbmVycy0+aXNFbXB0eSgpKSB7CisgICAgICAgIG1fcGFnZUxp
c3RlbmVyc01hcC5yZW1vdmUoaXQpOworICAgICAgICBkZWxldGUgbGlzdGVuZXJzOworICAgICAg
ICBkaWRSZW1vdmVMYXN0TGlzdGVuZXIocGFnZSk7CisgICAgfQorfQorCit2b2lkIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdT
ZXJ2ZXI+KikKK3sKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAg
IC8vIElmIEphdmFTY3JpcHQgc3RhY2sgaXMgbm90IGVtcHR5IHBvc3Rwb25lIHJlY29tcGlsYXRp
b24uCisgICAgaWYgKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+ZHluYW1pY0ds
b2JhbE9iamVjdCkKKyAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7CisgICAg
ZWxzZQorICAgICAgICBEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNET01XaW5k
b3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKK30KKworU2NyaXB0RGVidWdTZXJ2ZXI6Okxpc3Rl
bmVyU2V0KiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmdldExpc3RlbmVyc0Zvckdsb2JhbE9iamVj
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFBhZ2UqIHBhZ2UgPSB0b1Bh
Z2UoZ2xvYmFsT2JqZWN0KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiAwOworICAg
IHJldHVybiBtX3BhZ2VMaXN0ZW5lcnNNYXAuZ2V0KHBhZ2UpOworfQorCit2b2lkIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQoreworICAgIFBhZ2UqIHBhZ2UgPSB0b1BhZ2UoZ2xvYmFsT2JqZWN0KTsKKyAgICBtX3BhdXNl
ZFBhZ2UgPSBwYWdlOworICAgIHNldEphdmFTY3JpcHRQYXVzZWQocGFnZS0+Z3JvdXAoKSwgdHJ1
ZSk7Cit9CisKK3ZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250aW51ZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgUGFnZSogcGFnZSA9IHRvUGFnZShn
bG9iYWxPYmplY3QpOworICAgIG1fcGF1c2VkUGFnZSA9IDA7CisgICAgc2V0SmF2YVNjcmlwdFBh
dXNlZChwYWdlLT5ncm91cCgpLCBmYWxzZSk7Cit9CisKK3ZvaWQgUGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjpkaWRSZW1vdmVMYXN0TGlzdGVuZXIoUGFnZSogcGFnZSkKK3sKKyAgICBpZiAobV9wYXVz
ZWRQYWdlID09IHBhZ2UpCisgICAgICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9
IHRydWU7CisKKyAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKKyAgICBwYWdlLT5z
ZXREZWJ1Z2dlcigwKTsKK30KKwordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFT
Y3JpcHRQYXVzZWQoY29uc3QgUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGJvb2wgcGF1c2VkKQorewor
ICAgIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQocGF1c2VkKTsKKworICAgIGNvbnN0IEhh
c2hTZXQ8UGFnZSo+JiBwYWdlcyA9IHBhZ2VHcm91cC5wYWdlcygpOworCisgICAgSGFzaFNldDxQ
YWdlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBhZ2VzLmVuZCgpOworICAgIGZvciAoSGFzaFNl
dDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKCppdCwgcGF1c2VkKTsKK30KKwordm9p
ZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoUGFnZSogcGFnZSwg
Ym9vbCBwYXVzZWQpCit7CisgICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsKKworICAgIHBhZ2Ut
PnNldERlZmVyc0xvYWRpbmcocGF1c2VkKTsKKworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFn
ZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dCgpKQorICAgICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKGZyYW1lLCBwYXVzZWQpOworfQorCit2
b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSogZnJh
bWUsIGJvb2wgcGF1c2VkKQoreworICAgIEFTU0VSVF9BUkcoZnJhbWUsIGZyYW1lKTsKKworICAg
IGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0
ZVNjcmlwdCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0UGF1
c2VkKHBhdXNlZCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKKyAgICBpZiAocGF1c2VkKSB7CisgICAgICAgIGRvY3VtZW50LT5zdXNwZW5kU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgIGRvY3VtZW50LT5zdXNwZW5k
QWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNl
ZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG9jdW1lbnQtPnJlc3VtZUFjdGl2ZURPTU9iamVj
dHMoKTsKKyAgICAgICAgZG9jdW1lbnQtPnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ckNhbGxiYWNrcygpOworICAgIH0KKworICAgIHNldEphdmFTY3JpcHRQYXVzZWQoZnJhbWUtPnZp
ZXcoKSwgcGF1c2VkKTsKK30KKwordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFT
Y3JpcHRQYXVzZWQoRnJhbWVWaWV3KiB2aWV3LCBib29sIHBhdXNlZCkKK3sKKyAgICBpZiAoIXZp
ZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4g
PiogY2hpbGRyZW4gPSB2aWV3LT5jaGlsZHJlbigpOworICAgIEFTU0VSVChjaGlsZHJlbik7CisK
KyAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNoaWxk
cmVuLT5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBjaGlsZHJlbi0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAg
IFdpZGdldCogd2lkZ2V0ID0gKCppdCkuZ2V0KCk7CisgICAgICAgIGlmICghd2lkZ2V0LT5pc1Bs
dWdpblZpZXcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBzdGF0aWNfY2FzdDxQ
bHVnaW5WaWV3Kj4od2lkZ2V0KS0+c2V0SmF2YVNjcmlwdFBhdXNlZChwYXVzZWQpOworICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJ
UFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdl
U2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1NjNlMjY5NTBjOTZhM2ZlYmYyNzdmMzE3ODY4
YjQ3MTRlMjUzYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJp
Z2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXJfaAorI2RlZmluZSBQYWdlU2NyaXB0RGVidWdTZXJ2ZXJfaAorCisjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZl
ci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
Y2xhc3MgRnJhbWU7CitjbGFzcyBGcmFtZVZpZXc7CitjbGFzcyBQYWdlOworY2xhc3MgUGFnZUdy
b3VwOworCitjbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIgOiBwdWJsaWMgU2NyaXB0RGVidWdT
ZXJ2ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcik7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciYgc2hhcmVkKCk7CisK
KyAgICB2b2lkIGFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBQYWdlKik7CisgICAg
dm9pZCByZW1vdmVMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOworCisgICAg
dmlydHVhbCB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVyPFNjcmlwdERlYnVnU2Vy
dmVyPiopOworCitwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxQYWdlKiwgTGlzdGVuZXJT
ZXQqPiBQYWdlTGlzdGVuZXJzTWFwOworCisgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyKCk7Cisg
ICAgdmlydHVhbCB+UGFnZVNjcmlwdERlYnVnU2VydmVyKCk7CisKKyAgICB2aXJ0dWFsIExpc3Rl
bmVyU2V0KiBnZXRMaXN0ZW5lcnNGb3JHbG9iYWxPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCop
OworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAg
dmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKworICAgIHZv
aWQgZGlkUmVtb3ZlTGFzdExpc3RlbmVyKFBhZ2UqKTsKKworICAgIHZvaWQgc2V0SmF2YVNjcmlw
dFBhdXNlZChjb25zdCBQYWdlR3JvdXAmLCBib29sIHBhdXNlZCk7CisgICAgdm9pZCBzZXRKYXZh
U2NyaXB0UGF1c2VkKFBhZ2UqLCBib29sIHBhdXNlZCk7CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0
UGF1c2VkKEZyYW1lKiwgYm9vbCBwYXVzZWQpOworICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNl
ZChGcmFtZVZpZXcqLCBib29sIHBhdXNlZCk7CisKKyAgICBQYWdlTGlzdGVuZXJzTWFwIG1fcGFn
ZUxpc3RlbmVyc01hcDsKKyAgICBQYWdlKiBtX3BhdXNlZFBhZ2U7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKwor
I2VuZGlmIC8vIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMzJhM2IyZGYzNWU4NDJhMTg0
MGI5ZDM5ZGRkODc5NmEyYmQ2YmJmMS4uMDVjMGYyYzk4MGE0MjYwNTNiYWQyZDcwMDM2ZGEyMzkw
OTg4MWYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zMiw0NSArMzIsMjcgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQogCi0jaW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29w
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZVRyZWUuaCIKLSNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUg
IkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGFn
ZUdyb3VwLmgiCi0jaW5jbHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdEJyZWFr
cG9pbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RGVidWdMaXN0ZW5lci5oIgotI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKLSNpbmNsdWRlICJXaWRn
ZXQuaCIKICNpbmNsdWRlIDxkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oPgogI2luY2x1ZGUg
PHBhcnNlci9Tb3VyY2VQcm92aWRlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYv
VW51c2VkUGFyYW0uaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1TY3JpcHREZWJ1Z1NlcnZlciYgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpCi17
Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChTY3JpcHREZWJ1Z1NlcnZlciwgc2VydmVyLCAoKSk7
Ci0gICAgcmV0dXJuIHNlcnZlcjsKLX0KLQogU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERlYnVn
U2VydmVyKCkKICAgICA6IG1fY2FsbGluZ0xpc3RlbmVycyhmYWxzZSkKICAgICAsIG1fcGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZShEb250UGF1c2VPbkV4Y2VwdGlvbnMpCiAgICAgLCBtX3BhdXNlT25O
ZXh0U3RhdGVtZW50KGZhbHNlKQogICAgICwgbV9wYXVzZWQoZmFsc2UpCi0gICAgLCBtX3BhdXNl
ZFBhZ2UoMCkKICAgICAsIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyh0cnVlKQogICAg
ICwgbV9icmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKQogICAgICwgbV9wYXVzZU9uQ2FsbEZyYW1l
KDApCkBAIC04Myw0NyArNjUsNiBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6flNjcmlwdERlYnVnU2Vy
dmVyKCkKICAgICBkZWxldGVBbGxWYWx1ZXMobV9wYWdlTGlzdGVuZXJzTWFwKTsKIH0KIAotdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlz
dGVuZXIsIFBhZ2UqIHBhZ2UpCi17Ci0gICAgQVNTRVJUX0FSRyhsaXN0ZW5lciwgbGlzdGVuZXIp
OwotICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7Ci0KLSAgICBwYWlyPFBhZ2VMaXN0ZW5lcnNN
YXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2Us
IDApOwotICAgIGlmIChyZXN1bHQuc2Vjb25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29u
ZCA9IG5ldyBMaXN0ZW5lclNldDsKLQotICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSByZXN1
bHQuZmlyc3QtPnNlY29uZDsKLSAgICBsaXN0ZW5lcnMtPmFkZChsaXN0ZW5lcik7Ci0KLSAgICBk
aWRBZGRMaXN0ZW5lcihwYWdlKTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3Zl
TGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCi17Ci0g
ICAgQVNTRVJUX0FSRyhsaXN0ZW5lciwgbGlzdGVuZXIpOwotICAgIEFTU0VSVF9BUkcocGFnZSwg
cGFnZSk7Ci0KLSAgICBQYWdlTGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdCA9IG1fcGFnZUxpc3Rl
bmVyc01hcC5maW5kKHBhZ2UpOwotICAgIGlmIChpdCA9PSBtX3BhZ2VMaXN0ZW5lcnNNYXAuZW5k
KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSBpdC0+
c2Vjb25kOwotICAgIGxpc3RlbmVycy0+cmVtb3ZlKGxpc3RlbmVyKTsKLSAgICBpZiAobGlzdGVu
ZXJzLT5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9wYWdlTGlzdGVuZXJzTWFwLnJlbW92ZShpdCk7
Ci0gICAgICAgIGRlbGV0ZSBsaXN0ZW5lcnM7Ci0gICAgfQotCi0gICAgZGlkUmVtb3ZlTGlzdGVu
ZXIocGFnZSk7Ci19Ci0KLWJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0xpc3RlbmVyc0ludGVy
ZXN0ZWRJblBhZ2UoUGFnZSogcGFnZSkKLXsKLSAgICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOwot
Ci0gICAgcmV0dXJuIG1fcGFnZUxpc3RlbmVyc01hcC5jb250YWlucyhwYWdlKTsKLX0KLQogU3Ry
aW5nIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNl
SUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIHNjcmlwdEJyZWFrcG9pbnQsIGludCogYWN0dWFs
TGluZU51bWJlciwgaW50KiBhY3R1YWxDb2x1bW5OdW1iZXIpCiB7CiAgICAgaW50cHRyX3Qgc291
cmNlSURWYWx1ZSA9IHNvdXJjZUlELnRvSW50UHRyKCk7CkBAIC0yOTksMTUgKzI0MCw2IEBAIHZv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBM
aXN0ZW5lclNldCYgbGlzdGVuZXJzCiAgICAgICAgIGNvcHlbaV0tPmZhaWxlZFRvUGFyc2VTb3Vy
Y2UodXJsLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAot
c3RhdGljIFBhZ2UqIHRvUGFnZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAg
IEFTU0VSVF9BUkcoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpOwotCi0gICAgSlNET01XaW5k
b3cqIHdpbmRvdyA9IGFzSlNET01XaW5kb3coZ2xvYmFsT2JqZWN0KTsKLSAgICBGcmFtZSogZnJh
bWUgPSB3aW5kb3ctPmltcGwoKS0+ZnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUgPyBmcmFtZS0+
cGFnZSgpIDogMDsKLX0KLQogc3RhdGljIFNjcmlwdFdvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBl
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoY3VycmVudFdvcmxkKGV4ZWMpID09IG1haW5U
aHJlYWROb3JtYWxXb3JsZCgpKQpAQCAtMzMzLDIyICsyNjUsMTkgQEAgdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6c291cmNlUGFyc2VkKEV4ZWNTdGF0ZSogZXhlYywgU291cmNlUHJvdmlkZXIqIHNv
dXJjZVByb3YKICAgICBpZiAobV9jYWxsaW5nTGlzdGVuZXJzKQogICAgICAgICByZXR1cm47CiAK
LSAgICBQYWdlKiBwYWdlID0gdG9QYWdlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0g
ICAgaWYgKCFwYWdlKQorICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnNG
b3JHbG9iYWxPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBpZiAoIWxp
c3RlbmVycykKICAgICAgICAgcmV0dXJuOwotCi0gICAgU2NyaXB0V29ybGRUeXBlIHdvcmxkVHlw
ZSA9IGN1cnJlbnRXb3JsZFR5cGUoZXhlYyk7CisgICAgQVNTRVJUKCFsaXN0ZW5lcnMtPmlzRW1w
dHkoKSk7CiAKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSB0cnVlOwogCiAgICAgYm9vbCBpc0Vy
cm9yID0gZXJyb3JMaW5lICE9IC0xOwotCi0gICAgaWYgKExpc3RlbmVyU2V0KiBwYWdlTGlzdGVu
ZXJzID0gbV9wYWdlTGlzdGVuZXJzTWFwLmdldChwYWdlKSkgewotICAgICAgICBBU1NFUlQoIXBh
Z2VMaXN0ZW5lcnMtPmlzRW1wdHkoKSk7Ci0gICAgICAgIGlmIChpc0Vycm9yKQotICAgICAgICAg
ICAgZGlzcGF0Y2hGYWlsZWRUb1BhcnNlU291cmNlKCpwYWdlTGlzdGVuZXJzLCBzb3VyY2VQcm92
aWRlciwgZXJyb3JMaW5lLCB1c3RyaW5nVG9TdHJpbmcoZXJyb3JNZXNzYWdlKSk7Ci0gICAgICAg
IGVsc2UKLSAgICAgICAgICAgIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoKnBhZ2VMaXN0ZW5lcnMs
IHNvdXJjZVByb3ZpZGVyLCB3b3JsZFR5cGUpOworICAgIGlmIChpc0Vycm9yKQorICAgICAgICBk
aXNwYXRjaEZhaWxlZFRvUGFyc2VTb3VyY2UoKmxpc3RlbmVycywgc291cmNlUHJvdmlkZXIsIGVy
cm9yTGluZSwgdXN0cmluZ1RvU3RyaW5nKGVycm9yTWVzc2FnZSkpOworICAgIGVsc2UgeworICAg
ICAgICBTY3JpcHRXb3JsZFR5cGUgd29ybGRUeXBlID0gY3VycmVudFdvcmxkVHlwZShleGVjKTsK
KyAgICAgICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZSgqbGlzdGVuZXJzLCBzb3VyY2VQcm92aWRl
ciwgd29ybGRUeXBlKTsKICAgICB9CiAKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSBmYWxzZTsK
QEAgLTM2Miw4NSArMjkxLDI2IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVu
Y3Rpb25Ub0xpc3RlbmVycyhjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzCiAgICAgICAgICh0
aGlzLT4qY2FsbGJhY2spKGNvcHlbaV0pOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpk
aXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrIGNh
bGxiYWNrLCBQYWdlKiBwYWdlKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjayBjYWxsYmFjaywgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKICAgICBpZiAobV9jYWxsaW5nTGlzdGVuZXJz
KQogICAgICAgICByZXR1cm47CiAKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSB0cnVlOwogCi0g
ICAgaWYgKExpc3RlbmVyU2V0KiBwYWdlTGlzdGVuZXJzID0gbV9wYWdlTGlzdGVuZXJzTWFwLmdl
dChwYWdlKSkgewotICAgICAgICBBU1NFUlQoIXBhZ2VMaXN0ZW5lcnMtPmlzRW1wdHkoKSk7Ci0g
ICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygqcGFnZUxpc3RlbmVycywgY2FsbGJh
Y2spOworICAgIGlmIChMaXN0ZW5lclNldCogbGlzdGVuZXJzID0gZ2V0TGlzdGVuZXJzRm9yR2xv
YmFsT2JqZWN0KGdsb2JhbE9iamVjdCkpIHsKKyAgICAgICAgQVNTRVJUKCFsaXN0ZW5lcnMtPmlz
RW1wdHkoKSk7CisgICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygqbGlzdGVuZXJz
LCBjYWxsYmFjayk7CiAgICAgfQogCiAgICAgbV9jYWxsaW5nTGlzdGVuZXJzID0gZmFsc2U7CiB9
CiAKLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoY29uc3QgUGFn
ZUdyb3VwJiBwYWdlR3JvdXAsIGJvb2wgcGF1c2VkKQotewotICAgIHNldE1haW5UaHJlYWRDYWxs
YmFja3NQYXVzZWQocGF1c2VkKTsKLQotICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9
IHBhZ2VHcm91cC5wYWdlcygpOwotCi0gICAgSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IHBhZ2VzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gcGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBzZXRKYXZh
U2NyaXB0UGF1c2VkKCppdCwgcGF1c2VkKTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2V0SmF2YVNjcmlwdFBhdXNlZChQYWdlKiBwYWdlLCBib29sIHBhdXNlZCkKLXsKLSAgICBBU1NF
UlRfQVJHKHBhZ2UsIHBhZ2UpOwotCi0gICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhwYXVzZWQp
OwotCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZy
YW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIHNldEphdmFTY3Jp
cHRQYXVzZWQoZnJhbWUsIHBhdXNlZCk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNl
dEphdmFTY3JpcHRQYXVzZWQoRnJhbWUqIGZyYW1lLCBib29sIHBhdXNlZCkKLXsKLSAgICBBU1NF
UlRfQVJHKGZyYW1lLCBmcmFtZSk7Ci0KLSAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhl
Y3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBmcmFtZS0+c2NyaXB0KCktPnNldFBhdXNlZChwYXVzZWQpOwotCi0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Ci0gICAgaWYgKHBhdXNlZCkgewotICAgICAg
ICBkb2N1bWVudC0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygp
OwotICAgICAgICBkb2N1bWVudC0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2Jq
ZWN0OjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRv
Y3VtZW50LT5yZXN1bWVBY3RpdmVET01PYmplY3RzKCk7Ci0gICAgICAgIGRvY3VtZW50LT5yZXN1
bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKLSAgICB9Ci0KLSAgICBz
ZXRKYXZhU2NyaXB0UGF1c2VkKGZyYW1lLT52aWV3KCksIHBhdXNlZCk7Ci19Ci0KLXZvaWQgU2Ny
aXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWVWaWV3KiB2aWV3LCBib29s
IHBhdXNlZCkKLXsKLSAgICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0
IEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPiogY2hpbGRyZW4gPSB2aWV3LT5jaGlsZHJlbigpOwot
ICAgIEFTU0VSVChjaGlsZHJlbik7Ci0KLSAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGNoaWxkcmVuLT5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVm
UHRyPFdpZGdldD4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZHJlbi0+YmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIFdpZGdldCogd2lkZ2V0ID0gKCppdCkuZ2V0KCk7Ci0g
ICAgICAgIGlmICghd2lkZ2V0LT5pc1BsdWdpblZpZXcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICBzdGF0aWNfY2FzdDxQbHVnaW5WaWV3Kj4od2lkZ2V0KS0+c2V0SmF2YVNjcmlw
dFBhdXNlZChwYXVzZWQpOwotICAgIH0KLX0KLQogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3Jl
YXRlQ2FsbEZyYW1lQW5kUGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVi
dWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKIHsKICAg
ICBUZXh0UG9zaXRpb24wIHRleHRQb3NpdGlvbihXVEY6Ok9uZUJhc2VkTnVtYmVyOjpmcm9tT25l
QmFzZWRJbnQobGluZU51bWJlcikuY29udmVydFRvWmVyb0Jhc2VkKCksIFdURjo6WmVyb0Jhc2Vk
TnVtYmVyOjpiYXNlKCkpOwogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxs
RnJhbWU6OmNyZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSwgbV9jdXJyZW50Q2FsbEZyYW1lLCBzb3Vy
Y2VJRCwgdGV4dFBvc2l0aW9uKTsKLSAgICBwYXVzZUlmTmVlZGVkKHRvUGFnZShkZWJ1Z2dlckNh
bGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCkpKTsKKyAgICBwYXVzZUlmTmVlZGVkKGRlYnVn
Z2VyQ2FsbEZyYW1lLmR5bmFtaWNHbG9iYWxPYmplY3QoKSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJD
YWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVO
dW1iZXIpCkBAIC00NTEsMTUgKzMyMSwxNSBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRh
dGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJgogCiAg
ICAgVGV4dFBvc2l0aW9uMCB0ZXh0UG9zaXRpb24oV1RGOjpPbmVCYXNlZE51bWJlcjo6ZnJvbU9u
ZUJhc2VkSW50KGxpbmVOdW1iZXIpLmNvbnZlcnRUb1plcm9CYXNlZCgpLCBXVEY6Olplcm9CYXNl
ZE51bWJlcjo6YmFzZSgpKTsKICAgICBtX2N1cnJlbnRDYWxsRnJhbWUtPnVwZGF0ZShkZWJ1Z2dl
ckNhbGxGcmFtZSwgc291cmNlSUQsIHRleHRQb3NpdGlvbik7Ci0gICAgcGF1c2VJZk5lZWRlZCh0
b1BhZ2UoZGVidWdnZXJDYWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgpKSk7CisgICAgcGF1
c2VJZk5lZWRlZChkZWJ1Z2dlckNhbGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCkpOwogfQog
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKFBhZ2UqIHBhZ2UpCit2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBkeW5hbWlj
R2xvYmFsT2JqZWN0KQogewogICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOwotCi0g
ICAgaWYgKCFwYWdlIHx8ICFoYXNMaXN0ZW5lcnNJbnRlcmVzdGVkSW5QYWdlKHBhZ2UpKQorIAor
ICAgIGlmICghZ2V0TGlzdGVuZXJzRm9yR2xvYmFsT2JqZWN0KGR5bmFtaWNHbG9iYWxPYmplY3Qp
KQogICAgICAgICByZXR1cm47CiAKICAgICBib29sIHBhdXNlTm93ID0gbV9wYXVzZU9uTmV4dFN0
YXRlbWVudDsKQEAgLTQ3MSwxMSArMzQxLDkgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1
c2VJZk5lZWRlZChQYWdlKiBwYWdlKQogICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IDA7CiAgICAg
bV9wYXVzZU9uTmV4dFN0YXRlbWVudCA9IGZhbHNlOwogICAgIG1fcGF1c2VkID0gdHJ1ZTsKLSAg
ICBtX3BhdXNlZFBhZ2UgPSBwYWdlOwogCi0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJz
KCZTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRQYXVzZSwgcGFnZSk7Ci0KLSAgICBzZXRK
YXZhU2NyaXB0UGF1c2VkKHBhZ2UtPmdyb3VwKCksIHRydWUpOworICAgIGRpc3BhdGNoRnVuY3Rp
b25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UsIGR5bmFt
aWNHbG9iYWxPYmplY3QpOworICAgIGRpZFBhdXNlKGR5bmFtaWNHbG9iYWxPYmplY3QpOwogCiAg
ICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKIApAQCAtNDg0LDEy
ICszNTIsMTAgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VJZk5lZWRlZChQYWdlKiBw
YWdlKQogICAgIHdoaWxlICghbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzICYmICFsb29w
LmVuZGVkKCkpCiAgICAgICAgIGxvb3AuY3ljbGUoKTsKIAotICAgIHNldEphdmFTY3JpcHRQYXVz
ZWQocGFnZS0+Z3JvdXAoKSwgZmFsc2UpOworICAgIGRpZENvbnRpbnVlKGR5bmFtaWNHbG9iYWxP
YmplY3QpOworICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2
ZXI6OmRpc3BhdGNoRGlkQ29udGludWUsIGR5bmFtaWNHbG9iYWxPYmplY3QpOwogCiAgICAgbV9w
YXVzZWQgPSBmYWxzZTsKLSAgICBtX3BhdXNlZFBhZ2UgPSAwOwotCi0gICAgZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKCZTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZSwg
cGFnZSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudChjb25zdCBEZWJ1
Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQg
bGluZU51bWJlcikKQEAgLTU2NSwzNCArNDMxLDYgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
cmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCkKICAgICBtX3JlY29tcGlsZVRpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNG
dW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+KikKLXsKLSAgICBKU0xvY2sgbG9jayhT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgIC8vIElmIEphdmFTY3JpcHQgc3RhY2sgaXMgbm90
IGVtcHR5IHBvc3Rwb25lIHJlY29tcGlsYXRpb24uCi0gICAgaWYgKEpTRE9NV2luZG93Ojpjb21t
b25KU0dsb2JhbERhdGEoKS0+ZHluYW1pY0dsb2JhbE9iamVjdCkKLSAgICAgICAgcmVjb21waWxl
QWxsSlNGdW5jdGlvbnNTb29uKCk7Ci0gICAgZWxzZQotICAgICAgICBEZWJ1Z2dlcjo6cmVjb21w
aWxlQWxsSlNGdW5jdGlvbnMoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKLX0K
LQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkQWRkTGlzdGVuZXIoUGFnZSogcGFnZSkKLXsK
LSAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKLSAgICBwYWdlLT5zZXREZWJ1Z2dl
cih0aGlzKTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUmVtb3ZlTGlzdGVuZXIo
UGFnZSogcGFnZSkKLXsKLSAgICBpZiAoaGFzTGlzdGVuZXJzSW50ZXJlc3RlZEluUGFnZShwYWdl
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fcGF1c2VkUGFnZSA9PSBwYWdlKQotICAg
ICAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwotCi0gICAgcmVjb21w
aWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7Ci0gICAgcGFnZS0+c2V0RGVidWdnZXIoMCk7Ci19Ci0K
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVi
dWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVy
LmgKaW5kZXggZTdlODUwMmFmMjgyZjEyMjA5M2I5MjRjZWM4ZTBmZmYzY2NlOWY5ZC4uZTUzY2I0
ZDc3MWYzMTBhZDY2YzU2MDBjODRjZTY1N2ZjMjcyZTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUwLDIxICs1MCwxMiBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKIH0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7Ci1j
bGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBQYWdlOwotY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgU2Ny
aXB0RGVidWdMaXN0ZW5lcjsKIGNsYXNzIEphdmFTY3JpcHRDYWxsRnJhbWU7CiAKLWNsYXNzIFNj
cmlwdERlYnVnU2VydmVyIDogSlNDOjpEZWJ1Z2dlciB7CitjbGFzcyBTY3JpcHREZWJ1Z1NlcnZl
ciA6IHByb3RlY3RlZCBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShT
Y3JpcHREZWJ1Z1NlcnZlcik7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAg
IHN0YXRpYyBTY3JpcHREZWJ1Z1NlcnZlciYgc2hhcmVkKCk7Ci0KLSAgICB2b2lkIGFkZExpc3Rl
bmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBQYWdlKik7Ci0gICAgdm9pZCByZW1vdmVMaXN0ZW5l
cihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOwotCiAgICAgU3RyaW5nIHNldEJyZWFrcG9p
bnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYsIGludCog
YWN0dWFsTGluZU51bWJlciwgaW50KiBhY3R1YWxDb2x1bW5OdW1iZXIpOwogICAgIHZvaWQgcmVt
b3ZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZCk7CiAgICAgdm9pZCBjbGVh
ckJyZWFrcG9pbnRzKCk7CkBAIC05MCwyNiArODEsMjQgQEAgcHVibGljOgogICAgIGJvb2wgZWRp
dFNjcmlwdFNvdXJjZShjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0Nv
bnRlbnQsIFN0cmluZyYgbmV3U291cmNlT3JFcnJvck1lc3NhZ2UpOwogCiAgICAgdm9pZCByZWNv
bXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKLSAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rp
b25zKFRpbWVyPFNjcmlwdERlYnVnU2VydmVyPiogPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVj
b21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+KiA9IDApID0gMDsK
IAogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIGN1cnJlbnRDYWxsRnJhbWUoKTsKIAotcHJpdmF0
ZToKK3Byb3RlY3RlZDoKICAgICB0eXBlZGVmIEhhc2hTZXQ8U2NyaXB0RGVidWdMaXN0ZW5lcio+
IExpc3RlbmVyU2V0OwogICAgIHR5cGVkZWYgdm9pZCAoU2NyaXB0RGVidWdTZXJ2ZXI6OipKYXZh
U2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2spKFNjcmlwdERlYnVnTGlzdGVuZXIqKTsKIAogICAgIFNj
cmlwdERlYnVnU2VydmVyKCk7CiAgICAgflNjcmlwdERlYnVnU2VydmVyKCk7CiAKLSAgICBib29s
IGhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbjAmIHBv
c2l0aW9uKSBjb25zdDsKLSAgICBib29sIGhhc0xpc3RlbmVyc0ludGVyZXN0ZWRJblBhZ2UoUGFn
ZSopOworICAgIHZpcnR1YWwgTGlzdGVuZXJTZXQqIGdldExpc3RlbmVyc0Zvckdsb2JhbE9iamVj
dChKU0M6OkpTR2xvYmFsT2JqZWN0KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShK
U0M6OkpTR2xvYmFsT2JqZWN0KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KikgPSAwOwogCi0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2Vk
KGNvbnN0IFBhZ2VHcm91cCYsIGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQ
YXVzZWQoUGFnZSosIGJvb2wgcGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQo
RnJhbWUqLCBib29sIHBhdXNlZCk7Ci0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1l
VmlldyosIGJvb2wgcGF1c2VkKTsKKyAgICBib29sIGhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291
cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbjAmKSBjb25zdDsKIAotICAgIHZvaWQgZGlzcGF0Y2hG
dW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjaywgUGFnZSopOwor
ICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25D
YWxsYmFjaywgSlNDOjpKU0dsb2JhbE9iamVjdCopOwogICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlv
blRvTGlzdGVuZXJzKGNvbnN0IExpc3RlbmVyU2V0JiBsaXN0ZW5lcnMsIEphdmFTY3JpcHRFeGVj
dXRpb25DYWxsYmFjayBjYWxsYmFjayk7CiAgICAgdm9pZCBkaXNwYXRjaERpZFBhdXNlKFNjcmlw
dERlYnVnTGlzdGVuZXIqKTsKICAgICB2b2lkIGRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0RGVi
dWdMaXN0ZW5lciopOwpAQCAtMTE4LDcgKzEwNyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNy
ZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFt
ZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcik7CiAgICAgdm9pZCB1cGRhdGVD
YWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVkKGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBp
bnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpOwotICAgIHZvaWQgcGF1c2VJZk5lZWRl
ZChQYWdlKik7CisgICAgdm9pZCBwYXVzZUlmTmVlZGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5
bmFtaWNHbG9iYWxPYmplY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIGRldGFjaChKU0M6OkpTR2xv
YmFsT2JqZWN0Kik7CiAKQEAgLTEzMSw5ICsxMjAsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShjb25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50
cHRyX3Qgc291cmNlSUQsIGludCBsaW5lbm8pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJy
ZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlE
LCBpbnQgbGluZW5vKTsKIAotICAgIHZvaWQgZGlkQWRkTGlzdGVuZXIoUGFnZSopOwotICAgIHZv
aWQgZGlkUmVtb3ZlTGlzdGVuZXIoUGFnZSopOwotCiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhZ2Uq
LCBMaXN0ZW5lclNldCo+IFBhZ2VMaXN0ZW5lcnNNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGxv
bmcsIFNjcmlwdEJyZWFrcG9pbnQ+IExpbmVUb0JyZWFrcG9pbnRNYXA7CiAgICAgdHlwZWRlZiBI
YXNoTWFwPGludHB0cl90LCBMaW5lVG9CcmVha3BvaW50TWFwPiBTb3VyY2VJZFRvQnJlYWtwb2lu
dHNNYXA7CkBAIC0xNDMsNyArMTI5LDYgQEAgcHJpdmF0ZToKICAgICBQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZTsKICAgICBib29sIG1fcGF1c2VPbk5leHRT
dGF0ZW1lbnQ7CiAgICAgYm9vbCBtX3BhdXNlZDsKLSAgICBQYWdlKiBtX3BhdXNlZFBhZ2U7CiAg
ICAgYm9vbCBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHM7CiAgICAgYm9vbCBtX2JyZWFr
cG9pbnRzQWN0aXZhdGVkOwogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUqIG1fcGF1c2VPbkNhbGxG
cmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dERlYnVnU2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTJhY2QyYzY4MzEyNmRjOTg2MGMzNDUwMTcy
M2M0ZWRkMTZhODliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKworI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUg
IldvcmtlckNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoKQorICAgIDogU2NyaXB0RGVidWdT
ZXJ2ZXIoKQoreworfQorCit2b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5l
cihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgV29ya2VyQ29udGV4dCopCit7Cit9CisKK3ZvaWQgV29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIq
LCBXb3JrZXJDb250ZXh0KikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShXT1JLRVJTKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNDA2MjQzNTg2ZDk4ZGI3MGM3Y2U3Y2Y3NWQ3YzE5ODcwN2ZkY2Y2YQot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dERlYnVnU2VydmVyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV29ya2VyU2NyaXB0RGVidWdT
ZXJ2ZXJfaAorI2RlZmluZSBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcl9oCisKKyNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJTY3Jp
cHREZWJ1Z1NlcnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdvcmtlckNv
bnRleHQ7CisKK2NsYXNzIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIDogcHVibGljIFNjcmlwdERl
YnVnU2VydmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcik7CitwdWJsaWM6CisgICAgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoKTsKKyAgICB+V29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KKworICAgIHZvaWQgYWRkTGlzdGVuZXIoU2NyaXB0
RGVidWdMaXN0ZW5lciosIFdvcmtlckNvbnRleHQqKTsKKyAgICB2b2lkIHJlbW92ZUxpc3RlbmVy
KFNjcmlwdERlYnVnTGlzdGVuZXIqLCBXb3JrZXJDb250ZXh0Kik7CisKK3ByaXZhdGU6CisgICAg
dmlydHVhbCB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVyPFNjcmlwdERlYnVnU2Vy
dmVyPiopIHsgfQorICAgIHZpcnR1YWwgTGlzdGVuZXJTZXQqIGdldExpc3RlbmVyc0Zvckdsb2Jh
bE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lk
IGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSB7IH0KK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBF
TkFCTEUoV09SS0VSUykKKworI2VuZGlmIC8vIFdvcmtlclNjcmlwdERlYnVnU2VydmVyX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmYxNDlkOGY2MWMyMjA2NmQyMTgxMWQ2NzY0YmRhYzQ4MTZkZTQzMzAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNs
dWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCisjaW5j
bHVkZSAiVjhET01XaW5kb3cuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBGcmFtZSogcmV0
cmlldmVGcmFtZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQoreworICAgIGlmIChj
b250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBUZXN0IHRoYXQg
Y29udGV4dCBoYXMgYXNzb2NpYXRlZCBnbG9iYWwgZG9tIHdpbmRvdyBvYmplY3QuCisgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKKyAgICBpZiAo
Z2xvYmFsLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBnbG9iYWwgPSBWOERP
TVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRlKCksIGds
b2JhbCk7CisgICAgaWYgKGdsb2JhbC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgcmV0dXJuIFY4UHJveHk6OnJldHJpZXZlRnJhbWUoY29udGV4dCk7Cit9CisKK1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlciYgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKQoreworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoUGFnZVNjcmlwdERlYnVnU2VydmVyLCBzZXJ2ZXIsICgpKTsKKyAg
ICByZXR1cm4gc2VydmVyOworfQorCitQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OlBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcigpCisgICAgOiBTY3JpcHREZWJ1Z1NlcnZlcigpCisgICAgLCBtX3BhdXNlZFBh
Z2UoMCkKKyAgICAsIG1fZW5hYmxlZCh0cnVlKQoreworfQorCit2b2lkIFBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2Uq
IHBhZ2UpCit7CisgICAgaWYgKCFtX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIFY4
UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUocGFnZS0+bWFpbkZyYW1lKCkpOworICAg
IGlmICghcHJveHkpCisgICAgICAgIHJldHVybjsKKworICAgIHY4OjpIYW5kbGVTY29wZSBzY29w
ZTsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGRlYnVnZ2VyQ29udGV4dCA9IHY4OjpEZWJ1
Zzo6R2V0RGVidWdDb250ZXh0KCk7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29w
ZShkZWJ1Z2dlckNvbnRleHQpOworCisgICAgaWYgKCFtX2xpc3RlbmVyc01hcC5zaXplKCkpIHsK
KyAgICAgICAgZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgpOworICAgICAgICBBU1NFUlQo
IW1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPklzVW5kZWZpbmVkKCkpOworICAgICAgICB2ODo6RGVi
dWc6OlNldERlYnVnRXZlbnRMaXN0ZW5lcjIoJlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6djhEZWJ1
Z0V2ZW50Q2FsbGJhY2ssIHY4OjpFeHRlcm5hbDo6TmV3KHRoaXMpKTsKKyAgICB9CisgICAgbV9s
aXN0ZW5lcnNNYXAuc2V0KHBhZ2UsIGxpc3RlbmVyKTsKKworICAgIFY4RE9NV2luZG93U2hlbGwq
IHNoZWxsID0gcHJveHktPndpbmRvd1NoZWxsKCk7CisgICAgaWYgKCFzaGVsbC0+aXNDb250ZXh0
SW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGNvbnRleHQgPSBzaGVsbC0+Y29udGV4dCgpOworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uPiBnZXRTY3JpcHRzRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdCht
X2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJnZXRTY3JpcHRzIikp
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBjb250ZXh0LT5HZXREYXRh
KCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBnZXRTY3JpcHRzRnVuY3Rp
b24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAgaWYgKHZhbHVl
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghdmFsdWUtPklzVW5kZWZp
bmVkKCkgJiYgdmFsdWUtPklzQXJyYXkoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6QXJyYXk+IHNj
cmlwdHNBcnJheSA9IHY4OjpIYW5kbGU8djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7CisgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNjcmlwdHNBcnJheS0+TGVuZ3RoKCk7ICsraSkKKyAgICAg
ICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShsaXN0ZW5lciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChzY3JpcHRzQXJyYXktPkdldCh2ODo6SW50ZWdlcjo6TmV3KGkpKSkpOworfQorCit2
b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0
ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKCFtX2xpc3RlbmVyc01hcC5j
b250YWlucyhwYWdlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcGF1c2VkUGFnZSA9
PSBwYWdlKQorICAgICAgICBjb250aW51ZVByb2dyYW0oKTsKKworICAgIG1fbGlzdGVuZXJzTWFw
LnJlbW92ZShwYWdlKTsKKworICAgIGlmIChtX2xpc3RlbmVyc01hcC5pc0VtcHR5KCkpCisgICAg
ICAgIHY4OjpEZWJ1Zzo6U2V0RGVidWdFdmVudExpc3RlbmVyKDApOworICAgIC8vIEZJWE1FOiBS
ZW1vdmUgYWxsIGJyZWFrcG9pbnRzIHNldCBieSB0aGUgYWdlbnQuCit9CisKK3ZvaWQgUGFnZVNj
cmlwdERlYnVnU2VydmVyOjpzZXRDbGllbnRNZXNzYWdlTG9vcChQYXNzT3duUHRyPENsaWVudE1l
c3NhZ2VMb29wPiBjbGllbnRNZXNzYWdlTG9vcCkKK3sKKyAgICBtX2NsaWVudE1lc3NhZ2VMb29w
ID0gY2xpZW50TWVzc2FnZUxvb3A7Cit9CisKK1NjcmlwdERlYnVnTGlzdGVuZXIqIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6Z2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQodjg6OkhhbmRsZTx2ODo6
Q29udGV4dD4gY29udGV4dCkKK3sKKyAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7CisgICAgRnJh
bWUqIGZyYW1lID0gcmV0cmlldmVGcmFtZShjb250ZXh0KTsKKyAgICBpZiAoIWZyYW1lKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1lLT5wYWdl
KCkpOworfQorCit2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuTWVzc2FnZUxvb3BPblBh
dXNlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCit7CisgICAgdjg6OkhhbmRsZVNj
b3BlIHNjb3BlOworICAgIEZyYW1lKiBmcmFtZSA9IHJldHJpZXZlRnJhbWUoY29udGV4dCk7Cisg
ICAgbV9wYXVzZWRQYWdlID0gZnJhbWUtPnBhZ2UoKTsKKworICAgIC8vIFdhaXQgZm9yIGNvbnRp
bnVlIG9yIHN0ZXAgY29tbWFuZC4KKyAgICBtX2NsaWVudE1lc3NhZ2VMb29wLT5ydW4obV9wYXVz
ZWRQYWdlKTsKKworICAgIC8vIFRoZSBsaXN0ZW5lciBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgaW4g
dGhlIG5lc3RlZCBsb29wLgorICAgIGlmIChTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciA9
IG1fbGlzdGVuZXJzTWFwLmdldChtX3BhdXNlZFBhZ2UpKQorICAgICAgICBsaXN0ZW5lci0+ZGlk
Q29udGludWUoKTsKKyAgICAgCisgICAgbV9wYXVzZWRQYWdlID0gMDsKK30KKwordm9pZCBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OnF1aXRNZXNzYWdlTG9vcE9uUGF1c2UoKQoreworICAgIG1fY2xp
ZW50TWVzc2FnZUxvb3AtPnF1aXROb3coKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRi
MTM0YzE4ZGI4ZWI2OThlNjYwNTgzNjViNzlkOGZmZTYxZWFkZDcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAt
MCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXJfaAorI2RlZmluZSBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXJfaAorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisK
KyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZTsKKworY2xhc3MgUGFnZVNjcmlw
dERlYnVnU2VydmVyIDogcHVibGljIFNjcmlwdERlYnVnU2VydmVyIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShQYWdlU2NyaXB0RGVidWdTZXJ2ZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXImIHNoYXJlZCgpOworCisgICAgdm9pZCBhZGRMaXN0ZW5lcihT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOworICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoU2Ny
aXB0RGVidWdMaXN0ZW5lciosIFBhZ2UqKTsKKworICAgIC8vIHY4LXNwZWNpZmljIG1ldGhvZHMu
CisgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgdmFsdWUpIHsgbV9lbmFibGVkID0gdmFsdWU7IH0K
KyAgICAKKyAgICBjbGFzcyBDbGllbnRNZXNzYWdlTG9vcCB7CisgICAgcHVibGljOgorICAgICAg
ICB2aXJ0dWFsIH5DbGllbnRNZXNzYWdlTG9vcCgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
cnVuKFBhZ2UqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBxdWl0Tm93KCkgPSAwOworICAg
IH07CisgICAgdm9pZCBzZXRDbGllbnRNZXNzYWdlTG9vcChQYXNzT3duUHRyPENsaWVudE1lc3Nh
Z2VMb29wPik7CisKK3ByaXZhdGU6CisgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyKCk7CisgICAg
dmlydHVhbCB+UGFnZVNjcmlwdERlYnVnU2VydmVyKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiBnZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dCh2ODo6SGFuZGxl
PHY4OjpDb250ZXh0Pik7CisgICAgdmlydHVhbCB2b2lkIHJ1bk1lc3NhZ2VMb29wT25QYXVzZSh2
ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CisgICAgdmlydHVhbCB2b2lkIHF1aXRNZXNzYWdlTG9v
cE9uUGF1c2UoKTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxQYWdlKiwgU2NyaXB0RGVidWdMaXN0
ZW5lcio+IExpc3RlbmVyc01hcDsKKyAgICBMaXN0ZW5lcnNNYXAgbV9saXN0ZW5lcnNNYXA7Cisg
ICAgT3duUHRyPENsaWVudE1lc3NhZ2VMb29wPiBtX2NsaWVudE1lc3NhZ2VMb29wOworICAgIFBh
Z2UqIG1fcGF1c2VkUGFnZTsKKyAgICBib29sIG1fZW5hYmxlZDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisj
ZW5kaWYgLy8gUGFnZVNjcmlwdERlYnVnU2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBhMmNmMzBhMjBjMWExOTJiY2Ji
YjFlNmVlMmU3M2I4YjEzMDA2ZTg1Li41NzU4NjM5ZGEwZDFiMGJkMjQ3ZjkyMDEwYTI4YjczMjEx
NjZiNDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1
Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCkBAIC0zNCwxMyArMzQsOSBAQAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQogCiAjaW5jbHVkZSAiRGVidWdnZXJTY3JpcHRTb3VyY2UuaCIKLSNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Zy5oIgotI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgs
ODcgKzU0LDEyIEBAIHByaXZhdGU6CiAKIH0KIAotc3RhdGljIEZyYW1lKiByZXRyaWV2ZUZyYW1l
KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCi17Ci0gICAgaWYgKGNvbnRleHQuSXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIFRlc3QgdGhhdCBjb250ZXh0IGhh
cyBhc3NvY2lhdGVkIGdsb2JhbCBkb20gd2luZG93IG9iamVjdC4KLSAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwotICAgIGlmIChnbG9iYWwuSXNF
bXB0eSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIGdsb2JhbCA9IFY4RE9NV3JhcHBlcjo6
bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgZ2xvYmFsKTsKLSAg
ICBpZiAoZ2xvYmFsLklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4g
VjhQcm94eTo6cmV0cmlldmVGcmFtZShjb250ZXh0KTsKLX0KLQotU2NyaXB0RGVidWdTZXJ2ZXIm
IFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U2NyaXB0RGVidWdTZXJ2ZXIsIHNlcnZlciwgKCkpOwotICAgIHJldHVybiBzZXJ2ZXI7Ci19Ci0K
IFNjcmlwdERlYnVnU2VydmVyOjpTY3JpcHREZWJ1Z1NlcnZlcigpCiAgICAgOiBtX3BhdXNlT25F
eGNlcHRpb25zU3RhdGUoRG9udFBhdXNlT25FeGNlcHRpb25zKQotICAgICwgbV9wYXVzZWRQYWdl
KDApCi0gICAgLCBtX2VuYWJsZWQodHJ1ZSkKICAgICAsIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQo
dHJ1ZSkKIHsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0
RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2VuYWJs
ZWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0
cmlldmUocGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGlmICghcHJveHkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6TG9jYWw8djg6OkNvbnRl
eHQ+IGRlYnVnZ2VyQ29udGV4dCA9IHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCk7Ci0gICAg
djg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29wZShkZWJ1Z2dlckNvbnRleHQpOwotCi0gICAg
aWYgKCFtX2xpc3RlbmVyc01hcC5zaXplKCkpIHsKLSAgICAgICAgZW5zdXJlRGVidWdnZXJTY3Jp
cHRDb21waWxlZCgpOwotICAgICAgICBBU1NFUlQoIW1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPklz
VW5kZWZpbmVkKCkpOwotICAgICAgICB2ODo6RGVidWc6OlNldERlYnVnRXZlbnRMaXN0ZW5lcjIo
JlNjcmlwdERlYnVnU2VydmVyOjp2OERlYnVnRXZlbnRDYWxsYmFjayk7Ci0gICAgfQotICAgIG1f
bGlzdGVuZXJzTWFwLnNldChwYWdlLCBsaXN0ZW5lcik7Ci0KLSAgICBWOERPTVdpbmRvd1NoZWxs
KiBzaGVsbCA9IHByb3h5LT53aW5kb3dTaGVsbCgpOwotICAgIGlmICghc2hlbGwtPmlzQ29udGV4
dEluaXRpYWxpemVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiBjb250ZXh0ID0gc2hlbGwtPmNvbnRleHQoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvbj4gZ2V0U2NyaXB0c0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3Qo
bV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZ2V0U2NyaXB0cyIp
KSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgY29udGV4dC0+R2V0RGF0
YSgpIH07Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0
aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwotICAgIGlmICh2YWx1
ZS5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoIXZhbHVlLT5Jc1VuZGVm
aW5lZCgpICYmIHZhbHVlLT5Jc0FycmF5KCkpOwotICAgIHY4OjpIYW5kbGU8djg6OkFycmF5PiBz
Y3JpcHRzQXJyYXkgPSB2ODo6SGFuZGxlPHY4OjpBcnJheT46OkNhc3QodmFsdWUpOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBzY3JpcHRzQXJyYXktPkxlbmd0aCgpOyArK2kpCi0gICAg
ICAgIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UobGlzdGVuZXIsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3Qoc2NyaXB0c0FycmF5LT5HZXQodjg6OkludGVnZXI6Ok5ldyhpKSkpKTsKLX0KLQot
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5l
ciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2xpc3RlbmVyc01hcC5jb250
YWlucyhwYWdlKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fcGF1c2VkUGFnZSA9PSBw
YWdlKQotICAgICAgICBjb250aW51ZVByb2dyYW0oKTsKLQotICAgIG1fbGlzdGVuZXJzTWFwLnJl
bW92ZShwYWdlKTsKLQotICAgIGlmIChtX2xpc3RlbmVyc01hcC5pc0VtcHR5KCkpCi0gICAgICAg
IHY4OjpEZWJ1Zzo6U2V0RGVidWdFdmVudExpc3RlbmVyKDApOwotICAgIC8vIEZJWE1FOiBSZW1v
dmUgYWxsIGJyZWFrcG9pbnRzIHNldCBieSB0aGUgYWdlbnQuCi19Ci0KIFN0cmluZyBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBT
Y3JpcHRCcmVha3BvaW50JiBzY3JpcHRCcmVha3BvaW50LCBpbnQqIGFjdHVhbExpbmVOdW1iZXIs
IGludCogYWN0dWFsQ29sdW1uTnVtYmVyKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsK
QEAgLTIyNSw3ICsxNDYsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzZXRQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUgcGF1c2VPbgogCiB2b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpzZXRQYXVzZU9uTmV4dFN0YXRlbWVudChib29sIHBhdXNlKQogewotICAg
IGlmIChtX3BhdXNlZFBhZ2UpCisgICAgaWYgKGlzUGF1c2VkKCkpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAocGF1c2UpCiAgICAgICAgIHY4OjpEZWJ1Zzo6RGVidWdCcmVhaygpOwpAQCAtMjM1
LDE3ICsxNTYsMTUgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0UGF1c2VPbk5leHRTdGF0
ZW1lbnQoYm9vbCBwYXVzZSkKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFt
KCkKIHsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiwgY2FsbGJhY2tUZW1wbGF0ZSwgKCkpOwotCiAgICAgaWYgKCFtX2JyZWFrcG9p
bnRzQWN0aXZhdGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXY4OjpDb250ZXh0OjpJ
bkNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNhbGxiYWNrVGVtcGxhdGUu
SXNFbXB0eSgpKSB7Ci0gICAgICAgIGNhbGxiYWNrVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCkpOwot
ICAgICAgICBjYWxsYmFja1RlbXBsYXRlLT5TZXRDYWxsSGFuZGxlcigmU2NyaXB0RGVidWdTZXJ2
ZXI6OmJyZWFrUHJvZ3JhbUNhbGxiYWNrKTsKKyAgICBpZiAobV9icmVha1Byb2dyYW1DYWxsYmFj
a1RlbXBsYXRlLmdldCgpLklzRW1wdHkoKSkgeworICAgICAgICBtX2JyZWFrUHJvZ3JhbUNhbGxi
YWNrVGVtcGxhdGUuc2V0KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoKSk7CisgICAgICAgIG1f
YnJlYWtQcm9ncmFtQ2FsbGJhY2tUZW1wbGF0ZS5nZXQoKS0+U2V0Q2FsbEhhbmRsZXIoJlNjcmlw
dERlYnVnU2VydmVyOjpicmVha1Byb2dyYW1DYWxsYmFjaywgdjg6OkV4dGVybmFsOjpOZXcodGhp
cykpOwogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6
Q29udGV4dDo6R2V0Q3VycmVudCgpOwpAQCAtMjUzLDIxICsxNzIsMjIgQEAgdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYXVz
ZWRQYWdlQ29udGV4dCA9ICpjb250ZXh0OwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBi
cmVha1Byb2dyYW1GdW5jdGlvbiA9IGNhbGxiYWNrVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGJyZWFrUHJvZ3JhbUZ1bmN0aW9uID0gbV9icmVh
a1Byb2dyYW1DYWxsYmFja1RlbXBsYXRlLmdldCgpLT5HZXRGdW5jdGlvbigpOwogICAgIHY4OjpE
ZWJ1Zzo6Q2FsbChicmVha1Byb2dyYW1GdW5jdGlvbik7CiAgICAgbV9wYXVzZWRQYWdlQ29udGV4
dC5DbGVhcigpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjb250aW51ZVByb2dyYW0o
KQogewotICAgIGlmIChtX3BhdXNlZFBhZ2UpCi0gICAgICAgIG1fY2xpZW50TWVzc2FnZUxvb3At
PnF1aXROb3coKTsKLSAgICBkaWRSZXN1bWUoKTsKKyAgICBpZiAoaXNQYXVzZWQoKSkKKyAgICAg
ICAgcXVpdE1lc3NhZ2VMb29wT25QYXVzZSgpOworICAgIG1fY3VycmVudENhbGxGcmFtZS5jbGVh
cigpOworICAgIG1fZXhlY3V0aW9uU3RhdGUuY2xlYXIoKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1
Z1NlcnZlcjo6c3RlcEludG9TdGF0ZW1lbnQoKQogewotICAgIEFTU0VSVChtX3BhdXNlZFBhZ2Up
OworICAgIEFTU0VSVChpc1BhdXNlZCgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4g
ZnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0
LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJzdGVwSW50b1N0YXRlbWVudCIpKSk7CiAgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9
OwogICAgIGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwpA
QCAtMjc2LDcgKzE5Niw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVt
ZW50KCkKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c3RlcE92ZXJTdGF0ZW1lbnQoKQogewot
ICAgIEFTU0VSVChtX3BhdXNlZFBhZ2UpOworICAgIEFTU0VSVChpc1BhdXNlZCgpKTsKICAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9u
Pjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJzdGVw
T3ZlclN0YXRlbWVudCIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsg
bV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9OwogICAgIGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJT
Y3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwpAQCAtMjg1LDcgKzIwNSw3IEBAIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnN0ZXBPdmVyU3RhdGVtZW50KCkKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
c3RlcE91dE9mRnVuY3Rpb24oKQogewotICAgIEFTU0VSVChtX3BhdXNlZFBhZ2UpOworICAgIEFT
U0VSVChpc1BhdXNlZCgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24g
PSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5H
ZXQodjg6OlN0cmluZzo6TmV3KCJzdGVwT3V0T2ZGdW5jdGlvbiIpKSk7CiAgICAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9OwogICAgIGZ1
bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwpAQCAtMjk4LDcg
KzIxOCw3IEBAIGJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRTb3VyY2UoY29uc3Qg
U3RyaW5nJiBzb3VyY2VJRCwgY29uc3QgU3RyaW5nJiBuCiAgICAgdjg6OkhhbmRsZVNjb3BlIHNj
b3BlOwogCiAgICAgT3duUHRyPHY4OjpDb250ZXh0OjpTY29wZT4gY29udGV4dFNjb3BlOwotICAg
IGlmICghbV9wYXVzZWRQYWdlKQorICAgIGlmICghaXNQYXVzZWQoKSkKICAgICAgICAgY29udGV4
dFNjb3BlLnNldChuZXcgdjg6OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250
ZXh0KCkpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpM
b2NhbDx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6
U3RyaW5nOjpOZXcoImVkaXRTY3JpcHRTb3VyY2UiKSkpOwpAQCAtMzMzLDExICsyNTMsNiBAQCBQ
YXNzUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IFNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50
Q2FsbEZyYW1lKCkKICAgICByZXR1cm4gbV9jdXJyZW50Q2FsbEZyYW1lOwogfQogCi12b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpzZXRFbmFibGVkKGJvb2wgdmFsdWUpCi17Ci0gICAgIG1fZW5hYmxl
ZCA9IHZhbHVlOwotfQotCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjppbnRlcnJ1cHRBbmRSdW4o
UGFzc093blB0cjxUYXNrPiB0YXNrKQogewogICAgIHY4OjpEZWJ1Zzo6RGVidWdCcmVha0ZvckNv
bW1hbmQobmV3IENsaWVudERhdGFJbXBsKHRhc2spKTsKQEAgLTM0OCw0NCArMjYzLDQyIEBAIHZv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1blBlbmRpbmdUYXNrcygpCiAgICAgdjg6OkRlYnVnOjpQ
cm9jZXNzRGVidWdNZXNzYWdlcygpOwogfQogCitzdGF0aWMgU2NyaXB0RGVidWdTZXJ2ZXIqIHRv
U2NyaXB0RGVidWdTZXJ2ZXIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEpCit7CisgICAgdm9p
ZCogcCA9IHY4OjpIYW5kbGU8djg6OkV4dGVybmFsPjo6Q2FzdChkYXRhKS0+VmFsdWUoKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8U2NyaXB0RGVidWdTZXJ2ZXIqPihwKTsKK30KKwogdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW1DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIEFTU0VSVCgyID09IGFyZ3MuTGVuZ3Ro
KCkpOwotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5icmVha1Byb2dyYW0odjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CisgICAgCisgICAgU2NyaXB0RGVidWdT
ZXJ2ZXIqIHRoaXNQdHIgPSB0b1NjcmlwdERlYnVnU2VydmVyKGFyZ3MuRGF0YSgpKTsKKyAgICB0
aGlzUHRyLT5icmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBd
KSk7CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6YnJlYWtQcm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9uU3RhdGUp
CiB7CiAgICAgLy8gRG9uJ3QgYWxsb3cgbmVzdGVkIGJyZWFrcy4KLSAgICBpZiAobV9wYXVzZWRQ
YWdlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBGcmFtZSogZnJhbWUgPSByZXRyaWV2ZUZyYW1l
KG1fcGF1c2VkUGFnZUNvbnRleHQpOwotICAgIGlmICghZnJhbWUpCisgICAgaWYgKGlzUGF1c2Vk
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVy
ID0gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1lLT5wYWdlKCkpOworICAgIFNjcmlwdERlYnVnTGlz
dGVuZXIqIGxpc3RlbmVyID0gZ2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQobV9wYXVzZWRQYWdl
Q29udGV4dCk7CiAgICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9l
eGVjdXRpb25TdGF0ZS5zZXQoZXhlY3V0aW9uU3RhdGUpOwotICAgIG1fcGF1c2VkUGFnZSA9IGZy
YW1lLT5wYWdlKCk7CiAgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9IFNj
cmlwdFN0YXRlOjpmb3JDb250ZXh0KG1fcGF1c2VkUGFnZUNvbnRleHQpOwogICAgIGxpc3RlbmVy
LT5kaWRQYXVzZShjdXJyZW50Q2FsbEZyYW1lU3RhdGUpOwogCi0gICAgLy8gV2FpdCBmb3IgY29u
dGludWUgb3Igc3RlcCBjb21tYW5kLgotICAgIG1fY2xpZW50TWVzc2FnZUxvb3AtPnJ1bihtX3Bh
dXNlZFBhZ2UpOwotICAgIEFTU0VSVCghbV9wYXVzZWRQYWdlKTsKLQotICAgIC8vIFRoZSBsaXN0
ZW5lciBtYXkgaGF2ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5lc3RlZCBsb29wLgotICAgIGlmIChT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+
cGFnZSgpKSkKLSAgICAgICAgbGlzdGVuZXItPmRpZENvbnRpbnVlKCk7CisgICAgcnVuTWVzc2Fn
ZUxvb3BPblBhdXNlKG1fcGF1c2VkUGFnZUNvbnRleHQpOwogfQogCiB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjp2OERlYnVnRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWls
cyYgZXZlbnREZXRhaWxzKQogewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5oYW5k
bGVWOERlYnVnRXZlbnQoZXZlbnREZXRhaWxzKTsKKyAgICBTY3JpcHREZWJ1Z1NlcnZlciogdGhp
c1B0ciA9IHRvU2NyaXB0RGVidWdTZXJ2ZXIoZXZlbnREZXRhaWxzLkdldENhbGxiYWNrRGF0YSgp
KTsKKyAgICB0aGlzUHRyLT5oYW5kbGVWOERlYnVnRXZlbnQoZXZlbnREZXRhaWxzKTsKIH0KIAog
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1
Zzo6RXZlbnREZXRhaWxzJiBldmVudERldGFpbHMpCkBAIC00MDQsMzEgKzMxNywyOCBAQCB2b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpF
dmVudERldGFpbHMmIGV2ZW50RAogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGV2ZW50Q29u
dGV4dCA9IGV2ZW50RGV0YWlscy5HZXRFdmVudENvbnRleHQoKTsKICAgICBBU1NFUlQoIWV2ZW50
Q29udGV4dC5Jc0VtcHR5KCkpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gcmV0cmlldmVGcmFtZShl
dmVudENvbnRleHQpOwotICAgIGlmIChmcmFtZSkgewotICAgICAgICBTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiBsaXN0ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKTsKLSAgICAg
ICAgaWYgKGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0g
ICAgICAgICAgICBpZiAoZXZlbnQgPT0gdjg6OkFmdGVyQ29tcGlsZSkgewotICAgICAgICAgICAg
ICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0Nv
bnRleHQoKSk7Ci0gICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IG9uQWZ0
ZXJDb21waWxlRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVn
Z2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJnZXRBZnRlckNvbXBpbGVTY3Jp
cHQiKSkpOwotICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7
IGV2ZW50RGV0YWlscy5HZXRFdmVudERhdGEoKSB9OwotICAgICAgICAgICAgICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSA9IG9uQWZ0ZXJDb21waWxlRnVuY3Rpb24tPkNhbGwobV9kZWJ1
Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHZhbHVl
LT5Jc09iamVjdCgpKTsKLSAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOwotICAgICAgICAgICAg
ICAgIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UobGlzdGVuZXIsIG9iamVjdCk7Ci0gICAgICAgICAg
ICB9IGVsc2UgaWYgKGV2ZW50ID09IHY4OjpCcmVhayB8fCBldmVudCA9PSB2ODo6RXhjZXB0aW9u
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKGV2ZW50ID09IHY4OjpFeGNlcHRpb24pIHsKLSAgICAg
ICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlID0gdjg6
OlN0YWNrVHJhY2U6OkN1cnJlbnRTdGFja1RyYWNlKDEpOwotICAgICAgICAgICAgICAgICAgICAv
LyBTdGFjayB0cmFjZSBpcyBlbXB0eSBpbiBjYXNlIG9mIHN5bnRheCBlcnJvci4gU2lsZW50bHkg
Y29udGludWUgZXhlY3V0aW9uIGluIHN1Y2ggY2FzZXMuCi0gICAgICAgICAgICAgICAgICAgIGlm
ICghc3RhY2tUcmFjZS0+R2V0RnJhbWVDb3VudCgpKQotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1fcGF1c2VkUGFn
ZUNvbnRleHQgPSAqZXZlbnRDb250ZXh0OwotICAgICAgICAgICAgICAgIGJyZWFrUHJvZ3JhbShl
dmVudERldGFpbHMuR2V0RXhlY3V0aW9uU3RhdGUoKSk7Ci0gICAgICAgICAgICAgICAgbV9wYXVz
ZWRQYWdlQ29udGV4dC5DbGVhcigpOworICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVy
ID0gZ2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQoZXZlbnRDb250ZXh0KTsKKyAgICBpZiAobGlz
dGVuZXIpIHsKKyAgICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgICAgICBpZiAoZXZl
bnQgPT0gdjg6OkFmdGVyQ29tcGlsZSkgeworICAgICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3Bl
IGNvbnRleHRTY29wZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKTsKKyAgICAgICAgICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBvbkFmdGVyQ29tcGlsZUZ1bmN0aW9uID0gdjg6Okxv
Y2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpT
dHJpbmc6Ok5ldygiZ2V0QWZ0ZXJDb21waWxlU2NyaXB0IikpKTsKKyAgICAgICAgICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IGV2ZW50RGV0YWlscy5HZXRFdmVudERhdGEoKSB9
OworICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gb25BZnRlckNvbXBp
bGVGdW5jdGlvbi0+Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICAg
ICAgICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7CisgICAgICAgICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUp
OworICAgICAgICAgICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShsaXN0ZW5lciwgb2JqZWN0KTsK
KyAgICAgICAgfSBlbHNlIGlmIChldmVudCA9PSB2ODo6QnJlYWsgfHwgZXZlbnQgPT0gdjg6OkV4
Y2VwdGlvbikgeworICAgICAgICAgICAgaWYgKGV2ZW50ID09IHY4OjpFeGNlcHRpb24pIHsKKyAg
ICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UgPSB2ODo6
U3RhY2tUcmFjZTo6Q3VycmVudFN0YWNrVHJhY2UoMSk7CisgICAgICAgICAgICAgICAgLy8gU3Rh
Y2sgdHJhY2UgaXMgZW1wdHkgaW4gY2FzZSBvZiBzeW50YXggZXJyb3IuIFNpbGVudGx5IGNvbnRp
bnVlIGV4ZWN1dGlvbiBpbiBzdWNoIGNhc2VzLgorICAgICAgICAgICAgICAgIGlmICghc3RhY2tU
cmFjZS0+R2V0RnJhbWVDb3VudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAqZXZlbnRDb250
ZXh0OworICAgICAgICAgICAgYnJlYWtQcm9ncmFtKGV2ZW50RGV0YWlscy5HZXRFeGVjdXRpb25T
dGF0ZSgpKTsKKyAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuQ2xlYXIoKTsKICAgICAg
ICAgfQogICAgIH0KIH0KQEAgLTQ1NSwxMSArMzY1LDkgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6ZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgpCiAgICAgfQogfQogCi12b2lkIFNjcmlw
dERlYnVnU2VydmVyOjpkaWRSZXN1bWUoKQorYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aXNQYXVz
ZWQoKQogewotICAgIG1fY3VycmVudENhbGxGcmFtZS5jbGVhcigpOwotICAgIG1fZXhlY3V0aW9u
U3RhdGUuY2xlYXIoKTsKLSAgICBtX3BhdXNlZFBhZ2UgPSAwOworICAgIHJldHVybiAhbV9leGVj
dXRpb25TdGF0ZS5nZXQoKS5Jc0VtcHR5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4
IGVlOTJkMDg3Y2VhOTNkOTZkZmQ5ZGRmMDdlMjlkMjJkY2NmOTk2NmEuLjE1MDA0ZWEzNzE3ZGU2
N2MwYTBhY2U4OGUzYjA5ODAyNzAwYjAwMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtNDUsMTcgKzQ1LDExIEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgUGFnZTsKIGNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXI7CiAK
IGNsYXNzIFNjcmlwdERlYnVnU2VydmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3Jp
cHREZWJ1Z1NlcnZlcik7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFNjcmlwdERlYnVnU2VydmVyJiBz
aGFyZWQoKTsKLQotICAgIHZvaWQgYWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciosIFBh
Z2UqKTsKLSAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBQYWdl
Kik7Ci0KICAgICBTdHJpbmcgc2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBj
b25zdCBTY3JpcHRCcmVha3BvaW50JiwgaW50KiBhY3R1YWxMaW5lTnVtYmVyLCBpbnQqIGFjdHVh
bENvbHVtbk51bWJlcik7CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYg
YnJlYWtwb2ludElkKTsKICAgICB2b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKQEAgLTgzLDIxICs3
Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpIHsg
fQogICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdTZXJ2
ZXI+KiA9IDApIHsgfQogCi0gICAgdm9pZCBwYWdlQ3JlYXRlZChQYWdlKikgeyB9Ci0KLSAgICAv
LyB2OC1zcGVjaWZpYyBtZXRob2RzLgotICAgIGNsYXNzIENsaWVudE1lc3NhZ2VMb29wIHsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgfkNsaWVudE1lc3NhZ2VMb29wKCkgeyB9Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBydW4oUGFnZSopID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHF1
aXROb3coKSA9IDA7Ci0gICAgfTsKLSAgICB2b2lkIHNldENsaWVudE1lc3NhZ2VMb29wKFBhc3NP
d25QdHI8Q2xpZW50TWVzc2FnZUxvb3A+IGNsaWVudE1lc3NhZ2VMb29wKSB7IG1fY2xpZW50TWVz
c2FnZUxvb3AgPSBjbGllbnRNZXNzYWdlTG9vcDsgfQotCiAgICAgUGFzc1JlZlB0cjxKYXZhU2Ny
aXB0Q2FsbEZyYW1lPiBjdXJyZW50Q2FsbEZyYW1lKCk7CiAKLSAgICB2b2lkIHNldEVuYWJsZWQo
Ym9vbCk7Ci0KICAgICBjbGFzcyBUYXNrIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwg
flRhc2soKSB7IH0KQEAgLTEwNiw5ICs4NywxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQg
aW50ZXJydXB0QW5kUnVuKFBhc3NPd25QdHI8VGFzaz4pOwogICAgIHZvaWQgcnVuUGVuZGluZ1Rh
c2tzKCk7CiAKLXByaXZhdGU6Citwcm90ZWN0ZWQ6CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXIoKTsK
ICAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFNjcmlwdERl
YnVnTGlzdGVuZXIqIGdldERlYnVnTGlzdGVuZXJGb3JDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJ1bk1lc3NhZ2VMb29wT25QYXVzZSh2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBxdWl0TWVzc2FnZUxv
b3BPblBhdXNlKCkgPSAwOwogCiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBicmVh
a1Byb2dyYW1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKTsKICAgICB2b2lkIGJy
ZWFrUHJvZ3JhbSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGV4ZWN1dGlvblN0YXRlKTsKQEAgLTEx
OSwyMCArMTA0LDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaERpZFBhcnNlU291cmNl
KFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHNv
dXJjZU9iamVjdCk7CiAKICAgICB2b2lkIGVuc3VyZURlYnVnZ2VyU2NyaXB0Q29tcGlsZWQoKTsK
LSAgICB2b2lkIGRpZFJlc3VtZSgpOworICAgIAorICAgIGJvb2wgaXNQYXVzZWQoKTsKIAotICAg
IHR5cGVkZWYgSGFzaE1hcDxQYWdlKiwgU2NyaXB0RGVidWdMaXN0ZW5lcio+IExpc3RlbmVyc01h
cDsKLSAgICBMaXN0ZW5lcnNNYXAgbV9saXN0ZW5lcnNNYXA7CiAgICAgUGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSBtX3BhdXNlT25FeGNlcHRpb25zU3RhdGU7CiAgICAgT3duSGFuZGxlPHY4OjpPYmpl
Y3Q+IG1fZGVidWdnZXJTY3JpcHQ7CiAgICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IG1f
Y3VycmVudENhbGxGcmFtZTsKICAgICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9leGVjdXRpb25T
dGF0ZTsKLSAgICBPd25QdHI8Q2xpZW50TWVzc2FnZUxvb3A+IG1fY2xpZW50TWVzc2FnZUxvb3A7
Ci0gICAgUGFnZSogbV9wYXVzZWRQYWdlOwogICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbV9w
YXVzZWRQYWdlQ29udGV4dDsKLSAgICBib29sIG1fZW5hYmxlZDsKIAogICAgIGJvb2wgbV9icmVh
a3BvaW50c0FjdGl2YXRlZDsKKyAgICBPd25IYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1f
YnJlYWtQcm9ncmFtQ2FsbGJhY2tUZW1wbGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERl
YnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERl
YnVnU2VydmVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZTJhY2QyYzY4MzEyNmRjOTg2MGMzNDUwMTcyM2M0
ZWRkMTZhODliCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKworI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoV09SS0VSUykKKworI2luY2x1ZGUgIldv
cmtlckNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoKQorICAgIDogU2NyaXB0RGVidWdTZXJ2
ZXIoKQoreworfQorCit2b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcihT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiwgV29ya2VyQ29udGV4dCopCit7Cit9CisKK3ZvaWQgV29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBX
b3JrZXJDb250ZXh0KikKK3sKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgK
bmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZmRjNDdhY2RmOTcxNWM0MTk0ODk0MjdiMWEzOTdmM2E4MDlkNTA0ZAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERl
YnVnU2VydmVyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV29ya2VyU2NyaXB0RGVidWdTZXJ2
ZXJfaAorI2RlZmluZSBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcl9oCisKKyNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJTY3JpcHRE
ZWJ1Z1NlcnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFdvcmtlckNvbnRl
eHQ7CisKK2NsYXNzIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIDogcHVibGljIFNjcmlwdERlYnVn
U2VydmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
cik7CitwdWJsaWM6CisgICAgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoKTsKKyAgICB+V29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KKworICAgIHZvaWQgYWRkTGlzdGVuZXIoU2NyaXB0RGVi
dWdMaXN0ZW5lciosIFdvcmtlckNvbnRleHQqKTsKKyAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKFNj
cmlwdERlYnVnTGlzdGVuZXIqLCBXb3JrZXJDb250ZXh0Kik7CisKK3ByaXZhdGU6CisgICAgdmly
dHVhbCBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBnZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dCh2ODo6
SGFuZGxlPHY4OjpDb250ZXh0PikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5N
ZXNzYWdlTG9vcE9uUGF1c2Uodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4pIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBxdWl0TWVzc2FnZUxvb3BPblBhdXNlKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5B
QkxFKFdPUktFUlMpCisKKyNlbmRpZiAvLyBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcl9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCBhNmYxMDU1ZjA0MTllZGYzN2Y0YjVkMDEw
YTAzZjhmZjliYjdkZjMyLi4zZGJhY2IyOGVjMTQzNDc2MGUyYmFiNjVlMDc2MGU0N2E0ZTA3OGMw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVk
ZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlNjcmlwdERlYnVn
U2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTEwOSw3ICsxMTAsOCBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmN1cnJlbnRDYWxsRnJh
bWVDYWxsYmFjayhjb25zdCB2ODo6QQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LmN1cnJlbnRDYWxsRnJhbWUoKSIp
OwotICAgIHJldHVybiB0b1Y4KFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5jdXJyZW50Q2Fs
bEZyYW1lKCkpOworICAgIEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCA9IFY4SW5qZWN0ZWRTY3Jp
cHRIb3N0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdG9WOChob3N0LT5k
ZWJ1Z2dlckFnZW50KCktPnNjcmlwdERlYnVnU2VydmVyKCkuY3VycmVudENhbGxGcmFtZSgpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmgKaW5k
ZXggYjU5MmQ5YmFlMDg1N2RkYjE1ZGRmYTVlY2QwMjY3NWNmY2FhNThmNC4uODlhNTAzMWU3YjYz
OGRjNTljMGM4MDQ2YWY1YjA5Njg1Yzk1M2NhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBJbnNwZWN0
b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CitjbGFzcyBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7CiBjbGFzcyBOb2RlOwpAQCAtNjgsNiArNjksOSBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKQogICAgICAgICAgICAgLCBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQqIGRvbVN0b3JhZ2VBZ2VudAogI2VuZGlmCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCisgICAgICAgICAgICAsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQK
KyNlbmRpZgogICAgICAgICApCiAgICAgewogICAgICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5z
cGVjdG9yQWdlbnQ7CkBAIC03OCw2ICs4Miw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRE9NX1NU
T1JBR0UpCiAgICAgICAgIG1fZG9tU3RvcmFnZUFnZW50ID0gZG9tU3RvcmFnZUFnZW50OwogI2Vu
ZGlmCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgICAgIG1fZGVidWdnZXJB
Z2VudCA9IGRlYnVnZ2VyQWdlbnQ7CisjZW5kaWYKICAgICB9CiAgICAgdm9pZCBzZXRGcm9udGVu
ZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpIHsgbV9mcm9udGVuZCA9IGZyb250ZW5kOyB9
CiAgICAgdm9pZCBjbGVhckZyb250ZW5kKCkgeyBtX2Zyb250ZW5kID0gMDsgfQpAQCAtMTA1LDYg
KzExMiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENyZWF0ZVdvcmtlcihsb25nIGlkLCBjb25z
dCBTdHJpbmcmIHVybCwgYm9vbCBpc1NoYXJlZFdvcmtlcik7CiAgICAgdm9pZCBkaWREZXN0cm95
V29ya2VyKGxvbmcgaWQpOwogI2VuZGlmCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCgpIHsgcmV0dXJuIG1f
ZGVidWdnZXJBZ2VudDsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRTY3JpcHRI
b3N0KCk7CkBAIC0xMTcsNiArMTI3LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpCiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBtX2RvbVN0b3JhZ2VBZ2VudDsKICNl
bmRpZgorI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKKyNlbmRpZgogICAgIEluc3BlY3RvckZyb250ZW5k
KiBtX2Zyb250ZW5kOwogICAgIGxvbmcgbV9sYXN0V29ya2VySWQ7CiAgICAgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+IG1faW5zcGVjdGVkTm9kZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcAppbmRleCA0MjZjNWYyYmE1ZjA5OWNlNGI3YzZjOWE0YWFjOTRlNGY2
OTUyNTUxLi5iZWFjNTA3ZGE2ZDkyZmUwZDQ3NjMwZjk4YTA1NjVmNDA2OWMwNThhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTEsNiArMSw3IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3
ZWJraXRAbWF0dGxpbGVrLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00
NCw3ICs0NSw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50Lmgi
Ci0jaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAi
SW5zcGVjdG9yV29ya2VyUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRz
LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCiAj
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxs
LmgiCiAjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCkBAIC0xMTEsNyArMTEyLDcgQEAgSW5zcGVj
dG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xp
ZW50LCBJbmplY3RlZFNjcmkKICAgICAsIG1fcmVzb3VyY2VBZ2VudChJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlLCBtX3N0YXRl
LmdldCgpKSkKICAgICAsIG1fY29uc29sZUFnZW50KG5ldyBJbnNwZWN0b3JDb25zb2xlQWdlbnQo
bV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCB0aGlzLCBtX3N0YXRlLmdldCgpLCBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIsIG1fZG9tQWdlbnQuZ2V0KCkpKQogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQotICAgICwgbV9kZWJ1Z2dlckFnZW50KEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2Us
IGluamVjdGVkU2NyaXB0TWFuYWdlcikpCisgICAgLCBtX2RlYnVnZ2VyQWdlbnQoUGFnZURlYnVn
Z2VyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0
KCksIHBhZ2UsIGluamVjdGVkU2NyaXB0TWFuYWdlcikpCiAgICAgLCBtX2Jyb3dzZXJEZWJ1Z2dl
ckFnZW50KEluc3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50
aW5nQWdlbnRzLmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX2RvbUFnZW50LmdldCgpLCBtX2RlYnVn
Z2VyQWdlbnQuZ2V0KCksIHRoaXMpKQogICAgICwgbV9wcm9maWxlckFnZW50KEluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fY29uc29s
ZUFnZW50LmdldCgpLCBwYWdlLCBtX3N0YXRlLmdldCgpKSkKICNlbmRpZgpAQCAtMTMwLDYgKzEz
MSw5IEBAIEluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChQYWdlKiBwYWdlLCBJbnNwZWN0
b3JDbGllbnQqIGNsaWVudCwgSW5qZWN0ZWRTY3JpCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQog
ICAgICAgICAsIG1fZG9tU3RvcmFnZUFnZW50LmdldCgpCiAjZW5kaWYKKyNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKKyAgICAgICAgLCBtX2RlYnVnZ2VyQWdlbnQuZ2V0KCkKKyNlbmRp
ZgogICAgICk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCBkNDU5NTNhMTdhMDljNmQzZmY0NzY0YmZjZTVlOTUy
MDEwZGUyNzA1Li41NmJjN2I3MmI2NDE2OWQ1ZWZmNmIwNDI1MDViOTcwYmJjZTA0MmIzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTQ4LDE1ICs0OCw5IEBAIHN0YXRpYyBjb25zdCBjaGFyIGRlYnVnZ2VyRW5hYmxlZFtdID0g
ImRlYnVnZ2VyRW5hYmxlZCI7CiBzdGF0aWMgY29uc3QgY2hhciBqYXZhU2NyaXB0QnJlYWtwb2lu
dHNbXSA9ICJqYXZhU2NyaXB0QnJlYWtvcGludHMiOwogfTsKIAotUGFzc093blB0cjxJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3Rv
clN0YXRlLCBQYWdlKiBpbnNwZWN0ZWRQYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVj
dGVkU2NyaXB0TWFuYWdlcikKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUsIGluc3BlY3Rl
ZFBhZ2UsIGluamVjdGVkU2NyaXB0TWFuYWdlcikpOwotfQotCi1JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgUGFnZSogaW5zcGVj
dGVkUGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JT
dGF0ZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAg
OiBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5z
cGVjdG9yU3RhdGUoaW5zcGVjdG9yU3RhdGUpCi0gICAgLCBtX2luc3BlY3RlZFBhZ2UoaW5zcGVj
dGVkUGFnZSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFu
YWdlcikKICAgICAsIG1fZnJvbnRlbmQoMCkKICAgICAsIG1fcGF1c2VkU2NyaXB0U3RhdGUoMCkK
QEAgLTc4LDEwICs3MiwxMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVuYWJsZShi
b29sIHJlc3RvcmluZ0Zyb21TdGF0ZSkKICAgICBtX2luc3BlY3RvclN0YXRlLT5zZXRCb29sZWFu
KERlYnVnZ2VyQWdlbnRTdGF0ZTo6ZGVidWdnZXJFbmFibGVkLCB0cnVlKTsKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQodGhpcyk7CiAKLSAgICBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuY2xlYXJCcmVha3BvaW50cygpOworICAgIHNjcmlw
dERlYnVnU2VydmVyKCkuY2xlYXJCcmVha3BvaW50cygpOwogICAgIC8vIEZJWE1FKFdLNDQ1MTMp
OiBicmVha3BvaW50cyBhY3RpdmF0ZWQgZmxhZyBzaG91bGQgYmUgc3luY2hyb25pemVkIGJldHdl
ZW4gYWxsIGZyb250LWVuZHMKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0QnJl
YWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSk7Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgp
LmFkZExpc3RlbmVyKHRoaXMsIG1faW5zcGVjdGVkUGFnZSk7CisgICAgc2NyaXB0RGVidWdTZXJ2
ZXIoKS5zZXRCcmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKTsKKyAgICBzdGFydExpc3RlbmluZ1Nj
cmlwdERlYnVnU2VydmVyKCk7CiAKICAgICBtX2Zyb250ZW5kLT5kZWJ1Z2dlcldhc0VuYWJsZWQo
KTsKICAgICBpZiAobV9saXN0ZW5lcikKQEAgLTk2LDcgKzkwLDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKICAgICBtX2luc3BlY3RvclN0YXRlLT5zZXRPYmplY3Qo
RGVidWdnZXJBZ2VudFN0YXRlOjpqYXZhU2NyaXB0QnJlYWtwb2ludHMsIEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCkpOwogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudCgwKTsKIAotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZW1vdmVM
aXN0ZW5lcih0aGlzLCBtX2luc3BlY3RlZFBhZ2UpOworICAgIHN0b3BMaXN0ZW5pbmdTY3JpcHRE
ZWJ1Z1NlcnZlcigpOwogICAgIGNsZWFyKCk7CiAKICAgICBpZiAobV9mcm9udGVuZCkKQEAgLTEz
Niw5ICsxMzAsOSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRnJvbnRlbmQo
KQogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJv
clN0cmluZyosIGJvb2wgYWN0aXZlKQogewogICAgIGlmIChhY3RpdmUpCi0gICAgICAgIFNjcmlw
dERlYnVnU2VydmVyOjpzaGFyZWQoKS5hY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CisgICAgICAgIHNj
cmlwdERlYnVnU2VydmVyKCkuYWN0aXZhdGVCcmVha3BvaW50cygpOwogICAgIGVsc2UKLSAgICAg
ICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmRlYWN0aXZhdGVCcmVha3BvaW50cygpOwor
ICAgICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLmRlYWN0aXZhdGVCcmVha3BvaW50cygpOwogfQog
CiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3Qg
U3RyaW5nJikKQEAgLTE5OSwxOCArMTkzLDE4IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6cmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwCiAg
ICAgaWYgKGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yID09IG1fYnJlYWtwb2ludElk
VG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yLT5z
ZWNvbmQuc2l6ZSgpOyArK2kpCi0gICAgICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5y
ZW1vdmVCcmVha3BvaW50KGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yLT5zZWNvbmRb
aV0pOworICAgICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnJlbW92ZUJyZWFrcG9pbnQoZGVidWdT
ZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3ItPnNlY29uZFtpXSk7CiAgICAgbV9icmVha3BvaW50
SWRUb0RlYnVnU2VydmVyQnJlYWtwb2ludElkcy5yZW1vdmUoZGVidWdTZXJ2ZXJCcmVha3BvaW50
SWRzSXRlcmF0b3IpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVl
VG9Mb2NhdGlvbihFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc291cmNlSWQsIGlu
dCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIGlmICghbV9jb250aW51ZVRv
TG9jYXRpb25CcmVha3BvaW50SWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFNjcmlwdERlYnVnU2Vy
dmVyOjpzaGFyZWQoKS5yZW1vdmVCcmVha3BvaW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtw
b2ludElkKTsKKyAgICAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVCcmVha3BvaW50KG1f
Y29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkKTsKICAgICAgICAgbV9jb250aW51ZVRvTG9j
YXRpb25CcmVha3BvaW50SWQgPSAiIjsKICAgICB9CiAgICAgU2NyaXB0QnJlYWtwb2ludCBicmVh
a3BvaW50KGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgIiIsIHRydWUpOwotICAgIG1fY29udGlu
dWVUb0xvY2F0aW9uQnJlYWtwb2ludElkID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNl
dEJyZWFrcG9pbnQoc291cmNlSWQsIGJyZWFrcG9pbnQsICZsaW5lTnVtYmVyLCAmY29sdW1uTnVt
YmVyKTsKKyAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJZCA9IHNjcmlwdERlYnVn
U2VydmVyKCkuc2V0QnJlYWtwb2ludChzb3VyY2VJZCwgYnJlYWtwb2ludCwgJmxpbmVOdW1iZXIs
ICZjb2x1bW5OdW1iZXIpOwogICAgIHJlc3VtZShlcnJvcik7CiB9CiAKQEAgLTIzMiw3ICsyMjYs
NyBAQCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0
IFN0cmluZyYgYnJlYWtwb2ludElkLCBjb25zdAogICAgIGlmIChicmVha3BvaW50LmxpbmVOdW1i
ZXIgPj0gc2NyaXB0LmxpbmVPZmZzZXQgKyBzY3JpcHQubGluZXNDb3VudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgU3RyaW5nIGRlYnVnU2VydmVyQnJlYWtwb2ludElkID0gU2NyaXB0
RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldEJyZWFrcG9pbnQoc291cmNlSWQsIGJyZWFrcG9pbnQs
IGFjdHVhbExpbmVOdW1iZXIsIGFjdHVhbENvbHVtbk51bWJlcik7CisgICAgU3RyaW5nIGRlYnVn
U2VydmVyQnJlYWtwb2ludElkID0gc2NyaXB0RGVidWdTZXJ2ZXIoKS5zZXRCcmVha3BvaW50KHNv
dXJjZUlkLCBicmVha3BvaW50LCBhY3R1YWxMaW5lTnVtYmVyLCBhY3R1YWxDb2x1bW5OdW1iZXIp
OwogICAgIGlmIChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJZC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtMjQ3LDcgKzI0MSw3IEBAIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQsIGNvbnN0
CiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVkaXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5l
d0NvbnRlbnQsIFN0cmluZyogcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBuZXdDYWxs
RnJhbWVzKQogewogICAgIFN0cmluZyBlZGl0UmVzdWx0OwotICAgIGlmIChTY3JpcHREZWJ1Z1Nl
cnZlcjo6c2hhcmVkKCkuZWRpdFNjcmlwdFNvdXJjZShzb3VyY2VJRCwgbmV3Q29udGVudCwgZWRp
dFJlc3VsdCkpIHsKKyAgICBpZiAoc2NyaXB0RGVidWdTZXJ2ZXIoKS5lZGl0U2NyaXB0U291cmNl
KHNvdXJjZUlELCBuZXdDb250ZW50LCBlZGl0UmVzdWx0KSkgewogICAgICAgICAqbmV3Q2FsbEZy
YW1lcyA9IGN1cnJlbnRDYWxsRnJhbWVzKCk7CiAgICAgICAgICpyZXN1bHQgPSBlZGl0UmVzdWx0
OwogICAgIH0gZWxzZQpAQCAtMjY2LDcgKzI2MCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckV2ZW50VHlwZSB0eXBl
CiAgICAgbV9icmVha1Byb2dyYW1EZXRhaWxzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsK
ICAgICBtX2JyZWFrUHJvZ3JhbURldGFpbHMtPnNldE51bWJlcigiZXZlbnRUeXBlIiwgdHlwZSk7
CiAgICAgbV9icmVha1Byb2dyYW1EZXRhaWxzLT5zZXRWYWx1ZSgiZXZlbnREYXRhIiwgZGF0YSk7
Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldFBhdXNlT25OZXh0U3RhdGVtZW50
KHRydWUpOworICAgIHNjcmlwdERlYnVnU2VydmVyKCkuc2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQo
dHJ1ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VPbk5l
eHRTdGF0ZW1lbnQoKQpAQCAtMjc0LDcgKzI2OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6Y2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKQogICAgIGlmIChtX2phdmFTY3JpcHRQ
YXVzZVNjaGVkdWxlZCkKICAgICAgICAgcmV0dXJuOwogICAgIG1fYnJlYWtQcm9ncmFtRGV0YWls
cyA9IDA7Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldFBhdXNlT25OZXh0U3Rh
dGVtZW50KGZhbHNlKTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnNldFBhdXNlT25OZXh0U3Rh
dGVtZW50KGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZShF
cnJvclN0cmluZyopCkBAIC0yODUsMjggKzI3OSwyOCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnBhdXNlKEVycm9yU3RyaW5nKikKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpyZXN1bWUoRXJyb3JTdHJpbmcqKQogewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQo
KS5jb250aW51ZVByb2dyYW0oKTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLmNvbnRpbnVlUHJv
Z3JhbSgpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBPdmVyKEVycm9y
U3RyaW5nKikKIHsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc3RlcE92ZXJTdGF0
ZW1lbnQoKTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnN0ZXBPdmVyU3RhdGVtZW50KCk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c3RlcEludG8oRXJyb3JTdHJpbmcqKQog
ewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5zdGVwSW50b1N0YXRlbWVudCgpOwor
ICAgIHNjcmlwdERlYnVnU2VydmVyKCkuc3RlcEludG9TdGF0ZW1lbnQoKTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwT3V0KEVycm9yU3RyaW5nKikKIHsKLSAgICBTY3Jp
cHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc3RlcE91dE9mRnVuY3Rpb24oKTsKKyAgICBzY3JpcHRE
ZWJ1Z1NlcnZlcigpLnN0ZXBPdXRPZkZ1bmN0aW9uKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGludCBwYXVzZVN0YXRlKQogewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQo
KS5zZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKHN0YXRpY19jYXN0PFNjcmlwdERlYnVnU2VydmVy
OjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlPihwYXVzZVN0YXRlKSk7Ci0gICAgaWYgKFNjcmlwdERl
YnVnU2VydmVyOjpzaGFyZWQoKS5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCkgIT0gcGF1c2VTdGF0
ZSkKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoc3Rh
dGljX2Nhc3Q8U2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGU+KHBhdXNl
U3RhdGUpKTsKKyAgICBpZiAoc2NyaXB0RGVidWdTZXJ2ZXIoKS5wYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKCkgIT0gcGF1c2VTdGF0ZSkKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVy
cm9yLiBDb3VsZCBub3QgY2hhbmdlIHBhdXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUuIjsKIH0KIApA
QCAtMzc3LDcgKzM3MSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2Uo
U2NyaXB0U3RhdGUqIHNjcmlwdFN0YXRlKQogICAgIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVk
ID0gZmFsc2U7CiAKICAgICBpZiAoIW1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkLmlz
RW1wdHkoKSkgewotICAgICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVtb3ZlQnJl
YWtwb2ludChtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJZCk7CisgICAgICAgIHNjcmlw
dERlYnVnU2VydmVyKCkucmVtb3ZlQnJlYWtwb2ludChtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFr
cG9pbnRJZCk7CiAgICAgICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkID0gIiI7
CiAgICAgfQogfQpAQCAtMzk0LDcgKzM4OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6YnJlYWtQcm9ncmFtKERlYnVnZ2VyRXZlbnRUeXBlIHR5cGUsIFBhc3NSZWZQdHI8SW5zCiAg
ICAgbV9icmVha1Byb2dyYW1EZXRhaWxzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAg
ICBtX2JyZWFrUHJvZ3JhbURldGFpbHMtPnNldE51bWJlcigiZXZlbnRUeXBlIiwgdHlwZSk7CiAg
ICAgbV9icmVha1Byb2dyYW1EZXRhaWxzLT5zZXRWYWx1ZSgiZXZlbnREYXRhIiwgZGF0YSk7Ci0g
ICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmJyZWFrUHJvZ3JhbSgpOworICAgIHNjcmlw
dERlYnVnU2VydmVyKCkuYnJlYWtQcm9ncmFtKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Y2xlYXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNDYzYmI4YTk5OWRkMTEwM2Q1YjBhMDczNGM2ZmM4N2Zh
MDNlNWQ5YS4uZDU3MjZlNzYwMTZhMDI4ZjA1ODhiN2IxMWExZDQyYzUxNjJjMzBjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBA
IC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUx
LDcgKzUxLDcgQEAgY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7
CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFz
cyBQYWdlOworY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9y
U3RyaW5nOwogCkBAIC02NCw3ICs2NCw2IEBAIGVudW0gRGVidWdnZXJFdmVudFR5cGUgewogY2xh
c3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVj
dG9yRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JT
dGF0ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIH5JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KCk7CiAKICAgICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIHsg
ZW5hYmxlKGZhbHNlKTsgfQpAQCAtMTA2LDkgKzEwNSwxNSBAQCBwdWJsaWM6CiAgICAgfTsKICAg
ICB2b2lkIHNldExpc3RlbmVyKExpc3RlbmVyKiBsaXN0ZW5lcikgeyBtX2xpc3RlbmVyID0gbGlz
dGVuZXI7IH0KIAotcHJpdmF0ZToKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqKTsKKyAgICB2aXJ0dWFsIFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigp
ID0gMDsKKworcHJvdGVjdGVkOgorICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVu
dGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkgPSAwOwor
Citwcml2YXRlOgogICAgIHZvaWQgZW5hYmxlKGJvb2wgcmVzdG9yaW5nRnJvbVN0YXRlKTsKIAog
ICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGN1cnJlbnRDYWxsRnJhbWVzKCk7CkBAIC0x
NTEsNyArMTU2LDYgQEAgcHJpdmF0ZToKIAogICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5z
dHJ1bWVudGluZ0FnZW50czsKICAgICBJbnNwZWN0b3JTdGF0ZSogbV9pbnNwZWN0b3JTdGF0ZTsK
LSAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAgICBJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXIq
IG1fZnJvbnRlbmQ7CiAgICAgU2NyaXB0U3RhdGUqIG1fcGF1c2VkU2NyaXB0U3RhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAK
aW5kZXggMWY5NWI2NDY4NzE4ZGZlYzc2ZTUxYWI5ZTEwOGFmMDNlMTZmMjZkNS4uODcwYTEyMGE2
YjM5Mzc2MjRiZjJmN2MyNDNlNzMyYWZlNGJiNzc0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAtNDAsOCArNDAsOCBA
QAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5o
IgogI2luY2x1ZGUgIlNjcmlwdEhlYXBTbmFwc2hvdC5oIgogI2luY2x1ZGUgIlNjcmlwdFByb2Zp
bGUuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgpAQCAtMTU3LDcgKzE1Nyw3IEBAIHZv
aWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAgaWYgKCFtX2VuYWJsZWQp
CiAgICAgICAgIHJldHVybjsKICAgICBtX2VuYWJsZWQgPSBmYWxzZTsKLSAgICBTY3JpcHREZWJ1
Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7CisgICAgUGFn
ZVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24o
KTsKICAgICBpZiAobV9mcm9udGVuZCkKICAgICAgICAgbV9mcm9udGVuZC0+cHJvZmlsZXJXYXNE
aXNhYmxlZCgpOwogfQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6ZW5hYmxlKGJvb2wgc2tpcFJlY29tcGlsZSkKICAgICAgICAgcmV0dXJuOwogICAgIG1f
ZW5hYmxlZCA9IHRydWU7CiAgICAgaWYgKCFza2lwUmVjb21waWxlKQotICAgICAgICBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7CisgICAg
ICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21waWxlQWxsSlNGdW5jdGlv
bnNTb29uKCk7CiAgICAgaWYgKG1fZnJvbnRlbmQpCiAgICAgICAgIG1fZnJvbnRlbmQtPnByb2Zp
bGVyV2FzRW5hYmxlZCgpOwogfQpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmICghZW5hYmxlZCgpKSB7CiAgICAgICAgIGVuYWJsZSh0cnVlKTsKLSAgICAgICAg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7Cisg
ICAgICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21waWxlQWxsSlNGdW5j
dGlvbnMoMCk7CiAgICAgfQogICAgIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUgPSB0
cnVlOwogICAgIFN0cmluZyB0aXRsZSA9IGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5h
bWUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4wMzUzNjU2MWExYzE0MzY0MGY5ODQ3Mjk2YWZkOTdmNmRlZmI4YzQ2
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlBhZ2VEZWJ1Z2dlckFnZW50LmgiCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikg
JiYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKFdPUktFUlMpCisKKyNpbmNsdWRlICJQYWdl
U2NyaXB0RGVidWdTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitQYXNzT3duUHRy
PFBhZ2VEZWJ1Z2dlckFnZW50PiBQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRlKEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JT
dGF0ZSwgUGFnZSogaW5zcGVjdGVkUGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQYWdlRGVidWdnZXJB
Z2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgaW5zcGVjdGVkUGFnZSwg
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSk7Cit9CisKK1BhZ2VEZWJ1Z2dlckFnZW50OjpQYWdlRGVi
dWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNw
ZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIFBhZ2UqIGluc3BlY3RlZFBhZ2UsIEluamVjdGVk
U2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgIDogSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQorICAgICwgbV9pbnNwZWN0ZWRQYWdlKGluc3BlY3RlZFBhZ2UpCit7Cit9
CisKK1BhZ2VEZWJ1Z2dlckFnZW50Ojp+UGFnZURlYnVnZ2VyQWdlbnQoKQoreworfQorCit2b2lk
IFBhZ2VEZWJ1Z2dlckFnZW50OjpzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkKK3sK
KyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLmFkZExpc3RlbmVyKHRoaXMsIG1faW5zcGVjdGVkUGFn
ZSk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1
Z1NlcnZlcigpCit7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVMaXN0ZW5lcih0aGlz
LCBtX2luc3BlY3RlZFBhZ2UpOworfQorCitQYWdlU2NyaXB0RGVidWdTZXJ2ZXImIFBhZ2VEZWJ1
Z2dlckFnZW50OjpzY3JpcHREZWJ1Z1NlcnZlcigpCit7CisgICAgcmV0dXJuIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c2hhcmVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKSAm
JiBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dl
ckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Q2YWY2YzJiNjM1MWJmNzRlOTI5NzQzMWU3MDcxOGZhN2U2
NjBlYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVi
dWdnZXJBZ2VudC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhZ2VEZWJ1Z2dlckFnZW50X2gK
KyNkZWZpbmUgUGFnZURlYnVnZ2VyQWdlbnRfaAorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVC
VUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5oIgorI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIFBhZ2U7CitjbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI7CisK
K2NsYXNzIFBhZ2VEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VEZWJ1Z2dlckFnZW50KTsKKyAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxQYWdl
RGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0
ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIH5QYWdlRGVi
dWdnZXJBZ2VudCgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBzdGFydExpc3Rlbmlu
Z1NjcmlwdERlYnVnU2VydmVyKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdTY3Jp
cHREZWJ1Z1NlcnZlcigpOworICAgIHZpcnR1YWwgUGFnZVNjcmlwdERlYnVnU2VydmVyJiBzY3Jp
cHREZWJ1Z1NlcnZlcigpOworCisgICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyosIEluc3BlY3RvclN0YXRlKiwgUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciopOwor
ICAgIFBhZ2UqIGNvbnN0IG1faW5zcGVjdGVkUGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUo
SU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoUGFnZURlYnVnZ2VyQWdlbnRfaCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hZmQwMGE1ZmQ5NTM5ZTM1OGZhNDgxYzM0NjU1NmQ1OWI0ZjA4OWViCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQu
Y3BwCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2Vy
RGVidWdnZXJBZ2VudC5oIgorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVO
QUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShXT1JLRVJTKQorI2luY2x1ZGUgIlNjcmlwdERlYnVn
U2VydmVyLmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK1Bhc3NPd25QdHI8V29ya2VyRGVidWdnZXJBZ2VudD4gV29ya2VyRGVidWdnZXJBZ2Vu
dDo6Y3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgV29ya2VyQ29udGV4dCogaW5zcGVjdGVkV29ya2Vy
Q29udGV4dCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCit7
CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJEZWJ1Z2dlckFnZW50KGluc3RydW1lbnRp
bmdBZ2VudHMsIGluc3BlY3RvclN0YXRlLCBpbnNwZWN0ZWRXb3JrZXJDb250ZXh0LCBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIpKTsKK30KKworV29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVidWdn
ZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0
b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIFdvcmtlckNvbnRleHQqIGluc3BlY3RlZFdvcmtlckNv
bnRleHQsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAg
IDogSW5zcGVjdG9yRGVidWdnZXJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JT
dGF0ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgICwgbV9pbnNwZWN0ZWRXb3JrZXJDb250
ZXh0KGluc3BlY3RlZFdvcmtlckNvbnRleHQpCit7Cit9CisKK1dvcmtlckRlYnVnZ2VyQWdlbnQ6
On5Xb3JrZXJEZWJ1Z2dlckFnZW50KCkKK3sKK30KKwordm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50
OjpzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkKK3sKK30KKwordm9pZCBXb3JrZXJE
ZWJ1Z2dlckFnZW50OjpzdG9wTGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKQoreworfQorCitX
b3JrZXJTY3JpcHREZWJ1Z1NlcnZlciYgV29ya2VyRGVidWdnZXJBZ2VudDo6c2NyaXB0RGVidWdT
ZXJ2ZXIoKQoreworICAgIHJldHVybiBtX3NjcmlwdERlYnVnU2VydmVyOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikg
JiYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lODhmZDg5MzBl
ZDVkMDBhMWZiNzMyZjgwYzRlY2U0MzQxYTM5M2JlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXb3JrZXJEZWJ1Z2dlckFnZW50X2gKKyNkZWZpbmUgV29ya2VyRGVidWdnZXJBZ2Vu
dF9oCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RP
UikgJiYgRU5BQkxFKFdPUktFUlMpCisjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
IgorI2luY2x1ZGUgIldvcmtlclNjcmlwdERlYnVnU2VydmVyLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgV29ya2VyQ29udGV4dDsKKworY2xhc3MgV29ya2VyRGVidWdnZXJBZ2Vu
dCA6IHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShXb3JrZXJEZWJ1Z2dlckFnZW50KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxXb3JrZXJEZWJ1Z2dlckFnZW50PiBjcmVh
dGUoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgV29ya2VyQ29udGV4dCos
IEluamVjdGVkU2NyaXB0TWFuYWdlciopOworICAgIHZpcnR1YWwgfldvcmtlckRlYnVnZ2VyQWdl
bnQoKTsKKworcHJpdmF0ZToKKyAgICBXb3JrZXJEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdB
Z2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFdvcmtlckNvbnRleHQqLCBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqKTsKKworICAgIHZpcnR1YWwgdm9pZCBzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2Vy
dmVyKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigp
OworICAgIHZpcnR1YWwgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVy
KCk7CisKKyAgICBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlciBtX3NjcmlwdERlYnVnU2VydmVyOwor
ICAgIFdvcmtlckNvbnRleHQqIG1faW5zcGVjdGVkV29ya2VyQ29udGV4dDsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KSAmJiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoV09SS0VSUykKKworI2VuZGlmIC8vICFk
ZWZpbmVkKFdvcmtlckRlYnVnZ2VyQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggYWZhNGQ2MWU5YjI5ZTkxZGE3ZGRjYTdmZTVhMDMzZjRiMWVhYzM5OC4uZTdlMjAxMzA1YzAy
MTIxZjNkOTQyMjJlMTkzOTg5ZmM5MzIxMDIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMCBAQAorMjAxMS0wMy0zMCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBzcGxpdCBkZWJ1Z2dlciBhZ2VudCBpbnRvIFBhZ2UgYW5kIFdv
cmtlci1zcGVjaWZpYyBvbmVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD01NzM0NQorCisgICAgICAgIFNjcmlwdERlYnVnU2VydmVyIGFuZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50IGNvbnRhaW4gb25seSBmdW5jdGlvbmFsaXR5IGNvbW1vbgorICAgICAg
ICBmb3IgV29ya2VyIGFuZCBQYWdlIGRlYnVnZ2VyLiBBbGwgc3BlY2lmaWNzIGlzIG1vdmVkIGlu
dG8gUGFnZS9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcgorICAgICAgICBhbmQgUGFnZS9Xb3JrZXJE
ZWJ1Z2dlckFnZW50LgorCisgICAgICAgICogc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RGVidWdnZXJBZ2VudE1hbmFnZXI6OnNldEV4cG9zZVY4RGVidWdn
ZXJQcm90b2NvbCk6CisgICAgICAgICogc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudDo6aW50ZXJydXB0QW5kRGlzcGF0Y2gpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJEZXZUb29sc0FnZW50Ojpwcm9jZXNzUGVuZGluZ01lc3NhZ2Vz
KToKKwogMjAxMS0wMy0yOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjgyMjkzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCmluZGV4
IGI3NmJjZmU2ODMyN2JmMzY2NzViYzg1ZGFmNTg3ZDQ2MGEzZWNhYWUuLjM2OGI3OGNmMzY1NDBj
ODRhODI2MzYyMWJjOTE2OWI0MzViYTFmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNp
bmNsdWRlICJEZWJ1Z2dlckFnZW50SW1wbC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiUGFnZUdyb3VwTG9hZERlZmVycmVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIu
aCIKKyNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJWOFByb3h5
LmgiCiAjaW5jbHVkZSAiV2ViRGV2VG9vbHNBZ2VudEltcGwuaCIKICNpbmNsdWRlICJXZWJGcmFt
ZUltcGwuaCIKQEAgLTI0Nyw3ICsyNDcsNyBAQCB2b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpz
ZXRNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlcihXZWJEZXZUb29sc0FnZW50OjpNZXNzYQogdm9p
ZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2V0RXhwb3NlVjhEZWJ1Z2dlclByb3RvY29sKGJvb2wg
dmFsdWUpCiB7CiAgICAgc19leHBvc2VWOERlYnVnZ2VyUHJvdG9jb2wgPSB2YWx1ZTsKLSAgICBX
ZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0RW5hYmxlZCghc19leHBvc2VW
OERlYnVnZ2VyUHJvdG9jb2wpOworICAgIFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6
c2hhcmVkKCkuc2V0RW5hYmxlZCghc19leHBvc2VWOERlYnVnZ2VyUHJvdG9jb2wpOwogfQogCiB2
b2lkIERlYnVnZ2VyQWdlbnRNYW5hZ2VyOjpzZXRIb3N0SWQoV2ViRnJhbWVJbXBsKiB3ZWJmcmFt
ZSwgaW50IGhvc3RJZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkRldlRvb2xzQWdlbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRl
dlRvb2xzQWdlbnRJbXBsLmNwcAppbmRleCBkNzE4ZTJmNDAwMDI5Y2YxN2RjZTY2OGY3MzYxMTRh
NWViZTA3Y2UyLi5jMWE1ZjljYzg5M2FlOTM2Y2IzNmEwMWI1ZGUwZGY5YjJjOGY2ZDA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwu
Y3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKQEAgLTQwLDExICs0MCwxMSBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKKyNpbmNs
dWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgogI2luY2x1ZGUgIlJlc291cmNlRXJyb3IuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3Qu
aCIKICNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdT
ZXJ2ZXIuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFByb3h5LmgiCiAj
aW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKQEAgLTcyLDE0ICs3MiwxNCBAQCBuYW1lc3BhY2Ugewog
c3RhdGljIGNvbnN0IGNoYXIga0Zyb250ZW5kQ29ubmVjdGVkRmVhdHVyZU5hbWVbXSA9ICJmcm9u
dGVuZC1jb25uZWN0ZWQiOwogc3RhdGljIGNvbnN0IGNoYXIga0luc3BlY3RvclN0YXRlRmVhdHVy
ZU5hbWVbXSA9ICJpbnNwZWN0b3Itc3RhdGUiOwogCi1jbGFzcyBDbGllbnRNZXNzYWdlTG9vcEFk
YXB0ZXIgOiBwdWJsaWMgU2NyaXB0RGVidWdTZXJ2ZXI6OkNsaWVudE1lc3NhZ2VMb29wIHsKK2Ns
YXNzIENsaWVudE1lc3NhZ2VMb29wQWRhcHRlciA6IHB1YmxpYyBQYWdlU2NyaXB0RGVidWdTZXJ2
ZXI6OkNsaWVudE1lc3NhZ2VMb29wIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBlbnN1cmVD
bGllbnRNZXNzYWdlTG9vcENyZWF0ZWQoV2ViRGV2VG9vbHNBZ2VudENsaWVudCogY2xpZW50KQog
ICAgIHsKICAgICAgICAgaWYgKHNfaW5zdGFuY2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIHNfaW5zdGFuY2UgPSBuZXcgQ2xpZW50TWVzc2FnZUxvb3BBZGFwdGVyKGNsaWVudC0+Y3Jl
YXRlQ2xpZW50TWVzc2FnZUxvb3AoKSk7Ci0gICAgICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFy
ZWQoKS5zZXRDbGllbnRNZXNzYWdlTG9vcChzX2luc3RhbmNlKTsKKyAgICAgICAgUGFnZVNjcmlw
dERlYnVnU2VydmVyOjpzaGFyZWQoKS5zZXRDbGllbnRNZXNzYWdlTG9vcChzX2luc3RhbmNlKTsK
ICAgICB9CiAKICAgICBzdGF0aWMgdm9pZCBpbnNwZWN0ZWRWaWV3Q2xvc2VkKFdlYlZpZXdJbXBs
KiB2aWV3KQpAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyBSZWxl
YXNlIHJlbmRlciB0aHJlYWQgaWYgbmVjZXNzYXJ5LgogICAgICAgICBpZiAoc19pbnN0YW5jZSAm
JiBzX2luc3RhbmNlLT5tX3J1bm5pbmcpCi0gICAgICAgICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2hhcmVkKCkuY29udGludWVQcm9ncmFtKCk7CisgICAgICAgICAgICBQYWdlU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNoYXJlZCgpLmNvbnRpbnVlUHJvZ3JhbSgpOwogICAgIH0KIAogcHJpdmF0ZToKQEAg
LTMxOSw3ICszMTksNyBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnQ6OmRlYnVnZ2VyUGF1c2VTY3Jp
cHQoKQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnQ6OmludGVycnVwdEFuZERpc3BhdGNoKE1lc3Nh
Z2VEZXNjcmlwdG9yKiBkKQogewotICAgIGNsYXNzIERlYnVnZ2VyVGFzayA6IHB1YmxpYyBTY3Jp
cHREZWJ1Z1NlcnZlcjo6VGFzayB7CisgICAgY2xhc3MgRGVidWdnZXJUYXNrIDogcHVibGljIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlcjo6VGFzayB7CiAgICAgcHVibGljOgogICAgICAgICBEZWJ1Z2dl
clRhc2soV2ViRGV2VG9vbHNBZ2VudDo6TWVzc2FnZURlc2NyaXB0b3IqIGRlc2NyaXB0b3IpIDog
bV9kZXNjcmlwdG9yKGRlc2NyaXB0b3IpIHsgfQogICAgICAgICB2aXJ0dWFsIH5EZWJ1Z2dlclRh
c2soKSB7IH0KQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFdlYkRldlRvb2xzQWdlbnQ6OmludGVy
cnVwdEFuZERpc3BhdGNoKE1lc3NhZ2VEZXNjcmlwdG9yKiBkKQogICAgIHByaXZhdGU6CiAgICAg
ICAgIE93blB0cjxXZWJEZXZUb29sc0FnZW50OjpNZXNzYWdlRGVzY3JpcHRvcj4gbV9kZXNjcmlw
dG9yOwogICAgIH07Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OmludGVycnVwdEFuZFJ1bihuZXcg
RGVidWdnZXJUYXNrKGQpKTsKKyAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmludGVycnVwdEFu
ZFJ1bihuZXcgRGVidWdnZXJUYXNrKGQpKTsKIH0KIAogYm9vbCBXZWJEZXZUb29sc0FnZW50Ojpz
aG91bGRJbnRlcnJ1cHRGb3JNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKQEAgLTM1
MSw3ICszNTEsNyBAQCBib29sIFdlYkRldlRvb2xzQWdlbnQ6OnNob3VsZEludGVycnVwdEZvck1l
c3NhZ2UoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnQ6
OnByb2Nlc3NQZW5kaW5nTWVzc2FnZXMoKQogewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFy
ZWQoKS5ydW5QZW5kaW5nVGFza3MoKTsKKyAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJl
ZCgpLnJ1blBlbmRpbmdUYXNrcygpOwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnQ6OnNldE1l
c3NhZ2VMb29wRGlzcGF0Y2hIYW5kbGVyKE1lc3NhZ2VMb29wRGlzcGF0Y2hIYW5kbGVyIGhhbmRs
ZXIpCg==
</data>
<flag name="review"
          id="79947"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>87539</attachid>
            <date>2011-03-30 08:22:09 -0700</date>
            <delta_ts>2011-03-30 08:22:09 -0700</delta_ts>
            <desc>Patch that compiles</desc>
            <filename>script-debug-server-2</filename>
            <type>text/plain</type>
            <size>124952</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggODA3ZjU1ZC4uZGNiNzk5NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTkwNywxMCArOTA3LDEyIEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcAorICAgIGlu
c3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvU2NyaXB0QXJndW1l
bnRzLmNwcAogICAgIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwCiAgICAgaW5zcGVjdG9y
L1NjcmlwdENhbGxTdGFjay5jcHAKICAgICBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5
LmNwcAorICAgIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAogCiAgICAgbG9hZGVy
L0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5jcHAKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVm
bGlnaHRSZXN1bHRDYWNoZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzOGE3MzkxLi41MTkwOTQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDUgKzEsMTQzIEBACiAyMDExLTAzLTMwICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNwbGl0IGRlYnVnZ2VyIGFnZW50IGludG8gUGFn
ZSBhbmQgV29ya2VyLXNwZWNpZmljIG9uZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTU3MzQ1CisKKyAgICAgICAgU2NyaXB0RGVidWdTZXJ2ZXIgYW5k
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgY29udGFpbiBvbmx5IGZ1bmN0aW9uYWxpdHkgY29tbW9u
CisgICAgICAgIGZvciBXb3JrZXIgYW5kIFBhZ2UgZGVidWdnZXIuIEFsbCBzcGVjaWZpY3MgaXMg
bW92ZWQgaW50byBQYWdlL1dvcmtlclNjcmlwdERlYnVnU2VydmVyCisgICAgICAgIGFuZCBQYWdl
L1dvcmtlckRlYnVnZ2VyQWdlbnQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBVc2VKU0MuY21ha2U6CisgICAgICAgICog
V2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUu
dmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3Bw
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpjdXJyZW50Q2FsbEZyYW1l
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvUGFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXI6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6On5QYWdlU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcik6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpnZXRMaXN0ZW5lcnNGb3JH
bG9iYWxPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpk
aWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZENv
bnRpbnVlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUmVt
b3ZlTGFzdExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZl
cjo6c2V0SmF2YVNjcmlwdFBhdXNlZCk6CisgICAgICAgICogYmluZGluZ3MvanMvUGFnZVNjcmlw
dERlYnVnU2VydmVyLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVn
U2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpTY3JpcHRE
ZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNl
UGFyc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZ1
bmN0aW9uVG9MaXN0ZW5lcnMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OmNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0RGVidWdTZXJ2ZXI6OnVwZGF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnBhdXNlSWZOZWVkZWQpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclNjcmlwdERlYnVnU2VydmVyOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjp+V29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJl
Y29tcGlsZUFsbEpTRnVuY3Rpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERl
YnVnU2VydmVyOjpnZXRMaXN0ZW5lcnNGb3JHbG9iYWxPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250aW51ZSk6CisgICAgICAgICogYmluZGlu
Z3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpyZXRyaWV2ZUZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZl
cjo6c2hhcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6UGFn
ZVNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlcjo6YWRkTGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNldENsaWVudE1lc3NhZ2VMb29wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6Z2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpydW5NZXNzYWdlTG9vcE9uUGF1c2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpxdWl0TWVzc2FnZUxvb3BPblBh
dXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEVuYWJsZWQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpDbGllbnRNZXNzYWdl
TG9vcDo6fkNsaWVudE1lc3NhZ2VMb29wKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6flBhZ2VTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgICogYmluZGluZ3Mv
djgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OlNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVn
U2VydmVyOjpzZXRQYXVzZU9uTmV4dFN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjpjb250aW51ZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVi
dWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERl
YnVnU2VydmVyOjpzdGVwT3ZlclN0YXRlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRE
ZWJ1Z1NlcnZlcjo6c3RlcE91dE9mRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6dG9TY3Jp
cHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1Z1NlcnZlcjo6YnJl
YWtQcm9ncmFtQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6
OnY4RGVidWdFdmVudENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERlYnVnU2Vy
dmVyOjpoYW5kbGVWOERlYnVnRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdT
ZXJ2ZXI6OmlzUGF1c2VkKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZl
ci5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdT
ZXJ2ZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVn
U2VydmVyOjpyZW1vdmVMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvdjgvV29ya2VyU2Ny
aXB0RGVidWdTZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlcjo6fldvcmtlclNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpnZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuTWVzc2FnZUxvb3BP
blBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpxdWl0
TWVzc2FnZUxvb3BPblBhdXNlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNj
cmlwdEhvc3Q6OmN1cnJlbnRDYWxsRnJhbWVDYWxsYmFjayk6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5oOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHRI
b3N0Ojppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkluamVjdGVkU2NyaXB0SG9zdDo6ZGVidWdn
ZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50c0FjdGl2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJl
YWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplZGl0
U2NyaXB0U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdW1lKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBPdmVyKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBPdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0pOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxl
ckFnZW50OjplbmFibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dDo6c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFn
ZURlYnVnZ2VyQWdlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dl
ckFnZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OlBh
Z2VEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojp+
UGFnZURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6
OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZURlYnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6c2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAg
ICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAgKiBpbnNw
ZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRGVidWdnZXJBZ2VudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRl
YnVnZ2VyQWdlbnQ6OldvcmtlckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyRGVidWdnZXJBZ2VudDo6fldvcmtlckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6c3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcik6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjpzdG9wTGlzdGVuaW5nU2Ny
aXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6
c2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFn
ZW50Lmg6IEFkZGVkLgorCisyMDExLTAzLTMwICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hy
b21pdW0ub3JnPgorCiAgICAgICAgIFVucmV2aWV3ZWQuIFJvbGxvdXQgcjgyNDM4IGFuZCByODI0
MzYuCiAKICAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KaW5kZXgg
MzRlNmI4Yy4uOTg4NjllNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
YW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTg5Myw2ICs4OTMsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KYXZhU2Ny
aXB0Q2FsbEZyYW1lLmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL09wdGlvbnNPYmpl
Y3QuaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVy
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVy
LmggXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwIFwKQEAgLTkzMSw2
ICs5MzMsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dlYkNvcmVKU0NsaWVudERhdGEuaCBcCiAJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaCBcCisJU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9T
Y3JpcHRDb250cm9sbGVyQmFzZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1Njcmlw
dENvbnRyb2xsZXJCYXNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2JyaWRnZS9CcmlkZ2UuaCBcCkBA
IC0yMDQ0LDYgKzIwNDgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvcldvcmtlclJlc291cmNlLmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnN0cnVtZW50aW5nQWdlbnRzLmggXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVi
dWdnZXJBZ2VudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJB
Z2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oIFwKQEAgLTIwNTUsNiArMjA2MSw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Njcmlw
dEdDRXZlbnRMaXN0ZW5lci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlLmNw
cCBcCiAJU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
R3JvdXAuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9Vc2VKU0MuY21ha2UKaW5kZXggZmUzMzFiZi4uY2RjZDM4YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvVXNlSlNDLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZUpT
Qy5jbWFrZQpAQCAtMTQxLDYgKzE0MSw3IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwog
ICAgIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwCiAgICAgYmlu
ZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwCisgICAgYmluZGluZ3MvanMvUGFnZURlYnVnU2VydmVyLmNwcAog
ICAgIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKICAgICBiaW5kaW5ncy9qcy9TY3Jp
cHRDYWNoZWRGcmFtZURhdGEuY3BwCiAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5jcHAKQEAgLTE1Niw2ICsxNTcsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMK
ICAgICBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5jcHAKICAgICBiaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCiAgICAgYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxl
ci5jcHAKKyAgICBiaW5kaW5ncy9qcy9Xb3JrZXJEZWJ1Z1NlcnZlci5jcHAKIAogICAgIGJyaWRn
ZS9JZGVudGlmaWVyUmVwLmNwcAogICAgIGJyaWRnZS9OUF9qc29iamVjdC5jcHAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCA5YzhlYWQ3Li4zNTJiYzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xOTI5LDYg
KzE5MjksOCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L09wdGlvbnNPYmplY3QuY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9PcHRpb25zT2JqZWN0LmgnLAogICAgICAgICAgICAg
J2JpbmRpbmdzL3Y4L093bkhhbmRsZS5oJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9QYWdl
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwJywKKyAgICAgICAgICAgICdiaW5kaW5ncy92OC9QYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvUmV0YWluZWRET01J
bmZvLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvUmV0YWluZWRET01JbmZvLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1JldGFpbmVkT2JqZWN0SW5mby5oJywKQEAgLTIwMjYs
NiArMjAyOCw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvV29ya2VyQ29udGV4dEV4ZWN1
dGlvblByb3h5LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmgnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERlYnVnU2VydmVy
LmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIu
aCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmNwcCcsCiAg
ICAgICAgICAgICAnYmluZGluZ3MvdjgvV29ybGRDb250ZXh0SGFuZGxlLmgnLAogICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oJywKQEAgLTMyMjgsNiArMzIzMiw4IEBA
CiAgICAgICAgICAgICAnaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJSZXNvdXJjZS5oJywKICAgICAgICAgICAgICdp
bnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oJywKKyAgICAgICAgICAgICdpbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuY3BwJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvUGFnZURlYnVn
Z2VyQWdlbnQuaCcsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAn
LAogICAgICAgICAgICAgJ2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaCcsCiAgICAgICAgICAg
ICAnaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAnLApAQCAtMzIzNyw2ICszMjQzLDggQEAK
ICAgICAgICAgICAgICdpbnNwZWN0b3IvU2NyaXB0R0NFdmVudExpc3RlbmVyLmgnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgnLAorICAgICAgICAgICAgJ2luc3Bl
Y3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCcsCisgICAgICAgICAgICAnaW5zcGVjdG9yL1dv
cmtlckRlYnVnZ2VyQWdlbnQuaCcsCiAgICAgICAgICAgICAnbG9hZGVyL0NhY2hlZE1ldGFkYXRh
LmgnLAogICAgICAgICAgICAgJ2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwJywK
ICAgICAgICAgICAgICdsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnBybwppbmRleCBkMmQyODA5Li43ZjIxZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnBybworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMzQ2LDYgKzM0
Niw3IEBAIHY4IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNXZWJLaXRQb2ludEN1c3RvbS5jcHAg
XAogICAgICAgICBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBcCiAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwIFwKKyAgICAg
ICAgYmluZGluZ3MvanMvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBcCiAgICAgICAgIGJpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRD
YWNoZWRGcmFtZURhdGEuY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHAgXApAQCAtODMwLDEwICs4MzEsMTIgQEAgU09VUkNFUyArPSBcCiAgICAgaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIFwKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAgXAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwIFwK
KyAgICBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIFwKICAgICBpbnNwZWN0b3IvU2Ny
aXB0QXJndW1lbnRzLmNwcCBcCiAgICAgaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAgXAog
ICAgIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwIFwKICAgICBpbnNwZWN0b3IvVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmNwcCBcCisgICAgaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQu
Y3BwIFwKICAgICBsb2FkZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2UuY3BwIFwKICAgICBsb2Fk
ZXIvYXJjaGl2ZS9BcmNoaXZlUmVzb3VyY2VDb2xsZWN0aW9uLmNwcCBcCiAgICAgbG9hZGVyL2Nh
Y2hlL01lbW9yeUNhY2hlLmNwcCBcCkBAIC0xMzAwLDkgKzEzMDMsMTEgQEAgdjggewogICAgICAg
ICBiaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
V29ya2VyQ29udGV4dEJhc2UuaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0phdmFTY3JpcHRDYWxs
RnJhbWUuaCBcCisgICAgICAgIGJpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIFwK
ICAgICAgICAgYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmggXAogICAgICAgICBiaW5kaW5n
cy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaCBcCisgICAgICAgIGJpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgg
XAogICAgICAgICBiaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmggXAogICAgICAgICBi
aW5kaW5ncy9qcy9TY3JpcHRGdW5jdGlvbkNhbGwuaCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL1Nj
cmlwdEdDRXZlbnQuaCBcCkBAIC0xMzIwLDYgKzEzMjUsNyBAQCB2OCB7CiAgICAgICAgIGJpbmRp
bmdzL2pzL1N0cmluZ1NvdXJjZVByb3ZpZGVyLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9XZWJD
b3JlSlNDbGllbnREYXRhLmggXAogICAgICAgICBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmggXAorICAgICAgICBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5o
IFwKICAgICAgICAgYnJpZGdlL0JyaWRnZS5oIFwKICAgICAgICAgYnJpZGdlL2MvQ1J1bnRpbWVP
YmplY3QuaCBcCiAgICAgICAgIGJyaWRnZS9jL2NfY2xhc3MuaCBcCkBAIC0xNzU1LDggKzE3NjEs
MTAgQEAgSEVBREVSUyArPSBcCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBc
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBcCiAgICAgaW5zcGVjdG9y
L0luc3RydW1lbnRpbmdBZ2VudHMuaCBcCisgICAgaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50
LmggXAogICAgIGluc3BlY3Rvci9TY3JpcHRHQ0V2ZW50TGlzdGVuZXIuaCBcCiAgICAgaW5zcGVj
dG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIFwKKyAgICBpbnNwZWN0b3IvV29ya2VyRGVidWdn
ZXJBZ2VudC5oIFwKICAgICBsb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgg
XAogICAgIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIFwKICAgICBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZS5oIFwKQEAgLTI4NjgsNyArMjg3Niw4IEBAIGNv
bnRhaW5zKERFRklORVMsIEVOQUJMRV9XT1JLRVJTPTEpIHsKICAgICAgICAgICAgIGJpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEJhc2UuY3BwIFwKICAgICAgICAgICAgIGJpbmRpbmdzL2pzL0pT
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgXAogICAgICAgICAgICAgYmluZGluZ3MvanMvSlNXb3Jr
ZXJDdXN0b20uY3BwIFwKLSAgICAgICAgICAgIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwCisgICAgICAgICAgICBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcCBcCisgICAgICAgICAgICBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5j
cHAKICAgICB9CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIGxvYWRlci9Xb3JrZXJUaHJlYWRh
YmxlTG9hZGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCmluZGV4IGRjZWIzNWQuLjgyYzEzYzMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC02MzExNyw2ICs2MzExNyw2MiBAQAogCQkJCQk+
CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3Nc
anNcUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCIKKwkJCQkJPgorCQkJCQk8RmlsZUNvbmZpZ3Vy
YXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9
InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZp
Z3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21C
dWlsZD0idHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxl
Q29uZmlndXJhdGlvbgorCQkJCQkJTmFtZT0iRGVidWdfQ2Fpcm9fQ0ZMaXRlfFdpbjMyIgorCQkJ
CQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJ
CU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0
aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IlJlbGVhc2VfQ2Fpcm9f
Q0ZMaXRlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCQk+CisJ
CQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQkvPgorCQkJ
CQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJCU5h
bWU9IkRlYnVnX0FsbHxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJ
CQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJ
Lz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJ
CQkJCQlOYW1lPSJSZWxlYXNlX0xUQ0d8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0i
dHJ1ZSIKKwkJCQkJCT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9v
bCIKKwkJCQkJCS8+CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPC9GaWxlPgorCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcUGFnZVNjcmlwdERlYnVn
U2VydmVyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxiaW5kaW5nc1xqc1xTY2hlZHVsZWRBY3Rpb24uY3BwIgogCQkJCQk+CiAJCQkJCTxG
aWxlQ29uZmlndXJhdGlvbgpAQCAtNjM4OTYsNiArNjM5NTIsNjIgQEAKIAkJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxiaW5kaW5nc1xqc1xXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgiCiAJCQkJCT4KIAkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xX
b3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAiCisJCQkJCT4KKwkJCQkJPEZpbGVDb25maWd1cmF0
aW9uCisJCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
IgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1
cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVp
bGQ9InRydWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxl
clRvb2wiCisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24KKwkJCQkJCU5hbWU9IkRlYnVnX0NhaXJvX0NGTGl0ZXxXaW4zMiIKKwkJCQkJ
CUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJCQkJPFRvb2wKKwkJCQkJCQlO
YW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJPC9GaWxlQ29uZmlndXJhdGlv
bj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvX0NG
TGl0ZXxXaW4zMiIKKwkJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQkJPgorCQkJ
CQkJPFRvb2wKKwkJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJLz4KKwkJCQkJ
PC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCQlOYW1l
PSJEZWJ1Z19BbGx8V2luMzIiCisJCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJ
CT4KKwkJCQkJCTxUb29sCisJCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCS8+
CisJCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJ
CQkJTmFtZT0iUmVsZWFzZV9MVENHfFdpbjMyIgorCQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRy
dWUiCisJCQkJCQk+CisJCQkJCQk8VG9vbAorCQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wi
CisJCQkJCQkvPgorCQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTwvRmlsZT4KKwkJCQk8
RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXFBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgogCQkJPC9GaWx0ZXI+CiAJCQk8RmlsdGVyCiAJ
CQkJTmFtZT0ic2NyaXB0cyIKQEAgLTY2NDI2LDYgKzY2NTM4LDE0IEBACiAJCQkJPgogCQkJPC9G
aWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxQYWdlRGVidWdn
ZXJBZ2VudC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGluc3BlY3RvclxQYWdlRGVidWdnZXJBZ2VudC5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcU2NyaXB0QXJndW1lbnRz
LmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC02NjQ2NSw2ICs2NjU4NSwxNCBAQAogCQkJCVJl
bGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIgogCQkJCT4K
IAkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcV29y
a2VyRGVidWdnZXJBZ2VudC5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3RvclxXb3JrZXJEZWJ1Z2dlckFnZW50LmgiCisJCQkJPgor
CQkJPC9GaWxlPgogCQkJPEZpbHRlcgogCQkJCU5hbWU9ImZyb250LWVuZCIKIAkJCQk+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
MmU3MWU1Ny4uNzczYTUzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNTY0NSw2ICs1NjQ1LDE0IEBACiAJCUYzNDRDNzE0MTEy
NUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NEM3MTIxMTI1QjgyQzAwRjI2RUVF
IC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRjM0NEM3NTMxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEYzNDRDNzUyMTEyOTREOUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJRjM0NEM3NTgxMTI5NEZGNjAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjM0NEM3NTcxMTI5NEZGNjAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwICovOyB9OworCQlGMzQ3NDJEQzEzNDM2MkYwMDA1MzFCQzIgLyogUGFnZURlYnVn
Z2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjM0NzQyREExMzQzNjJGMDAwNTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmNwcCAqLzsg
fTsKKwkJRjM0NzQyREQxMzQzNjJGMDAwNTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzQ3NDJEQjEzNDM2
MkYwMDA1MzFCQzIgLyogUGFnZURlYnVnZ2VyQWdlbnQuaCAqLzsgfTsKKwkJRjM0NzQyRTAxMzQz
NjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NzQyREUxMzQzNjMxRjAwNTMxQkMyIC8q
IFdvcmtlckRlYnVnZ2VyQWdlbnQuY3BwICovOyB9OworCQlGMzQ3NDJFMTEzNDM2MzFGMDA1MzFC
QzIgLyogV29ya2VyRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjM0NzQyREYxMzQzNjMxRjAwNTMxQkMyIC8qIFdvcmtlckRlYnVn
Z2VyQWdlbnQuaCAqLzsgfTsKKwkJRjM0NzQyRTQxMzQzNjMzQzAwNTMxQkMyIC8qIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGMzQ3NDJFMjEzNDM2MzNDMDA1MzFCQzIgLyogUGFnZVNjcmlwdERlYnVnU2VydmVy
LmNwcCAqLzsgfTsKKwkJRjM0NzQyRTUxMzQzNjMzQzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHREZWJ1
Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjM0NzQyRTMxMzQzNjMzQzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oICovOyB9
OworCQlGMzQ3NDJFODEzNDM2MzUwMDA1MzFCQzIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM0NzQy
RTYxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCAqLzsgfTsK
KwkJRjM0NzQyRTkxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzQ3NDJFNzEz
NDM2MzUwMDA1MzFCQzIgLyogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCAqLzsgfTsKIAkJRjM2
NDRBRkYxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNjQ0QUZEMTExOTgwNTkwMEUwRDUz
NyAvKiBJbmplY3RlZFNjcmlwdC5jcHAgKi87IH07CiAJCUYzNjQ0QjAwMTExOTgwNTkwMEUwRDUz
NyAvKiBJbmplY3RlZFNjcmlwdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjM2NDRBRkUxMTE5ODA1OTAwRTBENTM3IC8qIEluamVjdGVkU2NyaXB0Lmgg
Ki87IH07CiAJCUYzNzVDQzA3MTE1MEQzMDAwMDhEREI4MSAvKiBJbnNwZWN0b3JXb3JrZXJSZXNv
dXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjM3
NUNDMDYxMTUwRDMwMDAwOEREQjgxIC8qIEluc3BlY3RvcldvcmtlclJlc291cmNlLmggKi87IH07
CkBAIC0xMjExNyw2ICsxMjEyNSwxNCBAQAogCQlGMzQ0QzcxMjExMjVCODJDMDBGMjZFRUUgLyog
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjM0NEM3NTIxMTI5NEQ5RDAwRjI2RUVFIC8qIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzQ0Qzc1NzExMjk0
RkY2MDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM0NzQyREExMzQzNjJGMDAwNTMx
QkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFBhZ2VEZWJ1Z2dlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRjM0NzQyREIxMzQzNjJGMDAwNTMxQkMyIC8qIFBhZ2VEZWJ1Z2dlckFnZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VEZWJ1Z2dlckFnZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzNDc0MkRFMTM0MzYzMUYwMDUzMUJDMiAvKiBXb3Jr
ZXJEZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
MzQ3NDJERjEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJBZ2VudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJEZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUYzNDc0MkUyMTM0MzYzM0MwMDUzMUJDMiAvKiBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RjM0NzQyRTMxMzQzNjMzQzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjM0NzQyRTYxMzQzNjM1MDAwNTMxQkMyIC8qIFdv
cmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRjM0NzQyRTcxMzQzNjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2Vy
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdvcmtlclNjcmlwdERlYnVn
U2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNjQ0QUZEMTExOTgwNTkw
MEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBJbmplY3RlZFNjcmlwdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUYzNjQ0QUZFMTExOTgwNTkwMEUwRDUzNyAvKiBJbmplY3RlZFNjcmlwdC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZFNjcmlwdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGMzc1Q0MwNjExNTBEMzAwMDA4RERCODEgLyogSW5zcGVjdG9yV29y
a2VyUmVzb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9y
V29ya2VyUmVzb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEzMTgyLDYg
KzEzMTk4LDggQEAKIAkJCQlGM0FCRkUwQjEzMEU5REEwMDBFN0Y3RDEgLyogSW5zdHJ1bWVudGlu
Z0FnZW50cy5oICovLAogCQkJCTFDODFCQTA1MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0
Q2FsbEZyYW1lLmlkbCAqLywKIAkJCQlCQ0M2NEY1RjBEQ0ZCODRFMDA4MUVGM0IgLyogbG9jYWxp
emVkU3RyaW5ncy5qcyAqLywKKwkJCQlGMzQ3NDJEQTEzNDM2MkYwMDA1MzFCQzIgLyogUGFnZURl
YnVnZ2VyQWdlbnQuY3BwICovLAorCQkJCUYzNDc0MkRCMTM0MzYyRjAwMDUzMUJDMiAvKiBQYWdl
RGVidWdnZXJBZ2VudC5oICovLAogCQkJCUYzOUJFOTU5MTI2NzNCRjQwMEUwQTY3NCAvKiBTY3Jp
cHRBcmd1bWVudHMuY3BwICovLAogCQkJCUYzOUJFOTVBMTI2NzNCRjQwMEUwQTY3NCAvKiBTY3Jp
cHRBcmd1bWVudHMuaCAqLywKIAkJCQk3QUZENEE4QTExMzFDMjc2MDAzNUI4ODMgLyogU2NyaXB0
QnJlYWtwb2ludC5oICovLApAQCAtMTMxOTQsNiArMTMyMTIsOCBAQAogCQkJCTlGQTM3RUYwMTE3
MkZENDEwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9kZS5pZGwgKi8sCiAJCQkJNzU1M0NGRTcx
MDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgKi8sCiAJCQkJNzU1
M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovLAorCQkJ
CUYzNDc0MkRFMTM0MzYzMUYwMDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmNwcCAqLywK
KwkJCQlGMzQ3NDJERjEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJBZ2VudC5oICov
LAogCQkJKTsKIAkJCXBhdGggPSBpbnNwZWN0b3I7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpAQCAtMTc5NTcsNiArMTc5NzcsOCBAQAogCQkJCTE0Q0Q4RDgxMTA2QjUyOTAwMEE0NkQyMyAv
KiBKU1NoYXJlZFdvcmtlckN1c3RvbS5jcHAgKi8sCiAJCQkJRTFDMzZEMzIwRUIwQTA5NDAwNzQx
MEJDIC8qIEpTV29ya2VyQ29udGV4dEJhc2UuY3BwICovLAogCQkJCUUxQzM2RDMzMEVCMEEwOTQw
MDc0MTBCQyAvKiBKU1dvcmtlckNvbnRleHRCYXNlLmggKi8sCisJCQkJRjM0NzQyRTIxMzQzNjMz
QzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8sCisJCQkJRjM0NzQyRTMx
MzQzNjMzQzAwNTMxQkMyIC8qIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oICovLAogCQkJCUJDQTM3
OEJBMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uY3BwICovLAogCQkJCUJDQTM3
OEJCMEQxNUY2NDIwMEI3OTNENiAvKiBTY2hlZHVsZWRBY3Rpb24uaCAqLywKIAkJCQk0MUYxRDIx
RTBFRjM1QzJBMDBEQTg3NTMgLyogU2NyaXB0Q2FjaGVkRnJhbWVEYXRhLmNwcCAqLywKQEAgLTE3
OTk2LDYgKzE4MDE4LDggQEAKIAkJCQlCQzUzRDkxMDExNDMxMENDMDAwRDgxN0UgLyogV2ViQ29y
ZUpTQ2xpZW50RGF0YS5oICovLAogCQkJCUUxQTY0M0ZDMEVDMDk3QTAwMDc3OTY2OCAvKiBXb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmNwcCAqLywKIAkJCQlFMUE2NDNGMTBFQzA5NzI1MDA3Nzk2Njgg
LyogV29ya2VyU2NyaXB0Q29udHJvbGxlci5oICovLAorCQkJCUYzNDc0MkU2MTM0MzYzNTAwMDUz
MUJDMiAvKiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8sCisJCQkJRjM0NzQyRTcxMzQz
NjM1MDAwNTMxQkMyIC8qIFdvcmtlclNjcmlwdERlYnVnU2VydmVyLmggKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IGpzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTIyNzI1LDYgKzIyNzQ5
LDEwIEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTc3RTJFMEYxMkYwRkM5QzAwQzEzMzc5IC8qIFhTU0ZpbHRl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTk5QzY3MUUxMzQzNDM5NDAwQzM0MjNDIC8qIEphdmFN
ZXRob2RKb2JqZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlGMzQ3NDJERDEzNDM2MkYwMDA1MzFC
QzIgLyogUGFnZURlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUYzNDc0MkUxMTM0
MzYzMUYwMDUzMUJDMiAvKiBXb3JrZXJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGMzQ3NDJFNTEzNDM2MzNDMDA1MzFCQzIgLyogUGFnZVNjcmlwdERlYnVnU2VydmVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGMzQ3NDJFOTEzNDM2MzUwMDA1MzFCQzIgLyogV29ya2VyU2NyaXB0
RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjUzOTgsNiArMjU0MjYsMTAgQEAKIAkJ
CQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTk3N0UyRTBFMTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTk5QzY3MUMxMzQzNDM4OTAwQzM0MjNDIC8qIEphdmFNZXRob2RK
b2JqZWN0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUYzNDc0MkRDMTM0MzYyRjAwMDUzMUJDMiAv
KiBQYWdlRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGMzQ3NDJFMDEzNDM2
MzFGMDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlGMzQ3NDJFNDEzNDM2MzNDMDA1MzFCQzIgLyogUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUYzNDc0MkU4MTM0MzYzNTAwMDUzMUJDMiAvKiBXb3JrZXJTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCmluZGV4IDkzMWZlZDMuLmQ1YzkxMzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9u
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25l
LmNwcApAQCAtMTU5LDYgKzE1OSw3IEBACiAjaW5jbHVkZSAiSlNYU0xUUHJvY2Vzc29yQ3VzdG9t
LmNwcCIKICNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCIKICNpbmNsdWRlICJNZW1v
cnlJbmZvLmNwcCIKKyNpbmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIgogI2luY2x1
ZGUgIlNjaGVkdWxlZEFjdGlvbi5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0Q2FjaGVkRnJhbWVEYXRh
LmNwcCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCIKQEAgLTE3Miw0ICsx
NzMsNSBAQAogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmNwcCIKICNpbmNsdWRlICJTZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwIgogI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwIgor
I2luY2x1ZGUgIldvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCIKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3Bw
CmluZGV4IDEyYzhiN2EuLmQ1NjI1MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTQxLDYgKzQx
LDcgQEAKICNlbmRpZgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJJbmpl
Y3RlZFNjcmlwdEhvc3QuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTc1LDcgKzc2LDcgQEAgU2NyaXB0VmFsdWUgSW5qZWN0ZWRT
Y3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZShTY3JpcHRTdGF0ZSogc3RhdGUsIE5vZGUqIG5v
ZGUKIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmN1cnJlbnRDYWxsRnJhbWUoRXhlY1N0
YXRlKiBleGVjKQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIEphdmFT
Y3JpcHRDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5j
dXJyZW50Q2FsbEZyYW1lKCk7CisgICAgSmF2YVNjcmlwdENhbGxGcmFtZSogY2FsbEZyYW1lID0g
aW1wbCgpLT5kZWJ1Z2dlckFnZW50KCktPnNjcmlwdERlYnVnU2VydmVyKCkuY3VycmVudENhbGxG
cmFtZSgpOwogICAgIGlmICghY2FsbEZyYW1lIHx8ICFjYWxsRnJhbWUtPmlzVmFsaWQoKSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDAwMDAwMDAuLjNkOWNiOWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsMjE1IEBA
CisvKgorICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgor
CisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNpbmNsdWRlICJGcmFtZS5oIgor
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93Q3VzdG9tLmgiCisj
aW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlBsdWdp
blZpZXcuaCIKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCisjaW5jbHVkZSAiV2lk
Z2V0LmgiCisjaW5jbHVkZSA8cnVudGltZS9KU0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpT
QzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgUGFnZSogdG9QYWdlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQVNTRVJUX0FSRyhnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdCk7CisKKyAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gYXNKU0RPTVdpbmRvdyhn
bG9iYWxPYmplY3QpOworICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRvdy0+aW1wbCgpLT5mcmFtZSgp
OworICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5wYWdlKCkgOiAwOworfQorCitQYWdlU2NyaXB0
RGVidWdTZXJ2ZXImIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciwgc2VydmVyLCAoKSk7CisgICAg
cmV0dXJuIHNlcnZlcjsKK30KKworUGFnZVNjcmlwdERlYnVnU2VydmVyOjpQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIoKQorICAgIDogU2NyaXB0RGVidWdTZXJ2ZXIoKQoreworfQorCitQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6On5QYWdlU2NyaXB0RGVidWdTZXJ2ZXIoKQoreworICAgIGRlbGV0ZUFsbFZh
bHVlcyhtX3BhZ2VMaXN0ZW5lcnNNYXApOworfQorCit2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZl
cjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2Up
Cit7CisgICAgQVNTRVJUX0FSRyhsaXN0ZW5lciwgbGlzdGVuZXIpOworICAgIEFTU0VSVF9BUkco
cGFnZSwgcGFnZSk7CisKKyAgICBwYWlyPFBhZ2VMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIDApOworICAgIGlmIChyZXN1
bHQuc2Vjb25kKQorICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBMaXN0ZW5lclNl
dDsKKworICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSByZXN1bHQuZmlyc3QtPnNlY29uZDsK
KyAgICBsaXN0ZW5lcnMtPmFkZChsaXN0ZW5lcik7CisKKyAgICByZWNvbXBpbGVBbGxKU0Z1bmN0
aW9uc1Nvb24oKTsKKyAgICBwYWdlLT5zZXREZWJ1Z2dlcih0aGlzKTsKK30KKwordm9pZCBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxp
c3RlbmVyLCBQYWdlKiBwYWdlKQoreworICAgIEFTU0VSVF9BUkcobGlzdGVuZXIsIGxpc3RlbmVy
KTsKKyAgICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOworCisgICAgUGFnZUxpc3RlbmVyc01hcDo6
aXRlcmF0b3IgaXQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuZmluZChwYWdlKTsKKyAgICBpZiAoaXQg
PT0gbV9wYWdlTGlzdGVuZXJzTWFwLmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBMaXN0
ZW5lclNldCogbGlzdGVuZXJzID0gaXQtPnNlY29uZDsKKyAgICBsaXN0ZW5lcnMtPnJlbW92ZShs
aXN0ZW5lcik7CisgICAgaWYgKGxpc3RlbmVycy0+aXNFbXB0eSgpKSB7CisgICAgICAgIG1fcGFn
ZUxpc3RlbmVyc01hcC5yZW1vdmUoaXQpOworICAgICAgICBkZWxldGUgbGlzdGVuZXJzOworICAg
ICAgICBkaWRSZW1vdmVMYXN0TGlzdGVuZXIocGFnZSk7CisgICAgfQorfQorCit2b2lkIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVi
dWdTZXJ2ZXI+KikKK3sKKyAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwor
ICAgIC8vIElmIEphdmFTY3JpcHQgc3RhY2sgaXMgbm90IGVtcHR5IHBvc3Rwb25lIHJlY29tcGls
YXRpb24uCisgICAgaWYgKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEoKS0+ZHluYW1p
Y0dsb2JhbE9iamVjdCkKKyAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7Cisg
ICAgZWxzZQorICAgICAgICBEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoSlNET01X
aW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKK30KKworU2NyaXB0RGVidWdTZXJ2ZXI6Okxp
c3RlbmVyU2V0KiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmdldExpc3RlbmVyc0Zvckdsb2JhbE9i
amVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIFBhZ2UqIHBhZ2UgPSB0
b1BhZ2UoZ2xvYmFsT2JqZWN0KTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBtX3BhZ2VMaXN0ZW5lcnNNYXAuZ2V0KHBhZ2UpOworfQorCit2b2lkIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQoreworICAgIFBhZ2UqIHBhZ2UgPSB0b1BhZ2UoZ2xvYmFsT2JqZWN0KTsKKyAgICBtX3Bh
dXNlZFBhZ2UgPSBwYWdlOworICAgIHNldEphdmFTY3JpcHRQYXVzZWQocGFnZS0+Z3JvdXAoKSwg
dHJ1ZSk7Cit9CisKK3ZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250aW51ZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgUGFnZSogcGFnZSA9IHRvUGFn
ZShnbG9iYWxPYmplY3QpOworICAgIG1fcGF1c2VkUGFnZSA9IDA7CisgICAgc2V0SmF2YVNjcmlw
dFBhdXNlZChwYWdlLT5ncm91cCgpLCBmYWxzZSk7Cit9CisKK3ZvaWQgUGFnZVNjcmlwdERlYnVn
U2VydmVyOjpkaWRSZW1vdmVMYXN0TGlzdGVuZXIoUGFnZSogcGFnZSkKK3sKKyAgICBpZiAobV9w
YXVzZWRQYWdlID09IHBhZ2UpCisgICAgICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50
cyA9IHRydWU7CisKKyAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKKyAgICBwYWdl
LT5zZXREZWJ1Z2dlcigwKTsKK30KKwordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEph
dmFTY3JpcHRQYXVzZWQoY29uc3QgUGFnZUdyb3VwJiBwYWdlR3JvdXAsIGJvb2wgcGF1c2VkKQor
eworICAgIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQocGF1c2VkKTsKKworICAgIGNvbnN0
IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IHBhZ2VHcm91cC5wYWdlcygpOworCisgICAgSGFzaFNl
dDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBhZ2VzLmVuZCgpOworICAgIGZvciAoSGFz
aFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KQorICAgICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKCppdCwgcGF1c2VkKTsKK30KKwor
dm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoUGFnZSogcGFn
ZSwgYm9vbCBwYXVzZWQpCit7CisgICAgQVNTRVJUX0FSRyhwYWdlLCBwYWdlKTsKKworICAgIHBh
Z2UtPnNldERlZmVyc0xvYWRpbmcocGF1c2VkKTsKKworICAgIGZvciAoRnJhbWUqIGZyYW1lID0g
cGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNl
TmV4dCgpKQorICAgICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKGZyYW1lLCBwYXVzZWQpOworfQor
Cit2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSog
ZnJhbWUsIGJvb2wgcGF1c2VkKQoreworICAgIEFTU0VSVF9BUkcoZnJhbWUsIGZyYW1lKTsKKwor
ICAgIGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhl
Y3V0ZVNjcmlwdCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZyYW1lLT5zY3JpcHQoKS0+c2V0
UGF1c2VkKHBhdXNlZCk7CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1l
bnQoKTsKKyAgICBpZiAocGF1c2VkKSB7CisgICAgICAgIGRvY3VtZW50LT5zdXNwZW5kU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgIGRvY3VtZW50LT5zdXNw
ZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBh
dXNlZCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG9jdW1lbnQtPnJlc3VtZUFjdGl2ZURPTU9i
amVjdHMoKTsKKyAgICAgICAgZG9jdW1lbnQtPnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJv
bGxlckNhbGxiYWNrcygpOworICAgIH0KKworICAgIHNldEphdmFTY3JpcHRQYXVzZWQoZnJhbWUt
PnZpZXcoKSwgcGF1c2VkKTsKK30KKwordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEph
dmFTY3JpcHRQYXVzZWQoRnJhbWVWaWV3KiB2aWV3LCBib29sIHBhdXNlZCkKK3sKKyAgICBpZiAo
IXZpZXcpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRyPFdpZGdl
dD4gPiogY2hpbGRyZW4gPSB2aWV3LT5jaGlsZHJlbigpOworICAgIEFTU0VSVChjaGlsZHJlbik7
CisKKyAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNo
aWxkcmVuLT5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBjaGlsZHJlbi0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAg
ICAgIFdpZGdldCogd2lkZ2V0ID0gKCppdCkuZ2V0KCk7CisgICAgICAgIGlmICghd2lkZ2V0LT5p
c1BsdWdpblZpZXcoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBzdGF0aWNfY2Fz
dDxQbHVnaW5WaWV3Kj4od2lkZ2V0KS0+c2V0SmF2YVNjcmlwdFBhdXNlZChwYXVzZWQpOworICAg
IH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU1
NjNlMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9QYWdl
U2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChj
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXJfaAorI2RlZmluZSBQYWdlU2NyaXB0RGVidWdTZXJ2ZXJfaAorCisjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgor
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
RnJhbWU7CitjbGFzcyBGcmFtZVZpZXc7CitjbGFzcyBQYWdlOworY2xhc3MgUGFnZUdyb3VwOwor
CitjbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIgOiBwdWJsaWMgU2NyaXB0RGVidWdTZXJ2ZXIg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcik7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciYgc2hhcmVkKCk7CisKKyAgICB2
b2lkIGFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBQYWdlKik7CisgICAgdm9pZCBy
ZW1vdmVMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOworCisgICAgdmlydHVh
bCB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVyPFNjcmlwdERlYnVnU2VydmVyPiop
OworCitwcml2YXRlOgorICAgIHR5cGVkZWYgSGFzaE1hcDxQYWdlKiwgTGlzdGVuZXJTZXQqPiBQ
YWdlTGlzdGVuZXJzTWFwOworCisgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyKCk7CisgICAgdmly
dHVhbCB+UGFnZVNjcmlwdERlYnVnU2VydmVyKCk7CisKKyAgICB2aXJ0dWFsIExpc3RlbmVyU2V0
KiBnZXRMaXN0ZW5lcnNGb3JHbG9iYWxPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCopOworICAg
IHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CisgICAgdmlydHVh
bCB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKworICAgIHZvaWQgZGlk
UmVtb3ZlTGFzdExpc3RlbmVyKFBhZ2UqKTsKKworICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNl
ZChjb25zdCBQYWdlR3JvdXAmLCBib29sIHBhdXNlZCk7CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0
UGF1c2VkKFBhZ2UqLCBib29sIHBhdXNlZCk7CisgICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2Vk
KEZyYW1lKiwgYm9vbCBwYXVzZWQpOworICAgIHZvaWQgc2V0SmF2YVNjcmlwdFBhdXNlZChGcmFt
ZVZpZXcqLCBib29sIHBhdXNlZCk7CisKKyAgICBQYWdlTGlzdGVuZXJzTWFwIG1fcGFnZUxpc3Rl
bmVyc01hcDsKKyAgICBQYWdlKiBtX3BhdXNlZFBhZ2U7Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKworI2VuZGlm
IC8vIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMzJhM2IyZC4uMDVjMGYyYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAt
MSw2ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0zMiw0NSArMzIsMjcgQEAKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogCi0j
aW5jbHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZVRyZWUuaCIKLSNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
LSNpbmNsdWRlICJKU0RPTVdpbmRvd0N1c3RvbS5oIgogI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxs
RnJhbWUuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGFnZUdyb3VwLmgiCi0jaW5j
bHVkZSAiUGx1Z2luVmlldy5oIgogI2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIKICNpbmNs
dWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5o
IgotI2luY2x1ZGUgIlNjcm9sbFZpZXcuaCIKLSNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRl
IDxkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5oPgogI2luY2x1ZGUgPHBhcnNlci9Tb3VyY2VQ
cm92aWRlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNMb2NrLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgotI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4K
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TY3JpcHRE
ZWJ1Z1NlcnZlciYgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpCi17Ci0gICAgREVGSU5FX1NU
QVRJQ19MT0NBTChTY3JpcHREZWJ1Z1NlcnZlciwgc2VydmVyLCAoKSk7Ci0gICAgcmV0dXJuIHNl
cnZlcjsKLX0KLQogU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERlYnVnU2VydmVyKCkKICAgICA6
IG1fY2FsbGluZ0xpc3RlbmVycyhmYWxzZSkKICAgICAsIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShEb250UGF1c2VPbkV4Y2VwdGlvbnMpCiAgICAgLCBtX3BhdXNlT25OZXh0U3RhdGVtZW50KGZh
bHNlKQogICAgICwgbV9wYXVzZWQoZmFsc2UpCi0gICAgLCBtX3BhdXNlZFBhZ2UoMCkKICAgICAs
IG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyh0cnVlKQogICAgICwgbV9icmVha3BvaW50
c0FjdGl2YXRlZCh0cnVlKQogICAgICwgbV9wYXVzZU9uQ2FsbEZyYW1lKDApCkBAIC04Myw0NyAr
NjUsNiBAQCBTY3JpcHREZWJ1Z1NlcnZlcjo6flNjcmlwdERlYnVnU2VydmVyKCkKICAgICBkZWxl
dGVBbGxWYWx1ZXMobV9wYWdlTGlzdGVuZXJzTWFwKTsKIH0KIAotdm9pZCBTY3JpcHREZWJ1Z1Nl
cnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBh
Z2UpCi17Ci0gICAgQVNTRVJUX0FSRyhsaXN0ZW5lciwgbGlzdGVuZXIpOwotICAgIEFTU0VSVF9B
UkcocGFnZSwgcGFnZSk7Ci0KLSAgICBwYWlyPFBhZ2VMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yLCBi
b29sPiByZXN1bHQgPSBtX3BhZ2VMaXN0ZW5lcnNNYXAuYWRkKHBhZ2UsIDApOwotICAgIGlmIChy
ZXN1bHQuc2Vjb25kKQotICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZCA9IG5ldyBMaXN0ZW5l
clNldDsKLQotICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSByZXN1bHQuZmlyc3QtPnNlY29u
ZDsKLSAgICBsaXN0ZW5lcnMtPmFkZChsaXN0ZW5lcik7Ci0KLSAgICBkaWRBZGRMaXN0ZW5lcihw
YWdlKTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0
RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCi17Ci0gICAgQVNTRVJUX0FSRyhs
aXN0ZW5lciwgbGlzdGVuZXIpOwotICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7Ci0KLSAgICBQ
YWdlTGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdCA9IG1fcGFnZUxpc3RlbmVyc01hcC5maW5kKHBh
Z2UpOwotICAgIGlmIChpdCA9PSBtX3BhZ2VMaXN0ZW5lcnNNYXAuZW5kKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSBpdC0+c2Vjb25kOwotICAgIGxp
c3RlbmVycy0+cmVtb3ZlKGxpc3RlbmVyKTsKLSAgICBpZiAobGlzdGVuZXJzLT5pc0VtcHR5KCkp
IHsKLSAgICAgICAgbV9wYWdlTGlzdGVuZXJzTWFwLnJlbW92ZShpdCk7Ci0gICAgICAgIGRlbGV0
ZSBsaXN0ZW5lcnM7Ci0gICAgfQotCi0gICAgZGlkUmVtb3ZlTGlzdGVuZXIocGFnZSk7Ci19Ci0K
LWJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6Omhhc0xpc3RlbmVyc0ludGVyZXN0ZWRJblBhZ2UoUGFn
ZSogcGFnZSkKLXsKLSAgICBBU1NFUlRfQVJHKHBhZ2UsIHBhZ2UpOwotCi0gICAgcmV0dXJuIG1f
cGFnZUxpc3RlbmVyc01hcC5jb250YWlucyhwYWdlKTsKLX0KLQogU3RyaW5nIFNjcmlwdERlYnVn
U2VydmVyOjpzZXRCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgc291cmNlSUQsIGNvbnN0IFNjcmlw
dEJyZWFrcG9pbnQmIHNjcmlwdEJyZWFrcG9pbnQsIGludCogYWN0dWFsTGluZU51bWJlciwgaW50
KiBhY3R1YWxDb2x1bW5OdW1iZXIpCiB7CiAgICAgaW50cHRyX3Qgc291cmNlSURWYWx1ZSA9IHNv
dXJjZUlELnRvSW50UHRyKCk7CkBAIC0yOTksMTUgKzI0MCw2IEBAIHZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OmRpc3BhdGNoRmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBMaXN0ZW5lclNldCYgbGlz
dGVuZXJzCiAgICAgICAgIGNvcHlbaV0tPmZhaWxlZFRvUGFyc2VTb3VyY2UodXJsLCBkYXRhLCBm
aXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKIH0KIAotc3RhdGljIFBhZ2UqIHRv
UGFnZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIEFTU0VSVF9BUkcoZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QpOwotCi0gICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IGFz
SlNET01XaW5kb3coZ2xvYmFsT2JqZWN0KTsKLSAgICBGcmFtZSogZnJhbWUgPSB3aW5kb3ctPmlt
cGwoKS0+ZnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUgPyBmcmFtZS0+cGFnZSgpIDogMDsKLX0K
LQogc3RhdGljIFNjcmlwdFdvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICBpZiAoY3VycmVudFdvcmxkKGV4ZWMpID09IG1haW5UaHJlYWROb3JtYWxXb3Js
ZCgpKQpAQCAtMzMzLDIyICsyNjUsMTkgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNl
UGFyc2VkKEV4ZWNTdGF0ZSogZXhlYywgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3YKICAgICBp
ZiAobV9jYWxsaW5nTGlzdGVuZXJzKQogICAgICAgICByZXR1cm47CiAKLSAgICBQYWdlKiBwYWdl
ID0gdG9QYWdlKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7Ci0gICAgaWYgKCFwYWdlKQor
ICAgIExpc3RlbmVyU2V0KiBsaXN0ZW5lcnMgPSBnZXRMaXN0ZW5lcnNGb3JHbG9iYWxPYmplY3Qo
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKKyAgICBpZiAoIWxpc3RlbmVycykKICAgICAg
ICAgcmV0dXJuOwotCi0gICAgU2NyaXB0V29ybGRUeXBlIHdvcmxkVHlwZSA9IGN1cnJlbnRXb3Js
ZFR5cGUoZXhlYyk7CisgICAgQVNTRVJUKCFsaXN0ZW5lcnMtPmlzRW1wdHkoKSk7CiAKICAgICBt
X2NhbGxpbmdMaXN0ZW5lcnMgPSB0cnVlOwogCiAgICAgYm9vbCBpc0Vycm9yID0gZXJyb3JMaW5l
ICE9IC0xOwotCi0gICAgaWYgKExpc3RlbmVyU2V0KiBwYWdlTGlzdGVuZXJzID0gbV9wYWdlTGlz
dGVuZXJzTWFwLmdldChwYWdlKSkgewotICAgICAgICBBU1NFUlQoIXBhZ2VMaXN0ZW5lcnMtPmlz
RW1wdHkoKSk7Ci0gICAgICAgIGlmIChpc0Vycm9yKQotICAgICAgICAgICAgZGlzcGF0Y2hGYWls
ZWRUb1BhcnNlU291cmNlKCpwYWdlTGlzdGVuZXJzLCBzb3VyY2VQcm92aWRlciwgZXJyb3JMaW5l
LCB1c3RyaW5nVG9TdHJpbmcoZXJyb3JNZXNzYWdlKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGRpc3BhdGNoRGlkUGFyc2VTb3VyY2UoKnBhZ2VMaXN0ZW5lcnMsIHNvdXJjZVByb3ZpZGVy
LCB3b3JsZFR5cGUpOworICAgIGlmIChpc0Vycm9yKQorICAgICAgICBkaXNwYXRjaEZhaWxlZFRv
UGFyc2VTb3VyY2UoKmxpc3RlbmVycywgc291cmNlUHJvdmlkZXIsIGVycm9yTGluZSwgdXN0cmlu
Z1RvU3RyaW5nKGVycm9yTWVzc2FnZSkpOworICAgIGVsc2UgeworICAgICAgICBTY3JpcHRXb3Js
ZFR5cGUgd29ybGRUeXBlID0gY3VycmVudFdvcmxkVHlwZShleGVjKTsKKyAgICAgICAgZGlzcGF0
Y2hEaWRQYXJzZVNvdXJjZSgqbGlzdGVuZXJzLCBzb3VyY2VQcm92aWRlciwgd29ybGRUeXBlKTsK
ICAgICB9CiAKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSBmYWxzZTsKQEAgLTM2Miw4NSArMjkx
LDI2IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVy
cyhjb25zdCBMaXN0ZW5lclNldCYgbGlzdGVuZXJzCiAgICAgICAgICh0aGlzLT4qY2FsbGJhY2sp
KGNvcHlbaV0pOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZ1bmN0aW9u
VG9MaXN0ZW5lcnMoSmF2YVNjcmlwdEV4ZWN1dGlvbkNhbGxiYWNrIGNhbGxiYWNrLCBQYWdlKiBw
YWdlKQordm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJz
KEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjayBjYWxsYmFjaywgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIHsKICAgICBpZiAobV9jYWxsaW5nTGlzdGVuZXJzKQogICAgICAgICByZXR1
cm47CiAKICAgICBtX2NhbGxpbmdMaXN0ZW5lcnMgPSB0cnVlOwogCi0gICAgaWYgKExpc3RlbmVy
U2V0KiBwYWdlTGlzdGVuZXJzID0gbV9wYWdlTGlzdGVuZXJzTWFwLmdldChwYWdlKSkgewotICAg
ICAgICBBU1NFUlQoIXBhZ2VMaXN0ZW5lcnMtPmlzRW1wdHkoKSk7Ci0gICAgICAgIGRpc3BhdGNo
RnVuY3Rpb25Ub0xpc3RlbmVycygqcGFnZUxpc3RlbmVycywgY2FsbGJhY2spOworICAgIGlmIChM
aXN0ZW5lclNldCogbGlzdGVuZXJzID0gZ2V0TGlzdGVuZXJzRm9yR2xvYmFsT2JqZWN0KGdsb2Jh
bE9iamVjdCkpIHsKKyAgICAgICAgQVNTRVJUKCFsaXN0ZW5lcnMtPmlzRW1wdHkoKSk7CisgICAg
ICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygqbGlzdGVuZXJzLCBjYWxsYmFjayk7CiAg
ICAgfQogCiAgICAgbV9jYWxsaW5nTGlzdGVuZXJzID0gZmFsc2U7CiB9CiAKLXZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVzZWQoY29uc3QgUGFnZUdyb3VwJiBwYWdlR3Jv
dXAsIGJvb2wgcGF1c2VkKQotewotICAgIHNldE1haW5UaHJlYWRDYWxsYmFja3NQYXVzZWQocGF1
c2VkKTsKLQotICAgIGNvbnN0IEhhc2hTZXQ8UGFnZSo+JiBwYWdlcyA9IHBhZ2VHcm91cC5wYWdl
cygpOwotCi0gICAgSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHBhZ2VzLmVu
ZCgpOwotICAgIGZvciAoSGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKCpp
dCwgcGF1c2VkKTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBh
dXNlZChQYWdlKiBwYWdlLCBib29sIHBhdXNlZCkKLXsKLSAgICBBU1NFUlRfQVJHKHBhZ2UsIHBh
Z2UpOwotCi0gICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhwYXVzZWQpOwotCi0gICAgZm9yIChG
cmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS0+dHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIHNldEphdmFTY3JpcHRQYXVzZWQoZnJhbWUs
IHBhdXNlZCk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQYXVz
ZWQoRnJhbWUqIGZyYW1lLCBib29sIHBhdXNlZCkKLXsKLSAgICBBU1NFUlRfQVJHKGZyYW1lLCBm
cmFtZSk7Ci0KLSAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoTm90
QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBmcmFtZS0+c2Ny
aXB0KCktPnNldFBhdXNlZChwYXVzZWQpOwotCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJh
bWUtPmRvY3VtZW50KCk7Ci0gICAgaWYgKHBhdXNlZCkgewotICAgICAgICBkb2N1bWVudC0+c3Vz
cGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwotICAgICAgICBkb2N1
bWVudC0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0OjpKYXZhU2NyaXB0
RGVidWdnZXJQYXVzZWQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGRvY3VtZW50LT5yZXN1bWVB
Y3RpdmVET01PYmplY3RzKCk7Ci0gICAgICAgIGRvY3VtZW50LT5yZXN1bWVTY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKLSAgICB9Ci0KLSAgICBzZXRKYXZhU2NyaXB0UGF1
c2VkKGZyYW1lLT52aWV3KCksIHBhdXNlZCk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6
OnNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWVWaWV3KiB2aWV3LCBib29sIHBhdXNlZCkKLXsKLSAg
ICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIGNvbnN0IEhhc2hTZXQ8UmVmUHRy
PFdpZGdldD4gPiogY2hpbGRyZW4gPSB2aWV3LT5jaGlsZHJlbigpOwotICAgIEFTU0VSVChjaGls
ZHJlbik7Ci0KLSAgICBIYXNoU2V0PFJlZlB0cjxXaWRnZXQ+ID46OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGNoaWxkcmVuLT5lbmQoKTsKLSAgICBmb3IgKEhhc2hTZXQ8UmVmUHRyPFdpZGdldD4gPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZHJlbi0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgIFdpZGdldCogd2lkZ2V0ID0gKCppdCkuZ2V0KCk7Ci0gICAgICAgIGlmICghd2lk
Z2V0LT5pc1BsdWdpblZpZXcoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBzdGF0
aWNfY2FzdDxQbHVnaW5WaWV3Kj4od2lkZ2V0KS0+c2V0SmF2YVNjcmlwdFBhdXNlZChwYXVzZWQp
OwotICAgIH0KLX0KLQogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y3JlYXRlQ2FsbEZyYW1lQW5k
UGF1c2VJZk5lZWRlZChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUs
IGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKIHsKICAgICBUZXh0UG9zaXRpb24w
IHRleHRQb3NpdGlvbihXVEY6Ok9uZUJhc2VkTnVtYmVyOjpmcm9tT25lQmFzZWRJbnQobGluZU51
bWJlcikuY29udmVydFRvWmVyb0Jhc2VkKCksIFdURjo6WmVyb0Jhc2VkTnVtYmVyOjpiYXNlKCkp
OwogICAgIG1fY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxsRnJhbWU6OmNyZWF0ZShk
ZWJ1Z2dlckNhbGxGcmFtZSwgbV9jdXJyZW50Q2FsbEZyYW1lLCBzb3VyY2VJRCwgdGV4dFBvc2l0
aW9uKTsKLSAgICBwYXVzZUlmTmVlZGVkKHRvUGFnZShkZWJ1Z2dlckNhbGxGcmFtZS5keW5hbWlj
R2xvYmFsT2JqZWN0KCkpKTsKKyAgICBwYXVzZUlmTmVlZGVkKGRlYnVnZ2VyQ2FsbEZyYW1lLmR5
bmFtaWNHbG9iYWxPYmplY3QoKSk7CiB9CiAKIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnVwZGF0
ZUNhbGxGcmFtZUFuZFBhdXNlSWZOZWVkZWQoY29uc3QgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVn
Z2VyQ2FsbEZyYW1lLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxpbmVOdW1iZXIpCkBAIC00NTEs
MTUgKzMyMSwxNSBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp1cGRhdGVDYWxsRnJhbWVBbmRQ
YXVzZUlmTmVlZGVkKGNvbnN0IERlYnVnZ2VyQ2FsbEZyYW1lJgogCiAgICAgVGV4dFBvc2l0aW9u
MCB0ZXh0UG9zaXRpb24oV1RGOjpPbmVCYXNlZE51bWJlcjo6ZnJvbU9uZUJhc2VkSW50KGxpbmVO
dW1iZXIpLmNvbnZlcnRUb1plcm9CYXNlZCgpLCBXVEY6Olplcm9CYXNlZE51bWJlcjo6YmFzZSgp
KTsKICAgICBtX2N1cnJlbnRDYWxsRnJhbWUtPnVwZGF0ZShkZWJ1Z2dlckNhbGxGcmFtZSwgc291
cmNlSUQsIHRleHRQb3NpdGlvbik7Ci0gICAgcGF1c2VJZk5lZWRlZCh0b1BhZ2UoZGVidWdnZXJD
YWxsRnJhbWUuZHluYW1pY0dsb2JhbE9iamVjdCgpKSk7CisgICAgcGF1c2VJZk5lZWRlZChkZWJ1
Z2dlckNhbGxGcmFtZS5keW5hbWljR2xvYmFsT2JqZWN0KCkpOwogfQogCi12b2lkIFNjcmlwdERl
YnVnU2VydmVyOjpwYXVzZUlmTmVlZGVkKFBhZ2UqIHBhZ2UpCit2b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBkeW5hbWljR2xvYmFsT2JqZWN0KQog
ewogICAgIGlmIChtX3BhdXNlZCkKICAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFwYWdlIHx8
ICFoYXNMaXN0ZW5lcnNJbnRlcmVzdGVkSW5QYWdlKHBhZ2UpKQorIAorICAgIGlmICghZ2V0TGlz
dGVuZXJzRm9yR2xvYmFsT2JqZWN0KGR5bmFtaWNHbG9iYWxPYmplY3QpKQogICAgICAgICByZXR1
cm47CiAKICAgICBib29sIHBhdXNlTm93ID0gbV9wYXVzZU9uTmV4dFN0YXRlbWVudDsKQEAgLTQ3
MSwxMSArMzQxLDkgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VJZk5lZWRlZChQYWdl
KiBwYWdlKQogICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IDA7CiAgICAgbV9wYXVzZU9uTmV4dFN0
YXRlbWVudCA9IGZhbHNlOwogICAgIG1fcGF1c2VkID0gdHJ1ZTsKLSAgICBtX3BhdXNlZFBhZ2Ug
PSBwYWdlOwogCi0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCZTY3JpcHREZWJ1Z1Nl
cnZlcjo6ZGlzcGF0Y2hEaWRQYXVzZSwgcGFnZSk7Ci0KLSAgICBzZXRKYXZhU2NyaXB0UGF1c2Vk
KHBhZ2UtPmdyb3VwKCksIHRydWUpOworICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygm
U2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlkUGF1c2UsIGR5bmFtaWNHbG9iYWxPYmplY3Qp
OworICAgIGRpZFBhdXNlKGR5bmFtaWNHbG9iYWxPYmplY3QpOwogCiAgICAgVGltZXJCYXNlOjpm
aXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKIApAQCAtNDg0LDEyICszNTIsMTAgQEAgdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cGF1c2VJZk5lZWRlZChQYWdlKiBwYWdlKQogICAgIHdoaWxl
ICghbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzICYmICFsb29wLmVuZGVkKCkpCiAgICAg
ICAgIGxvb3AuY3ljbGUoKTsKIAotICAgIHNldEphdmFTY3JpcHRQYXVzZWQocGFnZS0+Z3JvdXAo
KSwgZmFsc2UpOworICAgIGRpZENvbnRpbnVlKGR5bmFtaWNHbG9iYWxPYmplY3QpOworICAgIGRp
c3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygmU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRGlk
Q29udGludWUsIGR5bmFtaWNHbG9iYWxPYmplY3QpOwogCiAgICAgbV9wYXVzZWQgPSBmYWxzZTsK
LSAgICBtX3BhdXNlZFBhZ2UgPSAwOwotCi0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJz
KCZTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hEaWRDb250aW51ZSwgcGFnZSk7CiB9CiAKIHZv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbGxFdmVudChjb25zdCBEZWJ1Z2dlckNhbGxGcmFtZSYg
ZGVidWdnZXJDYWxsRnJhbWUsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZU51bWJlcikKQEAg
LTU2NSwzNCArNDMxLDYgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNG
dW5jdGlvbnNTb29uKCkKICAgICBtX3JlY29tcGlsZVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0K
IAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGltZXI8
U2NyaXB0RGVidWdTZXJ2ZXI+KikKLXsKLSAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9u
c09ubHkpOwotICAgIC8vIElmIEphdmFTY3JpcHQgc3RhY2sgaXMgbm90IGVtcHR5IHBvc3Rwb25l
IHJlY29tcGlsYXRpb24uCi0gICAgaWYgKEpTRE9NV2luZG93Ojpjb21tb25KU0dsb2JhbERhdGEo
KS0+ZHluYW1pY0dsb2JhbE9iamVjdCkKLSAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnNT
b29uKCk7Ci0gICAgZWxzZQotICAgICAgICBEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlv
bnMoSlNET01XaW5kb3c6OmNvbW1vbkpTR2xvYmFsRGF0YSgpKTsKLX0KLQotdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6ZGlkQWRkTGlzdGVuZXIoUGFnZSogcGFnZSkKLXsKLSAgICByZWNvbXBpbGVB
bGxKU0Z1bmN0aW9uc1Nvb24oKTsKLSAgICBwYWdlLT5zZXREZWJ1Z2dlcih0aGlzKTsKLX0KLQot
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUmVtb3ZlTGlzdGVuZXIoUGFnZSogcGFnZSkKLXsK
LSAgICBpZiAoaGFzTGlzdGVuZXJzSW50ZXJlc3RlZEluUGFnZShwYWdlKSkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKG1fcGF1c2VkUGFnZSA9PSBwYWdlKQotICAgICAgICBtX2RvbmVQcm9j
ZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwotCi0gICAgcmVjb21waWxlQWxsSlNGdW5jdGlv
bnNTb29uKCk7Ci0gICAgcGFnZS0+c2V0RGVidWdnZXIoMCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggZTdlODUw
Mi4uZTUzY2I0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHREZWJ1
Z1NlcnZlci5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTUwLDIxICs1MCwxMiBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIH0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRnJhbWU7Ci1jbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBQ
YWdlOwotY2xhc3MgUGFnZUdyb3VwOwogY2xhc3MgU2NyaXB0RGVidWdMaXN0ZW5lcjsKIGNsYXNz
IEphdmFTY3JpcHRDYWxsRnJhbWU7CiAKLWNsYXNzIFNjcmlwdERlYnVnU2VydmVyIDogSlNDOjpE
ZWJ1Z2dlciB7CitjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlciA6IHByb3RlY3RlZCBKU0M6OkRlYnVn
Z2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JpcHREZWJ1Z1NlcnZlcik7IFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBTY3JpcHREZWJ1Z1NlcnZl
ciYgc2hhcmVkKCk7Ci0KLSAgICB2b2lkIGFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIq
LCBQYWdlKik7Ci0gICAgdm9pZCByZW1vdmVMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwg
UGFnZSopOwotCiAgICAgU3RyaW5nIHNldEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VJ
RCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYsIGludCogYWN0dWFsTGluZU51bWJlciwgaW50KiBh
Y3R1YWxDb2x1bW5OdW1iZXIpOwogICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChjb25zdCBTdHJp
bmcmIGJyZWFrcG9pbnRJZCk7CiAgICAgdm9pZCBjbGVhckJyZWFrcG9pbnRzKCk7CkBAIC05MCwy
NiArODEsMjQgQEAgcHVibGljOgogICAgIGJvb2wgZWRpdFNjcmlwdFNvdXJjZShjb25zdCBTdHJp
bmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIFN0cmluZyYgbmV3U291cmNl
T3JFcnJvck1lc3NhZ2UpOwogCiAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9uc1Nvb24o
KTsKLSAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVyPFNjcmlwdERlYnVnU2Vy
dmVyPiogPSAwKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoVGlt
ZXI8U2NyaXB0RGVidWdTZXJ2ZXI+KiA9IDApID0gMDsKIAogICAgIEphdmFTY3JpcHRDYWxsRnJh
bWUqIGN1cnJlbnRDYWxsRnJhbWUoKTsKIAotcHJpdmF0ZToKK3Byb3RlY3RlZDoKICAgICB0eXBl
ZGVmIEhhc2hTZXQ8U2NyaXB0RGVidWdMaXN0ZW5lcio+IExpc3RlbmVyU2V0OwogICAgIHR5cGVk
ZWYgdm9pZCAoU2NyaXB0RGVidWdTZXJ2ZXI6OipKYXZhU2NyaXB0RXhlY3V0aW9uQ2FsbGJhY2sp
KFNjcmlwdERlYnVnTGlzdGVuZXIqKTsKIAogICAgIFNjcmlwdERlYnVnU2VydmVyKCk7CiAgICAg
flNjcmlwdERlYnVnU2VydmVyKCk7CiAKLSAgICBib29sIGhhc0JyZWFrcG9pbnQoaW50cHRyX3Qg
c291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbjAmIHBvc2l0aW9uKSBjb25zdDsKLSAgICBib29s
IGhhc0xpc3RlbmVyc0ludGVyZXN0ZWRJblBhZ2UoUGFnZSopOworICAgIHZpcnR1YWwgTGlzdGVu
ZXJTZXQqIGdldExpc3RlbmVyc0Zvckdsb2JhbE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0Kikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgPSAw
OwogCi0gICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKGNvbnN0IFBhZ2VHcm91cCYsIGJvb2wg
cGF1c2VkKTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoUGFnZSosIGJvb2wgcGF1c2Vk
KTsKLSAgICB2b2lkIHNldEphdmFTY3JpcHRQYXVzZWQoRnJhbWUqLCBib29sIHBhdXNlZCk7Ci0g
ICAgdm9pZCBzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lVmlldyosIGJvb2wgcGF1c2VkKTsKKyAg
ICBib29sIGhhc0JyZWFrcG9pbnQoaW50cHRyX3Qgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlv
bjAmKSBjb25zdDsKIAotICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEphdmFT
Y3JpcHRFeGVjdXRpb25DYWxsYmFjaywgUGFnZSopOworICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlv
blRvTGlzdGVuZXJzKEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjaywgSlNDOjpKU0dsb2JhbE9i
amVjdCopOwogICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKGNvbnN0IExpc3Rl
bmVyU2V0JiBsaXN0ZW5lcnMsIEphdmFTY3JpcHRFeGVjdXRpb25DYWxsYmFjayBjYWxsYmFjayk7
CiAgICAgdm9pZCBkaXNwYXRjaERpZFBhdXNlKFNjcmlwdERlYnVnTGlzdGVuZXIqKTsKICAgICB2
b2lkIGRpc3BhdGNoRGlkQ29udGludWUoU2NyaXB0RGVidWdMaXN0ZW5lciopOwpAQCAtMTE4LDcg
KzEwNyw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGNyZWF0ZUNhbGxGcmFtZUFuZFBhdXNlSWZO
ZWVkZWQoY29uc3QgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBp
bnQgbGluZU51bWJlcik7CiAgICAgdm9pZCB1cGRhdGVDYWxsRnJhbWVBbmRQYXVzZUlmTmVlZGVk
KGNvbnN0IEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBpbnRwdHJfdCBzb3VyY2VJRCwgaW50IGxp
bmVOdW1iZXIpOwotICAgIHZvaWQgcGF1c2VJZk5lZWRlZChQYWdlKik7CisgICAgdm9pZCBwYXVz
ZUlmTmVlZGVkKEpTQzo6SlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxPYmplY3QpOwogCiAg
ICAgdmlydHVhbCB2b2lkIGRldGFjaChKU0M6OkpTR2xvYmFsT2JqZWN0Kik7CiAKQEAgLTEzMSw5
ICsxMjAsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRFeGVjdXRlUHJvZ3JhbShj
b25zdCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiwgaW50cHRyX3Qgc291cmNlSUQsIGludCBsaW5l
bm8pOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWFjaEJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1
Z2dlckNhbGxGcmFtZSYsIGludHB0cl90IHNvdXJjZUlELCBpbnQgbGluZW5vKTsKIAotICAgIHZv
aWQgZGlkQWRkTGlzdGVuZXIoUGFnZSopOwotICAgIHZvaWQgZGlkUmVtb3ZlTGlzdGVuZXIoUGFn
ZSopOwotCiAgICAgdHlwZWRlZiBIYXNoTWFwPFBhZ2UqLCBMaXN0ZW5lclNldCo+IFBhZ2VMaXN0
ZW5lcnNNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcsIFNjcmlwdEJyZWFrcG9pbnQ+IExp
bmVUb0JyZWFrcG9pbnRNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPGludHB0cl90LCBMaW5lVG9C
cmVha3BvaW50TWFwPiBTb3VyY2VJZFRvQnJlYWtwb2ludHNNYXA7CkBAIC0xNDMsNyArMTI5LDYg
QEAgcHJpdmF0ZToKICAgICBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG1fcGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZTsKICAgICBib29sIG1fcGF1c2VPbk5leHRTdGF0ZW1lbnQ7CiAgICAgYm9vbCBtX3Bh
dXNlZDsKLSAgICBQYWdlKiBtX3BhdXNlZFBhZ2U7CiAgICAgYm9vbCBtX2RvbmVQcm9jZXNzaW5n
RGVidWdnZXJFdmVudHM7CiAgICAgYm9vbCBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkOwogICAgIEph
dmFTY3JpcHRDYWxsRnJhbWUqIG1fcGF1c2VPbkNhbGxGcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41ZTJhY2QyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyU2NyaXB0
RGVidWdTZXJ2ZXIuaCIKKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFC
TEUoV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2
ZXIoKQorICAgIDogU2NyaXB0RGVidWdTZXJ2ZXIoKQoreworfQorCit2b2lkIFdvcmtlclNjcmlw
dERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgV29ya2VyQ29u
dGV4dCopCit7Cit9CisKK3ZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3Rl
bmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBXb3JrZXJDb250ZXh0KikKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
ICYmIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMC4uNDA2MjQzNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXJfaAorI2RlZmluZSBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcl9o
CisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKFdPUktFUlMpCisK
KyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdvcmtlckNvbnRleHQ7CisKK2NsYXNzIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIDog
cHVibGljIFNjcmlwdERlYnVnU2VydmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlcik7CitwdWJsaWM6CisgICAgV29ya2VyU2NyaXB0RGVidWdTZXJ2
ZXIoKTsKKyAgICB+V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KKworICAgIHZvaWQgYWRk
TGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciosIFdvcmtlckNvbnRleHQqKTsKKyAgICB2b2lk
IHJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBXb3JrZXJDb250ZXh0Kik7CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKFRpbWVy
PFNjcmlwdERlYnVnU2VydmVyPiopIHsgfQorICAgIHZpcnR1YWwgTGlzdGVuZXJTZXQqIGdldExp
c3RlbmVyc0Zvckdsb2JhbE9iamVjdChKU0M6OkpTR2xvYmFsT2JqZWN0KikgeyByZXR1cm4gMDsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSB7IH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKSAmJiBFTkFCTEUoV09SS0VSUykKKworI2VuZGlmIC8vIFdvcmtlclNjcmlwdERl
YnVnU2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmYx
NDlkOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdl
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogQ29weXJpZ2h0
IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgorCisjaWYgRU5BQkxFKEpBVkFT
Q1JJUFRfREVCVUdHRVIpCisKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlBhZ2UuaCIK
KyNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCisjaW5jbHVkZSAiVjhCaW5kaW5nLmgi
CisjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBGcmFt
ZSogcmV0cmlldmVGcmFtZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQoreworICAg
IGlmIChjb250ZXh0LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBUZXN0
IHRoYXQgY29udGV4dCBoYXMgYXNzb2NpYXRlZCBnbG9iYWwgZG9tIHdpbmRvdyBvYmplY3QuCisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250ZXh0LT5HbG9iYWwoKTsKKyAg
ICBpZiAoZ2xvYmFsLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBnbG9iYWwg
PSBWOERPTVdyYXBwZXI6Omxvb2t1cERPTVdyYXBwZXIoVjhET01XaW5kb3c6OkdldFRlbXBsYXRl
KCksIGdsb2JhbCk7CisgICAgaWYgKGdsb2JhbC5Jc0VtcHR5KCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgcmV0dXJuIFY4UHJveHk6OnJldHJpZXZlRnJhbWUoY29udGV4dCk7Cit9CisKK1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlciYgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKQorewor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoUGFnZVNjcmlwdERlYnVnU2VydmVyLCBzZXJ2ZXIsICgp
KTsKKyAgICByZXR1cm4gc2VydmVyOworfQorCitQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OlBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcigpCisgICAgOiBTY3JpcHREZWJ1Z1NlcnZlcigpCisgICAgLCBtX3Bh
dXNlZFBhZ2UoMCkKKyAgICAsIG1fZW5hYmxlZCh0cnVlKQoreworfQorCit2b2lkIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIs
IFBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKCFtX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUocGFnZS0+bWFpbkZyYW1lKCkp
OworICAgIGlmICghcHJveHkpCisgICAgICAgIHJldHVybjsKKworICAgIHY4OjpIYW5kbGVTY29w
ZSBzY29wZTsKKyAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGRlYnVnZ2VyQ29udGV4dCA9IHY4
OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCk7CisgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRl
eHRTY29wZShkZWJ1Z2dlckNvbnRleHQpOworCisgICAgaWYgKCFtX2xpc3RlbmVyc01hcC5zaXpl
KCkpIHsKKyAgICAgICAgZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgpOworICAgICAgICBB
U1NFUlQoIW1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPklzVW5kZWZpbmVkKCkpOworICAgICAgICB2
ODo6RGVidWc6OlNldERlYnVnRXZlbnRMaXN0ZW5lcjIoJlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6
djhEZWJ1Z0V2ZW50Q2FsbGJhY2ssIHY4OjpFeHRlcm5hbDo6TmV3KHRoaXMpKTsKKyAgICB9Cisg
ICAgbV9saXN0ZW5lcnNNYXAuc2V0KHBhZ2UsIGxpc3RlbmVyKTsKKworICAgIFY4RE9NV2luZG93
U2hlbGwqIHNoZWxsID0gcHJveHktPndpbmRvd1NoZWxsKCk7CisgICAgaWYgKCFzaGVsbC0+aXND
b250ZXh0SW5pdGlhbGl6ZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHY4OjpIYW5kbGU8djg6
OkNvbnRleHQ+IGNvbnRleHQgPSBzaGVsbC0+Y29udGV4dCgpOworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiBnZXRTY3JpcHRzRnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6
Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJnZXRTY3Jp
cHRzIikpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geyBjb250ZXh0LT5H
ZXREYXRhKCkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSBnZXRTY3JpcHRz
RnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKSwgMSwgYXJndik7CisgICAgaWYg
KHZhbHVlLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghdmFsdWUtPklz
VW5kZWZpbmVkKCkgJiYgdmFsdWUtPklzQXJyYXkoKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6QXJy
YXk+IHNjcmlwdHNBcnJheSA9IHY4OjpIYW5kbGU8djg6OkFycmF5Pjo6Q2FzdCh2YWx1ZSk7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNjcmlwdHNBcnJheS0+TGVuZ3RoKCk7ICsraSkK
KyAgICAgICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShsaXN0ZW5lciwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChzY3JpcHRzQXJyYXktPkdldCh2ODo6SW50ZWdlcjo6TmV3KGkpKSkpOwor
fQorCit2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVi
dWdMaXN0ZW5lciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCit7CisgICAgaWYgKCFtX2xpc3RlbmVy
c01hcC5jb250YWlucyhwYWdlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fcGF1c2Vk
UGFnZSA9PSBwYWdlKQorICAgICAgICBjb250aW51ZVByb2dyYW0oKTsKKworICAgIG1fbGlzdGVu
ZXJzTWFwLnJlbW92ZShwYWdlKTsKKworICAgIGlmIChtX2xpc3RlbmVyc01hcC5pc0VtcHR5KCkp
CisgICAgICAgIHY4OjpEZWJ1Zzo6U2V0RGVidWdFdmVudExpc3RlbmVyKDApOworICAgIC8vIEZJ
WE1FOiBSZW1vdmUgYWxsIGJyZWFrcG9pbnRzIHNldCBieSB0aGUgYWdlbnQuCit9CisKK3ZvaWQg
UGFnZVNjcmlwdERlYnVnU2VydmVyOjpzZXRDbGllbnRNZXNzYWdlTG9vcChQYXNzT3duUHRyPENs
aWVudE1lc3NhZ2VMb29wPiBjbGllbnRNZXNzYWdlTG9vcCkKK3sKKyAgICBtX2NsaWVudE1lc3Nh
Z2VMb29wID0gY2xpZW50TWVzc2FnZUxvb3A7Cit9CisKK1NjcmlwdERlYnVnTGlzdGVuZXIqIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlcjo6Z2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQodjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4gY29udGV4dCkKK3sKKyAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Cisg
ICAgRnJhbWUqIGZyYW1lID0gcmV0cmlldmVGcmFtZShjb250ZXh0KTsKKyAgICBpZiAoIWZyYW1l
KQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9saXN0ZW5lcnNNYXAuZ2V0KGZyYW1l
LT5wYWdlKCkpOworfQorCit2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuTWVzc2FnZUxv
b3BPblBhdXNlKHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCit7CisgICAgdjg6Okhh
bmRsZVNjb3BlIHNjb3BlOworICAgIEZyYW1lKiBmcmFtZSA9IHJldHJpZXZlRnJhbWUoY29udGV4
dCk7CisgICAgbV9wYXVzZWRQYWdlID0gZnJhbWUtPnBhZ2UoKTsKKworICAgIC8vIFdhaXQgZm9y
IGNvbnRpbnVlIG9yIHN0ZXAgY29tbWFuZC4KKyAgICBtX2NsaWVudE1lc3NhZ2VMb29wLT5ydW4o
bV9wYXVzZWRQYWdlKTsKKworICAgIC8vIFRoZSBsaXN0ZW5lciBtYXkgaGF2ZSBiZWVuIHJlbW92
ZWQgaW4gdGhlIG5lc3RlZCBsb29wLgorICAgIGlmIChTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0
ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChtX3BhdXNlZFBhZ2UpKQorICAgICAgICBsaXN0ZW5l
ci0+ZGlkQ29udGludWUoKTsKKyAgICAgCisgICAgbV9wYXVzZWRQYWdlID0gMDsKK30KKwordm9p
ZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnF1aXRNZXNzYWdlTG9vcE9uUGF1c2UoKQoreworICAg
IG1fY2xpZW50TWVzc2FnZUxvb3AtPnF1aXROb3coKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRiMTM0YzEKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMCww
ICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXJfaAorI2RlZmluZSBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXJfaAorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisKKyNp
bmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGFnZTsKKworY2xhc3MgUGFnZVNjcmlwdERl
YnVnU2VydmVyIDogcHVibGljIFNjcmlwdERlYnVnU2VydmVyIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShQYWdlU2NyaXB0RGVidWdTZXJ2ZXIpOworcHVibGljOgorICAgIHN0YXRpYyBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXImIHNoYXJlZCgpOworCisgICAgdm9pZCBhZGRMaXN0ZW5lcihTY3Jp
cHREZWJ1Z0xpc3RlbmVyKiwgUGFnZSopOworICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoU2NyaXB0
RGVidWdMaXN0ZW5lciosIFBhZ2UqKTsKKworICAgIC8vIHY4LXNwZWNpZmljIG1ldGhvZHMuCisg
ICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgdmFsdWUpIHsgbV9lbmFibGVkID0gdmFsdWU7IH0KKyAg
ICAKKyAgICBjbGFzcyBDbGllbnRNZXNzYWdlTG9vcCB7CisgICAgcHVibGljOgorICAgICAgICB2
aXJ0dWFsIH5DbGllbnRNZXNzYWdlTG9vcCgpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgcnVu
KFBhZ2UqKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBxdWl0Tm93KCkgPSAwOworICAgIH07
CisgICAgdm9pZCBzZXRDbGllbnRNZXNzYWdlTG9vcChQYXNzT3duUHRyPENsaWVudE1lc3NhZ2VM
b29wPik7CisKK3ByaXZhdGU6CisgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyKCk7CisgICAgdmly
dHVhbCB+UGFnZVNjcmlwdERlYnVnU2VydmVyKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBTY3Jp
cHREZWJ1Z0xpc3RlbmVyKiBnZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dCh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0Pik7CisgICAgdmlydHVhbCB2b2lkIHJ1bk1lc3NhZ2VMb29wT25QYXVzZSh2ODo6
SGFuZGxlPHY4OjpDb250ZXh0Pik7CisgICAgdmlydHVhbCB2b2lkIHF1aXRNZXNzYWdlTG9vcE9u
UGF1c2UoKTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxQYWdlKiwgU2NyaXB0RGVidWdMaXN0ZW5l
cio+IExpc3RlbmVyc01hcDsKKyAgICBMaXN0ZW5lcnNNYXAgbV9saXN0ZW5lcnNNYXA7CisgICAg
T3duUHRyPENsaWVudE1lc3NhZ2VMb29wPiBtX2NsaWVudE1lc3NhZ2VMb29wOworICAgIFBhZ2Uq
IG1fcGF1c2VkUGFnZTsKKyAgICBib29sIG1fZW5hYmxlZDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisjZW5k
aWYgLy8gUGFnZVNjcmlwdERlYnVnU2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCBhMmNmMzBhLi41NzU4NjM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMCwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoYykgMjAxMC0yMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CkBAIC0zNCwxMyArMzQsOSBAQAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogCiAj
aW5jbHVkZSAiRGVidWdnZXJTY3JpcHRTb3VyY2UuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1
ZGUgIlY4RE9NV2luZG93LmgiCi0jaW5jbHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNTgsODcgKzU0LDEyIEBA
IHByaXZhdGU6CiAKIH0KIAotc3RhdGljIEZyYW1lKiByZXRyaWV2ZUZyYW1lKHY4OjpIYW5kbGU8
djg6OkNvbnRleHQ+IGNvbnRleHQpCi17Ci0gICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIC8vIFRlc3QgdGhhdCBjb250ZXh0IGhhcyBhc3NvY2lhdGVk
IGdsb2JhbCBkb20gd2luZG93IG9iamVjdC4KLSAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGds
b2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwotICAgIGlmIChnbG9iYWwuSXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIGdsb2JhbCA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3Jh
cHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxhdGUoKSwgZ2xvYmFsKTsKLSAgICBpZiAoZ2xvYmFs
LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gVjhQcm94eTo6cmV0
cmlldmVGcmFtZShjb250ZXh0KTsKLX0KLQotU2NyaXB0RGVidWdTZXJ2ZXImIFNjcmlwdERlYnVn
U2VydmVyOjpzaGFyZWQoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU2NyaXB0RGVidWdT
ZXJ2ZXIsIHNlcnZlciwgKCkpOwotICAgIHJldHVybiBzZXJ2ZXI7Ci19Ci0KIFNjcmlwdERlYnVn
U2VydmVyOjpTY3JpcHREZWJ1Z1NlcnZlcigpCiAgICAgOiBtX3BhdXNlT25FeGNlcHRpb25zU3Rh
dGUoRG9udFBhdXNlT25FeGNlcHRpb25zKQotICAgICwgbV9wYXVzZWRQYWdlKDApCi0gICAgLCBt
X2VuYWJsZWQodHJ1ZSkKICAgICAsIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSkKIHsKIH0K
IAotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5l
ciogbGlzdGVuZXIsIFBhZ2UqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2VuYWJsZWQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUocGFnZS0+
bWFpbkZyYW1lKCkpOwotICAgIGlmICghcHJveHkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHY4
OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGRlYnVnZ2Vy
Q29udGV4dCA9IHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCk7Ci0gICAgdjg6OkNvbnRleHQ6
OlNjb3BlIGNvbnRleHRTY29wZShkZWJ1Z2dlckNvbnRleHQpOwotCi0gICAgaWYgKCFtX2xpc3Rl
bmVyc01hcC5zaXplKCkpIHsKLSAgICAgICAgZW5zdXJlRGVidWdnZXJTY3JpcHRDb21waWxlZCgp
OwotICAgICAgICBBU1NFUlQoIW1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPklzVW5kZWZpbmVkKCkp
OwotICAgICAgICB2ODo6RGVidWc6OlNldERlYnVnRXZlbnRMaXN0ZW5lcjIoJlNjcmlwdERlYnVn
U2VydmVyOjp2OERlYnVnRXZlbnRDYWxsYmFjayk7Ci0gICAgfQotICAgIG1fbGlzdGVuZXJzTWFw
LnNldChwYWdlLCBsaXN0ZW5lcik7Ci0KLSAgICBWOERPTVdpbmRvd1NoZWxsKiBzaGVsbCA9IHBy
b3h5LT53aW5kb3dTaGVsbCgpOwotICAgIGlmICghc2hlbGwtPmlzQ29udGV4dEluaXRpYWxpemVk
KCkpCi0gICAgICAgIHJldHVybjsKLSAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0
ID0gc2hlbGwtPmNvbnRleHQoKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZ2V0U2Ny
aXB0c0Z1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QobV9kZWJ1Z2dlclNj
cmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygiZ2V0U2NyaXB0cyIpKSk7Ci0gICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgY29udGV4dC0+R2V0RGF0YSgpIH07Ci0gICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gZ2V0U2NyaXB0c0Z1bmN0aW9uLT5DYWxsKG1f
ZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwotICAgIGlmICh2YWx1ZS5Jc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQoIXZhbHVlLT5Jc1VuZGVmaW5lZCgpICYmIHZh
bHVlLT5Jc0FycmF5KCkpOwotICAgIHY4OjpIYW5kbGU8djg6OkFycmF5PiBzY3JpcHRzQXJyYXkg
PSB2ODo6SGFuZGxlPHY4OjpBcnJheT46OkNhc3QodmFsdWUpOwotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBzY3JpcHRzQXJyYXktPkxlbmd0aCgpOyArK2kpCi0gICAgICAgIGRpc3BhdGNo
RGlkUGFyc2VTb3VyY2UobGlzdGVuZXIsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qoc2Ny
aXB0c0FycmF5LT5HZXQodjg6OkludGVnZXI6Ok5ldyhpKSkpKTsKLX0KLQotdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIs
IFBhZ2UqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2xpc3RlbmVyc01hcC5jb250YWlucyhwYWdlKSkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1fcGF1c2VkUGFnZSA9PSBwYWdlKQotICAgICAg
ICBjb250aW51ZVByb2dyYW0oKTsKLQotICAgIG1fbGlzdGVuZXJzTWFwLnJlbW92ZShwYWdlKTsK
LQotICAgIGlmIChtX2xpc3RlbmVyc01hcC5pc0VtcHR5KCkpCi0gICAgICAgIHY4OjpEZWJ1Zzo6
U2V0RGVidWdFdmVudExpc3RlbmVyKDApOwotICAgIC8vIEZJWE1FOiBSZW1vdmUgYWxsIGJyZWFr
cG9pbnRzIHNldCBieSB0aGUgYWdlbnQuCi19Ci0KIFN0cmluZyBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2V0QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3Bv
aW50JiBzY3JpcHRCcmVha3BvaW50LCBpbnQqIGFjdHVhbExpbmVOdW1iZXIsIGludCogYWN0dWFs
Q29sdW1uTnVtYmVyKQogewogICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKQEAgLTIyNSw3ICsx
NDYsNyBAQCB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRl
KFBhdXNlT25FeGNlcHRpb25zU3RhdGUgcGF1c2VPbgogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVy
OjpzZXRQYXVzZU9uTmV4dFN0YXRlbWVudChib29sIHBhdXNlKQogewotICAgIGlmIChtX3BhdXNl
ZFBhZ2UpCisgICAgaWYgKGlzUGF1c2VkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAocGF1
c2UpCiAgICAgICAgIHY4OjpEZWJ1Zzo6RGVidWdCcmVhaygpOwpAQCAtMjM1LDE3ICsxNTYsMTUg
QEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQoYm9vbCBw
YXVzZSkKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQcm9ncmFtKCkKIHsKLSAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiwg
Y2FsbGJhY2tUZW1wbGF0ZSwgKCkpOwotCiAgICAgaWYgKCFtX2JyZWFrcG9pbnRzQWN0aXZhdGVk
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIXY4OjpDb250ZXh0OjpJbkNvbnRleHQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGNhbGxiYWNrVGVtcGxhdGUuSXNFbXB0eSgpKSB7
Ci0gICAgICAgIGNhbGxiYWNrVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KCkpOwotICAgICAgICBjYWxs
YmFja1RlbXBsYXRlLT5TZXRDYWxsSGFuZGxlcigmU2NyaXB0RGVidWdTZXJ2ZXI6OmJyZWFrUHJv
Z3JhbUNhbGxiYWNrKTsKKyAgICBpZiAobV9icmVha1Byb2dyYW1DYWxsYmFja1RlbXBsYXRlLmdl
dCgpLklzRW1wdHkoKSkgeworICAgICAgICBtX2JyZWFrUHJvZ3JhbUNhbGxiYWNrVGVtcGxhdGUu
c2V0KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoKSk7CisgICAgICAgIG1fYnJlYWtQcm9ncmFt
Q2FsbGJhY2tUZW1wbGF0ZS5nZXQoKS0+U2V0Q2FsbEhhbmRsZXIoJlNjcmlwdERlYnVnU2VydmVy
OjpicmVha1Byb2dyYW1DYWxsYmFjaywgdjg6OkV4dGVybmFsOjpOZXcodGhpcykpOwogICAgIH0K
IAogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29udGV4dDo6R2V0
Q3VycmVudCgpOwpAQCAtMjUzLDIxICsxNzIsMjIgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
YnJlYWtQcm9ncmFtKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9wYXVzZWRQYWdlQ29udGV4
dCA9ICpjb250ZXh0OwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBicmVha1Byb2dyYW1G
dW5jdGlvbiA9IGNhbGxiYWNrVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CisgICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+IGJyZWFrUHJvZ3JhbUZ1bmN0aW9uID0gbV9icmVha1Byb2dyYW1DYWxs
YmFja1RlbXBsYXRlLmdldCgpLT5HZXRGdW5jdGlvbigpOwogICAgIHY4OjpEZWJ1Zzo6Q2FsbChi
cmVha1Byb2dyYW1GdW5jdGlvbik7CiAgICAgbV9wYXVzZWRQYWdlQ29udGV4dC5DbGVhcigpOwog
fQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjb250aW51ZVByb2dyYW0oKQogewotICAgIGlm
IChtX3BhdXNlZFBhZ2UpCi0gICAgICAgIG1fY2xpZW50TWVzc2FnZUxvb3AtPnF1aXROb3coKTsK
LSAgICBkaWRSZXN1bWUoKTsKKyAgICBpZiAoaXNQYXVzZWQoKSkKKyAgICAgICAgcXVpdE1lc3Nh
Z2VMb29wT25QYXVzZSgpOworICAgIG1fY3VycmVudENhbGxGcmFtZS5jbGVhcigpOworICAgIG1f
ZXhlY3V0aW9uU3RhdGUuY2xlYXIoKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c3Rl
cEludG9TdGF0ZW1lbnQoKQogewotICAgIEFTU0VSVChtX3BhdXNlZFBhZ2UpOworICAgIEFTU0VS
VChpc1BhdXNlZCgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQo
djg6OlN0cmluZzo6TmV3KCJzdGVwSW50b1N0YXRlbWVudCIpKSk7CiAgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9OwogICAgIGZ1bmN0
aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwpAQCAtMjc2LDcgKzE5
Niw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0ZXBJbnRvU3RhdGVtZW50KCkKIAogdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c3RlcE92ZXJTdGF0ZW1lbnQoKQogewotICAgIEFTU0VSVCht
X3BhdXNlZFBhZ2UpOworICAgIEFTU0VSVChpc1BhdXNlZCgpKTsKICAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2Rl
YnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJzdGVwT3ZlclN0YXRlbWVu
dCIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25T
dGF0ZS5nZXQoKSB9OwogICAgIGZ1bmN0aW9uLT5DYWxsKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCks
IDEsIGFyZ3YpOwpAQCAtMjg1LDcgKzIwNSw3IEBAIHZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnN0
ZXBPdmVyU3RhdGVtZW50KCkKIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c3RlcE91dE9mRnVu
Y3Rpb24oKQogewotICAgIEFTU0VSVChtX3BhdXNlZFBhZ2UpOworICAgIEFTU0VSVChpc1BhdXNl
ZCgpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSB2ODo6TG9jYWw8
djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLT5HZXQodjg6OlN0cmlu
Zzo6TmV3KCJzdGVwT3V0T2ZGdW5jdGlvbiIpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGFyZ3ZbXSA9IHsgbV9leGVjdXRpb25TdGF0ZS5nZXQoKSB9OwogICAgIGZ1bmN0aW9uLT5DYWxs
KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCksIDEsIGFyZ3YpOwpAQCAtMjk4LDcgKzIxOCw3IEBAIGJv
b2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmVkaXRTY3JpcHRTb3VyY2UoY29uc3QgU3RyaW5nJiBzb3Vy
Y2VJRCwgY29uc3QgU3RyaW5nJiBuCiAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOwogCiAgICAg
T3duUHRyPHY4OjpDb250ZXh0OjpTY29wZT4gY29udGV4dFNjb3BlOwotICAgIGlmICghbV9wYXVz
ZWRQYWdlKQorICAgIGlmICghaXNQYXVzZWQoKSkKICAgICAgICAgY29udGV4dFNjb3BlLnNldChu
ZXcgdjg6OkNvbnRleHQ6OlNjb3BlKHY4OjpEZWJ1Zzo6R2V0RGVidWdDb250ZXh0KCkpKTsKIAog
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBmdW5jdGlvbiA9IHY4OjpMb2NhbDx2ODo6RnVu
Y3Rpb24+OjpDYXN0KG1fZGVidWdnZXJTY3JpcHQuZ2V0KCktPkdldCh2ODo6U3RyaW5nOjpOZXco
ImVkaXRTY3JpcHRTb3VyY2UiKSkpOwpAQCAtMzMzLDExICsyNTMsNiBAQCBQYXNzUmVmUHRyPEph
dmFTY3JpcHRDYWxsRnJhbWU+IFNjcmlwdERlYnVnU2VydmVyOjpjdXJyZW50Q2FsbEZyYW1lKCkK
ICAgICByZXR1cm4gbV9jdXJyZW50Q2FsbEZyYW1lOwogfQogCi12b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpzZXRFbmFibGVkKGJvb2wgdmFsdWUpCi17Ci0gICAgIG1fZW5hYmxlZCA9IHZhbHVlOwot
fQotCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjppbnRlcnJ1cHRBbmRSdW4oUGFzc093blB0cjxU
YXNrPiB0YXNrKQogewogICAgIHY4OjpEZWJ1Zzo6RGVidWdCcmVha0ZvckNvbW1hbmQobmV3IENs
aWVudERhdGFJbXBsKHRhc2spKTsKQEAgLTM0OCw0NCArMjYzLDQyIEBAIHZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OnJ1blBlbmRpbmdUYXNrcygpCiAgICAgdjg6OkRlYnVnOjpQcm9jZXNzRGVidWdN
ZXNzYWdlcygpOwogfQogCitzdGF0aWMgU2NyaXB0RGVidWdTZXJ2ZXIqIHRvU2NyaXB0RGVidWdT
ZXJ2ZXIodjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEpCit7CisgICAgdm9pZCogcCA9IHY4OjpI
YW5kbGU8djg6OkV4dGVybmFsPjo6Q2FzdChkYXRhKS0+VmFsdWUoKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8U2NyaXB0RGVidWdTZXJ2ZXIqPihwKTsKK30KKwogdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFNjcmlwdERlYnVnU2VydmVyOjpicmVha1Byb2dyYW1DYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIEFTU0VSVCgyID09IGFyZ3MuTGVuZ3RoKCkpOwotICAgIFNj
cmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5icmVha1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CisgICAgCisgICAgU2NyaXB0RGVidWdTZXJ2ZXIqIHRoaXNQ
dHIgPSB0b1NjcmlwdERlYnVnU2VydmVyKGFyZ3MuRGF0YSgpKTsKKyAgICB0aGlzUHRyLT5icmVh
a1Byb2dyYW0odjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSk7CiAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAogdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YnJlYWtQ
cm9ncmFtKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZXhlY3V0aW9uU3RhdGUpCiB7CiAgICAgLy8g
RG9uJ3QgYWxsb3cgbmVzdGVkIGJyZWFrcy4KLSAgICBpZiAobV9wYXVzZWRQYWdlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBGcmFtZSogZnJhbWUgPSByZXRyaWV2ZUZyYW1lKG1fcGF1c2VkUGFn
ZUNvbnRleHQpOwotICAgIGlmICghZnJhbWUpCisgICAgaWYgKGlzUGF1c2VkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyID0gbV9saXN0ZW5l
cnNNYXAuZ2V0KGZyYW1lLT5wYWdlKCkpOworICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3Rl
bmVyID0gZ2V0RGVidWdMaXN0ZW5lckZvckNvbnRleHQobV9wYXVzZWRQYWdlQ29udGV4dCk7CiAg
ICAgaWYgKCFsaXN0ZW5lcikKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9leGVjdXRpb25TdGF0
ZS5zZXQoZXhlY3V0aW9uU3RhdGUpOwotICAgIG1fcGF1c2VkUGFnZSA9IGZyYW1lLT5wYWdlKCk7
CiAgICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRDYWxsRnJhbWVTdGF0ZSA9IFNjcmlwdFN0YXRlOjpm
b3JDb250ZXh0KG1fcGF1c2VkUGFnZUNvbnRleHQpOwogICAgIGxpc3RlbmVyLT5kaWRQYXVzZShj
dXJyZW50Q2FsbEZyYW1lU3RhdGUpOwogCi0gICAgLy8gV2FpdCBmb3IgY29udGludWUgb3Igc3Rl
cCBjb21tYW5kLgotICAgIG1fY2xpZW50TWVzc2FnZUxvb3AtPnJ1bihtX3BhdXNlZFBhZ2UpOwot
ICAgIEFTU0VSVCghbV9wYXVzZWRQYWdlKTsKLQotICAgIC8vIFRoZSBsaXN0ZW5lciBtYXkgaGF2
ZSBiZWVuIHJlbW92ZWQgaW4gdGhlIG5lc3RlZCBsb29wLgotICAgIGlmIChTY3JpcHREZWJ1Z0xp
c3RlbmVyKiBsaXN0ZW5lciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKSkKLSAg
ICAgICAgbGlzdGVuZXItPmRpZENvbnRpbnVlKCk7CisgICAgcnVuTWVzc2FnZUxvb3BPblBhdXNl
KG1fcGF1c2VkUGFnZUNvbnRleHQpOwogfQogCiB2b2lkIFNjcmlwdERlYnVnU2VydmVyOjp2OERl
YnVnRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6RGVidWc6OkV2ZW50RGV0YWlscyYgZXZlbnREZXRh
aWxzKQogewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5oYW5kbGVWOERlYnVnRXZl
bnQoZXZlbnREZXRhaWxzKTsKKyAgICBTY3JpcHREZWJ1Z1NlcnZlciogdGhpc1B0ciA9IHRvU2Ny
aXB0RGVidWdTZXJ2ZXIoZXZlbnREZXRhaWxzLkdldENhbGxiYWNrRGF0YSgpKTsKKyAgICB0aGlz
UHRyLT5oYW5kbGVWOERlYnVnRXZlbnQoZXZlbnREZXRhaWxzKTsKIH0KIAogdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6aGFuZGxlVjhEZWJ1Z0V2ZW50KGNvbnN0IHY4OjpEZWJ1Zzo6RXZlbnREZXRh
aWxzJiBldmVudERldGFpbHMpCkBAIC00MDQsMzEgKzMxNywyOCBAQCB2b2lkIFNjcmlwdERlYnVn
U2VydmVyOjpoYW5kbGVWOERlYnVnRXZlbnQoY29uc3Qgdjg6OkRlYnVnOjpFdmVudERldGFpbHMm
IGV2ZW50RAogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGV2ZW50Q29udGV4dCA9IGV2ZW50
RGV0YWlscy5HZXRFdmVudENvbnRleHQoKTsKICAgICBBU1NFUlQoIWV2ZW50Q29udGV4dC5Jc0Vt
cHR5KCkpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gcmV0cmlldmVGcmFtZShldmVudENvbnRleHQp
OwotICAgIGlmIChmcmFtZSkgewotICAgICAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5l
ciA9IG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKTsKLSAgICAgICAgaWYgKGxpc3Rl
bmVyKSB7Ci0gICAgICAgICAgICB2ODo6SGFuZGxlU2NvcGUgc2NvcGU7Ci0gICAgICAgICAgICBp
ZiAoZXZlbnQgPT0gdjg6OkFmdGVyQ29tcGlsZSkgewotICAgICAgICAgICAgICAgIHY4OjpDb250
ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUodjg6OkRlYnVnOjpHZXREZWJ1Z0NvbnRleHQoKSk7Ci0g
ICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IG9uQWZ0ZXJDb21waWxlRnVu
Y3Rpb24gPSB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChtX2RlYnVnZ2VyU2NyaXB0Lmdl
dCgpLT5HZXQodjg6OlN0cmluZzo6TmV3KCJnZXRBZnRlckNvbXBpbGVTY3JpcHQiKSkpOwotICAg
ICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7IGV2ZW50RGV0YWls
cy5HZXRFdmVudERhdGEoKSB9OwotICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB2YWx1ZSA9IG9uQWZ0ZXJDb21waWxlRnVuY3Rpb24tPkNhbGwobV9kZWJ1Z2dlclNjcmlwdC5n
ZXQoKSwgMSwgYXJndik7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHZhbHVlLT5Jc09iamVjdCgp
KTsKLSAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOwotICAgICAgICAgICAgICAgIGRpc3BhdGNo
RGlkUGFyc2VTb3VyY2UobGlzdGVuZXIsIG9iamVjdCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYg
KGV2ZW50ID09IHY4OjpCcmVhayB8fCBldmVudCA9PSB2ODo6RXhjZXB0aW9uKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKGV2ZW50ID09IHY4OjpFeGNlcHRpb24pIHsKLSAgICAgICAgICAgICAgICAg
ICAgdjg6OkxvY2FsPHY4OjpTdGFja1RyYWNlPiBzdGFja1RyYWNlID0gdjg6OlN0YWNrVHJhY2U6
OkN1cnJlbnRTdGFja1RyYWNlKDEpOwotICAgICAgICAgICAgICAgICAgICAvLyBTdGFjayB0cmFj
ZSBpcyBlbXB0eSBpbiBjYXNlIG9mIHN5bnRheCBlcnJvci4gU2lsZW50bHkgY29udGludWUgZXhl
Y3V0aW9uIGluIHN1Y2ggY2FzZXMuCi0gICAgICAgICAgICAgICAgICAgIGlmICghc3RhY2tUcmFj
ZS0+R2V0RnJhbWVDb3VudCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAq
ZXZlbnRDb250ZXh0OwotICAgICAgICAgICAgICAgIGJyZWFrUHJvZ3JhbShldmVudERldGFpbHMu
R2V0RXhlY3V0aW9uU3RhdGUoKSk7Ci0gICAgICAgICAgICAgICAgbV9wYXVzZWRQYWdlQ29udGV4
dC5DbGVhcigpOworICAgIFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyID0gZ2V0RGVidWdM
aXN0ZW5lckZvckNvbnRleHQoZXZlbnRDb250ZXh0KTsKKyAgICBpZiAobGlzdGVuZXIpIHsKKyAg
ICAgICAgdjg6OkhhbmRsZVNjb3BlIHNjb3BlOworICAgICAgICBpZiAoZXZlbnQgPT0gdjg6OkFm
dGVyQ29tcGlsZSkgeworICAgICAgICAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIGNvbnRleHRTY29w
ZSh2ODo6RGVidWc6OkdldERlYnVnQ29udGV4dCgpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uPiBvbkFmdGVyQ29tcGlsZUZ1bmN0aW9uID0gdjg6OkxvY2FsPHY4OjpGdW5j
dGlvbj46OkNhc3QobV9kZWJ1Z2dlclNjcmlwdC5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ldygi
Z2V0QWZ0ZXJDb21waWxlU2NyaXB0IikpKTsKKyAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcmd2W10gPSB7IGV2ZW50RGV0YWlscy5HZXRFdmVudERhdGEoKSB9OworICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gb25BZnRlckNvbXBpbGVGdW5jdGlvbi0+
Q2FsbChtX2RlYnVnZ2VyU2NyaXB0LmdldCgpLCAxLCBhcmd2KTsKKyAgICAgICAgICAgIEFTU0VS
VCh2YWx1ZS0+SXNPYmplY3QoKSk7CisgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpOworICAgICAgICAg
ICAgZGlzcGF0Y2hEaWRQYXJzZVNvdXJjZShsaXN0ZW5lciwgb2JqZWN0KTsKKyAgICAgICAgfSBl
bHNlIGlmIChldmVudCA9PSB2ODo6QnJlYWsgfHwgZXZlbnQgPT0gdjg6OkV4Y2VwdGlvbikgewor
ICAgICAgICAgICAgaWYgKGV2ZW50ID09IHY4OjpFeGNlcHRpb24pIHsKKyAgICAgICAgICAgICAg
ICB2ODo6TG9jYWw8djg6OlN0YWNrVHJhY2U+IHN0YWNrVHJhY2UgPSB2ODo6U3RhY2tUcmFjZTo6
Q3VycmVudFN0YWNrVHJhY2UoMSk7CisgICAgICAgICAgICAgICAgLy8gU3RhY2sgdHJhY2UgaXMg
ZW1wdHkgaW4gY2FzZSBvZiBzeW50YXggZXJyb3IuIFNpbGVudGx5IGNvbnRpbnVlIGV4ZWN1dGlv
biBpbiBzdWNoIGNhc2VzLgorICAgICAgICAgICAgICAgIGlmICghc3RhY2tUcmFjZS0+R2V0RnJh
bWVDb3VudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQgPSAqZXZlbnRDb250ZXh0OworICAgICAg
ICAgICAgYnJlYWtQcm9ncmFtKGV2ZW50RGV0YWlscy5HZXRFeGVjdXRpb25TdGF0ZSgpKTsKKyAg
ICAgICAgICAgIG1fcGF1c2VkUGFnZUNvbnRleHQuQ2xlYXIoKTsKICAgICAgICAgfQogICAgIH0K
IH0KQEAgLTQ1NSwxMSArMzY1LDkgQEAgdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZW5zdXJlRGVi
dWdnZXJTY3JpcHRDb21waWxlZCgpCiAgICAgfQogfQogCi12b2lkIFNjcmlwdERlYnVnU2VydmVy
OjpkaWRSZXN1bWUoKQorYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aXNQYXVzZWQoKQogewotICAg
IG1fY3VycmVudENhbGxGcmFtZS5jbGVhcigpOwotICAgIG1fZXhlY3V0aW9uU3RhdGUuY2xlYXIo
KTsKLSAgICBtX3BhdXNlZFBhZ2UgPSAwOworICAgIHJldHVybiAhbV9leGVjdXRpb25TdGF0ZS5n
ZXQoKS5Jc0VtcHR5KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGVlOTJkMDguLjE1
MDA0ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVn
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2
ZXIuaApAQCAtNDUsMTcgKzQ1LDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3Mg
UGFnZTsKIGNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXI7CiAKIGNsYXNzIFNjcmlwdERlYnVnU2Vy
dmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShTY3JpcHREZWJ1Z1NlcnZlcik7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFNjcmlwdERlYnVnU2VydmVyJiBzaGFyZWQoKTsKLQotICAgIHZvaWQg
YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciosIFBhZ2UqKTsKLSAgICB2b2lkIHJlbW92
ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBQYWdlKik7Ci0KICAgICBTdHJpbmcgc2V0
QnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50
JiwgaW50KiBhY3R1YWxMaW5lTnVtYmVyLCBpbnQqIGFjdHVhbENvbHVtbk51bWJlcik7CiAgICAg
dm9pZCByZW1vdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkKTsKICAgICB2
b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKQEAgLTgzLDIxICs3Nyw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpIHsgfQogICAgIHZvaWQgcmVjb21waWxl
QWxsSlNGdW5jdGlvbnMoVGltZXI8U2NyaXB0RGVidWdTZXJ2ZXI+KiA9IDApIHsgfQogCi0gICAg
dm9pZCBwYWdlQ3JlYXRlZChQYWdlKikgeyB9Ci0KLSAgICAvLyB2OC1zcGVjaWZpYyBtZXRob2Rz
LgotICAgIGNsYXNzIENsaWVudE1lc3NhZ2VMb29wIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHZp
cnR1YWwgfkNsaWVudE1lc3NhZ2VMb29wKCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBydW4o
UGFnZSopID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHF1aXROb3coKSA9IDA7Ci0gICAgfTsK
LSAgICB2b2lkIHNldENsaWVudE1lc3NhZ2VMb29wKFBhc3NPd25QdHI8Q2xpZW50TWVzc2FnZUxv
b3A+IGNsaWVudE1lc3NhZ2VMb29wKSB7IG1fY2xpZW50TWVzc2FnZUxvb3AgPSBjbGllbnRNZXNz
YWdlTG9vcDsgfQotCiAgICAgUGFzc1JlZlB0cjxKYXZhU2NyaXB0Q2FsbEZyYW1lPiBjdXJyZW50
Q2FsbEZyYW1lKCk7CiAKLSAgICB2b2lkIHNldEVuYWJsZWQoYm9vbCk7Ci0KICAgICBjbGFzcyBU
YXNrIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgflRhc2soKSB7IH0KQEAgLTEwNiw5
ICs4NywxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgaW50ZXJydXB0QW5kUnVuKFBhc3NP
d25QdHI8VGFzaz4pOwogICAgIHZvaWQgcnVuUGVuZGluZ1Rhc2tzKCk7CiAKLXByaXZhdGU6Citw
cm90ZWN0ZWQ6CiAgICAgU2NyaXB0RGVidWdTZXJ2ZXIoKTsKICAgICB+U2NyaXB0RGVidWdTZXJ2
ZXIoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFNjcmlwdERlYnVnTGlzdGVuZXIqIGdldERlYnVn
TGlzdGVuZXJGb3JDb250ZXh0KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHJ1bk1lc3NhZ2VMb29wT25QYXVzZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pikg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBxdWl0TWVzc2FnZUxvb3BPblBhdXNlKCkgPSAwOwogCiAg
ICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBicmVha1Byb2dyYW1DYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKTsKICAgICB2b2lkIGJyZWFrUHJvZ3JhbSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGV4ZWN1dGlvblN0YXRlKTsKQEAgLTExOSwyMCArMTA0LDE3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaXNwYXRjaERpZFBhcnNlU291cmNlKFNjcmlwdERlYnVnTGlzdGVuZXIq
IGxpc3RlbmVyLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHNvdXJjZU9iamVjdCk7CiAKICAgICB2
b2lkIGVuc3VyZURlYnVnZ2VyU2NyaXB0Q29tcGlsZWQoKTsKLSAgICB2b2lkIGRpZFJlc3VtZSgp
OworICAgIAorICAgIGJvb2wgaXNQYXVzZWQoKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxQYWdl
KiwgU2NyaXB0RGVidWdMaXN0ZW5lcio+IExpc3RlbmVyc01hcDsKLSAgICBMaXN0ZW5lcnNNYXAg
bV9saXN0ZW5lcnNNYXA7CiAgICAgUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBtX3BhdXNlT25FeGNl
cHRpb25zU3RhdGU7CiAgICAgT3duSGFuZGxlPHY4OjpPYmplY3Q+IG1fZGVidWdnZXJTY3JpcHQ7
CiAgICAgUmVmUHRyPEphdmFTY3JpcHRDYWxsRnJhbWU+IG1fY3VycmVudENhbGxGcmFtZTsKICAg
ICBPd25IYW5kbGU8djg6Ok9iamVjdD4gbV9leGVjdXRpb25TdGF0ZTsKLSAgICBPd25QdHI8Q2xp
ZW50TWVzc2FnZUxvb3A+IG1fY2xpZW50TWVzc2FnZUxvb3A7Ci0gICAgUGFnZSogbV9wYXVzZWRQ
YWdlOwogICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gbV9wYXVzZWRQYWdlQ29udGV4dDsKLSAg
ICBib29sIG1fZW5hYmxlZDsKIAogICAgIGJvb2wgbV9icmVha3BvaW50c0FjdGl2YXRlZDsKKyAg
ICBPd25IYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fYnJlYWtQcm9ncmFtQ2FsbGJhY2tU
ZW1wbGF0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41ZTJhY2QyCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyU2NyaXB0
RGVidWdTZXJ2ZXIuaCIKKworI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFC
TEUoV09SS0VSUykKKworI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2
ZXIoKQorICAgIDogU2NyaXB0RGVidWdTZXJ2ZXIoKQoreworfQorCit2b2lkIFdvcmtlclNjcmlw
dERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgV29ya2VyQ29u
dGV4dCopCit7Cit9CisKK3ZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3Rl
bmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBXb3JrZXJDb250ZXh0KikKK3sKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
ICYmIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw
MDAwMC4uZmRjNDdhYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoYykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXJfaAorI2RlZmluZSBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcl9o
CisKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKFdPUktFUlMpCisK
KyNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFdvcmtlckNvbnRleHQ7CisKK2NsYXNzIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIDog
cHVibGljIFNjcmlwdERlYnVnU2VydmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlcik7CitwdWJsaWM6CisgICAgV29ya2VyU2NyaXB0RGVidWdTZXJ2
ZXIoKTsKKyAgICB+V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoKSB7IH0KKworICAgIHZvaWQgYWRk
TGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciosIFdvcmtlckNvbnRleHQqKTsKKyAgICB2b2lk
IHJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBXb3JrZXJDb250ZXh0Kik7CisK
K3ByaXZhdGU6CisgICAgdmlydHVhbCBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBnZXREZWJ1Z0xpc3Rl
bmVyRm9yQ29udGV4dCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PikgeyByZXR1cm4gMDsgfQorICAg
IHZpcnR1YWwgdm9pZCBydW5NZXNzYWdlTG9vcE9uUGF1c2Uodjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4pIHsgfQorICAgIHZpcnR1YWwgdm9pZCBxdWl0TWVzc2FnZUxvb3BPblBhdXNlKCkgeyB9Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikgJiYgRU5BQkxFKFdPUktFUlMpCisKKyNlbmRpZiAvLyBXb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCBhNmYxMDU1
Li4zZGJhY2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0Lmgi
CiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUgIlNj
cmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKQEAgLTEwOSw3ICsx
MTAsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmN1cnJl
bnRDYWxsRnJhbWVDYWxsYmFjayhjb25zdCB2ODo6QQogewogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQogICAgIElOQ19TVEFUUygiSW5qZWN0ZWRTY3JpcHRIb3N0LmN1cnJlbnRDYWxs
RnJhbWUoKSIpOwotICAgIHJldHVybiB0b1Y4KFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5j
dXJyZW50Q2FsbEZyYW1lKCkpOworICAgIEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCA9IFY4SW5q
ZWN0ZWRTY3JpcHRIb3N0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICByZXR1cm4gdG9W
OChob3N0LT5kZWJ1Z2dlckFnZW50KCktPnNjcmlwdERlYnVnU2VydmVyKCkuY3VycmVudENhbGxG
cmFtZSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGFyZ3MpOwogICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRIb3N0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRI
b3N0LmgKaW5kZXggYjU5MmQ5Yi4uODlhNTAzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaApAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBJbnNwZWN0
b3JBZ2VudDsKIGNsYXNzIEluc3BlY3RvckNvbnNvbGVBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudDsKIGNsYXNzIEluc3BlY3RvckRhdGFiYXNlQWdlbnQ7CitjbGFzcyBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmQ7CiBjbGFzcyBJbnNw
ZWN0b3JPYmplY3Q7CiBjbGFzcyBOb2RlOwpAQCAtNjgsNiArNjksOSBAQCBwdWJsaWM6CiAjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKQogICAgICAgICAgICAgLCBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQqIGRvbVN0b3JhZ2VBZ2VudAogI2VuZGlmCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCisgICAgICAgICAgICAsIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQK
KyNlbmRpZgogICAgICAgICApCiAgICAgewogICAgICAgICBtX2luc3BlY3RvckFnZW50ID0gaW5z
cGVjdG9yQWdlbnQ7CkBAIC03OCw2ICs4Miw5IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoRE9NX1NU
T1JBR0UpCiAgICAgICAgIG1fZG9tU3RvcmFnZUFnZW50ID0gZG9tU3RvcmFnZUFnZW50OwogI2Vu
ZGlmCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisgICAgICAgIG1fZGVidWdnZXJB
Z2VudCA9IGRlYnVnZ2VyQWdlbnQ7CisjZW5kaWYKICAgICB9CiAgICAgdm9pZCBzZXRGcm9udGVu
ZChJbnNwZWN0b3JGcm9udGVuZCogZnJvbnRlbmQpIHsgbV9mcm9udGVuZCA9IGZyb250ZW5kOyB9
CiAgICAgdm9pZCBjbGVhckZyb250ZW5kKCkgeyBtX2Zyb250ZW5kID0gMDsgfQpAQCAtMTA1LDYg
KzExMiw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENyZWF0ZVdvcmtlcihsb25nIGlkLCBjb25z
dCBTdHJpbmcmIHVybCwgYm9vbCBpc1NoYXJlZFdvcmtlcik7CiAgICAgdm9pZCBkaWREZXN0cm95
V29ya2VyKGxvbmcgaWQpOwogI2VuZGlmCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCgpIHsgcmV0dXJuIG1f
ZGVidWdnZXJBZ2VudDsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRTY3JpcHRI
b3N0KCk7CkBAIC0xMTcsNiArMTI3LDkgQEAgcHJpdmF0ZToKICNpZiBFTkFCTEUoRE9NX1NUT1JB
R0UpCiAgICAgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50KiBtX2RvbVN0b3JhZ2VBZ2VudDsKICNl
bmRpZgorI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKKyNlbmRpZgogICAgIEluc3BlY3RvckZyb250ZW5k
KiBtX2Zyb250ZW5kOwogICAgIGxvbmcgbV9sYXN0V29ya2VySWQ7CiAgICAgVmVjdG9yPFJlZlB0
cjxOb2RlPiA+IG1faW5zcGVjdGVkTm9kZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckFnZW50LmNwcAppbmRleCA0MjZjNWYyLi5iZWFjNTA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBZ2VudC5jcHAKQEAgLTEsNiArMSw3IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNYXR0IExpbGVrIDx3ZWJraXRAbWF0
dGxpbGVrLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NCw3ICs0NSw2
IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yQ29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCi0jaW5jbHVk
ZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5k
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yUGFnZUFnZW50LmgiCkBAIC01Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9y
V29ya2VyUmVzb3VyY2UuaCIKICNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0RnVuY3Rpb25DYWxsLmgiCiAjaW5j
bHVkZSAiU2NyaXB0T2JqZWN0LmgiCkBAIC0xMTEsNyArMTEyLDcgQEAgSW5zcGVjdG9yQWdlbnQ6
Okluc3BlY3RvckFnZW50KFBhZ2UqIHBhZ2UsIEluc3BlY3RvckNsaWVudCogY2xpZW50LCBJbmpl
Y3RlZFNjcmkKICAgICAsIG1fcmVzb3VyY2VBZ2VudChJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpj
cmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlLCBtX3N0YXRlLmdldCgpKSkK
ICAgICAsIG1fY29uc29sZUFnZW50KG5ldyBJbnNwZWN0b3JDb25zb2xlQWdlbnQobV9pbnN0cnVt
ZW50aW5nQWdlbnRzLmdldCgpLCB0aGlzLCBtX3N0YXRlLmdldCgpLCBpbmplY3RlZFNjcmlwdE1h
bmFnZXIsIG1fZG9tQWdlbnQuZ2V0KCkpKQogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQotICAgICwgbV9kZWJ1Z2dlckFnZW50KEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNyZWF0ZSht
X2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2UsIGluamVjdGVk
U2NyaXB0TWFuYWdlcikpCisgICAgLCBtX2RlYnVnZ2VyQWdlbnQoUGFnZURlYnVnZ2VyQWdlbnQ6
OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fc3RhdGUuZ2V0KCksIHBhZ2Us
IGluamVjdGVkU2NyaXB0TWFuYWdlcikpCiAgICAgLCBtX2Jyb3dzZXJEZWJ1Z2dlckFnZW50KElu
c3BlY3RvckJyb3dzZXJEZWJ1Z2dlckFnZW50OjpjcmVhdGUobV9pbnN0cnVtZW50aW5nQWdlbnRz
LmdldCgpLCBtX3N0YXRlLmdldCgpLCBtX2RvbUFnZW50LmdldCgpLCBtX2RlYnVnZ2VyQWdlbnQu
Z2V0KCksIHRoaXMpKQogICAgICwgbV9wcm9maWxlckFnZW50KEluc3BlY3RvclByb2ZpbGVyQWdl
bnQ6OmNyZWF0ZShtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksIG1fY29uc29sZUFnZW50Lmdl
dCgpLCBwYWdlLCBtX3N0YXRlLmdldCgpKSkKICNlbmRpZgpAQCAtMTMwLDYgKzEzMSw5IEBAIElu
c3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudChQYWdlKiBwYWdlLCBJbnNwZWN0b3JDbGllbnQq
IGNsaWVudCwgSW5qZWN0ZWRTY3JpCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgICAgICAs
IG1fZG9tU3RvcmFnZUFnZW50LmdldCgpCiAjZW5kaWYKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKKyAgICAgICAgLCBtX2RlYnVnZ2VyQWdlbnQuZ2V0KCkKKyNlbmRpZgogICAgICk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCBkNDU5NTNhLi41NmJjN2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xLDYgKzEsNiBA
QAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ4LDE1ICs0OCw5IEBA
IHN0YXRpYyBjb25zdCBjaGFyIGRlYnVnZ2VyRW5hYmxlZFtdID0gImRlYnVnZ2VyRW5hYmxlZCI7
CiBzdGF0aWMgY29uc3QgY2hhciBqYXZhU2NyaXB0QnJlYWtwb2ludHNbXSA9ICJqYXZhU2NyaXB0
QnJlYWtvcGludHMiOwogfTsKIAotUGFzc093blB0cjxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50PiBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjcmVhdGUoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cywgSW5zcGVjdG9yU3RhdGUqIGluc3BlY3RvclN0YXRlLCBQYWdlKiBpbnNw
ZWN0ZWRQYWdlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikK
LXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoaW5zdHJ1
bWVudGluZ0FnZW50cywgaW5zcGVjdG9yU3RhdGUsIGluc3BlY3RlZFBhZ2UsIGluamVjdGVkU2Ny
aXB0TWFuYWdlcikpOwotfQotCi1JbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3Bl
Y3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgUGFnZSogaW5zcGVjdGVkUGFnZSwgSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCitJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBpbnNwZWN0b3JTdGF0ZSwgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCiAgICAgOiBtX2luc3RydW1lbnRpbmdB
Z2VudHMoaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1faW5zcGVjdG9yU3RhdGUoaW5zcGVj
dG9yU3RhdGUpCi0gICAgLCBtX2luc3BlY3RlZFBhZ2UoaW5zcGVjdGVkUGFnZSkKICAgICAsIG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKGluamVjdGVkU2NyaXB0TWFuYWdlcikKICAgICAsIG1fZnJv
bnRlbmQoMCkKICAgICAsIG1fcGF1c2VkU2NyaXB0U3RhdGUoMCkKQEAgLTc4LDEwICs3MiwxMCBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVuYWJsZShib29sIHJlc3RvcmluZ0Zyb21T
dGF0ZSkKICAgICBtX2luc3BlY3RvclN0YXRlLT5zZXRCb29sZWFuKERlYnVnZ2VyQWdlbnRTdGF0
ZTo6ZGVidWdnZXJFbmFibGVkLCB0cnVlKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNl
dEluc3BlY3RvckRlYnVnZ2VyQWdlbnQodGhpcyk7CiAKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2hhcmVkKCkuY2xlYXJCcmVha3BvaW50cygpOworICAgIHNjcmlwdERlYnVnU2VydmVyKCkuY2xl
YXJCcmVha3BvaW50cygpOwogICAgIC8vIEZJWE1FKFdLNDQ1MTMpOiBicmVha3BvaW50cyBhY3Rp
dmF0ZWQgZmxhZyBzaG91bGQgYmUgc3luY2hyb25pemVkIGJldHdlZW4gYWxsIGZyb250LWVuZHMK
LSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0QnJlYWtwb2ludHNBY3RpdmF0ZWQo
dHJ1ZSk7Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLmFkZExpc3RlbmVyKHRoaXMs
IG1faW5zcGVjdGVkUGFnZSk7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5zZXRCcmVha3BvaW50
c0FjdGl2YXRlZCh0cnVlKTsKKyAgICBzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCk7
CiAKICAgICBtX2Zyb250ZW5kLT5kZWJ1Z2dlcldhc0VuYWJsZWQoKTsKICAgICBpZiAobV9saXN0
ZW5lcikKQEAgLTk2LDcgKzkwLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNh
YmxlKCkKICAgICBtX2luc3BlY3RvclN0YXRlLT5zZXRPYmplY3QoRGVidWdnZXJBZ2VudFN0YXRl
OjpqYXZhU2NyaXB0QnJlYWtwb2ludHMsIEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkpOwogICAg
IG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgwKTsKIAot
ICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZW1vdmVMaXN0ZW5lcih0aGlzLCBtX2lu
c3BlY3RlZFBhZ2UpOworICAgIHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpOwogICAg
IGNsZWFyKCk7CiAKICAgICBpZiAobV9mcm9udGVuZCkKQEAgLTEzNiw5ICsxMzAsOSBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRnJvbnRlbmQoKQogdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyosIGJvb2wgYWN0
aXZlKQogewogICAgIGlmIChhY3RpdmUpCi0gICAgICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFy
ZWQoKS5hY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CisgICAgICAgIHNjcmlwdERlYnVnU2VydmVyKCku
YWN0aXZhdGVCcmVha3BvaW50cygpOwogICAgIGVsc2UKLSAgICAgICAgU2NyaXB0RGVidWdTZXJ2
ZXI6OnNoYXJlZCgpLmRlYWN0aXZhdGVCcmVha3BvaW50cygpOworICAgICAgICBzY3JpcHREZWJ1
Z1NlcnZlcigpLmRlYWN0aXZhdGVCcmVha3BvaW50cygpOwogfQogCiB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6Omluc3BlY3RlZFVSTENoYW5nZWQoY29uc3QgU3RyaW5nJikKQEAgLTE5OSwx
OCArMTkzLDE4IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2lu
dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwCiAgICAgaWYgKGRlYnVnU2VydmVy
QnJlYWtwb2ludElkc0l0ZXJhdG9yID09IG1fYnJlYWtwb2ludElkVG9EZWJ1Z1NlcnZlckJyZWFr
cG9pbnRJZHMuZW5kKCkpCiAgICAgICAgIHJldHVybjsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGRlYnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yLT5zZWNvbmQuc2l6ZSgpOyArK2kp
Ci0gICAgICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZW1vdmVCcmVha3BvaW50KGRl
YnVnU2VydmVyQnJlYWtwb2ludElkc0l0ZXJhdG9yLT5zZWNvbmRbaV0pOworICAgICAgICBzY3Jp
cHREZWJ1Z1NlcnZlcigpLnJlbW92ZUJyZWFrcG9pbnQoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRz
SXRlcmF0b3ItPnNlY29uZFtpXSk7CiAgICAgbV9icmVha3BvaW50SWRUb0RlYnVnU2VydmVyQnJl
YWtwb2ludElkcy5yZW1vdmUoZGVidWdTZXJ2ZXJCcmVha3BvaW50SWRzSXRlcmF0b3IpOwogfQog
CiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0
cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc291cmNlSWQsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyKQogewogICAgIGlmICghbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50
SWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZW1v
dmVCcmVha3BvaW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkKTsKKyAgICAgICAg
c2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVCcmVha3BvaW50KG1fY29udGludWVUb0xvY2F0aW9u
QnJlYWtwb2ludElkKTsKICAgICAgICAgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SWQg
PSAiIjsKICAgICB9CiAgICAgU2NyaXB0QnJlYWtwb2ludCBicmVha3BvaW50KGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgIiIsIHRydWUpOwotICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtw
b2ludElkID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldEJyZWFrcG9pbnQoc291cmNl
SWQsIGJyZWFrcG9pbnQsICZsaW5lTnVtYmVyLCAmY29sdW1uTnVtYmVyKTsKKyAgICBtX2NvbnRp
bnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJZCA9IHNjcmlwdERlYnVnU2VydmVyKCkuc2V0QnJlYWtw
b2ludChzb3VyY2VJZCwgYnJlYWtwb2ludCwgJmxpbmVOdW1iZXIsICZjb2x1bW5OdW1iZXIpOwog
ICAgIHJlc3VtZShlcnJvcik7CiB9CiAKQEAgLTIzMiw3ICsyMjYsNyBAQCBib29sIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2lu
dElkLCBjb25zdAogICAgIGlmIChicmVha3BvaW50LmxpbmVOdW1iZXIgPj0gc2NyaXB0LmxpbmVP
ZmZzZXQgKyBzY3JpcHQubGluZXNDb3VudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
U3RyaW5nIGRlYnVnU2VydmVyQnJlYWtwb2ludElkID0gU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJl
ZCgpLnNldEJyZWFrcG9pbnQoc291cmNlSWQsIGJyZWFrcG9pbnQsIGFjdHVhbExpbmVOdW1iZXIs
IGFjdHVhbENvbHVtbk51bWJlcik7CisgICAgU3RyaW5nIGRlYnVnU2VydmVyQnJlYWtwb2ludElk
ID0gc2NyaXB0RGVidWdTZXJ2ZXIoKS5zZXRCcmVha3BvaW50KHNvdXJjZUlkLCBicmVha3BvaW50
LCBhY3R1YWxMaW5lTnVtYmVyLCBhY3R1YWxDb2x1bW5OdW1iZXIpOwogICAgIGlmIChkZWJ1Z1Nl
cnZlckJyZWFrcG9pbnRJZC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MjQ3LDcgKzI0MSw3IEBAIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFr
cG9pbnQoY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWQsIGNvbnN0CiB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmVkaXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHNvdXJjZUlELCBjb25zdCBTdHJpbmcmIG5ld0NvbnRlbnQsIFN0cmluZyog
cmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBuZXdDYWxsRnJhbWVzKQogewogICAgIFN0
cmluZyBlZGl0UmVzdWx0OwotICAgIGlmIChTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuZWRp
dFNjcmlwdFNvdXJjZShzb3VyY2VJRCwgbmV3Q29udGVudCwgZWRpdFJlc3VsdCkpIHsKKyAgICBp
ZiAoc2NyaXB0RGVidWdTZXJ2ZXIoKS5lZGl0U2NyaXB0U291cmNlKHNvdXJjZUlELCBuZXdDb250
ZW50LCBlZGl0UmVzdWx0KSkgewogICAgICAgICAqbmV3Q2FsbEZyYW1lcyA9IGN1cnJlbnRDYWxs
RnJhbWVzKCk7CiAgICAgICAgICpyZXN1bHQgPSBlZGl0UmVzdWx0OwogICAgIH0gZWxzZQpAQCAt
MjY2LDcgKzI2MCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVz
ZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckV2ZW50VHlwZSB0eXBlCiAgICAgbV9icmVha1Byb2dy
YW1EZXRhaWxzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBtX2JyZWFrUHJvZ3Jh
bURldGFpbHMtPnNldE51bWJlcigiZXZlbnRUeXBlIiwgdHlwZSk7CiAgICAgbV9icmVha1Byb2dy
YW1EZXRhaWxzLT5zZXRWYWx1ZSgiZXZlbnREYXRhIiwgZGF0YSk7Ci0gICAgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnNoYXJlZCgpLnNldFBhdXNlT25OZXh0U3RhdGVtZW50KHRydWUpOworICAgIHNjcmlw
dERlYnVnU2VydmVyKCkuc2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQodHJ1ZSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKQpAQCAt
Mjc0LDcgKzI2OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VP
bk5leHRTdGF0ZW1lbnQoKQogICAgIGlmIChtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fYnJlYWtQcm9ncmFtRGV0YWlscyA9IDA7Ci0gICAgU2NyaXB0
RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldFBhdXNlT25OZXh0U3RhdGVtZW50KGZhbHNlKTsKKyAg
ICBzY3JpcHREZWJ1Z1NlcnZlcigpLnNldFBhdXNlT25OZXh0U3RhdGVtZW50KGZhbHNlKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZShFcnJvclN0cmluZyopCkBAIC0y
ODUsMjggKzI3OSwyOCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnBhdXNlKEVycm9y
U3RyaW5nKikKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN1bWUoRXJyb3JTdHJp
bmcqKQogewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5jb250aW51ZVByb2dyYW0o
KTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLmNvbnRpbnVlUHJvZ3JhbSgpOwogfQogCiB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBPdmVyKEVycm9yU3RyaW5nKikKIHsKLSAgICBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc3RlcE92ZXJTdGF0ZW1lbnQoKTsKKyAgICBzY3Jp
cHREZWJ1Z1NlcnZlcigpLnN0ZXBPdmVyU3RhdGVtZW50KCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c3RlcEludG8oRXJyb3JTdHJpbmcqKQogewotICAgIFNjcmlwdERlYnVn
U2VydmVyOjpzaGFyZWQoKS5zdGVwSW50b1N0YXRlbWVudCgpOworICAgIHNjcmlwdERlYnVnU2Vy
dmVyKCkuc3RlcEludG9TdGF0ZW1lbnQoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzdGVwT3V0KEVycm9yU3RyaW5nKikKIHsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hh
cmVkKCkuc3RlcE91dE9mRnVuY3Rpb24oKTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnN0ZXBP
dXRPZkZ1bmN0aW9uKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBwYXVzZVN0
YXRlKQogewotICAgIFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5zZXRQYXVzZU9uRXhjZXB0
aW9uc1N0YXRlKHN0YXRpY19jYXN0PFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlPihwYXVzZVN0YXRlKSk7Ci0gICAgaWYgKFNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQo
KS5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCkgIT0gcGF1c2VTdGF0ZSkKKyAgICBzY3JpcHREZWJ1
Z1NlcnZlcigpLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoc3RhdGljX2Nhc3Q8U2NyaXB0RGVi
dWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGU+KHBhdXNlU3RhdGUpKTsKKyAgICBpZiAo
c2NyaXB0RGVidWdTZXJ2ZXIoKS5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCkgIT0gcGF1c2VTdGF0
ZSkKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yLiBDb3VsZCBub3QgY2hh
bmdlIHBhdXNlIG9uIGV4Y2VwdGlvbnMgc3RhdGUuIjsKIH0KIApAQCAtMzc3LDcgKzM3MSw3IEBA
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlKQogICAgIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkID0gZmFsc2U7CiAKICAgICBp
ZiAoIW1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkLmlzRW1wdHkoKSkgewotICAgICAg
ICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVtb3ZlQnJlYWtwb2ludChtX2NvbnRpbnVl
VG9Mb2NhdGlvbkJyZWFrcG9pbnRJZCk7CisgICAgICAgIHNjcmlwdERlYnVnU2VydmVyKCkucmVt
b3ZlQnJlYWtwb2ludChtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJZCk7CiAgICAgICAg
IG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElkID0gIiI7CiAgICAgfQogfQpAQCAtMzk0
LDcgKzM4OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtQcm9ncmFtKERl
YnVnZ2VyRXZlbnRUeXBlIHR5cGUsIFBhc3NSZWZQdHI8SW5zCiAgICAgbV9icmVha1Byb2dyYW1E
ZXRhaWxzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICBtX2JyZWFrUHJvZ3JhbURl
dGFpbHMtPnNldE51bWJlcigiZXZlbnRUeXBlIiwgdHlwZSk7CiAgICAgbV9icmVha1Byb2dyYW1E
ZXRhaWxzLT5zZXRWYWx1ZSgiZXZlbnREYXRhIiwgZGF0YSk7Ci0gICAgU2NyaXB0RGVidWdTZXJ2
ZXI6OnNoYXJlZCgpLmJyZWFrUHJvZ3JhbSgpOworICAgIHNjcmlwdERlYnVnU2VydmVyKCkuYnJl
YWtQcm9ncmFtKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgK
aW5kZXggNDYzYmI4YS4uZDU3MjZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTUxLDcgKzUxLDcgQEAgY2xhc3MgSW5zcGVjdG9y
T2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yU3RhdGU7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNs
YXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Ci1jbGFzcyBQYWdlOworY2xhc3MgU2NyaXB0RGVidWdT
ZXJ2ZXI7CiAKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCkBAIC02NCw3ICs2NCw2IEBA
IGVudW0gRGVidWdnZXJFdmVudFR5cGUgewogY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6
IHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SW5zcGVjdG9yRGVidWdnZXJBZ2VudD4gY3JlYXRlKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlw
dE1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCk7CiAKICAg
ICB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIHsgZW5hYmxlKGZhbHNlKTsgfQpAQCAtMTA2LDkg
KzEwNSwxNSBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2b2lkIHNldExpc3RlbmVyKExpc3RlbmVy
KiBsaXN0ZW5lcikgeyBtX2xpc3RlbmVyID0gbGlzdGVuZXI7IH0KIAotcHJpdmF0ZToKLSAgICBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JTdGF0
ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIFNjcmlwdERl
YnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigpID0gMDsKKworcHJvdGVjdGVkOgorICAgIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclN0YXRl
KiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnRMaXN0
ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcExpc3Rl
bmluZ1NjcmlwdERlYnVnU2VydmVyKCkgPSAwOworCitwcml2YXRlOgogICAgIHZvaWQgZW5hYmxl
KGJvb2wgcmVzdG9yaW5nRnJvbVN0YXRlKTsKIAogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IGN1cnJlbnRDYWxsRnJhbWVzKCk7CkBAIC0xNTEsNyArMTU2LDYgQEAgcHJpdmF0ZToKIAog
ICAgIEluc3RydW1lbnRpbmdBZ2VudHMqIG1faW5zdHJ1bWVudGluZ0FnZW50czsKICAgICBJbnNw
ZWN0b3JTdGF0ZSogbV9pbnNwZWN0b3JTdGF0ZTsKLSAgICBQYWdlKiBtX2luc3BlY3RlZFBhZ2U7
CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKICAg
ICBJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXIqIG1fZnJvbnRlbmQ7CiAgICAgU2NyaXB0U3Rh
dGUqIG1fcGF1c2VkU2NyaXB0U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggMWY5NWI2NC4uODcwYTEyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50
LmNwcApAQCAtNDAsOCArNDAsOCBAQAogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIK
ICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKLSNpbmNsdWRl
ICJTY3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNjcmlwdEhlYXBTbmFwc2hvdC5oIgog
I2luY2x1ZGUgIlNjcmlwdFByb2ZpbGUuaCIKICNpbmNsdWRlICJTY3JpcHRQcm9maWxlci5oIgpA
QCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6ZGlzYWJsZSgp
CiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybjsKICAgICBtX2VuYWJsZWQgPSBm
YWxzZTsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21waWxlQWxsSlNGdW5j
dGlvbnNTb29uKCk7CisgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpzaGFyZWQoKS5yZWNvbXBp
bGVBbGxKU0Z1bmN0aW9uc1Nvb24oKTsKICAgICBpZiAobV9mcm9udGVuZCkKICAgICAgICAgbV9m
cm9udGVuZC0+cHJvZmlsZXJXYXNEaXNhYmxlZCgpOwogfQpAQCAtMTY4LDcgKzE2OCw3IEBAIHZv
aWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6ZW5hYmxlKGJvb2wgc2tpcFJlY29tcGlsZSkKICAg
ICAgICAgcmV0dXJuOwogICAgIG1fZW5hYmxlZCA9IHRydWU7CiAgICAgaWYgKCFza2lwUmVjb21w
aWxlKQotICAgICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21waWxlQWxsSlNG
dW5jdGlvbnNTb29uKCk7CisgICAgICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCku
cmVjb21waWxlQWxsSlNGdW5jdGlvbnNTb29uKCk7CiAgICAgaWYgKG1fZnJvbnRlbmQpCiAgICAg
ICAgIG1fZnJvbnRlbmQtPnByb2ZpbGVyV2FzRW5hYmxlZCgpOwogfQpAQCAtMjk0LDcgKzI5NCw3
IEBAIHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6c3RhcnRVc2VySW5pdGlhdGVkUHJvZmls
aW5nKCkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghZW5hYmxlZCgpKSB7CiAgICAgICAgIGVu
YWJsZSh0cnVlKTsKLSAgICAgICAgU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJlY29tcGls
ZUFsbEpTRnVuY3Rpb25zKCk7CisgICAgICAgIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVk
KCkucmVjb21waWxlQWxsSlNGdW5jdGlvbnMoMCk7CiAgICAgfQogICAgIG1fcmVjb3JkaW5nVXNl
ckluaXRpYXRlZFByb2ZpbGUgPSB0cnVlOwogICAgIFN0cmluZyB0aXRsZSA9IGdldEN1cnJlbnRV
c2VySW5pdGlhdGVkUHJvZmlsZU5hbWUodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAw
MDAwLi4wMzUzNjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VEZWJ1Z2dlckFnZW50LmNwcApAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCisKKyNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKFdPUktFUlMpCisKKyNp
bmNsdWRlICJQYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYXNzT3duUHRyPFBhZ2VEZWJ1Z2dlckFnZW50PiBQYWdlRGVidWdnZXJBZ2VudDo6Y3JlYXRl
KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRl
KiBpbnNwZWN0b3JTdGF0ZSwgUGFnZSogaW5zcGVjdGVkUGFnZSwgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBQ
YWdlRGVidWdnZXJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwgaW5z
cGVjdGVkUGFnZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKSk7Cit9CisKK1BhZ2VEZWJ1Z2dlckFn
ZW50OjpQYWdlRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogaW5zcGVjdG9yU3RhdGUsIFBhZ2UqIGluc3BlY3RlZFBh
Z2UsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgIDog
SW5zcGVjdG9yRGVidWdnZXJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0
ZSwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgICwgbV9pbnNwZWN0ZWRQYWdlKGluc3BlY3Rl
ZFBhZ2UpCit7Cit9CisKK1BhZ2VEZWJ1Z2dlckFnZW50Ojp+UGFnZURlYnVnZ2VyQWdlbnQoKQor
eworfQorCit2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpzdGFydExpc3RlbmluZ1NjcmlwdERlYnVn
U2VydmVyKCkKK3sKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLmFkZExpc3RlbmVyKHRoaXMsIG1f
aW5zcGVjdGVkUGFnZSk7Cit9CisKK3ZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5p
bmdTY3JpcHREZWJ1Z1NlcnZlcigpCit7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVM
aXN0ZW5lcih0aGlzLCBtX2luc3BlY3RlZFBhZ2UpOworfQorCitQYWdlU2NyaXB0RGVidWdTZXJ2
ZXImIFBhZ2VEZWJ1Z2dlckFnZW50OjpzY3JpcHREZWJ1Z1NlcnZlcigpCit7CisgICAgcmV0dXJu
IFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUo
SU5TUEVDVE9SKSAmJiBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VEZWJ1Z2dlckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4u
N2Q2YWY2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
RGVidWdnZXJBZ2VudC5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBhZ2VEZWJ1Z2dlckFnZW50
X2gKKyNkZWZpbmUgUGFnZURlYnVnZ2VyQWdlbnRfaAorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRf
REVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCisjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oIgorI2luY2x1ZGUgIlBhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIFBhZ2U7CitjbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI7
CisKK2NsYXNzIFBhZ2VEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VEZWJ1Z2dlckFnZW50KTsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxQ
YWdlRGVidWdnZXJBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JT
dGF0ZSosIFBhZ2UqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIH5QYWdl
RGVidWdnZXJBZ2VudCgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgdm9pZCBzdGFydExpc3Rl
bmluZ1NjcmlwdERlYnVnU2VydmVyKCk7CisgICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdT
Y3JpcHREZWJ1Z1NlcnZlcigpOworICAgIHZpcnR1YWwgUGFnZVNjcmlwdERlYnVnU2VydmVyJiBz
Y3JpcHREZWJ1Z1NlcnZlcigpOworCisgICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgUGFnZSosIEluamVjdGVkU2NyaXB0TWFuYWdlciop
OworICAgIFBhZ2UqIGNvbnN0IG1faW5zcGVjdGVkUGFnZTsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFC
TEUoSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoUGFnZURlYnVnZ2VyQWdlbnRfaCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZmQwMGE1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCkBA
IC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAq
IG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2VyRGVidWdn
ZXJBZ2VudC5oIgorCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJ
TlNQRUNUT1IpICYmIEVOQUJMRShXT1JLRVJTKQorI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVy
LmgiCisjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1Bhc3NPd25QdHI8V29ya2VyRGVidWdnZXJBZ2VudD4gV29ya2VyRGVidWdnZXJBZ2VudDo6Y3Jl
YXRlKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0
YXRlKiBpbnNwZWN0b3JTdGF0ZSwgV29ya2VyQ29udGV4dCogaW5zcGVjdGVkV29ya2VyQ29udGV4
dCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCit7CisgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJEZWJ1Z2dlckFnZW50KGluc3RydW1lbnRpbmdBZ2Vu
dHMsIGluc3BlY3RvclN0YXRlLCBpbnNwZWN0ZWRXb3JrZXJDb250ZXh0LCBpbmplY3RlZFNjcmlw
dE1hbmFnZXIpKTsKK30KKworV29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVidWdnZXJBZ2Vu
dChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0
ZSogaW5zcGVjdG9yU3RhdGUsIFdvcmtlckNvbnRleHQqIGluc3BlY3RlZFdvcmtlckNvbnRleHQs
IEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgIDogSW5z
cGVjdG9yRGVidWdnZXJBZ2VudChpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnNwZWN0b3JTdGF0ZSwg
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgICwgbV9pbnNwZWN0ZWRXb3JrZXJDb250ZXh0KGlu
c3BlY3RlZFdvcmtlckNvbnRleHQpCit7Cit9CisKK1dvcmtlckRlYnVnZ2VyQWdlbnQ6On5Xb3Jr
ZXJEZWJ1Z2dlckFnZW50KCkKK3sKK30KKwordm9pZCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpzdGFy
dExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkKK3sKK30KKwordm9pZCBXb3JrZXJEZWJ1Z2dl
ckFnZW50OjpzdG9wTGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKQoreworfQorCitXb3JrZXJT
Y3JpcHREZWJ1Z1NlcnZlciYgV29ya2VyRGVidWdnZXJBZ2VudDo6c2NyaXB0RGVidWdTZXJ2ZXIo
KQoreworICAgIHJldHVybiBtX3NjcmlwdERlYnVnU2VydmVyOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5B
QkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw
MDAwMDAwLi5lODhmZDg5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXb3JrZXJE
ZWJ1Z2dlckFnZW50X2gKKyNkZWZpbmUgV29ya2VyRGVidWdnZXJBZ2VudF9oCisKKyNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikgJiYgRU5BQkxFKFdP
UktFUlMpCisjaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgIldv
cmtlclNjcmlwdERlYnVnU2VydmVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
V29ya2VyQ29udGV4dDsKKworY2xhc3MgV29ya2VyRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJEZWJ1
Z2dlckFnZW50KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc093blB0cjxXb3JrZXJEZWJ1Z2dlckFnZW50PiBjcmVhdGUoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvclN0YXRlKiwgV29ya2VyQ29udGV4dCosIEluamVjdGVkU2NyaXB0
TWFuYWdlciopOworICAgIHZpcnR1YWwgfldvcmtlckRlYnVnZ2VyQWdlbnQoKTsKKworcHJpdmF0
ZToKKyAgICBXb3JrZXJEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0
b3JTdGF0ZSosIFdvcmtlckNvbnRleHQqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKKworICAg
IHZpcnR1YWwgdm9pZCBzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCk7CisgICAgdmly
dHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpOworICAgIHZpcnR1YWwg
V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVyKCk7CisKKyAgICBXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlciBtX3NjcmlwdERlYnVnU2VydmVyOworICAgIFdvcmtlckNvbnRl
eHQqIG1faW5zcGVjdGVkV29ya2VyQ29udGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5T
UEVDVE9SKSAmJiBFTkFCTEUoV09SS0VSUykKKworI2VuZGlmIC8vICFkZWZpbmVkKFdvcmtlckRl
YnVnZ2VyQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggYmI2ZDI3MC4uM2Fk
NjVhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMiBAQAogMjAxMS0w
My0zMCAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAorICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBzcGxp
dCBkZWJ1Z2dlciBhZ2VudCBpbnRvIFBhZ2UgYW5kIFdvcmtlci1zcGVjaWZpYyBvbmVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NzM0NQorCisgICAg
ICAgIFNjcmlwdERlYnVnU2VydmVyIGFuZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IGNvbnRhaW4g
b25seSBmdW5jdGlvbmFsaXR5IGNvbW1vbgorICAgICAgICBmb3IgV29ya2VyIGFuZCBQYWdlIGRl
YnVnZ2VyLiBBbGwgc3BlY2lmaWNzIGlzIG1vdmVkIGludG8gUGFnZS9Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlcgorICAgICAgICBhbmQgUGFnZS9Xb3JrZXJEZWJ1Z2dlckFnZW50LgorCisgICAgICAg
ICogc3JjL0RlYnVnZ2VyQWdlbnRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGVidWdn
ZXJBZ2VudE1hbmFnZXI6OnNldEV4cG9zZVY4RGVidWdnZXJQcm90b2NvbCk6CisgICAgICAgICog
c3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9v
bHNBZ2VudDo6aW50ZXJydXB0QW5kRGlzcGF0Y2gpOgorICAgICAgICAoV2ViS2l0OjpXZWJEZXZU
b29sc0FnZW50Ojpwcm9jZXNzUGVuZGluZ01lc3NhZ2VzKToKKworMjAxMS0wMy0zMCAgWXVyeSBT
ZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKwogICAgICAgICBVbnJldmlld2VkLiBS
b2xsb3V0IHI4MjQzOCBhbmQgcjgyNDM2LgogCiAgICAgICAgICogc3JjL0RlYnVnZ2VyQWdlbnRN
YW5hZ2VyLmNwcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVn
Z2VyQWdlbnRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RlYnVnZ2Vy
QWdlbnRNYW5hZ2VyLmNwcAppbmRleCBiNzZiY2ZlLi4zNjhiNzhjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EZWJ1Z2dlckFnZW50TWFuYWdlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGVidWdnZXJBZ2VudE1hbmFnZXIuY3BwCkBAIC0zNCw3
ICszNCw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXJBZ2VudEltcGwuaCIKICNpbmNsdWRlICJGcmFt
ZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cExvYWREZWZlcnJlci5oIgotI2luY2x1ZGUgIlNjcmlw
dERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5j
bHVkZSAiVjhQcm94eS5oIgogI2luY2x1ZGUgIldlYkRldlRvb2xzQWdlbnRJbXBsLmgiCiAjaW5j
bHVkZSAiV2ViRnJhbWVJbXBsLmgiCkBAIC0yNDcsNyArMjQ3LDcgQEAgdm9pZCBEZWJ1Z2dlckFn
ZW50TWFuYWdlcjo6c2V0TWVzc2FnZUxvb3BEaXNwYXRjaEhhbmRsZXIoV2ViRGV2VG9vbHNBZ2Vu
dDo6TWVzc2EKIHZvaWQgRGVidWdnZXJBZ2VudE1hbmFnZXI6OnNldEV4cG9zZVY4RGVidWdnZXJQ
cm90b2NvbChib29sIHZhbHVlKQogewogICAgIHNfZXhwb3NlVjhEZWJ1Z2dlclByb3RvY29sID0g
dmFsdWU7Ci0gICAgV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldEVuYWJs
ZWQoIXNfZXhwb3NlVjhEZWJ1Z2dlclByb3RvY29sKTsKKyAgICBXZWJDb3JlOjpQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnNldEVuYWJsZWQoIXNfZXhwb3NlVjhEZWJ1Z2dlclByb3Rv
Y29sKTsKIH0KIAogdm9pZCBEZWJ1Z2dlckFnZW50TWFuYWdlcjo6c2V0SG9zdElkKFdlYkZyYW1l
SW1wbCogd2ViZnJhbWUsIGludCBob3N0SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKaW5kZXggZDcxOGUyZi4uYzFhNWY5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJ
bXBsLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC00MCwxMSArNDAsMTEgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisj
aW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUVycm9yLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgotI2luY2x1ZGUgIlNjcmlwdERl
YnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVkZSAiVjhQcm94eS5o
IgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCkBAIC03MiwxNCArNzIsMTQgQEAgbmFtZXNwYWNl
IHsKIHN0YXRpYyBjb25zdCBjaGFyIGtGcm9udGVuZENvbm5lY3RlZEZlYXR1cmVOYW1lW10gPSAi
ZnJvbnRlbmQtY29ubmVjdGVkIjsKIHN0YXRpYyBjb25zdCBjaGFyIGtJbnNwZWN0b3JTdGF0ZUZl
YXR1cmVOYW1lW10gPSAiaW5zcGVjdG9yLXN0YXRlIjsKIAotY2xhc3MgQ2xpZW50TWVzc2FnZUxv
b3BBZGFwdGVyIDogcHVibGljIFNjcmlwdERlYnVnU2VydmVyOjpDbGllbnRNZXNzYWdlTG9vcCB7
CitjbGFzcyBDbGllbnRNZXNzYWdlTG9vcEFkYXB0ZXIgOiBwdWJsaWMgUGFnZVNjcmlwdERlYnVn
U2VydmVyOjpDbGllbnRNZXNzYWdlTG9vcCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZW5z
dXJlQ2xpZW50TWVzc2FnZUxvb3BDcmVhdGVkKFdlYkRldlRvb2xzQWdlbnRDbGllbnQqIGNsaWVu
dCkKICAgICB7CiAgICAgICAgIGlmIChzX2luc3RhbmNlKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBzX2luc3RhbmNlID0gbmV3IENsaWVudE1lc3NhZ2VMb29wQWRhcHRlcihjbGllbnQt
PmNyZWF0ZUNsaWVudE1lc3NhZ2VMb29wKCkpOwotICAgICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2hhcmVkKCkuc2V0Q2xpZW50TWVzc2FnZUxvb3Aoc19pbnN0YW5jZSk7CisgICAgICAgIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkuc2V0Q2xpZW50TWVzc2FnZUxvb3Aoc19pbnN0YW5j
ZSk7CiAgICAgfQogCiAgICAgc3RhdGljIHZvaWQgaW5zcGVjdGVkVmlld0Nsb3NlZChXZWJWaWV3
SW1wbCogdmlldykKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8g
UmVsZWFzZSByZW5kZXIgdGhyZWFkIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgaWYgKHNfaW5zdGFu
Y2UgJiYgc19pbnN0YW5jZS0+bV9ydW5uaW5nKQotICAgICAgICAgICAgU2NyaXB0RGVidWdTZXJ2
ZXI6OnNoYXJlZCgpLmNvbnRpbnVlUHJvZ3JhbSgpOworICAgICAgICAgICAgUGFnZVNjcmlwdERl
YnVnU2VydmVyOjpzaGFyZWQoKS5jb250aW51ZVByb2dyYW0oKTsKICAgICB9CiAKIHByaXZhdGU6
CkBAIC0zMTksNyArMzE5LDcgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50OjpkZWJ1Z2dlclBhdXNl
U2NyaXB0KCkKIAogdm9pZCBXZWJEZXZUb29sc0FnZW50OjppbnRlcnJ1cHRBbmREaXNwYXRjaChN
ZXNzYWdlRGVzY3JpcHRvciogZCkKIHsKLSAgICBjbGFzcyBEZWJ1Z2dlclRhc2sgOiBwdWJsaWMg
U2NyaXB0RGVidWdTZXJ2ZXI6OlRhc2sgeworICAgIGNsYXNzIERlYnVnZ2VyVGFzayA6IHB1Ymxp
YyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OlRhc2sgewogICAgIHB1YmxpYzoKICAgICAgICAgRGVi
dWdnZXJUYXNrKFdlYkRldlRvb2xzQWdlbnQ6Ok1lc3NhZ2VEZXNjcmlwdG9yKiBkZXNjcmlwdG9y
KSA6IG1fZGVzY3JpcHRvcihkZXNjcmlwdG9yKSB7IH0KICAgICAgICAgdmlydHVhbCB+RGVidWdn
ZXJUYXNrKCkgeyB9CkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBXZWJEZXZUb29sc0FnZW50Ojpp
bnRlcnJ1cHRBbmREaXNwYXRjaChNZXNzYWdlRGVzY3JpcHRvciogZCkKICAgICBwcml2YXRlOgog
ICAgICAgICBPd25QdHI8V2ViRGV2VG9vbHNBZ2VudDo6TWVzc2FnZURlc2NyaXB0b3I+IG1fZGVz
Y3JpcHRvcjsKICAgICB9OwotICAgIFNjcmlwdERlYnVnU2VydmVyOjppbnRlcnJ1cHRBbmRSdW4o
bmV3IERlYnVnZ2VyVGFzayhkKSk7CisgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyOjppbnRlcnJ1
cHRBbmRSdW4obmV3IERlYnVnZ2VyVGFzayhkKSk7CiB9CiAKIGJvb2wgV2ViRGV2VG9vbHNBZ2Vu
dDo6c2hvdWxkSW50ZXJydXB0Rm9yTWVzc2FnZShjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCkBA
IC0zNTEsNyArMzUxLDcgQEAgYm9vbCBXZWJEZXZUb29sc0FnZW50OjpzaG91bGRJbnRlcnJ1cHRG
b3JNZXNzYWdlKGNvbnN0IFdlYlN0cmluZyYgbWVzc2FnZSkKIAogdm9pZCBXZWJEZXZUb29sc0Fn
ZW50Ojpwcm9jZXNzUGVuZGluZ01lc3NhZ2VzKCkKIHsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6
c2hhcmVkKCkucnVuUGVuZGluZ1Rhc2tzKCk7CisgICAgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpz
aGFyZWQoKS5ydW5QZW5kaW5nVGFza3MoKTsKIH0KIAogdm9pZCBXZWJEZXZUb29sc0FnZW50Ojpz
ZXRNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlcihNZXNzYWdlTG9vcERpc3BhdGNoSGFuZGxlciBo
YW5kbGVyKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>