<?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>25130</bug_id>
          
          <creation_ts>2009-04-10 02:36:59 -0700</creation_ts>
          <short_desc>onclick not fired for an element copied with cloneContents() or cloneNode()</short_desc>
          <delta_ts>2019-02-06 09:02:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>http://documenta.rudolphina.org/temp/Ind_Pers_de.html</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="Mnafred Staudinger">manfred.staudinger</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>cdumez</cc>
    
    <cc>dbates</cc>
    
    <cc>gessos.paul</cc>
    
    <cc>ggaren</cc>
    
    <cc>pfeldman</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>117140</commentid>
    <comment_count>0</comment_count>
    <who name="Mnafred Staudinger">manfred.staudinger</who>
    <bug_when>2009-04-10 02:36:59 -0700</bug_when>
    <thetext>If you click on the &quot;Q&quot; label (an anchor), the onclick=&quot;toggleInto(event, &apos;Index_Q_div&apos;)&quot; starts a javascript to retrieve a list of names and insert them into the document. On each name there is again an onclick=&quot;toggleInto(event, &apos;uniqueId&apos;)&quot; specified, but now the javascript does _not_ get control and the content gets displayed on a separate page. It works as expected in Firefox 3.0.8 and Opera 9.64.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117148</commentid>
    <comment_count>1</comment_count>
      <attachid>29391</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-04-10 09:24:46 -0700</bug_when>
    <thetext>Created attachment 29391
test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>117149</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-04-10 09:25:13 -0700</bug_when>
    <thetext>See also: bug 23318.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149073</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-22 09:44:31 -0700</bug_when>
    <thetext>*** Bug 29533 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149892</commentid>
    <comment_count>4</comment_count>
      <attachid>40092</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-24 16:36:09 -0700</bug_when>
    <thetext>Created attachment 40092
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149896</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-24 16:38:43 -0700</bug_when>
    <thetext>CC&apos;ing Adam, since this slightly touches XSSAuditor, and could be security sensitive in general.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149903</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-09-24 16:48:51 -0700</bug_when>
    <thetext>This patch appears to largely undo a recent patch by Sam.  Maybe I&apos;m confusing two things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149909</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-24 17:56:41 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; This patch appears to largely undo a recent patch by Sam.  Maybe I&apos;m confusing
&gt; two things.

This isn&apos;t actually touching the same code, I added global objects to some other callback objects, but it is a very similar case.  I need to think about when/if passing the scriptExecutionContext() won&apos;t work where storing a globalObject would.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150122</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2009-09-25 13:15:39 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; This patch appears to largely undo a recent patch by Sam.  Maybe I&apos;m confusing
&gt; &gt; two things.
&gt; 
&gt; This isn&apos;t actually touching the same code, I added global objects to some
&gt; other callback objects, but it is a very similar case.  I need to think about
&gt; when/if passing the scriptExecutionContext() won&apos;t work where storing a
&gt; globalObject would.

After thinking this over, I think this is the right direction to go and we should convert our other callback objects to use the same technique. r=me as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150135</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-25 13:45:17 -0700</bug_when>
    <thetext>Committed revision 48767.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150202</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-25 17:22:58 -0700</bug_when>
    <thetext>Fix reverted in r48778, because it broke Windows build, and we don&apos;t yet know how to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150272</commentid>
    <comment_count>11</comment_count>
      <attachid>40092</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-26 01:33:37 -0700</bug_when>
    <thetext>Comment on attachment 40092
proposed fix

Sad.  Marking r- since this was reverted.  Hopefully a fix can be found soon! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150372</commentid>
    <comment_count>12</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-27 02:45:54 -0700</bug_when>
    <thetext>WebCore/ChangeLog has been corrupted while reverting. Restored.

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
Committed r48800</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150780</commentid>
    <comment_count>13</comment_count>
      <attachid>40278</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-28 18:55:55 -0700</bug_when>
    <thetext>Created attachment 40278
now with Windows build fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150963</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-29 11:05:32 -0700</bug_when>
    <thetext>Committed revision 48884.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150976</commentid>
    <comment_count>15</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-09-29 11:40:08 -0700</bug_when>
    <thetext>Build fix in r48887.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1502829</commentid>
    <comment_count>16</comment_count>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-02-06 09:02:43 -0800</bug_when>
    <thetext>Mass moving XML DOM bugs to the &quot;DOM&quot; Component.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>29391</attachid>
            <date>2009-04-10 09:24:46 -0700</date>
            <delta_ts>2009-04-10 09:24:46 -0700</delta_ts>
            <desc>test case</desc>
            <filename>onclick.xhtml</filename>
            <type>application/xhtml+xml</type>
            <size>504</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">PGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgo8Ym9keT4KPHNjcmlw
dD4KPCFbQ0RBVEFbCiAgICB2YXIgZG9jID0gKG5ldyBET01QYXJzZXIpLnBhcnNlRnJvbVN0cmlu
ZygnPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxhIGhyZWY9Imph
dmFzY3JpcHQ6YWxlcnQoXCdGQUlMXCcpIiBvbmNsaWNrPSJhbGVydChcJ1NVQ0NFU1NcJyk7IHJl
dHVybiBmYWxzZSI+Q2xpY2sgbWUhPC9hPjwvaHRtbD4nLCAiYXBwbGljYXRpb24veGh0bWwreG1s
Iik7CgogICAgdmFyIHJhbmdlPWRvYy5jcmVhdGVSYW5nZSgpOwogICAgcmFuZ2Uuc2VsZWN0Tm9k
ZUNvbnRlbnRzKGRvYy5kb2N1bWVudEVsZW1lbnQpOwogICAgdmFyIGZyYWc9cmFuZ2UuY2xvbmVD
b250ZW50cygpOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXS5h
cHBlbmRDaGlsZChmcmFnKTsKXV0+Cjwvc2NyaXB0Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40092</attachid>
            <date>2009-09-24 16:36:09 -0700</date>
            <delta_ts>2009-09-28 18:55:55 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>EventListener.txt</filename>
            <type>text/plain</type>
            <size>51512</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODczOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTA0IEBACisyMDA5LTA5LTI0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE9uY2xpY2sgbm90IGZpcmVkIGZvciBhbiBlbGVtZW50IGNvcGllZCB3aXRoIGNsb25lQ29udGVu
dHMoKSBvciBjbG9uZU5vZGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjUxMzAKKworCQlUaGUgY2hhbmdlIGhlcmUgaXMgdGhhdCBKUyBldmVudCBs
aXN0ZW5lcnMgZG9uJ3Qga2VlcCBhIHJlZmVyZW5jZSB0byBhIGdsb2JhbCBvYmplY3QgZnJvbQor
CQl3aGVyZSB0aGV5IHdlcmUgY3JlYXRlZCwgYW5kIGluc3RlYWQgdGFrZSBpdCBhcyBhIHBhcmFt
ZXRlciB3aGVuIHBhcnNpbmcgc291cmNlIGNvZGUuIEFsc28sCisJCXRoZSBsaXN0ZW5lciBjcmVh
dGlvbiB3b24ndCBmYWlsIGp1c3QgYmVjYXVzZSBpdCBoYXBwZW5zIGZvciBhbiBlbGVtZW50IGlu
IGEgZnJhbWVsZXNzCisJCWRvY3VtZW50LgorCQlUaHVzLCBtb3Zpbmcgbm9kZXMgYmV0d2VlbiBk
b2N1bWVudHMgbm8gbG9uZ2VyIHJlc3VsdHMgaW4gaGF2aW5nIGluY29ycmVjdCByZWdpc3RlcmVk
CisJCWxhenkgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZW0uCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRl
eHQtMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXIt
Y2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLnho
dG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFj
dGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2Mt
Y29udGV4dC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXIpOiBE
b24ndCB0YWtlIGEgcmVmZXJlbmNlIHRvIEpTRE9NR2xvYmFsT2JqZWN0LgorICAgICAgICAoV2Vi
Q29yZTo6SlNFdmVudExpc3RlbmVyOjpqc0Z1bmN0aW9uKTogVGFrZSBTY3JpcHRFeGVjdXRpb25D
b250ZXh0IGFzIGEgcGFyYW1ldGVyIGZvcgorICAgICAgICBnZXR0aW5nIHRvIEpTRE9NR2xvYmFs
T2JqZWN0LiBJdCdzIG5vdCB1c2VkIGluIGJhc2UgY2xhc3MsIGJ1dCBpcyBpbiBKU0xhenlFdmVu
dExpc3RuZXIuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Om1hcmtKU0Z1bmN0
aW9uKTogRG9uJ3QgbWFyayB0aGUgZ2xvYmFsIG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOiBHZXQgZ2xvYmFsIG9iamVjdCBmcm9tIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OnJl
cG9ydEVycm9yKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuaDogKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKTogRG9uJ3Qga2VlcCBhIHJl
ZmVyZW5jZQorICAgICAgICB0byBKU0RPTUdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwOiAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0
ZW5lcjo6cGFyc2VDb2RlKTogTGlzdGVuZXIKKyAgICAgICAgY3JlYXRpb24gd2FzIHNwbGl0IGJl
dHdlZW4gdGhpcyBmdW5jdGlvbiBhbmQgU2NyaXB0RXZlbnRMaXN0ZW5lcjsgbW92ZWQgaXQgaGVy
ZSwgYXMgSlMKKyAgICAgICAgZ2xvYmFsIG9iamVjdCBjYW4gYmUgZGlmZmVyZW50IG5vdy4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaDogKFdlYkNvcmU6OkpT
TGF6eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZSk6IEtlZXAgc291cmNlIFVSTCwKKyAgICAgICAgd2hp
Y2ggY2FuIG5vdCBiZSBkZXRlcm1pbmVkIGF0IHBhcnNpbmcgdGltZS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOiAoV2ViQ29yZTo6Y3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcik6IE1vdmVkIGNvZGUKKyAgICAgICAgZm9yIGxpc3RlbmVyIGNyZWF0
aW9uIHRvIEpTTGF6eUV2ZW50TGlzdGVuZXIuIFhTU0F1ZGl0b3IgY29kZSByZW1haW5zIGhlcmUs
IGJlY2F1c2UgdGVzdHMKKyAgICAgICAgZXhwZWN0IHRoYXQgZXJyb3JzIGFyZSBsb2dnZWQgYXQg
ZG9jdW1lbnQgcGFyc2luZyB0aW1lLCBhbmQgYmVjYXVzZSBJIGRvbid0IGtub3cgd2hhdCBvdGhl
cgorICAgICAgICBzaWRlIGVmZmVjdHMgbW92aW5nIGl0IHZvdWxkIGhhdmUuCisKKyAgICAgICAg
KiBkb20vRXZlbnRMaXN0ZW5lci5oOiBoYW5kbGVFdmVudCgpIGFuZCByZXBvcnRFcnJvcigpIG5v
dyB0YWtlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgICAgIGJlY2F1c2UgSlNDIG5lZWRz
IGEgZ2xvYmFsIGNvbnRleHQgaGVyZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQWJzdHJh
Y3RXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBYnN0cmFjdFdvcmtlcjo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU0Fic3RyYWN0V29ya2VyOjpy
ZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUFwcGxpY2F0
aW9uQ2FjaGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01BcHBsaWNhdGlvbkNh
Y2hlOjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NQXBwbGljYXRp
b25DYWNoZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6
OmNyZWF0ZUpTQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmFk
ZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnJlbW92ZUV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRTb3VyY2VDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFNvdXJjZTo6YWRkRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50U291cmNlOjpyZW1vdmVFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNNZXNzYWdlUG9ydDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6YWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnJlbW92ZUV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHRWxlbWVudEluc3RhbmNlOjphZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjphZGRFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnJlbW92ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6YWRkRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkOjpyZW1vdmVF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVy
Lmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9iakNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0
ZW5lcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGFuZGxlRXZlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NU3RvcmFnZVJlc291cmNlOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZURvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZl
bnQpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJD
b250ZXh0OjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICBEb24ndCBwYXNzIGdsb2JhbCBvYmpl
Y3QgdG8gSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoKSwgd2hpY2ggbm8gbG9uZ2VyIG5lZWRzIGl0
LgorICAgICAgICBOb3RlIHRoYXQgc29tZSBvZiB0aGVzZSBmdW5jdGlvbnMgc3RpbGwgaGF2ZSBh
biBlYXJseSByZXR1cm4gZm9yIG51bGwgZ2xvYmFsIG9iamVjdCwgd2hpY2gKKyAgICAgICAgY2Fu
IHByb2JhYmx5IGJlIHJlbW92ZWQgaW4gYSBsYXRlciBwYXRjaC4KKyAgICAgICAgUGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0IHRvIEV2ZW50TGlzdGVuZXIgbWV0aG9kcyB0aGF0IG5vdyBuZWVk
IGl0LgorCiAyMDA5LTA5LTI0ICBKZXJlbXkgT3Jsb3cgIDxqb3Jsb3dAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcAkocmV2aXNpb24gNDg3MjEp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIEpTVmFsdWUgSlNBYnN0cmFjdFdvcmtlcjo6YWRk
RXZlbnRMaXN0ZW4KICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCi0gICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQo
MCkudG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3Rl
bmVyKSwgZ2xvYmFsT2JqZWN0LCBmYWxzZSksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsK
KyAgICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwg
SlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSksIGFyZ3Mu
YXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApA
QCAtNjgsNyArNjgsNyBAQCBKU1ZhbHVlIEpTQWJzdHJhY3RXb3JrZXI6OnJlbW92ZUV2ZW50TGlz
CiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIAotICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3Ry
aW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGds
b2JhbE9iamVjdCwgZmFsc2UpLmdldCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7Cisg
ICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyks
IEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZmFsc2UpLmdldCgp
LCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01BcHBsaWNhdGlvbkNhY2hlQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXBwbGljYXRp
b25DYWNoZUN1c3RvbS5jcHAJKHJldmlzaW9uIDQ4NzIxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NSw3
ICs5NSw3IEBAIEpTVmFsdWUgSlNET01BcHBsaWNhdGlvbkNhY2hlOjphZGRFdmVudEwKICAgICBp
ZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
Ci0gICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyks
IEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZ2xvYmFsT2JqZWN0
LCBmYWxzZSksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsKCktPmFkZEV2
ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpj
cmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4
ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApAQCAtMTA5LDcgKzEwOSw3IEBA
IEpTVmFsdWUgSlNET01BcHBsaWNhdGlvbkNhY2hlOjpyZW1vdmVFdmUKICAgICBpZiAoIWxpc3Rl
bmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgaW1w
bCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZ2xvYmFsT2JqZWN0LCBmYWxz
ZSkuZ2V0KCksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsKCktPnJlbW92
ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVy
OjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSkuZ2V0KCksIGFyZ3MuYXQoMikudG9C
b29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHJldmlzaW9uIDQ4NzIxKQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY4LDcgKzY4LDcgQEAgUGFzc1JlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IEpTRE9NR2xv
YmFsTwogICAgIGlmICghdmFsLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KHZhbCksIHRoaXMsIHRydWUp
LmdldCgpOworICAgIHJldHVybiBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdCh2YWwp
LCB0cnVlKS5nZXQoKTsKIH0KIAogdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6c2V0Q3VycmVudEV2
ZW50KEV2ZW50KiBldnQpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3Vz
dG9tLmNwcAkocmV2aXNpb24gNDg3MjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzNCw3ICsxMDM0LDcgQEAgSlNWYWx1
ZSBKU0RPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihFeAogICAgIGlmICghbGlzdGVuZXIuaXNP
YmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpbXBsKCktPmFk
ZEV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVy
OjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBmYWxzZSksIGFyZ3MuYXQoMikudG9C
b29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50
b1N0cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIp
LCBmYWxzZSksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIH0KIApAQCAtMTA0OCw3ICsxMDQ4LDcgQEAgSlNWYWx1ZSBKU0RPTVdpbmRvdzo6
cmVtb3ZlRXZlbnRMaXN0ZW5lcgogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVu
ZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNP
YmplY3QobGlzdGVuZXIpLCB0aGlzLCBmYWxzZSkuZ2V0KCksIGFyZ3MuYXQoMikudG9Cb29sZWFu
KGV4ZWMpKTsKKyAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0
cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBm
YWxzZSkuZ2V0KCksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcAkocmV2aXNpb24gNDg3MjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDIwICszMSwxOCBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUpTRXZlbnRMaXN0ZW5lcjo6SlNFdmVu
dExpc3RlbmVyKEpTT2JqZWN0KiBmdW5jdGlvbiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgYm9vbCBpc0F0dHJpYnV0ZSkKK0pTRXZlbnRMaXN0ZW5lcjo6SlNFdmVudExpc3RlbmVy
KEpTT2JqZWN0KiBmdW5jdGlvbiwgYm9vbCBpc0F0dHJpYnV0ZSkKICAgICA6IEV2ZW50TGlzdGVu
ZXIoSlNFdmVudExpc3RlbmVyVHlwZSkKICAgICAsIG1fanNGdW5jdGlvbihmdW5jdGlvbikKLSAg
ICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKICAgICAsIG1faXNBdHRyaWJ1dGUoaXNB
dHRyaWJ1dGUpCiB7Ci0gICAgQVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKIH0KIAogSlNFdmVudExp
c3RlbmVyOjp+SlNFdmVudExpc3RlbmVyKCkKIHsKIH0KIAotSlNPYmplY3QqIEpTRXZlbnRMaXN0
ZW5lcjo6anNGdW5jdGlvbigpIGNvbnN0CitKU09iamVjdCogSlNFdmVudExpc3RlbmVyOjpqc0Z1
bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdAogewogICAgIHJldHVybiBtX2pz
RnVuY3Rpb247CiB9CkBAIC01MywyMCArNTEsMjIgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6Om1h
cmtKU0Z1bmN0aW9uKE1hcgogewogICAgIGlmIChtX2pzRnVuY3Rpb24pCiAgICAgICAgIG1hcmtT
dGFjay5hcHBlbmQobV9qc0Z1bmN0aW9uKTsKLSAgICBtYXJrU3RhY2suYXBwZW5kKG1fZ2xvYmFs
T2JqZWN0KTsKIH0KIAotdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KEV2ZW50KiBl
dmVudCkKK3ZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFdmVudCogZXZlbnQpCiB7CisgICAgQVNT
RVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmICghc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlv
bnNPbmx5KTsKIAotICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gdGhpcy0+anNGdW5jdGlvbigp
OworICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gdGhpcy0+anNGdW5jdGlvbihzY3JpcHRFeGVj
dXRpb25Db250ZXh0KTsKICAgICBpZiAoIWpzRnVuY3Rpb24pCiAgICAgICAgIHJldHVybjsKIAot
ICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dsb2JhbE9iamVjdDsKLSAg
ICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gZ2xvYmFs
T2JqZWN0LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25Db250ZXh0KQorICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTRE9N
R2xvYmFsT2JqZWN0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmICghZ2xvYmFsT2Jq
ZWN0KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+
aXNEb2N1bWVudCgpKSB7CkBAIC0xMzIsMTUgKzEzMiwxNSBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5l
cjo6aGFuZGxlRXZlbnQoRXZlbnQqCiAgICAgfQogfQogCi1ib29sIEpTRXZlbnRMaXN0ZW5lcjo6
cmVwb3J0RXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHVybCwgaW50
IGxpbmVOdW1iZXIpCitib29sIEpTRXZlbnRMaXN0ZW5lcjo6cmVwb3J0RXJyb3IoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIHVybCwgaW50IGxpbmVOdW1iZXIpCiB7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2Vy
dGlvbnNPbmx5KTsKIAotICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gdGhpcy0+anNGdW5jdGlv
bigpOworICAgIEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gdGhpcy0+anNGdW5jdGlvbihjb250ZXh0
KTsKICAgICBpZiAoIWpzRnVuY3Rpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEpT
RE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dsb2JhbE9iamVjdDsKKyAgICBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChjb250ZXh0
KTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKIAog
ICAgIENhbGxEYXRhIGNhbGxEYXRhOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5oCShyZXZpc2lvbiA0ODcyMSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgSlNFdmVudExpc3RlbmVyIDogcHVibGljIEV2ZW50TGlzdGVuZXIg
ewogICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNFdmVudExpc3RlbmVy
PiBjcmVhdGUoSlNDOjpKU09iamVjdCogbGlzdGVuZXIsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGJvb2wgaXNBdHRyaWJ1dGUpCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpT
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGxpc3RlbmVyLCBib29sIGlzQXR0
cmlidXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTRXZl
bnRMaXN0ZW5lcihsaXN0ZW5lciwgZ2xvYmFsT2JqZWN0LCBpc0F0dHJpYnV0ZSkpOworICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0V2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGlzQXR0
cmlidXRlKSk7CiAgICAgICAgIH0KIAogICAgICAgICBzdGF0aWMgY29uc3QgSlNFdmVudExpc3Rl
bmVyKiBjYXN0KGNvbnN0IEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyKQpAQCAtNDksMjAgKzQ5LDE5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMg
ZXZlbnQgbGlzdGVuZXIgd2FzIGNyZWF0ZWQgZm9yIGFuIGV2ZW50IGhhbmRsZXIgYXR0cmlidXRl
LCBsaWtlICJvbmxvYWQiIG9yICJvbmNsaWNrIi4KICAgICAgICAgYm9vbCBpc0F0dHJpYnV0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNBdHRyaWJ1dGU7IH0KIAotICAgICAgICB2aXJ0dWFsIEpTQzo6
SlNPYmplY3QqIGpzRnVuY3Rpb24oKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBKU0M6OkpTT2Jq
ZWN0KiBqc0Z1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBjb25zdDsKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXJrSlNGdW5jdGlvbihKU0M6Ok1hcmtTdGFj
ayYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQqKTsKLSAgICAgICAg
dmlydHVhbCBib29sIHJlcG9ydEVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3Ry
aW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOworICAgICAgICB2aXJ0dWFsIGJv
b2wgcmVwb3J0RXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyKTsKICAgICAgICAgdmlydHVh
bCBib29sIHZpcnR1YWxpc0F0dHJpYnV0ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIGNsZWFySlNG
dW5jdGlvbklubGluZSgpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICBKU0V2ZW50TGlzdGVu
ZXIoSlNDOjpKU09iamVjdCogZnVuY3Rpb24sIEpTRE9NR2xvYmFsT2JqZWN0KiwgYm9vbCBpc0F0
dHJpYnV0ZSk7CisgICAgICAgIEpTRXZlbnRMaXN0ZW5lcihKU0M6OkpTT2JqZWN0KiBmdW5jdGlv
biwgYm9vbCBpc0F0dHJpYnV0ZSk7CiAKICAgICAgICAgbXV0YWJsZSBKU0M6OkpTT2JqZWN0KiBt
X2pzRnVuY3Rpb247Ci0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBtX2dsb2JhbE9iamVjdDsK
ICAgICAgICAgYm9vbCBtX2lzQXR0cmlidXRlOwogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFNvdXJjZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50U291cmNlQ3VzdG9tLmNwcAkocmV2aXNpb24gNDg3MjEpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRTb3VyY2VDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01Myw3ICs1Myw3IEBAIEpTVmFsdWUgSlNFdmVudFNvdXJjZTo6YWRkRXZlbnRMaXN0ZW5l
cigKICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogCi0gICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJp
bmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZ2xv
YmFsT2JqZWN0LCBmYWxzZSkuZ2V0KCksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAg
ICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNF
dmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSkuZ2V0KCksIGFy
Z3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0K
IApAQCAtNjcsNyArNjcsNyBAQCBKU1ZhbHVlIEpTRXZlbnRTb3VyY2U6OnJlbW92ZUV2ZW50TGlz
dGVuCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIAotICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRv
U3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciks
IGdsb2JhbE9iamVjdCwgZmFsc2UpLmdldCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7
CisgICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhl
YyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZmFsc2UpLmdl
dCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVy
LmNwcAkocmV2aXNpb24gNDg3MjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50
TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMiArMzUsMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogc3RhdGljIFdURjo6UmVmQ291bnRlZExlYWtDb3VudGVyIGV2ZW50TGlzdGVu
ZXJDb3VudGVyKCJKU0xhenlFdmVudExpc3RlbmVyIik7CiAjZW5kaWYKIAotSlNMYXp5RXZlbnRM
aXN0ZW5lcjo6SlNMYXp5RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwg
Y29uc3QgU3RyaW5nJiBldmVudFBhcmFtZXRlck5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwgSlNE
T01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgTm9kZSogbm9kZSwgaW50IGxpbmVOdW1iZXIp
Ci0gICAgOiBKU0V2ZW50TGlzdGVuZXIoMCwgZ2xvYmFsT2JqZWN0LCB0cnVlKQorSlNMYXp5RXZl
bnRMaXN0ZW5lcjo6SlNMYXp5RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFt
ZSwgY29uc3QgU3RyaW5nJiBldmVudFBhcmFtZXRlck5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwg
Tm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5lTnVtYmVyKQorICAg
IDogSlNFdmVudExpc3RlbmVyKDAsIHRydWUpCiAgICAgLCBtX2Z1bmN0aW9uTmFtZShmdW5jdGlv
bk5hbWUpCiAgICAgLCBtX2V2ZW50UGFyYW1ldGVyTmFtZShldmVudFBhcmFtZXRlck5hbWUpCiAg
ICAgLCBtX2NvZGUoY29kZSkKICAgICAsIG1fcGFyc2VkKGZhbHNlKQorICAgICwgbV9zb3VyY2VV
Ukwoc291cmNlVVJMKQogICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIpCiAgICAgLCBtX29y
aWdpbmFsTm9kZShub2RlKQogewpAQCAtNjcsMjMgKzY4LDQzIEBAIEpTTGF6eUV2ZW50TGlzdGVu
ZXI6On5KU0xhenlFdmVudExpc3RlbmUKICNlbmRpZgogfQogCi1KU09iamVjdCogSlNMYXp5RXZl
bnRMaXN0ZW5lcjo6anNGdW5jdGlvbigpIGNvbnN0CitKU09iamVjdCogSlNMYXp5RXZlbnRMaXN0
ZW5lcjo6anNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjdXRpb25Db250ZXh0
KSBjb25zdAogewotICAgIHBhcnNlQ29kZSgpOworICAgIHBhcnNlQ29kZShleGVjdXRpb25Db250
ZXh0KTsKICAgICByZXR1cm4gbV9qc0Z1bmN0aW9uOwogfQogCi12b2lkIEpTTGF6eUV2ZW50TGlz
dGVuZXI6OnBhcnNlQ29kZSgpIGNvbnN0Cit2b2lkIEpTTGF6eUV2ZW50TGlzdGVuZXI6OnBhcnNl
Q29kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBleGVjdXRpb25Db250ZXh0KSBjb25zdAogewor
ICAgIEFTU0VSVChleGVjdXRpb25Db250ZXh0KTsKKyAgICBBU1NFUlQoZXhlY3V0aW9uQ29udGV4
dC0+aXNEb2N1bWVudCgpKTsKKyAgICBpZiAoIWV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgIHJl
dHVybjsKKwogICAgIGlmIChtX3BhcnNlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogZXhlY3V0aW9uQ29udGV4dCA9IG1fZ2xvYmFsT2JqZWN0LT5zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci0gICAgQVNTRVJUKGV4ZWN1dGlvbkNvbnRleHQpOwotICAg
IGlmICghZXhlY3V0aW9uQ29udGV4dCkKKyAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KGV4ZWN1dGlvbkNvbnRleHQpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCiAg
ICAgICAgIHJldHVybjsKKworICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIg
PSBmcmFtZS0+c2NyaXB0KCk7CisgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5pc0VuYWJsZWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHRvSlNET01HbG9iYWxPYmplY3QoZXhlY3V0aW9uQ29udGV4dCk7CisgICAgaWYgKCFnbG9i
YWxPYmplY3QpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEVuc3VyZSB0aGF0ICdub2RlJyBo
YXMgYSBKYXZhU2NyaXB0IHdyYXBwZXIgdG8gbWFyayB0aGUgZXZlbnQgbGlzdGVuZXIgd2UncmUg
Y3JlYXRpbmcuCisgICAgaWYgKG1fb3JpZ2luYWxOb2RlKSB7CisgICAgICAgIEpTTG9jayBsb2Nr
KFNpbGVuY2VBc3NlcnRpb25zT25seSk7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgcGFzcyB0
aGUgZ2xvYmFsIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIG5vZGUKKyAgICAgICAgdG9KUyhn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LCBtX29yaWdpbmFsTm9kZSk7
CisgICAgfQorCiAgICAgaWYgKGV4ZWN1dGlvbkNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAg
ICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihtX2ds
b2JhbE9iamVjdCk7CisgICAgICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBzdGF0aWNfY2FzdDxK
U0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IHdpbmRv
dy0+aW1wbCgpLT5mcmFtZSgpOwogICAgICAgICBpZiAoIWZyYW1lKQogICAgICAgICAgICAgcmV0
dXJuOwpAQCAtOTUsMTYgKzExNiwxMyBAQCB2b2lkIEpTTGF6eUV2ZW50TGlzdGVuZXI6OnBhcnNl
Q29kZSgpIGNvCiAKICAgICBtX3BhcnNlZCA9IHRydWU7CiAKLSAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
czsKLSAgICBVU3RyaW5nIHNvdXJjZVVSTChleGVjdXRpb25Db250ZXh0LT51cmwoKS5zdHJpbmco
KSk7CiAgICAgYXJncy5hcHBlbmQoanNOb250cml2aWFsU3RyaW5nKGV4ZWMsIG1fZXZlbnRQYXJh
bWV0ZXJOYW1lKSk7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgbV9jb2RlKSk7CiAK
LSAgICAvLyBGSVhNRTogUGFzc2luZyB0aGUgZG9jdW1lbnQncyBVUkwgdG8gY29uc3RydWN0IGlz
IG5vdCBhbHdheXMgY29ycmVjdCwgc2luY2UgdGhpcyBldmVudCBsaXN0ZW5lciBtaWdodAotICAg
IC8vIGhhdmUgYmVlbiBhZGRlZCB3aXRoIHNldEF0dHJpYnV0ZSBmcm9tIGEgc2NyaXB0LCBhbmQg
d2Ugc2hvdWxkIHBhc3MgU3RyaW5nKCkgaW4gdGhhdCBjYXNlLgotICAgIG1fanNGdW5jdGlvbiA9
IGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFyZ3MsIElkZW50aWZpZXIoZXhlYywgbV9mdW5jdGlv
bk5hbWUpLCBzb3VyY2VVUkwsIG1fbGluZU51bWJlcik7IC8vIEZJWE1FOiBpcyBnbG9iYWxFeGVj
IG9rPworICAgIG1fanNGdW5jdGlvbiA9IGNvbnN0cnVjdEZ1bmN0aW9uKGV4ZWMsIGFyZ3MsIElk
ZW50aWZpZXIoZXhlYywgbV9mdW5jdGlvbk5hbWUpLCBtX3NvdXJjZVVSTCwgbV9saW5lTnVtYmVy
KTsgLy8gRklYTUU6IGlzIGdsb2JhbEV4ZWMgb2s/CiAKICAgICBKU0Z1bmN0aW9uKiBsaXN0ZW5l
ckFzRnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxKU0Z1bmN0aW9uKj4obV9qc0Z1bmN0aW9uKTsKIApA
QCAtMTE4LDcgKzEzNiw3IEBAIHZvaWQgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6cGFyc2VDb2RlKCkg
Y28KICAgICAgICAgLy8gKGFuZCB0aGUgZG9jdW1lbnQsIGFuZCB0aGUgZm9ybSAtIHNlZSBKU0hU
TUxFbGVtZW50OjpldmVudEhhbmRsZXJTY29wZSkKICAgICAgICAgU2NvcGVDaGFpbiBzY29wZSA9
IGxpc3RlbmVyQXNGdW5jdGlvbi0+c2NvcGUoKTsKIAotICAgICAgICBKU1ZhbHVlIHRoaXNPYmog
PSB0b0pTKGV4ZWMsIG1fZ2xvYmFsT2JqZWN0LCBtX29yaWdpbmFsTm9kZSk7CisgICAgICAgIEpT
VmFsdWUgdGhpc09iaiA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBtX29yaWdpbmFsTm9kZSk7
CiAgICAgICAgIGlmICh0aGlzT2JqLmlzT2JqZWN0KCkpIHsKICAgICAgICAgICAgIHN0YXRpY19j
YXN0PEpTTm9kZSo+KGFzT2JqZWN0KHRoaXNPYmopKS0+cHVzaEV2ZW50SGFuZGxlclNjb3BlKGV4
ZWMsIHNjb3BlKTsKICAgICAgICAgICAgIGxpc3RlbmVyQXNGdW5jdGlvbi0+c2V0U2NvcGUoc2Nv
cGUpOwpAQCAtMTI5LDYgKzE0Nyw3IEBAIHZvaWQgSlNMYXp5RXZlbnRMaXN0ZW5lcjo6cGFyc2VD
b2RlKCkgY28KICAgICBtX2Z1bmN0aW9uTmFtZSA9IFN0cmluZygpOwogICAgIG1fY29kZSA9IFN0
cmluZygpOwogICAgIG1fZXZlbnRQYXJhbWV0ZXJOYW1lID0gU3RyaW5nKCk7CisgICAgbV9zb3Vy
Y2VVUkwgPSBTdHJpbmcoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmgJKHJldmlzaW9uIDQ4NzIxKQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDI0ICsyOSwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBK
U0xhenlFdmVudExpc3RlbmVyIDogcHVibGljIEpTRXZlbnRMaXN0ZW5lciB7CiAgICAgcHVibGlj
OgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgZXZlbnRQYXJhbWV0ZXJO
YW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IE5vZGUqIG5vZGUsIGludCBsaW5lTnVtYmVyKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxK
U0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFN0cmluZyYgZXZlbnRQYXJhbWV0ZXJOYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIE5vZGUq
IG5vZGUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcikKICAgICAgICAg
ewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0xhenlFdmVudExpc3RlbmVyKGZ1
bmN0aW9uTmFtZSwgZXZlbnRQYXJhbWV0ZXJOYW1lLCBjb2RlLCBnbG9iYWxPYmplY3QsIG5vZGUs
IGxpbmVOdW1iZXIpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNMYXp5RXZl
bnRMaXN0ZW5lcihmdW5jdGlvbk5hbWUsIGV2ZW50UGFyYW1ldGVyTmFtZSwgY29kZSwgbm9kZSwg
c291cmNlVVJMLCBsaW5lTnVtYmVyKSk7CiAgICAgICAgIH0KICAgICAgICAgdmlydHVhbCB+SlNM
YXp5RXZlbnRMaXN0ZW5lcigpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgSlNMYXp5RXZlbnRM
aXN0ZW5lcihjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBldmVudFBh
cmFtZXRlck5hbWUsIGNvbnN0IFN0cmluZyYgY29kZSwgSlNET01HbG9iYWxPYmplY3QqLCBOb2Rl
KiwgaW50IGxpbmVOdW1iZXIpOworICAgICAgICBKU0xhenlFdmVudExpc3RlbmVyKGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFtZSwgY29u
c3QgU3RyaW5nJiBjb2RlLCBOb2RlKiwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwsIGludCBsaW5l
TnVtYmVyKTsKIAotICAgICAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIGpzRnVuY3Rpb24oKSBj
b25zdDsKKyAgICAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBqc0Z1bmN0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIHdhc0NyZWF0ZWRG
cm9tTWFya3VwKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZvaWQgcGFyc2VD
b2RlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgcGFyc2VDb2RlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqKSBjb25zdDsKIAogICAgICAgICBtdXRhYmxlIFN0cmluZyBtX2Z1bmN0aW9uTmFtZTsKICAg
ICAgICAgbXV0YWJsZSBTdHJpbmcgbV9ldmVudFBhcmFtZXRlck5hbWU7CiAgICAgICAgIG11dGFi
bGUgU3RyaW5nIG1fY29kZTsKICAgICAgICAgbXV0YWJsZSBib29sIG1fcGFyc2VkOworICAgICAg
ICBtdXRhYmxlIFN0cmluZyBtX3NvdXJjZVVSTDsKICAgICAgICAgaW50IG1fbGluZU51bWJlcjsK
ICAgICAgICAgTm9kZSogbV9vcmlnaW5hbE5vZGU7CiAgICAgfTsKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkocmV2aXNpb24gNDg3MjEpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NSw3ICs2NSw3IEBAIEpTVmFsdWUgSlNNZXNzYWdlUG9ydDo6YWRkRXZlbnRMaXN0ZW5l
cigKICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogCi0gICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJp
bmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZ2xv
YmFsT2JqZWN0LCBmYWxzZSkuZ2V0KCksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAg
ICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNF
dmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSkuZ2V0KCksIGFy
Z3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0K
IApAQCAtNzksNyArNzksNyBAQCBKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OnJlbW92ZUV2ZW50TGlz
dGVuCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIAotICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRv
U3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciks
IGdsb2JhbE9iamVjdCwgZmFsc2UpLmdldCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7
CisgICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhl
YyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZmFsc2UpLmdl
dCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAJKHJldmlzaW9u
IDQ4NzIxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjIsNyArMTIyLDcgQEAgSlNWYWx1ZSBKU05vZGU6OmFkZEV2ZW50TGlzdGVu
ZXIoRXhlY1N0YQogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoYXJncy5hdCgw
KS50b1N0cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVu
ZXIpLCBnbG9iYWxPYmplY3QsIGZhbHNlKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOwor
ICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBK
U0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGZhbHNlKSwgYXJncy5h
dCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBA
IC0xNDAsNyArMTQwLDcgQEAgSlNWYWx1ZSBKU05vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoRXhl
YwogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKLSAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0
cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBn
bG9iYWxPYmplY3QsIGZhbHNlKS5nZXQoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOwor
ICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMp
LCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGZhbHNlKS5nZXQo
KSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudElu
c3RhbmNlQ3VzdG9tLmNwcAkocmV2aXNpb24gNDg3MjEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNyAr
NTgsNyBAQCBKU1ZhbHVlIEpTU1ZHRWxlbWVudEluc3RhbmNlOjphZGRFdmVudExpCiAgICAgaWYg
KCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAot
ICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBK
U0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGdsb2JhbE9iamVjdCwg
ZmFsc2UpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgaW1wbCgpLT5hZGRFdmVu
dExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZmFsc2UpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVj
KSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTcyLDcgKzcyLDcgQEAgSlNW
YWx1ZSBKU1NWR0VsZW1lbnRJbnN0YW5jZTo6cmVtb3ZlRXZlbgogICAgIGlmICghbGlzdGVuZXIu
aXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpbXBsKCkt
PnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNFdmVudExp
c3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBnbG9iYWxPYmplY3QsIGZhbHNlKS5n
ZXQoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIGltcGwoKS0+cmVtb3ZlRXZl
bnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNy
ZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGZhbHNlKS5nZXQoKSwgYXJncy5hdCgyKS50b0Jvb2xl
YW4oZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCShyZXZpc2lvbiA0ODcy
MSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIEpTVmFsdWUgSlNXb3JrZXJDb250ZXh0Ojph
ZGRFdmVudExpc3RlbmUKICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3Mu
YXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxp
c3RlbmVyKSwgdGhpcywgZmFsc2UpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAg
aW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZmFsc2UpLCBhcmdzLmF0KDIp
LnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTEz
Miw3ICsxMzIsNyBAQCBKU1ZhbHVlIEpTV29ya2VyQ29udGV4dDo6cmVtb3ZlRXZlbnRMaXN0CiAg
ICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIAotICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5n
KGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIHRoaXMs
IGZhbHNlKS5nZXQoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIGltcGwoKS0+
cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlz
dGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGZhbHNlKS5nZXQoKSwgYXJncy5hdCgy
KS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAJKHJl
dmlzaW9uIDQ4NzIxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3Vz
dG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIEpTVmFsdWUgSlNYTUxI
dHRwUmVxdWVzdDo6YWRkRXZlbnRMaXN0ZW4KICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgaW1wbCgpLT5hZGRFdmVudExp
c3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRl
KGFzT2JqZWN0KGxpc3RlbmVyKSwgZ2xvYmFsT2JqZWN0LCBmYWxzZSksIGFyZ3MuYXQoMikudG9C
b29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50
b1N0cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIp
LCBmYWxzZSksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKIH0KIApAQCAtMTc0LDcgKzE3NCw3IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVz
dDo6cmVtb3ZlRXZlbnRMaXMKICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVy
KGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2Jq
ZWN0KGxpc3RlbmVyKSwgZ2xvYmFsT2JqZWN0LCBmYWxzZSkuZ2V0KCksIGFyZ3MuYXQoMikudG9C
b29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgw
KS50b1N0cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVu
ZXIpLCBmYWxzZSkuZ2V0KCksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0
dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwCShyZXZpc2lvbiA0ODcyMSkKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdFVwbG9hZEN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1ZXN0VXBs
b2FkOjphZGRFdmVudAogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoYXJncy5h
dCgwKS50b1N0cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlz
dGVuZXIpLCBnbG9iYWxPYmplY3QsIGZhbHNlKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykp
OworICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMp
LCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGZhbHNlKSwgYXJn
cy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQog
CkBAIC03OCw3ICs3OCw3IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6cmVtb3Zl
RXYKICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOwogCi0gICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9T
dHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwg
Z2xvYmFsT2JqZWN0LCBmYWxzZSkuZ2V0KCksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsK
KyAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVj
KSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSkuZ2V0
KCksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIu
Y3BwCShyZXZpc2lvbiA0ODcyMSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRM
aXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDYgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIlhTU0F1ZGl0b3IuaCIKIAotI2luY2x1ZGUgPHJ1bnRpbWUvSlNM
b2NrLmg+Ci0KIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTU0LDI5ICs1MiwyNSBAQCBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0
CiB7CiAgICAgQVNTRVJUKG5vZGUpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1l
bnQoKS0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7Ci0g
ICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5pc0VuYWJsZWQoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPnhzc0F1ZGl0b3IoKS0+Y2FuQ3JlYXRlSW5s
aW5lRXZlbnRMaXN0ZW5lcihhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgYXR0ci0+dmFsdWUo
KSkpIHsKLSAgICAgICAgLy8gVGhpcyBzY3JpcHQgaXMgbm90IHNhZmUgdG8gZXhlY3V0ZS4KLSAg
ICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGludCBsaW5lTnVtYmVyID0gMTsKKyAgICBTdHJp
bmcgc291cmNlVVJMOwogICAgIAotICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QgPSBzY3Jp
cHRDb250cm9sbGVyLT5nbG9iYWxPYmplY3QoKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGJl
IGFibGUgdG8gcHJvdmlkZSBhY2N1cmF0ZSBzb3VyY2UgaW5mb3JtYXRpb24gZm9yIGZyYW1lbGVz
cyBkb2N1bWVudHMsIHRvbyAoZS5nLiBmb3IgaW1wb3J0aW5nIG5vZGVzIGZyb20gWE1MSHR0cFJl
cXVlc3QucmVzcG9uc2VYTUwpLgorICAgIGlmIChGcmFtZSogZnJhbWUgPSBub2RlLT5kb2N1bWVu
dCgpLT5mcmFtZSgpKSB7CisgICAgICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xs
ZXIgPSBmcmFtZS0+c2NyaXB0KCk7CisgICAgICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+aXNF
bmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICBpZiAoIXNjcmlwdENv
bnRyb2xsZXItPnhzc0F1ZGl0b3IoKS0+Y2FuQ3JlYXRlSW5saW5lRXZlbnRMaXN0ZW5lcihhdHRy
LT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgYXR0ci0+dmFsdWUoKSkpIHsKKyAgICAgICAgICAgIC8v
IFRoaXMgc2NyaXB0IGlzIG5vdCBzYWZlIHRvIGV4ZWN1dGUuCisgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgfQogCi0gICAgLy8gRW5zdXJlIHRoYXQgJ25vZGUnIGhhcyBhIEphdmFTY3Jp
cHQgd3JhcHBlciB0byBtYXJrIHRoZSBldmVudCBsaXN0ZW5lciB3ZSdyZSBjcmVhdGluZy4KLSAg
ICB7Ci0gICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7Ci0gICAgICAg
IC8vIEZJWE1FOiBTaG91bGQgcGFzcyB0aGUgZ2xvYmFsIG9iamVjdCBhc3NvY2lhdGVkIHdpdGgg
dGhlIG5vZGUKLSAgICAgICAgdG9KUyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZ2xvYmFs
T2JqZWN0LCBub2RlKTsKKyAgICAgICAgbGluZU51bWJlciA9IHNjcmlwdENvbnRyb2xsZXItPmV2
ZW50SGFuZGxlckxpbmVOdW1iZXIoKTsKKyAgICAgICAgc291cmNlVVJMID0gbm9kZS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgfQogCi0gICAgcmV0dXJuIEpTTGF6eUV2ZW50TGlz
dGVuZXI6OmNyZWF0ZShhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgZXZlbnRQYXJhbWV0ZXJO
YW1lKG5vZGUtPmlzU1ZHRWxlbWVudCgpKSwgYXR0ci0+dmFsdWUoKSwgZ2xvYmFsT2JqZWN0LCBu
b2RlLCBzY3JpcHRDb250cm9sbGVyLT5ldmVudEhhbmRsZXJMaW5lTnVtYmVyKCkpOworICAgIHJl
dHVybiBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5n
KCksIGV2ZW50UGFyYW1ldGVyTmFtZShub2RlLT5pc1NWR0VsZW1lbnQoKSksIGF0dHItPnZhbHVl
KCksIG5vZGUsIHNvdXJjZVVSTCwgbGluZU51bWJlcik7CiB9CiAKIFBhc3NSZWZQdHI8SlNMYXp5
RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSogZnJhbWUs
IEF0dHJpYnV0ZSogYXR0cikKQEAgLTg0LDE5ICs3OCwyMSBAQCBQYXNzUmVmUHRyPEpTTGF6eUV2
ZW50TGlzdGVuZXI+IGNyZWF0ZUF0CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7
CiAKKyAgICBpbnQgbGluZU51bWJlciA9IDE7CisgICAgU3RyaW5nIHNvdXJjZVVSTDsKKyAgICAK
ICAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgp
OwogICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+aXNFbmFibGVkKCkpCiAgICAgICAgIHJldHVy
biAwOwotICAgIAorCiAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT54c3NBdWRpdG9yKCktPmNh
bkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0
dHItPnZhbHVlKCkpKSB7CiAgICAgICAgIC8vIFRoaXMgc2NyaXB0IGlzIG5vdCBzYWZlIHRvIGV4
ZWN1dGUuCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIC8vICdnbG9iYWxPYmplY3Qn
IGlzIHRoZSBKYXZhU2NyaXB0IHdyYXBwZXIgdGhhdCB3aWxsIG1hcmsgdGhlIGV2ZW50IGxpc3Rl
bmVyIHdlJ3JlIGNyZWF0aW5nLgotICAgIEpTRE9NV2luZG93KiBnbG9iYWxPYmplY3QgPSBzY3Jp
cHRDb250cm9sbGVyLT5nbG9iYWxPYmplY3QoKTsKLQotICAgIHJldHVybiBKU0xhenlFdmVudExp
c3RlbmVyOjpjcmVhdGUoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGV2ZW50UGFyYW1ldGVy
TmFtZShmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpKSwgYXR0ci0+dmFsdWUoKSwg
Z2xvYmFsT2JqZWN0LCAwLCBzY3JpcHRDb250cm9sbGVyLT5ldmVudEhhbmRsZXJMaW5lTnVtYmVy
KCkpOworICAgIGxpbmVOdW1iZXIgPSBzY3JpcHRDb250cm9sbGVyLT5ldmVudEhhbmRsZXJMaW5l
TnVtYmVyKCk7CisgICAgc291cmNlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmlu
ZygpOworICAgIHJldHVybiBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoYXR0ci0+bG9jYWxO
YW1lKCkuc3RyaW5nKCksIGV2ZW50UGFyYW1ldGVyTmFtZShmcmFtZS0+ZG9jdW1lbnQoKS0+aXNT
VkdEb2N1bWVudCgpKSwgYXR0ci0+dmFsdWUoKSwgMCwgc291cmNlVVJMLCBsaW5lTnVtYmVyKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L09iakNFdmVudExpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpj
L09iakNFdmVudExpc3RlbmVyLmgJKHJldmlzaW9uIDQ4NzIxKQorKysgV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL09iakNFdmVudExpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBPYmpDRXZlbnRMaXN0ZW5lcihpZCA8RE9N
RXZlbnRMaXN0ZW5lcj4pOwogICAgICAgICB2aXJ0dWFsIH5PYmpDRXZlbnRMaXN0ZW5lcigpOwog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVudCopOworICAgICAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CiAK
ICAgICAgICAgaWQgPERPTUV2ZW50TGlzdGVuZXI+IG1fbGlzdGVuZXI7CiAgICAgfTsKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIubW0JKHJldmlzaW9uIDQ4
NzIxKQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Myw3ICs3Myw3IEBAIE9iakNFdmVudExpc3RlbmVyOjp+T2JqQ0V2ZW50
TGlzdGVuZXIoKQogICAgIFttX2xpc3RlbmVyIHJlbGVhc2VdOwogfQogCi12b2lkIE9iakNFdmVu
dExpc3RlbmVyOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCit2b2lkIE9iakNFdmVudExpc3Rl
bmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQog
ewogICAgIFttX2xpc3RlbmVyIGhhbmRsZUV2ZW50OmtpdChldmVudCldOwogfQpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCShyZXZpc2lvbiA0ODcy
MSkKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtp
bmcgY29weSkKQEAgLTEyOTQsNyArMTI5NCwxMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlv
bgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFS
QU0oZXhlYyk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIg
ICAgJGltcGxDbGFzc05hbWUqIGltcCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xhc3NOYW1lKj4oY2Fz
dGVkVGhpcy0+aW1wbCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICBpZiAoRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBpbXAtPiRpbXBsR2V0dGVy
RnVuY3Rpb25OYW1lKCkpIHtcbiIpOwotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgaWYgKEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gbGlzdGVuZXItPmpzRnVu
Y3Rpb24oKSlcbiIpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGltcGxDbGFzc05hbWUgZXEg
IkRvY3VtZW50IiB8fCAkaW1wbENsYXNzTmFtZSBlcSAiV29ya2VyQ29udGV4dCIgfHwgJGltcGxD
bGFzc05hbWUgZXEgIlNoYXJlZFdvcmtlckNvbnRleHQiIHx8ICRpbXBsQ2xhc3NOYW1lIGVxICJE
ZWRpY2F0ZWRXb3JrZXJDb250ZXh0IikgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIgICAgICAgIGlmIChKU09iamVjdCoganNGdW5jdGlvbiA9IGxpc3RlbmVy
LT5qc0Z1bmN0aW9uKGltcCkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBpZiAoSlNP
YmplY3QqIGpzRnVuY3Rpb24gPSBsaXN0ZW5lci0+anNGdW5jdGlvbihpbXAtPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSkpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHJldHVybiBqc0Z1bmN0aW9u
O1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIp
OwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4ganNO
dWxsKCk7XG4iKTsKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgJKHJldmlzaW9uIDQ4NzIxKQorKysgV2Vi
Q29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyAgICBjbGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0OwogICAgIGNsYXNzIEV2ZW50OwogCiAgICAgY2xhc3MgRXZlbnRM
aXN0ZW5lciA6IHB1YmxpYyBSZWZDb3VudGVkPEV2ZW50TGlzdGVuZXI+IHsKQEAgLTQ0LDEzICs0
NSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICB2aXJ0dWFsIH5FdmVudExpc3RlbmVyKCkgeyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBvcGVy
YXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVFdmVudChFdmVudCopID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopID0gMDsKICAgICAgICAgLy8gUmV0dXJu
IHRydWUgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZXJyb3IgaXMgaGFuZGxlZC4KLSAgICAgICAgdmly
dHVhbCBib29sIHJlcG9ydEVycm9yKGNvbnN0IFN0cmluZyYgLyptZXNzYWdlKi8sIGNvbnN0IFN0
cmluZyYgLyp1cmwqLywgaW50IC8qbGluZU51bWJlciovKSB7IHJldHVybiBmYWxzZTsgfQorICAg
ICAgICB2aXJ0dWFsIGJvb2wgcmVwb3J0RXJyb3IoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNv
bnN0IFN0cmluZyYgLyptZXNzYWdlKi8sIGNvbnN0IFN0cmluZyYgLyp1cmwqLywgaW50IC8qbGlu
ZU51bWJlciovKSB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgd2FzQ3Jl
YXRlZEZyb21NYXJrdXAoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAjaWYgVVNFKEpTQykK
LSAgICAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBqc0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1
cm4gMDsgfQorICAgICAgICB2aXJ0dWFsIEpTQzo6SlNPYmplY3QqIGpzRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCopIGNvbnN0IHsgcmV0dXJuIDA7IH0KICAgICAgICAgdmlydHVhbCB2
b2lkIG1hcmtKU0Z1bmN0aW9uKEpTQzo6TWFya1N0YWNrJikgeyB9CiAjZW5kaWYKIApJbmRleDog
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2
ZW50VGFyZ2V0LmNwcAkocmV2aXNpb24gNDg3MjEpCisrKyBXZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2OSw3ICsyNjksNyBAQCBib29sIEV2ZW50VGFyZ2V0
OjpmaXJlRXZlbnRMaXN0ZW5lcnMoRXZlCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
Ly8gVG8gbWF0Y2ggTW96aWxsYSwgdGhlIEFUX1RBUkdFVCBwaGFzZSBmaXJlcyBib3RoIGNhcHR1
cmluZyBhbmQgYnViYmxpbmcKICAgICAgICAgLy8gZXZlbnQgbGlzdGVuZXJzLCBldmVuIHRob3Vn
aCB0aGF0IHZpb2xhdGVzIHNvbWUgdmVyc2lvbnMgb2YgdGhlIERPTSBzcGVjLgotICAgICAgICBy
ZWdpc3RlcmVkTGlzdGVuZXIubGlzdGVuZXItPmhhbmRsZUV2ZW50KGV2ZW50KTsKKyAgICAgICAg
cmVnaXN0ZXJlZExpc3RlbmVyLmxpc3RlbmVyLT5oYW5kbGVFdmVudChzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCksIGV2ZW50KTsKICAgICB9CiAgICAgZC0+ZmlyaW5nRXZlbnRFbmRJdGVyYXRvcnMu
cmVtb3ZlTGFzdCgpOwogCkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwCShyZXZpc2lvbiA0ODcyMSkKKysrIFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnN0b3BMaXN0ZW5pbmcoRG8KICAgICBtX2RvY3VtZW50cy5yZW1vdmUoZG9jKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQor
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEV2ZW50KiBldmVudCkKIHsKICAgICBBdG9taWNTdHJpbmcgdHlwZSA9IGV2ZW50LT50eXBl
KCk7CiAgICAgTm9kZSogbm9kZSA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCk7CkluZGV4OiBX
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgJKHJldmlzaW9uIDQ4NzIxKQorKysgV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODUs
NyArODUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc3RhcnRMaXN0ZW5p
bmcoRG9jdW1lbnQqIGRvY3VtZW50KTsKICAgICAgICAgdm9pZCBzdG9wTGlzdGVuaW5nKERvY3Vt
ZW50KiBkb2N1bWVudCk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50
KiBldmVudCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KTsKIAogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVm
UHRyPE5vZGU+LCBsb25nPiBOb2RlVG9JZE1hcDsKICAgICAgICAgbG9uZyBiaW5kKE5vZGUqIG5v
ZGUsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7CkluZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAJKHJldmlzaW9uIDQ4NzIxKQorKysg
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTYsNyArOTYsNyBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJj
ZTo6c3RhcnRSCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6
aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3Vy
Y2U6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpCiB7
CiAgICAgQVNTRVJUKG1fZnJvbnRlbmQpOwogICAgIEFTU0VSVChldmVudE5hbWVzKCkuc3RvcmFn
ZUV2ZW50ID09IGV2ZW50LT50eXBlKCkpOwpJbmRleDogV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NU3RvcmFnZVJlc291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmgJKHJldmlzaW9uIDQ4NzIxKQorKysgV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDcgKzYyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHVuYmlu
ZCgpOwogICAgICAgICB2b2lkIHN0YXJ0UmVwb3J0aW5nQ2hhbmdlc1RvRnJvbnRlbmQoKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQqKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5l
cik7CiAKICAgICAgICAgYm9vbCBpc1NhbWVIb3N0QW5kVHlwZShGcmFtZSosIGJvb2wgaXNMb2Nh
bFN0b3JhZ2UpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAJKHJldmlzaW9u
IDQ4NzIxKQorKysgV2ViQ29yZS9sb2FkZXIvSW1hZ2VEb2N1bWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcwLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOwogCiAgICAgSW1hZ2VEb2N1bWVudCog
bV9kb2M7CiB9OwpAQCAtMzU4LDcgKzM1OCw3IEBAIGJvb2wgSW1hZ2VEb2N1bWVudDo6c2hvdWxk
U2hyaW5rVG9GaXQoKSAKIAogLy8gLS0tLS0tLS0KIAotdm9pZCBJbWFnZUV2ZW50TGlzdGVuZXI6
OmhhbmRsZUV2ZW50KEV2ZW50KiBldmVudCkKK3ZvaWQgSW1hZ2VFdmVudExpc3RlbmVyOjpoYW5k
bGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogewogICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCkKICAgICAgICAgbV9k
b2MtPndpbmRvd1NpemVDaGFuZ2VkKCk7CkluZGV4OiBXZWJDb3JlL3N2Zy9hbmltYXRpb24vU1ZH
U01JTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdT
TUlMRWxlbWVudC5jcHAJKHJldmlzaW9uIDQ4NzIxKQorKysgV2ViQ29yZS9zdmcvYW5pbWF0aW9u
L1NWR1NNSUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsNyArODcsNyBAQCBwcml2
YXRlOgogICAgICAgICBtX2V2ZW50QmFzZS0+YWRkRXZlbnRMaXN0ZW5lcihtX2NvbmRpdGlvbi0+
bV9uYW1lLCB0aGlzLCBmYWxzZSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2
ZW50KEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBFdmVudCopOwogCiAgICAgU1ZHU01JTEVsZW1lbnQqIG1fYW5pbWF0aW9uOwog
ICAgIFNWR1NNSUxFbGVtZW50OjpDb25kaXRpb24qIG1fY29uZGl0aW9uOwpAQCAtMTAzLDcgKzEw
Myw3IEBAIGJvb2wgQ29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6b3BlcmF0b3I9PSgKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgQ29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQo
RXZlbnQqIGV2ZW50KSAKK3ZvaWQgQ29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkgCiB7CiAgICAgbV9hbmltYXRp
b24tPmhhbmRsZUNvbmRpdGlvbkV2ZW50KGV2ZW50LCBtX2NvbmRpdGlvbik7CiB9CkluZGV4OiBX
ZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93
b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA0ODcyMSkKKysrIFdlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMzLDcgKzIzMyw3IEBA
IHZvaWQgV29ya2VyQ29udGV4dDo6cmVwb3J0RXhjZXB0aW9uKGNvbnMKIHsKICAgICBib29sIGVy
cm9ySGFuZGxlZCA9IGZhbHNlOwogICAgIGlmIChvbmVycm9yKCkpCi0gICAgICAgIGVycm9ySGFu
ZGxlZCA9IG9uZXJyb3IoKS0+cmVwb3J0RXJyb3IoZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxp
bmVOdW1iZXIpOworICAgICAgICBlcnJvckhhbmRsZWQgPSBvbmVycm9yKCktPnJlcG9ydEVycm9y
KHRoaXMsIGVycm9yTWVzc2FnZSwgc291cmNlVVJMLCBsaW5lTnVtYmVyKTsKIAogICAgIGlmICgh
ZXJyb3JIYW5kbGVkKQogICAgICAgICB0aHJlYWQoKS0+d29ya2VyUmVwb3J0aW5nUHJveHkoKS5w
b3N0RXhjZXB0aW9uVG9Xb3JrZXJPYmplY3QoZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3Vy
Y2VVUkwpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNDg3MzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wOS0yNCAgQWxleGV5IFBy
b3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBPbmNsaWNrIG5vdCBmaXJlZCBmb3IgYW4gZWxlbWVudCBjb3Bp
ZWQgd2l0aCBjbG9uZUNvbnRlbnRzKCkgb3IgY2xvbmVOb2RlKCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MTMwCisKKyAgICAgICAgKiBmYXN0L2V2
ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0
LTItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUt
bGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZy
YW1lbGVzcy1kb2MtY29udGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRl
eHQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVy
LWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRv
Yy54aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVy
LWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1m
cm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNv
bnRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9hdHRyaWJ1
dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0Lmh0bWw6IEFk
ZGVkLgorCiAyMDA5LTA5LTI0ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9u
aGFAY29sbGFib3JhLmNvLnVrPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1m
cm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJh
bWVsZXNzLWRvYy1jb250ZXh0LTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVz
cy1kb2MtY29udGV4dC0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAor
UEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNs
b25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1l
bGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250
ZXh0LTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8Ym9keSBv
bmxvYWQ9InRlc3QoKSI+Cis8aWZyYW1lIHNyYz0nZGF0YTp0ZXh0L2h0bWwsPGEgaWQ9ImEiIGhy
ZWY9IiMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBvczs8cD5G
QUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZhbHNlIj5s
aW5rPC9hPic+PC9pZnJhbWU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJv
bGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQor
eworICAgIHZhciBkb2MgPSBmcmFtZXNbMF0uZG9jdW1lbnQ7CisgICAgdmFyIHJhbmdlPWRvYy5j
cmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhkb2MuYm9keSk7Cisg
ICAgdmFyIGZyYWc9cmFuZ2UuY2xvbmVDb250ZW50cygpOworICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoZnJhZyk7CisKKyAgICBmcmFtZXNbMF0ubG9jYXRpb24gPSAiZGF0YTp0ZXh0L2h0
bWwsIjsKKyAgICBmcmFtZXNbMF0uZnJhbWVFbGVtZW50Lm9ubG9hZCA9IHRlc3QyOworfQorCitm
dW5jdGlvbiB0ZXN0MigpCit7CisgICAgdmFyIGV2ZW50ID0gdG9wLmRvY3VtZW50LmNyZWF0ZUV2
ZW50KCdNb3VzZUV2ZW50Jyk7CisgICAgZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRy
dWUpOworICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpWzBdLmRpc3Bh
dGNoRXZlbnQoZXZlbnQpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisg
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRl
LWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVy
LWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVk
LWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSBAQAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRl
LWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQt
ZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3Mt
ZG9jLWNvbnRleHQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8
Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8aWZyYW1lIHNyYz0nZGF0YTp0ZXh0L2h0bWwsPGEgaWQ9
ImEiIGhyZWY9IiMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAmYXBv
czs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJuIGZh
bHNlIj5saW5rPC9hPic+PC9pZnJhbWU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHRl
c3QoKQoreworICAgIHZhciBkb2MgPSBmcmFtZXNbMF0uZG9jdW1lbnQ7CisgICAgdmFyIHJhbmdl
PWRvYy5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhkb2MuYm9k
eSk7CisgICAgdmFyIGZyYWc9cmFuZ2UuY2xvbmVDb250ZW50cygpOworICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQoZnJhZyk7CisKKyAgICB2YXIgZXZlbnQgPSB0b3AuZG9jdW1lbnQuY3Jl
YXRlRXZlbnQoJ01vdXNlRXZlbnQnKTsKKyAgICBldmVudC5pbml0RXZlbnQoJ2NsaWNrJywgdHJ1
ZSwgdHJ1ZSk7CisgICAgdG9wLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdhJylbMF0u
ZGlzcGF0Y2hFdmVudChldmVudCk7CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9Cis8L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0
dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXIt
Y2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJh
bWVsZXNzLWRvYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorQUxF
UlQ6IFNVQ0NFU1MKK1Rlc3QgdGhhdCBhbiBlbGVtZW50IHRoYXQgd2FzIGltcG9ydGVkIGZyb20g
YSBmcmFtZWxlc3MgZG9jdW1lbnQgaGFzIGZ1bmN0aW9uYWwgYXR0cmlidXRlIGV2ZW50IGxpc3Rl
bmVycy4gU2hvdWxkIGFsZXJ0ICJTVUNDRVNTIi4KKworTGluayAoY2xpY2tlZCBhdXRvbWF0aWNh
bGx5KS5FbGVtZW50Lm9uY2xpY2sgcmVzdWx0IGlzIGNvcnJlY3QuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRv
Yy54aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUt
bGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy54aHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1m
cmFtZWxlc3MtZG9jLnhodG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACis8aHRtbCB4
bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Cis8Ym9keT4KKzxwPlRlc3QgdGhh
dCBhbiBlbGVtZW50IHRoYXQgd2FzIGltcG9ydGVkIGZyb20gYSBmcmFtZWxlc3MgZG9jdW1lbnQg
aGFzIGZ1bmN0aW9uYWwgYXR0cmlidXRlIGV2ZW50IGxpc3RlbmVycy4gU2hvdWxkIGFsZXJ0ICJT
VUNDRVNTIi48L3A+Cis8c2NyaXB0PgorPCFbQ0RBVEFbCisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgdmFyIGRvYyA9IChuZXcgRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcoJzxodG1s
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48YSBpZD0iYSIgaHJlZj0iamF2
YXNjcmlwdDphbGVydChcJ0ZBSUxcJykiIG9uY2xpY2s9ImFsZXJ0KFwnU1VDQ0VTU1wnKTsgcmV0
dXJuIGZhbHNlIj5MaW5rIChjbGlja2VkIGF1dG9tYXRpY2FsbHkpLjwvYT48L2h0bWw+JywgImFw
cGxpY2F0aW9uL3hodG1sK3htbCIpOworCisgICAgdmFyIGEgPSBkb2MuZG9jdW1lbnRFbGVtZW50
LmZpcnN0Q2hpbGQuY2xvbmVOb2RlKHRydWUpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJib2R5IilbMF0uYXBwZW5kQ2hpbGQoYSk7CisKKyAgICB2YXIgZXZlbnQgPSBkb2N1
bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpOworICAgIGV2ZW50LmluaXRFdmVudCgnY2xp
Y2snLCB0cnVlLCB0cnVlKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScp
WzBdLmRpc3BhdGNoRXZlbnQoZXZlbnQpOworCisgICAgaWYgKDAgPT0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ2EnKVswXS5vbmNsaWNrLnRvU3RyaW5nKCkuaW5kZXhPZigiZnVuY3Rp
b24gb25jbGljayIpKQorICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCJFbGVtZW50Lm9uY2xpY2sgcmVzdWx0IGlzIGNvcnJlY3QuIikpOwor
XV0+Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
ZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNv
bnRleHQtMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVu
dHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4
dC0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRz
L2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQt
Mi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1BBU1MKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1m
cmFtZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9j
LWNvbnRleHQtMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMv
YXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0y
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKzxodG1sPgorPGJvZHkgb25sb2Fk
PSJ0ZXN0KCkiPgorPGlmcmFtZSBzcmM9J2RhdGE6dGV4dC9odG1sLDxhIGlkPSJhIiBocmVmPSIj
IiBvbmNsaWNrPSJkb2N1bWVudC53cml0ZSh3aW5kb3cgIT0gdG9wID8gJmFwb3M7PHA+RkFJTDwv
cD4mYXBvczsgOiAmYXBvczs8cD5QQVNTPC9wPiZhcG9zOyk7IHJldHVybiBmYWxzZSI+bGluazwv
YT4nPjwvaWZyYW1lPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
IHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICB2YXIgZG9jID0gZnJhbWVzWzBdLmRvY3VtZW50OworICAgIHZhciByYW5nZT1kb2MuY3JlYXRl
UmFuZ2UoKTsKKyAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZG9jLmJvZHkpOworICAgIHZh
ciBmcmFnPXJhbmdlLmV4dHJhY3RDb250ZW50cygpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZnJhZyk7CisKKyAgICBmcmFtZXNbMF0ubG9jYXRpb24gPSAiZGF0YTp0ZXh0L2h0bWws
IjsKKyAgICBmcmFtZXNbMF0uZnJhbWVFbGVtZW50Lm9ubG9hZCA9IHRlc3QyOworfQorCitmdW5j
dGlvbiB0ZXN0MigpCit7CisgICAgdmFyIGV2ZW50ID0gdG9wLmRvY3VtZW50LmNyZWF0ZUV2ZW50
KCdNb3VzZUV2ZW50Jyk7CisgICAgZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUp
OworICAgIHRvcC5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpWzBdLmRpc3BhdGNo
RXZlbnQoZXZlbnQpOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxp
c3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVy
LWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0
cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSBAQAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0
cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5l
ci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQt
ZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
NyBAQAorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8aWZyYW1lIHNyYz0nZGF0YTp0
ZXh0L2h0bWwsPGEgaWQ9ImEiIGhyZWY9IiMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRv
dyAhPSB0b3AgPyAmYXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFw
b3M7KTsgcmV0dXJuIGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+Cis8c2NyaXB0PgoraWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1
bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9
CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBkb2MgPSBmcmFtZXNbMF0uZG9jdW1lbnQ7
CisgICAgdmFyIHJhbmdlPWRvYy5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5vZGVD
b250ZW50cyhkb2MuYm9keSk7CisgICAgdmFyIGZyYWc9cmFuZ2UuZXh0cmFjdENvbnRlbnRzKCk7
CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFnKTsKKworICAgIHZhciBldmVudCA9
IHRvcC5kb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpOworICAgIGV2ZW50LmluaXRF
dmVudCgnY2xpY2snLCB0cnVlLCB0cnVlKTsKKyAgICB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoJ2EnKVswXS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40278</attachid>
            <date>2009-09-28 18:55:55 -0700</date>
            <delta_ts>2009-09-29 10:59:05 -0700</delta_ts>
            <desc>now with Windows build fix</desc>
            <filename>EventListener3.txt</filename>
            <type>text/plain</type>
            <size>54832</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0ODg1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTExIEBACisyMDA5LTA5LTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IE9uY2xpY2sgbm90IGZpcmVkIGZvciBhbiBlbGVtZW50IGNvcGllZCB3aXRoIGNsb25lQ29udGVu
dHMoKSBvciBjbG9uZU5vZGUoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjUxMzAKKworCQlUaGUgY2hhbmdlIGhlcmUgaXMgdGhhdCBKUyBldmVudCBs
aXN0ZW5lcnMgZG9uJ3Qga2VlcCBhIHJlZmVyZW5jZSB0byBhIGdsb2JhbCBvYmplY3QgZnJvbQor
CQl3aGVyZSB0aGV5IHdlcmUgY3JlYXRlZCwgYW5kIGluc3RlYWQgdGFrZSBpdCBhcyBhIHBhcmFt
ZXRlciB3aGVuIHBhcnNpbmcgc291cmNlIGNvZGUuIEFsc28sCisJCXRoZSBsaXN0ZW5lciBjcmVh
dGlvbiB3b24ndCBmYWlsIGp1c3QgYmVjYXVzZSBpdCBoYXBwZW5zIGZvciBhbiBlbGVtZW50IGlu
IGEgZnJhbWVsZXNzCisJCWRvY3VtZW50LgorCQlUaHVzLCBtb3Zpbmcgbm9kZXMgYmV0d2VlbiBk
b2N1bWVudHMgbm8gbG9uZ2VyIHJlc3VsdHMgaW4gaGF2aW5nIGluY29ycmVjdCByZWdpc3RlcmVk
CisJCWxhenkgZXZlbnQgbGlzdGVuZXJzIG9uIHRoZW0uCisKKyAgICAgICAgVGVzdHM6IGZhc3Qv
ZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRl
eHQtMi5odG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXIt
Y2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0Lmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLnho
dG1sCisgICAgICAgICAgICAgICBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFj
dGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAorICAgICAgICAgICAgICAgZmFz
dC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2Mt
Y29udGV4dC5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpKU0V2ZW50TGlzdGVuZXIpOiBE
b24ndCB0YWtlIGEgcmVmZXJlbmNlIHRvIEpTRE9NR2xvYmFsT2JqZWN0LgorICAgICAgICAoV2Vi
Q29yZTo6SlNFdmVudExpc3RlbmVyOjpqc0Z1bmN0aW9uKTogVGFrZSBTY3JpcHRFeGVjdXRpb25D
b250ZXh0IGFzIGEgcGFyYW1ldGVyIGZvcgorICAgICAgICBnZXR0aW5nIHRvIEpTRE9NR2xvYmFs
T2JqZWN0LiBJdCdzIG5vdCB1c2VkIGluIGJhc2UgY2xhc3MsIGJ1dCBpcyBpbiBKU0xhenlFdmVu
dExpc3RuZXIuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6Om1hcmtKU0Z1bmN0
aW9uKTogRG9uJ3QgbWFyayB0aGUgZ2xvYmFsIG9iamVjdC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOiBHZXQgZ2xvYmFsIG9iamVjdCBmcm9tIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OnJl
cG9ydEVycm9yKTogRGl0dG8uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuaDogKFdlYkNvcmU6OkpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKTogRG9uJ3Qga2VlcCBhIHJl
ZmVyZW5jZQorICAgICAgICB0byBKU0RPTUdsb2JhbE9iamVjdC4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwOiAoV2ViQ29yZTo6SlNMYXp5RXZlbnRMaXN0
ZW5lcjo6cGFyc2VDb2RlKTogTGlzdGVuZXIKKyAgICAgICAgY3JlYXRpb24gd2FzIHNwbGl0IGJl
dHdlZW4gdGhpcyBmdW5jdGlvbiBhbmQgU2NyaXB0RXZlbnRMaXN0ZW5lcjsgbW92ZWQgaXQgaGVy
ZSwgYXMgSlMKKyAgICAgICAgZ2xvYmFsIG9iamVjdCBjYW4gYmUgZGlmZmVyZW50IG5vdy4KKwor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuaDogKFdlYkNvcmU6OkpT
TGF6eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZSk6IEtlZXAgc291cmNlIFVSTCwKKyAgICAgICAgd2hp
Y2ggY2FuIG5vdCBiZSBkZXRlcm1pbmVkIGF0IHBhcnNpbmcgdGltZS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOiAoV2ViQ29yZTo6Y3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcik6IE1vdmVkIGNvZGUKKyAgICAgICAgZm9yIGxpc3RlbmVyIGNyZWF0
aW9uIHRvIEpTTGF6eUV2ZW50TGlzdGVuZXIuIFhTU0F1ZGl0b3IgY29kZSByZW1haW5zIGhlcmUs
IGJlY2F1c2UgdGVzdHMKKyAgICAgICAgZXhwZWN0IHRoYXQgZXJyb3JzIGFyZSBsb2dnZWQgYXQg
ZG9jdW1lbnQgcGFyc2luZyB0aW1lLCBhbmQgYmVjYXVzZSBJIGRvbid0IGtub3cgd2hhdCBvdGhl
cgorICAgICAgICBzaWRlIGVmZmVjdHMgbW92aW5nIGl0IHZvdWxkIGhhdmUuCisKKyAgICAgICAg
KiBkb20vRXZlbnRMaXN0ZW5lci5oOiBoYW5kbGVFdmVudCgpIGFuZCByZXBvcnRFcnJvcigpIG5v
dyB0YWtlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsCisgICAgICAgIGJlY2F1c2UgSlNDIG5lZWRz
IGEgZ2xvYmFsIGNvbnRleHQgaGVyZS4KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQWJzdHJh
Y3RXb3JrZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNBYnN0cmFjdFdvcmtlcjo6
YWRkRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU0Fic3RyYWN0V29ya2VyOjpy
ZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUFwcGxpY2F0
aW9uQ2FjaGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01BcHBsaWNhdGlvbkNh
Y2hlOjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NQXBwbGljYXRp
b25DYWNoZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNE
T01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6
OmNyZWF0ZUpTQXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmFk
ZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OnJlbW92ZUV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRTb3VyY2VDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFNvdXJjZTo6YWRkRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50U291cmNlOjpyZW1vdmVFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNNZXNzYWdlUG9ydDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTm9kZTo6YWRk
RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU05vZGU6OnJlbW92ZUV2ZW50TGlz
dGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHRWxlbWVudEluc3RhbmNlOjphZGRFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTU1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0OjphZGRFdmVudExpc3Rl
bmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6cmVtb3ZlRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjphZGRFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnJlbW92ZUV2ZW50TGlzdGVuZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6YWRkRXZlbnRMaXN0
ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkOjpyZW1vdmVF
dmVudExpc3RlbmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVy
Lmg6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbToKKyAgICAg
ICAgKFdlYkNvcmU6Ok9iakNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogZG9tL0V2ZW50
VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0
ZW5lcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGFuZGxlRXZlbnQpOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NU3RvcmFnZVJlc291cmNlOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oOgorICAgICAgICAqIGxvYWRlci9JbWFnZURvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZl
bnQpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uZGl0aW9uRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAgICAg
ICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJD
b250ZXh0OjpyZXBvcnRFeGNlcHRpb24pOgorICAgICAgICBEb24ndCBwYXNzIGdsb2JhbCBvYmpl
Y3QgdG8gSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoKSwgd2hpY2ggbm8gbG9uZ2VyIG5lZWRzIGl0
LgorICAgICAgICBOb3RlIHRoYXQgc29tZSBvZiB0aGVzZSBmdW5jdGlvbnMgc3RpbGwgaGF2ZSBh
biBlYXJseSByZXR1cm4gZm9yIG51bGwgZ2xvYmFsIG9iamVjdCwgd2hpY2gKKyAgICAgICAgY2Fu
IHByb2JhYmx5IGJlIHJlbW92ZWQgaW4gYSBsYXRlciBwYXRjaC4KKyAgICAgICAgUGFzcyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0IHRvIEV2ZW50TGlzdGVuZXIgbWV0aG9kcyB0aGF0IG5vdyBuZWVk
IGl0LgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ09NLnBtOiBE
b24ndCBmb3JjZSBFdmVudFRhcmdldCBpbXBsZW1lbnRhdGlvbiBvbiBOb2RlIC0KKyAgICAgICAg
aXQgZG9lc24ndCB3b3JrIHlldCAoaXQgZGlkbid0IHF1aXRlIHdvcmsgYmVmb3JlIHRoaXMgcGF0
Y2gsIHRvbywgYmVjYXVzZSBpdCBhc3N1bWVkIHRoYXQKKyAgICAgICAgYW55IG9iamVjdCBpbXBs
ZW1lbnRpbmcgRXZlbnRUYXJnZXQgQ09NIGludGVyZmFjZSBvcmlnaW5hdGVkIGZyb20gV2ViQ29y
ZSkuCisKKyAgICAgICAgKiBkb20vRXZlbnRMaXN0ZW5lci5pZGw6IEp1c3QgbGlrZSBpbiBPYmpD
LCBFdmVudExpc3RlbmVyIHNob3VsZCBiZSBhIHB1cmUgaW50ZXJmYWNlIGluCisgICAgICAgIENP
TSBiaW5kaW5ncy4KKwogMjAwOS0wOS0yOCAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQWJzdHJhY3RXb3JrZXJDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNBYnN0cmFjdFdvcmtlckN1c3RvbS5jcHAJKHJldmlzaW9uIDQ4Nzc4KQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Fic3RyYWN0V29ya2VyQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBKU1ZhbHVlIEpTQWJzdHJhY3RXb3JrZXI6OmFkZEV2
ZW50TGlzdGVuCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDAp
LnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5l
ciksIGdsb2JhbE9iamVjdCwgZmFsc2UpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7Cisg
ICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpT
RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZmFsc2UpLCBhcmdzLmF0
KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAg
LTY4LDcgKzY4LDcgQEAgSlNWYWx1ZSBKU0Fic3RyYWN0V29ya2VyOjpyZW1vdmVFdmVudExpcwog
ICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAKLSAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmlu
ZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBnbG9i
YWxPYmplY3QsIGZhbHNlKS5nZXQoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAg
IGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBK
U0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGZhbHNlKS5nZXQoKSwg
YXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
fQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXBwbGljYXRpb25DYWNoZUN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUFwcGxpY2F0aW9u
Q2FjaGVDdXN0b20uY3BwCShyZXZpc2lvbiA0ODc3OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsNyAr
OTUsNyBAQCBKU1ZhbHVlIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6YWRkRXZlbnRMCiAgICAgaWYg
KCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAot
ICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBK
U0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGdsb2JhbE9iamVjdCwg
ZmFsc2UpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgaW1wbCgpLT5hZGRFdmVu
dExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZmFsc2UpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVj
KSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKQEAgLTEwOSw3ICsxMDksNyBAQCBK
U1ZhbHVlIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6cmVtb3ZlRXZlCiAgICAgaWYgKCFsaXN0ZW5l
ci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwo
KS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50
TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGdsb2JhbE9iamVjdCwgZmFsc2Up
LmdldCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAgaW1wbCgpLT5yZW1vdmVF
dmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6
Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZmFsc2UpLmdldCgpLCBhcmdzLmF0KDIpLnRvQm9v
bGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiA0ODc3OCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02OCw3ICs2OCw3IEBAIFBhc3NSZWZQdHI8SlNFdmVudExpc3RlbmVyPiBKU0RPTUdsb2Jh
bE8KICAgICBpZiAoIXZhbC5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJl
dHVybiBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdCh2YWwpLCB0aGlzLCB0cnVlKS5n
ZXQoKTsKKyAgICByZXR1cm4gSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QodmFsKSwg
dHJ1ZSkuZ2V0KCk7CiB9CiAKIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnNldEN1cnJlbnRFdmVu
dChFdmVudCogZXZ0KQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3Rv
bS5jcHAJKHJldmlzaW9uIDQ4Nzc4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMzQsNyArMTAzNCw3IEBAIEpTVmFsdWUg
SlNET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoRXgKICAgICBpZiAoIWxpc3RlbmVyLmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgaW1wbCgpLT5hZGRF
dmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6
Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UpLCBhcmdzLmF0KDIpLnRvQm9v
bGVhbihleGVjKSk7CisgICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9T
dHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwg
ZmFsc2UpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiB9CiAKQEAgLTEwNDgsNyArMTA0OCw3IEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OnJl
bW92ZUV2ZW50TGlzdGVuZXIKICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVy
KGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2Jq
ZWN0KGxpc3RlbmVyKSwgdGhpcywgZmFsc2UpLmdldCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihl
eGVjKSk7CisgICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJp
bmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZmFs
c2UpLmdldCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAJKHJldmlzaW9uIDQ4Nzc4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwyMCArMzEsMTggQEAgdXNpbmcgbmFtZXNwYWNl
IEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1KU0V2ZW50TGlzdGVuZXI6OkpTRXZlbnRM
aXN0ZW5lcihKU09iamVjdCogZnVuY3Rpb24sIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGJvb2wgaXNBdHRyaWJ1dGUpCitKU0V2ZW50TGlzdGVuZXI6OkpTRXZlbnRMaXN0ZW5lcihK
U09iamVjdCogZnVuY3Rpb24sIGJvb2wgaXNBdHRyaWJ1dGUpCiAgICAgOiBFdmVudExpc3RlbmVy
KEpTRXZlbnRMaXN0ZW5lclR5cGUpCiAgICAgLCBtX2pzRnVuY3Rpb24oZnVuY3Rpb24pCi0gICAg
LCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiAgICAgLCBtX2lzQXR0cmlidXRlKGlzQXR0
cmlidXRlKQogewotICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CiB9CiAKIEpTRXZlbnRMaXN0
ZW5lcjo6fkpTRXZlbnRMaXN0ZW5lcigpCiB7CiB9CiAKLUpTT2JqZWN0KiBKU0V2ZW50TGlzdGVu
ZXI6OmpzRnVuY3Rpb24oKSBjb25zdAorSlNPYmplY3QqIEpTRXZlbnRMaXN0ZW5lcjo6anNGdW5j
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3QKIHsKICAgICByZXR1cm4gbV9qc0Z1
bmN0aW9uOwogfQpAQCAtNTMsMjAgKzUxLDIyIEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjptYXJr
SlNGdW5jdGlvbihNYXIKIHsKICAgICBpZiAobV9qc0Z1bmN0aW9uKQogICAgICAgICBtYXJrU3Rh
Y2suYXBwZW5kKG1fanNGdW5jdGlvbik7Ci0gICAgbWFya1N0YWNrLmFwcGVuZChtX2dsb2JhbE9i
amVjdCk7CiB9CiAKLXZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChFdmVudCogZXZl
bnQpCit2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXZlbnQqIGV2ZW50KQogeworICAgIEFTU0VS
VChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCisgICAgICAgIHJldHVybjsKKwogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25z
T25seSk7CiAKLSAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IHRoaXMtPmpzRnVuY3Rpb24oKTsK
KyAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IHRoaXMtPmpzRnVuY3Rpb24oc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7CiAgICAgaWYgKCFqc0Z1bmN0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9nbG9iYWxPYmplY3Q7Ci0gICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGdsb2JhbE9i
amVjdC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIGlmICghc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKKyAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUds
b2JhbE9iamVjdChzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICBpZiAoIWdsb2JhbE9iamVj
dCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
RG9jdW1lbnQoKSkgewpAQCAtMTMyLDE1ICsxMzIsMTUgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6
OmhhbmRsZUV2ZW50KEV2ZW50KgogICAgIH0KIH0KIAotYm9vbCBKU0V2ZW50TGlzdGVuZXI6OnJl
cG9ydEVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBs
aW5lTnVtYmVyKQorYm9vbCBKU0V2ZW50TGlzdGVuZXI6OnJlcG9ydEVycm9yKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5n
JiB1cmwsIGludCBsaW5lTnVtYmVyKQogewogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRp
b25zT25seSk7CiAKLSAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IHRoaXMtPmpzRnVuY3Rpb24o
KTsKKyAgICBKU09iamVjdCoganNGdW5jdGlvbiA9IHRoaXMtPmpzRnVuY3Rpb24oY29udGV4dCk7
CiAgICAgaWYgKCFqc0Z1bmN0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBKU0RP
TUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9nbG9iYWxPYmplY3Q7CisgICAgSlNET01H
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29udGV4dCk7
CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CiAKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuaAkocmV2aXNpb24gNDg3NzgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw5ICszMCw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgIGNsYXNzIEpTRXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBFdmVudExpc3RlbmVyIHsK
ICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTRXZlbnRMaXN0ZW5lcj4g
Y3JlYXRlKEpTQzo6SlNPYmplY3QqIGxpc3RlbmVyLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBib29sIGlzQXR0cmlidXRlKQorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0V2
ZW50TGlzdGVuZXI+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBsaXN0ZW5lciwgYm9vbCBpc0F0dHJp
YnV0ZSkKICAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0V2ZW50
TGlzdGVuZXIobGlzdGVuZXIsIGdsb2JhbE9iamVjdCwgaXNBdHRyaWJ1dGUpKTsKKyAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpc0F0dHJp
YnV0ZSkpOwogICAgICAgICB9CiAKICAgICAgICAgc3RhdGljIGNvbnN0IEpTRXZlbnRMaXN0ZW5l
ciogY2FzdChjb25zdCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lcikKQEAgLTQ5LDIwICs0OSwxOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGV2
ZW50IGxpc3RlbmVyIHdhcyBjcmVhdGVkIGZvciBhbiBldmVudCBoYW5kbGVyIGF0dHJpYnV0ZSwg
bGlrZSAib25sb2FkIiBvciAib25jbGljayIuCiAgICAgICAgIGJvb2wgaXNBdHRyaWJ1dGUoKSBj
b25zdCB7IHJldHVybiBtX2lzQXR0cmlidXRlOyB9CiAKLSAgICAgICAgdmlydHVhbCBKU0M6OkpT
T2JqZWN0KiBqc0Z1bmN0aW9uKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgSlNDOjpKU09iamVj
dCoganNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgY29uc3Q7CiAKICAgICBwcml2
YXRlOgogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0pTRnVuY3Rpb24oSlNDOjpNYXJrU3RhY2sm
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KEV2ZW50Kik7Ci0gICAgICAgIHZp
cnR1YWwgYm9vbCByZXBvcnRFcnJvcihjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmlu
ZyYgdXJsLCBpbnQgbGluZU51bWJlcik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVu
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqKTsKKyAgICAgICAgdmlydHVhbCBib29s
IHJlcG9ydEVycm9yKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlcik7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCB2aXJ0dWFsaXNBdHRyaWJ1dGUoKSBjb25zdDsKICAgICAgICAgdm9pZCBjbGVhckpTRnVu
Y3Rpb25JbmxpbmUoKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgSlNFdmVudExpc3RlbmVy
KEpTQzo6SlNPYmplY3QqIGZ1bmN0aW9uLCBKU0RPTUdsb2JhbE9iamVjdCosIGJvb2wgaXNBdHRy
aWJ1dGUpOworICAgICAgICBKU0V2ZW50TGlzdGVuZXIoSlNDOjpKU09iamVjdCogZnVuY3Rpb24s
IGJvb2wgaXNBdHRyaWJ1dGUpOwogCiAgICAgICAgIG11dGFibGUgSlNDOjpKU09iamVjdCogbV9q
c0Z1bmN0aW9uOwotICAgICAgICBKU0RPTUdsb2JhbE9iamVjdCogbV9nbG9iYWxPYmplY3Q7CiAg
ICAgICAgIGJvb2wgbV9pc0F0dHJpYnV0ZTsKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRXZlbnRTb3VyY2VDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFNvdXJjZUN1c3RvbS5jcHAJKHJldmlzaW9uIDQ4Nzc4KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50U291cmNlQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTMsNyArNTMsNyBAQCBKU1ZhbHVlIEpTRXZlbnRTb3VyY2U6OmFkZEV2ZW50TGlzdGVuZXIo
CiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIAotICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5n
KGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGdsb2Jh
bE9iamVjdCwgZmFsc2UpLmdldCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAg
aW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZmFsc2UpLmdldCgpLCBhcmdz
LmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAK
QEAgLTY3LDcgKzY3LDcgQEAgSlNWYWx1ZSBKU0V2ZW50U291cmNlOjpyZW1vdmVFdmVudExpc3Rl
bgogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKLSAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0
cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBn
bG9iYWxPYmplY3QsIGZhbHNlKS5nZXQoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOwor
ICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMp
LCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGZhbHNlKS5nZXQo
KSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5j
cHAJKHJldmlzaW9uIDQ4Nzc4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExp
c3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTIgKzM1LDEzIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIHN0YXRpYyBXVEY6OlJlZkNvdW50ZWRMZWFrQ291bnRlciBldmVudExpc3RlbmVy
Q291bnRlcigiSlNMYXp5RXZlbnRMaXN0ZW5lciIpOwogI2VuZGlmCiAKLUpTTGF6eUV2ZW50TGlz
dGVuZXI6OkpTTGF6eUV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNv
bnN0IFN0cmluZyYgZXZlbnRQYXJhbWV0ZXJOYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE5vZGUqIG5vZGUsIGludCBsaW5lTnVtYmVyKQot
ICAgIDogSlNFdmVudExpc3RlbmVyKDAsIGdsb2JhbE9iamVjdCwgdHJ1ZSkKK0pTTGF6eUV2ZW50
TGlzdGVuZXI6OkpTTGF6eUV2ZW50TGlzdGVuZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUs
IGNvbnN0IFN0cmluZyYgZXZlbnRQYXJhbWV0ZXJOYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIE5v
ZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51bWJlcikKKyAgICA6
IEpTRXZlbnRMaXN0ZW5lcigwLCB0cnVlKQogICAgICwgbV9mdW5jdGlvbk5hbWUoZnVuY3Rpb25O
YW1lKQogICAgICwgbV9ldmVudFBhcmFtZXRlck5hbWUoZXZlbnRQYXJhbWV0ZXJOYW1lKQogICAg
ICwgbV9jb2RlKGNvZGUpCiAgICAgLCBtX3BhcnNlZChmYWxzZSkKKyAgICAsIG1fc291cmNlVVJM
KHNvdXJjZVVSTCkKICAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQogICAgICwgbV9vcmln
aW5hbE5vZGUobm9kZSkKIHsKQEAgLTY3LDIzICs2OCw0MyBAQCBKU0xhenlFdmVudExpc3RlbmVy
Ojp+SlNMYXp5RXZlbnRMaXN0ZW5lCiAjZW5kaWYKIH0KIAotSlNPYmplY3QqIEpTTGF6eUV2ZW50
TGlzdGVuZXI6OmpzRnVuY3Rpb24oKSBjb25zdAorSlNPYmplY3QqIEpTTGF6eUV2ZW50TGlzdGVu
ZXI6OmpzRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlY3V0aW9uQ29udGV4dCkg
Y29uc3QKIHsKLSAgICBwYXJzZUNvZGUoKTsKKyAgICBwYXJzZUNvZGUoZXhlY3V0aW9uQ29udGV4
dCk7CiAgICAgcmV0dXJuIG1fanNGdW5jdGlvbjsKIH0KIAotdm9pZCBKU0xhenlFdmVudExpc3Rl
bmVyOjpwYXJzZUNvZGUoKSBjb25zdAordm9pZCBKU0xhenlFdmVudExpc3RlbmVyOjpwYXJzZUNv
ZGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogZXhlY3V0aW9uQ29udGV4dCkgY29uc3QKIHsKKyAg
ICBBU1NFUlQoZXhlY3V0aW9uQ29udGV4dCk7CisgICAgQVNTRVJUKGV4ZWN1dGlvbkNvbnRleHQt
PmlzRG9jdW1lbnQoKSk7CisgICAgaWYgKCFleGVjdXRpb25Db250ZXh0KQorICAgICAgICByZXR1
cm47CisKICAgICBpZiAobV9wYXJzZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGV4ZWN1dGlvbkNvbnRleHQgPSBtX2dsb2JhbE9iamVjdC0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOwotICAgIEFTU0VSVChleGVjdXRpb25Db250ZXh0KTsKLSAgICBp
ZiAoIWV4ZWN1dGlvbkNvbnRleHQpCisgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8RG9j
dW1lbnQqPihleGVjdXRpb25Db250ZXh0KS0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm47CisKKyAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0g
ZnJhbWUtPnNjcmlwdCgpOworICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+aXNFbmFibGVkKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSB0b0pTRE9NR2xvYmFsT2JqZWN0KGV4ZWN1dGlvbkNvbnRleHQpOworICAgIGlmICghZ2xvYmFs
T2JqZWN0KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBFbnN1cmUgdGhhdCAnbm9kZScgaGFz
IGEgSmF2YVNjcmlwdCB3cmFwcGVyIHRvIG1hcmsgdGhlIGV2ZW50IGxpc3RlbmVyIHdlJ3JlIGNy
ZWF0aW5nLgorICAgIGlmIChtX29yaWdpbmFsTm9kZSkgeworICAgICAgICBKU0xvY2sgbG9jayhT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpOworICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHBhc3MgdGhl
IGdsb2JhbCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBub2RlCisgICAgICAgIHRvSlMoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdCwgbV9vcmlnaW5hbE5vZGUpOwor
ICAgIH0KKwogICAgIGlmIChleGVjdXRpb25Db250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAg
ICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4obV9nbG9i
YWxPYmplY3QpOworICAgICAgICBKU0RPTVdpbmRvdyogd2luZG93ID0gc3RhdGljX2Nhc3Q8SlNE
T01XaW5kb3cqPihnbG9iYWxPYmplY3QpOwogICAgICAgICBGcmFtZSogZnJhbWUgPSB3aW5kb3ct
PmltcGwoKS0+ZnJhbWUoKTsKICAgICAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTk1LDE2ICsxMTYsMTMgQEAgdm9pZCBKU0xhenlFdmVudExpc3RlbmVyOjpwYXJzZUNv
ZGUoKSBjbwogCiAgICAgbV9wYXJzZWQgPSB0cnVlOwogCi0gICAgRXhlY1N0YXRlKiBleGVjID0g
bV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7
Ci0gICAgVVN0cmluZyBzb3VyY2VVUkwoZXhlY3V0aW9uQ29udGV4dC0+dXJsKCkuc3RyaW5nKCkp
OwogICAgIGFyZ3MuYXBwZW5kKGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBtX2V2ZW50UGFyYW1l
dGVyTmFtZSkpOwogICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIG1fY29kZSkpOwogCi0g
ICAgLy8gRklYTUU6IFBhc3NpbmcgdGhlIGRvY3VtZW50J3MgVVJMIHRvIGNvbnN0cnVjdCBpcyBu
b3QgYWx3YXlzIGNvcnJlY3QsIHNpbmNlIHRoaXMgZXZlbnQgbGlzdGVuZXIgbWlnaHQKLSAgICAv
LyBoYXZlIGJlZW4gYWRkZWQgd2l0aCBzZXRBdHRyaWJ1dGUgZnJvbSBhIHNjcmlwdCwgYW5kIHdl
IHNob3VsZCBwYXNzIFN0cmluZygpIGluIHRoYXQgY2FzZS4KLSAgICBtX2pzRnVuY3Rpb24gPSBj
b25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhcmdzLCBJZGVudGlmaWVyKGV4ZWMsIG1fZnVuY3Rpb25O
YW1lKSwgc291cmNlVVJMLCBtX2xpbmVOdW1iZXIpOyAvLyBGSVhNRTogaXMgZ2xvYmFsRXhlYyBv
az8KKyAgICBtX2pzRnVuY3Rpb24gPSBjb25zdHJ1Y3RGdW5jdGlvbihleGVjLCBhcmdzLCBJZGVu
dGlmaWVyKGV4ZWMsIG1fZnVuY3Rpb25OYW1lKSwgbV9zb3VyY2VVUkwsIG1fbGluZU51bWJlcik7
IC8vIEZJWE1FOiBpcyBnbG9iYWxFeGVjIG9rPwogCiAgICAgSlNGdW5jdGlvbiogbGlzdGVuZXJB
c0Z1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KG1fanNGdW5jdGlvbik7CiAKQEAg
LTExOCw3ICsxMzYsNyBAQCB2b2lkIEpTTGF6eUV2ZW50TGlzdGVuZXI6OnBhcnNlQ29kZSgpIGNv
CiAgICAgICAgIC8vIChhbmQgdGhlIGRvY3VtZW50LCBhbmQgdGhlIGZvcm0gLSBzZWUgSlNIVE1M
RWxlbWVudDo6ZXZlbnRIYW5kbGVyU2NvcGUpCiAgICAgICAgIFNjb3BlQ2hhaW4gc2NvcGUgPSBs
aXN0ZW5lckFzRnVuY3Rpb24tPnNjb3BlKCk7CiAKLSAgICAgICAgSlNWYWx1ZSB0aGlzT2JqID0g
dG9KUyhleGVjLCBtX2dsb2JhbE9iamVjdCwgbV9vcmlnaW5hbE5vZGUpOworICAgICAgICBKU1Zh
bHVlIHRoaXNPYmogPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbV9vcmlnaW5hbE5vZGUpOwog
ICAgICAgICBpZiAodGhpc09iai5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBzdGF0aWNfY2Fz
dDxKU05vZGUqPihhc09iamVjdCh0aGlzT2JqKSktPnB1c2hFdmVudEhhbmRsZXJTY29wZShleGVj
LCBzY29wZSk7CiAgICAgICAgICAgICBsaXN0ZW5lckFzRnVuY3Rpb24tPnNldFNjb3BlKHNjb3Bl
KTsKQEAgLTEyOSw2ICsxNDcsNyBAQCB2b2lkIEpTTGF6eUV2ZW50TGlzdGVuZXI6OnBhcnNlQ29k
ZSgpIGNvCiAgICAgbV9mdW5jdGlvbk5hbWUgPSBTdHJpbmcoKTsKICAgICBtX2NvZGUgPSBTdHJp
bmcoKTsKICAgICBtX2V2ZW50UGFyYW1ldGVyTmFtZSA9IFN0cmluZygpOworICAgIG1fc291cmNl
VVJMID0gU3RyaW5nKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oCShyZXZpc2lvbiA0ODc3OCkKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSwyNCArMjksMjUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgSlNM
YXp5RXZlbnRMaXN0ZW5lciA6IHB1YmxpYyBKU0V2ZW50TGlzdGVuZXIgewogICAgIHB1YmxpYzoK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25zdCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFt
ZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBO
b2RlKiBub2RlLCBpbnQgbGluZU51bWJlcikKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNM
YXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgZnVuY3Rpb25OYW1lLCBjb25z
dCBTdHJpbmcmIGV2ZW50UGFyYW1ldGVyTmFtZSwgY29uc3QgU3RyaW5nJiBjb2RlLCBOb2RlKiBu
b2RlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgaW50IGxpbmVOdW1iZXIpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgSlNMYXp5RXZlbnRMaXN0ZW5lcihmdW5j
dGlvbk5hbWUsIGV2ZW50UGFyYW1ldGVyTmFtZSwgY29kZSwgZ2xvYmFsT2JqZWN0LCBub2RlLCBs
aW5lTnVtYmVyKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEpTTGF6eUV2ZW50
TGlzdGVuZXIoZnVuY3Rpb25OYW1lLCBldmVudFBhcmFtZXRlck5hbWUsIGNvZGUsIG5vZGUsIHNv
dXJjZVVSTCwgbGluZU51bWJlcikpOwogICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgfkpTTGF6
eUV2ZW50TGlzdGVuZXIoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEpTTGF6eUV2ZW50TGlz
dGVuZXIoY29uc3QgU3RyaW5nJiBmdW5jdGlvbk5hbWUsIGNvbnN0IFN0cmluZyYgZXZlbnRQYXJh
bWV0ZXJOYW1lLCBjb25zdCBTdHJpbmcmIGNvZGUsIEpTRE9NR2xvYmFsT2JqZWN0KiwgTm9kZSos
IGludCBsaW5lTnVtYmVyKTsKKyAgICAgICAgSlNMYXp5RXZlbnRMaXN0ZW5lcihjb25zdCBTdHJp
bmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBldmVudFBhcmFtZXRlck5hbWUsIGNvbnN0
IFN0cmluZyYgY29kZSwgTm9kZSosIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBpbnQgbGluZU51
bWJlcik7CiAKLSAgICAgICAgdmlydHVhbCBKU0M6OkpTT2JqZWN0KiBqc0Z1bmN0aW9uKCkgY29u
c3Q7CisgICAgICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCoganNGdW5jdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KikgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCB3YXNDcmVhdGVkRnJv
bU1hcmt1cCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICB2b2lkIHBhcnNlQ29k
ZSgpIGNvbnN0OworICAgICAgICB2b2lkIHBhcnNlQ29kZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KikgY29uc3Q7CiAKICAgICAgICAgbXV0YWJsZSBTdHJpbmcgbV9mdW5jdGlvbk5hbWU7CiAgICAg
ICAgIG11dGFibGUgU3RyaW5nIG1fZXZlbnRQYXJhbWV0ZXJOYW1lOwogICAgICAgICBtdXRhYmxl
IFN0cmluZyBtX2NvZGU7CiAgICAgICAgIG11dGFibGUgYm9vbCBtX3BhcnNlZDsKKyAgICAgICAg
bXV0YWJsZSBTdHJpbmcgbV9zb3VyY2VVUkw7CiAgICAgICAgIGludCBtX2xpbmVOdW1iZXI7CiAg
ICAgICAgIE5vZGUqIG1fb3JpZ2luYWxOb2RlOwogICAgIH07CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNZXNzYWdlUG9ydEN1c3RvbS5jcHAJKHJldmlzaW9uIDQ4Nzc4KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjUsNyArNjUsNyBAQCBKU1ZhbHVlIEpTTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIo
CiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIAotICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5n
KGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGdsb2Jh
bE9iamVjdCwgZmFsc2UpLmdldCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CisgICAg
aW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZmFsc2UpLmdldCgpLCBhcmdz
LmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAK
QEAgLTc5LDcgKzc5LDcgQEAgSlNWYWx1ZSBKU01lc3NhZ2VQb3J0OjpyZW1vdmVFdmVudExpc3Rl
bgogICAgIGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiAKLSAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0
cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBn
bG9iYWxPYmplY3QsIGZhbHNlKS5nZXQoKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOwor
ICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMp
LCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGZhbHNlKS5nZXQo
KSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVDdXN0b20uY3BwCShyZXZpc2lvbiA0
ODc3OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlQ3VzdG9tLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIEpTVmFsdWUgSlNOb2RlOjphZGRFdmVudExpc3RlbmVy
KEV4ZWNTdGEKICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogCi0gICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCku
dG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVy
KSwgZ2xvYmFsT2JqZWN0LCBmYWxzZSksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAg
ICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNF
dmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSksIGFyZ3MuYXQo
MikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApAQCAt
MTQwLDcgKzE0MCw3IEBAIEpTVmFsdWUgSlNOb2RlOjpyZW1vdmVFdmVudExpc3RlbmVyKEV4ZWMK
ICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogCi0gICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJp
bmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZ2xv
YmFsT2JqZWN0LCBmYWxzZSkuZ2V0KCksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAg
ICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwg
SlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSkuZ2V0KCks
IGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
IH0KIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0YW5jZUN1c3Rv
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0VsZW1lbnRJbnN0
YW5jZUN1c3RvbS5jcHAJKHJldmlzaW9uIDQ4Nzc4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1NWR0VsZW1lbnRJbnN0YW5jZUN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4
LDcgQEAgSlNWYWx1ZSBKU1NWR0VsZW1lbnRJbnN0YW5jZTo6YWRkRXZlbnRMaQogICAgIGlmICgh
bGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAg
ICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNF
dmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBnbG9iYWxPYmplY3QsIGZh
bHNlKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIGltcGwoKS0+YWRkRXZlbnRM
aXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0
ZShhc09iamVjdChsaXN0ZW5lciksIGZhbHNlKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykp
OwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC03Miw3ICs3Miw3IEBAIEpTVmFs
dWUgSlNTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZUV2ZW4KICAgICBpZiAoIWxpc3RlbmVyLmlz
T2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCi0gICAgaW1wbCgpLT5y
ZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZ2xvYmFsT2JqZWN0LCBmYWxzZSkuZ2V0
KCksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsKCktPnJlbW92ZUV2ZW50
TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVh
dGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSkuZ2V0KCksIGFyZ3MuYXQoMikudG9Cb29sZWFu
KGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAkocmV2aXNpb24gNDg3Nzgp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCBKU1ZhbHVlIEpTV29ya2VyQ29udGV4dDo6YWRk
RXZlbnRMaXN0ZW5lCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0
KDApLnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0
ZW5lciksIHRoaXMsIGZhbHNlKSwgYXJncy5hdCgyKS50b0Jvb2xlYW4oZXhlYykpOworICAgIGlt
cGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50
TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGZhbHNlKSwgYXJncy5hdCgyKS50
b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCkBAIC0xMzIs
NyArMTMyLDcgQEAgSlNWYWx1ZSBKU1dvcmtlckNvbnRleHQ6OnJlbW92ZUV2ZW50TGlzdAogICAg
IGlmICghbGlzdGVuZXIuaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAKLSAgICBpbXBsKCktPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhl
eGVjKSwgSlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCB0aGlzLCBm
YWxzZSkuZ2V0KCksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKKyAgICBpbXBsKCktPnJl
bW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwgSlNFdmVudExpc3Rl
bmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSkuZ2V0KCksIGFyZ3MuYXQoMiku
dG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCShyZXZp
c2lvbiA0ODc3OCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBKU1ZhbHVlIEpTWE1MSHR0
cFJlcXVlc3Q6OmFkZEV2ZW50TGlzdGVuCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0
ZW5lcihhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShh
c09iamVjdChsaXN0ZW5lciksIGdsb2JhbE9iamVjdCwgZmFsc2UpLCBhcmdzLmF0KDIpLnRvQm9v
bGVhbihleGVjKSk7CisgICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9T
dHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwg
ZmFsc2UpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiB9CiAKQEAgLTE3NCw3ICsxNzQsNyBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3Q6
OnJlbW92ZUV2ZW50TGlzCiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihh
cmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVj
dChsaXN0ZW5lciksIGdsb2JhbE9iamVjdCwgZmFsc2UpLmdldCgpLCBhcmdzLmF0KDIpLnRvQm9v
bGVhbihleGVjKSk7CisgICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCku
dG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVy
KSwgZmFsc2UpLmdldCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRw
UmVxdWVzdFVwbG9hZEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAkocmV2aXNpb24gNDg3NzgpCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEpTVmFsdWUgSlNYTUxIdHRwUmVxdWVzdFVwbG9h
ZDo6YWRkRXZlbnQKICAgICBpZiAoIWxpc3RlbmVyLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogCi0gICAgaW1wbCgpLT5hZGRFdmVudExpc3RlbmVyKGFyZ3MuYXQo
MCkudG9TdHJpbmcoZXhlYyksIEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3Rl
bmVyKSwgZ2xvYmFsT2JqZWN0LCBmYWxzZSksIGFyZ3MuYXQoMikudG9Cb29sZWFuKGV4ZWMpKTsK
KyAgICBpbXBsKCktPmFkZEV2ZW50TGlzdGVuZXIoYXJncy5hdCgwKS50b1N0cmluZyhleGVjKSwg
SlNFdmVudExpc3RlbmVyOjpjcmVhdGUoYXNPYmplY3QobGlzdGVuZXIpLCBmYWxzZSksIGFyZ3Mu
YXQoMikudG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApA
QCAtNzgsNyArNzgsNyBAQCBKU1ZhbHVlIEpTWE1MSHR0cFJlcXVlc3RVcGxvYWQ6OnJlbW92ZUV2
CiAgICAgaWYgKCFsaXN0ZW5lci5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKIAotICAgIGltcGwoKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KDApLnRvU3Ry
aW5nKGV4ZWMpLCBKU0V2ZW50TGlzdGVuZXI6OmNyZWF0ZShhc09iamVjdChsaXN0ZW5lciksIGds
b2JhbE9iamVjdCwgZmFsc2UpLmdldCgpLCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7Cisg
ICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFyZ3MuYXQoMCkudG9TdHJpbmcoZXhlYyks
IEpTRXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGxpc3RlbmVyKSwgZmFsc2UpLmdldCgp
LCBhcmdzLmF0KDIpLnRvQm9vbGVhbihleGVjKSk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNw
cAkocmV2aXNpb24gNDg3NzgpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlz
dGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCiAKLSNpbmNsdWRlIDxydW50aW1lL0pTTG9j
ay5oPgotCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01
NCwyOSArNTIsMjUgQEAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdAog
ewogICAgIEFTU0VSVChub2RlKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IG5vZGUtPmRvY3VtZW50
KCktPmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBT
Y3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVyID0gZnJhbWUtPnNjcmlwdCgpOwotICAg
IGlmICghc2NyaXB0Q29udHJvbGxlci0+aXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT54c3NBdWRpdG9yKCktPmNhbkNyZWF0ZUlubGlu
ZUV2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0dHItPnZhbHVlKCkp
KSB7Ci0gICAgICAgIC8vIFRoaXMgc2NyaXB0IGlzIG5vdCBzYWZlIHRvIGV4ZWN1dGUuCi0gICAg
ICAgIHJldHVybiAwOwotICAgIH0KKyAgICBpbnQgbGluZU51bWJlciA9IDE7CisgICAgU3RyaW5n
IHNvdXJjZVVSTDsKICAgICAKLSAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0
Q29udHJvbGxlci0+Z2xvYmFsT2JqZWN0KCk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBh
YmxlIHRvIHByb3ZpZGUgYWNjdXJhdGUgc291cmNlIGluZm9ybWF0aW9uIGZvciBmcmFtZWxlc3Mg
ZG9jdW1lbnRzLCB0b28gKGUuZy4gZm9yIGltcG9ydGluZyBub2RlcyBmcm9tIFhNTEh0dHBSZXF1
ZXN0LnJlc3BvbnNlWE1MKS4KKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gbm9kZS0+ZG9jdW1lbnQo
KS0+ZnJhbWUoKSkgeworICAgICAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRDb250cm9sbGVy
ID0gZnJhbWUtPnNjcmlwdCgpOworICAgICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmlzRW5h
YmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgaWYgKCFzY3JpcHRDb250
cm9sbGVyLT54c3NBdWRpdG9yKCktPmNhbkNyZWF0ZUlubGluZUV2ZW50TGlzdGVuZXIoYXR0ci0+
bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0dHItPnZhbHVlKCkpKSB7CisgICAgICAgICAgICAvLyBU
aGlzIHNjcmlwdCBpcyBub3Qgc2FmZSB0byBleGVjdXRlLgorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIH0KIAotICAgIC8vIEVuc3VyZSB0aGF0ICdub2RlJyBoYXMgYSBKYXZhU2NyaXB0
IHdyYXBwZXIgdG8gbWFyayB0aGUgZXZlbnQgbGlzdGVuZXIgd2UncmUgY3JlYXRpbmcuCi0gICAg
ewotICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwotICAgICAgICAv
LyBGSVhNRTogU2hvdWxkIHBhc3MgdGhlIGdsb2JhbCBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRo
ZSBub2RlCi0gICAgICAgIHRvSlMoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9i
amVjdCwgbm9kZSk7CisgICAgICAgIGxpbmVOdW1iZXIgPSBzY3JpcHRDb250cm9sbGVyLT5ldmVu
dEhhbmRsZXJMaW5lTnVtYmVyKCk7CisgICAgICAgIHNvdXJjZVVSTCA9IG5vZGUtPmRvY3VtZW50
KCktPnVybCgpLnN0cmluZygpOwogICAgIH0KIAotICAgIHJldHVybiBKU0xhenlFdmVudExpc3Rl
bmVyOjpjcmVhdGUoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGV2ZW50UGFyYW1ldGVyTmFt
ZShub2RlLT5pc1NWR0VsZW1lbnQoKSksIGF0dHItPnZhbHVlKCksIGdsb2JhbE9iamVjdCwgbm9k
ZSwgc2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigpKTsKKyAgICByZXR1
cm4gSlNMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygp
LCBldmVudFBhcmFtZXRlck5hbWUobm9kZS0+aXNTVkdFbGVtZW50KCkpLCBhdHRyLT52YWx1ZSgp
LCBub2RlLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIpOwogfQogCiBQYXNzUmVmUHRyPEpTTGF6eUV2
ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJhbWUqIGZyYW1lLCBB
dHRyaWJ1dGUqIGF0dHIpCkBAIC04NCwxOSArNzgsMjEgQEAgUGFzc1JlZlB0cjxKU0xhenlFdmVu
dExpc3RlbmVyPiBjcmVhdGVBdAogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwog
CisgICAgaW50IGxpbmVOdW1iZXIgPSAxOworICAgIFN0cmluZyBzb3VyY2VVUkw7CisgICAgCiAg
ICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxlciA9IGZyYW1lLT5zY3JpcHQoKTsK
ICAgICBpZiAoIXNjcmlwdENvbnRyb2xsZXItPmlzRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4g
MDsKLSAgICAKKwogICAgIGlmICghc2NyaXB0Q29udHJvbGxlci0+eHNzQXVkaXRvcigpLT5jYW5D
cmVhdGVJbmxpbmVFdmVudExpc3RlbmVyKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBhdHRy
LT52YWx1ZSgpKSkgewogICAgICAgICAvLyBUaGlzIHNjcmlwdCBpcyBub3Qgc2FmZSB0byBleGVj
dXRlLgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAvLyAnZ2xvYmFsT2JqZWN0JyBp
cyB0aGUgSmF2YVNjcmlwdCB3cmFwcGVyIHRoYXQgd2lsbCBtYXJrIHRoZSBldmVudCBsaXN0ZW5l
ciB3ZSdyZSBjcmVhdGluZy4KLSAgICBKU0RPTVdpbmRvdyogZ2xvYmFsT2JqZWN0ID0gc2NyaXB0
Q29udHJvbGxlci0+Z2xvYmFsT2JqZWN0KCk7Ci0KLSAgICByZXR1cm4gSlNMYXp5RXZlbnRMaXN0
ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBldmVudFBhcmFtZXRlck5h
bWUoZnJhbWUtPmRvY3VtZW50KCktPmlzU1ZHRG9jdW1lbnQoKSksIGF0dHItPnZhbHVlKCksIGds
b2JhbE9iamVjdCwgMCwgc2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyTGluZU51bWJlcigp
KTsKKyAgICBsaW5lTnVtYmVyID0gc2NyaXB0Q29udHJvbGxlci0+ZXZlbnRIYW5kbGVyTGluZU51
bWJlcigpOworICAgIHNvdXJjZVVSTCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmco
KTsKKyAgICByZXR1cm4gSlNMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFt
ZSgpLnN0cmluZygpLCBldmVudFBhcmFtZXRlck5hbWUoZnJhbWUtPmRvY3VtZW50KCktPmlzU1ZH
RG9jdW1lbnQoKSksIGF0dHItPnZhbHVlKCksIDAsIHNvdXJjZVVSTCwgbGluZU51bWJlcik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9P
YmpDRXZlbnRMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9P
YmpDRXZlbnRMaXN0ZW5lci5oCShyZXZpc2lvbiA0ODc3OCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgT2JqQ0V2ZW50TGlzdGVuZXIoaWQgPERPTUV2
ZW50TGlzdGVuZXI+KTsKICAgICAgICAgdmlydHVhbCB+T2JqQ0V2ZW50TGlzdGVuZXIoKTsKIAot
ICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQqKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCopOwogCiAg
ICAgICAgIGlkIDxET01FdmVudExpc3RlbmVyPiBtX2xpc3RlbmVyOwogICAgIH07CkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL29iamMvT2JqQ0V2ZW50TGlzdGVuZXIubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL09iakNFdmVudExpc3RlbmVyLm1tCShyZXZpc2lvbiA0ODc3
OCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9PYmpDRXZlbnRMaXN0ZW5lci5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBPYmpDRXZlbnRMaXN0ZW5lcjo6fk9iakNFdmVudExp
c3RlbmVyKCkKICAgICBbbV9saXN0ZW5lciByZWxlYXNlXTsKIH0KIAotdm9pZCBPYmpDRXZlbnRM
aXN0ZW5lcjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQordm9pZCBPYmpDRXZlbnRMaXN0ZW5l
cjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkKIHsK
ICAgICBbbV9saXN0ZW5lciBoYW5kbGVFdmVudDpraXQoZXZlbnQpXTsKIH0KSW5kZXg6IFdlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ09NLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ09NLnBtCShyZXZpc2lvbiA0ODc3
NykKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yQ09NLnBtCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjYsOSArMzI2LDggQEAgc3ViIEFkZEluY2x1ZGVzRm9yVHlwZUluQ1BQ
SW1wbGVtZW50YXRpbwogCiBzdWIgR2V0QWRkaXRpb25hbEludGVyZmFjZXMKIHsKKyAgICAjIFRo
aXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLCBidXQgaXQgc3RheXMgaGVyZSBmb3IgZnV0dXJlIG11
bHRpcGxlIGluaGVyaXRhbmNlIHN1cHBvcnQuCiAgICAgbXkgJHR5cGUgPSAkY29kZUdlbmVyYXRv
ci0+U3RyaXBNb2R1bGUoc2hpZnQpOwotCi0gICAgcmV0dXJuICgiRXZlbnRUYXJnZXQiKSBpZiAk
dHlwZSBlcSAiTm9kZSI7CiAgICAgcmV0dXJuICgpOwogfQogCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDQ4Nzc4KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2luZyBjb3B5KQpA
QCAtMTI5NCw3ICsxMjk0LDExIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtc
biIpOwogICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbENs
YXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihjYXN0ZWRUaGlzLT5p
bXBsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmIChFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IGltcC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5h
bWUoKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
ICAgICBpZiAoSlNPYmplY3QqIGpzRnVuY3Rpb24gPSBsaXN0ZW5lci0+anNGdW5jdGlvbigpKVxu
Iik7CisgICAgICAgICAgICAgICAgICAgIGlmICgkaW1wbENsYXNzTmFtZSBlcSAiRG9jdW1lbnQi
IHx8ICRpbXBsQ2xhc3NOYW1lIGVxICJXb3JrZXJDb250ZXh0IiB8fCAkaW1wbENsYXNzTmFtZSBl
cSAiU2hhcmVkV29ya2VyQ29udGV4dCIgfHwgJGltcGxDbGFzc05hbWUgZXEgIkRlZGljYXRlZFdv
cmtlckNvbnRleHQiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAgICAgaWYgKEpTT2JqZWN0KiBqc0Z1bmN0aW9uID0gbGlzdGVuZXItPmpzRnVuY3Rp
b24oaW1wKSlcbiIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmIChKU09iamVjdCoganNG
dW5jdGlvbiA9IGxpc3RlbmVyLT5qc0Z1bmN0aW9uKGltcC0+c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSlcbiIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIGpzRnVuY3Rpb247XG4iKTsKICAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBqc051bGwoKTtcbiIp
OwpJbmRleDogV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXIuaAkocmV2aXNpb24gNDg3NzgpCisrKyBXZWJDb3JlL2RvbS9F
dmVudExpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiAgICAgY2xhc3MgRXZlbnQ7CiAKICAgICBjbGFzcyBFdmVudExpc3RlbmVyIDog
cHVibGljIFJlZkNvdW50ZWQ8RXZlbnRMaXN0ZW5lcj4gewpAQCAtNDQsMTMgKzQ1LDEzIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwg
fkV2ZW50TGlzdGVuZXIoKSB7IH0KICAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29u
c3QgRXZlbnRMaXN0ZW5lciYpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50
KEV2ZW50KikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIEV2ZW50KikgPSAwOwogICAgICAgICAvLyBSZXR1cm4gdHJ1ZSB0byBp
bmRpY2F0ZSB0aGF0IHRoZSBlcnJvciBpcyBoYW5kbGVkLgotICAgICAgICB2aXJ0dWFsIGJvb2wg
cmVwb3J0RXJyb3IoY29uc3QgU3RyaW5nJiAvKm1lc3NhZ2UqLywgY29uc3QgU3RyaW5nJiAvKnVy
bCovLCBpbnQgLypsaW5lTnVtYmVyKi8pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1
YWwgYm9vbCByZXBvcnRFcnJvcihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5n
JiAvKm1lc3NhZ2UqLywgY29uc3QgU3RyaW5nJiAvKnVybCovLCBpbnQgLypsaW5lTnVtYmVyKi8p
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCB3YXNDcmVhdGVkRnJvbU1h
cmt1cCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICNpZiBVU0UoSlNDKQotICAgICAgICB2
aXJ0dWFsIEpTQzo6SlNPYmplY3QqIGpzRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiAwOyB9Cisg
ICAgICAgIHZpcnR1YWwgSlNDOjpKU09iamVjdCoganNGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KikgY29uc3QgeyByZXR1cm4gMDsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFya0pT
RnVuY3Rpb24oSlNDOjpNYXJrU3RhY2smKSB7IH0KICNlbmRpZgogCkluZGV4OiBXZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudExpc3Rl
bmVyLmlkbAkocmV2aXNpb24gNDg3NzcpCisrKyBXZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsOCBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICBp
bnRlcmZhY2UgWwogICAgICAgICBOb1N0YXRpY1RhYmxlcywKICAgICAgICAgT2JqQ1Byb3RvY29s
LAorICAgICAgICBQdXJlSW50ZXJmYWNlLAogICAgICAgICBJbnRlcmZhY2VVVUlEPUIwNEYyQUUz
LTcxRTItNGViZS1BQkZFLUVGNDkzODM1NDA4MiwKLSAgICAgICAgSW1wbGVtZW50YXRpb25VVUlE
PURERkREMzQyLUE3OEItNGYxOS04RjMyLUE1REY1MUI1NkUwOAogICAgIF0gRXZlbnRMaXN0ZW5l
ciB7CiAgICAgICAgIHZvaWQgICAgICAgICAgICAgICBoYW5kbGVFdmVudChpbiBFdmVudCBldnQp
OwogICAgIH07CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCShyZXZpc2lvbiA0ODc3OCkKKysrIFdlYkNv
cmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY5LDcgKzI2OSw3IEBA
IGJvb2wgRXZlbnRUYXJnZXQ6OmZpcmVFdmVudExpc3RlbmVycyhFdmUKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAvLyBUbyBtYXRjaCBNb3ppbGxhLCB0aGUgQVRfVEFSR0VUIHBoYXNl
IGZpcmVzIGJvdGggY2FwdHVyaW5nIGFuZCBidWJibGluZwogICAgICAgICAvLyBldmVudCBsaXN0
ZW5lcnMsIGV2ZW4gdGhvdWdoIHRoYXQgdmlvbGF0ZXMgc29tZSB2ZXJzaW9ucyBvZiB0aGUgRE9N
IHNwZWMuCi0gICAgICAgIHJlZ2lzdGVyZWRMaXN0ZW5lci5saXN0ZW5lci0+aGFuZGxlRXZlbnQo
ZXZlbnQpOworICAgICAgICByZWdpc3RlcmVkTGlzdGVuZXIubGlzdGVuZXItPmhhbmRsZUV2ZW50
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZXZlbnQpOwogICAgIH0KICAgICBkLT5maXJpbmdF
dmVudEVuZEl0ZXJhdG9ycy5yZW1vdmVMYXN0KCk7CiAKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAJKHJldmlzaW9uIDQ4Nzc4KQorKysgV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNyArMTIzLDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c3RvcExpc3RlbmluZyhEbwogICAgIG1fZG9jdW1l
bnRzLnJlbW92ZShkb2MpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpoYW5kbGVFdmVu
dChFdmVudCogZXZlbnQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoYW5kbGVFdmVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KQogewogICAgIEF0b21pY1N0cmluZyB0
eXBlID0gZXZlbnQtPnR5cGUoKTsKICAgICBOb2RlKiBub2RlID0gZXZlbnQtPnRhcmdldCgpLT50
b05vZGUoKTsKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAkocmV2aXNp
b24gNDg3NzgpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NSw3ICs4NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dm9pZCBzdGFydExpc3RlbmluZyhEb2N1bWVudCogZG9jdW1lbnQpOwogICAgICAgICB2b2lkIHN0
b3BMaXN0ZW5pbmcoRG9jdW1lbnQqIGRvY3VtZW50KTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpOwogCiAgICAgICAgIHR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIGxvbmc+IE5vZGVUb0lkTWFwOwogICAgICAgICBs
b25nIGJpbmQoTm9kZSogbm9kZSwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKSW5kZXg6IFdlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAkocmV2
aXNpb24gNDg3NzgpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NU3RvcmFnZVJlc291cmNlOjpzdGFydFIKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9N
U3RvcmFnZVJlc291cmNlOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQpCit2b2lkIEluc3BlY3Rv
ckRPTVN0b3JhZ2VSZXNvdXJjZTo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV2ZW50KiBldmVudCkKIHsKICAgICBBU1NFUlQobV9mcm9udGVuZCk7CiAgICAgQVNTRVJUKGV2
ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQgPT0gZXZlbnQtPnR5cGUoKSk7CkluZGV4OiBXZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaAkocmV2aXNpb24g
NDg3NzgpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZvaWQgdW5iaW5kKCk7CiAgICAgICAgIHZvaWQgc3RhcnRSZXBvcnRpbmdDaGFuZ2Vz
VG9Gcm9udGVuZCgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChFdmVudCop
OworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIEV2ZW50Kik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50
TGlzdGVuZXImIGxpc3RlbmVyKTsKIAogICAgICAgICBib29sIGlzU2FtZUhvc3RBbmRUeXBlKEZy
YW1lKiwgYm9vbCBpc0xvY2FsU3RvcmFnZSkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9J
bWFnZURvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9JbWFnZURvY3Vt
ZW50LmNwcAkocmV2aXNpb24gNDg3NzgpCisrKyBXZWJDb3JlL2xvYWRlci9JbWFnZURvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CiAKICAg
ICBJbWFnZURvY3VtZW50KiBtX2RvYzsKIH07CkBAIC0zNTgsNyArMzU4LDcgQEAgYm9vbCBJbWFn
ZURvY3VtZW50OjpzaG91bGRTaHJpbmtUb0ZpdCgpIAogCiAvLyAtLS0tLS0tLQogCi12b2lkIElt
YWdlRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoRXZlbnQqIGV2ZW50KQordm9pZCBJbWFnZUV2
ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCog
ZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLnJlc2l6ZUV2
ZW50KQogICAgICAgICBtX2RvYy0+d2luZG93U2l6ZUNoYW5nZWQoKTsKSW5kZXg6IFdlYkNvcmUv
c3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9z
dmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAkocmV2aXNpb24gNDg3NzgpCisrKyBXZWJD
b3JlL3N2Zy9hbmltYXRpb24vU1ZHU01JTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Nyw3ICs4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIG1fZXZlbnRCYXNlLT5hZGRFdmVudExpc3Rl
bmVyKG1fY29uZGl0aW9uLT5tX25hbWUsIHRoaXMsIGZhbHNlKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgaGFuZGxlRXZlbnQoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50Kik7CiAKICAgICBTVkdTTUlMRWxlbWVu
dCogbV9hbmltYXRpb247CiAgICAgU1ZHU01JTEVsZW1lbnQ6OkNvbmRpdGlvbiogbV9jb25kaXRp
b247CkBAIC0xMDMsNyArMTAzLDcgQEAgYm9vbCBDb25kaXRpb25FdmVudExpc3RlbmVyOjpvcGVy
YXRvcj09KAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBDb25kaXRpb25FdmVudExpc3Rl
bmVyOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQpIAordm9pZCBDb25kaXRpb25FdmVudExpc3Rl
bmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KSAK
IHsKICAgICBtX2FuaW1hdGlvbi0+aGFuZGxlQ29uZGl0aW9uRXZlbnQoZXZlbnQsIG1fY29uZGl0
aW9uKTsKIH0KSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAJKHJldmlzaW9uIDQ4Nzc4
KQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzMsNyArMjMzLDcgQEAgdm9pZCBXb3JrZXJDb250ZXh0OjpyZXBvcnRFeGNlcHRpb24oY29u
cwogewogICAgIGJvb2wgZXJyb3JIYW5kbGVkID0gZmFsc2U7CiAgICAgaWYgKG9uZXJyb3IoKSkK
LSAgICAgICAgZXJyb3JIYW5kbGVkID0gb25lcnJvcigpLT5yZXBvcnRFcnJvcihlcnJvck1lc3Nh
Z2UsIHNvdXJjZVVSTCwgbGluZU51bWJlcik7CisgICAgICAgIGVycm9ySGFuZGxlZCA9IG9uZXJy
b3IoKS0+cmVwb3J0RXJyb3IodGhpcywgZXJyb3JNZXNzYWdlLCBzb3VyY2VVUkwsIGxpbmVOdW1i
ZXIpOwogCiAgICAgaWYgKCFlcnJvckhhbmRsZWQpCiAgICAgICAgIHRocmVhZCgpLT53b3JrZXJS
ZXBvcnRpbmdQcm94eSgpLnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChlcnJvck1lc3NhZ2Us
IGxpbmVOdW1iZXIsIHNvdXJjZVVSTCk7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gNDg4NTEpCisrKyBXZWJL
aXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA5LTA5
LTI4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9uY2xpY2sgbm90IGZpcmVkIGZvciBh
biBlbGVtZW50IGNvcGllZCB3aXRoIGNsb25lQ29udGVudHMoKSBvciBjbG9uZU5vZGUoKQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjUxMzAKKworICAg
ICAgICAqIERPTUNyZWF0ZUluc3RhbmNlLmNwcDogR0VOX0RPTUV2ZW50TGlzdGVuZXIgaXMgYSBw
dXJlIGludGVyZmFjZSBub3cuCisKKyAgICAgICAgKiBXZWJLaXQudmNwcm9qL1dlYktpdC52Y3By
b2o6IFJlbW92ZWQgR0VOX0RPTUV2ZW50TGlzdGVuZXIuY3BwLgorCiAyMDA5LTA5LTI1ICBEYXJp
biBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTdGV2ZSBG
YWxrZW5idXJnLgpJbmRleDogV2ViS2l0L3dpbi9ET01DcmVhdGVJbnN0YW5jZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L3dpbi9ET01DcmVhdGVJbnN0YW5jZS5jcHAJKHJldmlzaW9uIDQ4Nzc3
KQorKysgV2ViS2l0L3dpbi9ET01DcmVhdGVJbnN0YW5jZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDcgKzcyLDYgQEAKICNpbmNsdWRlICJHRU5fRE9NU3R5bGVTaGVldC5oIgogI2luY2x1ZGUg
IkdFTl9ET01TdHlsZVNoZWV0TGlzdC5oIgogI2luY2x1ZGUgIkdFTl9ET01FdmVudC5oIgotI2lu
Y2x1ZGUgIkdFTl9ET01FdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiR0VOX0RPTUV2ZW50Lmgi
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIApAQCAtMjQ5LDcgKzI0OCw2IEBAIENSRUFURV9P
TkxZX1NFTEYoTm9kZUxpc3QpCiAKIC8vIEZJWE1FOiBBZGQgdGhlIHN1YmNsYXNzZXMgZm9yIEV2
ZW50IHdoZW4gdGhleSBnZXQgZ2VuZXJhdGVkLgogQ1JFQVRFX09OTFlfU0VMRihFdmVudCkKLUNS
RUFURV9PTkxZX1NFTEYoRXZlbnRMaXN0ZW5lcikKIAogCiAvLyBDU1MKSW5kZXg6IFdlYktpdC93
aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4v
V2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qCShyZXZpc2lvbiA0ODc3NykKKysrIFdlYktpdC93
aW4vV2ViS2l0LnZjcHJvai9XZWJLaXQudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNDc4LDEw
ICsxNDc4LDYgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQotCQkJCQlSZWxh
dGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcV2ViS2l0XERlcml2ZWRTb3VyY2VzXEdF
Tl9ET01FdmVudExpc3RlbmVyLmNwcCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8Rmls
ZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXFdlYktpdFxEZXJp
dmVkU291cmNlc1xHRU5fRE9NRXZlbnRMaXN0ZW5lci5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+
DQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNDg3NzgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0wOS0yOCAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBPbmNsaWNrIG5vdCBmaXJlZCBmb3IgYW4gZWxlbWVudCBjb3BpZWQgd2l0
aCBjbG9uZUNvbnRlbnRzKCkgb3IgY2xvbmVOb2RlKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI1MTMwCisKKyAgICAgICAgKiBmYXN0L2V2ZW50cy9h
dHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTItZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVu
ZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVz
cy1kb2MtY29udGV4dC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRz
L2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25l
ZC1mcm9tLWZyYW1lbGVzcy1kb2MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy54aHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJh
Y3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZy
YW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZXZlbnRz
L2F0dHJpYnV0ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlz
dGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0Lmh0bWw6IEFkZGVkLgor
CiAyMDA5LTA5LTI1ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJldmVydGluZyByNDg3NjcsIGFzIGl0IGJyb2tlIFdpbmRvd3MgYnVpbGQgaW4gYSBub24t
dHJpdmlhbCB3YXkuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlz
dGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTItZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1j
bG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtMi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVk
LWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1
dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xv
bmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LTIuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFt
ZWxlc3MtZG9jLWNvbnRleHQtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACis8
aHRtbD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxpZnJhbWUgc3JjPSdkYXRhOnRleHQvaHRt
bCw8YSBpZD0iYSIgaHJlZj0iIyIgb25jbGljaz0iZG9jdW1lbnQud3JpdGUod2luZG93ICE9IHRv
cCA/ICZhcG9zOzxwPkZBSUw8L3A+JmFwb3M7IDogJmFwb3M7PHA+UEFTUzwvcD4mYXBvczspOyBy
ZXR1cm4gZmFsc2UiPmxpbms8L2E+Jz48L2lmcmFtZT4KKzxzY3JpcHQ+CitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVu
Y3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGRvYyA9IGZyYW1lc1swXS5kb2N1bWVudDsKKyAgICB2
YXIgcmFuZ2U9ZG9jLmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRz
KGRvYy5ib2R5KTsKKyAgICB2YXIgZnJhZz1yYW5nZS5jbG9uZUNvbnRlbnRzKCk7CisgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFnKTsKKworICAgIGZyYW1lc1swXS5sb2NhdGlvbiA9
ICJkYXRhOnRleHQvaHRtbCwiOworICAgIGZyYW1lc1swXS5mcmFtZUVsZW1lbnQub25sb2FkID0g
dGVzdDI7Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAgICB2YXIgZXZlbnQgPSB0b3AuZG9j
dW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTsKKyAgICBldmVudC5pbml0RXZlbnQoJ2Ns
aWNrJywgdHJ1ZSwgdHJ1ZSk7CisgICAgdG9wLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdhJylbMF0uZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwor
fQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRy
aWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1s
aXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2
ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItY2xvbmVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxp
c3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1m
cm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3
IEBACis8aHRtbD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxpZnJhbWUgc3JjPSdkYXRhOnRl
eHQvaHRtbCw8YSBpZD0iYSIgaHJlZj0iIyIgb25jbGljaz0iZG9jdW1lbnQud3JpdGUod2luZG93
ICE9IHRvcCA/ICZhcG9zOzxwPkZBSUw8L3A+JmFwb3M7IDogJmFwb3M7PHA+UEFTUzwvcD4mYXBv
czspOyByZXR1cm4gZmFsc2UiPmxpbms8L2E+Jz48L2lmcmFtZT4KKzxzY3JpcHQ+CitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGRvYyA9IGZyYW1lc1swXS5kb2N1bWVudDsK
KyAgICB2YXIgcmFuZ2U9ZG9jLmNyZWF0ZVJhbmdlKCk7CisgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNv
bnRlbnRzKGRvYy5ib2R5KTsKKyAgICB2YXIgZnJhZz1yYW5nZS5jbG9uZUNvbnRlbnRzKCk7Cisg
ICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmcmFnKTsKKworICAgIHZhciBldmVudCA9IHRv
cC5kb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpOworICAgIGV2ZW50LmluaXRFdmVu
dCgnY2xpY2snLCB0cnVlLCB0cnVlKTsKKyAgICB0b3AuZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoJ2EnKVswXS5kaXNwYXRjaEV2ZW50KGV2ZW50KTsKKworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2Mt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJp
YnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1j
bG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0IEBACitBTEVSVDogU1VDQ0VTUworVGVzdCB0aGF0IGFuIGVsZW1lbnQgdGhhdCB3YXMg
aW1wb3J0ZWQgZnJvbSBhIGZyYW1lbGVzcyBkb2N1bWVudCBoYXMgZnVuY3Rpb25hbCBhdHRyaWJ1
dGUgZXZlbnQgbGlzdGVuZXJzLiBTaG91bGQgYWxlcnQgIlNVQ0NFU1MiLgorCitMaW5rIChjbGlj
a2VkIGF1dG9tYXRpY2FsbHkpLkVsZW1lbnQub25jbGljayByZXN1bHQgaXMgY29ycmVjdC4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJv
bS1mcmFtZWxlc3MtZG9jLnhodG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZXZl
bnRzL2F0dHJpYnV0ZS1saXN0ZW5lci1jbG9uZWQtZnJvbS1mcmFtZWxlc3MtZG9jLnhodG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVy
LWNsb25lZC1mcm9tLWZyYW1lbGVzcy1kb2MueGh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjMgQEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxib2R5
PgorPHA+VGVzdCB0aGF0IGFuIGVsZW1lbnQgdGhhdCB3YXMgaW1wb3J0ZWQgZnJvbSBhIGZyYW1l
bGVzcyBkb2N1bWVudCBoYXMgZnVuY3Rpb25hbCBhdHRyaWJ1dGUgZXZlbnQgbGlzdGVuZXJzLiBT
aG91bGQgYWxlcnQgIlNVQ0NFU1MiLjwvcD4KKzxzY3JpcHQ+Cis8IVtDREFUQVsKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIgZG9jID0gKG5ldyBET01QYXJzZXIpLnBhcnNlRnJv
bVN0cmluZygnPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPjxhIGlk
PSJhIiBocmVmPSJqYXZhc2NyaXB0OmFsZXJ0KFwnRkFJTFwnKSIgb25jbGljaz0iYWxlcnQoXCdT
VUNDRVNTXCcpOyByZXR1cm4gZmFsc2UiPkxpbmsgKGNsaWNrZWQgYXV0b21hdGljYWxseSkuPC9h
PjwvaHRtbD4nLCAiYXBwbGljYXRpb24veGh0bWwreG1sIik7CisKKyAgICB2YXIgYSA9IGRvYy5k
b2N1bWVudEVsZW1lbnQuZmlyc3RDaGlsZC5jbG9uZU5vZGUodHJ1ZSk7CisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXS5hcHBlbmRDaGlsZChhKTsKKworICAgIHZh
ciBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7CisgICAgZXZlbnQu
aW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdhJylbMF0uZGlzcGF0Y2hFdmVudChldmVudCk7CisKKyAgICBpZiAoMCA9PSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpWzBdLm9uY2xpY2sudG9TdHJpbmcoKS5p
bmRleE9mKCJmdW5jdGlvbiBvbmNsaWNrIikpCisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIkVsZW1lbnQub25jbGljayByZXN1bHQgaXMg
Y29ycmVjdC4iKSk7CitdXT4KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZy
YW1lbGVzcy1kb2MtY29udGV4dC0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVs
ZXNzLWRvYy1jb250ZXh0LTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVz
cy1kb2MtY29udGV4dC0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAor
UEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4
dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9t
LWZyYW1lbGVzcy1kb2MtY29udGV4dC0yLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNz
LWRvYy1jb250ZXh0LTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+
Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8aWZyYW1lIHNyYz0nZGF0YTp0ZXh0L2h0bWwsPGEg
aWQ9ImEiIGhyZWY9IiMiIG9uY2xpY2s9ImRvY3VtZW50LndyaXRlKHdpbmRvdyAhPSB0b3AgPyAm
YXBvczs8cD5GQUlMPC9wPiZhcG9zOyA6ICZhcG9zOzxwPlBBU1M8L3A+JmFwb3M7KTsgcmV0dXJu
IGZhbHNlIj5saW5rPC9hPic+PC9pZnJhbWU+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
KyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9u
IHRlc3QoKQoreworICAgIHZhciBkb2MgPSBmcmFtZXNbMF0uZG9jdW1lbnQ7CisgICAgdmFyIHJh
bmdlPWRvYy5jcmVhdGVSYW5nZSgpOworICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhkb2Mu
Ym9keSk7CisgICAgdmFyIGZyYWc9cmFuZ2UuZXh0cmFjdENvbnRlbnRzKCk7CisgICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChmcmFnKTsKKworICAgIGZyYW1lc1swXS5sb2NhdGlvbiA9ICJk
YXRhOnRleHQvaHRtbCwiOworICAgIGZyYW1lc1swXS5mcmFtZUVsZW1lbnQub25sb2FkID0gdGVz
dDI7Cit9CisKK2Z1bmN0aW9uIHRlc3QyKCkKK3sKKyAgICB2YXIgZXZlbnQgPSB0b3AuZG9jdW1l
bnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTsKKyAgICBldmVudC5pbml0RXZlbnQoJ2NsaWNr
JywgdHJ1ZSwgdHJ1ZSk7CisgICAgdG9wLmRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdh
JylbMF0uZGlzcGF0Y2hFdmVudChldmVudCk7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50
cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9hdHRy
aWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRvYy1jb250ZXh0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL2F0dHJpYnV0
ZS1saXN0ZW5lci1leHRyYWN0ZWQtZnJvbS1mcmFtZWxlc3MtZG9jLWNvbnRleHQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2V2ZW50cy9hdHRyaWJ1dGUtbGlzdGVuZXItZXh0cmFjdGVkLWZyb20tZnJhbWVsZXNzLWRv
Yy1jb250ZXh0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0
cmlidXRlLWxpc3RlbmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvYXR0cmlidXRlLWxpc3Rl
bmVyLWV4dHJhY3RlZC1mcm9tLWZyYW1lbGVzcy1kb2MtY29udGV4dC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxpZnJh
bWUgc3JjPSdkYXRhOnRleHQvaHRtbCw8YSBpZD0iYSIgaHJlZj0iIyIgb25jbGljaz0iZG9jdW1l
bnQud3JpdGUod2luZG93ICE9IHRvcCA/ICZhcG9zOzxwPkZBSUw8L3A+JmFwb3M7IDogJmFwb3M7
PHA+UEFTUzwvcD4mYXBvczspOyByZXR1cm4gZmFsc2UiPmxpbms8L2E+Jz48L2lmcmFtZT4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRV
bnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIGRvYyA9IGZyYW1l
c1swXS5kb2N1bWVudDsKKyAgICB2YXIgcmFuZ2U9ZG9jLmNyZWF0ZVJhbmdlKCk7CisgICAgcmFu
Z2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGRvYy5ib2R5KTsKKyAgICB2YXIgZnJhZz1yYW5nZS5leHRy
YWN0Q29udGVudHMoKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGZyYWcpOworCisg
ICAgdmFyIGV2ZW50ID0gdG9wLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7Cisg
ICAgZXZlbnQuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpOworICAgIHRvcC5kb2N1bWVu
dC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpWzBdLmRpc3BhdGNoRXZlbnQoZXZlbnQpOworCisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="21486"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>