<?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>194433</bug_id>
          
          <creation_ts>2019-02-08 04:47:28 -0800</creation_ts>
          <short_desc>Compute fixed position rect based on scrolling tree view of the current scroll position</short_desc>
          <delta_ts>2019-03-29 03:15:33 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Scrolling</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>195050</dependson>
          <blocked>194289</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1504153</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-08 04:47:28 -0800</bug_when>
    <thetext>We currently use the scroll position at the last layout and then try to apply adjustments based on layer position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504154</commentid>
    <comment_count>1</comment_count>
      <attachid>361500</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-08 05:20:20 -0800</bug_when>
    <thetext>Created attachment 361500
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504156</commentid>
    <comment_count>2</comment_count>
      <attachid>361501</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-08 05:23:27 -0800</bug_when>
    <thetext>Created attachment 361501
test case with busy main thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504157</commentid>
    <comment_count>3</comment_count>
      <attachid>361502</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-08 05:25:50 -0800</bug_when>
    <thetext>Created attachment 361502
test case with busy main thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504161</commentid>
    <comment_count>4</comment_count>
      <attachid>361503</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-08 05:50:02 -0800</bug_when>
    <thetext>Created attachment 361503
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504168</commentid>
    <comment_count>5</comment_count>
      <attachid>361504</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-08 06:53:43 -0800</bug_when>
    <thetext>Created attachment 361504
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504169</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-02-08 06:55:36 -0800</bug_when>
    <thetext>Attachment 361504 did not pass style-queue:


ERROR: LayoutTests/ChangeLog:12:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Total errors found: 1 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504199</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-02-08 10:00:23 -0800</bug_when>
    <thetext>Does this fix &lt;rdar://problem/47755552&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504211</commentid>
    <comment_count>8</comment_count>
      <attachid>361515</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-08 10:30:10 -0800</bug_when>
    <thetext>Created attachment 361515
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504565</commentid>
    <comment_count>9</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-02-09 00:34:32 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #7)
&gt; Does this fix &lt;rdar://problem/47755552&gt;?

No, this patch doesn&apos;t affect the main frame. That still only updates the scroll position on layer tree commit (not synchronizing to UIScrollView) and may use stale position.

It is bit of a separate issue and probably better handled separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1504953</commentid>
    <comment_count>10</comment_count>
      <attachid>361515</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-02-11 11:41:03 -0800</bug_when>
    <thetext>Comment on attachment 361515
patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        This patch removes code that that passes the last committed scroll position via the state tree and modifies its only
&gt; +        client (in ScrollingTreeScrollingNodeDelegateIOS) to use the UIScrollView scrolling position.

How does this work with FixedPositionViewportConstraints::layerPositionForViewportRect((), which uses viewportRectAtLastLayout and layerPositionAtLastLayout, which you haven&apos;t changed? ScrollingTreeFrameScrollingNode::fixedPositionRect() uses the committed scroll position, which should match viewportRectAtLastLayout. Or maybe these are never used in the same code path?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508507</commentid>
    <comment_count>11</comment_count>
      <attachid>361515</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-02-21 07:39:17 -0800</bug_when>
    <thetext>Comment on attachment 361515
patch

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

&gt; Source/WebCore/ChangeLog:14
&gt; +        Test by Frederic Wang.

@Antii: Now that you fixed bug 194886, please don&apos;t forget to import the three remaining tests from programmatic-scroll-iframe.html, attachment 359723:

// This checks scrolling behavior for position &quot;fixed&quot; and &quot;sticky&quot;.
document.getElementById(&quot;positionFixed&quot;).contentWindow.window.scrollTo(100, 100);
document.getElementById(&quot;positionStickyBegin&quot;).contentWindow.window.scrollTo(0, 50);
document.getElementById(&quot;positionStickyEnd&quot;).contentWindow.window.scrollTo(0, 150);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1508512</commentid>
    <comment_count>12</comment_count>
      <attachid>362606</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-02-21 08:05:27 -0800</bug_when>
    <thetext>Created attachment 362606
Patch (tests)

Just moving my old tests here, so that they are not lost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1510050</commentid>
    <comment_count>13</comment_count>
      <attachid>362990</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-02-26 09:27:24 -0800</bug_when>
    <thetext>Created attachment 362990
Patch (tests)

Tentative to split new tests into independent files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521319</commentid>
    <comment_count>14</comment_count>
      <attachid>362990</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-03-26 09:56:37 -0700</bug_when>
    <thetext>Comment on attachment 362990
Patch (tests)

These all pass other than fast/scrolling/ios/programmatic-scroll-iframe-012.html which times out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521677</commentid>
    <comment_count>15</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-03-27 08:01:39 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #14)
&gt; Comment on attachment 362990 [details]
&gt; Patch (tests)
&gt; 
&gt; These all pass other than
&gt; fast/scrolling/ios/programmatic-scroll-iframe-012.html which times out.

Do you know if it&apos;s a bug in our code (e.g. bug 196290) or a bug in the test?
Also, do we still want to take these tests now that we have new APIs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522418</commentid>
    <comment_count>16</comment_count>
      <attachid>362990</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-03-29 03:14:23 -0700</bug_when>
    <thetext>Comment on attachment 362990
Patch (tests)

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

&gt; LayoutTests/fast/scrolling/ios/programmatic-scroll-iframe-012.html:38
&gt; +            &lt;/body&gt;&quot; onload=&quot;newFrameLoaded()&quot;&gt;

OK, this is the silly mistake: it should be runTest()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522419</commentid>
    <comment_count>17</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2019-03-29 03:15:33 -0700</bug_when>
    <thetext>(In reply to Frédéric Wang (:fredw) from comment #15)
&gt; (In reply to Simon Fraser (smfr) from comment #14)
&gt; &gt; Comment on attachment 362990 [details]
&gt; &gt; Patch (tests)
&gt; &gt; 
&gt; &gt; These all pass other than
&gt; &gt; fast/scrolling/ios/programmatic-scroll-iframe-012.html which times out.
&gt; 
&gt; Do you know if it&apos;s a bug in our code (e.g. bug 196290) or a bug in the test?
&gt; Also, do we still want to take these tests now that we have new APIs?

I&apos;ll move the tests to bug 196394 as it seems we no longer need Antti&apos;s patch to make them pass.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361500</attachid>
            <date>2019-02-08 05:20:20 -0800</date>
            <delta_ts>2019-02-08 05:50:02 -0800</delta_ts>
            <desc>patch</desc>
            <filename>frame-fixed-ios.patch</filename>
            <type>text/plain</type>
            <size>46844</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTAyLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb21wdXRlIGZpeGVkIHBvc2l0
aW9uIHJlY3QgYmFzZWQgb24gc2Nyb2xsaW5nIHRyZWUgdmlldyBvZiB0aGUgY3VycmVudCBzY3Jv
bGwgcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDQzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEl0IHNob3VsZCBiZSBzY3JvbGxpbmcgdHJlZXMgcmVzcG9uc2liaWxpdHkgdG8gaW5jb3Jw
b3JhdGUgc2Nyb2xsIHBvc2l0aW9ucyB3aGVuIGNvbXB1dGluZyBmaW5hbCBwb3NpdGlvbnMgZm9y
IGxheWVycy4KKyAgICAgICAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gYXJjaGl2ZSBnbGl0Y2gt
ZnJlZSBwb3NpdGlvbmluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgY29kZSB0aGF0
IHRoYXQgcGFzc2VzIHRoZSBsYXN0IGNvbW1pdHRlZCBzY3JvbGwgcG9zaXRpb24gdmlhIHRoZSBz
dGF0ZSB0cmVlIGFuZCBtb2RpZmllcyBpdHMgb25seQorICAgICAgICBjbGllbnQgKGluIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MpIHRvIHVzZSB0aGUgVUlTY3JvbGxWaWV3
IHNjcm9sbGluZyBwb3NpdGlvbi4KKworICAgICAgICBUZXN0IGJ5IEZyZWRlcmljIFdhbmcuCisK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sbGlu
Z05vZGVHZW9tZXRyeSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0QWxsUHJvcGVydGllc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQ
b3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNjcm9sbFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZSk6CisKKyAgICAgICAgUmVtb3ZlIHRoZSAnY3VtdWxhdGl2ZURlbHRhJyBw
YXJhbWV0ZXIuIEl0IGlzIG5vdCBuZWVkZWQgc2luY2UgJ2ZpeGVkUG9zaXRpb25SZWN0JyBpcyBj
b3JyZWN0IHdpdGhvdXQgYWRqdXN0bWVudHMuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmZpeGVkUG9zaXRpb25SZWN0KToKKworICAg
ICAgICBDb21wdXRlIGJhc2VkIG9uIHNjcm9sbGluZyB0cmVlIHZpZXcgb2YgdGhlIHNjcm9sbGlu
ZyBwb3NpdGlvbi4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2Rl
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6bGFzdENvbW1pdHRlZFNjcm9sbFBv
c2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4
ZWROb2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0
b3JDaGFuZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlSU9TLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0Fm
dGVyU2Nyb2xsKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24pOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFj
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWM6OnNl
dFNjcm9sbExheWVyUG9zaXRpb24pOgorCiAyMDE5LTAyLTA4ICBFcmljIExpYW5nICA8ZXJpY2xp
YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBXaGVuIHBlcmZvcm1pbmcgQVhQcmVzcywgY2hlY2sg
dG8gc2VlIGlmIHRoZSBtZW51IGxpc3QgaXMgZGlzYWJsZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNiw3
ICs2MzYsNiBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sCiAKICAg
ICBzY3JvbGxpbmdOb2RlLnNldFBhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJlY3Qoc2Nyb2xsaW5n
R2VvbWV0cnkucGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7CiAgICAgc2Nyb2xsaW5nTm9k
ZS5zZXRTY3JvbGxPcmlnaW4oc2Nyb2xsaW5nR2VvbWV0cnkuc2Nyb2xsT3JpZ2luKTsKLSAgICBz
Y3JvbGxpbmdOb2RlLnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbGluZ0dlb21ldHJ5LnNjcm9sbFBv
c2l0aW9uKTsKICAgICBzY3JvbGxpbmdOb2RlLnNldFRvdGFsQ29udGVudHNTaXplKHNjcm9sbGlu
Z0dlb21ldHJ5LmNvbnRlbnRTaXplKTsKICAgICBzY3JvbGxpbmdOb2RlLnNldFJlYWNoYWJsZUNv
bnRlbnRzU2l6ZShzY3JvbGxpbmdHZW9tZXRyeS5yZWFjaGFibGVDb250ZW50U2l6ZSk7CiAgICAg
c2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxlQXJlYVNpemUoc2Nyb2xsaW5nR2VvbWV0cnkuc2Ny
b2xsYWJsZUFyZWFTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAkocmV2aXNp
b24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0CiAgICAgLCBtX3RvdGFsQ29udGVu
dHNTaXplKHN0YXRlTm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpKQogICAgICwgbV9yZWFjaGFibGVD
b250ZW50c1NpemUoc3RhdGVOb2RlLnJlYWNoYWJsZUNvbnRlbnRzU2l6ZSgpKQogICAgICwgbV9w
YXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0KHN0YXRlTm9kZS5wYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KCkpCi0gICAgLCBtX3Njcm9sbFBvc2l0aW9uKHN0YXRlTm9kZS5zY3JvbGxQb3Np
dGlvbigpKQogICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihzdGF0ZU5vZGUucmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb24oKSkKICAgICAsIG1fc2Nyb2xsT3JpZ2luKHN0YXRlTm9kZS5zY3Jv
bGxPcmlnaW4oKSkKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtNjgsNyArNjcsNiBA
QCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0QWxsCiAgICAgc2V0UHJvcGVy
dHlDaGFuZ2VkQml0KFRvdGFsQ29udGVudHNTaXplKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRC
aXQoUmVhY2hhYmxlQ29udGVudHNTaXplKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoUGFy
ZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNj
cm9sbFBvc2l0aW9uKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsT3JpZ2luKTsK
ICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsYWJsZUFyZWFQYXJhbXMpOwogICAgIHNl
dFByb3BlcnR5Q2hhbmdlZEJpdChSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbik7CkBAIC0xMjMsMTUg
KzEyMSw2IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRQYXIKICAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWQoUGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKLXsKLSAgICBpZiAobV9zY3JvbGxQb3NpdGlvbiA9
PSBzY3JvbGxQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zY3JvbGxQb3NpdGlv
biA9IHNjcm9sbFBvc2l0aW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChTY3JvbGxQb3NpdGlv
bik7Ci19Ci0KIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxPcmln
aW4oY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbikKIHsKICAgICBpZiAobV9zY3JvbGxPcmln
aW4gPT0gc2Nyb2xsT3JpZ2luKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9u
IDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoK
ICAgICAgICAgVG90YWxDb250ZW50c1NpemUsCiAgICAgICAgIFJlYWNoYWJsZUNvbnRlbnRzU2l6
ZSwKICAgICAgICAgUGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCwKLSAgICAgICAgU2Nyb2xs
UG9zaXRpb24sCiAgICAgICAgIFNjcm9sbE9yaWdpbiwKICAgICAgICAgU2Nyb2xsYWJsZUFyZWFQ
YXJhbXMsCiAgICAgICAgIFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLApAQCAtNzMsOSArNzIsNiBA
QCBwdWJsaWM6CiAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFyZW50UmVsYXRpdmVTY3JvbGxhYmxl
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdDsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdChj
b25zdCBMYXlvdXRSZWN0Jik7CiAKLSAgICBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKLQogICAgIGNvbnN0
IEludFBvaW50JiBzY3JvbGxPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9yaWdpbjsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50
Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVG
cmFtZUhvc3RpbmdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5jcHAJKHJldmlzaW9uIDI0MTE5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZUhv
c3RpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTMgKzU3LDEzIEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGU6OmNvbW0KICAgICAgICAgbV9wYXJlbnRSZWxhdGl2
ZVNjcm9sbGFibGVSZWN0ID0gZnJhbWVIb3N0aW5nU3RhdGVOb2RlLnBhcmVudFJlbGF0aXZlU2Ny
b2xsYWJsZVJlY3QoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6
dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYg
Y2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZs
b2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5n
Tm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVl
Tm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpCiB7
CiAgICAgaWYgKCFtX2NoaWxkcmVuKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8m
IGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFu
Y2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxhdGl2ZURl
bHRhKTsKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hh
bmdlZE5vZGUsIGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogTGF5b3V0UG9pbnQgU2Nyb2xsaW5n
VHJlZUZyYW1lSG9zdGluZ05vZGU6OnBhcmVudFRvTG9jYWxQb2ludChMYXlvdXRQb2ludCBwb2lu
dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVGcmFtZUhvc3RpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGUuaAkocmV2aXNpb24gMjQxMTkx
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lSG9z
dGluZ05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAg
IFNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdO
b2RlSUQpOwogCiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9s
bGluZ1N0YXRlTm9kZSYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0
UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRh
KSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3Qg
U2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9z
aXRpb25SZWN0KSBmaW5hbDsKIAogICAgIGNvbnN0IExheW91dFJlY3QmIHBhcmVudFJlbGF0aXZl
U2Nyb2xsYWJsZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFJlbGF0aXZlU2Nyb2xsYWJs
ZVJlY3Q7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24g
MjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBpbXBsZW1l
bnQgdGhpcyB3aGVuIHdlIHN1cHBvcnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVzIGFzIGNo
aWxkcmVuLgotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBT
Y3JvbGxpbmdUcmVlTm9kZSYgLypjaGFuZ2VkTm9kZSovLCBjb25zdCBGbG9hdFJlY3QmIC8qZml4
ZWRQb3NpdGlvblJlY3QqLywgY29uc3QgRmxvYXRTaXplJiAvKmN1bXVsYXRpdmVEZWx0YSovKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29u
c3QgU2Nyb2xsaW5nVHJlZU5vZGUmIC8qY2hhbmdlZE5vZGUqLywgY29uc3QgRmxvYXRSZWN0JiAv
KmZpeGVkUG9zaXRpb25SZWN0Ki8pIG92ZXJyaWRlIHsgfQogCiAgICAgU2Nyb2xsaW5nRXZlbnRS
ZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlk
ZSA9IDA7CiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3Zl
cnJpZGU7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgdmlld1RvQ29u
dGVudHNPZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIGNvbnN0OwogICAg
IEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydEZvclNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIHZpc2libGVDb250ZW50T3JpZ2luLCBmbG9hdCBzY2FsZSkgY29uc3Q7CiAKLSAgICBGbG9h
dFJlY3QgZml4ZWRQb3NpdGlvblJlY3QoKSB7IHJldHVybiBGbG9hdFJlY3QobGFzdENvbW1pdHRl
ZFNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsgfTsKKyAgICBGbG9hdFJl
Y3QgZml4ZWRQb3NpdGlvblJlY3QoKSB7IHJldHVybiBGbG9hdFJlY3Qoc2Nyb2xsUG9zaXRpb24o
KSwgc2Nyb2xsYWJsZUFyZWFTaXplKCkpOyB9OwogCiAgICAgZmxvYXQgZnJhbWVTY2FsZUZhY3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVTY2FsZUZhY3RvcjsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgJKHJldmlz
aW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRl
Tm9kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUm
IGN1bXVsYXRpdmVEZWx0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllcnNBZnRl
ckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29u
c3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCkgPSAwOwogCiAgICAgU2Nyb2xsaW5nVHJl
ZU5vZGUqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgdm9pZCBzZXRQ
YXJlbnQoU2Nyb2xsaW5nVHJlZU5vZGUqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU6OmNvbW1pdFMKICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVhY2hhYmxlQ29udGVudHNTaXplKSkKICAgICAgICAgbV9y
ZWFjaGFibGVDb250ZW50c1NpemUgPSBzdGF0ZS5yZWFjaGFibGVDb250ZW50c1NpemUoKTsKIAot
ICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxQb3NpdGlvbikpCi0gICAgICAgIG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0
aW9uID0gc3RhdGUuc2Nyb2xsUG9zaXRpb24oKTsKLQogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpQYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KSkKICAgICAgICAgbV9wYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0ID0gc3Rh
dGUucGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCgpOwogCkBAIC0xMTMsMTMgKzExMCwxMyBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTCiAgICAgICAgIHNjcm9s
bGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Nyb2xsKHNjcm9sbGluZ05vZGVJ
RCgpLCBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSwgc2Nyb2xs
aW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRp
Y1Njcm9sbCgpKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdl
ZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgY3VtdWxhdGl2ZURlbHRhKQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBk
YXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hh
bmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpCiB7CiAgICAgaWYg
KCFtX2NoaWxkcmVuKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
Km1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxhdGl2ZURlbHRhKTsKKyAg
ICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUs
IGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZTo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCkBA
IC0xOTMsNyArMTkwLDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFBy
bwogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRvdGFsIGNvbnRlbnQgc2l6ZSBmb3IgcnViYmVy
IGJhbmQiLCBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCk7CiAgICAgaWYgKG1fcmVh
Y2hhYmxlQ29udGVudHNTaXplICE9IG1fdG90YWxDb250ZW50c1NpemUpCiAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgicmVhY2hhYmxlIGNvbnRlbnQgc2l6ZSIsIG1fcmVhY2hhYmxlQ29udGVudHNT
aXplKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxhc3QgY29tbWl0dGVkIHNjcm9sbCBwb3NpdGlv
biIsIG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKTsKIAogICAgIGlmICghbV9wYXJlbnRS
ZWxhdGl2ZVNjcm9sbGFibGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJwYXJlbnQgcmVsYXRpdmUgc2Nyb2xsYWJsZSByZWN0IiwgbV9wYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24gMjQxMTkxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0
IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBv
c2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShj
b25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4
ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBTY3JvbGxpbmdFdmVudFJl
c3VsdCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxv
YXRQb2ludCYpOwpAQCAtOTAsNyArOTAsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRS
ZWN0JiBsYXlvdXRWaWV3cG9ydCkgPSAwOwogCi0gICAgRmxvYXRQb2ludCBsYXN0Q29tbWl0dGVk
U2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RDb21taXR0ZWRTY3JvbGxQb3Np
dGlvbjsgfQogICAgIGNvbnN0IEZsb2F0U2l6ZSYgcmVhY2hhYmxlQ29udGVudHNTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9yZWFjaGFibGVDb250ZW50c1NpemU7IH0KICAgICBjb25zdCBMYXlvdXRS
ZWN0JiBwYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJl
bnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0OyB9CiAgICAgY29uc3QgSW50UG9pbnQmIHNjcm9sbE9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT3JpZ2luOyB9CkBAIC0xMjYsNyArMTI1LDYg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV90b3RhbENvbnRlbnRzU2l6ZTsKICAgICBGbG9h
dFNpemUgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7CiAgICAgRmxvYXRTaXplIG1f
cmVhY2hhYmxlQ29udGVudHNTaXplOwotICAgIEZsb2F0UG9pbnQgbV9sYXN0Q29tbWl0dGVkU2Ny
b2xsUG9zaXRpb247CiAgICAgTGF5b3V0UmVjdCBtX3BhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJl
Y3Q7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCShyZXZp
c2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0
LDYgQEAgU2Nyb2xsaW5nVHJlZSYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZAogICAgIHJldHVy
biBtX3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nVHJlZSgpOwogfQogCi1GbG9hdFBvaW50IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlv
bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Nyb2xsaW5nTm9kZS5sYXN0Q29tbWl0dGVkU2Ny
b2xsUG9zaXRpb24oKTsKLX0KLQogY29uc3QgRmxvYXRTaXplJiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlOjp0b3RhbENvbnRlbnRzU2l6ZSgpCiB7CiAgICAgcmV0dXJuIG1fc2Ny
b2xsaW5nTm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGUuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFdFQkNP
UkVfRVhQT1JUIFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUoKSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFBvaW50IGxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemUo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGbG9hdFNpemUmIHJlYWNoYWJsZUNvbnRlbnRz
U2l6ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEludFBvaW50JiBzY3JvbGxPcmlnaW4o
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgJKHJldmlzaW9uIDI0MTE5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhl
ZE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIFNj
cm9sbGluZ1RyZWVGaXhlZE5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAK
ICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVO
b2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdl
KGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBm
aXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3Jv
bGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlv
blJlY3QpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJl
YW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVG
aXhlZE5vZGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQkocmV2aXNpb24gMjQxMTkxKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzAsMTUgKzcwLDEzIEBAIHN0YXRpYyBpbmxpbmUgQ0dQb2lu
dCBvcGVyYXRvciooQ0dQb2ludCYKIH0KIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2Rl
Ojp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2Rl
JiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3Qg
RmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6
OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUm
IGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0KQogewogICAg
IHVzaW5nIG5hbWVzcGFjZSBTY3JvbGxpbmdUcmVlRml4ZWROb2RlSW50ZXJuYWw7CiAgICAgRmxv
YXRQb2ludCBsYXllclBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uRm9yVmll
d3BvcnRSZWN0KGZpeGVkUG9zaXRpb25SZWN0KTsKIAogICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSAiIDw8IHNjcm9sbGluZ05v
ZGVJRCgpIDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0
ICIgPDwgZml4ZWRQb3NpdGlvblJlY3QgPDwgIiB2aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQgIiA8
PCBtX2NvbnN0cmFpbnRzLnZpZXdwb3J0UmVjdEF0TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXll
ciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAi
IG5ldyBvZmZzZXQgZnJvbSB0b3AgIiA8PCAoZml4ZWRQb3NpdGlvblJlY3QueSgpIC0gbGF5ZXJQ
b3NpdGlvbi55KCkpKTsKIAotICAgIGxheWVyUG9zaXRpb24gLT0gY3VtdWxhdGl2ZURlbHRhOwot
CiAgICAgQ0dSZWN0IGxheWVyQm91bmRzID0gW21fbGF5ZXIgYm91bmRzXTsKICAgICBDR1BvaW50
IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5jaG9yUG9pbnRdOwogICAgIENHUG9pbnQgbmV3UG9z
aXRpb24gPSBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKSAr
IGFuY2hvclBvaW50ICogbGF5ZXJCb3VuZHMuc2l6ZTsKQEAgLTk2LDEwICs5NCw4IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6dXBkYXRlTGF5ZXIKICAgICBpZiAoIW1fY2hpbGRyZW4p
CiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0U2l6ZSBuZXdEZWx0YSA9IGxheWVyUG9zaXRp
b24gLSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSArIGN1bXVsYXRp
dmVEZWx0YTsKLQogICAgIGZvciAoYXV0byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAg
Y2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVk
UG9zaXRpb25SZWN0LCBuZXdEZWx0YSk7CisgICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRl
ckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCk7CiB9CiAKIHZv
aWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMs
IFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCShyZXZpc2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAKICAgICB2b2lkIGNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9s
bGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9u
UmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9k
ZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxp
bmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlLm1tCShyZXZpc2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgaW5saW5lIENHUG9pbnQgb3BlcmF0b3Iq
KENHUG9pbnQmCiB9CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUm
IGN1bXVsYXRpdmVEZWx0YSkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0KQogewogICAgIHVzaW5nIG5h
bWVzcGFjZSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUludGVybmFsOwogICAgIGJvb2wgYWRqdXN0
U3RpY2t5TGF5ZXIgPSBmYWxzZTsKQEAgLTg4LDggKzg4LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZTo6dXBkYXRlTGF5ZQogCiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywg
c3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgp
IDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0ICIgPDwg
Zml4ZWRQb3NpdGlvblJlY3QgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0ICIgPDwg
bV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxh
eWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIDw8
ICIgYWRqdXN0U3RpY2t5TGF5ZXIgIiA8PCBhZGp1c3RTdGlja3lMYXllcik7CiAKLSAgICBGbG9h
dFNpemUgZGVsdGFGb3JEZXNjZW5kYW50cyA9IGN1bXVsYXRpdmVEZWx0YTsKLQogICAgIGlmIChh
ZGp1c3RTdGlja3lMYXllcikgewogICAgICAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb24gPSBt
X2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFpbmlu
Z1JlY3QpOwogCkBAIC05NywxNSArOTUsMTMgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZTo6dXBkYXRlTGF5ZQogICAgICAgICBDR1BvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5j
aG9yUG9pbnRdOwogICAgICAgICBDR1BvaW50IG5ld1Bvc2l0aW9uID0gbGF5ZXJQb3NpdGlvbiAt
IG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkgKyBhbmNob3JQb2ludCAqIGxheWVyQm91
bmRzLnNpemU7CiAgICAgICAgIFttX2xheWVyIHNldFBvc2l0aW9uOm5ld1Bvc2l0aW9uXTsKLQot
ICAgICAgICBkZWx0YUZvckRlc2NlbmRhbnRzID0gbGF5ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWlu
dHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpICsgY3VtdWxhdGl2ZURlbHRhOwogICAgIH0K
IAogICAgIGlmICghbV9jaGlsZHJlbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRv
JiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIGRlbHRhRm9yRGVz
Y2VuZGFudHMpOworICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCiB2b2lkIFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmgJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYg
Zml4ZWRQb3NpdGlvblJlY3QsIGRvdWJsZSBzY2FsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRh
dGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGlu
Z1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVj
dCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYg
Y2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBGbG9hdFJlY3QmIGxheW91dFZpZXdwb3J0KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCShyZXZpc2lvbiAyNDExOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQxLDE3ICsxNDEsMTYgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOgogICAgICAgICByZXR1cm47CiAK
ICAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRh
dGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhlZFBvc2l0aW9uUmVjdCwgRmxv
YXRTaXplKCkpOworICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZSgqdGhpcywgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3Qg
U2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFNpemUmKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRh
dGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFu
Z2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JikKIHsKICAgICBpZiAoIW1fY2hpbGRyZW4pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCBmaXhlZFBvc2l0aW9uUmVjdChzY3JvbGxQb3Np
dGlvbigpLCBzY3JvbGxhYmxlQXJlYVNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6ICpt
X2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIEZsb2F0U2l6ZSgpKTsKKyAgICAgICAg
Y2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVk
UG9zaXRpb25SZWN0KCkpOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQm
IHNjcm9sbFBvc2l0aW9uKQpAQCAtMTkzLDcgKzE5Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZUlPUzoKICAgICAgICAgZml4ZWRQb3NpdGlvblJlY3QgPSBGbG9hdFJl
Y3Qoc2Nyb2xsUG9zaXRpb24sIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsKIAogICAgIGZvciAoYXV0
byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVy
QW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0LCBGbG9hdFNpemUoKSk7Cisg
ICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhl
ZFBvc2l0aW9uUmVjdCk7CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUlPUzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCShyZXZpc2lvbiAyNDExOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yIChhdXRvJiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZSgqdGhpcywgZml4ZWRQb3NpdGlvblJlY3QsIEZsb2F0
U2l6ZSgpKTsKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2Uo
KnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZs
b2F0UmVjdCYsIGRvdWJsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
TGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3QmLCBkb3VibGUpIG92ZXJy
aWRlIHsgfQogICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3Qg
RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIG92ZXJyaWRlOwogCi0gICAgdm9pZCB1cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2Vk
Tm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXpl
JiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0
IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRlOwogCiAgICAgU2Nyb2xsaW5n
RXZlbnRSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBv
dmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVNYWMubW0JKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MywxMSArOTMsMTAgQEAgU2Nyb2xsaW5nRXZlbnRSZXN1bHQgU2Nyb2xs
aW5nVHJlZU92ZXJmbAogCiAKIAotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1Ry
ZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwg
Y29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCit2b2lkIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVNYWM6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29u
c3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVk
UG9zaXRpb25SZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShjaGFuZ2VkTm9kZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGZpeGVkUG9zaXRpb25SZWN0KTsKLSAgICBVTlVTRURfUEFSQU0oY3VtdWxhdGl2
ZURlbHRhKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CkBAIC0xMzEsNyArMTMwLDcgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTQogICAgICAgICByZXR1cm47CiAKICAg
ICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhlZFBvc2l0aW9uUmVjdCwgeyB9KTsK
KyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZp
eGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBv
aW50JiBzY3JvbGxQb3NpdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDExOTMpCisrKyBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisy
MDE5LTAyLTA4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBD
b21wdXRlIGZpeGVkIHBvc2l0aW9uIHJlY3QgYmFzZWQgb24gU2Nyb2xsaW5nVHJlZSBzY3JvbGwg
cG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NDQzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlPjo6ZW5jb2RlKToKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlPjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6ZHVtcCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZVJlbW90ZUlPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OmNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorCisgICAgICAgIEF2b2lkIGNvbnN0YW50bHkgcmVjb25z
dHJ1Y3RpbmcgdGhlIGRlbGVnYXRlLgorCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFu
Z2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKToKKworICAgICAgICBTZXR0aW5nIHNjcm9sbCBwb3NpdGlvbiBiYXNlZCBv
biBub2RlIHRyZWUgaXMgd3JvbmcgYXMgaXQgb3ZlcnJpZGVzIHRoZSB1c2VyIHNjcm9sbCBwb3Np
dGlvbi4KKworICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKToKKworICAgICAgICBSZW1vdmUgdGhlIGN1
cnJlbnQgaW5jb3JyZWN0IGltcGxlbWVudGF0aW9uIGFuZCByZXBsYWNlIHdpdGggRklYTUUuCisg
ICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgcHJvZ3JhbW1hdGljIHNjcm9sbGluZy4KKworICAgICAg
ICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp1cGRhdGVD
aGlsZE5vZGVzQWZ0ZXJTY3JvbGwpOgorCisgICAgICAgIERvbid0IGNvbXB1dGUgdGhlIGRlbHRh
LiBJdCBpcyBubyBsb25nZXIgbmVlZGVkIHNpbmNlIHRoZSBmaXhlZCBwb3NpdGlvbiByZWN0IHdl
IGdldCBpcyB0aGUgY29ycmVjdCBvbmUuCisKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsVmlld0RpZFNjcm9sbCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnVw
ZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOiBEZWxldGVkLgorCisgICAgICAgIFRoaXMg
d2FzIGluY29ycmVjdCBmb3IgZnJhbWVzIGFuZCBkaWRuJ3QgZG8gYW55dGhpbmcgYW55d2F5IHNv
IHJlbW92ZSBpdC4KKwogMjAxOS0wMi0wOCAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2Fj
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAy
NDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3
ICsxMjcsNiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpCiAgICAg
U0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
YWJsZUFyZWFTaXplLCBzY3JvbGxhYmxlQXJlYVNpemUpCiAgICAgU0NST0xMSU5HX05PREVfRU5D
T0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUsIHRvdGFs
Q29udGVudHNTaXplKQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSwgcmVhY2hhYmxlQ29udGVudHNTaXpl
KQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OlNjcm9sbFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlvbikKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNP
REUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxPcmlnaW4sIHNjcm9sbE9yaWdp
bikKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0cywgaG9y
aXpvbnRhbFNuYXBPZmZzZXRzKQpAQCAtMjE2LDcgKzIxNSw2IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGkKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxhYmxlQXJlYVNpemUsIEZsb2F0U2l6ZSwgc2V0
U2Nyb2xsYWJsZUFyZWFTaXplKTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpUb3RhbENvbnRlbnRzU2l6ZSwgRmxvYXRTaXplLCBzZXRUb3Rh
bENvbnRlbnRzU2l6ZSk7CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6UmVhY2hhYmxlQ29udGVudHNTaXplLCBGbG9hdFNpemUsIHNldFJlYWNo
YWJsZUNvbnRlbnRzU2l6ZSk7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsUG9zaXRpb24sIEZsb2F0UG9pbnQsIHNldFNjcm9sbFBv
c2l0aW9uKTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpTY3JvbGxPcmlnaW4sIEludFBvaW50LCBzZXRTY3JvbGxPcmlnaW4pOwogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBWZWN0b3I8ZmxvYXQ+
LCBzZXRIb3Jpem9udGFsU25hcE9mZnNldHMpOwpAQCAtNTEyLDkgKzUxMCw2IEBAIHN0YXRpYyB2
b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFMKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0
aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cmVhY2hhYmxlLWNvbnRlbnRzLXNpemUiLCBub2RlLnJlYWNoYWJsZUNvbnRlbnRzU2l6ZSgpKTsK
IAotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsUG9zaXRpb24pKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInNjcm9sbC1wb3NpdGlvbiIsIG5vZGUuc2Nyb2xsUG9zaXRpb24o
KSk7Ci0KICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbE9yaWdpbikpCiAgICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsLW9yaWdpbiIsIG5vZGUuc2Nyb2xsT3JpZ2luKCkp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlUmVtb3RlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgbGF5b3V0Vmlld3BvcnQpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBmaXhlZFBv
c2l0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92
ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1M+IG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZVJlbW90ZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVJT1MubW0JKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMsMTAgKzUzLDggQEAgdm9pZCBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtbwogICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oc3RhdGVOb2RlKTsKIAogICAgIGlm
IChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7Ci0gICAgICAgIGlmIChzY3JvbGxDb250YWluZXJM
YXllcigpKQorICAgICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSAmJiAhbV9zY3JvbGxp
bmdOb2RlRGVsZWdhdGUpCiAgICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRo
aXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9
IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlKQpAQCAt
NzEsMTUgKzY5LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtbwog
ICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVu
KGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4oc3RhdGVOb2RlKSk7CiB9CiAK
LXZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6dXBkYXRlTGF5
ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5v
ZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYg
Y3VtdWxhdGl2ZURlbHRhKQotewotICAgIGlmIChtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSkgewot
ICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIGN1bXVsYXRpdmVEZWx0YSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjaGFuZ2VkTm9kZSwgZml4
ZWRQb3NpdGlvblJlY3QsIGN1bXVsYXRpdmVEZWx0YSk7Ci19Ci0KIEZsb2F0UG9pbnQgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6c2Nyb2xsUG9zaXRpb24oKSBjb25z
dAogewogICAgIGlmIChtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5o
CShyZXZpc2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsOCArNTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlTGF5ZXJz
QWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGZpeGVkUG9zaXRp
b25SZWN0LCBkb3VibGUgc2NhbGUpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgdXBkYXRlTGF5ZXJz
QWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9z
aXRpb24pIG92ZXJyaWRlOwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwotCiAgICAgV2ViQ29yZTo6U2Nyb2xs
aW5nRXZlbnRSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnQmKSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxpbmdFdmVudFJlc3VsdDo6RGlkTm90
SGFuZGxlRXZlbnQ7IH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TPiBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1MubW0JKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjYsMTEgKzY2LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSQogICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLT5jb21taXRT
dGF0ZUFmdGVyQ2hpbGRyZW4oZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPihz
dGF0ZU5vZGUpKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVO
b2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29u
c3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCi17Ci0gICAgbV9zY3JvbGxpbmdOb2RlRGVs
ZWdhdGUtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVk
UG9zaXRpb25SZWN0LCBjdW11bGF0aXZlRGVsdGEpOwotfQotCiBGbG9hdFBvaW50IFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUtPnNjcm9sbFBvc2l0aW9uKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1MuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzZXRTY3JvbGxWaWV3RGVsZWdhdGUoKTsKICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oY29uc3QgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJik7CiAg
ICAgdm9pZCBjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlJik7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9y
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2Ny
b2xsUG9zaXRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldFNjcm9sbExheWVyUG9zaXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGROb2Rlc0FmdGVy
U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1MubW0JKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjIzLDE3ICsyMjMsMTQgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSQogewogICAgIFNldEZvclNjb3BlPGJvb2w+IHVw
ZGF0aW5nQ2hhbmdlKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlLCB0cnVlKTsKICAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKQotICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
ZWRDb250ZW50c0xheWVyKQogICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUp
CiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFibGVDb250ZW50c1NpemUpCi0gICAgICAgIHx8
IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpTY3JvbGxQb3NpdGlvbikKICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbE9y
aWdpbikpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAgIFVJ
U2Nyb2xsVmlldyAqc2Nyb2xsVmlldyA9IChVSVNjcm9sbFZpZXcgKilbc2Nyb2xsTGF5ZXIoKSBk
ZWxlZ2F0ZV07CiAgICAgICAgIEFTU0VSVChbc2Nyb2xsVmlldyBpc0tpbmRPZkNsYXNzOltVSVNj
cm9sbFZpZXcgc2VsZl1dKTsKIAotICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5l
ckxheWVyKQotICAgICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikp
IHsKKyAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAg
ICAgICAgIGlmICghbV9zY3JvbGxWaWV3RGVsZWdhdGUpCiAgICAgICAgICAgICAgICAgbV9zY3Jv
bGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGU6dGhpc10pOwogCkBA
IC0yNDcsMTIgKzI0NCw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUkKICAgICAgICAgICAgIHJlY29tcHV0ZUluc2V0cyA9IHRydWU7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxQb3NpdGlvbikKLSAgICAgICAgICAgIHx8IHNjcm9s
bGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxPcmlnaW4pKQotICAgICAgICAgICAgJiYgIVttX3Njcm9sbFZpZXdEZWxlZ2F0
ZSBfaXNJblVzZXJJbnRlcmFjdGlvbl0pIHsKLSAgICAgICAgICAgIHNjcm9sbFZpZXcuY29udGVu
dE9mZnNldCA9IHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxQb3NpdGlvbigpICsgc2Nyb2xsT3Jp
Z2luKCk7CisgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2luKSkKICAgICAgICAgICAg
IHJlY29tcHV0ZUluc2V0cyA9IHRydWU7Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAocmVjb21w
dXRlSW5zZXRzKSB7CiAgICAgICAgICAgICBVSUVkZ2VJbnNldHMgaW5zZXRzID0gVUlFZGdlSW5z
ZXRzTWFrZSgwLCAwLCAwLCAwKTsKQEAgLTI3NSwxNyArMjY4LDYgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdl
KGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBm
aXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCi17Ci0g
ICAgaWYgKCFzY3JvbGxpbmdOb2RlKCkuY2hpbGRyZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgRmxvYXRTaXplIHNjcm9sbERlbHRhID0gbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkg
LSBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsUG9zaXRpb24oKTsKLQotICAgIGZvciAoYXV0byYgY2hp
bGQgOiAqc2Nyb2xsaW5nTm9kZSgpLmNoaWxkcmVuKCkpCi0gICAgICAgIGNoaWxkLT51cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwg
Y3VtdWxhdGl2ZURlbHRhICsgc2Nyb2xsRGVsdGEpOwotfQotCiBGbG9hdFBvaW50IFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsK
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTI5Nyw3ICsyNzksNyBAQCBGbG9h
dFBvaW50IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsCiAKIHZvaWQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKIHsKLSAgICBbbV9zY3JvbGxMYXllciBzZXRQb3Np
dGlvbjpDR1BvaW50TWFrZShzY3JvbGxQb3NpdGlvbi54KCkgKyBzY3JvbGxPcmlnaW4oKS54KCks
IHNjcm9sbFBvc2l0aW9uLnkoKSArIHNjcm9sbE9yaWdpbigpLnkoKSldOworICAgIC8vIEZJWE1F
OiBTZXQgdGhlIHNjcm9sbCBwb3NpdGlvbiBpbiByZXNwb25zZSB0byBwcm9ncmFtbWF0aWMgc2Ny
b2xsLgogICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7CiB9
CiAKQEAgLTMxMiwxMCArMjk0LDkgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSQogICAgICAgICBmaXhlZFBvc2l0aW9uUmVjdCA9IGZyYW1lTm9kZS0+Zml4ZWRQb3Np
dGlvblJlY3QoKTsKICAgICBlbHNlCiAgICAgICAgIGZpeGVkUG9zaXRpb25SZWN0ID0gc2Nyb2xs
aW5nVHJlZSgpLmZpeGVkUG9zaXRpb25SZWN0KCk7Ci0gICAgRmxvYXRTaXplIHNjcm9sbERlbHRh
ID0gbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkgLSBzY3JvbGxQb3NpdGlvbjsKIAogICAg
IGZvciAoYXV0byYgY2hpbGQgOiAqc2Nyb2xsaW5nTm9kZSgpLmNoaWxkcmVuKCkpCi0gICAgICAg
IGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKHNjcm9sbGluZ05vZGUoKSwg
Zml4ZWRQb3NpdGlvblJlY3QsIHNjcm9sbERlbHRhKTsKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2Uoc2Nyb2xsaW5nTm9kZSgpLCBmaXhlZFBvc2l0aW9uUmVj
dCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Ny
b2xsV2lsbFN0YXJ0KCkgY29uc3QKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MTE5MykKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAy
LTA4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb21wdXRl
IGZpeGVkIHBvc2l0aW9uIHJlY3QgYmFzZWQgb24gc2Nyb2xsaW5nIHRyZWUgdmlldyBvZiB0aGUg
c2Nyb2xsIHBvc2l0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTQ0MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUZXN0IGJ5IEZyZWRlcmljIFdhbmcuCisKKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9pb3Mvc2Nyb2xsLWlmcmFtZS1leHBlY3RlZC5odG1sOgorICAgICAgICAqIGZhc3Qvc2Nyb2xs
aW5nL2lvcy9zY3JvbGwtaWZyYW1lLmh0bWw6CisKIDIwMTktMDItMDggIEVyaWMgTGlhbmcgIDxl
cmljbGlhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIENoZWNrIGlmIHJlY2VpdmUgQVhQcmVzc0Rp
ZEZhaWwgbm90aWZpY2F0aW9uIHdoZW4gcGVyZm9ybWluZyBBWFByZXNzIGFjdGlvbiBvbiBkaXNh
YmxlZCBNZW51TGlzdC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3Jv
bGwtaWZyYW1lLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMjQxMTkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUtZXhwZWN0
ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksOCBAQAogICAgICAgICA8ZGl2IGNs
YXNzPXRlc3RkaXY+PC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9dGVzdGRpdj48L2Rpdj4KICAg
ICAgICAgPGRpdiBjbGFzcz10ZXN0ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPXRlc3Rk
aXY+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9dGVzdGRpdj48L2Rpdj4KICAgICA8L2Rpdj4K
IDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9z
Y3JvbGwtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvaW9zL3Njcm9sbC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMjQxMTkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMzcsMTEgKzM3LDE5IEBACiAgICAgICAgICBhd2FpdCB0b3VjaEFuZERyYWdGcm9tUG9pbnRU
b1BvaW50KGMueCwgYy55LCBjLngsIGMueSAtIDIwMDApOwogICAgICAgICAgYXdhaXQgbGlmdFVw
QXRQb2ludChjLngsIGMueSAtIDIwMDApOwogCisgICAgICAgICBjID0gY2VudGVyT2YoInBvc2l0
aW9uRml4ZWQiKTsKKyAgICAgICAgIGF3YWl0IHRvdWNoQW5kRHJhZ0Zyb21Qb2ludFRvUG9pbnQo
Yy54LCBjLnksIGMueCAtIDE1MCwgYy55IC0gMTUwKTsKKyAgICAgICAgIGF3YWl0IGxpZnRVcEF0
UG9pbnQoYy54IC0gMTUwLCBjLnkgLSAxNTApOworCisgICAgICAgICBjID0gY2VudGVyT2YoInBv
c2l0aW9uU3RpY2t5Iik7CisgICAgICAgICBhd2FpdCB0b3VjaEFuZERyYWdGcm9tUG9pbnRUb1Bv
aW50KGMueCwgYy55LCBjLngsIGMueSAtIDE1MCk7CisgICAgICAgICBhd2FpdCBsaWZ0VXBBdFBv
aW50KGMueCwgYy55IC0gMTUwKTsKKwogICAgICAgICAgLy8gV2FpdCBmb3Igc2Nyb2xsaW5nIHRv
IHN0YWJpbGl6ZSBhbmQgZm9yIHNjcm9sbGJhcnMgdG8gZGlzYXBwZWFyLgogICAgICAgICAgc2V0
VGltZW91dCgoKSA9PiB7dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IH0sIDIwMDApOwogICAgICAg
IH0KIAotICAgICAgIHZhciBmcmFtZVRvTG9hZENvdW50ID0gNDsKKyAgICAgICB2YXIgZnJhbWVU
b0xvYWRDb3VudCA9IDY7CiAgICAgICAgZnVuY3Rpb24gbmV3RnJhbWVMb2FkZWQoKSB7CiAgICAg
ICAgICAgIGZyYW1lVG9Mb2FkQ291bnQtLTsKICAgICAgICAgICAgaWYgKGZyYW1lVG9Mb2FkQ291
bnQgPT0gMCkKQEAgLTg1LDYgKzkzLDE5IEBACiAgICAgICAgICAgICA8ZGl2IHN0eWxlPSd3aWR0
aDogMTAwcHg7IGhlaWdodDogNTAwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyc+PC9kaXY+CiAgICAg
ICAgICAgICA8L2JvZHk+IiBvbmxvYWQ9Im5ld0ZyYW1lTG9hZGVkKCkiPgogICAgICAgICA8L2lm
cmFtZT4KKyAgICAgICAgPGlmcmFtZSBpZD0icG9zaXRpb25GaXhlZCIgc2Nyb2xsaW5nPSJ5ZXMi
IHNyY2RvYz0iCisgICAgICAgICAgICA8Ym9keSBzdHlsZT0ncG9zaXRpb246IHJlbGF0aXZlOyBt
YXJnaW46IDA7IHdpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweCc+CisgICAgICAgICAgICAgICAg
PGRpdiBzdHlsZT0ncG9zaXRpb246IGZpeGVkOyB3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsg
YmFja2dyb3VuZDogZ3JlZW47Jz48L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdw
b3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogMHB4OyByaWdodDogMHB4OyB3aWR0aDogMTAwcHg7
IGhlaWdodDogNTBweDsgYmFja2dyb3VuZDogZ3JlZW47Jz48L2Rpdj4KKyAgICAgICAgICAgIDwv
Ym9keT4iIG9ubG9hZD0ibmV3RnJhbWVMb2FkZWQoKSI+CisgICAgICAgIDwvaWZyYW1lPgorICAg
ICAgICA8aWZyYW1lIGlkPSJwb3NpdGlvblN0aWNreSIgc2Nyb2xsaW5nPSJ5ZXMiIHNyY2RvYz0i
CisgICAgICAgICAgICA8Ym9keSBzdHlsZT0ncG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW46IDA7
IHdpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweCc+CisgICAgICAgICAgICAgICAgPGRpdiBzdHls
ZT0naGVpZ2h0OiAxMDBweCc+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ncG9z
aXRpb246IC13ZWJraXQtc3RpY2t5OyBwb3NpdGlvbjogc3RpY2t5OyBsZWZ0OiAwcHg7IHRvcDog
MHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZDogZ3JlZW47Jz48L2Rp
dj4KKyAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRv
bTogMHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZDogZ3JlZW47Jz48
L2Rpdj4KKyAgICAgICAgICAgIDwvYm9keT4iIG9ubG9hZD0ibmV3RnJhbWVMb2FkZWQoKSI+Cisg
ICAgICAgIDwvaWZyYW1lPgogICAgIDwvZGl2PgogPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361501</attachid>
            <date>2019-02-08 05:23:27 -0800</date>
            <delta_ts>2019-02-08 05:24:07 -0800</delta_ts>
            <desc>test case with busy main thread</desc>
            <filename>frame-fixed-ios.patch</filename>
            <type>text/plain</type>
            <size>46844</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTAyLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb21wdXRlIGZpeGVkIHBvc2l0
aW9uIHJlY3QgYmFzZWQgb24gc2Nyb2xsaW5nIHRyZWUgdmlldyBvZiB0aGUgY3VycmVudCBzY3Jv
bGwgcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDQzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEl0IHNob3VsZCBiZSBzY3JvbGxpbmcgdHJlZXMgcmVzcG9uc2liaWxpdHkgdG8gaW5jb3Jw
b3JhdGUgc2Nyb2xsIHBvc2l0aW9ucyB3aGVuIGNvbXB1dGluZyBmaW5hbCBwb3NpdGlvbnMgZm9y
IGxheWVycy4KKyAgICAgICAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gYXJjaGl2ZSBnbGl0Y2gt
ZnJlZSBwb3NpdGlvbmluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgY29kZSB0aGF0
IHRoYXQgcGFzc2VzIHRoZSBsYXN0IGNvbW1pdHRlZCBzY3JvbGwgcG9zaXRpb24gdmlhIHRoZSBz
dGF0ZSB0cmVlIGFuZCBtb2RpZmllcyBpdHMgb25seQorICAgICAgICBjbGllbnQgKGluIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MpIHRvIHVzZSB0aGUgVUlTY3JvbGxWaWV3
IHNjcm9sbGluZyBwb3NpdGlvbi4KKworICAgICAgICBUZXN0IGJ5IEZyZWRlcmljIFdhbmcuCisK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sbGlu
Z05vZGVHZW9tZXRyeSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0QWxsUHJvcGVydGllc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQ
b3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNjcm9sbFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZSk6CisKKyAgICAgICAgUmVtb3ZlIHRoZSAnY3VtdWxhdGl2ZURlbHRhJyBw
YXJhbWV0ZXIuIEl0IGlzIG5vdCBuZWVkZWQgc2luY2UgJ2ZpeGVkUG9zaXRpb25SZWN0JyBpcyBj
b3JyZWN0IHdpdGhvdXQgYWRqdXN0bWVudHMuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmZpeGVkUG9zaXRpb25SZWN0KToKKworICAg
ICAgICBDb21wdXRlIGJhc2VkIG9uIHNjcm9sbGluZyB0cmVlIHZpZXcgb2YgdGhlIHNjcm9sbGlu
ZyBwb3NpdGlvbi4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2Rl
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6bGFzdENvbW1pdHRlZFNjcm9sbFBv
c2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4
ZWROb2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0
b3JDaGFuZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlSU9TLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0Fm
dGVyU2Nyb2xsKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24pOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFj
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWM6OnNl
dFNjcm9sbExheWVyUG9zaXRpb24pOgorCiAyMDE5LTAyLTA4ICBFcmljIExpYW5nICA8ZXJpY2xp
YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBXaGVuIHBlcmZvcm1pbmcgQVhQcmVzcywgY2hlY2sg
dG8gc2VlIGlmIHRoZSBtZW51IGxpc3QgaXMgZGlzYWJsZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNiw3
ICs2MzYsNiBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sCiAKICAg
ICBzY3JvbGxpbmdOb2RlLnNldFBhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJlY3Qoc2Nyb2xsaW5n
R2VvbWV0cnkucGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7CiAgICAgc2Nyb2xsaW5nTm9k
ZS5zZXRTY3JvbGxPcmlnaW4oc2Nyb2xsaW5nR2VvbWV0cnkuc2Nyb2xsT3JpZ2luKTsKLSAgICBz
Y3JvbGxpbmdOb2RlLnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbGluZ0dlb21ldHJ5LnNjcm9sbFBv
c2l0aW9uKTsKICAgICBzY3JvbGxpbmdOb2RlLnNldFRvdGFsQ29udGVudHNTaXplKHNjcm9sbGlu
Z0dlb21ldHJ5LmNvbnRlbnRTaXplKTsKICAgICBzY3JvbGxpbmdOb2RlLnNldFJlYWNoYWJsZUNv
bnRlbnRzU2l6ZShzY3JvbGxpbmdHZW9tZXRyeS5yZWFjaGFibGVDb250ZW50U2l6ZSk7CiAgICAg
c2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxlQXJlYVNpemUoc2Nyb2xsaW5nR2VvbWV0cnkuc2Ny
b2xsYWJsZUFyZWFTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAkocmV2aXNp
b24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0CiAgICAgLCBtX3RvdGFsQ29udGVu
dHNTaXplKHN0YXRlTm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpKQogICAgICwgbV9yZWFjaGFibGVD
b250ZW50c1NpemUoc3RhdGVOb2RlLnJlYWNoYWJsZUNvbnRlbnRzU2l6ZSgpKQogICAgICwgbV9w
YXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0KHN0YXRlTm9kZS5wYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KCkpCi0gICAgLCBtX3Njcm9sbFBvc2l0aW9uKHN0YXRlTm9kZS5zY3JvbGxQb3Np
dGlvbigpKQogICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihzdGF0ZU5vZGUucmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb24oKSkKICAgICAsIG1fc2Nyb2xsT3JpZ2luKHN0YXRlTm9kZS5zY3Jv
bGxPcmlnaW4oKSkKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtNjgsNyArNjcsNiBA
QCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0QWxsCiAgICAgc2V0UHJvcGVy
dHlDaGFuZ2VkQml0KFRvdGFsQ29udGVudHNTaXplKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRC
aXQoUmVhY2hhYmxlQ29udGVudHNTaXplKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoUGFy
ZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNj
cm9sbFBvc2l0aW9uKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsT3JpZ2luKTsK
ICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsYWJsZUFyZWFQYXJhbXMpOwogICAgIHNl
dFByb3BlcnR5Q2hhbmdlZEJpdChSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbik7CkBAIC0xMjMsMTUg
KzEyMSw2IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRQYXIKICAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWQoUGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKLXsKLSAgICBpZiAobV9zY3JvbGxQb3NpdGlvbiA9
PSBzY3JvbGxQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zY3JvbGxQb3NpdGlv
biA9IHNjcm9sbFBvc2l0aW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChTY3JvbGxQb3NpdGlv
bik7Ci19Ci0KIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxPcmln
aW4oY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbikKIHsKICAgICBpZiAobV9zY3JvbGxPcmln
aW4gPT0gc2Nyb2xsT3JpZ2luKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9u
IDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoK
ICAgICAgICAgVG90YWxDb250ZW50c1NpemUsCiAgICAgICAgIFJlYWNoYWJsZUNvbnRlbnRzU2l6
ZSwKICAgICAgICAgUGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCwKLSAgICAgICAgU2Nyb2xs
UG9zaXRpb24sCiAgICAgICAgIFNjcm9sbE9yaWdpbiwKICAgICAgICAgU2Nyb2xsYWJsZUFyZWFQ
YXJhbXMsCiAgICAgICAgIFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLApAQCAtNzMsOSArNzIsNiBA
QCBwdWJsaWM6CiAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFyZW50UmVsYXRpdmVTY3JvbGxhYmxl
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdDsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdChj
b25zdCBMYXlvdXRSZWN0Jik7CiAKLSAgICBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKLQogICAgIGNvbnN0
IEludFBvaW50JiBzY3JvbGxPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9yaWdpbjsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50
Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVG
cmFtZUhvc3RpbmdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5jcHAJKHJldmlzaW9uIDI0MTE5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZUhv
c3RpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTMgKzU3LDEzIEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGU6OmNvbW0KICAgICAgICAgbV9wYXJlbnRSZWxhdGl2
ZVNjcm9sbGFibGVSZWN0ID0gZnJhbWVIb3N0aW5nU3RhdGVOb2RlLnBhcmVudFJlbGF0aXZlU2Ny
b2xsYWJsZVJlY3QoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6
dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYg
Y2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZs
b2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5n
Tm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVl
Tm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpCiB7
CiAgICAgaWYgKCFtX2NoaWxkcmVuKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8m
IGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFu
Y2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxhdGl2ZURl
bHRhKTsKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hh
bmdlZE5vZGUsIGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogTGF5b3V0UG9pbnQgU2Nyb2xsaW5n
VHJlZUZyYW1lSG9zdGluZ05vZGU6OnBhcmVudFRvTG9jYWxQb2ludChMYXlvdXRQb2ludCBwb2lu
dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVGcmFtZUhvc3RpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGUuaAkocmV2aXNpb24gMjQxMTkx
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lSG9z
dGluZ05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAg
IFNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdO
b2RlSUQpOwogCiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9s
bGluZ1N0YXRlTm9kZSYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0
UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRh
KSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3Qg
U2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9z
aXRpb25SZWN0KSBmaW5hbDsKIAogICAgIGNvbnN0IExheW91dFJlY3QmIHBhcmVudFJlbGF0aXZl
U2Nyb2xsYWJsZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFJlbGF0aXZlU2Nyb2xsYWJs
ZVJlY3Q7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24g
MjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBpbXBsZW1l
bnQgdGhpcyB3aGVuIHdlIHN1cHBvcnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVzIGFzIGNo
aWxkcmVuLgotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBT
Y3JvbGxpbmdUcmVlTm9kZSYgLypjaGFuZ2VkTm9kZSovLCBjb25zdCBGbG9hdFJlY3QmIC8qZml4
ZWRQb3NpdGlvblJlY3QqLywgY29uc3QgRmxvYXRTaXplJiAvKmN1bXVsYXRpdmVEZWx0YSovKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29u
c3QgU2Nyb2xsaW5nVHJlZU5vZGUmIC8qY2hhbmdlZE5vZGUqLywgY29uc3QgRmxvYXRSZWN0JiAv
KmZpeGVkUG9zaXRpb25SZWN0Ki8pIG92ZXJyaWRlIHsgfQogCiAgICAgU2Nyb2xsaW5nRXZlbnRS
ZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlk
ZSA9IDA7CiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3Zl
cnJpZGU7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgdmlld1RvQ29u
dGVudHNPZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIGNvbnN0OwogICAg
IEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydEZvclNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIHZpc2libGVDb250ZW50T3JpZ2luLCBmbG9hdCBzY2FsZSkgY29uc3Q7CiAKLSAgICBGbG9h
dFJlY3QgZml4ZWRQb3NpdGlvblJlY3QoKSB7IHJldHVybiBGbG9hdFJlY3QobGFzdENvbW1pdHRl
ZFNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsgfTsKKyAgICBGbG9hdFJl
Y3QgZml4ZWRQb3NpdGlvblJlY3QoKSB7IHJldHVybiBGbG9hdFJlY3Qoc2Nyb2xsUG9zaXRpb24o
KSwgc2Nyb2xsYWJsZUFyZWFTaXplKCkpOyB9OwogCiAgICAgZmxvYXQgZnJhbWVTY2FsZUZhY3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVTY2FsZUZhY3RvcjsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgJKHJldmlz
aW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRl
Tm9kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUm
IGN1bXVsYXRpdmVEZWx0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllcnNBZnRl
ckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29u
c3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCkgPSAwOwogCiAgICAgU2Nyb2xsaW5nVHJl
ZU5vZGUqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgdm9pZCBzZXRQ
YXJlbnQoU2Nyb2xsaW5nVHJlZU5vZGUqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU6OmNvbW1pdFMKICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVhY2hhYmxlQ29udGVudHNTaXplKSkKICAgICAgICAgbV9y
ZWFjaGFibGVDb250ZW50c1NpemUgPSBzdGF0ZS5yZWFjaGFibGVDb250ZW50c1NpemUoKTsKIAot
ICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxQb3NpdGlvbikpCi0gICAgICAgIG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0
aW9uID0gc3RhdGUuc2Nyb2xsUG9zaXRpb24oKTsKLQogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpQYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KSkKICAgICAgICAgbV9wYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0ID0gc3Rh
dGUucGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCgpOwogCkBAIC0xMTMsMTMgKzExMCwxMyBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTCiAgICAgICAgIHNjcm9s
bGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Nyb2xsKHNjcm9sbGluZ05vZGVJ
RCgpLCBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSwgc2Nyb2xs
aW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRp
Y1Njcm9sbCgpKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdl
ZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgY3VtdWxhdGl2ZURlbHRhKQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBk
YXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hh
bmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpCiB7CiAgICAgaWYg
KCFtX2NoaWxkcmVuKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
Km1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxhdGl2ZURlbHRhKTsKKyAg
ICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUs
IGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZTo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCkBA
IC0xOTMsNyArMTkwLDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFBy
bwogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRvdGFsIGNvbnRlbnQgc2l6ZSBmb3IgcnViYmVy
IGJhbmQiLCBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCk7CiAgICAgaWYgKG1fcmVh
Y2hhYmxlQ29udGVudHNTaXplICE9IG1fdG90YWxDb250ZW50c1NpemUpCiAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgicmVhY2hhYmxlIGNvbnRlbnQgc2l6ZSIsIG1fcmVhY2hhYmxlQ29udGVudHNT
aXplKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxhc3QgY29tbWl0dGVkIHNjcm9sbCBwb3NpdGlv
biIsIG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKTsKIAogICAgIGlmICghbV9wYXJlbnRS
ZWxhdGl2ZVNjcm9sbGFibGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJwYXJlbnQgcmVsYXRpdmUgc2Nyb2xsYWJsZSByZWN0IiwgbV9wYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24gMjQxMTkxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0
IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBv
c2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShj
b25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4
ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBTY3JvbGxpbmdFdmVudFJl
c3VsdCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxv
YXRQb2ludCYpOwpAQCAtOTAsNyArOTAsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRS
ZWN0JiBsYXlvdXRWaWV3cG9ydCkgPSAwOwogCi0gICAgRmxvYXRQb2ludCBsYXN0Q29tbWl0dGVk
U2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RDb21taXR0ZWRTY3JvbGxQb3Np
dGlvbjsgfQogICAgIGNvbnN0IEZsb2F0U2l6ZSYgcmVhY2hhYmxlQ29udGVudHNTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9yZWFjaGFibGVDb250ZW50c1NpemU7IH0KICAgICBjb25zdCBMYXlvdXRS
ZWN0JiBwYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJl
bnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0OyB9CiAgICAgY29uc3QgSW50UG9pbnQmIHNjcm9sbE9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT3JpZ2luOyB9CkBAIC0xMjYsNyArMTI1LDYg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV90b3RhbENvbnRlbnRzU2l6ZTsKICAgICBGbG9h
dFNpemUgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7CiAgICAgRmxvYXRTaXplIG1f
cmVhY2hhYmxlQ29udGVudHNTaXplOwotICAgIEZsb2F0UG9pbnQgbV9sYXN0Q29tbWl0dGVkU2Ny
b2xsUG9zaXRpb247CiAgICAgTGF5b3V0UmVjdCBtX3BhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJl
Y3Q7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCShyZXZp
c2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0
LDYgQEAgU2Nyb2xsaW5nVHJlZSYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZAogICAgIHJldHVy
biBtX3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nVHJlZSgpOwogfQogCi1GbG9hdFBvaW50IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlv
bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Nyb2xsaW5nTm9kZS5sYXN0Q29tbWl0dGVkU2Ny
b2xsUG9zaXRpb24oKTsKLX0KLQogY29uc3QgRmxvYXRTaXplJiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlOjp0b3RhbENvbnRlbnRzU2l6ZSgpCiB7CiAgICAgcmV0dXJuIG1fc2Ny
b2xsaW5nTm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGUuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFdFQkNP
UkVfRVhQT1JUIFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUoKSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFBvaW50IGxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemUo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGbG9hdFNpemUmIHJlYWNoYWJsZUNvbnRlbnRz
U2l6ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEludFBvaW50JiBzY3JvbGxPcmlnaW4o
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgJKHJldmlzaW9uIDI0MTE5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhl
ZE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIFNj
cm9sbGluZ1RyZWVGaXhlZE5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAK
ICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVO
b2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdl
KGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBm
aXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3Jv
bGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlv
blJlY3QpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJl
YW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVG
aXhlZE5vZGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQkocmV2aXNpb24gMjQxMTkxKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzAsMTUgKzcwLDEzIEBAIHN0YXRpYyBpbmxpbmUgQ0dQb2lu
dCBvcGVyYXRvciooQ0dQb2ludCYKIH0KIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2Rl
Ojp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2Rl
JiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3Qg
RmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6
OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUm
IGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0KQogewogICAg
IHVzaW5nIG5hbWVzcGFjZSBTY3JvbGxpbmdUcmVlRml4ZWROb2RlSW50ZXJuYWw7CiAgICAgRmxv
YXRQb2ludCBsYXllclBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uRm9yVmll
d3BvcnRSZWN0KGZpeGVkUG9zaXRpb25SZWN0KTsKIAogICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSAiIDw8IHNjcm9sbGluZ05v
ZGVJRCgpIDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0
ICIgPDwgZml4ZWRQb3NpdGlvblJlY3QgPDwgIiB2aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQgIiA8
PCBtX2NvbnN0cmFpbnRzLnZpZXdwb3J0UmVjdEF0TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXll
ciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAi
IG5ldyBvZmZzZXQgZnJvbSB0b3AgIiA8PCAoZml4ZWRQb3NpdGlvblJlY3QueSgpIC0gbGF5ZXJQ
b3NpdGlvbi55KCkpKTsKIAotICAgIGxheWVyUG9zaXRpb24gLT0gY3VtdWxhdGl2ZURlbHRhOwot
CiAgICAgQ0dSZWN0IGxheWVyQm91bmRzID0gW21fbGF5ZXIgYm91bmRzXTsKICAgICBDR1BvaW50
IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5jaG9yUG9pbnRdOwogICAgIENHUG9pbnQgbmV3UG9z
aXRpb24gPSBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKSAr
IGFuY2hvclBvaW50ICogbGF5ZXJCb3VuZHMuc2l6ZTsKQEAgLTk2LDEwICs5NCw4IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6dXBkYXRlTGF5ZXIKICAgICBpZiAoIW1fY2hpbGRyZW4p
CiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0U2l6ZSBuZXdEZWx0YSA9IGxheWVyUG9zaXRp
b24gLSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSArIGN1bXVsYXRp
dmVEZWx0YTsKLQogICAgIGZvciAoYXV0byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAg
Y2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVk
UG9zaXRpb25SZWN0LCBuZXdEZWx0YSk7CisgICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRl
ckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCk7CiB9CiAKIHZv
aWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMs
IFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCShyZXZpc2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAKICAgICB2b2lkIGNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9s
bGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9u
UmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9k
ZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxp
bmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlLm1tCShyZXZpc2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgaW5saW5lIENHUG9pbnQgb3BlcmF0b3Iq
KENHUG9pbnQmCiB9CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUm
IGN1bXVsYXRpdmVEZWx0YSkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0KQogewogICAgIHVzaW5nIG5h
bWVzcGFjZSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUludGVybmFsOwogICAgIGJvb2wgYWRqdXN0
U3RpY2t5TGF5ZXIgPSBmYWxzZTsKQEAgLTg4LDggKzg4LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZTo6dXBkYXRlTGF5ZQogCiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywg
c3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgp
IDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0ICIgPDwg
Zml4ZWRQb3NpdGlvblJlY3QgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0ICIgPDwg
bV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxh
eWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIDw8
ICIgYWRqdXN0U3RpY2t5TGF5ZXIgIiA8PCBhZGp1c3RTdGlja3lMYXllcik7CiAKLSAgICBGbG9h
dFNpemUgZGVsdGFGb3JEZXNjZW5kYW50cyA9IGN1bXVsYXRpdmVEZWx0YTsKLQogICAgIGlmIChh
ZGp1c3RTdGlja3lMYXllcikgewogICAgICAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb24gPSBt
X2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFpbmlu
Z1JlY3QpOwogCkBAIC05NywxNSArOTUsMTMgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZTo6dXBkYXRlTGF5ZQogICAgICAgICBDR1BvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5j
aG9yUG9pbnRdOwogICAgICAgICBDR1BvaW50IG5ld1Bvc2l0aW9uID0gbGF5ZXJQb3NpdGlvbiAt
IG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkgKyBhbmNob3JQb2ludCAqIGxheWVyQm91
bmRzLnNpemU7CiAgICAgICAgIFttX2xheWVyIHNldFBvc2l0aW9uOm5ld1Bvc2l0aW9uXTsKLQot
ICAgICAgICBkZWx0YUZvckRlc2NlbmRhbnRzID0gbGF5ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWlu
dHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpICsgY3VtdWxhdGl2ZURlbHRhOwogICAgIH0K
IAogICAgIGlmICghbV9jaGlsZHJlbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRv
JiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIGRlbHRhRm9yRGVz
Y2VuZGFudHMpOworICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCiB2b2lkIFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmgJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYg
Zml4ZWRQb3NpdGlvblJlY3QsIGRvdWJsZSBzY2FsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRh
dGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGlu
Z1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVj
dCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYg
Y2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBGbG9hdFJlY3QmIGxheW91dFZpZXdwb3J0KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCShyZXZpc2lvbiAyNDExOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQxLDE3ICsxNDEsMTYgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOgogICAgICAgICByZXR1cm47CiAK
ICAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRh
dGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhlZFBvc2l0aW9uUmVjdCwgRmxv
YXRTaXplKCkpOworICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZSgqdGhpcywgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3Qg
U2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFNpemUmKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRh
dGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFu
Z2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JikKIHsKICAgICBpZiAoIW1fY2hpbGRyZW4pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCBmaXhlZFBvc2l0aW9uUmVjdChzY3JvbGxQb3Np
dGlvbigpLCBzY3JvbGxhYmxlQXJlYVNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6ICpt
X2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIEZsb2F0U2l6ZSgpKTsKKyAgICAgICAg
Y2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVk
UG9zaXRpb25SZWN0KCkpOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQm
IHNjcm9sbFBvc2l0aW9uKQpAQCAtMTkzLDcgKzE5Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZUlPUzoKICAgICAgICAgZml4ZWRQb3NpdGlvblJlY3QgPSBGbG9hdFJl
Y3Qoc2Nyb2xsUG9zaXRpb24sIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsKIAogICAgIGZvciAoYXV0
byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVy
QW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0LCBGbG9hdFNpemUoKSk7Cisg
ICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhl
ZFBvc2l0aW9uUmVjdCk7CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUlPUzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCShyZXZpc2lvbiAyNDExOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yIChhdXRvJiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZSgqdGhpcywgZml4ZWRQb3NpdGlvblJlY3QsIEZsb2F0
U2l6ZSgpKTsKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2Uo
KnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZs
b2F0UmVjdCYsIGRvdWJsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
TGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3QmLCBkb3VibGUpIG92ZXJy
aWRlIHsgfQogICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3Qg
RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIG92ZXJyaWRlOwogCi0gICAgdm9pZCB1cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2Vk
Tm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXpl
JiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0
IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRlOwogCiAgICAgU2Nyb2xsaW5n
RXZlbnRSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBv
dmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVNYWMubW0JKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MywxMSArOTMsMTAgQEAgU2Nyb2xsaW5nRXZlbnRSZXN1bHQgU2Nyb2xs
aW5nVHJlZU92ZXJmbAogCiAKIAotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1Ry
ZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwg
Y29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCit2b2lkIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVNYWM6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29u
c3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVk
UG9zaXRpb25SZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShjaGFuZ2VkTm9kZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGZpeGVkUG9zaXRpb25SZWN0KTsKLSAgICBVTlVTRURfUEFSQU0oY3VtdWxhdGl2
ZURlbHRhKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CkBAIC0xMzEsNyArMTMwLDcgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTQogICAgICAgICByZXR1cm47CiAKICAg
ICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhlZFBvc2l0aW9uUmVjdCwgeyB9KTsK
KyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZp
eGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBv
aW50JiBzY3JvbGxQb3NpdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDExOTMpCisrKyBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBACisy
MDE5LTAyLTA4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBD
b21wdXRlIGZpeGVkIHBvc2l0aW9uIHJlY3QgYmFzZWQgb24gU2Nyb2xsaW5nVHJlZSBzY3JvbGwg
cG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NDQzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5z
YWN0aW9uLmNwcDoKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlPjo6ZW5jb2RlKToKKyAgICAgICAgKEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlPjo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6ZHVtcCk6CisgICAgICAg
ICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZVJlbW90ZUlPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OmNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorCisgICAgICAgIEF2b2lkIGNvbnN0YW50bHkgcmVjb25z
dHJ1Y3RpbmcgdGhlIGRlbGVnYXRlLgorCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFu
Z2UpOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKToKKworICAgICAgICBTZXR0aW5nIHNjcm9sbCBwb3NpdGlvbiBiYXNlZCBv
biBub2RlIHRyZWUgaXMgd3JvbmcgYXMgaXQgb3ZlcnJpZGVzIHRoZSB1c2VyIHNjcm9sbCBwb3Np
dGlvbi4KKworICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKToKKworICAgICAgICBSZW1vdmUgdGhlIGN1
cnJlbnQgaW5jb3JyZWN0IGltcGxlbWVudGF0aW9uIGFuZCByZXBsYWNlIHdpdGggRklYTUUuCisg
ICAgICAgIFRoaXMgaXMgdXNlZCBmb3IgcHJvZ3JhbW1hdGljIHNjcm9sbGluZy4KKworICAgICAg
ICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp1cGRhdGVD
aGlsZE5vZGVzQWZ0ZXJTY3JvbGwpOgorCisgICAgICAgIERvbid0IGNvbXB1dGUgdGhlIGRlbHRh
LiBJdCBpcyBubyBsb25nZXIgbmVlZGVkIHNpbmNlIHRoZSBmaXhlZCBwb3NpdGlvbiByZWN0IHdl
IGdldCBpcyB0aGUgY29ycmVjdCBvbmUuCisKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsVmlld0RpZFNjcm9sbCBjb25zdCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnVw
ZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOiBEZWxldGVkLgorCisgICAgICAgIFRoaXMg
d2FzIGluY29ycmVjdCBmb3IgZnJhbWVzIGFuZCBkaWRuJ3QgZG8gYW55dGhpbmcgYW55d2F5IHNv
IHJlbW92ZSBpdC4KKwogMjAxOS0wMi0wOCAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5j
b20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2Fj
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCShyZXZpc2lvbiAy
NDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNyw3
ICsxMjcsNiBAQCB2b2lkIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpCiAgICAg
U0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
YWJsZUFyZWFTaXplLCBzY3JvbGxhYmxlQXJlYVNpemUpCiAgICAgU0NST0xMSU5HX05PREVfRU5D
T0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUsIHRvdGFs
Q29udGVudHNTaXplKQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSwgcmVhY2hhYmxlQ29udGVudHNTaXpl
KQotICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
OlNjcm9sbFBvc2l0aW9uLCBzY3JvbGxQb3NpdGlvbikKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNP
REUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxPcmlnaW4sIHNjcm9sbE9yaWdp
bikKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6Okhvcml6b250YWxTbmFwT2Zmc2V0cywgaG9y
aXpvbnRhbFNuYXBPZmZzZXRzKQpAQCAtMjE2LDcgKzIxNSw2IEBAIGJvb2wgQXJndW1lbnRDb2Rl
cjxTY3JvbGxpbmdTdGF0ZVNjcm9sbGkKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxhYmxlQXJlYVNpemUsIEZsb2F0U2l6ZSwgc2V0
U2Nyb2xsYWJsZUFyZWFTaXplKTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpUb3RhbENvbnRlbnRzU2l6ZSwgRmxvYXRTaXplLCBzZXRUb3Rh
bENvbnRlbnRzU2l6ZSk7CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZTo6UmVhY2hhYmxlQ29udGVudHNTaXplLCBGbG9hdFNpemUsIHNldFJlYWNo
YWJsZUNvbnRlbnRzU2l6ZSk7Ci0gICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsUG9zaXRpb24sIEZsb2F0UG9pbnQsIHNldFNjcm9sbFBv
c2l0aW9uKTsKICAgICBTQ1JPTExJTkdfTk9ERV9ERUNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOjpTY3JvbGxPcmlnaW4sIEludFBvaW50LCBzZXRTY3JvbGxPcmlnaW4pOwogI2lmIEVO
QUJMRShDU1NfU0NST0xMX1NOQVApCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6SG9yaXpvbnRhbFNuYXBPZmZzZXRzLCBWZWN0b3I8ZmxvYXQ+
LCBzZXRIb3Jpem9udGFsU25hcE9mZnNldHMpOwpAQCAtNTEyLDkgKzUxMCw2IEBAIHN0YXRpYyB2
b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFMKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0
aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSkpCiAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgi
cmVhY2hhYmxlLWNvbnRlbnRzLXNpemUiLCBub2RlLnJlYWNoYWJsZUNvbnRlbnRzU2l6ZSgpKTsK
IAotICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsUG9zaXRpb24pKQotICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInNjcm9sbC1wb3NpdGlvbiIsIG5vZGUuc2Nyb2xsUG9zaXRpb24o
KSk7Ci0KICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbE9yaWdpbikpCiAgICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Nyb2xsLW9yaWdpbiIsIG5vZGUuc2Nyb2xsT3JpZ2luKCkp
OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlUmVtb3RlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6
RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgbGF5b3V0Vmlld3BvcnQpIG92
ZXJyaWRlOwogCiAgICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBmaXhlZFBv
c2l0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92
ZXJyaWRlOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1M+IG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlOwogfTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZVJlbW90ZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVS
ZW1vdGVJT1MubW0JKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMsMTAgKzUzLDggQEAgdm9pZCBTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtbwogICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVJT1M6OmNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oc3RhdGVOb2RlKTsKIAogICAgIGlm
IChzdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7Ci0gICAgICAgIGlmIChzY3JvbGxDb250YWluZXJM
YXllcigpKQorICAgICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSAmJiAhbV9zY3JvbGxp
bmdOb2RlRGVsZWdhdGUpCiAgICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9IHN0
ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4oKnRo
aXMpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSA9
IG51bGxwdHI7CiAgICAgfQogCiAgICAgaWYgKG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlKQpAQCAt
NzEsMTUgKzY5LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtbwog
ICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVu
KGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4oc3RhdGVOb2RlKSk7CiB9CiAK
LXZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6dXBkYXRlTGF5
ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5v
ZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYg
Y3VtdWxhdGl2ZURlbHRhKQotewotICAgIGlmIChtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSkgewot
ICAgICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIGN1bXVsYXRpdmVEZWx0YSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5n
Tm9kZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjaGFuZ2VkTm9kZSwgZml4
ZWRQb3NpdGlvblJlY3QsIGN1bXVsYXRpdmVEZWx0YSk7Ci19Ci0KIEZsb2F0UG9pbnQgU2Nyb2xs
aW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlPUzo6c2Nyb2xsUG9zaXRpb24oKSBjb25z
dAogewogICAgIGlmIChtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5o
CShyZXZpc2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsOCArNTEsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlTGF5ZXJz
QWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIGZpeGVkUG9zaXRp
b25SZWN0LCBkb3VibGUgc2NhbGUpIG92ZXJyaWRlIHsgfQogICAgIHZvaWQgdXBkYXRlTGF5ZXJz
QWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9z
aXRpb24pIG92ZXJyaWRlOwogCi0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3Qg
V2ViQ29yZTo6RmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6Rmxv
YXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwotCiAgICAgV2ViQ29yZTo6U2Nyb2xs
aW5nRXZlbnRSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVdo
ZWVsRXZlbnQmKSBvdmVycmlkZSB7IHJldHVybiBTY3JvbGxpbmdFdmVudFJlc3VsdDo6RGlkTm90
SGFuZGxlRXZlbnQ7IH0KIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TPiBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1MubW0JKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5t
bQkod29ya2luZyBjb3B5KQpAQCAtNjYsMTEgKzY2LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSQogICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLT5jb21taXRT
dGF0ZUFmdGVyQ2hpbGRyZW4oZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlPihz
dGF0ZU5vZGUpKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVO
b2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29u
c3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCi17Ci0gICAgbV9zY3JvbGxpbmdOb2RlRGVs
ZWdhdGUtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVk
UG9zaXRpb25SZWN0LCBjdW11bGF0aXZlRGVsdGEpOwotfQotCiBGbG9hdFBvaW50IFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsK
ICAgICByZXR1cm4gbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUtPnNjcm9sbFBvc2l0aW9uKCk7Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1MuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDcgKzYxLDYgQEAgcHVibGljOgogICAgIHZv
aWQgcmVzZXRTY3JvbGxWaWV3RGVsZWdhdGUoKTsKICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oY29uc3QgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlJik7CiAg
ICAgdm9pZCBjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgV2ViQ29yZTo6U2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlJik7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9y
Q2hhbmdlKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgV2ViQ29yZTo6
RmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpOwogICAgIFdlYkNvcmU6OkZsb2F0UG9pbnQgc2Ny
b2xsUG9zaXRpb24oKSBjb25zdDsKICAgICB2b2lkIHNldFNjcm9sbExheWVyUG9zaXRpb24oY29u
c3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogICAgIHZvaWQgdXBkYXRlQ2hpbGROb2Rlc0FmdGVy
U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1MubW0JKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjIzLDE3ICsyMjMsMTQgQEAgdm9pZCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSQogewogICAgIFNldEZvclNjb3BlPGJvb2w+IHVw
ZGF0aW5nQ2hhbmdlKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlLCB0cnVlKTsKICAgICBpZiAoc2Ny
b2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU6OlNjcm9sbENvbnRhaW5lckxheWVyKQotICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
ZWRDb250ZW50c0xheWVyKQogICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdl
ZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6VG90YWxDb250ZW50c1NpemUp
CiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFibGVDb250ZW50c1NpemUpCi0gICAgICAgIHx8
IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpTY3JvbGxQb3NpdGlvbikKICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2Rl
Lmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbE9y
aWdpbikpIHsKICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TCiAgICAgICAgIFVJ
U2Nyb2xsVmlldyAqc2Nyb2xsVmlldyA9IChVSVNjcm9sbFZpZXcgKilbc2Nyb2xsTGF5ZXIoKSBk
ZWxlZ2F0ZV07CiAgICAgICAgIEFTU0VSVChbc2Nyb2xsVmlldyBpc0tpbmRPZkNsYXNzOltVSVNj
cm9sbFZpZXcgc2VsZl1dKTsKIAotICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5l
ckxheWVyKQotICAgICAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9w
ZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikp
IHsKKyAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Ny
b2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikpIHsKICAgICAg
ICAgICAgIGlmICghbV9zY3JvbGxWaWV3RGVsZWdhdGUpCiAgICAgICAgICAgICAgICAgbV9zY3Jv
bGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tTY3JvbGxpbmdOb2RlU2Nyb2xsVmlld0RlbGVn
YXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGU6dGhpc10pOwogCkBA
IC0yNDcsMTIgKzI0NCw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUkKICAgICAgICAgICAgIHJlY29tcHV0ZUluc2V0cyA9IHRydWU7CiAgICAgICAgIH0KIAotICAg
ICAgICBpZiAoKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxQb3NpdGlvbikKLSAgICAgICAgICAgIHx8IHNjcm9s
bGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxPcmlnaW4pKQotICAgICAgICAgICAgJiYgIVttX3Njcm9sbFZpZXdEZWxlZ2F0
ZSBfaXNJblVzZXJJbnRlcmFjdGlvbl0pIHsKLSAgICAgICAgICAgIHNjcm9sbFZpZXcuY29udGVu
dE9mZnNldCA9IHNjcm9sbGluZ1N0YXRlTm9kZS5zY3JvbGxQb3NpdGlvbigpICsgc2Nyb2xsT3Jp
Z2luKCk7CisgICAgICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2luKSkKICAgICAgICAgICAg
IHJlY29tcHV0ZUluc2V0cyA9IHRydWU7Ci0gICAgICAgIH0KIAogICAgICAgICBpZiAocmVjb21w
dXRlSW5zZXRzKSB7CiAgICAgICAgICAgICBVSUVkZ2VJbnNldHMgaW5zZXRzID0gVUlFZGdlSW5z
ZXRzTWFrZSgwLCAwLCAwLCAwKTsKQEAgLTI3NSwxNyArMjY4LDYgQEAgdm9pZCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdl
KGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBm
aXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCi17Ci0g
ICAgaWYgKCFzY3JvbGxpbmdOb2RlKCkuY2hpbGRyZW4oKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgRmxvYXRTaXplIHNjcm9sbERlbHRhID0gbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkg
LSBzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsUG9zaXRpb24oKTsKLQotICAgIGZvciAoYXV0byYgY2hp
bGQgOiAqc2Nyb2xsaW5nTm9kZSgpLmNoaWxkcmVuKCkpCi0gICAgICAgIGNoaWxkLT51cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwg
Y3VtdWxhdGl2ZURlbHRhICsgc2Nyb2xsRGVsdGEpOwotfQotCiBGbG9hdFBvaW50IFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsK
ICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlMKQEAgLTI5Nyw3ICsyNzksNyBAQCBGbG9h
dFBvaW50IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsCiAKIHZvaWQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKIHsKLSAgICBbbV9zY3JvbGxMYXllciBzZXRQb3Np
dGlvbjpDR1BvaW50TWFrZShzY3JvbGxQb3NpdGlvbi54KCkgKyBzY3JvbGxPcmlnaW4oKS54KCks
IHNjcm9sbFBvc2l0aW9uLnkoKSArIHNjcm9sbE9yaWdpbigpLnkoKSldOworICAgIC8vIEZJWE1F
OiBTZXQgdGhlIHNjcm9sbCBwb3NpdGlvbiBpbiByZXNwb25zZSB0byBwcm9ncmFtbWF0aWMgc2Ny
b2xsLgogICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7CiB9
CiAKQEAgLTMxMiwxMCArMjk0LDkgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSQogICAgICAgICBmaXhlZFBvc2l0aW9uUmVjdCA9IGZyYW1lTm9kZS0+Zml4ZWRQb3Np
dGlvblJlY3QoKTsKICAgICBlbHNlCiAgICAgICAgIGZpeGVkUG9zaXRpb25SZWN0ID0gc2Nyb2xs
aW5nVHJlZSgpLmZpeGVkUG9zaXRpb25SZWN0KCk7Ci0gICAgRmxvYXRTaXplIHNjcm9sbERlbHRh
ID0gbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkgLSBzY3JvbGxQb3NpdGlvbjsKIAogICAg
IGZvciAoYXV0byYgY2hpbGQgOiAqc2Nyb2xsaW5nTm9kZSgpLmNoaWxkcmVuKCkpCi0gICAgICAg
IGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKHNjcm9sbGluZ05vZGUoKSwg
Zml4ZWRQb3NpdGlvblJlY3QsIHNjcm9sbERlbHRhKTsKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2Uoc2Nyb2xsaW5nTm9kZSgpLCBmaXhlZFBvc2l0aW9uUmVj
dCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Ny
b2xsV2lsbFN0YXJ0KCkgY29uc3QKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MTE5MykKKysrIExheW91
dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE5LTAy
LTA4ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb21wdXRl
IGZpeGVkIHBvc2l0aW9uIHJlY3QgYmFzZWQgb24gc2Nyb2xsaW5nIHRyZWUgdmlldyBvZiB0aGUg
c2Nyb2xsIHBvc2l0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTQ0MzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUZXN0IGJ5IEZyZWRlcmljIFdhbmcuCisKKyAgICAgICAgKiBmYXN0L3Njcm9sbGlu
Zy9pb3Mvc2Nyb2xsLWlmcmFtZS1leHBlY3RlZC5odG1sOgorICAgICAgICAqIGZhc3Qvc2Nyb2xs
aW5nL2lvcy9zY3JvbGwtaWZyYW1lLmh0bWw6CisKIDIwMTktMDItMDggIEVyaWMgTGlhbmcgIDxl
cmljbGlhbmdAYXBwbGUuY29tPgogCiAgICAgICAgIENoZWNrIGlmIHJlY2VpdmUgQVhQcmVzc0Rp
ZEZhaWwgbm90aWZpY2F0aW9uIHdoZW4gcGVyZm9ybWluZyBBWFByZXNzIGFjdGlvbiBvbiBkaXNh
YmxlZCBNZW51TGlzdC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3Jv
bGwtaWZyYW1lLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMjQxMTkx
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUtZXhwZWN0
ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksOCBAQAogICAgICAgICA8ZGl2IGNs
YXNzPXRlc3RkaXY+PC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9dGVzdGRpdj48L2Rpdj4KICAg
ICAgICAgPGRpdiBjbGFzcz10ZXN0ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPXRlc3Rk
aXY+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9dGVzdGRpdj48L2Rpdj4KICAgICA8L2Rpdj4K
IDwvYm9keT4KIDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9z
Y3JvbGwtaWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvaW9zL3Njcm9sbC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMjQxMTkxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpA
QCAtMzcsMTEgKzM3LDE5IEBACiAgICAgICAgICBhd2FpdCB0b3VjaEFuZERyYWdGcm9tUG9pbnRU
b1BvaW50KGMueCwgYy55LCBjLngsIGMueSAtIDIwMDApOwogICAgICAgICAgYXdhaXQgbGlmdFVw
QXRQb2ludChjLngsIGMueSAtIDIwMDApOwogCisgICAgICAgICBjID0gY2VudGVyT2YoInBvc2l0
aW9uRml4ZWQiKTsKKyAgICAgICAgIGF3YWl0IHRvdWNoQW5kRHJhZ0Zyb21Qb2ludFRvUG9pbnQo
Yy54LCBjLnksIGMueCAtIDE1MCwgYy55IC0gMTUwKTsKKyAgICAgICAgIGF3YWl0IGxpZnRVcEF0
UG9pbnQoYy54IC0gMTUwLCBjLnkgLSAxNTApOworCisgICAgICAgICBjID0gY2VudGVyT2YoInBv
c2l0aW9uU3RpY2t5Iik7CisgICAgICAgICBhd2FpdCB0b3VjaEFuZERyYWdGcm9tUG9pbnRUb1Bv
aW50KGMueCwgYy55LCBjLngsIGMueSAtIDE1MCk7CisgICAgICAgICBhd2FpdCBsaWZ0VXBBdFBv
aW50KGMueCwgYy55IC0gMTUwKTsKKwogICAgICAgICAgLy8gV2FpdCBmb3Igc2Nyb2xsaW5nIHRv
IHN0YWJpbGl6ZSBhbmQgZm9yIHNjcm9sbGJhcnMgdG8gZGlzYXBwZWFyLgogICAgICAgICAgc2V0
VGltZW91dCgoKSA9PiB7dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IH0sIDIwMDApOwogICAgICAg
IH0KIAotICAgICAgIHZhciBmcmFtZVRvTG9hZENvdW50ID0gNDsKKyAgICAgICB2YXIgZnJhbWVU
b0xvYWRDb3VudCA9IDY7CiAgICAgICAgZnVuY3Rpb24gbmV3RnJhbWVMb2FkZWQoKSB7CiAgICAg
ICAgICAgIGZyYW1lVG9Mb2FkQ291bnQtLTsKICAgICAgICAgICAgaWYgKGZyYW1lVG9Mb2FkQ291
bnQgPT0gMCkKQEAgLTg1LDYgKzkzLDE5IEBACiAgICAgICAgICAgICA8ZGl2IHN0eWxlPSd3aWR0
aDogMTAwcHg7IGhlaWdodDogNTAwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyc+PC9kaXY+CiAgICAg
ICAgICAgICA8L2JvZHk+IiBvbmxvYWQ9Im5ld0ZyYW1lTG9hZGVkKCkiPgogICAgICAgICA8L2lm
cmFtZT4KKyAgICAgICAgPGlmcmFtZSBpZD0icG9zaXRpb25GaXhlZCIgc2Nyb2xsaW5nPSJ5ZXMi
IHNyY2RvYz0iCisgICAgICAgICAgICA8Ym9keSBzdHlsZT0ncG9zaXRpb246IHJlbGF0aXZlOyBt
YXJnaW46IDA7IHdpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweCc+CisgICAgICAgICAgICAgICAg
PGRpdiBzdHlsZT0ncG9zaXRpb246IGZpeGVkOyB3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsg
YmFja2dyb3VuZDogZ3JlZW47Jz48L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdw
b3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogMHB4OyByaWdodDogMHB4OyB3aWR0aDogMTAwcHg7
IGhlaWdodDogNTBweDsgYmFja2dyb3VuZDogZ3JlZW47Jz48L2Rpdj4KKyAgICAgICAgICAgIDwv
Ym9keT4iIG9ubG9hZD0ibmV3RnJhbWVMb2FkZWQoKSI+CisgICAgICAgIDwvaWZyYW1lPgorICAg
ICAgICA8aWZyYW1lIGlkPSJwb3NpdGlvblN0aWNreSIgc2Nyb2xsaW5nPSJ5ZXMiIHNyY2RvYz0i
CisgICAgICAgICAgICA8Ym9keSBzdHlsZT0ncG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW46IDA7
IHdpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweCc+CisgICAgICAgICAgICAgICAgPGRpdiBzdHls
ZT0naGVpZ2h0OiAxMDBweCc+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ncG9z
aXRpb246IC13ZWJraXQtc3RpY2t5OyBwb3NpdGlvbjogc3RpY2t5OyBsZWZ0OiAwcHg7IHRvcDog
MHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZDogZ3JlZW47Jz48L2Rp
dj4KKyAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRv
bTogMHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZDogZ3JlZW47Jz48
L2Rpdj4KKyAgICAgICAgICAgIDwvYm9keT4iIG9ubG9hZD0ibmV3RnJhbWVMb2FkZWQoKSI+Cisg
ICAgICAgIDwvaWZyYW1lPgogICAgIDwvZGl2PgogPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>361502</attachid>
            <date>2019-02-08 05:25:50 -0800</date>
            <delta_ts>2019-02-08 05:25:50 -0800</delta_ts>
            <desc>test case with busy main thread</desc>
            <filename>fixed-frame-scroll.html</filename>
            <type>text/html</type>
            <size>6123</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+Cgo8aHRtbD4KPGhlYWQ+CiAgICA8c3R5bGU+CiAgICAgICAgLnNjcm9s
bGVyIHsKICAgICAgICAgICAgbWFyZ2luOiAyMHB4OwogICAgICAgICAgICB3aWR0aDogNDAwcHg7
CiAgICAgICAgICAgIGhlaWdodDogNDAwcHg7CiAgICAgICAgICAgIGJvcmRlcjogMjBweCBzb2xp
ZCByZ2JhKDAsIDAsIDEyOCwgMC41KTsKICAgICAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAg
ICB9CiAgICAgICAgLnBvc2l0aW9uZWQgewogICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAg
ICAgICAgICAgIGxlZnQ6IDMwMHB4OwogICAgICAgICAgICBoZWlnaHQ6IDIwMHB4OwogICAgICAg
ICAgICB3aWR0aDogMjAwcHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5pbnNpZGUgewog
ICAgICAgICAgICB0b3A6IDEwMHB4OwogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBvcmFu
Z2U7CiAgICAgICAgICAgIHotaW5kZXg6IDI7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC5v
dXRzaWRlIHsKICAgICAgICAgICAgdG9wOiA0MDBweDsKICAgICAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogZ3JlZW47CiAgICAgICAgfQogICAgPC9zdHlsZT4KICAgIDxzY3JpcHQ+CgogICAgICAg
IGZ1bmN0aW9uIHNsZWVwKG1pbGxpcykKICAgICAgICB7CiAgICAgICAgICAgIHZhciBkYXRlID0g
bmV3IERhdGUoKTsKICAgICAgICAgICAgdmFyIGN1ckRhdGUgPSBudWxsOwogICAgICAgICAgICBk
byB7CiAgICAgICAgICAgICAgICBjdXJEYXRlID0gbmV3IERhdGUoKTsKICAgICAgICAgICAgfSB3
aGlsZShjdXJEYXRlLWRhdGUgPCBtaWxsaXMpOwogICAgICAgIH0gICAgICAgIAogICAgICAgIAog
ICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgKCkgPT4gewogICAgICAgICAg
ICBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICAgICAgICAgICAgICBzbGVlcCgyMDApOwogICAgICAg
ICAgICB9LCA1MCk7CiAgICAgICAgfSwgZmFsc2UpOwogICAgPC9zY3JpcHQ+CjwvaGVhZD4KPGJv
ZHk+Cgo8cD5UaGUgb3JhbmdlIGJveCBzaG91bGQgYmUgY2xpcHBlZCwgYnV0IHNjcm9sbCBpbiBm
cm9udCBvZiB0aGUgZ3JlZW4gYm94LjwvcD4KCjxpZnJhbWUgd2lkdGg9NDAwIGhlaWdodD00MDAg
IHNyY2RvYz0iCiAgICAgICAgPHN0eWxlPgogICAgICAgIC5wb3NpdGlvbmVkIHsKICAgICAgICAg
ICAgcG9zaXRpb246IGZpeGVkOwogICAgICAgICAgICB0b3A6IDEwMHB4OwogICAgICAgICAgICBs
ZWZ0OiAzMDBweDsKICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDsKICAgICAgICAgICAgd2lkdGg6
IDIwMHB4OwogICAgICAgIH0KICAgICAgICAuaW5zaWRlIHsKICAgICAgICAgICAgYmFja2dyb3Vu
ZC1jb2xvcjogb3JhbmdlOwogICAgICAgICAgICB6LWluZGV4OiAyOwogICAgICAgIH0KICAgIDwv
c3R5bGU+CiAgICA8cD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRp
cGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3Jl
IGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5v
c3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEg
Y29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0
IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBh
cmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBz
dW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJv
cnVtLjwvcD4KICAgIDxwPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBh
ZGlwaXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJv
cmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMg
bm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBl
YSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVy
aXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEg
cGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQs
IHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxh
Ym9ydW0uPC9wPgogICAgPHA+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVy
IGFkaXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxh
Ym9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVp
cyBub3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4
IGVhIGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5k
ZXJpdCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxs
YSBwYXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVu
dCwgc3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3Qg
bGFib3J1bS48L3A+CiAgICA8cD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0
dXIgYWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQg
bGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBx
dWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAg
ZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhl
bmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51
bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lk
ZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVz
dCBsYWJvcnVtLjwvcD4KICAgIDxkaXYgY2xhc3M9J3Bvc2l0aW9uZWQgaW5zaWRlJz48L2Rpdj4K
ICAgIDxwPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlwaXNpY2lu
ZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9s
b3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBl
eGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2Rv
IGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9s
dXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIu
IEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4g
Y3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW0uPC9w
PgogICAgPHA+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2lj
aW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9yZSBldCBk
b2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBub3N0cnVk
IGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVhIGNvbW1v
ZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJpdCBpbiB2
b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBwYXJpYXR1
ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwgc3VudCBp
biBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFib3J1bS48
L3A+CiAgICA8cD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlz
aWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0
IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3Ry
dWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29t
bW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGlu
IHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlh
dHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50
IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVt
LjwvcD4KICAgIDxwPkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZWN0ZXR1ciBhZGlw
aXNpY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUg
ZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9z
dHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBj
b21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQg
aW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFy
aWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1
bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9y
dW0uPC9wPgogICAgPHA+TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFk
aXBpc2ljaW5nIGVsaXQsIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50IHV0IGxhYm9y
ZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiBVdCBlbmltIGFkIG1pbmltIHZlbmlhbSwgcXVpcyBu
b3N0cnVkIGV4ZXJjaXRhdGlvbiB1bGxhbWNvIGxhYm9yaXMgbmlzaSB1dCBhbGlxdWlwIGV4IGVh
IGNvbW1vZG8gY29uc2VxdWF0LiBEdWlzIGF1dGUgaXJ1cmUgZG9sb3IgaW4gcmVwcmVoZW5kZXJp
dCBpbiB2b2x1cHRhdGUgdmVsaXQgZXNzZSBjaWxsdW0gZG9sb3JlIGV1IGZ1Z2lhdCBudWxsYSBw
YXJpYXR1ci4gRXhjZXB0ZXVyIHNpbnQgb2NjYWVjYXQgY3VwaWRhdGF0IG5vbiBwcm9pZGVudCwg
c3VudCBpbiBjdWxwYSBxdWkgb2ZmaWNpYSBkZXNlcnVudCBtb2xsaXQgYW5pbSBpZCBlc3QgbGFi
b3J1bS48L3A+CiAgICA8cD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIg
YWRpcGlzaWNpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFi
b3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlz
IG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXgg
ZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRl
cml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxh
IHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50
LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBs
YWJvcnVtLjwvcD4iPgo8L2lmcmFtZT4KCjxkaXYgY2xhc3M9InBvc2l0aW9uZWQgb3V0c2lkZSI+
PC9kaXY+Cgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361503</attachid>
            <date>2019-02-08 05:50:02 -0800</date>
            <delta_ts>2019-02-08 06:53:43 -0800</delta_ts>
            <desc>patch</desc>
            <filename>frame-fixed-ios-2.patch</filename>
            <type>text/plain</type>
            <size>49503</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTAyLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb21wdXRlIGZpeGVkIHBvc2l0
aW9uIHJlY3QgYmFzZWQgb24gc2Nyb2xsaW5nIHRyZWUgdmlldyBvZiB0aGUgY3VycmVudCBzY3Jv
bGwgcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDQzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEl0IHNob3VsZCBiZSBzY3JvbGxpbmcgdHJlZXMgcmVzcG9uc2liaWxpdHkgdG8gaW5jb3Jw
b3JhdGUgc2Nyb2xsIHBvc2l0aW9ucyB3aGVuIGNvbXB1dGluZyBmaW5hbCBwb3NpdGlvbnMgZm9y
IGxheWVycy4KKyAgICAgICAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gYXJjaGl2ZSBnbGl0Y2gt
ZnJlZSBwb3NpdGlvbmluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgY29kZSB0aGF0
IHRoYXQgcGFzc2VzIHRoZSBsYXN0IGNvbW1pdHRlZCBzY3JvbGwgcG9zaXRpb24gdmlhIHRoZSBz
dGF0ZSB0cmVlIGFuZCBtb2RpZmllcyBpdHMgb25seQorICAgICAgICBjbGllbnQgKGluIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MpIHRvIHVzZSB0aGUgVUlTY3JvbGxWaWV3
IHNjcm9sbGluZyBwb3NpdGlvbi4KKworICAgICAgICBUZXN0IGJ5IEZyZWRlcmljIFdhbmcuCisK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sbGlu
Z05vZGVHZW9tZXRyeSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0QWxsUHJvcGVydGllc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQ
b3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNjcm9sbFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZSk6CisKKyAgICAgICAgUmVtb3ZlIHRoZSAnY3VtdWxhdGl2ZURlbHRhJyBw
YXJhbWV0ZXIuIEl0IGlzIG5vdCBuZWVkZWQgc2luY2UgJ2ZpeGVkUG9zaXRpb25SZWN0JyBpcyBj
b3JyZWN0IHdpdGhvdXQgYWRqdXN0bWVudHMuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmZpeGVkUG9zaXRpb25SZWN0KToKKworICAg
ICAgICBDb21wdXRlIGJhc2VkIG9uIHNjcm9sbGluZyB0cmVlIHZpZXcgb2YgdGhlIHNjcm9sbGlu
ZyBwb3NpdGlvbi4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2Rl
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6bGFzdENvbW1pdHRlZFNjcm9sbFBv
c2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4
ZWROb2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0
b3JDaGFuZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlSU9TLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0Fm
dGVyU2Nyb2xsKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24pOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFj
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWM6OnNl
dFNjcm9sbExheWVyUG9zaXRpb24pOgorCiAyMDE5LTAyLTA4ICBFcmljIExpYW5nICA8ZXJpY2xp
YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBXaGVuIHBlcmZvcm1pbmcgQVhQcmVzcywgY2hlY2sg
dG8gc2VlIGlmIHRoZSBtZW51IGxpc3QgaXMgZGlzYWJsZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNiw3
ICs2MzYsNiBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sCiAKICAg
ICBzY3JvbGxpbmdOb2RlLnNldFBhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJlY3Qoc2Nyb2xsaW5n
R2VvbWV0cnkucGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7CiAgICAgc2Nyb2xsaW5nTm9k
ZS5zZXRTY3JvbGxPcmlnaW4oc2Nyb2xsaW5nR2VvbWV0cnkuc2Nyb2xsT3JpZ2luKTsKLSAgICBz
Y3JvbGxpbmdOb2RlLnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbGluZ0dlb21ldHJ5LnNjcm9sbFBv
c2l0aW9uKTsKICAgICBzY3JvbGxpbmdOb2RlLnNldFRvdGFsQ29udGVudHNTaXplKHNjcm9sbGlu
Z0dlb21ldHJ5LmNvbnRlbnRTaXplKTsKICAgICBzY3JvbGxpbmdOb2RlLnNldFJlYWNoYWJsZUNv
bnRlbnRzU2l6ZShzY3JvbGxpbmdHZW9tZXRyeS5yZWFjaGFibGVDb250ZW50U2l6ZSk7CiAgICAg
c2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxlQXJlYVNpemUoc2Nyb2xsaW5nR2VvbWV0cnkuc2Ny
b2xsYWJsZUFyZWFTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAkocmV2aXNp
b24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0CiAgICAgLCBtX3RvdGFsQ29udGVu
dHNTaXplKHN0YXRlTm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpKQogICAgICwgbV9yZWFjaGFibGVD
b250ZW50c1NpemUoc3RhdGVOb2RlLnJlYWNoYWJsZUNvbnRlbnRzU2l6ZSgpKQogICAgICwgbV9w
YXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0KHN0YXRlTm9kZS5wYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KCkpCi0gICAgLCBtX3Njcm9sbFBvc2l0aW9uKHN0YXRlTm9kZS5zY3JvbGxQb3Np
dGlvbigpKQogICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihzdGF0ZU5vZGUucmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb24oKSkKICAgICAsIG1fc2Nyb2xsT3JpZ2luKHN0YXRlTm9kZS5zY3Jv
bGxPcmlnaW4oKSkKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtNjgsNyArNjcsNiBA
QCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0QWxsCiAgICAgc2V0UHJvcGVy
dHlDaGFuZ2VkQml0KFRvdGFsQ29udGVudHNTaXplKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRC
aXQoUmVhY2hhYmxlQ29udGVudHNTaXplKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoUGFy
ZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNj
cm9sbFBvc2l0aW9uKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsT3JpZ2luKTsK
ICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsYWJsZUFyZWFQYXJhbXMpOwogICAgIHNl
dFByb3BlcnR5Q2hhbmdlZEJpdChSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbik7CkBAIC0xMjMsMTUg
KzEyMSw2IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRQYXIKICAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWQoUGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKLXsKLSAgICBpZiAobV9zY3JvbGxQb3NpdGlvbiA9
PSBzY3JvbGxQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zY3JvbGxQb3NpdGlv
biA9IHNjcm9sbFBvc2l0aW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChTY3JvbGxQb3NpdGlv
bik7Ci19Ci0KIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxPcmln
aW4oY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbikKIHsKICAgICBpZiAobV9zY3JvbGxPcmln
aW4gPT0gc2Nyb2xsT3JpZ2luKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9u
IDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoK
ICAgICAgICAgVG90YWxDb250ZW50c1NpemUsCiAgICAgICAgIFJlYWNoYWJsZUNvbnRlbnRzU2l6
ZSwKICAgICAgICAgUGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCwKLSAgICAgICAgU2Nyb2xs
UG9zaXRpb24sCiAgICAgICAgIFNjcm9sbE9yaWdpbiwKICAgICAgICAgU2Nyb2xsYWJsZUFyZWFQ
YXJhbXMsCiAgICAgICAgIFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLApAQCAtNzMsOSArNzIsNiBA
QCBwdWJsaWM6CiAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFyZW50UmVsYXRpdmVTY3JvbGxhYmxl
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdDsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdChj
b25zdCBMYXlvdXRSZWN0Jik7CiAKLSAgICBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKLQogICAgIGNvbnN0
IEludFBvaW50JiBzY3JvbGxPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9yaWdpbjsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50
Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVG
cmFtZUhvc3RpbmdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5jcHAJKHJldmlzaW9uIDI0MTE5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZUhv
c3RpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTMgKzU3LDEzIEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGU6OmNvbW0KICAgICAgICAgbV9wYXJlbnRSZWxhdGl2
ZVNjcm9sbGFibGVSZWN0ID0gZnJhbWVIb3N0aW5nU3RhdGVOb2RlLnBhcmVudFJlbGF0aXZlU2Ny
b2xsYWJsZVJlY3QoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6
dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYg
Y2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZs
b2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5n
Tm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVl
Tm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpCiB7
CiAgICAgaWYgKCFtX2NoaWxkcmVuKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8m
IGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFu
Y2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxhdGl2ZURl
bHRhKTsKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hh
bmdlZE5vZGUsIGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogTGF5b3V0UG9pbnQgU2Nyb2xsaW5n
VHJlZUZyYW1lSG9zdGluZ05vZGU6OnBhcmVudFRvTG9jYWxQb2ludChMYXlvdXRQb2ludCBwb2lu
dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVGcmFtZUhvc3RpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGUuaAkocmV2aXNpb24gMjQxMTkx
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lSG9z
dGluZ05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAg
IFNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdO
b2RlSUQpOwogCiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9s
bGluZ1N0YXRlTm9kZSYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0
UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRh
KSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3Qg
U2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9z
aXRpb25SZWN0KSBmaW5hbDsKIAogICAgIGNvbnN0IExheW91dFJlY3QmIHBhcmVudFJlbGF0aXZl
U2Nyb2xsYWJsZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFJlbGF0aXZlU2Nyb2xsYWJs
ZVJlY3Q7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24g
MjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBpbXBsZW1l
bnQgdGhpcyB3aGVuIHdlIHN1cHBvcnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVzIGFzIGNo
aWxkcmVuLgotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBT
Y3JvbGxpbmdUcmVlTm9kZSYgLypjaGFuZ2VkTm9kZSovLCBjb25zdCBGbG9hdFJlY3QmIC8qZml4
ZWRQb3NpdGlvblJlY3QqLywgY29uc3QgRmxvYXRTaXplJiAvKmN1bXVsYXRpdmVEZWx0YSovKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29u
c3QgU2Nyb2xsaW5nVHJlZU5vZGUmIC8qY2hhbmdlZE5vZGUqLywgY29uc3QgRmxvYXRSZWN0JiAv
KmZpeGVkUG9zaXRpb25SZWN0Ki8pIG92ZXJyaWRlIHsgfQogCiAgICAgU2Nyb2xsaW5nRXZlbnRS
ZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlk
ZSA9IDA7CiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3Zl
cnJpZGU7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgdmlld1RvQ29u
dGVudHNPZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIGNvbnN0OwogICAg
IEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydEZvclNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIHZpc2libGVDb250ZW50T3JpZ2luLCBmbG9hdCBzY2FsZSkgY29uc3Q7CiAKLSAgICBGbG9h
dFJlY3QgZml4ZWRQb3NpdGlvblJlY3QoKSB7IHJldHVybiBGbG9hdFJlY3QobGFzdENvbW1pdHRl
ZFNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsgfTsKKyAgICBGbG9hdFJl
Y3QgZml4ZWRQb3NpdGlvblJlY3QoKSB7IHJldHVybiBGbG9hdFJlY3Qoc2Nyb2xsUG9zaXRpb24o
KSwgc2Nyb2xsYWJsZUFyZWFTaXplKCkpOyB9OwogCiAgICAgZmxvYXQgZnJhbWVTY2FsZUZhY3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVTY2FsZUZhY3RvcjsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgJKHJldmlz
aW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRl
Tm9kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUm
IGN1bXVsYXRpdmVEZWx0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllcnNBZnRl
ckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29u
c3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCkgPSAwOwogCiAgICAgU2Nyb2xsaW5nVHJl
ZU5vZGUqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgdm9pZCBzZXRQ
YXJlbnQoU2Nyb2xsaW5nVHJlZU5vZGUqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU6OmNvbW1pdFMKICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVhY2hhYmxlQ29udGVudHNTaXplKSkKICAgICAgICAgbV9y
ZWFjaGFibGVDb250ZW50c1NpemUgPSBzdGF0ZS5yZWFjaGFibGVDb250ZW50c1NpemUoKTsKIAot
ICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxQb3NpdGlvbikpCi0gICAgICAgIG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0
aW9uID0gc3RhdGUuc2Nyb2xsUG9zaXRpb24oKTsKLQogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpQYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KSkKICAgICAgICAgbV9wYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0ID0gc3Rh
dGUucGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCgpOwogCkBAIC0xMTMsMTMgKzExMCwxMyBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTCiAgICAgICAgIHNjcm9s
bGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Nyb2xsKHNjcm9sbGluZ05vZGVJ
RCgpLCBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSwgc2Nyb2xs
aW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRp
Y1Njcm9sbCgpKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdl
ZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgY3VtdWxhdGl2ZURlbHRhKQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBk
YXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hh
bmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpCiB7CiAgICAgaWYg
KCFtX2NoaWxkcmVuKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
Km1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxhdGl2ZURlbHRhKTsKKyAg
ICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUs
IGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZTo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCkBA
IC0xOTMsNyArMTkwLDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFBy
bwogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRvdGFsIGNvbnRlbnQgc2l6ZSBmb3IgcnViYmVy
IGJhbmQiLCBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCk7CiAgICAgaWYgKG1fcmVh
Y2hhYmxlQ29udGVudHNTaXplICE9IG1fdG90YWxDb250ZW50c1NpemUpCiAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgicmVhY2hhYmxlIGNvbnRlbnQgc2l6ZSIsIG1fcmVhY2hhYmxlQ29udGVudHNT
aXplKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxhc3QgY29tbWl0dGVkIHNjcm9sbCBwb3NpdGlv
biIsIG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKTsKIAogICAgIGlmICghbV9wYXJlbnRS
ZWxhdGl2ZVNjcm9sbGFibGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJwYXJlbnQgcmVsYXRpdmUgc2Nyb2xsYWJsZSByZWN0IiwgbV9wYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24gMjQxMTkxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0
IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBv
c2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShj
b25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4
ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBTY3JvbGxpbmdFdmVudFJl
c3VsdCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxv
YXRQb2ludCYpOwpAQCAtOTAsNyArOTAsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRS
ZWN0JiBsYXlvdXRWaWV3cG9ydCkgPSAwOwogCi0gICAgRmxvYXRQb2ludCBsYXN0Q29tbWl0dGVk
U2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RDb21taXR0ZWRTY3JvbGxQb3Np
dGlvbjsgfQogICAgIGNvbnN0IEZsb2F0U2l6ZSYgcmVhY2hhYmxlQ29udGVudHNTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9yZWFjaGFibGVDb250ZW50c1NpemU7IH0KICAgICBjb25zdCBMYXlvdXRS
ZWN0JiBwYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJl
bnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0OyB9CiAgICAgY29uc3QgSW50UG9pbnQmIHNjcm9sbE9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT3JpZ2luOyB9CkBAIC0xMjYsNyArMTI1LDYg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV90b3RhbENvbnRlbnRzU2l6ZTsKICAgICBGbG9h
dFNpemUgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7CiAgICAgRmxvYXRTaXplIG1f
cmVhY2hhYmxlQ29udGVudHNTaXplOwotICAgIEZsb2F0UG9pbnQgbV9sYXN0Q29tbWl0dGVkU2Ny
b2xsUG9zaXRpb247CiAgICAgTGF5b3V0UmVjdCBtX3BhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJl
Y3Q7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCShyZXZp
c2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0
LDYgQEAgU2Nyb2xsaW5nVHJlZSYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZAogICAgIHJldHVy
biBtX3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nVHJlZSgpOwogfQogCi1GbG9hdFBvaW50IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlv
bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Nyb2xsaW5nTm9kZS5sYXN0Q29tbWl0dGVkU2Ny
b2xsUG9zaXRpb24oKTsKLX0KLQogY29uc3QgRmxvYXRTaXplJiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlOjp0b3RhbENvbnRlbnRzU2l6ZSgpCiB7CiAgICAgcmV0dXJuIG1fc2Ny
b2xsaW5nTm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGUuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFdFQkNP
UkVfRVhQT1JUIFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUoKSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFBvaW50IGxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemUo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGbG9hdFNpemUmIHJlYWNoYWJsZUNvbnRlbnRz
U2l6ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEludFBvaW50JiBzY3JvbGxPcmlnaW4o
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgJKHJldmlzaW9uIDI0MTE5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhl
ZE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIFNj
cm9sbGluZ1RyZWVGaXhlZE5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAK
ICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVO
b2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdl
KGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBm
aXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3Jv
bGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlv
blJlY3QpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJl
YW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVG
aXhlZE5vZGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQkocmV2aXNpb24gMjQxMTkxKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzAsMTUgKzcwLDEzIEBAIHN0YXRpYyBpbmxpbmUgQ0dQb2lu
dCBvcGVyYXRvciooQ0dQb2ludCYKIH0KIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2Rl
Ojp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2Rl
JiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3Qg
RmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6
OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUm
IGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0KQogewogICAg
IHVzaW5nIG5hbWVzcGFjZSBTY3JvbGxpbmdUcmVlRml4ZWROb2RlSW50ZXJuYWw7CiAgICAgRmxv
YXRQb2ludCBsYXllclBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uRm9yVmll
d3BvcnRSZWN0KGZpeGVkUG9zaXRpb25SZWN0KTsKIAogICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSAiIDw8IHNjcm9sbGluZ05v
ZGVJRCgpIDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0
ICIgPDwgZml4ZWRQb3NpdGlvblJlY3QgPDwgIiB2aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQgIiA8
PCBtX2NvbnN0cmFpbnRzLnZpZXdwb3J0UmVjdEF0TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXll
ciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAi
IG5ldyBvZmZzZXQgZnJvbSB0b3AgIiA8PCAoZml4ZWRQb3NpdGlvblJlY3QueSgpIC0gbGF5ZXJQ
b3NpdGlvbi55KCkpKTsKIAotICAgIGxheWVyUG9zaXRpb24gLT0gY3VtdWxhdGl2ZURlbHRhOwot
CiAgICAgQ0dSZWN0IGxheWVyQm91bmRzID0gW21fbGF5ZXIgYm91bmRzXTsKICAgICBDR1BvaW50
IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5jaG9yUG9pbnRdOwogICAgIENHUG9pbnQgbmV3UG9z
aXRpb24gPSBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKSAr
IGFuY2hvclBvaW50ICogbGF5ZXJCb3VuZHMuc2l6ZTsKQEAgLTk2LDEwICs5NCw4IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6dXBkYXRlTGF5ZXIKICAgICBpZiAoIW1fY2hpbGRyZW4p
CiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0U2l6ZSBuZXdEZWx0YSA9IGxheWVyUG9zaXRp
b24gLSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSArIGN1bXVsYXRp
dmVEZWx0YTsKLQogICAgIGZvciAoYXV0byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAg
Y2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVk
UG9zaXRpb25SZWN0LCBuZXdEZWx0YSk7CisgICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRl
ckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCk7CiB9CiAKIHZv
aWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMs
IFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCShyZXZpc2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAKICAgICB2b2lkIGNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9s
bGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9u
UmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9k
ZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxp
bmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlLm1tCShyZXZpc2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgaW5saW5lIENHUG9pbnQgb3BlcmF0b3Iq
KENHUG9pbnQmCiB9CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUm
IGN1bXVsYXRpdmVEZWx0YSkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0KQogewogICAgIHVzaW5nIG5h
bWVzcGFjZSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUludGVybmFsOwogICAgIGJvb2wgYWRqdXN0
U3RpY2t5TGF5ZXIgPSBmYWxzZTsKQEAgLTg4LDggKzg4LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZTo6dXBkYXRlTGF5ZQogCiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywg
c3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgp
IDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0ICIgPDwg
Zml4ZWRQb3NpdGlvblJlY3QgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0ICIgPDwg
bV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxh
eWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIDw8
ICIgYWRqdXN0U3RpY2t5TGF5ZXIgIiA8PCBhZGp1c3RTdGlja3lMYXllcik7CiAKLSAgICBGbG9h
dFNpemUgZGVsdGFGb3JEZXNjZW5kYW50cyA9IGN1bXVsYXRpdmVEZWx0YTsKLQogICAgIGlmIChh
ZGp1c3RTdGlja3lMYXllcikgewogICAgICAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb24gPSBt
X2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFpbmlu
Z1JlY3QpOwogCkBAIC05NywxNSArOTUsMTMgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZTo6dXBkYXRlTGF5ZQogICAgICAgICBDR1BvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5j
aG9yUG9pbnRdOwogICAgICAgICBDR1BvaW50IG5ld1Bvc2l0aW9uID0gbGF5ZXJQb3NpdGlvbiAt
IG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkgKyBhbmNob3JQb2ludCAqIGxheWVyQm91
bmRzLnNpemU7CiAgICAgICAgIFttX2xheWVyIHNldFBvc2l0aW9uOm5ld1Bvc2l0aW9uXTsKLQot
ICAgICAgICBkZWx0YUZvckRlc2NlbmRhbnRzID0gbGF5ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWlu
dHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpICsgY3VtdWxhdGl2ZURlbHRhOwogICAgIH0K
IAogICAgIGlmICghbV9jaGlsZHJlbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRv
JiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIGRlbHRhRm9yRGVz
Y2VuZGFudHMpOworICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCiB2b2lkIFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmgJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYg
Zml4ZWRQb3NpdGlvblJlY3QsIGRvdWJsZSBzY2FsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRh
dGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGlu
Z1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVj
dCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYg
Y2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBGbG9hdFJlY3QmIGxheW91dFZpZXdwb3J0KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCShyZXZpc2lvbiAyNDExOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQxLDE3ICsxNDEsMTYgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOgogICAgICAgICByZXR1cm47CiAK
ICAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRh
dGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhlZFBvc2l0aW9uUmVjdCwgRmxv
YXRTaXplKCkpOworICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZSgqdGhpcywgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3Qg
U2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFNpemUmKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRh
dGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFu
Z2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JikKIHsKICAgICBpZiAoIW1fY2hpbGRyZW4pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCBmaXhlZFBvc2l0aW9uUmVjdChzY3JvbGxQb3Np
dGlvbigpLCBzY3JvbGxhYmxlQXJlYVNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6ICpt
X2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIEZsb2F0U2l6ZSgpKTsKKyAgICAgICAg
Y2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVk
UG9zaXRpb25SZWN0KCkpOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQm
IHNjcm9sbFBvc2l0aW9uKQpAQCAtMTkzLDcgKzE5Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZUlPUzoKICAgICAgICAgZml4ZWRQb3NpdGlvblJlY3QgPSBGbG9hdFJl
Y3Qoc2Nyb2xsUG9zaXRpb24sIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsKIAogICAgIGZvciAoYXV0
byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVy
QW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0LCBGbG9hdFNpemUoKSk7Cisg
ICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhl
ZFBvc2l0aW9uUmVjdCk7CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUlPUzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCShyZXZpc2lvbiAyNDExOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yIChhdXRvJiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZSgqdGhpcywgZml4ZWRQb3NpdGlvblJlY3QsIEZsb2F0
U2l6ZSgpKTsKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2Uo
KnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZs
b2F0UmVjdCYsIGRvdWJsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
TGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3QmLCBkb3VibGUpIG92ZXJy
aWRlIHsgfQogICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3Qg
RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIG92ZXJyaWRlOwogCi0gICAgdm9pZCB1cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2Vk
Tm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXpl
JiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0
IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRlOwogCiAgICAgU2Nyb2xsaW5n
RXZlbnRSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBv
dmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVNYWMubW0JKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MywxMSArOTMsMTAgQEAgU2Nyb2xsaW5nRXZlbnRSZXN1bHQgU2Nyb2xs
aW5nVHJlZU92ZXJmbAogCiAKIAotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1Ry
ZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwg
Y29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCit2b2lkIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVNYWM6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29u
c3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVk
UG9zaXRpb25SZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShjaGFuZ2VkTm9kZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGZpeGVkUG9zaXRpb25SZWN0KTsKLSAgICBVTlVTRURfUEFSQU0oY3VtdWxhdGl2
ZURlbHRhKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CkBAIC0xMzEsNyArMTMwLDcgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTQogICAgICAgICByZXR1cm47CiAKICAg
ICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhlZFBvc2l0aW9uUmVjdCwgeyB9KTsK
KyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZp
eGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBv
aW50JiBzY3JvbGxQb3NpdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNw
cAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlCiB7CiB9CiAK
LXZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNo
YW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0U2l6ZSYpCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OnVwZGF0ZUxheWVyc0FmdGVy
QW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmLCBjb25zdCBGbG9hdFJlY3Qm
KQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGaXhlZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAkocmV2aXNpb24gMjQx
MTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlRml4ZWROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToK
ICAgICBTY3JvbGxpbmdUcmVlRml4ZWROb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2Rl
SUQpOwogCiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlTm9kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJy
aWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZS5jcHAJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNv
bW1pdFN0YXQKIHsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6dXBkYXRlTGF5
ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYpCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Ojp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2Rl
JiwgY29uc3QgRmxvYXRSZWN0JikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xs
aW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAKICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1
cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1
cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiwg
Y29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQxMTkzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBAQAorMjAxOS0wMi0wOCAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29tcHV0ZSBmaXhlZCBwb3NpdGlv
biByZWN0IGJhc2VkIG9uIFNjcm9sbGluZ1RyZWUgc2Nyb2xsIHBvc2l0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0MzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAgICAg
IChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6Cisg
ICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OmR1bXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVu
KToKKworICAgICAgICBBdm9pZCBjb25zdGFudGx5IHJlY29uc3RydWN0aW5nIHRoZSBkZWxlZ2F0
ZS4KKworICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlSU9TOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJz
QWZ0ZXJBbmNlc3RvckNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisKKyAg
ICAgICAgU2V0dGluZyBzY3JvbGwgcG9zaXRpb24gYmFzZWQgb24gbm9kZSB0cmVlIGlzIHdyb25n
IGFzIGl0IG92ZXJyaWRlcyB0aGUgdXNlciBzY3JvbGwgcG9zaXRpb24uCisKKyAgICAgICAgKFdl
YktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2V0U2Nyb2xsTGF5
ZXJQb3NpdGlvbik6CisKKyAgICAgICAgUmVtb3ZlIHRoZSBjdXJyZW50IGluY29ycmVjdCBpbXBs
ZW1lbnRhdGlvbiBhbmQgcmVwbGFjZSB3aXRoIEZJWE1FLgorICAgICAgICBUaGlzIGlzIHVzZWQg
Zm9yIHByb2dyYW1tYXRpYyBzY3JvbGxpbmcuCisKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xs
KToKKworICAgICAgICBEb24ndCBjb21wdXRlIHRoZSBkZWx0YS4gSXQgaXMgbm8gbG9uZ2VyIG5l
ZWRlZCBzaW5jZSB0aGUgZml4ZWQgcG9zaXRpb24gcmVjdCB3ZSBnZXQgaXMgdGhlIGNvcnJlY3Qg
b25lLgorCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1M6OnNjcm9sbFZpZXdEaWRTY3JvbGwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp1cGRhdGVMYXllcnNBZnRlckFuY2Vz
dG9yQ2hhbmdlKTogRGVsZXRlZC4KKworICAgICAgICBUaGlzIHdhcyBpbmNvcnJlY3QgZm9yIGZy
YW1lcyBhbmQgZGlkbid0IGRvIGFueXRoaW5nIGFueXdheSBzbyByZW1vdmUgaXQuCisKIDIwMTkt
MDItMDggIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJh
bnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDYgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVhU2l6ZSwgc2Nyb2xs
YWJsZUFyZWFTaXplKQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplLCB0b3RhbENvbnRlbnRzU2l6ZSkKICAgICBT
Q1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFi
bGVDb250ZW50c1NpemUsIHJlYWNoYWJsZUNvbnRlbnRzU2l6ZSkKLSAgICBTQ1JPTExJTkdfTk9E
RV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxQb3NpdGlvbiwgc2Ny
b2xsUG9zaXRpb24pCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2luLCBzY3JvbGxPcmlnaW4pCiAjaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldHMsIGhvcml6b250YWxTbmFwT2Zmc2V0cykK
QEAgLTIxNiw3ICsyMTUsNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6U2Nyb2xsYWJsZUFyZWFTaXplLCBGbG9hdFNpemUsIHNldFNjcm9sbGFibGVBcmVhU2l6ZSk7
CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
VG90YWxDb250ZW50c1NpemUsIEZsb2F0U2l6ZSwgc2V0VG90YWxDb250ZW50c1NpemUpOwogICAg
IFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlYWNo
YWJsZUNvbnRlbnRzU2l6ZSwgRmxvYXRTaXplLCBzZXRSZWFjaGFibGVDb250ZW50c1NpemUpOwot
ICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNj
cm9sbFBvc2l0aW9uLCBGbG9hdFBvaW50LCBzZXRTY3JvbGxQb3NpdGlvbik7CiAgICAgU0NST0xM
SU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2lu
LCBJbnRQb2ludCwgc2V0U2Nyb2xsT3JpZ2luKTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
Okhvcml6b250YWxTbmFwT2Zmc2V0cywgVmVjdG9yPGZsb2F0Piwgc2V0SG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKTsKQEAgLTUxMiw5ICs1MTAsNiBAQCBzdGF0aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0m
IHRzLCBjb25zdCBTCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFibGVDb250
ZW50c1NpemUpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInJlYWNoYWJsZS1jb250ZW50cy1z
aXplIiwgbm9kZS5yZWFjaGFibGVDb250ZW50c1NpemUoKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQ
cm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbFBvc2l0aW9uKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJz
Y3JvbGwtcG9zaXRpb24iLCBub2RlLnNjcm9sbFBvc2l0aW9uKCkpOwotCiAgICAgaWYgKCFjaGFu
Z2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxPcmlnaW4pKQogICAgICAgICB0cy5kdW1wUHJvcGVydHko
InNjcm9sbC1vcmlnaW4iLCBub2RlLnNjcm9sbE9yaWdpbigpKTsKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlSU9TLmgJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlP
Uy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGxheW91dFZpZXdwb3J0KSBvdmVycmlkZTsKIAogICAgIHZvaWQg
dXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgc2Nyb2xsUG9zaXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjb25zdCBXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5v
ZGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPiBtX3Njcm9s
bGluZ05vZGVEZWxlZ2F0ZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCShyZXZpc2lv
biAyNDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDEwICs1Myw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZVJlbW8KICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpjb21taXRTdGF0
ZUJlZm9yZUNoaWxkcmVuKHN0YXRlTm9kZSk7CiAKICAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxh
eWVyKSkgewotICAgICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSkKKyAgICAgICAgaWYg
KHNjcm9sbENvbnRhaW5lckxheWVyKCkgJiYgIW1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlKQogICAg
ICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBudWxscHRyOwogICAgIH0KIAog
ICAgIGlmIChtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSkKQEAgLTcxLDE1ICs2OSw2IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW8KICAgICAgICAgbV9zY3JvbGxpbmdO
b2RlRGVsZWdhdGUtPmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihkb3duY2FzdDxTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU+KHN0YXRlTm9kZSkpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFu
Z2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3Qm
IGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUmIGN1bXVsYXRpdmVEZWx0YSkKLXsK
LSAgICBpZiAobV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUpIHsKLSAgICAgICAgbV9zY3JvbGxpbmdO
b2RlRGVsZWdhdGUtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUs
IGZpeGVkUG9zaXRpb25SZWN0LCBjdW11bGF0aXZlRGVsdGEpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVy
c0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVkUG9zaXRpb25SZWN0LCBjdW11
bGF0aXZlRGVsdGEpOwotfQotCiBGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVSZW1vdGVJT1M6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBpZiAobV9zY3Jv
bGxpbmdOb2RlRGVsZWdhdGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAkocmV2aXNpb24gMjQxMTkxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUx
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2Uo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgZG91YmxlIHNjYWxl
KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xs
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
Zml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURl
bHRhKSBvdmVycmlkZTsKLQogICAgIFdlYkNvcmU6OlNjcm9sbGluZ0V2ZW50UmVzdWx0IGhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGUg
eyByZXR1cm4gU2Nyb2xsaW5nRXZlbnRSZXN1bHQ6OkRpZE5vdEhhbmRsZUV2ZW50OyB9CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4g
bV9zY3JvbGxpbmdOb2RlRGVsZWdhdGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCShyZXZpc2lvbiAy
NDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTY2LDExICs2Niw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUkK
ICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGRv
d25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4oc3RhdGVOb2RlKSk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0
ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNv
bnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY3VtdWxh
dGl2ZURlbHRhKQotewotICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLT51cGRhdGVMYXllcnNB
ZnRlckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxh
dGl2ZURlbHRhKTsKLX0KLQogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2Nyb2xs
aW5nTm9kZURlbGVnYXRlLT5zY3JvbGxQb3NpdGlvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgJKHJl
dmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0U2Nyb2xsVmlld0Rl
bGVnYXRlKCk7CiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYpOwogICAgIHZvaWQgY29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYp
OwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgY3VtdWxhdGl2
ZURlbHRhKTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKTsKICAgICB2b2lkIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCShyZXZp
c2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIyMywxNyArMjIzLDE0IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUkKIHsKICAgICBTZXRGb3JTY29wZTxib29sPiB1cGRhdGluZ0NoYW5nZShtX3VwZGF0
aW5nRnJvbVN0YXRlTm9kZSwgdHJ1ZSk7CiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWlu
ZXJMYXllcikKLSAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikKICAg
ICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKQogICAgICAgICB8fCBzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6UmVhY2hhYmxlQ29udGVudHNTaXplKQotICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsUG9z
aXRpb24pCiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxPcmlnaW4pKSB7CiAgICAgICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgICAgICBVSVNjcm9sbFZpZXcgKnNjcm9sbFZp
ZXcgPSAoVUlTY3JvbGxWaWV3ICopW3Njcm9sbExheWVyKCkgZGVsZWdhdGVdOwogICAgICAgICBB
U1NFUlQoW3Njcm9sbFZpZXcgaXNLaW5kT2ZDbGFzczpbVUlTY3JvbGxWaWV3IHNlbGZdXSk7CiAK
LSAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikKLSAgICAgICAgICAg
IHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKSB7CisgICAgICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CiAgICAgICAgICAgICBpZiAoIW1fc2Nyb2xs
Vmlld0RlbGVnYXRlKQogICAgICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRv
cHROUyhbW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhT
Y3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOnRoaXNdKTsKIApAQCAtMjQ3LDEyICsyNDQsOCBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJCiAgICAgICAgICAgICByZWNv
bXB1dGVJbnNldHMgPSB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
U2Nyb2xsUG9zaXRpb24pCi0gICAgICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2luKSkK
LSAgICAgICAgICAgICYmICFbbV9zY3JvbGxWaWV3RGVsZWdhdGUgX2lzSW5Vc2VySW50ZXJhY3Rp
b25dKSB7Ci0gICAgICAgICAgICBzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQgPSBzY3JvbGxpbmdT
dGF0ZU5vZGUuc2Nyb2xsUG9zaXRpb24oKSArIHNjcm9sbE9yaWdpbigpOworICAgICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlNjcm9sbE9yaWdpbikpCiAgICAgICAgICAgICByZWNvbXB1dGVJbnNldHMgPSB0
cnVlOwotICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlY29tcHV0ZUluc2V0cykgewogICAgICAg
ICAgICAgVUlFZGdlSW5zZXRzIGluc2V0cyA9IFVJRWRnZUluc2V0c01ha2UoMCwgMCwgMCwgMCk7
CkBAIC0yNzUsMTcgKzI2OCw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUkKICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVl
Tm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNv
bnN0IEZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKQotewotICAgIGlmICghc2Nyb2xsaW5nTm9k
ZSgpLmNoaWxkcmVuKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZsb2F0U2l6ZSBzY3JvbGxE
ZWx0YSA9IGxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIC0gc2Nyb2xsaW5nTm9kZSgpLnNj
cm9sbFBvc2l0aW9uKCk7Ci0KLSAgICBmb3IgKGF1dG8mIGNoaWxkIDogKnNjcm9sbGluZ05vZGUo
KS5jaGlsZHJlbigpKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNo
YW5nZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIGN1bXVsYXRpdmVEZWx0YSArIHNj
cm9sbERlbHRhKTsKLX0KLQogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCkBAIC0yOTcsNyArMjc5LDcgQEAgRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbAogCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9z
aXRpb24pCiB7Ci0gICAgW21fc2Nyb2xsTGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2Uoc2Ny
b2xsUG9zaXRpb24ueCgpICsgc2Nyb2xsT3JpZ2luKCkueCgpLCBzY3JvbGxQb3NpdGlvbi55KCkg
KyBzY3JvbGxPcmlnaW4oKS55KCkpXTsKKyAgICAvLyBGSVhNRTogU2V0IHRoZSBzY3JvbGwgcG9z
aXRpb24gaW4gcmVzcG9uc2UgdG8gcHJvZ3JhbW1hdGljIHNjcm9sbC4KICAgICB1cGRhdGVDaGls
ZE5vZGVzQWZ0ZXJTY3JvbGwoc2Nyb2xsUG9zaXRpb24pOwogfQogCkBAIC0zMTIsMTAgKzI5NCw5
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUkKICAgICAgICAgZml4
ZWRQb3NpdGlvblJlY3QgPSBmcmFtZU5vZGUtPmZpeGVkUG9zaXRpb25SZWN0KCk7CiAgICAgZWxz
ZQogICAgICAgICBmaXhlZFBvc2l0aW9uUmVjdCA9IHNjcm9sbGluZ1RyZWUoKS5maXhlZFBvc2l0
aW9uUmVjdCgpOwotICAgIEZsb2F0U2l6ZSBzY3JvbGxEZWx0YSA9IGxhc3RDb21taXR0ZWRTY3Jv
bGxQb3NpdGlvbigpIC0gc2Nyb2xsUG9zaXRpb247CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
KnNjcm9sbGluZ05vZGUoKS5jaGlsZHJlbigpKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJz
QWZ0ZXJBbmNlc3RvckNoYW5nZShzY3JvbGxpbmdOb2RlKCksIGZpeGVkUG9zaXRpb25SZWN0LCBz
Y3JvbGxEZWx0YSk7CisgICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKHNjcm9sbGluZ05vZGUoKSwgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCiB2b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNjcm9sbFdpbGxTdGFydCgpIGNvbnN0
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNDExOTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0wMi0wOCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29tcHV0ZSBmaXhlZCBwb3NpdGlvbiByZWN0
IGJhc2VkIG9uIHNjcm9sbGluZyB0cmVlIHZpZXcgb2YgdGhlIHNjcm9sbCBwb3NpdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDMzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBieSBGcmVk
ZXJpYyBXYW5nLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUt
ZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWlmcmFt
ZS5odG1sOgorCiAyMDE5LTAyLTA4ICBFcmljIExpYW5nICA8ZXJpY2xpYW5nQGFwcGxlLmNvbT4K
IAogICAgICAgICBDaGVjayBpZiByZWNlaXZlIEFYUHJlc3NEaWRGYWlsIG5vdGlmaWNhdGlvbiB3
aGVuIHBlcmZvcm1pbmcgQVhQcmVzcyBhY3Rpb24gb24gZGlzYWJsZWQgTWVudUxpc3QuCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWlmcmFtZS1leHBlY3RlZC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwt
aWZyYW1lLWV4cGVjdGVkLmh0bWwJKHJldmlzaW9uIDI0MTE5MSkKKysrIExheW91dFRlc3RzL2Zh
c3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZyYW1lLWV4cGVjdGVkLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTE5LDYgKzE5LDggQEAKICAgICAgICAgPGRpdiBjbGFzcz10ZXN0ZGl2PjwvZGl2Pgog
ICAgICAgICA8ZGl2IGNsYXNzPXRlc3RkaXY+PC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9dGVz
dGRpdj48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz10ZXN0ZGl2PjwvZGl2PgorICAgICAgICA8
ZGl2IGNsYXNzPXRlc3RkaXY+PC9kaXY+CiAgICAgPC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWlmcmFtZS5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZyYW1l
Lmh0bWwJKHJldmlzaW9uIDI0MTE5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lv
cy9zY3JvbGwtaWZyYW1lLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTM3LDExICszNywxOSBAQAog
ICAgICAgICAgYXdhaXQgdG91Y2hBbmREcmFnRnJvbVBvaW50VG9Qb2ludChjLngsIGMueSwgYy54
LCBjLnkgLSAyMDAwKTsKICAgICAgICAgIGF3YWl0IGxpZnRVcEF0UG9pbnQoYy54LCBjLnkgLSAy
MDAwKTsKIAorICAgICAgICAgYyA9IGNlbnRlck9mKCJwb3NpdGlvbkZpeGVkIik7CisgICAgICAg
ICBhd2FpdCB0b3VjaEFuZERyYWdGcm9tUG9pbnRUb1BvaW50KGMueCwgYy55LCBjLnggLSAxNTAs
IGMueSAtIDE1MCk7CisgICAgICAgICBhd2FpdCBsaWZ0VXBBdFBvaW50KGMueCAtIDE1MCwgYy55
IC0gMTUwKTsKKworICAgICAgICAgYyA9IGNlbnRlck9mKCJwb3NpdGlvblN0aWNreSIpOworICAg
ICAgICAgYXdhaXQgdG91Y2hBbmREcmFnRnJvbVBvaW50VG9Qb2ludChjLngsIGMueSwgYy54LCBj
LnkgLSAxNTApOworICAgICAgICAgYXdhaXQgbGlmdFVwQXRQb2ludChjLngsIGMueSAtIDE1MCk7
CisKICAgICAgICAgIC8vIFdhaXQgZm9yIHNjcm9sbGluZyB0byBzdGFiaWxpemUgYW5kIGZvciBz
Y3JvbGxiYXJzIHRvIGRpc2FwcGVhci4KICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge3Rlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOyB9LCAyMDAwKTsKICAgICAgICB9CiAKLSAgICAgICB2YXIgZnJh
bWVUb0xvYWRDb3VudCA9IDQ7CisgICAgICAgdmFyIGZyYW1lVG9Mb2FkQ291bnQgPSA2OwogICAg
ICAgIGZ1bmN0aW9uIG5ld0ZyYW1lTG9hZGVkKCkgewogICAgICAgICAgICBmcmFtZVRvTG9hZENv
dW50LS07CiAgICAgICAgICAgIGlmIChmcmFtZVRvTG9hZENvdW50ID09IDApCkBAIC04NSw2ICs5
MywxOSBAQAogICAgICAgICAgICAgPGRpdiBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUw
MHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsnPjwvZGl2PgogICAgICAgICAgICAgPC9ib2R5PiIgb25s
b2FkPSJuZXdGcmFtZUxvYWRlZCgpIj4KICAgICAgICAgPC9pZnJhbWU+CisgICAgICAgIDxpZnJh
bWUgaWQ9InBvc2l0aW9uRml4ZWQiIHNjcm9sbGluZz0ieWVzIiBzcmNkb2M9IgorICAgICAgICAg
ICAgPGJvZHkgc3R5bGU9J3Bvc2l0aW9uOiByZWxhdGl2ZTsgbWFyZ2luOiAwOyB3aWR0aDogMzAw
cHg7IGhlaWdodDogMzAwcHgnPgorICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J3Bvc2l0aW9u
OiBmaXhlZDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyc+
PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlOyBi
b3R0b206IDBweDsgcmlnaHQ6IDBweDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IGJhY2tn
cm91bmQ6IGdyZWVuOyc+PC9kaXY+CisgICAgICAgICAgICA8L2JvZHk+IiBvbmxvYWQ9Im5ld0Zy
YW1lTG9hZGVkKCkiPgorICAgICAgICA8L2lmcmFtZT4KKyAgICAgICAgPGlmcmFtZSBpZD0icG9z
aXRpb25TdGlja3kiIHNjcm9sbGluZz0ieWVzIiBzcmNkb2M9IgorICAgICAgICAgICAgPGJvZHkg
c3R5bGU9J3Bvc2l0aW9uOiByZWxhdGl2ZTsgbWFyZ2luOiAwOyB3aWR0aDogMzAwcHg7IGhlaWdo
dDogMzAwcHgnPgorICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDogMTAwcHgnPjwv
ZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOiAtd2Via2l0LXN0aWNr
eTsgcG9zaXRpb246IHN0aWNreTsgbGVmdDogMHB4OyB0b3A6IDBweDsgd2lkdGg6IDEwMHB4OyBo
ZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyc+PC9kaXY+CisgICAgICAgICAgICAgICAg
PGRpdiBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlOyBib3R0b206IDBweDsgd2lkdGg6IDEwMHB4
OyBoZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyc+PC9kaXY+CisgICAgICAgICAgICA8
L2JvZHk+IiBvbmxvYWQ9Im5ld0ZyYW1lTG9hZGVkKCkiPgorICAgICAgICA8L2lmcmFtZT4KICAg
ICA8L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361504</attachid>
            <date>2019-02-08 06:53:43 -0800</date>
            <delta_ts>2019-02-08 10:30:10 -0800</delta_ts>
            <desc>patch</desc>
            <filename>frame-fixed-ios-3.patch</filename>
            <type>text/plain</type>
            <size>50185</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTAyLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb21wdXRlIGZpeGVkIHBvc2l0
aW9uIHJlY3QgYmFzZWQgb24gc2Nyb2xsaW5nIHRyZWUgdmlldyBvZiB0aGUgY3VycmVudCBzY3Jv
bGwgcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDQzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEl0IHNob3VsZCBiZSBzY3JvbGxpbmcgdHJlZXMgcmVzcG9uc2liaWxpdHkgdG8gaW5jb3Jw
b3JhdGUgc2Nyb2xsIHBvc2l0aW9ucyB3aGVuIGNvbXB1dGluZyBmaW5hbCBwb3NpdGlvbnMgZm9y
IGxheWVycy4KKyAgICAgICAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gYXJjaGl2ZSBnbGl0Y2gt
ZnJlZSBwb3NpdGlvbmluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgY29kZSB0aGF0
IHRoYXQgcGFzc2VzIHRoZSBsYXN0IGNvbW1pdHRlZCBzY3JvbGwgcG9zaXRpb24gdmlhIHRoZSBz
dGF0ZSB0cmVlIGFuZCBtb2RpZmllcyBpdHMgb25seQorICAgICAgICBjbGllbnQgKGluIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MpIHRvIHVzZSB0aGUgVUlTY3JvbGxWaWV3
IHNjcm9sbGluZyBwb3NpdGlvbi4KKworICAgICAgICBUZXN0IGJ5IEZyZWRlcmljIFdhbmcuCisK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sbGlu
Z05vZGVHZW9tZXRyeSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0QWxsUHJvcGVydGllc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQ
b3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNjcm9sbFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZSk6CisKKyAgICAgICAgUmVtb3ZlIHRoZSAnY3VtdWxhdGl2ZURlbHRhJyBw
YXJhbWV0ZXIuIEl0IGlzIG5vdCBuZWVkZWQgc2luY2UgJ2ZpeGVkUG9zaXRpb25SZWN0JyBpcyBj
b3JyZWN0IHdpdGhvdXQgYWRqdXN0bWVudHMuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmZpeGVkUG9zaXRpb25SZWN0KToKKworICAg
ICAgICBDb21wdXRlIGJhc2VkIG9uIHNjcm9sbGluZyB0cmVlIHZpZXcgb2YgdGhlIHNjcm9sbGlu
ZyBwb3NpdGlvbi4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2Rl
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6bGFzdENvbW1pdHRlZFNjcm9sbFBv
c2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4
ZWROb2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0
b3JDaGFuZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlSU9TLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0Fm
dGVyU2Nyb2xsKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24pOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFj
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWM6OnNl
dFNjcm9sbExheWVyUG9zaXRpb24pOgorCiAyMDE5LTAyLTA4ICBFcmljIExpYW5nICA8ZXJpY2xp
YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBXaGVuIHBlcmZvcm1pbmcgQVhQcmVzcywgY2hlY2sg
dG8gc2VlIGlmIHRoZSBtZW51IGxpc3QgaXMgZGlzYWJsZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNiw3
ICs2MzYsNiBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sCiAKICAg
ICBzY3JvbGxpbmdOb2RlLnNldFBhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJlY3Qoc2Nyb2xsaW5n
R2VvbWV0cnkucGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7CiAgICAgc2Nyb2xsaW5nTm9k
ZS5zZXRTY3JvbGxPcmlnaW4oc2Nyb2xsaW5nR2VvbWV0cnkuc2Nyb2xsT3JpZ2luKTsKLSAgICBz
Y3JvbGxpbmdOb2RlLnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbGluZ0dlb21ldHJ5LnNjcm9sbFBv
c2l0aW9uKTsKICAgICBzY3JvbGxpbmdOb2RlLnNldFRvdGFsQ29udGVudHNTaXplKHNjcm9sbGlu
Z0dlb21ldHJ5LmNvbnRlbnRTaXplKTsKICAgICBzY3JvbGxpbmdOb2RlLnNldFJlYWNoYWJsZUNv
bnRlbnRzU2l6ZShzY3JvbGxpbmdHZW9tZXRyeS5yZWFjaGFibGVDb250ZW50U2l6ZSk7CiAgICAg
c2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxlQXJlYVNpemUoc2Nyb2xsaW5nR2VvbWV0cnkuc2Ny
b2xsYWJsZUFyZWFTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAkocmV2aXNp
b24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0CiAgICAgLCBtX3RvdGFsQ29udGVu
dHNTaXplKHN0YXRlTm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpKQogICAgICwgbV9yZWFjaGFibGVD
b250ZW50c1NpemUoc3RhdGVOb2RlLnJlYWNoYWJsZUNvbnRlbnRzU2l6ZSgpKQogICAgICwgbV9w
YXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0KHN0YXRlTm9kZS5wYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KCkpCi0gICAgLCBtX3Njcm9sbFBvc2l0aW9uKHN0YXRlTm9kZS5zY3JvbGxQb3Np
dGlvbigpKQogICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihzdGF0ZU5vZGUucmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb24oKSkKICAgICAsIG1fc2Nyb2xsT3JpZ2luKHN0YXRlTm9kZS5zY3Jv
bGxPcmlnaW4oKSkKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtNjgsNyArNjcsNiBA
QCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0QWxsCiAgICAgc2V0UHJvcGVy
dHlDaGFuZ2VkQml0KFRvdGFsQ29udGVudHNTaXplKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRC
aXQoUmVhY2hhYmxlQ29udGVudHNTaXplKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoUGFy
ZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNj
cm9sbFBvc2l0aW9uKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsT3JpZ2luKTsK
ICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsYWJsZUFyZWFQYXJhbXMpOwogICAgIHNl
dFByb3BlcnR5Q2hhbmdlZEJpdChSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbik7CkBAIC0xMjMsMTUg
KzEyMSw2IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRQYXIKICAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWQoUGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKLXsKLSAgICBpZiAobV9zY3JvbGxQb3NpdGlvbiA9
PSBzY3JvbGxQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zY3JvbGxQb3NpdGlv
biA9IHNjcm9sbFBvc2l0aW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChTY3JvbGxQb3NpdGlv
bik7Ci19Ci0KIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxPcmln
aW4oY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbikKIHsKICAgICBpZiAobV9zY3JvbGxPcmln
aW4gPT0gc2Nyb2xsT3JpZ2luKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9u
IDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoK
ICAgICAgICAgVG90YWxDb250ZW50c1NpemUsCiAgICAgICAgIFJlYWNoYWJsZUNvbnRlbnRzU2l6
ZSwKICAgICAgICAgUGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCwKLSAgICAgICAgU2Nyb2xs
UG9zaXRpb24sCiAgICAgICAgIFNjcm9sbE9yaWdpbiwKICAgICAgICAgU2Nyb2xsYWJsZUFyZWFQ
YXJhbXMsCiAgICAgICAgIFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLApAQCAtNzMsOSArNzIsNiBA
QCBwdWJsaWM6CiAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFyZW50UmVsYXRpdmVTY3JvbGxhYmxl
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdDsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdChj
b25zdCBMYXlvdXRSZWN0Jik7CiAKLSAgICBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKLQogICAgIGNvbnN0
IEludFBvaW50JiBzY3JvbGxPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9yaWdpbjsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50
Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVG
cmFtZUhvc3RpbmdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5jcHAJKHJldmlzaW9uIDI0MTE5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZUhv
c3RpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTMgKzU3LDEzIEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGU6OmNvbW0KICAgICAgICAgbV9wYXJlbnRSZWxhdGl2
ZVNjcm9sbGFibGVSZWN0ID0gZnJhbWVIb3N0aW5nU3RhdGVOb2RlLnBhcmVudFJlbGF0aXZlU2Ny
b2xsYWJsZVJlY3QoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6
dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYg
Y2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZs
b2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5n
Tm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVl
Tm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpCiB7
CiAgICAgaWYgKCFtX2NoaWxkcmVuKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8m
IGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFu
Y2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxhdGl2ZURl
bHRhKTsKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hh
bmdlZE5vZGUsIGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogTGF5b3V0UG9pbnQgU2Nyb2xsaW5n
VHJlZUZyYW1lSG9zdGluZ05vZGU6OnBhcmVudFRvTG9jYWxQb2ludChMYXlvdXRQb2ludCBwb2lu
dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVGcmFtZUhvc3RpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGUuaAkocmV2aXNpb24gMjQxMTkx
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lSG9z
dGluZ05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAg
IFNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdO
b2RlSUQpOwogCiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9s
bGluZ1N0YXRlTm9kZSYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0
UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRh
KSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3Qg
U2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9z
aXRpb25SZWN0KSBmaW5hbDsKIAogICAgIGNvbnN0IExheW91dFJlY3QmIHBhcmVudFJlbGF0aXZl
U2Nyb2xsYWJsZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFJlbGF0aXZlU2Nyb2xsYWJs
ZVJlY3Q7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24g
MjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBpbXBsZW1l
bnQgdGhpcyB3aGVuIHdlIHN1cHBvcnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVzIGFzIGNo
aWxkcmVuLgotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBT
Y3JvbGxpbmdUcmVlTm9kZSYgLypjaGFuZ2VkTm9kZSovLCBjb25zdCBGbG9hdFJlY3QmIC8qZml4
ZWRQb3NpdGlvblJlY3QqLywgY29uc3QgRmxvYXRTaXplJiAvKmN1bXVsYXRpdmVEZWx0YSovKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29u
c3QgU2Nyb2xsaW5nVHJlZU5vZGUmIC8qY2hhbmdlZE5vZGUqLywgY29uc3QgRmxvYXRSZWN0JiAv
KmZpeGVkUG9zaXRpb25SZWN0Ki8pIG92ZXJyaWRlIHsgfQogCiAgICAgU2Nyb2xsaW5nRXZlbnRS
ZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlk
ZSA9IDA7CiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3Zl
cnJpZGU7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgdmlld1RvQ29u
dGVudHNPZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIGNvbnN0OwogICAg
IEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydEZvclNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIHZpc2libGVDb250ZW50T3JpZ2luLCBmbG9hdCBzY2FsZSkgY29uc3Q7CiAKLSAgICBGbG9h
dFJlY3QgZml4ZWRQb3NpdGlvblJlY3QoKSB7IHJldHVybiBGbG9hdFJlY3QobGFzdENvbW1pdHRl
ZFNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsgfTsKKyAgICBGbG9hdFJl
Y3QgZml4ZWRQb3NpdGlvblJlY3QoKSB7IHJldHVybiBGbG9hdFJlY3Qoc2Nyb2xsUG9zaXRpb24o
KSwgc2Nyb2xsYWJsZUFyZWFTaXplKCkpOyB9OwogCiAgICAgZmxvYXQgZnJhbWVTY2FsZUZhY3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVTY2FsZUZhY3RvcjsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgJKHJldmlz
aW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRl
Tm9kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUm
IGN1bXVsYXRpdmVEZWx0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllcnNBZnRl
ckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29u
c3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCkgPSAwOwogCiAgICAgU2Nyb2xsaW5nVHJl
ZU5vZGUqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgdm9pZCBzZXRQ
YXJlbnQoU2Nyb2xsaW5nVHJlZU5vZGUqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU6OmNvbW1pdFMKICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVhY2hhYmxlQ29udGVudHNTaXplKSkKICAgICAgICAgbV9y
ZWFjaGFibGVDb250ZW50c1NpemUgPSBzdGF0ZS5yZWFjaGFibGVDb250ZW50c1NpemUoKTsKIAot
ICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxQb3NpdGlvbikpCi0gICAgICAgIG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0
aW9uID0gc3RhdGUuc2Nyb2xsUG9zaXRpb24oKTsKLQogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpQYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KSkKICAgICAgICAgbV9wYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0ID0gc3Rh
dGUucGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCgpOwogCkBAIC0xMTMsMTMgKzExMCwxMyBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTCiAgICAgICAgIHNjcm9s
bGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Nyb2xsKHNjcm9sbGluZ05vZGVJ
RCgpLCBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSwgc2Nyb2xs
aW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRp
Y1Njcm9sbCgpKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdl
ZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgY3VtdWxhdGl2ZURlbHRhKQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBk
YXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hh
bmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpCiB7CiAgICAgaWYg
KCFtX2NoaWxkcmVuKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
Km1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxhdGl2ZURlbHRhKTsKKyAg
ICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUs
IGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZTo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCkBA
IC0xOTMsNyArMTkwLDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFBy
bwogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRvdGFsIGNvbnRlbnQgc2l6ZSBmb3IgcnViYmVy
IGJhbmQiLCBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCk7CiAgICAgaWYgKG1fcmVh
Y2hhYmxlQ29udGVudHNTaXplICE9IG1fdG90YWxDb250ZW50c1NpemUpCiAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgicmVhY2hhYmxlIGNvbnRlbnQgc2l6ZSIsIG1fcmVhY2hhYmxlQ29udGVudHNT
aXplKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxhc3QgY29tbWl0dGVkIHNjcm9sbCBwb3NpdGlv
biIsIG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKTsKIAogICAgIGlmICghbV9wYXJlbnRS
ZWxhdGl2ZVNjcm9sbGFibGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJwYXJlbnQgcmVsYXRpdmUgc2Nyb2xsYWJsZSByZWN0IiwgbV9wYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24gMjQxMTkxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0
IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBv
c2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShj
b25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4
ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBTY3JvbGxpbmdFdmVudFJl
c3VsdCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxv
YXRQb2ludCYpOwpAQCAtOTAsNyArOTAsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRS
ZWN0JiBsYXlvdXRWaWV3cG9ydCkgPSAwOwogCi0gICAgRmxvYXRQb2ludCBsYXN0Q29tbWl0dGVk
U2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RDb21taXR0ZWRTY3JvbGxQb3Np
dGlvbjsgfQogICAgIGNvbnN0IEZsb2F0U2l6ZSYgcmVhY2hhYmxlQ29udGVudHNTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9yZWFjaGFibGVDb250ZW50c1NpemU7IH0KICAgICBjb25zdCBMYXlvdXRS
ZWN0JiBwYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJl
bnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0OyB9CiAgICAgY29uc3QgSW50UG9pbnQmIHNjcm9sbE9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT3JpZ2luOyB9CkBAIC0xMjYsNyArMTI1LDYg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV90b3RhbENvbnRlbnRzU2l6ZTsKICAgICBGbG9h
dFNpemUgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7CiAgICAgRmxvYXRTaXplIG1f
cmVhY2hhYmxlQ29udGVudHNTaXplOwotICAgIEZsb2F0UG9pbnQgbV9sYXN0Q29tbWl0dGVkU2Ny
b2xsUG9zaXRpb247CiAgICAgTGF5b3V0UmVjdCBtX3BhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJl
Y3Q7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCShyZXZp
c2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0
LDYgQEAgU2Nyb2xsaW5nVHJlZSYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZAogICAgIHJldHVy
biBtX3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nVHJlZSgpOwogfQogCi1GbG9hdFBvaW50IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlv
bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Nyb2xsaW5nTm9kZS5sYXN0Q29tbWl0dGVkU2Ny
b2xsUG9zaXRpb24oKTsKLX0KLQogY29uc3QgRmxvYXRTaXplJiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlOjp0b3RhbENvbnRlbnRzU2l6ZSgpCiB7CiAgICAgcmV0dXJuIG1fc2Ny
b2xsaW5nTm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGUuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFdFQkNP
UkVfRVhQT1JUIFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUoKSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFBvaW50IGxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemUo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGbG9hdFNpemUmIHJlYWNoYWJsZUNvbnRlbnRz
U2l6ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEludFBvaW50JiBzY3JvbGxPcmlnaW4o
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgJKHJldmlzaW9uIDI0MTE5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhl
ZE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIFNj
cm9sbGluZ1RyZWVGaXhlZE5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAK
ICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVO
b2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdl
KGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBm
aXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3Jv
bGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlv
blJlY3QpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJl
YW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVG
aXhlZE5vZGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQkocmV2aXNpb24gMjQxMTkxKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzAsMTUgKzcwLDEzIEBAIHN0YXRpYyBpbmxpbmUgQ0dQb2lu
dCBvcGVyYXRvciooQ0dQb2ludCYKIH0KIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2Rl
Ojp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2Rl
JiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3Qg
RmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6
OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUm
IGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0KQogewogICAg
IHVzaW5nIG5hbWVzcGFjZSBTY3JvbGxpbmdUcmVlRml4ZWROb2RlSW50ZXJuYWw7CiAgICAgRmxv
YXRQb2ludCBsYXllclBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uRm9yVmll
d3BvcnRSZWN0KGZpeGVkUG9zaXRpb25SZWN0KTsKIAogICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSAiIDw8IHNjcm9sbGluZ05v
ZGVJRCgpIDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0
ICIgPDwgZml4ZWRQb3NpdGlvblJlY3QgPDwgIiB2aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQgIiA8
PCBtX2NvbnN0cmFpbnRzLnZpZXdwb3J0UmVjdEF0TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXll
ciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAi
IG5ldyBvZmZzZXQgZnJvbSB0b3AgIiA8PCAoZml4ZWRQb3NpdGlvblJlY3QueSgpIC0gbGF5ZXJQ
b3NpdGlvbi55KCkpKTsKIAotICAgIGxheWVyUG9zaXRpb24gLT0gY3VtdWxhdGl2ZURlbHRhOwot
CiAgICAgQ0dSZWN0IGxheWVyQm91bmRzID0gW21fbGF5ZXIgYm91bmRzXTsKICAgICBDR1BvaW50
IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5jaG9yUG9pbnRdOwogICAgIENHUG9pbnQgbmV3UG9z
aXRpb24gPSBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKSAr
IGFuY2hvclBvaW50ICogbGF5ZXJCb3VuZHMuc2l6ZTsKQEAgLTk2LDEwICs5NCw4IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6dXBkYXRlTGF5ZXIKICAgICBpZiAoIW1fY2hpbGRyZW4p
CiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0U2l6ZSBuZXdEZWx0YSA9IGxheWVyUG9zaXRp
b24gLSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSArIGN1bXVsYXRp
dmVEZWx0YTsKLQogICAgIGZvciAoYXV0byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAg
Y2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVk
UG9zaXRpb25SZWN0LCBuZXdEZWx0YSk7CisgICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRl
ckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCk7CiB9CiAKIHZv
aWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMs
IFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCShyZXZpc2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAKICAgICB2b2lkIGNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9s
bGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9u
UmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9k
ZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxp
bmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlLm1tCShyZXZpc2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgaW5saW5lIENHUG9pbnQgb3BlcmF0b3Iq
KENHUG9pbnQmCiB9CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUm
IGN1bXVsYXRpdmVEZWx0YSkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0KQogewogICAgIHVzaW5nIG5h
bWVzcGFjZSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUludGVybmFsOwogICAgIGJvb2wgYWRqdXN0
U3RpY2t5TGF5ZXIgPSBmYWxzZTsKQEAgLTg4LDggKzg4LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZTo6dXBkYXRlTGF5ZQogCiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywg
c3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgp
IDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0ICIgPDwg
Zml4ZWRQb3NpdGlvblJlY3QgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0ICIgPDwg
bV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxh
eWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIDw8
ICIgYWRqdXN0U3RpY2t5TGF5ZXIgIiA8PCBhZGp1c3RTdGlja3lMYXllcik7CiAKLSAgICBGbG9h
dFNpemUgZGVsdGFGb3JEZXNjZW5kYW50cyA9IGN1bXVsYXRpdmVEZWx0YTsKLQogICAgIGlmIChh
ZGp1c3RTdGlja3lMYXllcikgewogICAgICAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb24gPSBt
X2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFpbmlu
Z1JlY3QpOwogCkBAIC05NywxNSArOTUsMTMgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZTo6dXBkYXRlTGF5ZQogICAgICAgICBDR1BvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5j
aG9yUG9pbnRdOwogICAgICAgICBDR1BvaW50IG5ld1Bvc2l0aW9uID0gbGF5ZXJQb3NpdGlvbiAt
IG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkgKyBhbmNob3JQb2ludCAqIGxheWVyQm91
bmRzLnNpemU7CiAgICAgICAgIFttX2xheWVyIHNldFBvc2l0aW9uOm5ld1Bvc2l0aW9uXTsKLQot
ICAgICAgICBkZWx0YUZvckRlc2NlbmRhbnRzID0gbGF5ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWlu
dHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpICsgY3VtdWxhdGl2ZURlbHRhOwogICAgIH0K
IAogICAgIGlmICghbV9jaGlsZHJlbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRv
JiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIGRlbHRhRm9yRGVz
Y2VuZGFudHMpOworICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCiB2b2lkIFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmgJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYg
Zml4ZWRQb3NpdGlvblJlY3QsIGRvdWJsZSBzY2FsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRh
dGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGlu
Z1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVj
dCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYg
Y2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBGbG9hdFJlY3QmIGxheW91dFZpZXdwb3J0KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCShyZXZpc2lvbiAyNDExOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQxLDE3ICsxNDEsMTYgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOgogICAgICAgICByZXR1cm47CiAK
ICAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRh
dGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhlZFBvc2l0aW9uUmVjdCwgRmxv
YXRTaXplKCkpOworICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZSgqdGhpcywgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3Qg
U2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFNpemUmKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRh
dGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFu
Z2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JikKIHsKICAgICBpZiAoIW1fY2hpbGRyZW4pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCBmaXhlZFBvc2l0aW9uUmVjdChzY3JvbGxQb3Np
dGlvbigpLCBzY3JvbGxhYmxlQXJlYVNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6ICpt
X2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIEZsb2F0U2l6ZSgpKTsKKyAgICAgICAg
Y2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVk
UG9zaXRpb25SZWN0KCkpOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQm
IHNjcm9sbFBvc2l0aW9uKQpAQCAtMTkzLDcgKzE5Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZUlPUzoKICAgICAgICAgZml4ZWRQb3NpdGlvblJlY3QgPSBGbG9hdFJl
Y3Qoc2Nyb2xsUG9zaXRpb24sIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsKIAogICAgIGZvciAoYXV0
byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVy
QW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0LCBGbG9hdFNpemUoKSk7Cisg
ICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhl
ZFBvc2l0aW9uUmVjdCk7CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUlPUzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCShyZXZpc2lvbiAyNDExOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yIChhdXRvJiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZSgqdGhpcywgZml4ZWRQb3NpdGlvblJlY3QsIEZsb2F0
U2l6ZSgpKTsKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2Uo
KnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZs
b2F0UmVjdCYsIGRvdWJsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
TGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3QmLCBkb3VibGUpIG92ZXJy
aWRlIHsgfQogICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3Qg
RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIG92ZXJyaWRlOwogCi0gICAgdm9pZCB1cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2Vk
Tm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXpl
JiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0
IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRlOwogCiAgICAgU2Nyb2xsaW5n
RXZlbnRSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBv
dmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVNYWMubW0JKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MywxMSArOTMsMTAgQEAgU2Nyb2xsaW5nRXZlbnRSZXN1bHQgU2Nyb2xs
aW5nVHJlZU92ZXJmbAogCiAKIAotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1Ry
ZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwg
Y29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCit2b2lkIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVNYWM6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29u
c3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVk
UG9zaXRpb25SZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShjaGFuZ2VkTm9kZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGZpeGVkUG9zaXRpb25SZWN0KTsKLSAgICBVTlVTRURfUEFSQU0oY3VtdWxhdGl2
ZURlbHRhKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CkBAIC0xMzEsNyArMTMwLDcgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTQogICAgICAgICByZXR1cm47CiAKICAg
ICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhlZFBvc2l0aW9uUmVjdCwgeyB9KTsK
KyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZp
eGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBv
aW50JiBzY3JvbGxQb3NpdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNw
cAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlCiB7CiB9CiAK
LXZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNo
YW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0U2l6ZSYpCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OnVwZGF0ZUxheWVyc0FmdGVy
QW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmLCBjb25zdCBGbG9hdFJlY3Qm
KQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGaXhlZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAkocmV2aXNpb24gMjQx
MTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlRml4ZWROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToK
ICAgICBTY3JvbGxpbmdUcmVlRml4ZWROb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2Rl
SUQpOwogCiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlTm9kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJy
aWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZS5jcHAJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNv
bW1pdFN0YXQKIHsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6dXBkYXRlTGF5
ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYpCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Ojp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2Rl
JiwgY29uc3QgRmxvYXRSZWN0JikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xs
aW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAKICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1
cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1
cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiwg
Y29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQxMTkzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBAQAorMjAxOS0wMi0wOCAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29tcHV0ZSBmaXhlZCBwb3NpdGlv
biByZWN0IGJhc2VkIG9uIFNjcm9sbGluZ1RyZWUgc2Nyb2xsIHBvc2l0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0MzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAgICAg
IChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6Cisg
ICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OmR1bXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVu
KToKKworICAgICAgICBBdm9pZCBjb25zdGFudGx5IHJlY29uc3RydWN0aW5nIHRoZSBkZWxlZ2F0
ZS4KKworICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlSU9TOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJz
QWZ0ZXJBbmNlc3RvckNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisKKyAg
ICAgICAgU2V0dGluZyBzY3JvbGwgcG9zaXRpb24gYmFzZWQgb24gbm9kZSB0cmVlIGlzIHdyb25n
IGFzIGl0IG92ZXJyaWRlcyB0aGUgdXNlciBzY3JvbGwgcG9zaXRpb24uCisKKyAgICAgICAgKFdl
YktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2V0U2Nyb2xsTGF5
ZXJQb3NpdGlvbik6CisKKyAgICAgICAgUmVtb3ZlIHRoZSBjdXJyZW50IGluY29ycmVjdCBpbXBs
ZW1lbnRhdGlvbiBhbmQgcmVwbGFjZSB3aXRoIEZJWE1FLgorICAgICAgICBUaGlzIGlzIHVzZWQg
Zm9yIHByb2dyYW1tYXRpYyBzY3JvbGxpbmcuCisKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xs
KToKKworICAgICAgICBEb24ndCBjb21wdXRlIHRoZSBkZWx0YS4gSXQgaXMgbm8gbG9uZ2VyIG5l
ZWRlZCBzaW5jZSB0aGUgZml4ZWQgcG9zaXRpb24gcmVjdCB3ZSBnZXQgaXMgdGhlIGNvcnJlY3Qg
b25lLgorCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1M6OnNjcm9sbFZpZXdEaWRTY3JvbGwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp1cGRhdGVMYXllcnNBZnRlckFuY2Vz
dG9yQ2hhbmdlKTogRGVsZXRlZC4KKworICAgICAgICBUaGlzIHdhcyBpbmNvcnJlY3QgZm9yIGZy
YW1lcyBhbmQgZGlkbid0IGRvIGFueXRoaW5nIGFueXdheSBzbyByZW1vdmUgaXQuCisKIDIwMTkt
MDItMDggIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJh
bnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDYgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVhU2l6ZSwgc2Nyb2xs
YWJsZUFyZWFTaXplKQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplLCB0b3RhbENvbnRlbnRzU2l6ZSkKICAgICBT
Q1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFi
bGVDb250ZW50c1NpemUsIHJlYWNoYWJsZUNvbnRlbnRzU2l6ZSkKLSAgICBTQ1JPTExJTkdfTk9E
RV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxQb3NpdGlvbiwgc2Ny
b2xsUG9zaXRpb24pCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2luLCBzY3JvbGxPcmlnaW4pCiAjaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldHMsIGhvcml6b250YWxTbmFwT2Zmc2V0cykK
QEAgLTIxNiw3ICsyMTUsNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6U2Nyb2xsYWJsZUFyZWFTaXplLCBGbG9hdFNpemUsIHNldFNjcm9sbGFibGVBcmVhU2l6ZSk7
CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
VG90YWxDb250ZW50c1NpemUsIEZsb2F0U2l6ZSwgc2V0VG90YWxDb250ZW50c1NpemUpOwogICAg
IFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlYWNo
YWJsZUNvbnRlbnRzU2l6ZSwgRmxvYXRTaXplLCBzZXRSZWFjaGFibGVDb250ZW50c1NpemUpOwot
ICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNj
cm9sbFBvc2l0aW9uLCBGbG9hdFBvaW50LCBzZXRTY3JvbGxQb3NpdGlvbik7CiAgICAgU0NST0xM
SU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2lu
LCBJbnRQb2ludCwgc2V0U2Nyb2xsT3JpZ2luKTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
Okhvcml6b250YWxTbmFwT2Zmc2V0cywgVmVjdG9yPGZsb2F0Piwgc2V0SG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKTsKQEAgLTUxMiw5ICs1MTAsNiBAQCBzdGF0aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0m
IHRzLCBjb25zdCBTCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFibGVDb250
ZW50c1NpemUpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInJlYWNoYWJsZS1jb250ZW50cy1z
aXplIiwgbm9kZS5yZWFjaGFibGVDb250ZW50c1NpemUoKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQ
cm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbFBvc2l0aW9uKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJz
Y3JvbGwtcG9zaXRpb24iLCBub2RlLnNjcm9sbFBvc2l0aW9uKCkpOwotCiAgICAgaWYgKCFjaGFu
Z2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxPcmlnaW4pKQogICAgICAgICB0cy5kdW1wUHJvcGVydHko
InNjcm9sbC1vcmlnaW4iLCBub2RlLnNjcm9sbE9yaWdpbigpKTsKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlSU9TLmgJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlP
Uy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGxheW91dFZpZXdwb3J0KSBvdmVycmlkZTsKIAogICAgIHZvaWQg
dXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgc2Nyb2xsUG9zaXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjb25zdCBXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5v
ZGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPiBtX3Njcm9s
bGluZ05vZGVEZWxlZ2F0ZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCShyZXZpc2lv
biAyNDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDEwICs1Myw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZVJlbW8KICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpjb21taXRTdGF0
ZUJlZm9yZUNoaWxkcmVuKHN0YXRlTm9kZSk7CiAKICAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxh
eWVyKSkgewotICAgICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSkKKyAgICAgICAgaWYg
KHNjcm9sbENvbnRhaW5lckxheWVyKCkgJiYgIW1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlKQogICAg
ICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBudWxscHRyOwogICAgIH0KIAog
ICAgIGlmIChtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSkKQEAgLTcxLDE1ICs2OSw2IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW8KICAgICAgICAgbV9zY3JvbGxpbmdO
b2RlRGVsZWdhdGUtPmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihkb3duY2FzdDxTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU+KHN0YXRlTm9kZSkpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFu
Z2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3Qm
IGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUmIGN1bXVsYXRpdmVEZWx0YSkKLXsK
LSAgICBpZiAobV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUpIHsKLSAgICAgICAgbV9zY3JvbGxpbmdO
b2RlRGVsZWdhdGUtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUs
IGZpeGVkUG9zaXRpb25SZWN0LCBjdW11bGF0aXZlRGVsdGEpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVy
c0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVkUG9zaXRpb25SZWN0LCBjdW11
bGF0aXZlRGVsdGEpOwotfQotCiBGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVSZW1vdGVJT1M6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBpZiAobV9zY3Jv
bGxpbmdOb2RlRGVsZWdhdGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAkocmV2aXNpb24gMjQxMTkxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUx
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2Uo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgZG91YmxlIHNjYWxl
KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xs
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
Zml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURl
bHRhKSBvdmVycmlkZTsKLQogICAgIFdlYkNvcmU6OlNjcm9sbGluZ0V2ZW50UmVzdWx0IGhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGUg
eyByZXR1cm4gU2Nyb2xsaW5nRXZlbnRSZXN1bHQ6OkRpZE5vdEhhbmRsZUV2ZW50OyB9CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4g
bV9zY3JvbGxpbmdOb2RlRGVsZWdhdGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCShyZXZpc2lvbiAy
NDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTY2LDExICs2Niw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUkK
ICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGRv
d25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4oc3RhdGVOb2RlKSk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0
ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNv
bnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY3VtdWxh
dGl2ZURlbHRhKQotewotICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLT51cGRhdGVMYXllcnNB
ZnRlckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxh
dGl2ZURlbHRhKTsKLX0KLQogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2Nyb2xs
aW5nTm9kZURlbGVnYXRlLT5zY3JvbGxQb3NpdGlvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgJKHJl
dmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0U2Nyb2xsVmlld0Rl
bGVnYXRlKCk7CiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYpOwogICAgIHZvaWQgY29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYp
OwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgY3VtdWxhdGl2
ZURlbHRhKTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKTsKICAgICB2b2lkIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCShyZXZp
c2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIyMywxNyArMjIzLDE0IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUkKIHsKICAgICBTZXRGb3JTY29wZTxib29sPiB1cGRhdGluZ0NoYW5nZShtX3VwZGF0
aW5nRnJvbVN0YXRlTm9kZSwgdHJ1ZSk7CiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWlu
ZXJMYXllcikKLSAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikKICAg
ICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKQogICAgICAgICB8fCBzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6UmVhY2hhYmxlQ29udGVudHNTaXplKQotICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsUG9z
aXRpb24pCiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxPcmlnaW4pKSB7CiAgICAgICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgICAgICBVSVNjcm9sbFZpZXcgKnNjcm9sbFZp
ZXcgPSAoVUlTY3JvbGxWaWV3ICopW3Njcm9sbExheWVyKCkgZGVsZWdhdGVdOwogICAgICAgICBB
U1NFUlQoW3Njcm9sbFZpZXcgaXNLaW5kT2ZDbGFzczpbVUlTY3JvbGxWaWV3IHNlbGZdXSk7CiAK
LSAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikKLSAgICAgICAgICAg
IHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKSB7CisgICAgICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CiAgICAgICAgICAgICBpZiAoIW1fc2Nyb2xs
Vmlld0RlbGVnYXRlKQogICAgICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRv
cHROUyhbW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhT
Y3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOnRoaXNdKTsKIApAQCAtMjQ3LDEyICsyNDQsOCBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJCiAgICAgICAgICAgICByZWNv
bXB1dGVJbnNldHMgPSB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
U2Nyb2xsUG9zaXRpb24pCi0gICAgICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2luKSkK
LSAgICAgICAgICAgICYmICFbbV9zY3JvbGxWaWV3RGVsZWdhdGUgX2lzSW5Vc2VySW50ZXJhY3Rp
b25dKSB7Ci0gICAgICAgICAgICBzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQgPSBzY3JvbGxpbmdT
dGF0ZU5vZGUuc2Nyb2xsUG9zaXRpb24oKSArIHNjcm9sbE9yaWdpbigpOworICAgICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlNjcm9sbE9yaWdpbikpCiAgICAgICAgICAgICByZWNvbXB1dGVJbnNldHMgPSB0
cnVlOwotICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlY29tcHV0ZUluc2V0cykgewogICAgICAg
ICAgICAgVUlFZGdlSW5zZXRzIGluc2V0cyA9IFVJRWRnZUluc2V0c01ha2UoMCwgMCwgMCwgMCk7
CkBAIC0yNzUsMTcgKzI2OCw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUkKICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVl
Tm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNv
bnN0IEZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKQotewotICAgIGlmICghc2Nyb2xsaW5nTm9k
ZSgpLmNoaWxkcmVuKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZsb2F0U2l6ZSBzY3JvbGxE
ZWx0YSA9IGxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIC0gc2Nyb2xsaW5nTm9kZSgpLnNj
cm9sbFBvc2l0aW9uKCk7Ci0KLSAgICBmb3IgKGF1dG8mIGNoaWxkIDogKnNjcm9sbGluZ05vZGUo
KS5jaGlsZHJlbigpKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNo
YW5nZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIGN1bXVsYXRpdmVEZWx0YSArIHNj
cm9sbERlbHRhKTsKLX0KLQogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCkBAIC0yOTcsNyArMjc5LDcgQEAgRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbAogCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9z
aXRpb24pCiB7Ci0gICAgW21fc2Nyb2xsTGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2Uoc2Ny
b2xsUG9zaXRpb24ueCgpICsgc2Nyb2xsT3JpZ2luKCkueCgpLCBzY3JvbGxQb3NpdGlvbi55KCkg
KyBzY3JvbGxPcmlnaW4oKS55KCkpXTsKKyAgICAvLyBGSVhNRTogU2V0IHRoZSBzY3JvbGwgcG9z
aXRpb24gaW4gcmVzcG9uc2UgdG8gcHJvZ3JhbW1hdGljIHNjcm9sbC4KICAgICB1cGRhdGVDaGls
ZE5vZGVzQWZ0ZXJTY3JvbGwoc2Nyb2xsUG9zaXRpb24pOwogfQogCkBAIC0zMTIsMTAgKzI5NCw5
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUkKICAgICAgICAgZml4
ZWRQb3NpdGlvblJlY3QgPSBmcmFtZU5vZGUtPmZpeGVkUG9zaXRpb25SZWN0KCk7CiAgICAgZWxz
ZQogICAgICAgICBmaXhlZFBvc2l0aW9uUmVjdCA9IHNjcm9sbGluZ1RyZWUoKS5maXhlZFBvc2l0
aW9uUmVjdCgpOwotICAgIEZsb2F0U2l6ZSBzY3JvbGxEZWx0YSA9IGxhc3RDb21taXR0ZWRTY3Jv
bGxQb3NpdGlvbigpIC0gc2Nyb2xsUG9zaXRpb247CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
KnNjcm9sbGluZ05vZGUoKS5jaGlsZHJlbigpKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJz
QWZ0ZXJBbmNlc3RvckNoYW5nZShzY3JvbGxpbmdOb2RlKCksIGZpeGVkUG9zaXRpb25SZWN0LCBz
Y3JvbGxEZWx0YSk7CisgICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKHNjcm9sbGluZ05vZGUoKSwgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCiB2b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNjcm9sbFdpbGxTdGFydCgpIGNvbnN0
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNDExOTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wMi0wOCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29tcHV0ZSBmaXhlZCBwb3NpdGlvbiByZWN0
IGJhc2VkIG9uIHNjcm9sbGluZyB0cmVlIHZpZXcgb2YgdGhlIHNjcm9sbCBwb3NpdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDMzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBieSBGcmVk
ZXJpYyBXYW5nLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUt
ZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWlmcmFt
ZS5odG1sOgorICAgICAgICAqIHNjcm9sbGluZ2Nvb3JkaW5hdG9yL2lvcy91aS1zY3JvbGxpbmct
dHJlZS1leHBlY3RlZC50eHQKKwogMjAxOS0wMi0wOCAgRXJpYyBMaWFuZyAgPGVyaWNsaWFuZ0Bh
cHBsZS5jb20+CiAKICAgICAgICAgQ2hlY2sgaWYgcmVjZWl2ZSBBWFByZXNzRGlkRmFpbCBub3Rp
ZmljYXRpb24gd2hlbiBwZXJmb3JtaW5nIEFYUHJlc3MgYWN0aW9uIG9uIGRpc2FibGVkIE1lbnVM
aXN0LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUt
ZXhwZWN0ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9p
b3Mvc2Nyb2xsLWlmcmFtZS1leHBlY3RlZC5odG1sCShyZXZpc2lvbiAyNDExOTEpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWlmcmFtZS1leHBlY3RlZC5odG1sCSh3
b3JraW5nIGNvcHkpCkBAIC0xOSw2ICsxOSw4IEBACiAgICAgICAgIDxkaXYgY2xhc3M9dGVzdGRp
dj48L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz10ZXN0ZGl2PjwvZGl2PgogICAgICAgICA8ZGl2
IGNsYXNzPXRlc3RkaXY+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9dGVzdGRpdj48L2Rpdj4K
KyAgICAgICAgPGRpdiBjbGFzcz10ZXN0ZGl2PjwvZGl2PgogICAgIDwvZGl2PgogPC9ib2R5Pgog
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJh
bWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Ny
b2xsLWlmcmFtZS5odG1sCShyZXZpc2lvbiAyNDExOTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Nj
cm9sbGluZy9pb3Mvc2Nyb2xsLWlmcmFtZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0zNywxMSAr
MzcsMTkgQEAKICAgICAgICAgIGF3YWl0IHRvdWNoQW5kRHJhZ0Zyb21Qb2ludFRvUG9pbnQoYy54
LCBjLnksIGMueCwgYy55IC0gMjAwMCk7CiAgICAgICAgICBhd2FpdCBsaWZ0VXBBdFBvaW50KGMu
eCwgYy55IC0gMjAwMCk7CiAKKyAgICAgICAgIGMgPSBjZW50ZXJPZigicG9zaXRpb25GaXhlZCIp
OworICAgICAgICAgYXdhaXQgdG91Y2hBbmREcmFnRnJvbVBvaW50VG9Qb2ludChjLngsIGMueSwg
Yy54IC0gMTUwLCBjLnkgLSAxNTApOworICAgICAgICAgYXdhaXQgbGlmdFVwQXRQb2ludChjLngg
LSAxNTAsIGMueSAtIDE1MCk7CisKKyAgICAgICAgIGMgPSBjZW50ZXJPZigicG9zaXRpb25TdGlj
a3kiKTsKKyAgICAgICAgIGF3YWl0IHRvdWNoQW5kRHJhZ0Zyb21Qb2ludFRvUG9pbnQoYy54LCBj
LnksIGMueCwgYy55IC0gMTUwKTsKKyAgICAgICAgIGF3YWl0IGxpZnRVcEF0UG9pbnQoYy54LCBj
LnkgLSAxNTApOworCiAgICAgICAgICAvLyBXYWl0IGZvciBzY3JvbGxpbmcgdG8gc3RhYmlsaXpl
IGFuZCBmb3Igc2Nyb2xsYmFycyB0byBkaXNhcHBlYXIuCiAgICAgICAgICBzZXRUaW1lb3V0KCgp
ID0+IHt0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsgfSwgMjAwMCk7CiAgICAgICAgfQogCi0gICAg
ICAgdmFyIGZyYW1lVG9Mb2FkQ291bnQgPSA0OworICAgICAgIHZhciBmcmFtZVRvTG9hZENvdW50
ID0gNjsKICAgICAgICBmdW5jdGlvbiBuZXdGcmFtZUxvYWRlZCgpIHsKICAgICAgICAgICAgZnJh
bWVUb0xvYWRDb3VudC0tOwogICAgICAgICAgICBpZiAoZnJhbWVUb0xvYWRDb3VudCA9PSAwKQpA
QCAtODUsNiArOTMsMTkgQEAKICAgICAgICAgICAgIDxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsg
aGVpZ2h0OiA1MDBweDsgYmFja2dyb3VuZDogZ3JlZW47Jz48L2Rpdj4KICAgICAgICAgICAgIDwv
Ym9keT4iIG9ubG9hZD0ibmV3RnJhbWVMb2FkZWQoKSI+CiAgICAgICAgIDwvaWZyYW1lPgorICAg
ICAgICA8aWZyYW1lIGlkPSJwb3NpdGlvbkZpeGVkIiBzY3JvbGxpbmc9InllcyIgc3JjZG9jPSIK
KyAgICAgICAgICAgIDxib2R5IHN0eWxlPSdwb3NpdGlvbjogcmVsYXRpdmU7IG1hcmdpbjogMDsg
d2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Jz4KKyAgICAgICAgICAgICAgICA8ZGl2IHN0eWxl
PSdwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiA1MHB4OyBiYWNrZ3JvdW5k
OiBncmVlbjsnPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBh
YnNvbHV0ZTsgYm90dG9tOiAwcHg7IHJpZ2h0OiAwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiA1
MHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsnPjwvZGl2PgorICAgICAgICAgICAgPC9ib2R5PiIgb25s
b2FkPSJuZXdGcmFtZUxvYWRlZCgpIj4KKyAgICAgICAgPC9pZnJhbWU+CisgICAgICAgIDxpZnJh
bWUgaWQ9InBvc2l0aW9uU3RpY2t5IiBzY3JvbGxpbmc9InllcyIgc3JjZG9jPSIKKyAgICAgICAg
ICAgIDxib2R5IHN0eWxlPSdwb3NpdGlvbjogcmVsYXRpdmU7IG1hcmdpbjogMDsgd2lkdGg6IDMw
MHB4OyBoZWlnaHQ6IDMwMHB4Jz4KKyAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6
IDEwMHB4Jz48L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdwb3NpdGlvbjogLXdl
YmtpdC1zdGlja3k7IHBvc2l0aW9uOiBzdGlja3k7IGxlZnQ6IDBweDsgdG9wOiAwcHg7IHdpZHRo
OiAxMDBweDsgaGVpZ2h0OiA1MHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsnPjwvZGl2PgorICAgICAg
ICAgICAgICAgIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZTsgYm90dG9tOiAwcHg7IHdp
ZHRoOiAxMDBweDsgaGVpZ2h0OiA1MHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsnPjwvZGl2PgorICAg
ICAgICAgICAgPC9ib2R5PiIgb25sb2FkPSJuZXdGcmFtZUxvYWRlZCgpIj4KKyAgICAgICAgPC9p
ZnJhbWU+CiAgICAgPC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9z
Y3JvbGxpbmdjb29yZGluYXRvci9pb3MvdWktc2Nyb2xsaW5nLXRyZWUtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Njcm9sbGluZ2Nvb3JkaW5hdG9yL2lvcy91aS1zY3Jv
bGxpbmctdHJlZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI0MTE5MSkKKysrIExheW91dFRlc3Rz
L3Njcm9sbGluZ2Nvb3JkaW5hdG9yL2lvcy91aS1zY3JvbGxpbmctdHJlZS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTMsNyArMyw2IEBACiAgIChmcmFtZSBzY3JvbGxpbmcgbm9kZQog
ICAgIChzY3JvbGxhYmxlIGFyZWEgc2l6ZSB3aWR0aD0zMjAgaGVpZ2h0PTU0OCkKICAgICAodG90
YWwgY29udGVudCBzaXplIHdpZHRoPTEzMDggaGVpZ2h0PTIwMjEpCi0gICAgKGxhc3QgY29tbWl0
dGVkIHNjcm9sbCBwb3NpdGlvbiAoMCwwKSkKICAgICAoc2Nyb2xsYWJsZSBhcmVhIHBhcmFtZXRl
cnMgCiAgICAgICAoaG9yaXpvbnRhbCBzY3JvbGwgZWxhc3RpY2l0eSAxKQogICAgICAgKHZlcnRp
Y2FsIHNjcm9sbCBlbGFzdGljaXR5IDEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>361515</attachid>
            <date>2019-02-08 10:30:10 -0800</date>
            <delta_ts>2019-03-26 09:45:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>frame-fixed-ios-4.patch</filename>
            <type>text/plain</type>
            <size>50186</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE5LTAyLTA4ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBDb21wdXRlIGZpeGVkIHBvc2l0
aW9uIHJlY3QgYmFzZWQgb24gc2Nyb2xsaW5nIHRyZWUgdmlldyBvZiB0aGUgY3VycmVudCBzY3Jv
bGwgcG9zaXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE5NDQzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEl0IHNob3VsZCBiZSBzY3JvbGxpbmcgdHJlZXMgcmVzcG9uc2liaWxpdHkgdG8gaW5jb3Jw
b3JhdGUgc2Nyb2xsIHBvc2l0aW9ucyB3aGVuIGNvbXB1dGluZyBmaW5hbCBwb3NpdGlvbnMgZm9y
IGxheWVycy4KKyAgICAgICAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gYXJjaGl2ZSBnbGl0Y2gt
ZnJlZSBwb3NpdGlvbmluZy4KKworICAgICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgY29kZSB0aGF0
IHRoYXQgcGFzc2VzIHRoZSBsYXN0IGNvbW1pdHRlZCBzY3JvbGwgcG9zaXRpb24gdmlhIHRoZSBz
dGF0ZSB0cmVlIGFuZCBtb2RpZmllcyBpdHMgb25seQorICAgICAgICBjbGllbnQgKGluIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MpIHRvIHVzZSB0aGUgVUlTY3JvbGxWaWV3
IHNjcm9sbGluZyBwb3NpdGlvbi4KKworICAgICAgICBUZXN0IGJ5IEZyZWRlcmljIFdhbmcuCisK
KyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sbGlu
Z05vZGVHZW9tZXRyeSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0QWxsUHJvcGVydGllc0NoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQ
b3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OnNjcm9sbFBvc2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZSk6CisKKyAgICAgICAgUmVtb3ZlIHRoZSAnY3VtdWxhdGl2ZURlbHRhJyBw
YXJhbWV0ZXIuIEl0IGlzIG5vdCBuZWVkZWQgc2luY2UgJ2ZpeGVkUG9zaXRpb25SZWN0JyBpcyBj
b3JyZWN0IHdpdGhvdXQgYWRqdXN0bWVudHMuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGU6OmZpeGVkUG9zaXRpb25SZWN0KToKKworICAg
ICAgICBDb21wdXRlIGJhc2VkIG9uIHNjcm9sbGluZyB0cmVlIHZpZXcgb2YgdGhlIHNjcm9sbGlu
ZyBwb3NpdGlvbi4KKworICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2Rl
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU6OmNvbW1p
dFN0YXRlQmVmb3JlQ2hpbGRyZW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6bGFzdENvbW1pdHRlZFNjcm9sbFBv
c2l0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlv
biBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xs
aW5nVHJlZUZpeGVkTm9kZS5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlRml4
ZWROb2RlOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKToKKyAgICAgICAgKiBwYWdl
L3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oOgorICAgICAgICAqIHBh
Z2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0
b3JDaGFuZ2UpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlSU9TLmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0Fm
dGVyU2Nyb2xsKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVNYWM6OnNldFNjcm9sbExheWVyUG9zaXRpb24pOgorICAgICAgICAq
IHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFj
Lmg6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWM6OnNl
dFNjcm9sbExheWVyUG9zaXRpb24pOgorCiAyMDE5LTAyLTA4ICBFcmljIExpYW5nICA8ZXJpY2xp
YW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBXaGVuIHBlcmZvcm1pbmcgQVhQcmVzcywgY2hlY2sg
dG8gc2VlIGlmIHRoZSBtZW51IGxpc3QgaXMgZGlzYWJsZWQuCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvQXN5bmNTY3JvbGxpbmdDb29yZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNiw3
ICs2MzYsNiBAQCB2b2lkIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNldFNjcm9sCiAKICAg
ICBzY3JvbGxpbmdOb2RlLnNldFBhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJlY3Qoc2Nyb2xsaW5n
R2VvbWV0cnkucGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7CiAgICAgc2Nyb2xsaW5nTm9k
ZS5zZXRTY3JvbGxPcmlnaW4oc2Nyb2xsaW5nR2VvbWV0cnkuc2Nyb2xsT3JpZ2luKTsKLSAgICBz
Y3JvbGxpbmdOb2RlLnNldFNjcm9sbFBvc2l0aW9uKHNjcm9sbGluZ0dlb21ldHJ5LnNjcm9sbFBv
c2l0aW9uKTsKICAgICBzY3JvbGxpbmdOb2RlLnNldFRvdGFsQ29udGVudHNTaXplKHNjcm9sbGlu
Z0dlb21ldHJ5LmNvbnRlbnRTaXplKTsKICAgICBzY3JvbGxpbmdOb2RlLnNldFJlYWNoYWJsZUNv
bnRlbnRzU2l6ZShzY3JvbGxpbmdHZW9tZXRyeS5yZWFjaGFibGVDb250ZW50U2l6ZSk7CiAgICAg
c2Nyb2xsaW5nTm9kZS5zZXRTY3JvbGxhYmxlQXJlYVNpemUoc2Nyb2xsaW5nR2VvbWV0cnkuc2Ny
b2xsYWJsZUFyZWFTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmNwcAkocmV2aXNp
b24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGluZ1N0CiAgICAgLCBtX3RvdGFsQ29udGVu
dHNTaXplKHN0YXRlTm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpKQogICAgICwgbV9yZWFjaGFibGVD
b250ZW50c1NpemUoc3RhdGVOb2RlLnJlYWNoYWJsZUNvbnRlbnRzU2l6ZSgpKQogICAgICwgbV9w
YXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0KHN0YXRlTm9kZS5wYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KCkpCi0gICAgLCBtX3Njcm9sbFBvc2l0aW9uKHN0YXRlTm9kZS5zY3JvbGxQb3Np
dGlvbigpKQogICAgICwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbihzdGF0ZU5vZGUucmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb24oKSkKICAgICAsIG1fc2Nyb2xsT3JpZ2luKHN0YXRlTm9kZS5zY3Jv
bGxPcmlnaW4oKSkKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtNjgsNyArNjcsNiBA
QCB2b2lkIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0QWxsCiAgICAgc2V0UHJvcGVy
dHlDaGFuZ2VkQml0KFRvdGFsQ29udGVudHNTaXplKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRC
aXQoUmVhY2hhYmxlQ29udGVudHNTaXplKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoUGFy
ZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7Ci0gICAgc2V0UHJvcGVydHlDaGFuZ2VkQml0KFNj
cm9sbFBvc2l0aW9uKTsKICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsT3JpZ2luKTsK
ICAgICBzZXRQcm9wZXJ0eUNoYW5nZWRCaXQoU2Nyb2xsYWJsZUFyZWFQYXJhbXMpOwogICAgIHNl
dFByb3BlcnR5Q2hhbmdlZEJpdChSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbik7CkBAIC0xMjMsMTUg
KzEyMSw2IEBAIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRQYXIKICAgICBz
ZXRQcm9wZXJ0eUNoYW5nZWQoUGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKLXsKLSAgICBpZiAobV9zY3JvbGxQb3NpdGlvbiA9
PSBzY3JvbGxQb3NpdGlvbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9zY3JvbGxQb3NpdGlv
biA9IHNjcm9sbFBvc2l0aW9uOwotICAgIHNldFByb3BlcnR5Q2hhbmdlZChTY3JvbGxQb3NpdGlv
bik7Ci19Ci0KIHZvaWQgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpzZXRTY3JvbGxPcmln
aW4oY29uc3QgSW50UG9pbnQmIHNjcm9sbE9yaWdpbikKIHsKICAgICBpZiAobV9zY3JvbGxPcmln
aW4gPT0gc2Nyb2xsT3JpZ2luKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9u
IDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRl
U2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIHB1YmxpYzoK
ICAgICAgICAgVG90YWxDb250ZW50c1NpemUsCiAgICAgICAgIFJlYWNoYWJsZUNvbnRlbnRzU2l6
ZSwKICAgICAgICAgUGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCwKLSAgICAgICAgU2Nyb2xs
UG9zaXRpb24sCiAgICAgICAgIFNjcm9sbE9yaWdpbiwKICAgICAgICAgU2Nyb2xsYWJsZUFyZWFQ
YXJhbXMsCiAgICAgICAgIFJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uLApAQCAtNzMsOSArNzIsNiBA
QCBwdWJsaWM6CiAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFyZW50UmVsYXRpdmVTY3JvbGxhYmxl
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdDsgfQog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdChj
b25zdCBMYXlvdXRSZWN0Jik7CiAKLSAgICBjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsUG9zaXRpb247IH0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmKTsKLQogICAgIGNvbnN0
IEludFBvaW50JiBzY3JvbGxPcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbE9yaWdpbjsg
fQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2Nyb2xsT3JpZ2luKGNvbnN0IEludFBvaW50
Jik7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVG
cmFtZUhvc3RpbmdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZS5jcHAJKHJldmlzaW9uIDI0MTE5
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZUhv
c3RpbmdOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsMTMgKzU3LDEzIEBAIHZvaWQgU2Ny
b2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGU6OmNvbW0KICAgICAgICAgbV9wYXJlbnRSZWxhdGl2
ZVNjcm9sbGFibGVSZWN0ID0gZnJhbWVIb3N0aW5nU3RhdGVOb2RlLnBhcmVudFJlbGF0aXZlU2Ny
b2xsYWJsZVJlY3QoKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5nTm9kZTo6
dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYg
Y2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZs
b2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVIb3N0aW5n
Tm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVl
Tm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpCiB7
CiAgICAgaWYgKCFtX2NoaWxkcmVuKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8m
IGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFu
Y2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxhdGl2ZURl
bHRhKTsKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hh
bmdlZE5vZGUsIGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogTGF5b3V0UG9pbnQgU2Nyb2xsaW5n
VHJlZUZyYW1lSG9zdGluZ05vZGU6OnBhcmVudFRvTG9jYWxQb2ludChMYXlvdXRQb2ludCBwb2lu
dCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVGcmFtZUhvc3RpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lSG9zdGluZ05vZGUuaAkocmV2aXNpb24gMjQxMTkx
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZyYW1lSG9z
dGluZ05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQCBwcml2YXRlOgogICAg
IFNjcm9sbGluZ1RyZWVGcmFtZUhvc3RpbmdOb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdO
b2RlSUQpOwogCiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9s
bGluZ1N0YXRlTm9kZSYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0
UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRh
KSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3Qg
U2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9z
aXRpb25SZWN0KSBmaW5hbDsKIAogICAgIGNvbnN0IExheW91dFJlY3QmIHBhcmVudFJlbGF0aXZl
U2Nyb2xsYWJsZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudFJlbGF0aXZlU2Nyb2xsYWJs
ZVJlY3Q7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24g
MjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3Rh
dGVOb2RlJikgb3ZlcnJpZGU7CiAgICAgCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBpbXBsZW1l
bnQgdGhpcyB3aGVuIHdlIHN1cHBvcnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVzIGFzIGNo
aWxkcmVuLgotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBT
Y3JvbGxpbmdUcmVlTm9kZSYgLypjaGFuZ2VkTm9kZSovLCBjb25zdCBGbG9hdFJlY3QmIC8qZml4
ZWRQb3NpdGlvblJlY3QqLywgY29uc3QgRmxvYXRTaXplJiAvKmN1bXVsYXRpdmVEZWx0YSovKSBv
dmVycmlkZSB7IH0KKyAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29u
c3QgU2Nyb2xsaW5nVHJlZU5vZGUmIC8qY2hhbmdlZE5vZGUqLywgY29uc3QgRmxvYXRSZWN0JiAv
KmZpeGVkUG9zaXRpb25SZWN0Ki8pIG92ZXJyaWRlIHsgfQogCiAgICAgU2Nyb2xsaW5nRXZlbnRS
ZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlk
ZSA9IDA7CiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3Zl
cnJpZGU7CkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgdmlld1RvQ29u
dGVudHNPZmZzZXQoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIGNvbnN0OwogICAg
IEZsb2F0UmVjdCBsYXlvdXRWaWV3cG9ydEZvclNjcm9sbFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9p
bnQmIHZpc2libGVDb250ZW50T3JpZ2luLCBmbG9hdCBzY2FsZSkgY29uc3Q7CiAKLSAgICBGbG9h
dFJlY3QgZml4ZWRQb3NpdGlvblJlY3QoKSB7IHJldHVybiBGbG9hdFJlY3QobGFzdENvbW1pdHRl
ZFNjcm9sbFBvc2l0aW9uKCksIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsgfTsKKyAgICBGbG9hdFJl
Y3QgZml4ZWRQb3NpdGlvblJlY3QoKSB7IHJldHVybiBGbG9hdFJlY3Qoc2Nyb2xsUG9zaXRpb24o
KSwgc2Nyb2xsYWJsZUFyZWFTaXplKCkpOyB9OwogCiAgICAgZmxvYXQgZnJhbWVTY2FsZUZhY3Rv
cigpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWVTY2FsZUZhY3RvcjsgfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlTm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVOb2RlLmgJKHJldmlz
aW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRl
Tm9kZSYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUm
IGN1bXVsYXRpdmVEZWx0YSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVMYXllcnNBZnRl
ckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29u
c3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCkgPSAwOwogCiAgICAgU2Nyb2xsaW5nVHJl
ZU5vZGUqIHBhcmVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyZW50OyB9CiAgICAgdm9pZCBzZXRQ
YXJlbnQoU2Nyb2xsaW5nVHJlZU5vZGUqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGU6OmNvbW1pdFMKICAgICBpZiAoc3RhdGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGlu
Z1N0YXRlU2Nyb2xsaW5nTm9kZTo6UmVhY2hhYmxlQ29udGVudHNTaXplKSkKICAgICAgICAgbV9y
ZWFjaGFibGVDb250ZW50c1NpemUgPSBzdGF0ZS5yZWFjaGFibGVDb250ZW50c1NpemUoKTsKIAot
ICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxQb3NpdGlvbikpCi0gICAgICAgIG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0
aW9uID0gc3RhdGUuc2Nyb2xsUG9zaXRpb24oKTsKLQogICAgIGlmIChzdGF0ZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpQYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KSkKICAgICAgICAgbV9wYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0ID0gc3Rh
dGUucGFyZW50UmVsYXRpdmVTY3JvbGxhYmxlUmVjdCgpOwogCkBAIC0xMTMsMTMgKzExMCwxMyBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOjpjb21taXRTCiAgICAgICAgIHNjcm9s
bGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZVJlcXVlc3RzU2Nyb2xsKHNjcm9sbGluZ05vZGVJ
RCgpLCBzY3JvbGxpbmdTdGF0ZU5vZGUucmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24oKSwgc2Nyb2xs
aW5nU3RhdGVOb2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRp
Y1Njcm9sbCgpKTsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdl
ZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6
ZSYgY3VtdWxhdGl2ZURlbHRhKQordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6dXBk
YXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hh
bmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpCiB7CiAgICAgaWYg
KCFtX2NoaWxkcmVuKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
Km1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxhdGl2ZURlbHRhKTsKKyAg
ICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUs
IGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZTo6c2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCkBA
IC0xOTMsNyArMTkwLDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTo6ZHVtcFBy
bwogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRvdGFsIGNvbnRlbnQgc2l6ZSBmb3IgcnViYmVy
IGJhbmQiLCBtX3RvdGFsQ29udGVudHNTaXplRm9yUnViYmVyQmFuZCk7CiAgICAgaWYgKG1fcmVh
Y2hhYmxlQ29udGVudHNTaXplICE9IG1fdG90YWxDb250ZW50c1NpemUpCiAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgicmVhY2hhYmxlIGNvbnRlbnQgc2l6ZSIsIG1fcmVhY2hhYmxlQ29udGVudHNT
aXplKTsKLSAgICB0cy5kdW1wUHJvcGVydHkoImxhc3QgY29tbWl0dGVkIHNjcm9sbCBwb3NpdGlv
biIsIG1fbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKTsKIAogICAgIGlmICghbV9wYXJlbnRS
ZWxhdGl2ZVNjcm9sbGFibGVSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJwYXJlbnQgcmVsYXRpdmUgc2Nyb2xsYWJsZSByZWN0IiwgbV9wYXJlbnRSZWxhdGl2ZVNjcm9s
bGFibGVSZWN0KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24gMjQxMTkxKQor
KysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0
YXRlTm9kZSYpIG92ZXJyaWRlOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpIG92ZXJyaWRlOwogCi0gICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0
IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBv
c2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOwor
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShj
b25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4
ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBTY3JvbGxpbmdFdmVudFJl
c3VsdCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsYXRmb3JtV2hlZWxFdmVudCYpID0gMDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsUG9zaXRpb24oY29uc3QgRmxv
YXRQb2ludCYpOwpAQCAtOTAsNyArOTAsNiBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIHZv
aWQgc2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRS
ZWN0JiBsYXlvdXRWaWV3cG9ydCkgPSAwOwogCi0gICAgRmxvYXRQb2ludCBsYXN0Q29tbWl0dGVk
U2Nyb2xsUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RDb21taXR0ZWRTY3JvbGxQb3Np
dGlvbjsgfQogICAgIGNvbnN0IEZsb2F0U2l6ZSYgcmVhY2hhYmxlQ29udGVudHNTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9yZWFjaGFibGVDb250ZW50c1NpemU7IH0KICAgICBjb25zdCBMYXlvdXRS
ZWN0JiBwYXJlbnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9wYXJl
bnRSZWxhdGl2ZVNjcm9sbGFibGVSZWN0OyB9CiAgICAgY29uc3QgSW50UG9pbnQmIHNjcm9sbE9y
aWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsT3JpZ2luOyB9CkBAIC0xMjYsNyArMTI1LDYg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFNpemUgbV90b3RhbENvbnRlbnRzU2l6ZTsKICAgICBGbG9h
dFNpemUgbV90b3RhbENvbnRlbnRzU2l6ZUZvclJ1YmJlckJhbmQ7CiAgICAgRmxvYXRTaXplIG1f
cmVhY2hhYmxlQ29udGVudHNTaXplOwotICAgIEZsb2F0UG9pbnQgbV9sYXN0Q29tbWl0dGVkU2Ny
b2xsUG9zaXRpb247CiAgICAgTGF5b3V0UmVjdCBtX3BhcmVudFJlbGF0aXZlU2Nyb2xsYWJsZVJl
Y3Q7CiAgICAgSW50UG9pbnQgbV9zY3JvbGxPcmlnaW47CiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCShyZXZp
c2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTEgKzQ0
LDYgQEAgU2Nyb2xsaW5nVHJlZSYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZAogICAgIHJldHVy
biBtX3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nVHJlZSgpOwogfQogCi1GbG9hdFBvaW50IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlv
bigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc2Nyb2xsaW5nTm9kZS5sYXN0Q29tbWl0dGVkU2Ny
b2xsUG9zaXRpb24oKTsKLX0KLQogY29uc3QgRmxvYXRTaXplJiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlOjp0b3RhbENvbnRlbnRzU2l6ZSgpCiB7CiAgICAgcmV0dXJuIG1fc2Ny
b2xsaW5nTm9kZS50b3RhbENvbnRlbnRzU2l6ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGUuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC00MSw3ICs0MSw2IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFdFQkNP
UkVfRVhQT1JUIFNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUoKSBjb25zdDsKLSAgICBXRUJD
T1JFX0VYUE9SVCBGbG9hdFBvaW50IGxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIGNvbnN0
OwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxDb250ZW50c1NpemUo
KTsKICAgICBXRUJDT1JFX0VYUE9SVCBjb25zdCBGbG9hdFNpemUmIHJlYWNoYWJsZUNvbnRlbnRz
U2l6ZSgpOwogICAgIFdFQkNPUkVfRVhQT1JUIGNvbnN0IEludFBvaW50JiBzY3JvbGxPcmlnaW4o
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVGaXhlZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmgJKHJldmlzaW9uIDI0MTE5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVGaXhl
ZE5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcsNyBAQCBwcml2YXRlOgogICAgIFNj
cm9sbGluZ1RyZWVGaXhlZE5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAK
ICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVO
b2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdl
KGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBm
aXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJy
aWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3Jv
bGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlv
blJlY3QpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJl
YW0mLCBTY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVG
aXhlZE5vZGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
Y29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5tbQkocmV2aXNpb24gMjQxMTkxKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5t
bQkod29ya2luZyBjb3B5KQpAQCAtNzAsMTUgKzcwLDEzIEBAIHN0YXRpYyBpbmxpbmUgQ0dQb2lu
dCBvcGVyYXRvciooQ0dQb2ludCYKIH0KIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlRml4ZWROb2Rl
Ojp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2Rl
JiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3Qg
RmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6
OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUm
IGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0KQogewogICAg
IHVzaW5nIG5hbWVzcGFjZSBTY3JvbGxpbmdUcmVlRml4ZWROb2RlSW50ZXJuYWw7CiAgICAgRmxv
YXRQb2ludCBsYXllclBvc2l0aW9uID0gbV9jb25zdHJhaW50cy5sYXllclBvc2l0aW9uRm9yVmll
d3BvcnRSZWN0KGZpeGVkUG9zaXRpb25SZWN0KTsKIAogICAgIExPR19XSVRIX1NUUkVBTShTY3Jv
bGxpbmcsIHN0cmVhbSA8PCAiU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZSAiIDw8IHNjcm9sbGluZ05v
ZGVJRCgpIDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0
ICIgPDwgZml4ZWRQb3NpdGlvblJlY3QgPDwgIiB2aWV3cG9ydFJlY3RBdExhc3RMYXlvdXQgIiA8
PCBtX2NvbnN0cmFpbnRzLnZpZXdwb3J0UmVjdEF0TGFzdExheW91dCgpIDw8ICIgbGFzdCBsYXll
ciBwb3MgIiA8PCBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSA8PCAi
IG5ldyBvZmZzZXQgZnJvbSB0b3AgIiA8PCAoZml4ZWRQb3NpdGlvblJlY3QueSgpIC0gbGF5ZXJQ
b3NpdGlvbi55KCkpKTsKIAotICAgIGxheWVyUG9zaXRpb24gLT0gY3VtdWxhdGl2ZURlbHRhOwot
CiAgICAgQ0dSZWN0IGxheWVyQm91bmRzID0gW21fbGF5ZXIgYm91bmRzXTsKICAgICBDR1BvaW50
IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5jaG9yUG9pbnRdOwogICAgIENHUG9pbnQgbmV3UG9z
aXRpb24gPSBsYXllclBvc2l0aW9uIC0gbV9jb25zdHJhaW50cy5hbGlnbm1lbnRPZmZzZXQoKSAr
IGFuY2hvclBvaW50ICogbGF5ZXJCb3VuZHMuc2l6ZTsKQEAgLTk2LDEwICs5NCw4IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6dXBkYXRlTGF5ZXIKICAgICBpZiAoIW1fY2hpbGRyZW4p
CiAgICAgICAgIHJldHVybjsKIAotICAgIEZsb2F0U2l6ZSBuZXdEZWx0YSA9IGxheWVyUG9zaXRp
b24gLSBtX2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlvdXQoKSArIGN1bXVsYXRp
dmVEZWx0YTsKLQogICAgIGZvciAoYXV0byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAg
Y2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVk
UG9zaXRpb25SZWN0LCBuZXdEZWx0YSk7CisgICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRl
ckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCk7CiB9CiAKIHZv
aWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMs
IFNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEJlaGF2aW9yIGJlaGF2aW9yKSBjb25zdApJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvY29jb2EvU2Nyb2xsaW5nVHJlZVN0aWNreU5v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9T
Y3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCShyZXZpc2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZVN0
aWNreU5vZGUoU2Nyb2xsaW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAKICAgICB2b2lkIGNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9s
bGluZ1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9u
UmVjdCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZv
aWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9k
ZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJy
aWRlOwogCiAgICAgdm9pZCBkdW1wUHJvcGVydGllcyhXVEY6OlRleHRTdHJlYW0mLCBTY3JvbGxp
bmdTdGF0ZVRyZWVBc1RleHRCZWhhdmlvcikgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2NvY29hL1Njcm9s
bGluZ1RyZWVTdGlja3lOb2RlLm1tCShyZXZpc2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9jb2NvYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNzIsNyArNzIsNyBAQCBzdGF0aWMgaW5saW5lIENHUG9pbnQgb3BlcmF0b3Iq
KENHUG9pbnQmCiB9CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUm
IGN1bXVsYXRpdmVEZWx0YSkKK3ZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OnVwZGF0ZUxh
eWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWRO
b2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVkUG9zaXRpb25SZWN0KQogewogICAgIHVzaW5nIG5h
bWVzcGFjZSBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZUludGVybmFsOwogICAgIGJvb2wgYWRqdXN0
U3RpY2t5TGF5ZXIgPSBmYWxzZTsKQEAgLTg4LDggKzg4LDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVl
U3RpY2t5Tm9kZTo6dXBkYXRlTGF5ZQogCiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGluZywg
c3RyZWFtIDw8ICJTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZSAiIDw8IHNjcm9sbGluZ05vZGVJRCgp
IDw8ICIgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZTogbmV3IHZpZXdwb3J0ICIgPDwg
Zml4ZWRQb3NpdGlvblJlY3QgPDwgIiBjb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0ICIgPDwg
bV9jb25zdHJhaW50cy5jb25zdHJhaW5pbmdSZWN0QXRMYXN0TGF5b3V0KCkgPDwgIiBsYXN0IGxh
eWVyIHBvcyAiIDw8IG1fY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpIDw8
ICIgYWRqdXN0U3RpY2t5TGF5ZXIgIiA8PCBhZGp1c3RTdGlja3lMYXllcik7CiAKLSAgICBGbG9h
dFNpemUgZGVsdGFGb3JEZXNjZW5kYW50cyA9IGN1bXVsYXRpdmVEZWx0YTsKLQogICAgIGlmIChh
ZGp1c3RTdGlja3lMYXllcikgewogICAgICAgICBGbG9hdFBvaW50IGxheWVyUG9zaXRpb24gPSBt
X2NvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25Gb3JDb25zdHJhaW5pbmdSZWN0KGNvbnN0cmFpbmlu
Z1JlY3QpOwogCkBAIC05NywxNSArOTUsMTMgQEAgdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZTo6dXBkYXRlTGF5ZQogICAgICAgICBDR1BvaW50IGFuY2hvclBvaW50ID0gW21fbGF5ZXIgYW5j
aG9yUG9pbnRdOwogICAgICAgICBDR1BvaW50IG5ld1Bvc2l0aW9uID0gbGF5ZXJQb3NpdGlvbiAt
IG1fY29uc3RyYWludHMuYWxpZ25tZW50T2Zmc2V0KCkgKyBhbmNob3JQb2ludCAqIGxheWVyQm91
bmRzLnNpemU7CiAgICAgICAgIFttX2xheWVyIHNldFBvc2l0aW9uOm5ld1Bvc2l0aW9uXTsKLQot
ICAgICAgICBkZWx0YUZvckRlc2NlbmRhbnRzID0gbGF5ZXJQb3NpdGlvbiAtIG1fY29uc3RyYWlu
dHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpICsgY3VtdWxhdGl2ZURlbHRhOwogICAgIH0K
IAogICAgIGlmICghbV9jaGlsZHJlbikKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChhdXRv
JiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIGRlbHRhRm9yRGVz
Y2VuZGFudHMpOworICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCiB2b2lkIFNjcm9sbGluZ1Ry
ZWVTdGlja3lOb2RlOjpkdW1wUHJvcGVydGllcyhUZXh0U3RyZWFtJiB0cywgU2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0QmVoYXZpb3IgYmVoYXZpb3IpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLmgJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdO
b2RlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDcgQEAgcHJvdGVjdGVkOgogCiAg
ICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZsb2F0UmVjdCYg
Zml4ZWRQb3NpdGlvblJlY3QsIGRvdWJsZSBzY2FsZSkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRh
dGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJpZGU7
Ci0gICAgdm9pZCB1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGlu
Z1RyZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVj
dCwgY29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZvaWQg
dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYg
Y2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRl
OwogCiAgICAgdm9pZCBzZXRTY3JvbGxQb3NpdGlvbihjb25zdCBGbG9hdFBvaW50Jikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmLCBj
b25zdCBGbG9hdFJlY3QmIGxheW91dFZpZXdwb3J0KSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
SU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2lvcy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TLm1tCShyZXZpc2lvbiAyNDExOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZUlPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTQxLDE3ICsxNDEsMTYgQEAgdm9p
ZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOgogICAgICAgICByZXR1cm47CiAK
ICAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRh
dGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhlZFBvc2l0aW9uUmVjdCwgRmxv
YXRTaXplKCkpOworICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZSgqdGhpcywgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29uc3Qg
U2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBG
bG9hdFNpemUmKQordm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjp1cGRh
dGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFu
Z2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JikKIHsKICAgICBpZiAoIW1fY2hpbGRyZW4pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIEZsb2F0UmVjdCBmaXhlZFBvc2l0aW9uUmVjdChzY3JvbGxQb3Np
dGlvbigpLCBzY3JvbGxhYmxlQXJlYVNpemUoKSk7CiAgICAgZm9yIChhdXRvJiBjaGlsZCA6ICpt
X2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5n
ZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIEZsb2F0U2l6ZSgpKTsKKyAgICAgICAg
Y2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVk
UG9zaXRpb25SZWN0KCkpOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05v
ZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQm
IHNjcm9sbFBvc2l0aW9uKQpAQCAtMTkzLDcgKzE5Miw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZy
YW1lU2Nyb2xsaW5nTm9kZUlPUzoKICAgICAgICAgZml4ZWRQb3NpdGlvblJlY3QgPSBGbG9hdFJl
Y3Qoc2Nyb2xsUG9zaXRpb24sIHNjcm9sbGFibGVBcmVhU2l6ZSgpKTsKIAogICAgIGZvciAoYXV0
byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVy
QW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0LCBGbG9hdFNpemUoKSk7Cisg
ICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhl
ZFBvc2l0aW9uUmVjdCk7CiB9CiAKIEZsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xs
aW5nTm9kZUlPUzo6bWluaW11bVNjcm9sbFBvc2l0aW9uKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2Rl
TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9T
Y3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlTWFjLm1tCShyZXZpc2lvbiAyNDExOTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nVHJlZUZyYW1lU2Ny
b2xsaW5nTm9kZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzM3LDcgKzMzNyw3IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZU1hYzoKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgZm9yIChhdXRvJiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRl
TGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZSgqdGhpcywgZml4ZWRQb3NpdGlvblJlY3QsIEZsb2F0
U2l6ZSgpKTsKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2Uo
KnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlRnJhbWVT
Y3JvbGxpbmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlclZpZXdwb3J0Q2hhbmdlKGNvbnN0IEZs
b2F0UmVjdCYsIGRvdWJsZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21h
Yy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVNYWMuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMuaAko
d29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRl
TGF5ZXJzQWZ0ZXJWaWV3cG9ydENoYW5nZShjb25zdCBGbG9hdFJlY3QmLCBkb3VibGUpIG92ZXJy
aWRlIHsgfQogICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3Qg
RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pIG92ZXJyaWRlOwogCi0gICAgdm9pZCB1cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiBjaGFuZ2Vk
Tm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgY29uc3QgRmxvYXRTaXpl
JiBjdW11bGF0aXZlRGVsdGEpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0
IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QpIG92ZXJyaWRlOwogCiAgICAgU2Nyb2xsaW5n
RXZlbnRSZXN1bHQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBQbGF0Zm9ybVdoZWVsRXZlbnQmKSBv
dmVycmlkZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVNYWMubW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVNYWMubW0JKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL21hYy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MywxMSArOTMsMTAgQEAgU2Nyb2xsaW5nRXZlbnRSZXN1bHQgU2Nyb2xs
aW5nVHJlZU92ZXJmbAogCiAKIAotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1Ry
ZWVOb2RlJiBjaGFuZ2VkTm9kZSwgY29uc3QgRmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwg
Y29uc3QgRmxvYXRTaXplJiBjdW11bGF0aXZlRGVsdGEpCit2b2lkIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVNYWM6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29u
c3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVk
UG9zaXRpb25SZWN0KQogewogICAgIFVOVVNFRF9QQVJBTShjaGFuZ2VkTm9kZSk7CiAgICAgVU5V
U0VEX1BBUkFNKGZpeGVkUG9zaXRpb25SZWN0KTsKLSAgICBVTlVTRURfUEFSQU0oY3VtdWxhdGl2
ZURlbHRhKTsKIH0KIAogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlTWFjOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CkBAIC0xMzEsNyArMTMwLDcgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlTQogICAgICAgICByZXR1cm47CiAKICAg
ICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVM
YXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhlZFBvc2l0aW9uUmVjdCwgeyB9KTsK
KyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZp
eGVkUG9zaXRpb25SZWN0KTsKIH0KIAogdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlTWFjOjp1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBv
aW50JiBzY3JvbGxQb3NpdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L25pY29zaWEvU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNw
cAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmlj
b3NpYS9TY3JvbGxpbmdUcmVlRml4ZWROb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OmNvbW1pdFN0YXRlCiB7CiB9CiAK
LXZvaWQgU2Nyb2xsaW5nVHJlZUZpeGVkTm9kZTo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNo
YW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZs
b2F0U2l6ZSYpCit2b2lkIFNjcm9sbGluZ1RyZWVGaXhlZE5vZGU6OnVwZGF0ZUxheWVyc0FmdGVy
QW5jZXN0b3JDaGFuZ2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmLCBjb25zdCBGbG9hdFJlY3Qm
KQogewogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9uaWNvc2lhL1Nj
cm9sbGluZ1RyZWVGaXhlZE5vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9uaWNvc2lhL1Njcm9sbGluZ1RyZWVGaXhlZE5vZGUuaAkocmV2aXNpb24gMjQx
MTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlRml4ZWROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgcHJpdmF0ZToK
ICAgICBTY3JvbGxpbmdUcmVlRml4ZWROb2RlKFNjcm9sbGluZ1RyZWUmLCBTY3JvbGxpbmdOb2Rl
SUQpOwogCiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlTm9kZSYpIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0
IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOworICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3Rv
ckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZsb2F0UmVjdCYpIG92ZXJy
aWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdU
cmVlU3RpY2t5Tm9kZS5jcHAJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGU6OmNv
bW1pdFN0YXQKIHsKIH0KIAotdm9pZCBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZTo6dXBkYXRlTGF5
ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IEZsb2F0U2l6ZSYpCit2b2lkIFNjcm9sbGluZ1RyZWVTdGlja3lOb2Rl
Ojp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2Rl
JiwgY29uc3QgRmxvYXRSZWN0JikKIHsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9z
Y3JvbGxpbmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL25pY29zaWEvU2Nyb2xsaW5nVHJlZVN0aWNr
eU5vZGUuaAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxp
bmcvbmljb3NpYS9TY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Miw3ICs0Miw3IEBAIHByaXZhdGU6CiAgICAgU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUoU2Nyb2xs
aW5nVHJlZSYsIFNjcm9sbGluZ05vZGVJRCk7CiAKICAgICB2b2lkIGNvbW1pdFN0YXRlQmVmb3Jl
Q2hpbGRyZW4oY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1
cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgRmxvYXRTaXplJikgb3ZlcnJpZGU7CisgICAgdm9pZCB1
cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKGNvbnN0IFNjcm9sbGluZ1RyZWVOb2RlJiwg
Y29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjQxMTkzKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0NCBAQAorMjAxOS0wMi0wOCAgQW50dGkgS29p
dmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29tcHV0ZSBmaXhlZCBwb3NpdGlv
biByZWN0IGJhc2VkIG9uIFNjcm9sbGluZ1RyZWUgc2Nyb2xsIHBvc2l0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0MzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXll
clRyZWUvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAgICAg
IChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmVuY29kZSk6Cisg
ICAgICAgIChBcmd1bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT46OmRlY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OmR1bXApOgorICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdU
cmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TOjpjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVu
KToKKworICAgICAgICBBdm9pZCBjb25zdGFudGx5IHJlY29uc3RydWN0aW5nIHRoZSBkZWxlZ2F0
ZS4KKworICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlSU9TOjp1cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TLmg6CisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbToKKyAgICAgICAgKFdl
YktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJz
QWZ0ZXJBbmNlc3RvckNoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90
ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6CisKKyAg
ICAgICAgU2V0dGluZyBzY3JvbGwgcG9zaXRpb24gYmFzZWQgb24gbm9kZSB0cmVlIGlzIHdyb25n
IGFzIGl0IG92ZXJyaWRlcyB0aGUgdXNlciBzY3JvbGwgcG9zaXRpb24uCisKKyAgICAgICAgKFdl
YktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2V0U2Nyb2xsTGF5
ZXJQb3NpdGlvbik6CisKKyAgICAgICAgUmVtb3ZlIHRoZSBjdXJyZW50IGluY29ycmVjdCBpbXBs
ZW1lbnRhdGlvbiBhbmQgcmVwbGFjZSB3aXRoIEZJWE1FLgorICAgICAgICBUaGlzIGlzIHVzZWQg
Zm9yIHByb2dyYW1tYXRpYyBzY3JvbGxpbmcuCisKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xs
KToKKworICAgICAgICBEb24ndCBjb21wdXRlIHRoZSBkZWx0YS4gSXQgaXMgbm8gbG9uZ2VyIG5l
ZWRlZCBzaW5jZSB0aGUgZml4ZWQgcG9zaXRpb24gcmVjdCB3ZSBnZXQgaXMgdGhlIGNvcnJlY3Qg
b25lLgorCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1M6OnNjcm9sbFZpZXdEaWRTY3JvbGwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp1cGRhdGVMYXllcnNBZnRlckFuY2Vz
dG9yQ2hhbmdlKTogRGVsZXRlZC4KKworICAgICAgICBUaGlzIHdhcyBpbmNvcnJlY3QgZm9yIGZy
YW1lcyBhbmQgZGlkbid0IGRvIGFueXRoaW5nIGFueXdheSBzbyByZW1vdmUgaXQuCisKIDIwMTkt
MDItMDggIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2
aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJU
cmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVTY3JvbGxpbmdD
b29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAkocmV2aXNpb24gMjQxMTkxKQorKysgU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJh
bnNhY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsNyArMTI3LDYgQEAgdm9pZCBBcmd1
bWVudENvZGVyPFNjcm9sbGluZ1N0YXRlU2Nyb2xsaQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09E
RShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGFibGVBcmVhU2l6ZSwgc2Nyb2xs
YWJsZUFyZWFTaXplKQogICAgIFNDUk9MTElOR19OT0RFX0VOQ09ERShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplLCB0b3RhbENvbnRlbnRzU2l6ZSkKICAgICBT
Q1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFi
bGVDb250ZW50c1NpemUsIHJlYWNoYWJsZUNvbnRlbnRzU2l6ZSkKLSAgICBTQ1JPTExJTkdfTk9E
RV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxQb3NpdGlvbiwgc2Ny
b2xsUG9zaXRpb24pCiAgICAgU0NST0xMSU5HX05PREVfRU5DT0RFKFNjcm9sbGluZ1N0YXRlU2Ny
b2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2luLCBzY3JvbGxPcmlnaW4pCiAjaWYgRU5BQkxFKENTU19T
Q1JPTExfU05BUCkKICAgICBTQ1JPTExJTkdfTk9ERV9FTkNPREUoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpIb3Jpem9udGFsU25hcE9mZnNldHMsIGhvcml6b250YWxTbmFwT2Zmc2V0cykK
QEAgLTIxNiw3ICsyMTUsNiBAQCBib29sIEFyZ3VtZW50Q29kZXI8U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpCiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6U2Nyb2xsYWJsZUFyZWFTaXplLCBGbG9hdFNpemUsIHNldFNjcm9sbGFibGVBcmVhU2l6ZSk7
CiAgICAgU0NST0xMSU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
VG90YWxDb250ZW50c1NpemUsIEZsb2F0U2l6ZSwgc2V0VG90YWxDb250ZW50c1NpemUpOwogICAg
IFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlYWNo
YWJsZUNvbnRlbnRzU2l6ZSwgRmxvYXRTaXplLCBzZXRSZWFjaGFibGVDb250ZW50c1NpemUpOwot
ICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNj
cm9sbFBvc2l0aW9uLCBGbG9hdFBvaW50LCBzZXRTY3JvbGxQb3NpdGlvbik7CiAgICAgU0NST0xM
SU5HX05PREVfREVDT0RFKFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2lu
LCBJbnRQb2ludCwgc2V0U2Nyb2xsT3JpZ2luKTsKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQogICAgIFNDUk9MTElOR19OT0RFX0RFQ09ERShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6
Okhvcml6b250YWxTbmFwT2Zmc2V0cywgVmVjdG9yPGZsb2F0Piwgc2V0SG9yaXpvbnRhbFNuYXBP
ZmZzZXRzKTsKQEAgLTUxMiw5ICs1MTAsNiBAQCBzdGF0aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0m
IHRzLCBjb25zdCBTCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFibGVDb250
ZW50c1NpemUpKQogICAgICAgICB0cy5kdW1wUHJvcGVydHkoInJlYWNoYWJsZS1jb250ZW50cy1z
aXplIiwgbm9kZS5yZWFjaGFibGVDb250ZW50c1NpemUoKSk7CiAKLSAgICBpZiAoIWNoYW5nZWRQ
cm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlNjcm9sbFBvc2l0aW9uKSkKLSAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJz
Y3JvbGwtcG9zaXRpb24iLCBub2RlLnNjcm9sbFBvc2l0aW9uKCkpOwotCiAgICAgaWYgKCFjaGFu
Z2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxPcmlnaW4pKQogICAgICAgICB0cy5kdW1wUHJvcGVydHko
InNjcm9sbC1vcmlnaW4iLCBub2RlLnNjcm9sbE9yaWdpbigpKTsKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3Jv
bGxpbmdOb2RlUmVtb3RlSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVt
b3RlSU9TLmgJKHJldmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW90ZUlP
Uy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmIGxheW91dFZpZXdwb3J0KSBvdmVycmlkZTsKIAogICAgIHZvaWQg
dXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgc2Nyb2xsUG9zaXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJB
bmNlc3RvckNoYW5nZShjb25zdCBXZWJDb3JlOjpTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5v
ZGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IFdl
YkNvcmU6OkZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKSBvdmVycmlkZTsKIAogICAgIHN0ZDo6
dW5pcXVlX3B0cjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPiBtX3Njcm9s
bGluZ05vZGVEZWxlZ2F0ZTsKIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1v
dGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9TY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlUmVtb3RlSU9TLm1tCShyZXZpc2lv
biAyNDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9z
L1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDEwICs1Myw4IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9k
ZVJlbW8KICAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlSU9TOjpjb21taXRTdGF0
ZUJlZm9yZUNoaWxkcmVuKHN0YXRlTm9kZSk7CiAKICAgICBpZiAoc3RhdGVOb2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbENvbnRhaW5lckxh
eWVyKSkgewotICAgICAgICBpZiAoc2Nyb2xsQ29udGFpbmVyTGF5ZXIoKSkKKyAgICAgICAgaWYg
KHNjcm9sbENvbnRhaW5lckxheWVyKCkgJiYgIW1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlKQogICAg
ICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBzdGQ6Om1ha2VfdW5pcXVlPFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+KCp0aGlzKTsKLSAgICAgICAgZWxzZQot
ICAgICAgICAgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUgPSBudWxscHRyOwogICAgIH0KIAog
ICAgIGlmIChtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZSkKQEAgLTcxLDE1ICs2OSw2IEBAIHZvaWQg
U2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZVJlbW8KICAgICAgICAgbV9zY3JvbGxpbmdO
b2RlRGVsZWdhdGUtPmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihkb3duY2FzdDxTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU+KHN0YXRlTm9kZSkpOwogfQogCi12b2lkIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGVSZW1vdGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFu
Z2UoY29uc3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3Qm
IGZpeGVkUG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUmIGN1bXVsYXRpdmVEZWx0YSkKLXsK
LSAgICBpZiAobV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUpIHsKLSAgICAgICAgbV9zY3JvbGxpbmdO
b2RlRGVsZWdhdGUtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUs
IGZpeGVkUG9zaXRpb25SZWN0LCBjdW11bGF0aXZlRGVsdGEpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVy
c0FmdGVyQW5jZXN0b3JDaGFuZ2UoY2hhbmdlZE5vZGUsIGZpeGVkUG9zaXRpb25SZWN0LCBjdW11
bGF0aXZlRGVsdGEpOwotfQotCiBGbG9hdFBvaW50IFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGlu
Z05vZGVSZW1vdGVJT1M6OnNjcm9sbFBvc2l0aW9uKCkgY29uc3QKIHsKICAgICBpZiAobV9zY3Jv
bGxpbmdOb2RlRGVsZWdhdGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAkocmV2aXNpb24gMjQxMTkxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUx
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyVmlld3BvcnRDaGFuZ2Uo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiBmaXhlZFBvc2l0aW9uUmVjdCwgZG91YmxlIHNjYWxl
KSBvdmVycmlkZSB7IH0KICAgICB2b2lkIHVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xs
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKSBvdmVycmlkZTsKIAot
ICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYg
Zml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURl
bHRhKSBvdmVycmlkZTsKLQogICAgIFdlYkNvcmU6OlNjcm9sbGluZ0V2ZW50UmVzdWx0IGhhbmRs
ZVdoZWVsRXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Jikgb3ZlcnJpZGUg
eyByZXR1cm4gU2Nyb2xsaW5nRXZlbnRSZXN1bHQ6OkRpZE5vdEhhbmRsZUV2ZW50OyB9CiAKICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4g
bV9zY3JvbGxpbmdOb2RlRGVsZWdhdGU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1Mu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVl
L2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCShyZXZpc2lvbiAy
NDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTY2LDExICs2Niw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUkK
ICAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGRv
d25jYXN0PFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZT4oc3RhdGVOb2RlKSk7CiB9CiAKLXZv
aWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0
ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNv
bnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgY3VtdWxh
dGl2ZURlbHRhKQotewotICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLT51cGRhdGVMYXllcnNB
ZnRlckFuY2VzdG9yQ2hhbmdlKGNoYW5nZWROb2RlLCBmaXhlZFBvc2l0aW9uUmVjdCwgY3VtdWxh
dGl2ZURlbHRhKTsKLX0KLQogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc2Nyb2xs
aW5nTm9kZURlbGVnYXRlLT5zY3JvbGxQb3NpdGlvbigpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgJKHJl
dmlzaW9uIDI0MTE5MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJl
ZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw3ICs2MSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0U2Nyb2xsVmlld0Rl
bGVnYXRlKCk7CiAgICAgdm9pZCBjb21taXRTdGF0ZUJlZm9yZUNoaWxkcmVuKGNvbnN0IFdlYkNv
cmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYpOwogICAgIHZvaWQgY29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYp
OwotICAgIHZvaWQgdXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlTm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVj
dCYgZml4ZWRQb3NpdGlvblJlY3QsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYgY3VtdWxhdGl2
ZURlbHRhKTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjcm9sbFBvc2l0aW9uKCkgY29uc3Q7
CiAgICAgdm9pZCBzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9p
bnQmKTsKICAgICB2b2lkIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCShyZXZp
c2lvbiAyNDExOTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTIyMywxNyArMjIzLDE0IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUkKIHsKICAgICBTZXRGb3JTY29wZTxib29sPiB1cGRhdGluZ0NoYW5nZShtX3VwZGF0
aW5nRnJvbVN0YXRlTm9kZSwgdHJ1ZSk7CiAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXND
aGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWlu
ZXJMYXllcikKLSAgICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbGVkQ29udGVudHNMYXllcikKICAg
ICAgICAgfHwgc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKQogICAgICAgICB8fCBzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6UmVhY2hhYmxlQ29udGVudHNTaXplKQotICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUu
aGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsUG9z
aXRpb24pCiAgICAgICAgIHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxPcmlnaW4pKSB7CiAgICAgICAgIEJF
R0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgICAgICBVSVNjcm9sbFZpZXcgKnNjcm9sbFZp
ZXcgPSAoVUlTY3JvbGxWaWV3ICopW3Njcm9sbExheWVyKCkgZGVsZWdhdGVdOwogICAgICAgICBB
U1NFUlQoW3Njcm9sbFZpZXcgaXNLaW5kT2ZDbGFzczpbVUlTY3JvbGxWaWV3IHNlbGZdXSk7CiAK
LSAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxDb250YWluZXJMYXllcikKLSAgICAgICAgICAg
IHx8IHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKSB7CisgICAgICAgIGlmIChzY3Jv
bGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5n
Tm9kZTo6U2Nyb2xsQ29udGFpbmVyTGF5ZXIpKSB7CiAgICAgICAgICAgICBpZiAoIW1fc2Nyb2xs
Vmlld0RlbGVnYXRlKQogICAgICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRv
cHROUyhbW1dLU2Nyb2xsaW5nTm9kZVNjcm9sbFZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhT
Y3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOnRoaXNdKTsKIApAQCAtMjQ3LDEyICsyNDQsOCBAQCB2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJCiAgICAgICAgICAgICByZWNv
bXB1dGVJbnNldHMgPSB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChzY3JvbGxpbmdT
dGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6
U2Nyb2xsUG9zaXRpb24pCi0gICAgICAgICAgICB8fCBzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsT3JpZ2luKSkK
LSAgICAgICAgICAgICYmICFbbV9zY3JvbGxWaWV3RGVsZWdhdGUgX2lzSW5Vc2VySW50ZXJhY3Rp
b25dKSB7Ci0gICAgICAgICAgICBzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQgPSBzY3JvbGxpbmdT
dGF0ZU5vZGUuc2Nyb2xsUG9zaXRpb24oKSArIHNjcm9sbE9yaWdpbigpOworICAgICAgICBpZiAo
c2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGU6OlNjcm9sbE9yaWdpbikpCiAgICAgICAgICAgICByZWNvbXB1dGVJbnNldHMgPSB0
cnVlOwotICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlY29tcHV0ZUluc2V0cykgewogICAgICAg
ICAgICAgVUlFZGdlSW5zZXRzIGluc2V0cyA9IFVJRWRnZUluc2V0c01ha2UoMCwgMCwgMCwgMCk7
CkBAIC0yNzUsMTcgKzI2OCw2IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUkKICAgICB9CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShjb25zdCBTY3JvbGxpbmdUcmVl
Tm9kZSYgY2hhbmdlZE5vZGUsIGNvbnN0IEZsb2F0UmVjdCYgZml4ZWRQb3NpdGlvblJlY3QsIGNv
bnN0IEZsb2F0U2l6ZSYgY3VtdWxhdGl2ZURlbHRhKQotewotICAgIGlmICghc2Nyb2xsaW5nTm9k
ZSgpLmNoaWxkcmVuKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEZsb2F0U2l6ZSBzY3JvbGxE
ZWx0YSA9IGxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIC0gc2Nyb2xsaW5nTm9kZSgpLnNj
cm9sbFBvc2l0aW9uKCk7Ci0KLSAgICBmb3IgKGF1dG8mIGNoaWxkIDogKnNjcm9sbGluZ05vZGUo
KS5jaGlsZHJlbigpKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNo
YW5nZShjaGFuZ2VkTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIGN1bXVsYXRpdmVEZWx0YSArIHNj
cm9sbERlbHRhKTsKLX0KLQogRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TOjpzY3JvbGxQb3NpdGlvbigpIGNvbnN0CiB7CiAgICAgQkVHSU5fQkxPQ0tfT0JK
Q19FWENFUFRJT05TCkBAIC0yOTcsNyArMjc5LDcgQEAgRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbAogCiB2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9z
aXRpb24pCiB7Ci0gICAgW21fc2Nyb2xsTGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1ha2Uoc2Ny
b2xsUG9zaXRpb24ueCgpICsgc2Nyb2xsT3JpZ2luKCkueCgpLCBzY3JvbGxQb3NpdGlvbi55KCkg
KyBzY3JvbGxPcmlnaW4oKS55KCkpXTsKKyAgICAvLyBGSVhNRTogU2V0IHRoZSBzY3JvbGwgcG9z
aXRpb24gaW4gcmVzcG9uc2UgdG8gcHJvZ3JhbW1hdGljIHNjcm9sbC4KICAgICB1cGRhdGVDaGls
ZE5vZGVzQWZ0ZXJTY3JvbGwoc2Nyb2xsUG9zaXRpb24pOwogfQogCkBAIC0zMTIsMTAgKzI5NCw5
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUkKICAgICAgICAgZml4
ZWRQb3NpdGlvblJlY3QgPSBmcmFtZU5vZGUtPmZpeGVkUG9zaXRpb25SZWN0KCk7CiAgICAgZWxz
ZQogICAgICAgICBmaXhlZFBvc2l0aW9uUmVjdCA9IHNjcm9sbGluZ1RyZWUoKS5maXhlZFBvc2l0
aW9uUmVjdCgpOwotICAgIEZsb2F0U2l6ZSBzY3JvbGxEZWx0YSA9IGxhc3RDb21taXR0ZWRTY3Jv
bGxQb3NpdGlvbigpIC0gc2Nyb2xsUG9zaXRpb247CiAKICAgICBmb3IgKGF1dG8mIGNoaWxkIDog
KnNjcm9sbGluZ05vZGUoKS5jaGlsZHJlbigpKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJz
QWZ0ZXJBbmNlc3RvckNoYW5nZShzY3JvbGxpbmdOb2RlKCksIGZpeGVkUG9zaXRpb25SZWN0LCBz
Y3JvbGxEZWx0YSk7CisgICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKHNjcm9sbGluZ05vZGUoKSwgZml4ZWRQb3NpdGlvblJlY3QpOwogfQogCiB2b2lkIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNjcm9sbFdpbGxTdGFydCgpIGNvbnN0
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyNDExOTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wMi0wOCAgQW50dGkgS29pdmlzdG8g
IDxhbnR0aUBhcHBsZS5jb20+CisKKyAgICAgICAgQ29tcHV0ZSBmaXhlZCBwb3NpdGlvbiByZWN0
IGJhc2VkIG9uIHNjcm9sbGluZyB0cmVlIHZpZXcgb2YgdGhlIHNjcm9sbCBwb3NpdGlvbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDMzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdCBieSBGcmVk
ZXJpYyBXYW5nLgorCisgICAgICAgICogZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUt
ZXhwZWN0ZWQuaHRtbDoKKyAgICAgICAgKiBmYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWlmcmFt
ZS5odG1sOgorICAgICAgICAqIHNjcm9sbGluZ2Nvb3JkaW5hdG9yL2lvcy91aS1zY3JvbGxpbmct
dHJlZS1leHBlY3RlZC50eHQ6CisKIDIwMTktMDItMDggIEVyaWMgTGlhbmcgIDxlcmljbGlhbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIENoZWNrIGlmIHJlY2VpdmUgQVhQcmVzc0RpZEZhaWwgbm90
aWZpY2F0aW9uIHdoZW4gcGVyZm9ybWluZyBBWFByZXNzIGFjdGlvbiBvbiBkaXNhYmxlZCBNZW51
TGlzdC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZyYW1l
LWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
aW9zL3Njcm9sbC1pZnJhbWUtZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMjQxMTkxKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUtZXhwZWN0ZWQuaHRtbAko
d29ya2luZyBjb3B5KQpAQCAtMTksNiArMTksOCBAQAogICAgICAgICA8ZGl2IGNsYXNzPXRlc3Rk
aXY+PC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3M9dGVzdGRpdj48L2Rpdj4KICAgICAgICAgPGRp
diBjbGFzcz10ZXN0ZGl2PjwvZGl2PgorICAgICAgICA8ZGl2IGNsYXNzPXRlc3RkaXY+PC9kaXY+
CisgICAgICAgIDxkaXYgY2xhc3M9dGVzdGRpdj48L2Rpdj4KICAgICA8L2Rpdj4KIDwvYm9keT4K
IDwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZy
YW1lLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Nj
cm9sbC1pZnJhbWUuaHRtbAkocmV2aXNpb24gMjQxMTkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMzcsMTEg
KzM3LDE5IEBACiAgICAgICAgICBhd2FpdCB0b3VjaEFuZERyYWdGcm9tUG9pbnRUb1BvaW50KGMu
eCwgYy55LCBjLngsIGMueSAtIDIwMDApOwogICAgICAgICAgYXdhaXQgbGlmdFVwQXRQb2ludChj
LngsIGMueSAtIDIwMDApOwogCisgICAgICAgICBjID0gY2VudGVyT2YoInBvc2l0aW9uRml4ZWQi
KTsKKyAgICAgICAgIGF3YWl0IHRvdWNoQW5kRHJhZ0Zyb21Qb2ludFRvUG9pbnQoYy54LCBjLnks
IGMueCAtIDE1MCwgYy55IC0gMTUwKTsKKyAgICAgICAgIGF3YWl0IGxpZnRVcEF0UG9pbnQoYy54
IC0gMTUwLCBjLnkgLSAxNTApOworCisgICAgICAgICBjID0gY2VudGVyT2YoInBvc2l0aW9uU3Rp
Y2t5Iik7CisgICAgICAgICBhd2FpdCB0b3VjaEFuZERyYWdGcm9tUG9pbnRUb1BvaW50KGMueCwg
Yy55LCBjLngsIGMueSAtIDE1MCk7CisgICAgICAgICBhd2FpdCBsaWZ0VXBBdFBvaW50KGMueCwg
Yy55IC0gMTUwKTsKKwogICAgICAgICAgLy8gV2FpdCBmb3Igc2Nyb2xsaW5nIHRvIHN0YWJpbGl6
ZSBhbmQgZm9yIHNjcm9sbGJhcnMgdG8gZGlzYXBwZWFyLgogICAgICAgICAgc2V0VGltZW91dCgo
KSA9PiB7dGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7IH0sIDIwMDApOwogICAgICAgIH0KIAotICAg
ICAgIHZhciBmcmFtZVRvTG9hZENvdW50ID0gNDsKKyAgICAgICB2YXIgZnJhbWVUb0xvYWRDb3Vu
dCA9IDY7CiAgICAgICAgZnVuY3Rpb24gbmV3RnJhbWVMb2FkZWQoKSB7CiAgICAgICAgICAgIGZy
YW1lVG9Mb2FkQ291bnQtLTsKICAgICAgICAgICAgaWYgKGZyYW1lVG9Mb2FkQ291bnQgPT0gMCkK
QEAgLTg1LDYgKzkzLDE5IEBACiAgICAgICAgICAgICA8ZGl2IHN0eWxlPSd3aWR0aDogMTAwcHg7
IGhlaWdodDogNTAwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyc+PC9kaXY+CiAgICAgICAgICAgICA8
L2JvZHk+IiBvbmxvYWQ9Im5ld0ZyYW1lTG9hZGVkKCkiPgogICAgICAgICA8L2lmcmFtZT4KKyAg
ICAgICAgPGlmcmFtZSBpZD0icG9zaXRpb25GaXhlZCIgc2Nyb2xsaW5nPSJ5ZXMiIHNyY2RvYz0i
CisgICAgICAgICAgICA8Ym9keSBzdHlsZT0ncG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW46IDA7
IHdpZHRoOiAzMDBweDsgaGVpZ2h0OiAzMDBweCc+CisgICAgICAgICAgICAgICAgPGRpdiBzdHls
ZT0ncG9zaXRpb246IGZpeGVkOyB3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3Vu
ZDogZ3JlZW47Jz48L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdwb3NpdGlvbjog
YWJzb2x1dGU7IGJvdHRvbTogMHB4OyByaWdodDogMHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDog
NTBweDsgYmFja2dyb3VuZDogZ3JlZW47Jz48L2Rpdj4KKyAgICAgICAgICAgIDwvYm9keT4iIG9u
bG9hZD0ibmV3RnJhbWVMb2FkZWQoKSI+CisgICAgICAgIDwvaWZyYW1lPgorICAgICAgICA8aWZy
YW1lIGlkPSJwb3NpdGlvblN0aWNreSIgc2Nyb2xsaW5nPSJ5ZXMiIHNyY2RvYz0iCisgICAgICAg
ICAgICA8Ym9keSBzdHlsZT0ncG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW46IDA7IHdpZHRoOiAz
MDBweDsgaGVpZ2h0OiAzMDBweCc+CisgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0naGVpZ2h0
OiAxMDBweCc+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ncG9zaXRpb246IC13
ZWJraXQtc3RpY2t5OyBwb3NpdGlvbjogc3RpY2t5OyBsZWZ0OiAwcHg7IHRvcDogMHB4OyB3aWR0
aDogMTAwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZDogZ3JlZW47Jz48L2Rpdj4KKyAgICAg
ICAgICAgICAgICA8ZGl2IHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTogMHB4OyB3
aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZDogZ3JlZW47Jz48L2Rpdj4KKyAg
ICAgICAgICAgIDwvYm9keT4iIG9ubG9hZD0ibmV3RnJhbWVMb2FkZWQoKSI+CisgICAgICAgIDwv
aWZyYW1lPgogICAgIDwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
c2Nyb2xsaW5nY29vcmRpbmF0b3IvaW9zL3VpLXNjcm9sbGluZy10cmVlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zY3JvbGxpbmdjb29yZGluYXRvci9pb3MvdWktc2Ny
b2xsaW5nLXRyZWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNDExOTEpCisrKyBMYXlvdXRUZXN0
cy9zY3JvbGxpbmdjb29yZGluYXRvci9pb3MvdWktc2Nyb2xsaW5nLXRyZWUtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0zLDcgKzMsNiBAQAogICAoZnJhbWUgc2Nyb2xsaW5nIG5vZGUK
ICAgICAoc2Nyb2xsYWJsZSBhcmVhIHNpemUgd2lkdGg9MzIwIGhlaWdodD01NDgpCiAgICAgKHRv
dGFsIGNvbnRlbnQgc2l6ZSB3aWR0aD0xMzA4IGhlaWdodD0yMDIxKQotICAgIChsYXN0IGNvbW1p
dHRlZCBzY3JvbGwgcG9zaXRpb24gKDAsMCkpCiAgICAgKHNjcm9sbGFibGUgYXJlYSBwYXJhbWV0
ZXJzIAogICAgICAgKGhvcml6b250YWwgc2Nyb2xsIGVsYXN0aWNpdHkgMSkKICAgICAgICh2ZXJ0
aWNhbCBzY3JvbGwgZWxhc3RpY2l0eSAxKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362606</attachid>
            <date>2019-02-21 08:05:27 -0800</date>
            <delta_ts>2019-02-26 09:27:24 -0800</delta_ts>
            <desc>Patch (tests)</desc>
            <filename>fixed-sticky-tests.patch</filename>
            <type>text/plain</type>
            <size>5460</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9wcm9ncmFtbWF0aWMt
c2Nyb2xsLWlmcmFtZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Byb2dy
YW1tYXRpYy1zY3JvbGwtaWZyYW1lLmh0bWwKaW5kZXggYWY4NTgyZjg2OGEuLjQ4OTkzY2ExNjc3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3MvcHJvZ3JhbW1hdGlj
LXNjcm9sbC1pZnJhbWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mv
cHJvZ3JhbW1hdGljLXNjcm9sbC1pZnJhbWUuaHRtbApAQCAtMjMsMTEgKzIzLDE2IEBACiAgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2Nyb2xsQmVsb3dZTGltaXQiKS5jb250
ZW50V2luZG93LndpbmRvdy5zY3JvbGxCeSgwLCAtMTAwKTsKICAgICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJzY3JvbGxBYm92ZVlMaW1pdCIpLmNvbnRlbnRXaW5kb3cud2luZG93
LnNjcm9sbEJ5KDAsIDIwMCk7CiAKKyAgICAgICAgICAgIC8vIFRoaXMgY2hlY2tzIHNjcm9sbGlu
ZyBiZWhhdmlvciBmb3IgcG9zaXRpb24gImZpeGVkIiBhbmQgInN0aWNreSIuCisgICAgICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicG9zaXRpb25GaXhlZCIpLmNvbnRlbnRXaW5kb3cu
d2luZG93LnNjcm9sbFRvKDEwMCwgMTAwKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJwb3NpdGlvblN0aWNreUJlZ2luIikuY29udGVudFdpbmRvdy53aW5kb3cuc2Nyb2xs
VG8oMCwgNTApOworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvc2l0aW9u
U3RpY2t5RW5kIikuY29udGVudFdpbmRvdy53aW5kb3cuc2Nyb2xsVG8oMCwgMTUwKTsKKwogICAg
ICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQogICAgICAgICAgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIGZyYW1lVG9Mb2FkQ291
bnQgPSA5OworICAgICAgICB2YXIgZnJhbWVUb0xvYWRDb3VudCA9IDEyOwogICAgICAgICBmdW5j
dGlvbiBuZXdGcmFtZUxvYWRlZCgpIHsKICAgICAgICAgICAgIGZyYW1lVG9Mb2FkQ291bnQtLTsK
ICAgICAgICAgICAgIGlmIChmcmFtZVRvTG9hZENvdW50ID09IDApCkBAIC05Myw2ICs5OCwyNCBA
QAogICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6
IDIwMHB4OyBoZWlnaHQ6IDIwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsnPjwvZGl2PgogICAgICAg
ICAgICAgPC9ib2R5PiIgb25sb2FkPSJuZXdGcmFtZUxvYWRlZCgpIj4KICAgICAgICAgPC9pZnJh
bWU+CisgICAgICAgIDxpZnJhbWUgaWQ9InBvc2l0aW9uRml4ZWQiIHN0eWxlPSJsZWZ0OiAwcHg7
IHRvcDogMzAwcHg7IiBzY3JvbGxpbmc9InllcyIgc3JjZG9jPSIKKyAgICAgICAgICAgIDxib2R5
IHN0eWxlPSdtYXJnaW46IDA7IHdpZHRoOiAyMDBweDsgaGVpZ2h0OiAyMDBweCc+CisgICAgICAg
ICAgICAgICAgPGRpdiBzdHlsZT0ncG9zaXRpb246IGZpeGVkOyB3aWR0aDogMTAwcHg7IGhlaWdo
dDogMTAwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyc+PC9kaXY+CisgICAgICAgICAgICA8L2JvZHk+
IiBvbmxvYWQ9Im5ld0ZyYW1lTG9hZGVkKCkiPgorICAgICAgICA8L2lmcmFtZT4KKyAgICAgICAg
PGlmcmFtZSBpZD0icG9zaXRpb25TdGlja3lCZWdpbiIgc3R5bGU9ImxlZnQ6IDEwMHB4OyB0b3A6
IDMwMHB4OyIgc2Nyb2xsaW5nPSJ5ZXMiIHNyY2RvYz0iCisgICAgICAgICAgICA8Ym9keSBzdHls
ZT0nbWFyZ2luOiAwOyB3aWR0aDogMjAwcHg7IGhlaWdodDogMzAwcHgnPgorICAgICAgICAgICAg
ICAgIDxkaXYgc3R5bGU9J2hlaWdodDogNTBweCc+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRp
diBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyc+
PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ncG9zaXRpb246IC13ZWJraXQtc3Rp
Y2t5OyBwb3NpdGlvbjogc3RpY2t5OyBsZWZ0OiAwcHg7IHRvcDogMHB4OyB3aWR0aDogMTAwcHg7
IGhlaWdodDogNTBweDsgYmFja2dyb3VuZDogZ3JlZW47Jz48L2Rpdj4KKyAgICAgICAgICAgIDwv
Ym9keT4iIG9ubG9hZD0ibmV3RnJhbWVMb2FkZWQoKSI+CisgICAgICAgIDwvaWZyYW1lPgorICAg
ICAgICA8aWZyYW1lIGlkPSJwb3NpdGlvblN0aWNreUVuZCIgc3R5bGU9ImxlZnQ6IDIwMHB4OyB0
b3A6IDMwMHB4OyIgc2Nyb2xsaW5nPSJ5ZXMiIHNyY2RvYz0iCisgICAgICAgICAgICA8Ym9keSBz
dHlsZT0nbWFyZ2luOiAwOyB3aWR0aDogMjAwcHg7IGhlaWdodDogMzAwcHgnPgorICAgICAgICAg
ICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDogMTAwcHgnPjwvZGl2PgorICAgICAgICAgICAgICAg
IDxkaXYgc3R5bGU9J3Bvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsgcG9zaXRpb246IHN0aWNreTsg
bGVmdDogMHB4OyB0b3A6IDBweDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3Jv
dW5kOiBncmVlbjsnPjwvZGl2PgorICAgICAgICAgICAgPC9ib2R5PiIgb25sb2FkPSJuZXdGcmFt
ZUxvYWRlZCgpIj4KKyAgICAgICAgPC9pZnJhbWU+CiAgICAgPC9kaXY+CiAgIDwvYm9keT4KIDwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwt
aWZyYW1lLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Ny
b2xsLWlmcmFtZS1leHBlY3RlZC5odG1sCmluZGV4IGQ3ZjY0NmEzZjUzLi40MTNlNmFlMDg5OSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUt
ZXhwZWN0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xs
LWlmcmFtZS1leHBlY3RlZC5odG1sCkBAIC0xOSw2ICsxOSw4IEBACiAgICAgICAgIDxkaXYgY2xh
c3M9dGVzdGRpdj48L2Rpdj4KICAgICAgICAgPGRpdiBjbGFzcz10ZXN0ZGl2PjwvZGl2PgogICAg
ICAgICA8ZGl2IGNsYXNzPXRlc3RkaXY+PC9kaXY+CisgICAgICAgIDxkaXYgY2xhc3M9dGVzdGRp
dj48L2Rpdj4KKyAgICAgICAgPGRpdiBjbGFzcz10ZXN0ZGl2PjwvZGl2PgogICAgIDwvZGl2Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
aW9zL3Njcm9sbC1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9z
Y3JvbGwtaWZyYW1lLmh0bWwKaW5kZXggM2IxZTMzY2Q2NzMuLmFlMzM2YzhiYThlIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWlmcmFtZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZyYW1lLmh0bWwKQEAg
LTM3LDExICszNywxOSBAQAogICAgICAgICAgYXdhaXQgdG91Y2hBbmREcmFnRnJvbVBvaW50VG9Q
b2ludChjLngsIGMueSwgYy54LCBjLnkgLSAyMDAwKTsKICAgICAgICAgIGF3YWl0IGxpZnRVcEF0
UG9pbnQoYy54LCBjLnkgLSAyMDAwKTsKIAorICAgICAgICAgYyA9IGNlbnRlck9mKCJwb3NpdGlv
bkZpeGVkIik7CisgICAgICAgICBhd2FpdCB0b3VjaEFuZERyYWdGcm9tUG9pbnRUb1BvaW50KGMu
eCwgYy55LCBjLnggLSAxNTAsIGMueSAtIDE1MCk7CisgICAgICAgICBhd2FpdCBsaWZ0VXBBdFBv
aW50KGMueCAtIDE1MCwgYy55IC0gMTUwKTsKKworICAgICAgICAgYyA9IGNlbnRlck9mKCJwb3Np
dGlvblN0aWNreSIpOworICAgICAgICAgYXdhaXQgdG91Y2hBbmREcmFnRnJvbVBvaW50VG9Qb2lu
dChjLngsIGMueSwgYy54LCBjLnkgLSAxNTApOworICAgICAgICAgYXdhaXQgbGlmdFVwQXRQb2lu
dChjLngsIGMueSAtIDE1MCk7CisKICAgICAgICAgIC8vIFdhaXQgZm9yIHNjcm9sbGluZyB0byBz
dGFiaWxpemUgYW5kIGZvciBzY3JvbGxiYXJzIHRvIGRpc2FwcGVhci4KICAgICAgICAgIHNldFRp
bWVvdXQoKCkgPT4ge3Rlc3RSdW5uZXIubm90aWZ5RG9uZSgpOyB9LCAyMDAwKTsKICAgICAgICB9
CiAKLSAgICAgICB2YXIgZnJhbWVUb0xvYWRDb3VudCA9IDQ7CisgICAgICAgdmFyIGZyYW1lVG9M
b2FkQ291bnQgPSA2OwogICAgICAgIGZ1bmN0aW9uIG5ld0ZyYW1lTG9hZGVkKCkgewogICAgICAg
ICAgICBmcmFtZVRvTG9hZENvdW50LS07CiAgICAgICAgICAgIGlmIChmcmFtZVRvTG9hZENvdW50
ID09IDApCkBAIC04NSw2ICs5MywxOSBAQAogICAgICAgICAgICAgPGRpdiBzdHlsZT0nd2lkdGg6
IDEwMHB4OyBoZWlnaHQ6IDUwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsnPjwvZGl2PgogICAgICAg
ICAgICAgPC9ib2R5PiIgb25sb2FkPSJuZXdGcmFtZUxvYWRlZCgpIj4KICAgICAgICAgPC9pZnJh
bWU+CisgICAgICAgIDxpZnJhbWUgaWQ9InBvc2l0aW9uRml4ZWQiIHNjcm9sbGluZz0ieWVzIiBz
cmNkb2M9IgorICAgICAgICAgICAgPGJvZHkgc3R5bGU9J3Bvc2l0aW9uOiByZWxhdGl2ZTsgbWFy
Z2luOiAwOyB3aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHgnPgorICAgICAgICAgICAgICAgIDxk
aXYgc3R5bGU9J3Bvc2l0aW9uOiBmaXhlZDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IGJh
Y2tncm91bmQ6IGdyZWVuOyc+PC9kaXY+CisgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ncG9z
aXRpb246IGFic29sdXRlOyBib3R0b206IDBweDsgcmlnaHQ6IDBweDsgd2lkdGg6IDEwMHB4OyBo
ZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyc+PC9kaXY+CisgICAgICAgICAgICA8L2Jv
ZHk+IiBvbmxvYWQ9Im5ld0ZyYW1lTG9hZGVkKCkiPgorICAgICAgICA8L2lmcmFtZT4KKyAgICAg
ICAgPGlmcmFtZSBpZD0icG9zaXRpb25TdGlja3kiIHNjcm9sbGluZz0ieWVzIiBzcmNkb2M9Igor
ICAgICAgICAgICAgPGJvZHkgc3R5bGU9J3Bvc2l0aW9uOiByZWxhdGl2ZTsgbWFyZ2luOiAwOyB3
aWR0aDogMzAwcHg7IGhlaWdodDogMzAwcHgnPgorICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9
J2hlaWdodDogMTAwcHgnPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J3Bvc2l0
aW9uOiAtd2Via2l0LXN0aWNreTsgcG9zaXRpb246IHN0aWNreTsgbGVmdDogMHB4OyB0b3A6IDBw
eDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyc+PC9kaXY+
CisgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ncG9zaXRpb246IGFic29sdXRlOyBib3R0b206
IDBweDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyc+PC9k
aXY+CisgICAgICAgICAgICA8L2JvZHk+IiBvbmxvYWQ9Im5ld0ZyYW1lTG9hZGVkKCkiPgorICAg
ICAgICA8L2lmcmFtZT4KICAgICA8L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>362990</attachid>
            <date>2019-02-26 09:27:24 -0800</date>
            <delta_ts>2019-02-26 09:27:24 -0800</delta_ts>
            <desc>Patch (tests)</desc>
            <filename>0001-194433.patch</filename>
            <type>text/plain</type>
            <size>15141</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSA4Y2JmNmYwMDBkMGUyMjhhNWY5ZWQxNzQ0MDBiNDdkZDI4Y2I3MDI1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmd2FuZ0BpZ2FsaWEuY29tPgpEYXRl
OiBUdWUsIDI2IEZlYiAyMDE5IDE4OjI1OjMyICswMTAwClN1YmplY3Q6IFtQQVRDSF0gMTk0NDMz
CgotLS0KIC4uLi9wcm9ncmFtbWF0aWMtc2Nyb2xsLWlmcmFtZS0wMTAtZXhwZWN0ZWQuaHRtbCAg
IHwgMTIgKysrKysKIC4uLi9pb3MvcHJvZ3JhbW1hdGljLXNjcm9sbC1pZnJhbWUtMDEwLmh0bWwg
ICAgICAgIHwgNDEgKysrKysrKysrKysrKysrKysKIC4uLi9wcm9ncmFtbWF0aWMtc2Nyb2xsLWlm
cmFtZS0wMTEtZXhwZWN0ZWQuaHRtbCAgIHwgMTIgKysrKysKIC4uLi9pb3MvcHJvZ3JhbW1hdGlj
LXNjcm9sbC1pZnJhbWUtMDExLmh0bWwgICAgICAgIHwgNDMgKysrKysrKysrKysrKysrKysrCiAu
Li4vcHJvZ3JhbW1hdGljLXNjcm9sbC1pZnJhbWUtMDEyLWV4cGVjdGVkLmh0bWwgICB8IDEyICsr
KysrCiAuLi4vaW9zL3Byb2dyYW1tYXRpYy1zY3JvbGwtaWZyYW1lLTAxMi5odG1sICAgICAgICB8
IDQyICsrKysrKysrKysrKysrKysrCiAuLi4vc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZyYW1lLTAw
NS1leHBlY3RlZC5odG1sICB8IDE5ICsrKysrKysrCiAuLi4vZmFzdC9zY3JvbGxpbmcvaW9zL3Nj
cm9sbC1pZnJhbWUtMDA1Lmh0bWwgICAgICB8IDUxICsrKysrKysrKysrKysrKysrKysrKwogLi4u
L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWlmcmFtZS0wMDYtZXhwZWN0ZWQuaHRtbCAgfCAxOSArKysr
KysrKwogLi4uL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZyYW1lLTAwNi5odG1sICAgICAg
fCA1MiArKysrKysrKysrKysrKysrKysrKysrCiAxMCBmaWxlcyBjaGFuZ2VkLCAzMDMgaW5zZXJ0
aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lv
cy9wcm9ncmFtbWF0aWMtc2Nyb2xsLWlmcmFtZS0wMTAtZXhwZWN0ZWQuaHRtbAogY3JlYXRlIG1v
ZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9wcm9ncmFtbWF0aWMtc2Ny
b2xsLWlmcmFtZS0wMTAuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qv
c2Nyb2xsaW5nL2lvcy9wcm9ncmFtbWF0aWMtc2Nyb2xsLWlmcmFtZS0wMTEtZXhwZWN0ZWQuaHRt
bAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9wcm9n
cmFtbWF0aWMtc2Nyb2xsLWlmcmFtZS0wMTEuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91
dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9wcm9ncmFtbWF0aWMtc2Nyb2xsLWlmcmFtZS0wMTIt
ZXhwZWN0ZWQuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xs
aW5nL2lvcy9wcm9ncmFtbWF0aWMtc2Nyb2xsLWlmcmFtZS0wMTIuaHRtbAogY3JlYXRlIG1vZGUg
MTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZyYW1lLTAwNS1l
eHBlY3RlZC5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxp
bmcvaW9zL3Njcm9sbC1pZnJhbWUtMDA1Lmh0bWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRU
ZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mvc2Nyb2xsLWlmcmFtZS0wMDYtZXhwZWN0ZWQuaHRtbAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwt
aWZyYW1lLTAwNi5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcv
aW9zL3Byb2dyYW1tYXRpYy1zY3JvbGwtaWZyYW1lLTAxMC1leHBlY3RlZC5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Byb2dyYW1tYXRpYy1zY3JvbGwtaWZyYW1lLTAxMC1l
eHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjliODZm
MGE3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3Mv
cHJvZ3JhbW1hdGljLXNjcm9sbC1pZnJhbWUtMDEwLWV4cGVjdGVkLmh0bWwKQEAgLTAsMCArMSwx
MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHRpdGxlPlByb2dy
YW1tYXRpYyBzY3JvbGxpbmcgb2YgaWZyYW1lPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2aWV3
cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorICA8
L2hlYWQ+CisgIDxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIGdy
ZWVuIHNxdWFyZS48L3A+CisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6
IDNlbTsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsiPgor
ICAgIDwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3Njcm9sbGluZy9pb3MvcHJvZ3JhbW1hdGljLXNjcm9sbC1pZnJhbWUtMDEwLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3MvcHJvZ3JhbW1hdGljLXNjcm9sbC1pZnJhbWUt
MDEwLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uNTYzODc2ZjVk
ZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9wcm9n
cmFtbWF0aWMtc2Nyb2xsLWlmcmFtZS0wMTAuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8dGl0bGU+UHJvZ3JhbW1hdGljIHNjcm9s
bGluZyBvZiBpZnJhbWU8L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50
PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CisgICAgPHNjcmlwdD4KKyAg
ICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgICAg
aW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVkKHRydWUpOwor
CisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICAvLyBUaGlzIGNoZWNr
cyBzY3JvbGxpbmcgYmVoYXZpb3IgZm9yIHBvc2l0aW9uICJmaXhlZCIuCisgICAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicG9zaXRpb25GaXhlZCIpLmNvbnRlbnRXaW5kb3cud2lu
ZG93LnNjcm9sbFRvKDEwMCwgMTAwKTsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgICAgICB9
CisgICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgaWZyYW1lIHsKKyAgICAgICAg
ICAgIGZsb2F0OiBsZWZ0OworICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50
KDEzNWRlZywgcmVkLCBvcmFuZ2UpOworICAgICAgICAgICAgYm9yZGVyOiAwOworICAgICAgICAg
ICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAg
IG92ZXJmbG93OiBub25lOworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgPC9oZWFkPgorICA8
Ym9keT4KKyAgICA8cD5UaGlzIHRlc3QgcGFzc2VzIGlmIHlvdSBzZWUgYSBncmVlbiBzcXVhcmUu
PC9wPgorICAgIDxkaXYgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAzZW07IHdpZHRo
OiAxMDBweDsgaGVpZ2h0OiAxMDBweDsgYmFja2dyb3VuZDogZ3JlZW47Ij4KKyAgICAgICAgPGlm
cmFtZSBpZD0icG9zaXRpb25GaXhlZCIgc2Nyb2xsaW5nPSJ5ZXMiIHNyY2RvYz0iCisgICAgICAg
ICAgICA8Ym9keSBzdHlsZT0nbWFyZ2luOiAwOyB3aWR0aDogMjAwcHg7IGhlaWdodDogMjAwcHgn
PgorICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBmaXhlZDsgd2lkdGg6IDEw
MHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsnPjwvZGl2PgorICAgICAgICAg
ICAgPC9ib2R5PiIgb25sb2FkPSJydW5UZXN0KCkiPgorICAgICAgICA8L2lmcmFtZT4KKyAgICA8
L2Rpdj4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9z
Y3JvbGxpbmcvaW9zL3Byb2dyYW1tYXRpYy1zY3JvbGwtaWZyYW1lLTAxMS1leHBlY3RlZC5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Byb2dyYW1tYXRpYy1zY3JvbGwtaWZy
YW1lLTAxMS1leHBlY3RlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAuLjliODZmMGE3MzgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9s
bGluZy9pb3MvcHJvZ3JhbW1hdGljLXNjcm9sbC1pZnJhbWUtMDExLWV4cGVjdGVkLmh0bWwKQEAg
LTAsMCArMSwxMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgPGhlYWQ+CisgICAgPHRp
dGxlPlByb2dyYW1tYXRpYyBzY3JvbGxpbmcgb2YgaWZyYW1lPC90aXRsZT4KKyAgICA8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxl
PTEiPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxwPlRoaXMgdGVzdCBwYXNzZXMgaWYgeW91
IHNlZSBhIGdyZWVuIHNxdWFyZS48L3A+CisgICAgPGRpdiBzdHlsZT0icG9zaXRpb246IGFic29s
dXRlOyB0b3A6IDNlbTsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kOiBn
cmVlbjsiPgorICAgIDwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3MvcHJvZ3JhbW1hdGljLXNjcm9sbC1pZnJhbWUtMDEx
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3MvcHJvZ3JhbW1hdGljLXNjcm9s
bC1pZnJhbWUtMDExLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u
MmVmZjQ4YThiNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L2lvcy9wcm9ncmFtbWF0aWMtc2Nyb2xsLWlmcmFtZS0wMTEuaHRtbApAQCAtMCwwICsxLDQzIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8dGl0bGU+UHJvZ3JhbW1h
dGljIHNjcm9sbGluZyBvZiBpZnJhbWU8L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0
IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CisgICAgPHNj
cmlwdD4KKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAg
ICAgICAgICAgaW50ZXJuYWxzLnNldHRpbmdzLnNldEFzeW5jRnJhbWVTY3JvbGxpbmdFbmFibGVk
KHRydWUpOworCisgICAgICAgIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CisgICAgICAgICAgICAvLyBU
aGlzIGNoZWNrcyBzY3JvbGxpbmcgYmVoYXZpb3IgZm9yIHBvc2l0aW9uICJzdGlja3kiLgorICAg
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInBvc2l0aW9uU3RpY2t5QmVnaW4iKS5j
b250ZW50V2luZG93LndpbmRvdy5zY3JvbGxUbygwLCA1MCk7CisKKyAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUo
KTsKKyAgICAgICAgfQorICAgICA8L3NjcmlwdD4KKyAgICA8c3R5bGU+CisgICAgICAgIGlmcmFt
ZSB7CisgICAgICAgICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAgICAgIGJhY2tncm91bmQ6IGxp
bmVhci1ncmFkaWVudCgxMzVkZWcsIHJlZCwgb3JhbmdlKTsKKyAgICAgICAgICAgIGJvcmRlcjog
MDsKKyAgICAgICAgICAgIGhlaWdodDogMTAwcHg7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgICAgICBvdmVyZmxvdzogbm9uZTsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cisg
IDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEg
Z3JlZW4gc3F1YXJlLjwvcD4KKyAgICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRv
cDogM2VtOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyI+
CisgICAgICAgIDxpZnJhbWUgaWQ9InBvc2l0aW9uU3RpY2t5QmVnaW4iIHNjcm9sbGluZz0ieWVz
IiBzcmNkb2M9IgorICAgICAgICAgICAgPGJvZHkgc3R5bGU9J21hcmdpbjogMDsgd2lkdGg6IDIw
MHB4OyBoZWlnaHQ6IDMwMHB4Jz4KKyAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdoZWlnaHQ6
IDUwcHgnPjwvZGl2PgorICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9J3dpZHRoOiAxMDBweDsg
aGVpZ2h0OiA1MHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsnPjwvZGl2PgorICAgICAgICAgICAgICAg
IDxkaXYgc3R5bGU9J3Bvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsgcG9zaXRpb246IHN0aWNreTsg
bGVmdDogMHB4OyB0b3A6IDBweDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7IGJhY2tncm91
bmQ6IGdyZWVuOyc+PC9kaXY+CisgICAgICAgICAgICA8L2JvZHk+IiBvbmxvYWQ9InJ1blRlc3Qo
KSI+CisgICAgICAgIDwvaWZyYW1lPgorICAgIDwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGluZy9pb3MvcHJvZ3JhbW1hdGljLXNj
cm9sbC1pZnJhbWUtMDEyLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3Njcm9sbGlu
Zy9pb3MvcHJvZ3JhbW1hdGljLXNjcm9sbC1pZnJhbWUtMDEyLWV4cGVjdGVkLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uOWI4NmYwYTczOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9wcm9ncmFtbWF0aWMtc2Nyb2xs
LWlmcmFtZS0wMTItZXhwZWN0ZWQuaHRtbApAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgaHRt
bD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8dGl0bGU+UHJvZ3JhbW1hdGljIHNjcm9sbGluZyBv
ZiBpZnJhbWU8L3RpdGxlPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0
aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CisgIDwvaGVhZD4KKyAgPGJvZHk+Cisg
ICAgPHA+VGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gc3F1YXJlLjwvcD4KKyAg
ICA8ZGl2IHN0eWxlPSJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogM2VtOyB3aWR0aDogMTAwcHg7
IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQ6IGdyZWVuOyI+CisgICAgPC9kaXY+CisgIDwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9w
cm9ncmFtbWF0aWMtc2Nyb2xsLWlmcmFtZS0wMTIuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3Qvc2Ny
b2xsaW5nL2lvcy9wcm9ncmFtbWF0aWMtc2Nyb2xsLWlmcmFtZS0wMTIuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi44MjRiZDYzNjVkCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Byb2dyYW1tYXRpYy1zY3JvbGwtaWZy
YW1lLTAxMi5odG1sCkBAIC0wLDAgKzEsNDIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cisg
IDxoZWFkPgorICAgIDx0aXRsZT5Qcm9ncmFtbWF0aWMgc2Nyb2xsaW5nIG9mIGlmcmFtZTwvdGl0
bGU+CisgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0
aCwgaW5pdGlhbC1zY2FsZT0xIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRl
c3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICAg
ICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgICAgICBpbnRlcm5hbHMuc2V0dGluZ3Mu
c2V0QXN5bmNGcmFtZVNjcm9sbGluZ0VuYWJsZWQodHJ1ZSk7CisKKyAgICAgICAgZnVuY3Rpb24g
cnVuVGVzdCgpIHsKKyAgICAgICAgICAgIC8vIFRoaXMgY2hlY2tzIHNjcm9sbGluZyBiZWhhdmlv
ciBmb3IgcG9zaXRpb24gInN0aWNreSIuCisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgicG9zaXRpb25TdGlja3lFbmQiKS5jb250ZW50V2luZG93LndpbmRvdy5zY3JvbGxUbygw
LCAxNTApOworCisgICAgICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAg
ICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgICAgIH0KKyAgICAgPC9zY3JpcHQ+
CisgICAgPHN0eWxlPgorICAgICAgICBpZnJhbWUgeworICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7
CisgICAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZWQsIG9y
YW5nZSk7CisgICAgICAgICAgICBib3JkZXI6IDA7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMHB4
OworICAgICAgICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgICAgICAgb3ZlcmZsb3c6IG5vbmU7
CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxwPlRo
aXMgdGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIGdyZWVuIHNxdWFyZS48L3A+CisgICAgPGRpdiBz
dHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IDNlbTsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6
IDEwMHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsiPgorICAgICAgICA8aWZyYW1lIGlkPSJwb3NpdGlv
blN0aWNreUVuZCIgc2Nyb2xsaW5nPSJ5ZXMiIHNyY2RvYz0iCisgICAgICAgICAgICA8Ym9keSBz
dHlsZT0nbWFyZ2luOiAwOyB3aWR0aDogMjAwcHg7IGhlaWdodDogMzAwcHgnPgorICAgICAgICAg
ICAgICAgIDxkaXYgc3R5bGU9J2hlaWdodDogMTAwcHgnPjwvZGl2PgorICAgICAgICAgICAgICAg
IDxkaXYgc3R5bGU9J3Bvc2l0aW9uOiAtd2Via2l0LXN0aWNreTsgcG9zaXRpb246IHN0aWNreTsg
bGVmdDogMHB4OyB0b3A6IDBweDsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3Jv
dW5kOiBncmVlbjsnPjwvZGl2PgorICAgICAgICAgICAgPC9ib2R5PiIgb25sb2FkPSJuZXdGcmFt
ZUxvYWRlZCgpIj4KKyAgICAgICAgPC9pZnJhbWU+CisgICAgPC9kaXY+CisgIDwvYm9keT4KKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwt
aWZyYW1lLTAwNS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9z
L3Njcm9sbC1pZnJhbWUtMDA1LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMC4uZTQ2YjkzYjM0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZyYW1lLTAwNS1leHBlY3RlZC5odG1sCkBAIC0w
LDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwKKyAgPGhlYWQ+CisgICAgPHRpdGxl
PlNjcm9sbGluZyBvZiBpZnJhbWU8L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAgIC50ZXN0ZGl2
IHsKKyAgICAgICAgICBmbG9hdDogbGVmdDsKKyAgICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsK
KyAgICAgICAgICBib3JkZXI6IDA7CisgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAg
ICB3aWR0aDogMTAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgIDxi
b2R5PgorICAgIDxwPlRoaXMgdGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIGdyZWVuIHNxdWFyZS48
L3A+CisgICAgPGRpdiBjbGFzcz0idGVzdGRpdiI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZyYW1l
LTAwNS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUt
MDA1Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uM2VmMDQ3MTJk
OAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3Jv
bGwtaWZyYW1lLTAwNS5odG1sCkBAIC0wLDAgKzEsNTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5TY3JvbGxpbmcgb2YgaWZyYW1lPC90aXRsZT4KKyAg
ICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0
aWFsLXNjYWxlPTEiPgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvYmFzaWMt
Z2VzdHVyZXMuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLndh
aXRVbnRpbERvbmUoKTsKKyAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgIGlu
dGVybmFscy5zZXR0aW5ncy5zZXRBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZCh0cnVlKTsKKwor
ICAgICAgZnVuY3Rpb24gY2VudGVyT2YoaWQpCisgICAgICB7CisgICAgICAgICAgdmFyIGZyYW1l
Qm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgp
OworICAgICAgICAgIHJldHVybiB7IHg6IGZyYW1lQm94LmxlZnQgKyBmcmFtZUJveC53aWR0aCAv
IDIsIHk6IGZyYW1lQm94LnRvcCArIGZyYW1lQm94LmhlaWdodCAvIDIgfTsKKyAgICAgIH0KKwor
ICAgICAgYXN5bmMgZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICBpZiAoIXdpbmRvdy50
ZXN0UnVubmVyIHx8ICF0ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQorICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAvLyBUaGlzIGNoZWNrcyBzY3JvbGxpbmcgdG8gdGhlIGxvY2F0aW9u
IG9mIHRoZSBncmVlbiBzcXVhcmUuCisgICAgICAgICAgdmFyIGMgPSBjZW50ZXJPZigicG9zaXRp
b25GaXhlZCIpOworICAgICAgICAgIGF3YWl0IHRvdWNoQW5kRHJhZ0Zyb21Qb2ludFRvUG9pbnQo
Yy54LCBjLnksIGMueCAtIDE1MCwgYy55IC0gMTUwKTsKKyAgICAgICAgICBhd2FpdCBsaWZ0VXBB
dFBvaW50KGMueCAtIDE1MCwgYy55IC0gMTUwKTsKKworICAgICAgICAgIC8vIFdhaXQgZm9yIHNj
cm9sbGluZyB0byBzdGFiaWxpemUgYW5kIGZvciBzY3JvbGxiYXJzIHRvIGRpc2FwcGVhci4KKyAg
ICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHt0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsgfSwgMTAw
MCk7CisgICAgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgaWZyYW1l
IHsKKyAgICAgICAgICAgIGZsb2F0OiBsZWZ0OworICAgICAgICAgICAgYmFja2dyb3VuZDogbGlu
ZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBvcmFuZ2UpOworICAgICAgICAgICAgYm9yZGVyOiAw
OworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgIDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHA+VGhp
cyB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEgZ3JlZW4gc3F1YXJlLjwvcD4KKyAgICAgICAgPGlm
cmFtZSBpZD0icG9zaXRpb25GaXhlZCIgc2Nyb2xsaW5nPSJ5ZXMiIHNyY2RvYz0iCisgICAgICAg
ICAgICA8Ym9keSBzdHlsZT0ncG9zaXRpb246IHJlbGF0aXZlOyBtYXJnaW46IDA7IHdpZHRoOiAz
MDBweDsgaGVpZ2h0OiAzMDBweCc+CisgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ncG9zaXRp
b246IGZpeGVkOyB3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZDogZ3JlZW47
Jz48L2Rpdj4KKyAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7
IGJvdHRvbTogMHB4OyByaWdodDogMHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgYmFj
a2dyb3VuZDogZ3JlZW47Jz48L2Rpdj4KKyAgICAgICAgICAgIDwvYm9keT4iIG9ubG9hZD0icnVu
VGVzdCgpIj4KKyAgICAgICAgPC9pZnJhbWU+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZyYW1lLTAwNi1leHBl
Y3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUt
MDA2LWV4cGVjdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4u
ZTQ2YjkzYjM0OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5n
L2lvcy9zY3JvbGwtaWZyYW1lLTAwNi1leHBlY3RlZC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWwKKyAgPGhlYWQ+CisgICAgPHRpdGxlPlNjcm9sbGluZyBvZiBp
ZnJhbWU8L3RpdGxlPgorICAgIDxzdHlsZT4KKyAgICAgIC50ZXN0ZGl2IHsKKyAgICAgICAgICBm
bG9hdDogbGVmdDsKKyAgICAgICAgICBiYWNrZ3JvdW5kOiBncmVlbjsKKyAgICAgICAgICBib3Jk
ZXI6IDA7CisgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICB3aWR0aDogMTAwcHg7
CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICA8L2hlYWQ+CisgIDxib2R5PgorICAgIDxwPlRo
aXMgdGVzdCBwYXNzZXMgaWYgeW91IHNlZSBhIGdyZWVuIHNxdWFyZS48L3A+CisgICAgPGRpdiBj
bGFzcz0idGVzdGRpdiI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZyYW1lLTAwNi5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9zY3JvbGxpbmcvaW9zL3Njcm9sbC1pZnJhbWUtMDA2Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZDkzM2U2YWU3MQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvc2Nyb2xsaW5nL2lvcy9zY3JvbGwtaWZyYW1lLTAwNi5o
dG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgor
ICAgIDx0aXRsZT5TY3JvbGxpbmcgb2YgaWZyYW1lPC90aXRsZT4KKyAgICA8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgor
ICAgIDxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvYmFzaWMtZ2VzdHVyZXMuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsK
KyAgICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICAgIGludGVybmFscy5zZXR0aW5n
cy5zZXRBc3luY0ZyYW1lU2Nyb2xsaW5nRW5hYmxlZCh0cnVlKTsKKworICAgICAgZnVuY3Rpb24g
Y2VudGVyT2YoaWQpCisgICAgICB7CisgICAgICAgICAgdmFyIGZyYW1lQm94ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoaWQpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAgIHJl
dHVybiB7IHg6IGZyYW1lQm94LmxlZnQgKyBmcmFtZUJveC53aWR0aCAvIDIsIHk6IGZyYW1lQm94
LnRvcCArIGZyYW1lQm94LmhlaWdodCAvIDIgfTsKKyAgICAgIH0KKworICAgICAgYXN5bmMgZnVu
Y3Rpb24gcnVuVGVzdCgpIHsKKyAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyIHx8ICF0
ZXN0UnVubmVyLnJ1blVJU2NyaXB0KQorICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
ICAvLyBUaGlzIGNoZWNrcyBzY3JvbGxpbmcgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBncmVlbiBz
cXVhcmUKKyAgICAgICAgICB2YXIgYyA9IGNlbnRlck9mKCJwb3NpdGlvblN0aWNreSIpOworICAg
ICAgICAgIGF3YWl0IHRvdWNoQW5kRHJhZ0Zyb21Qb2ludFRvUG9pbnQoYy54LCBjLnksIGMueCwg
Yy55IC0gMTUwKTsKKyAgICAgICAgICBhd2FpdCBsaWZ0VXBBdFBvaW50KGMueCwgYy55IC0gMTUw
KTsKKworICAgICAgICAgIC8vIFdhaXQgZm9yIHNjcm9sbGluZyB0byBzdGFiaWxpemUgYW5kIGZv
ciBzY3JvbGxiYXJzIHRvIGRpc2FwcGVhci4KKyAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHt0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsgfSwgMTAwMCk7CisgICAgICAgfQorICAgIDwvc2NyaXB0
PgorICAgIDxzdHlsZT4KKyAgICAgICAgaWZyYW1lIHsKKyAgICAgICAgICAgIGZsb2F0OiBsZWZ0
OworICAgICAgICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgcmVkLCBv
cmFuZ2UpOworICAgICAgICAgICAgYm9yZGVyOiAwOworICAgICAgICAgICAgaGVpZ2h0OiAxMDBw
eDsKKyAgICAgICAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+Cisg
IDwvaGVhZD4KKyAgPGJvZHk+CisgICAgPHA+VGhpcyB0ZXN0IHBhc3NlcyBpZiB5b3Ugc2VlIGEg
Z3JlZW4gc3F1YXJlLjwvcD4KKyAgICA8aWZyYW1lIGlkPSJwb3NpdGlvblN0aWNreSIgc2Nyb2xs
aW5nPSJ5ZXMiIHNyY2RvYz0iCisgICAgICAgIDxib2R5IHN0eWxlPSdwb3NpdGlvbjogcmVsYXRp
dmU7IG1hcmdpbjogMDsgd2lkdGg6IDMwMHB4OyBoZWlnaHQ6IDMwMHB4Jz4KKyAgICAgICAgICAg
IDxkaXYgc3R5bGU9J2hlaWdodDogMTAwcHgnPjwvZGl2PgorICAgICAgICAgICAgPGRpdiBzdHls
ZT0ncG9zaXRpb246IC13ZWJraXQtc3RpY2t5OyBwb3NpdGlvbjogc3RpY2t5OyBsZWZ0OiAwcHg7
IHRvcDogMHB4OyB3aWR0aDogMTAwcHg7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZDogZ3JlZW47
Jz48L2Rpdj4KKyAgICAgICAgICAgIDxkaXYgc3R5bGU9J3Bvc2l0aW9uOiBhYnNvbHV0ZTsgYm90
dG9tOiAwcHg7IHdpZHRoOiAxMDBweDsgaGVpZ2h0OiA1MHB4OyBiYWNrZ3JvdW5kOiBncmVlbjsn
PjwvZGl2PgorICAgICAgICA8L2JvZHk+IiBvbmxvYWQ9InJ1blRlc3QoKSI+CisgICAgPC9pZnJh
bWU+CisgIDwvYm9keT4KKzwvaHRtbD4KLS0gCjIuMTQuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>