<?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>174097</bug_id>
          
          <creation_ts>2017-07-03 08:26:12 -0700</creation_ts>
          <short_desc>Introduce ScrollingTreeScrollingNodeDelegateIOS to share code between overflow and frame scrolling</short_desc>
          <delta_ts>2017-09-27 12:51:49 -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>Frames</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>176273</dependson>
          <blocked>149264</blocked>
    
    <blocked>173833</blocked>
    
    <blocked>174130</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fred.wang</cc>
    
    <cc>jamesr</cc>
    
    <cc>luiz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1325125</commentid>
    <comment_count>0</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-07-03 08:26:12 -0700</bug_when>
    <thetext>Attempt to move some code out of ScrollingTreeOverflowScrollingNodeIOS so that it can be used for frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325129</commentid>
    <comment_count>1</comment_count>
      <attachid>314486</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-07-03 08:51:34 -0700</bug_when>
    <thetext>Created attachment 314486
Part 1

First part. WKOverflowScrollViewDelegate can now be renamed/moved and more code could be extracted from ScrollingTreeOverflowScrollingNodeIOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1325403</commentid>
    <comment_count>2</comment_count>
      <attachid>314559</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-07-04 03:42:58 -0700</bug_when>
    <thetext>Created attachment 314559
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1332618</commentid>
    <comment_count>3</comment_count>
      <attachid>316538</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-07-27 02:45:23 -0700</bug_when>
    <thetext>Created attachment 316538
Patch

Rebasing...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335180</commentid>
    <comment_count>4</comment_count>
      <attachid>317226</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-08-04 01:36:09 -0700</bug_when>
    <thetext>Created attachment 317226
Patch

Rebasing after r220261</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335189</commentid>
    <comment_count>5</comment_count>
      <attachid>317228</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-08-04 02:19:41 -0700</bug_when>
    <thetext>Created attachment 317228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344541</commentid>
    <comment_count>6</comment_count>
      <attachid>317228</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-09-01 13:01:40 -0700</bug_when>
    <thetext>Comment on attachment 317228
Patch

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

I think this is on the right track.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:40
&gt; +#if PLATFORM(IOS)
&gt; +namespace WebKit {
&gt; +class ScrollingTreeScrollingNodeDelegateIOS;
&gt; +}
&gt; +#endif

It&apos;s wrong for WebCore to know anything about WebKit, so you can&apos;t do this.

Maybe there should be a ScrollingTreeScrollingNodeDelegate base class in WebCore, which WebKit subclasses.

&gt; Source/WebKit/UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:145
&gt; +    m_scrollingNodeDelegate.reset(new ScrollingTreeScrollingNodeDelegateIOS(*this));

We never use bare &apos;new&apos;. This should use make_unique&lt;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345223</commentid>
    <comment_count>7</comment_count>
      <attachid>319855</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-09-04 09:48:07 -0700</bug_when>
    <thetext>Created attachment 319855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345226</commentid>
    <comment_count>8</comment_count>
      <attachid>317228</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-09-04 09:53:13 -0700</bug_when>
    <thetext>Comment on attachment 317228
Patch

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

&gt;&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h:40
&gt;&gt; +#endif
&gt; 
&gt; It&apos;s wrong for WebCore to know anything about WebKit, so you can&apos;t do this.
&gt; 
&gt; Maybe there should be a ScrollingTreeScrollingNodeDelegate base class in WebCore, which WebKit subclasses.

OK, I&apos;ve done that in the patch I just uploaded. The drawback is that now we need to make more non-public members of ScrollingTreeScrollingNode accessible to the UIProcess classes, here and in bug 174130 at least. I&apos;ve done that by adding new members to ScrollingTreeScrollingNodeDelegate but maybe we want to make the corresponding members of ScrollingTreeScrollingNode public, I don&apos;t know. WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345311</commentid>
    <comment_count>9</comment_count>
      <attachid>319855</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-04 20:20:00 -0700</bug_when>
    <thetext>Comment on attachment 319855
Patch

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

Looks OK.

I think I understand the goal, but this looks a bit awkward. Is this really a “delegate”? Why does the delegate need to access private members of ScrollingTreeScrollingNode?

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNodeDelegate.h:30
&gt; +#include &quot;IntRect.h&quot;

Why? This file doesn’t use IntRect. It does use FloatPoint, though.

&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNodeDelegate.h:33
&gt; +namespace WebCore {
&gt; +class ScrollingTreeScrollingNode;

Missing blank line.

&gt; Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:64
&gt; +        _scrollingTreeNodeDelegate = delegate;

How does the object lifetime work? What guarantees this delegate won’t be deallocated while WKOverflowScrollViewDelegate is still around and holding a pointer to it?

&gt; Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:30
&gt; +#include &lt;WebCore/IntRect.h&gt;

Why is this included here? This file does not use IntRect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345384</commentid>
    <comment_count>10</comment_count>
      <attachid>319887</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-09-05 01:56:05 -0700</bug_when>
    <thetext>Created attachment 319887
Patch for landing

This patch addresses Darin&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345385</commentid>
    <comment_count>11</comment_count>
      <attachid>319855</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-09-05 02:16:28 -0700</bug_when>
    <thetext>Comment on attachment 319855
Patch

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

Indeed, this class is really the &quot;iOS scrolling logic&quot; that will be shared between derived classes of ScrollingTreeScrollingNode for iOS: non-main frames and overflow nodes. In C++ that would be multiple inheritance but here I have to introduce this helper class to extract that &quot;iOS scrolling logic&quot;. I&apos;m not sure whether &quot;delegate&quot; is the right term and moreover protected members non-accessible to that helper class. As I said in comment 8, I wonder whether we just want instead to make more members of ScrollingTreeScrollingNode public.

&gt;&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNodeDelegate.h:30
&gt;&gt; +#include &quot;IntRect.h&quot;
&gt; 
&gt; Why? This file doesn’t use IntRect. It does use FloatPoint, though.

Right, this should just be a &quot;class FloatPoint&quot;. Done.

&gt;&gt; Source/WebCore/page/scrolling/ScrollingTreeScrollingNodeDelegate.h:33
&gt;&gt; +class ScrollingTreeScrollingNode;
&gt; 
&gt; Missing blank line.

Done.

&gt;&gt; Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:64
&gt;&gt; +        _scrollingTreeNodeDelegate = delegate;
&gt; 
&gt; How does the object lifetime work? What guarantees this delegate won’t be deallocated while WKOverflowScrollViewDelegate is still around and holding a pointer to it?

The ScrollingTreeScrollingNodeDelegateIOS has the same lifetime as the node and WKOverflowScrollViewDelegate is released in the node&apos;s destructor. I&apos;ve modified the node&apos;s destructor to ensure that WKOverflowScrollViewDelegate is destroyed before ScrollingTreeScrollingNodeDelegateIOS.

&gt;&gt; Source/WebKit/UIProcess/RemoteLayerTree/ios/ScrollingTreeScrollingNodeDelegateIOS.h:30
&gt;&gt; +#include &lt;WebCore/IntRect.h&gt;
&gt; 
&gt; Why is this included here? This file does not use IntRect.

Done. I&apos;ve just put a &quot;class FloatPoint&quot;. (Not sure why I used a header...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345884</commentid>
    <comment_count>12</comment_count>
      <attachid>320009</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2017-09-06 05:01:31 -0700</bug_when>
    <thetext>Created attachment 320009
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345892</commentid>
    <comment_count>13</comment_count>
      <attachid>320009</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-06 05:42:50 -0700</bug_when>
    <thetext>Comment on attachment 320009
Patch for landing

Clearing flags on attachment: 320009

Committed r221669: &lt;http://trac.webkit.org/changeset/221669&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345893</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-06 05:42:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353691</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:51:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694163&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314486</attachid>
            <date>2017-07-03 08:51:34 -0700</date>
            <delta_ts>2017-07-04 03:42:54 -0700</delta_ts>
            <desc>Part 1</desc>
            <filename>0001-Bug-174097-part-1.patch</filename>
            <type>text/plain</type>
            <size>24473</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSBhNDMwZDA1YzhlZDBmNmJiZWYzN2RiMDQ4ZDg3MTNlMDc1NWE1MGZlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogTW9uLCAzIEp1bCAyMDE3IDE3OjMyOjI0ICswMjAwClN1YmplY3Q6IFtQQVRDSF0gQnVnIDE3
NDA5NyAtIHBhcnQgMQoKLS0tCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogICB8ICA4ICsrCiAuLi4vcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuaCAgICB8ICAzICsKIC4uLi9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlLmNwcCAgICAgICAgIHwgNzkgKysrKysrKysrKysrKysrKysrKwogLi4uL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggfCA1OCArKysrKysrKysrKysr
KwogLi4uL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggICAgfCAx
MiArKy0KIC4uLi9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAg
IHwgODggKysrKysrKystLS0tLS0tLS0tLS0tLQogNiBmaWxlcyBjaGFuZ2VkLCAxODMgaW5zZXJ0
aW9ucygrKSwgNjUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDliNWZiZjhkNTIuLmM5ODJkMjk5
MmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zNzgwLDYgKzM3ODAsOCBAQAogCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAg
LyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTFBOTkwMTYyNzQ2Q0IwMDI5NzMzMCAvKiBTY3JvbGxpbmdD
b29yZGluYXRvck1hYy5oICovOyB9OwogCQk5MzkxQTk5QzE2MjlENzAwMDAyOTczMzAgLyogU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM5MUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLmNwcCAqLzsgfTsKIAkJOTM5MUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8q
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkxQTk5QjE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQlBMTkxQTk5QzE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTkxQTk5QTE2MjlENkZGMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAgKi87IH07CisJCUExOTFBOTlEMTYyOUQ3MDAwMDI5NzMz
MCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMTkxQTk5QjE2MjlENzAwMDAyOTczMzAg
LyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzOTIxNDY5MThBNkQ3OTEwMDBFRTY4
OCAvKiBUZXh0SXRlcmF0b3JCZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM5MjE0NjgxOEE2RDc5MTAwMEVFNjg4IC8qIFRleHRJdGVyYXRv
ckJlaGF2aW9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTM5MjI2MkQxMDMyMTA3QjAwNkU3RDVEIC8qIEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5
MjI2MkMxMDMyMTA3QjAwNkU3RDVEIC8qIEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwICov
OyB9OwogCQk5MzkyMjYyRjEwMzIxMDg0MDA2RTdENUQgLyogSlNDU1NSdWxlTGlzdEN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkyMjYy
RTEwMzIxMDg0MDA2RTdENUQgLyogSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAgKi87IH07CkBAIC0x
MTk5Miw2ICsxMTk5NCw4IEBACiAJCTkzOTFBOTkwMTYyNzQ2Q0IwMDI5NzMzMCAvKiBTY3JvbGxp
bmdDb29yZGluYXRvck1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jv
bGxpbmdDb29yZGluYXRvck1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5Mzkx
QTk5QTE2MjlENkZGMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkxQTk5QjE2MjlENzAw
MDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTE5MUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUExOTFBOTlCMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MjE0NjgxOEE2RDc5MTAwMEVFNjg4IC8qIFRleHRJdGVy
YXRvckJlaGF2aW9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRJdGVy
YXRvckJlaGF2aW9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTIyNjJDMTAz
MjEwN0IwMDZFN0Q1RCAvKiBKU0hUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkyMjYyRTEwMzIxMDg0MDA2RTdENUQg
LyogSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU0NTU1J1bGVMaXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE3MTk0LDYgKzE3MTk4LDggQEAKIAkJCQkwRkVBM0U3RTE5MUIzMTY5MDAwRjFCNTUg
LyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oICovLAogCQkJCTkzOTFBOTlB
MTYyOUQ2RkYwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgKi8sCiAJ
CQkJOTM5MUE5OUIxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmggKi8sCisJCQkJQTE5MUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGUuY3BwICovLAorCQkJCUExOTFBOTlCMTYyOUQ3MDAwMDI5NzMzMCAv
KiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggKi8sCiAJCQkJN0FBRkU4Q0Qx
OUNCODY3MjAwMEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5nU3RhdGUuY3BwICovLAogCQkJCTdBQUZF
OENFMTlDQjg2NzIwMDBGNTZEOCAvKiBTY3JvbGxMYXRjaGluZ1N0YXRlLmggKi8sCiAJCQkJRjQ2
NzI5MjUxRTBERTVBQjAwQUNDM0Q4IC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oICovLApAQCAt
Mjk0NzEsNiArMjk0NzcsNyBAQAogCQkJCTFBQUFEREU0MTREQzhDOEYwMEFGNjRCMyAvKiBTY3Jv
bGxpbmdUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTNFODAxOTFCMzE2OTAwMEYx
QjU1IC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzOTFBOTlEMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTE5MUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
Qjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0FBRkU4RDAxOUNCODY3MjAwMEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5n
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0Nzg3NTU0MTk5ODNBRkYwMDI0QTI4NyAvKiBT
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzM0MCw2ICszMzM0
Nyw3IEBACiAJCQkJMUFBQURERTMxNERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2Rl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEzRTdGMTkxQjMxNjkwMDBGMUI1NSAvKiBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
OTFBOTlDMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBMTkxQTk5QzE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkI4ODkw
QjE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3QUFGRThDRjE5Q0I4NjcyMDAwRjU2RDggLyogU2Nyb2xsTGF0Y2hpbmdTdGF0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNDc4NzU1NTE5OTgzQUZGMDAyNEEyODcgLyogU2Ny
b2xsU25hcEFuaW1hdG9yU3RhdGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
CmluZGV4IDM1OTRiMTA4NmVjLi4yYjY2ZDc0NjZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCkBA
IC0zNyw4ICszNywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcm9sbGluZ1Ry
ZWU7CiBjbGFzcyBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU7CitjbGFzcyBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOwogCiBjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7CisgICAgZnJpZW5kIGNsYXNzIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU7CisKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wNzBh
ZWMyOWFmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCkBAIC0wLDAgKzEsNzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCIKKworI2lmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcp
CisKKyNpbmNsdWRlICJTY3JvbGxpbmdUcmVlLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlKFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdOb2RlKQorICAgIDogbV9zY3JvbGxp
bmdOb2RlKHNjcm9sbGluZ05vZGUpCisgICAgLCBtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZShmYWxz
ZSkKK3sKK30KKworU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTo6flNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUoKQoreworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGU6OnNjcm9sbFdpbGxTdGFydCgpIGNvbnN0Cit7CisgICAgbV9z
Y3JvbGxpbmdOb2RlLnNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZVdpbGxTdGFydFNj
cm9sbCgpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6OnNj
cm9sbERpZEVuZCgpIGNvbnN0Cit7CisgICAgbV9zY3JvbGxpbmdOb2RlLnNjcm9sbGluZ1RyZWUo
KS5zY3JvbGxpbmdUcmVlTm9kZURpZEVuZFNjcm9sbCgpOworfQorCit2b2lkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6OnNjcm9sbFZpZXdEaWRTY3JvbGwoY29uc3QgRmxvYXRQ
b2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgaW5Vc2VySW50ZXJhdGlvbikgY29uc3QKK3sKKyAg
ICBpZiAobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
c2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdUcmVlKCkuc2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlhRGVs
ZWdhdGVkU2Nyb2xsaW5nKG1fc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2RlSUQoKSwgc2Nyb2xs
UG9zaXRpb24sIGluVXNlckludGVyYXRpb24pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGU6OnNjcm9sbFZpZXdXaWxsU3RhcnRQYW5HZXN0dXJlKCkgY29uc3QK
K3sKKyAgICBtX3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2Rl
V2lsbFN0YXJ0UGFuR2VzdHVyZSgpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGU6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHVuc2lnbmVkIGhv
cml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBjb25zdAoreworICAgIGlmIChtX3VwZGF0aW5n
RnJvbVN0YXRlTm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zY3JvbGxpbmdOb2RlLnNj
cm9sbGluZ1RyZWUoKS5jdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShtX3Njcm9sbGlu
Z05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIGhvcml6b250YWwsIHZlcnRpY2FsKTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEFTWU5DX1NDUk9MTElORykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMC4uZTI1ZmI3OTczYzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5M
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRlICJJbnRSZWN0LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGU7CisKK2NsYXNz
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUgeworCitwdWJsaWM6CisgICAgV0VC
Q09SRV9FWFBPUlQgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZShT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwg
flNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUoKTsKKworICAgIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdOb2RlKCkgeyByZXR1cm4gbV9zY3JvbGxpbmdOb2Rl
OyB9CisgICAgdm9pZCBzZXRVcGRhdGluZ0Zyb21TdGF0ZU5vZGUoYm9vbCB1cGRhdGluZykgeyBt
X3VwZGF0aW5nRnJvbVN0YXRlTm9kZSA9IHVwZGF0aW5nOyB9CisKKyAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNjcm9sbFZpZXdEaWRTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRp
b24sIGJvb2wgaW5Vc2VySW50ZXJhdGlvbikgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBzY3JvbGxXaWxsU3RhcnQoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNjcm9s
bERpZEVuZCgpIGNvbnN0OworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2Nyb2xsVmlld1dpbGxT
dGFydFBhbkdlc3R1cmUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGN1cnJlbnRT
bmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZl
cnRpY2FsKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZSYgbV9zY3JvbGxpbmdOb2RlOworICAgIGJvb2wgbV91cGRhdGluZ0Zyb21TdGF0ZU5vZGU7Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9p
b3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUy5oCmluZGV4IDAyYzhkZTkxOGM3Li40NTlhOWFjZDJmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxp
bmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaApAQCAtMzQsNiAr
MzQsMTAgQEAKIE9CSkNfQ0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgV0tPdmVyZmxvd1Njcm9s
bFZpZXdEZWxlZ2F0ZTsKIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MgOiBwdWJsaWMgV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSB7
CkBAIC00MSwxMiArNDUsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TPiBjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYs
IFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUygpOwogCi0gICAgdm9pZCBvdmVyZmxvd1Njcm9sbFdpbGxT
dGFydCgpOwotICAgIHZvaWQgb3ZlcmZsb3dTY3JvbGxEaWRFbmQoKTsKLSAgICB2b2lkIG92ZXJm
bG93U2Nyb2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUoKTsKLSAgICB2b2lkIHNjcm9sbFZpZXdE
aWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGJvb2wgaW5Vc2VySW50ZXJhdGlv
bik7Ci0gICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZSh1bnNpZ25lZCBo
b3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCk7Ci0KICAgICBDQUxheWVyICpzY3JvbGxMYXll
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXIuZ2V0KCk7IH0KIAogcHJpdmF0ZToKQEAg
LTcyLDcgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxl
ZENvbnRlbnRzTGF5ZXI7CiAKICAgICBSZXRhaW5QdHI8V0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxl
Z2F0ZT4gbV9zY3JvbGxWaWV3RGVsZWdhdGU7Ci0gICAgYm9vbCBtX3VwZGF0aW5nRnJvbVN0YXRl
Tm9kZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZT4gbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGU7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxp
bmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tCmluZGV4IDg3OWE5OGQ2YWI1Li44MmQwZjUxYjUwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCkBA
IC0zMCwxMCArMzAsMTEgQEAKICNpZiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQogCiAjaW1wb3J0
IDxRdWFydHpDb3JlL1F1YXJ0ekNvcmUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nU3Rh
dGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaD4KLSNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJl
ZS5oPgogI2ltcG9ydCA8VUlLaXQvVUlQYW5HZXN0dXJlUmVjb2duaXplci5oPgogI2ltcG9ydCA8
VUlLaXQvVUlTY3JvbGxWaWV3Lmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1N0YXRlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWUuaD4K
KyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oPgog
I2ltcG9ydCA8d3RmL0Jsb2NrT2JqQ0V4Y2VwdGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9TZXRGb3JT
Y29wZS5oPgogCkBAIC00NSwyOCArNDYsMjggQEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBAaW50ZXJmYWNlIFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgOiBOU09iamVjdCA8VUlT
Y3JvbGxWaWV3RGVsZWdhdGU+IHsKLSAgICBXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MqIF9zY3JvbGxpbmdUcmVlTm9kZTsKKyAgICBXZWJDb3JlOjpTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlKiBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZTsK
IH0KIAogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1faXNJblVzZXJJbnRlcmFjdGlvbikg
Qk9PTCBpblVzZXJJbnRlcmFjdGlvbjsKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2Nyb2xs
aW5nVHJlZU5vZGU6KFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uyopbm9kZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlRGVsZWdh
dGU6KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUqKWRlbGVnYXRl
OwogCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRl
CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlOihXZWJLaXQ6OlNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MqKW5vZGUKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGU6KFdlYkNvcmU6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUqKWRlbGVnYXRlCiB7CiAgICAgaWYgKChzZWxmID0gW3N1
cGVyIGluaXRdKSkKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlID0gbm9kZTsKKyAgICAgICAg
X3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIAogICAgIHJldHVybiBzZWxm
OwogfQogCiAtICh2b2lkKXNjcm9sbFZpZXdEaWRTY3JvbGw6KFVJU2Nyb2xsVmlldyAqKXNjcm9s
bFZpZXcKIHsKLSAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNjcm9sbFZpZXdEaWRTY3JvbGwoc2Ny
b2xsVmlldy5jb250ZW50T2Zmc2V0LCBfaW5Vc2VySW50ZXJhY3Rpb24pOworICAgIF9zY3JvbGxp
bmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxWaWV3RGlkU2Nyb2xsKHNjcm9sbFZpZXcuY29udGVu
dE9mZnNldCwgX2luVXNlckludGVyYWN0aW9uKTsKIH0KIAogLSAodm9pZClzY3JvbGxWaWV3V2ls
bEJlZ2luRHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKQEAgLTc0LDggKzc1LDgg
QEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbEJlZ2luRHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNj
cm9sbFZpZXcKICAgICBfaW5Vc2VySW50ZXJhY3Rpb24gPSBZRVM7CiAKICAgICBpZiAoc2Nyb2xs
Vmlldy5wYW5HZXN0dXJlUmVjb2duaXplci5zdGF0ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3Rh
dGVCZWdhbikKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5vdmVyZmxvd1Njcm9sbFZpZXdX
aWxsU3RhcnRQYW5HZXN0dXJlKCk7Ci0gICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5vdmVyZmxvd1Nj
cm9sbFdpbGxTdGFydCgpOworICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Ny
b2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUoKTsKKyAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxl
Z2F0ZS0+c2Nyb2xsV2lsbFN0YXJ0KCk7CiB9CiAKICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQ
KQpAQCAtODQsMjggKzg1LDI4IEBAIC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxFbmREcmFnZ2luZzoo
VUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRoVmVsb2NpdHk6KENHUG9pCiAgICAgQ0dGbG9h
dCBob3Jpem9udGFsVGFyZ2V0ID0gdGFyZ2V0Q29udGVudE9mZnNldC0+eDsKICAgICBDR0Zsb2F0
IHZlcnRpY2FsVGFyZ2V0ID0gdGFyZ2V0Q29udGVudE9mZnNldC0+eTsKIAotICAgIHVuc2lnbmVk
IG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVlTm9kZS0+Y3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpOwotICAgIHVuc2lnbmVkIG9yaWdpbmFsVmVy
dGljYWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJlbnRWZXJ0aWNhbFNu
YXBQb2ludEluZGV4KCk7CisgICAgdW5zaWduZWQgb3JpZ2luYWxIb3Jpem9udGFsU25hcFBvc2l0
aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50
SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCk7CisgICAgdW5zaWduZWQgb3JpZ2luYWxWZXJ0aWNh
bFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2Rl
KCkuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKTsKIAotICAgIGlmICghX3Njcm9sbGlu
Z1RyZWVOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKS5pc0VtcHR5KCkpIHsKKyAgICBpZiAo
IV9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuaG9yaXpvbnRhbFNu
YXBPZmZzZXRzKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAg
ICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0U25hcE9mZnNldChfc2Nyb2xs
aW5nVHJlZU5vZGUtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5vZGUt
Pmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCksIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5
LngsIGluZGV4KTsKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5zZXRDdXJyZW50SG9yaXpv
bnRhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKKyAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBv
c2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXQoX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNj
cm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldHMoKSwgX3Njcm9sbGluZ1RyZWVOb2Rl
RGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpLCBo
b3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54LCBpbmRleCk7CisgICAgICAgIF9zY3JvbGxpbmdU
cmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudEhvcml6b250YWxTbmFw
UG9pbnRJbmRleChpbmRleCk7CiAgICAgICAgIGlmIChob3Jpem9udGFsVGFyZ2V0ID49IDAgJiYg
aG9yaXpvbnRhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLndpZHRoKQogICAgICAg
ICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eCA9IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKICAg
ICB9CiAKLSAgICBpZiAoIV9zY3JvbGxpbmdUcmVlTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygp
LmlzRW1wdHkoKSkgeworICAgIGlmICghX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9s
bGluZ05vZGUoKS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIHVu
c2lnbmVkIGluZGV4OwotICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9z
ZXN0U25hcE9mZnNldChfc2Nyb2xsaW5nVHJlZU5vZGUtPnZlcnRpY2FsU25hcE9mZnNldHMoKSwg
X3Njcm9sbGluZ1RyZWVOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRSYW5nZXMoKSwgdmVydGljYWxU
YXJnZXQsIHZlbG9jaXR5LnksIGluZGV4KTsKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5z
ZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7CisgICAgICAgIGZsb2F0IHBv
dGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0KF9zY3JvbGxpbmdUcmVlTm9k
ZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xs
aW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcygpLCB2ZXJ0aWNhbFRhcmdldCwgdmVsb2NpdHkueSwgaW5kZXgpOworICAgICAgICBfc2Ny
b2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRWZXJ0aWNh
bFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKHZlcnRpY2FsVGFyZ2V0ID49IDAg
JiYgdmVydGljYWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS5oZWlnaHQpCiAgICAg
ICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT55ID0gcG90ZW50aWFsU25hcFBvc2l0aW9uOwog
ICAgIH0KIAotICAgIGlmIChvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gIT0gX3Njcm9s
bGluZ1RyZWVOb2RlLT5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkKLSAgICAgICAg
fHwgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3NpdGlvbiAhPSBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpIHsKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVO
b2RlLT5jdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShfc2Nyb2xsaW5nVHJlZU5vZGUt
PmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSwgX3Njcm9sbGluZ1RyZWVOb2RlLT5j
dXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKTsKKyAgICBpZiAob3JpZ2luYWxIb3Jpem9u
dGFsU25hcFBvc2l0aW9uICE9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdO
b2RlKCkuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpCisgICAgICAgIHx8IG9yaWdp
bmFsVmVydGljYWxTbmFwUG9zaXRpb24gIT0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNj
cm9sbGluZ05vZGUoKS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKSB7CisgICAgICAg
IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5jdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENo
YW5nZShfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRI
b3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSwgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNj
cm9sbGluZ05vZGUoKS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKTsKICAgICB9CiB9
CiAjZW5kaWYKQEAgLTExNCw4ICsxMTUsOCBAQCAtICh2b2lkKXNjcm9sbFZpZXdEaWRFbmREcmFn
Z2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aWxsRGVjZWxlcmF0ZTooQk9PTAogewog
ICAgIGlmIChfaW5Vc2VySW50ZXJhY3Rpb24gJiYgIXdpbGxEZWNlbGVyYXRlKSB7CiAgICAgICAg
IF9pblVzZXJJbnRlcmFjdGlvbiA9IE5POwotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNj
cm9sbFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCBfaW5Vc2VySW50ZXJh
Y3Rpb24pOwotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPm92ZXJmbG93U2Nyb2xsRGlkRW5k
KCk7CisgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxWaWV3RGlkU2Ny
b2xsKHNjcm9sbFZpZXcuY29udGVudE9mZnNldCwgX2luVXNlckludGVyYWN0aW9uKTsKKyAgICAg
ICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbERpZEVuZCgpOwogICAgIH0KIH0K
IApAQCAtMTIzLDggKzEyNCw4IEBAIC0gKHZvaWQpc2Nyb2xsVmlld0RpZEVuZERlY2VsZXJhdGlu
ZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogewogICAgIGlmIChfaW5Vc2VySW50ZXJhY3Rp
b24pIHsKICAgICAgICAgX2luVXNlckludGVyYWN0aW9uID0gTk87Ci0gICAgICAgIF9zY3JvbGxp
bmdUcmVlTm9kZS0+c2Nyb2xsVmlld0RpZFNjcm9sbChzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQs
IF9pblVzZXJJbnRlcmFjdGlvbik7Ci0gICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+b3ZlcmZs
b3dTY3JvbGxEaWRFbmQoKTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNj
cm9sbFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCBfaW5Vc2VySW50ZXJh
Y3Rpb24pOworICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsRGlkRW5k
KCk7CiAgICAgfQogfQogCkBAIC0xMzksOCArMTQwLDggQEAgUmVmPFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1M+IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MKIAogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyhXZWJDb3JlOjpTY3JvbGxpbmdUcmVlJiBzY3JvbGxp
bmdUcmVlLCBXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpCi0gICAgLCBt
X3VwZGF0aW5nRnJvbVN0YXRlTm9kZShmYWxzZSkKIHsKKyAgICBtX3Njcm9sbGluZ05vZGVEZWxl
Z2F0ZS5yZXNldChuZXcgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZSgqdGhpcykp
OwogfQogCiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp+U2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUygpCkBAIC0xODAsNyArMTgxLDcgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hp
bGRyZW4oY29uc3QgU2Nyb2wKIHsKICAgICBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oc3RhdGVOb2RlKTsKIAotICAgIFNldEZvclNj
b3BlPGJvb2w+IHVwZGF0aW5nQ2hhbmdlKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlLCB0cnVlKTsK
KyAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+c2V0VXBkYXRpbmdGcm9tU3RhdGVOb2RlKHRy
dWUpOwogCiAgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNhc3Q8U2Ny
b2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAKQEAgLTE5NSw3
ICsxOTYsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OmNv
bW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbAogCiAgICAgICAgIGlmIChzY3JvbGxp
bmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6U2Nyb2xsTGF5ZXIpKSB7CiAgICAgICAgICAgICBpZiAoIW1fc2Nyb2xsVmlld0RlbGVnYXRl
KQotICAgICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRvcHROUyhbW1dLT3Zl
cmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Nyb2xsaW5nVHJlZU5vZGU6
dGhpc10pOworICAgICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRvcHROUyhb
W1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Nyb2xsaW5nVHJl
ZU5vZGVEZWxlZ2F0ZTptX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS5nZXQoKV0pOwogCiAgICAgICAg
ICAgICBzY3JvbGxWaWV3LnNjcm9sbHNUb1RvcCA9IE5POwogICAgICAgICAgICAgc2Nyb2xsVmll
dy5kZWxlZ2F0ZSA9IG1fc2Nyb2xsVmlld0RlbGVnYXRlLmdldCgpOwpAQCAtMjMzLDYgKzIzNCw4
IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y29tbWl0U3Rh
dGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sCiAjZW5kaWYKICAgICAgICAgRU5EX0JMT0NLX09C
SkNfRVhDRVBUSU9OUwogICAgIH0KKworICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLT5zZXRV
cGRhdGluZ0Zyb21TdGF0ZU5vZGUoZmFsc2UpOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoY29u
c3QgU2Nyb2xsaW5nVHJlZU5vZGUmIGNoYW5nZWROb2RlLCBjb25zdCBGbG9hdFJlY3QmIGZpeGVk
UG9zaXRpb25SZWN0LCBjb25zdCBGbG9hdFNpemUmIGN1bXVsYXRpdmVEZWx0YSkKQEAgLTI3OSwz
NyArMjgyLDYgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1
cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3QgRmwKICAgICAgICAgY2hpbGQtPnVwZGF0
ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0LCBzY3Jv
bGxEZWx0YSk7CiB9CiAKLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uzo6b3ZlcmZsb3dTY3JvbGxXaWxsU3RhcnQoKQotewotICAgIHNjcm9sbGluZ1RyZWUoKS5zY3Jv
bGxpbmdUcmVlTm9kZVdpbGxTdGFydFNjcm9sbCgpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6Om92ZXJmbG93U2Nyb2xsRGlkRW5kKCkKLXsKLSAgICBz
Y3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVEaWRFbmRTY3JvbGwoKTsKLX0KLQotdm9p
ZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpvdmVyZmxvd1Njcm9sbFZp
ZXdXaWxsU3RhcnRQYW5HZXN0dXJlKCkKLXsKLSAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5n
VHJlZU5vZGVXaWxsU3RhcnRQYW5HZXN0dXJlKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6c2Nyb2xsVmlld0RpZFNjcm9sbChjb25zdCBGbG9hdFBv
aW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBpblVzZXJJbnRlcmF0aW9uKQotewotICAgIGlmICht
X3VwZGF0aW5nRnJvbVN0YXRlTm9kZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2Nyb2xsaW5n
VHJlZSgpLnNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyhzY3JvbGxp
bmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIGluVXNlckludGVyYXRpb24pOwotfQotCi12b2lk
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJ
bmRpY2VzRGlkQ2hhbmdlKHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKQot
ewotICAgIGlmIChtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZSkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIHNjcm9sbGluZ1RyZWUoKS5jdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShz
Y3JvbGxpbmdOb2RlSUQoKSwgaG9yaXpvbnRhbCwgdmVydGljYWwpOwotfQotCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQotLSAKMi4x
MS4wIChBcHBsZSBHaXQtODEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>314559</attachid>
            <date>2017-07-04 03:42:58 -0700</date>
            <delta_ts>2017-07-27 02:45:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174097-20170704124256.patch</filename>
            <type>text/plain</type>
            <size>31321</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE5MTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDZjNjI4N2ZiZjNiYjQw
YzBhNzUzYzlkNTdiOWI5ZTdiMzkyNjJmNi4uMzBiNzFhMDE2MWVjNGViYTNmODFiNTUyNjc5YjZk
Mjk1MjFlN2IzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA3LTA0ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyB0byBzaGFyZSBjb2RlIGJldHdlZW4gb3Zl
cmZsb3cgYW5kIGZyYW1lIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWhhdmlvciB1bmNoYW5nZWQuCisKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOiBNYWtl
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mgc28KKyAgICAgICAgaXQgY2Fu
IGFjY2VzcyB0aGUgcHJpdmF0ZSBtZW1iZXJzIG9mIHRoZSBzY3JvbGxpbmcgbm9kZS4KKwogMjAx
Ny0wNy0wNCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAg
IENsZWFudXAgc29tZSBTdHJpbmdCdWlsZGVyIHVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDgyMDRiY2JlNTA4
ZmI4ZTA5OGQyYjVlYmZlOTYwYTYzMjc5MGJjMzguLjg0YTJhZjMyOWU0ZTg1YWU4NmM1Y2VjZDBh
MDk1Y2YwOTBjZjVlMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxNy0wNy0wNCAg
RnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MgdG8gc2hhcmUgY29kZSBiZXR3ZWVu
IG92ZXJmbG93IGFuZCBmcmFtZSBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDA5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIHRoYXQgY2FuIGJlIHVzZWQgYnkKKyAgICAg
ICAgV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSB0byBjb21tdW5pY2F0ZSB0byB0aGUgc2Ny
b2xsaW5nIHRyZWUgYW5kIG5vZGVzLiBJdCBjYW4gYWxzbyBiZQorICAgICAgICB1c2VkIGFzIGEg
aGVscGVyIGNsYXNzIGJ5IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuIEZv
ciBub3csIG9ubHkgdGhlIG5vbi0KKyAgICAgICAgb3ZlcnJpZGVuIG1lbWJlciBmdW5jdGlvbnMg
b2YgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyBhcmUgbW92ZWQgdG8gdGhh
dCBuZXcKKyAgICAgICAgY2xhc3MuIEluIGZvbGxvdy11cCBjb21taXRzLCBXS092ZXJmbG93U2Ny
b2xsVmlld0RlbGVnYXRlIGNhbiBiZWNvbWUgYSBnZW5lcmljCisgICAgICAgIFNjcm9sbFZpZXdE
ZWxlZ2F0ZSBhbmQgbW9yZSBjb2RlIGNhbiBiZSBtb3ZlZCBpbnRvIHRoZSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TCisgICAgICAgIGZpbGUuIEZyYW1lIHNjcm9sbGluZyBu
b2RlcyB3aWxsIHRoZW4gYmUgYWJsZSB0byBzaGFyZSB0aGUgc2FtZSBVSSBjb2RlIGFzIG92ZXJm
bG93OmF1dG8gd2hlbgorICAgICAgICBpT1MgZnJhbWUgc2Nyb2xsaW5nIGlzIGltcGxlbWVudGVk
IChidWcgMTQ5MjY0KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaDogTW92ZSBub24tb3ZlcnJpZGVuIG1l
bWJlcgorICAgICAgICBmdW5jdGlvbnMgYW5kIG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlIGludG8g
dGhlIGRlbGVnYXRlIGNsYXNzLiBBbHNvIGRlZmluZSBhIG1lbWJlciB0byBzdG9yZQorICAgICAg
ICB0aGF0IGRlbGVnYXRlLgorICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW06IFVzZSB0aGUgbm9kZSBkZWxlZ2F0
ZSB0bworICAgICAgICBjb21tdW5pY2F0ZSB0byB0aGUgc2Nyb2xsaW5nIHRyZWUgYW5kIG5vZGUu
CisgICAgICAgICgtW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgaW5pdFdpdGhTY3JvbGxp
bmdUcmVlTm9kZURlbGVnYXRlOl0pOiBJbml0IHdpdGggYSBkZWxlZ2F0ZS4KKyAgICAgICAgKC1b
V0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3RGlkU2Nyb2xsOl0pOiBDYWxs
IHRoZSBkZWxlZ2F0ZSBmdW5jdGlvbi4KKyAgICAgICAgKC1bV0tPdmVyZmxvd1Njcm9sbFZpZXdE
ZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEJlZ2luRHJhZ2dpbmc6XSk6IERpdHRvLgorICAgICAgICAo
LVtXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6
d2l0aFZlbG9jaXR5OnRhcmdldENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgIFVzZSB0aGUgZGVs
ZWdhdGUgZnVuY3Rpb25zIG9yIHBhc3MgYnkgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUzo6c2Nyb2xsaW5nTm9kZSgpLgorICAgICAgICAoLVtXS092ZXJmbG93U2Nyb2xsVmll
d0RlbGVnYXRlIHNjcm9sbFZpZXdEaWRFbmREcmFnZ2luZzp3aWxsRGVjZWxlcmF0ZTpdKTogVXNl
IHRoZSBkZWxlZ2F0ZQorICAgICAgICBmdW5jdGlvbnMuCisgICAgICAgICgtW1dLT3ZlcmZsb3dT
Y3JvbGxWaWV3RGVsZWdhdGUgc2Nyb2xsVmlld0RpZEVuZERlY2VsZXJhdGluZzpdKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6
OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MpOgorICAgICAgICBJbml0IHRo
ZSBkZWxlZ2F0ZSBmb3IgdGhpcyBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKTogVXNl
IHRoZSBkZWxlZ2F0ZS4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbik6IFVzZSB0aGUgZGVsZWdhdGUK
KyAgICAgICAgZnVuY3Rpb24uCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKTogRGl0
dG8uCisgICAgICAgICgtW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgaW5pdFdpdGhTY3Jv
bGxpbmdUcmVlTm9kZTpdKTogRGVsZXRlZC4gVGhpcyBpcyByZW5hbWVkCisgICAgICAgIGluaXRX
aXRoU2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZSBhbmQgYWNjZXB0cyBhIGRlbGVnYXRlLgorICAg
ICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1cGRh
dGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwpOiBEZWxldGVkLiBNb3ZlZAorICAgICAgICB0byBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLgorICAgICAgICAoV2ViS2l0OjpTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpvdmVyZmxvd1Njcm9sbFdpbGxTdGFy
dCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjpvdmVyZmxvd1Njcm9sbERpZEVuZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0
OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpvdmVyZmxvd1Njcm9sbFZp
ZXdXaWxsU3RhcnRQYW5HZXN0dXJlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnNjcm9sbFZpZXdEaWRTY3JvbGwpOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uzo6Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBV
SVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLmg6IEFkZGVkLiBOZXcgZGVsZWdhdGUgY2xhc3MKKyAgICAgICAgZm9yIFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuIFRoZSBtZW1iZXJzIHVzZWQgYnkgV0tPdmVyZmxv
d1Njcm9sbFZpZXdEZWxlZ2F0ZQorICAgICAgICBhcmUgcHVibGljIGFuZCB0aGUgb3RoZXJzIGFy
ZSBwcml2YXRlLiBUaGlzIGNsYXNzIGlzIGEgZnJpZW5kIG9mCisgICAgICAgIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mgc28gdGhhdCBpdCBjYW4gYWNjZXNzIHByaXZhdGUg
bWVtYmVycyBlLmcuCisgICAgICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbCgpIG9yICBt
X3VwZGF0aW5nRnJvbVN0YXRlTm9kZS4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsaW5nTm9kZSk6IEV4cG9zZSB0aGUgc2Nyb2xs
aW5nIG5vZGUgZm9yCisgICAgICAgIFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUuCisgICAg
ICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1M6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MpOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyk6CisgICAgICAgIChX
ZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnVwZGF0ZUNoaWxk
Tm9kZXNBZnRlclNjcm9sbCk6IENvZGUgZXh0cmFjdGVkCisgICAgICAgIGZyb20gU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsV2lsbFN0YXJ0KTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNj
cm9sbERpZEVuZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
OjpzY3JvbGxWaWV3RGlkU2Nyb2xsKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlk
Q2hhbmdlKTogRGl0dG8uCisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyBmaWxlcyB0byB0
aGUKKyAgICAgICAgYnVpbGQgc3lzdGVtLgorCiAyMDE3LTA3LTA0ICBKb3NlcGggUGVjb3Jhcm8g
IDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgQ2xlYW51cCBzb21lIFN0cmluZ0J1aWxk
ZXIgdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAppbmRleCAzNTk0YjEwODZlY2JhMzc4YjUxNmJkMjhk
NTdhYmM0YjIzMGRkNzI5Li40NDM2YzhmMTMyYmNlY2ExMWM2MDg1NmVlZTlhMjEyZTg0YTZiOWM3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTMzLDEyICszMywyMiBAQAogI2luY2x1ZGUgIlNj
cm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKIAor
I2lmIFBMQVRGT1JNKElPUykKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzsKK30KKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWU7CiBjbGFzcyBTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGU7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlIDogcHVibGljIFNjcm9s
bGluZ1RyZWVOb2RlIHsKKyNpZiBQTEFURk9STShJT1MpCisgICAgZnJpZW5kIGNsYXNzIFdlYktp
dDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzsKKyNlbmRpZgorCiBwdWJs
aWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oCmluZGV4
IDAyYzhkZTkxOGM3NGYzYjczZWVjMDM3YjVhYjk2Y2Q5YmY3MDU1YTguLjIwYzVjNDI3YTRjZmY2
ZGVjZWM2NDg0NjQyZDMxNjBiYTgwMGEzMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgKQEAgLTM0LDYgKzM0LDggQEAKIE9CSkNf
Q0xBU1MgQ0FMYXllcjsKIE9CSkNfQ0xBU1MgV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZTsK
IAorY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzsKKwogbmFtZXNw
YWNlIFdlYktpdCB7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MgOiBwdWJsaWMgV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSB7
CkBAIC00MSwxMiArNDMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TPiBjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYs
IFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUygpOwogCi0gICAgdm9pZCBvdmVyZmxvd1Njcm9sbFdpbGxT
dGFydCgpOwotICAgIHZvaWQgb3ZlcmZsb3dTY3JvbGxEaWRFbmQoKTsKLSAgICB2b2lkIG92ZXJm
bG93U2Nyb2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUoKTsKLSAgICB2b2lkIHNjcm9sbFZpZXdE
aWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGJvb2wgaW5Vc2VySW50ZXJhdGlv
bik7Ci0gICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZSh1bnNpZ25lZCBo
b3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCk7Ci0KICAgICBDQUxheWVyICpzY3JvbGxMYXll
cigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXIuZ2V0KCk7IH0KIAogcHJpdmF0ZToKQEAg
LTY2LDEzICs2MiwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNv
bnN0IFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlIHsgfQogCi0gICAgdm9p
ZCB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYp
OwotICAgIAogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbExheWVyOwogICAgIFJldGFp
blB0cjxDQUxheWVyPiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsKIAogICAgIFJldGFpblB0cjxX
S092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlPiBtX3Njcm9sbFZpZXdEZWxlZ2F0ZTsKLSAgICBi
b29sIG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPiBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KaW5kZXggODc5YTk4ZDZhYjViNWE3Zjhj
NTRmZjQzZTVhZDE0NGE4MDZkNjYzYi4uMzA0MDZiYzFmYzRmNjA2ZjViNzlhZWJlNmQwMWRmMGZh
NGQwNDUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9p
b3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tCkBAIC00MiwzMSArNDIsMzMgQEAKICNpbXBvcnQgPFdlYkNvcmUvU2Ny
b2xsU25hcE9mZnNldHNJbmZvLmg+CiAjZW5kaWYKIAorI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oIgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
QGludGVyZmFjZSBXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIDogTlNPYmplY3QgPFVJU2Ny
b2xsVmlld0RlbGVnYXRlPiB7Ci0gICAgV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TKiBfc2Nyb2xsaW5nVHJlZU5vZGU7CisgICAgV2ViS2l0OjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKiBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZTsK
IH0KIAogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1faXNJblVzZXJJbnRlcmFjdGlvbikg
Qk9PTCBpblVzZXJJbnRlcmFjdGlvbjsKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2Nyb2xs
aW5nVHJlZU5vZGU6KFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uyopbm9kZTsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlRGVsZWdh
dGU6KFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyopZGVsZWdh
dGU7CiAKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdh
dGUKIAotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2Nyb2xsaW5nVHJlZU5vZGU6KFdlYktpdDo6
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyopbm9kZQorLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoU2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZTooV2ViS2l0OjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKilkZWxlZ2F0ZQogewogICAgIGlmICgoc2VsZiA9
IFtzdXBlciBpbml0XSkpCi0gICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZSA9IG5vZGU7CisgICAg
ICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlID0gZGVsZWdhdGU7CiAKICAgICByZXR1cm4g
c2VsZjsKIH0KIAogLSAodm9pZClzY3JvbGxWaWV3RGlkU2Nyb2xsOihVSVNjcm9sbFZpZXcgKilz
Y3JvbGxWaWV3CiB7Ci0gICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5zY3JvbGxWaWV3RGlkU2Nyb2xs
KHNjcm9sbFZpZXcuY29udGVudE9mZnNldCwgX2luVXNlckludGVyYWN0aW9uKTsKKyAgICBfc2Ny
b2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsVmlld0RpZFNjcm9sbChzY3JvbGxWaWV3LmNv
bnRlbnRPZmZzZXQsIF9pblVzZXJJbnRlcmFjdGlvbik7CiB9CiAKIC0gKHZvaWQpc2Nyb2xsVmll
d1dpbGxCZWdpbkRyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CkBAIC03NCw4ICs3
Niw4IEBAIC0gKHZvaWQpc2Nyb2xsVmlld1dpbGxCZWdpbkRyYWdnaW5nOihVSVNjcm9sbFZpZXcg
KilzY3JvbGxWaWV3CiAgICAgX2luVXNlckludGVyYWN0aW9uID0gWUVTOwogCiAgICAgaWYgKHNj
cm9sbFZpZXcucGFuR2VzdHVyZVJlY29nbml6ZXIuc3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXpl
clN0YXRlQmVnYW4pCi0gICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+b3ZlcmZsb3dTY3JvbGxW
aWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgpOwotICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+b3ZlcmZs
b3dTY3JvbGxXaWxsU3RhcnQoKTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUt
PnNjcm9sbFZpZXdXaWxsU3RhcnRQYW5HZXN0dXJlKCk7CisgICAgX3Njcm9sbGluZ1RyZWVOb2Rl
RGVsZWdhdGUtPnNjcm9sbFdpbGxTdGFydCgpOwogfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExf
U05BUCkKQEAgLTg0LDI4ICs4NiwyOCBAQCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dp
bmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2l0aFZlbG9jaXR5OihDR1BvaQogICAgIENH
RmxvYXQgaG9yaXpvbnRhbFRhcmdldCA9IHRhcmdldENvbnRlbnRPZmZzZXQtPng7CiAgICAgQ0dG
bG9hdCB2ZXJ0aWNhbFRhcmdldCA9IHRhcmdldENvbnRlbnRPZmZzZXQtPnk7CiAKLSAgICB1bnNp
Z25lZCBvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGUt
PmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsKLSAgICB1bnNpZ25lZCBvcmlnaW5h
bFZlcnRpY2FsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlLT5jdXJyZW50VmVydGlj
YWxTbmFwUG9pbnRJbmRleCgpOworICAgIHVuc2lnbmVkIG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQ
b3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3Vy
cmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpOworICAgIHVuc2lnbmVkIG9yaWdpbmFsVmVy
dGljYWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5n
Tm9kZSgpLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCk7CiAKLSAgICBpZiAoIV9zY3Jv
bGxpbmdUcmVlTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkuaXNFbXB0eSgpKSB7CisgICAg
aWYgKCFfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmhvcml6b250
YWxTbmFwT2Zmc2V0cygpLmlzRW1wdHkoKSkgewogICAgICAgICB1bnNpZ25lZCBpbmRleDsKLSAg
ICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXQoX3Nj
cm9sbGluZ1RyZWVOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNldHMoKSwgX3Njcm9sbGluZ1RyZWVO
b2RlLT5ob3Jpem9udGFsU25hcE9mZnNldFJhbmdlcygpLCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxv
Y2l0eS54LCBpbmRleCk7Ci0gICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+c2V0Q3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleChpbmRleCk7CisgICAgICAgIGZsb2F0IHBvdGVudGlhbFNu
YXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0KF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRl
LT5zY3JvbGxpbmdOb2RlKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCksIF9zY3JvbGxpbmdUcmVl
Tm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMo
KSwgaG9yaXpvbnRhbFRhcmdldCwgdmVsb2NpdHkueCwgaW5kZXgpOworICAgICAgICBfc2Nyb2xs
aW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnNldEN1cnJlbnRIb3Jpem9udGFs
U25hcFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAoaG9yaXpvbnRhbFRhcmdldCA+PSAw
ICYmIGhvcml6b250YWxUYXJnZXQgPD0gc2Nyb2xsVmlldy5jb250ZW50U2l6ZS53aWR0aCkKICAg
ICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnggPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247
CiAgICAgfQogCi0gICAgaWYgKCFfc2Nyb2xsaW5nVHJlZU5vZGUtPnZlcnRpY2FsU25hcE9mZnNl
dHMoKS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIV9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5z
Y3JvbGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zmc2V0cygpLmlzRW1wdHkoKSkgewogICAgICAg
ICB1bnNpZ25lZCBpbmRleDsKLSAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0g
Y2xvc2VzdFNuYXBPZmZzZXQoX3Njcm9sbGluZ1RyZWVOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRz
KCksIF9zY3JvbGxpbmdUcmVlTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCksIHZlcnRp
Y2FsVGFyZ2V0LCB2ZWxvY2l0eS55LCBpbmRleCk7Ci0gICAgICAgIF9zY3JvbGxpbmdUcmVlTm9k
ZS0+c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoaW5kZXgpOworICAgICAgICBmbG9h
dCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0U25hcE9mZnNldChfc2Nyb2xsaW5nVHJl
ZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsU25hcE9mZnNldHMoKSwgX3Nj
cm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNuYXBPZmZz
ZXRSYW5nZXMoKSwgdmVydGljYWxUYXJnZXQsIHZlbG9jaXR5LnksIGluZGV4KTsKKyAgICAgICAg
X3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zZXRDdXJyZW50VmVy
dGljYWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAgICAgIGlmICh2ZXJ0aWNhbFRhcmdldCA+
PSAwICYmIHZlcnRpY2FsVGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNpemUuaGVpZ2h0KQog
ICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eSA9IHBvdGVudGlhbFNuYXBQb3NpdGlv
bjsKICAgICB9CiAKLSAgICBpZiAob3JpZ2luYWxIb3Jpem9udGFsU25hcFBvc2l0aW9uICE9IF9z
Y3JvbGxpbmdUcmVlTm9kZS0+Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpCi0gICAg
ICAgIHx8IG9yaWdpbmFsVmVydGljYWxTbmFwUG9zaXRpb24gIT0gX3Njcm9sbGluZ1RyZWVOb2Rl
LT5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpKSB7Ci0gICAgICAgIF9zY3JvbGxpbmdU
cmVlTm9kZS0+Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UoX3Njcm9sbGluZ1RyZWVO
b2RlLT5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCksIF9zY3JvbGxpbmdUcmVlTm9k
ZS0+Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7CisgICAgaWYgKG9yaWdpbmFsSG9y
aXpvbnRhbFNuYXBQb3NpdGlvbiAhPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xs
aW5nTm9kZSgpLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKQorICAgICAgICB8fCBv
cmlnaW5hbFZlcnRpY2FsU25hcFBvc2l0aW9uICE9IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRl
LT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSkgeworICAg
ICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+Y3VycmVudFNuYXBQb2ludEluZGljZXNE
aWRDaGFuZ2UoX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCksIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRl
LT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSk7CiAgICAg
fQogfQogI2VuZGlmCkBAIC0xMTQsOCArMTE2LDggQEAgLSAodm9pZClzY3JvbGxWaWV3RGlkRW5k
RHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcgd2lsbERlY2VsZXJhdGU6KEJPT0wK
IHsKICAgICBpZiAoX2luVXNlckludGVyYWN0aW9uICYmICF3aWxsRGVjZWxlcmF0ZSkgewogICAg
ICAgICBfaW5Vc2VySW50ZXJhY3Rpb24gPSBOTzsKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2Rl
LT5zY3JvbGxWaWV3RGlkU2Nyb2xsKHNjcm9sbFZpZXcuY29udGVudE9mZnNldCwgX2luVXNlcklu
dGVyYWN0aW9uKTsKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5vdmVyZmxvd1Njcm9sbERp
ZEVuZCgpOworICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsVmlld0Rp
ZFNjcm9sbChzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQsIF9pblVzZXJJbnRlcmFjdGlvbik7Cisg
ICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxEaWRFbmQoKTsKICAgICB9
CiB9CiAKQEAgLTEyMyw4ICsxMjUsOCBAQCAtICh2b2lkKXNjcm9sbFZpZXdEaWRFbmREZWNlbGVy
YXRpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKIHsKICAgICBpZiAoX2luVXNlckludGVy
YWN0aW9uKSB7CiAgICAgICAgIF9pblVzZXJJbnRlcmFjdGlvbiA9IE5POwotICAgICAgICBfc2Ny
b2xsaW5nVHJlZU5vZGUtPnNjcm9sbFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5jb250ZW50T2Zm
c2V0LCBfaW5Vc2VySW50ZXJhY3Rpb24pOwotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPm92
ZXJmbG93U2Nyb2xsRGlkRW5kKCk7CisgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRl
LT5zY3JvbGxWaWV3RGlkU2Nyb2xsKHNjcm9sbFZpZXcuY29udGVudE9mZnNldCwgX2luVXNlcklu
dGVyYWN0aW9uKTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbERp
ZEVuZCgpOwogICAgIH0KIH0KIApAQCAtMTM5LDggKzE0MSw4IEBAIFJlZjxTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TPiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TCiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYgc2Ny
b2xsaW5nVHJlZSwgV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEIG5vZGVJRCkKICAgICA6IFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUoc2Nyb2xsaW5nVHJlZSwgbm9kZUlEKQotICAg
ICwgbV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUoZmFsc2UpCiB7CisgICAgbV9zY3JvbGxpbmdOb2Rl
RGVsZWdhdGUucmVzZXQobmV3IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mo
KnRoaXMpKTsKIH0KIAogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6flNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MoKQpAQCAtMTgwLDcgKzE4Miw3IEBA
IHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y29tbWl0U3RhdGVB
ZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sCiB7CiAgICAgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZTo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKHN0YXRlTm9kZSk7CiAKLSAgICBT
ZXRGb3JTY29wZTxib29sPiB1cGRhdGluZ0NoYW5nZShtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZSwg
dHJ1ZSk7CisgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gdXBkYXRpbmdDaGFuZ2UobV9zY3JvbGxpbmdO
b2RlRGVsZWdhdGUtPm1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlLCB0cnVlKTsKIAogICAgIGNvbnN0
IGF1dG8mIHNjcm9sbGluZ1N0YXRlTm9kZSA9IGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlPihzdGF0ZU5vZGUpOwogCkBAIC0xOTUsNyArMTk3LDcgQEAgdm9pZCBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hp
bGRyZW4oY29uc3QgU2Nyb2wKIAogICAgICAgICBpZiAoc2Nyb2xsaW5nU3RhdGVOb2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbExheWVyKSkg
ewogICAgICAgICAgICAgaWYgKCFtX3Njcm9sbFZpZXdEZWxlZ2F0ZSkKLSAgICAgICAgICAgICAg
ICBtX3Njcm9sbFZpZXdEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS092ZXJmbG93U2Nyb2xsVmlld0Rl
bGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlOnRoaXNdKTsKKyAgICAgICAg
ICAgICAgICBtX3Njcm9sbFZpZXdEZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXS092ZXJmbG93U2Nyb2xs
Vmlld0RlbGVnYXRlIGFsbG9jXSBpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGU6bV9z
Y3JvbGxpbmdOb2RlRGVsZWdhdGUuZ2V0KCldKTsKIAogICAgICAgICAgICAgc2Nyb2xsVmlldy5z
Y3JvbGxzVG9Ub3AgPSBOTzsKICAgICAgICAgICAgIHNjcm9sbFZpZXcuZGVsZWdhdGUgPSBtX3Nj
cm9sbFZpZXdEZWxlZ2F0ZS5nZXQoKTsKQEAgLTI1OSw1NSArMjYxLDEyIEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6c2V0U2Nyb2xsTGF5ZXJQb3NpdGlvbihj
b25zdCBGbG9hdFBvCiB7CiAgICAgW21fc2Nyb2xsTGF5ZXIgc2V0UG9zaXRpb246Q0dQb2ludE1h
a2UoLXNjcm9sbFBvc2l0aW9uLngoKSArIHNjcm9sbE9yaWdpbigpLngoKSwgLXNjcm9sbFBvc2l0
aW9uLnkoKSArIHNjcm9sbE9yaWdpbigpLnkoKSldOwogCi0gICAgdXBkYXRlQ2hpbGROb2Rlc0Fm
dGVyU2Nyb2xsKHNjcm9sbFBvc2l0aW9uKTsKKyAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+
dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKHNjcm9sbFBvc2l0aW9uKTsKIH0KIAogdm9pZCBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlckRl
bGVnYXRlZFNjcm9sbChjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKIHsKLSAgICB1
cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoc2Nyb2xsUG9zaXRpb24pOwotfQotCi12b2lkIFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnVwZGF0ZUNoaWxkTm9kZXNBZnRl
clNjcm9sbChjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKLXsKLSAgICBpZiAoIW1f
Y2hpbGRyZW4pCi0gICAgICAgIHJldHVybjsKLQotICAgIEZsb2F0UmVjdCBmaXhlZFBvc2l0aW9u
UmVjdCA9IHNjcm9sbGluZ1RyZWUoKS5maXhlZFBvc2l0aW9uUmVjdCgpOwotICAgIEZsb2F0U2l6
ZSBzY3JvbGxEZWx0YSA9IGxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIC0gc2Nyb2xsUG9z
aXRpb247Ci0KLSAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0gICAgICAgIGNo
aWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhlZFBvc2l0aW9u
UmVjdCwgc2Nyb2xsRGVsdGEpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1M6Om92ZXJmbG93U2Nyb2xsV2lsbFN0YXJ0KCkKLXsKLSAgICBzY3JvbGxpbmdU
cmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRTY3JvbGwoKTsKLX0KLQotdm9pZCBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpvdmVyZmxvd1Njcm9sbERpZEVuZCgp
Ci17Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlkRW5kU2Nyb2xsKCk7
Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6b3ZlcmZs
b3dTY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgpCi17Ci0gICAgc2Nyb2xsaW5nVHJlZSgp
LnNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0UGFuR2VzdHVyZSgpOwotfQotCi12b2lkIFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnNjcm9sbFZpZXdEaWRTY3JvbGwoY29u
c3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgaW5Vc2VySW50ZXJhdGlvbikKLXsK
LSAgICBpZiAobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFEZWxlZ2F0ZWRTY3JvbGxp
bmcoc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uLCBpblVzZXJJbnRlcmF0aW9uKTsK
LX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpjdXJyZW50
U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZSh1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2
ZXJ0aWNhbCkKLXsKLSAgICBpZiAobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBzY3JvbGxpbmdUcmVlKCkuY3VycmVudFNuYXBQb2ludEluZGljZXNE
aWRDaGFuZ2Uoc2Nyb2xsaW5nTm9kZUlEKCksIGhvcml6b250YWwsIHZlcnRpY2FsKTsKKyAgICBt
X3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKHNjcm9s
bFBvc2l0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Njcm9sbGluZy9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZm
ZWM1MjRmOTJiNWY0YmZjODY3ZTZlMWYzMDBiOWQyMGIzMTJiMmMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNyBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElO
RykKKworI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZTsKK30KKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M7CisKK2Ns
YXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MgeworICAgIGZyaWVuZCBj
bGFzcyBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOworCitwdWJsaWM6Cisg
ICAgflNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MoKTsKKworICAgIFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdOb2RlKCkgeyByZXR1cm4g
bV9zY3JvbGxpbmdOb2RlOyB9CisgICAgdm9pZCBzY3JvbGxXaWxsU3RhcnQoKSBjb25zdDsKKyAg
ICB2b2lkIHNjcm9sbERpZEVuZCgpIGNvbnN0OworICAgIHZvaWQgc2Nyb2xsVmlld1dpbGxTdGFy
dFBhbkdlc3R1cmUoKSBjb25zdDsKKyAgICB2b2lkIHNjcm9sbFZpZXdEaWRTY3JvbGwoY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgaW5Vc2VySW50ZXJhdGlv
bikgY29uc3Q7CisgICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZSh1bnNp
Z25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkgY29uc3Q7CisKK3ByaXZhdGU6Cisg
ICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyhXZWJDb3Jl
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYpOworICAgIHZvaWQgdXBkYXRlQ2hpbGROb2Rl
c0FmdGVyU2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsK
KworICAgIFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBtX3Njcm9sbGluZ05v
ZGU7CisgICAgYm9vbCBtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TY3JvbGxpbmcv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE1ODczMDU3MWY2MzJmMTUwZjk5NzE1ZGFlOGVmOGRi
YzVmZDljOTAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU2Ny
b2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCkBAIC0w
LDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMuTC4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCIKKworI2lmIFBMQVRGT1JN
KElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
b2xsaW5nVHJlZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TKFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBzY3JvbGxp
bmdOb2RlKQorICAgIDogbV9zY3JvbGxpbmdOb2RlKHNjcm9sbGluZ05vZGUpCisgICAgLCBtX3Vw
ZGF0aW5nRnJvbVN0YXRlTm9kZShmYWxzZSkKK3sKK30KKworU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUzo6flNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mo
KQoreworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnVw
ZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlv
bikKK3sKKyAgICBpZiAoIW1fc2Nyb2xsaW5nTm9kZS5jaGlsZHJlbigpKQorICAgICAgICByZXR1
cm47CisKKyAgICBGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJlY3QgPSBtX3Njcm9sbGluZ05vZGUu
c2Nyb2xsaW5nVHJlZSgpLmZpeGVkUG9zaXRpb25SZWN0KCk7CisgICAgRmxvYXRTaXplIHNjcm9s
bERlbHRhID0gbV9zY3JvbGxpbmdOb2RlLmxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIC0g
c2Nyb2xsUG9zaXRpb247CisKKyAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fc2Nyb2xsaW5nTm9k
ZS5jaGlsZHJlbigpKQorICAgICAgICBjaGlsZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNo
YW5nZShtX3Njcm9sbGluZ05vZGUsIGZpeGVkUG9zaXRpb25SZWN0LCBzY3JvbGxEZWx0YSk7Cit9
CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsV2ls
bFN0YXJ0KCkgY29uc3QKK3sKKyAgICBtX3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nVHJlZSgpLnNj
cm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0U2Nyb2xsKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsRGlkRW5kKCkgY29uc3QKK3sKKyAgICBt
X3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlkRW5kU2Ny
b2xsKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6
c2Nyb2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUoKSBjb25zdAoreworICAgIG1fc2Nyb2xsaW5n
Tm9kZS5zY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRQYW5HZXN0dXJl
KCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Ny
b2xsVmlld0RpZFNjcm9sbChjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBp
blVzZXJJbnRlcmF0aW9uKSBjb25zdAoreworICAgIGlmIChtX3VwZGF0aW5nRnJvbVN0YXRlTm9k
ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zY3JvbGxpbmdOb2RlLnNjcm9sbGluZ1RyZWUo
KS5zY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFEZWxlZ2F0ZWRTY3JvbGxpbmcobV9zY3JvbGxpbmdO
b2RlLnNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwgaW5Vc2VySW50ZXJhdGlvbik7
Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y3VycmVu
dFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UodW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQg
dmVydGljYWwpIGNvbnN0Cit7CisgICAgaWYgKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nVHJlZSgpLmN1cnJl
bnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKG1fc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdOb2Rl
SUQoKSwgaG9yaXpvbnRhbCwgdmVydGljYWwpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
KworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBjZDAwZjIzZjk0MWNjNjJjYmRlZWM5MjhhZjFkZTk1ZjgyNzFiZDE1Li5mMTQxMGZkOGEzMDA1
MDc3ZjM5YzUyZGZkMjJmODdmYzJiZDMzNTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
S2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC04OCw2ICs4OCw4IEBACiAJCTBGNUUy
MDA0MThFNzcwNTEwMDNFQzNFNSAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFMjAwMjE4RTc3MDUx
MDAzRUMzRTUgLyogUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oICovOyB9OwogCQkwRjg1MEZF
NjFFRDdDMzlGMDBGQjc3QTcgLyogV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODUwRkU0MUVEN0Mz
OUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuY3BwICovOyB9OwogCQkw
Rjg1MEZFNzFFRDdDMzlGMDBGQjc3QTcgLyogV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjg1MEZFNTFF
RDdDMzlGMDBGQjc3QTcgLyogV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmggKi87IH07CisJ
CUFDOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBQzkzMUMxQTE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUy5oICovOyB9OworCQlBQzkzMUMxRDE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFDOTMxQzFCMThDNTcxMTkwMERCQTdDMyAvKiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tICovOyB9OwogCQkwRjkzMUMxQzE4
QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzFDMUEx
OEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1Mu
aCAqLzsgfTsKIAkJMEY5MzFDMUQxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjkzMUMxQjE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAqLzsgfTsKIAkJMEZCNjU5MjMxMjA4QjREQjAwNDQ4
MTZDIC8qIERyYXdpbmdBcmVhSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZCNjU5MjIxMjA4QjREQjAwNDQ4MTZDIC8qIERyYXdpbmdBcmVhSW5m
by5oICovOyB9OwpAQCAtMjI1MCw2ICsyMjUyLDggQEAKIAkJMEY3MDdDNzkxQTFGRUVBMzAwREE3
QTQ1IC8qIFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZW1vdGVMYXllclRyZWVTY3JvbGxpbmdQZXJmb3Jt
YW5jZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY4NTBGRTQxRUQ3QzM5
RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg1MEZFNTFFRDdDMzlGMDBGQjc3QTcg
LyogV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlBQzkzMUMxQTE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg7IHBhdGggPSBTY3JvbGxp
bmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQUM5MzFDMUIxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IG5hbWUgPSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1t
OyBwYXRoID0gU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkzMUMxQTE4QzU3MTE5MDBE
QkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TLmg7IHBhdGggPSBTY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzFDMUIxOEM1
NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOyBwYXRoID0gU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkI2NTkyMjEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhSW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtNDU4OCw2ICs0NTkyLDggQEAKIAkJMEY5MzFDMTkxOEM1NzEx
MTAwREJBN0MzIC8qIGlvcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJQUM5MzFDMUExOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MuaCAqLywKKwkJCQlBQzkzMUMxQjE4QzU3MTE5MDBEQkE3QzMgLyog
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSAqLywKIAkJCQkwRjkzMUMx
QTE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uy5oICovLAogCQkJCTBGOTMxQzFCMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tICovLAogCQkJKTsKQEAgLTg1NzEsNiArODU3Nyw3IEBA
CiAJCQkJQkMyRDAyMTcxMkFDNDFDQjAwRTczMkEzIC8qIFNhbWVEb2N1bWVudE5hdmlnYXRpb25U
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUFCNEE4RDEyOTZGMEEyMDAyMzk1MkYgLyogU2Fu
ZGJveEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFFNTUyQzUxNkFFMDY1RjAwNEVE
NjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCUFDOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3
QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFEMTMwNTQxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFEMTMwNTYxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1S
ZXNwb25zZURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMTAxNDQsNiArMTAxNTEsNyBAQAogCQkJ
CTFBQUI0QUFBMTI5NkYxNTQwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uTWFjLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJRTFFNTUyQzQxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFs
aWF0aW9uUGFyYW1ldGVyc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxOUJEQThCMTkzNjhE
NDYwMEI5N0Y1NyAvKiBTYW5kYm94VXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQUM5
MzFDMUQxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQkwRjkzMUMxRDE4QzU3MTE5MDBEQkE3QzMgLyog
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTUxRDEzMDUzMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTFEMTMwNTUxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNw
b25zZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>316538</attachid>
            <date>2017-07-27 02:45:23 -0700</date>
            <delta_ts>2017-08-04 01:36:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Bug-174097-Introduce-ScrollingTreeScrollingNodeDeleg.patch</filename>
            <type>text/plain</type>
            <size>31944</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSAxZWUwOGY0MmY4MzBhNmNmYmZlMjNmYjAwYzE1NDU3ZTEwODFlN2M2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogVGh1LCAyNyBKdWwgMjAxNyAxMToyNDo0MiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMS8zXSBC
dWcgMTc0MDk3IC0gSW50cm9kdWNlCiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBvdmVyZmxvdyBhbmQKIGZyYW1lIHNjcm9sbGluZwoK
LS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IDEyICsrKwogLi4uL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgg
ICAgfCAxMCArKysKIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHwgNjQgKysrKysrKysrKysrKysKIC4uLi9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93
U2Nyb2xsaW5nTm9kZUlPUy5oICAgIHwgMTIgKy0tCiAuLi4vaW9zL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1MubW0gICB8IDk5ICsrKysrKystLS0tLS0tLS0tLS0tLS0KIC4u
Li9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oICAgIHwgNjMgKysr
KysrKysrKysrKysKIC4uLi9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uy5tbSAgIHwgOTMgKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogICAgIHwgIDggKysKIDggZmlsZXMgY2hhbmdlZCwgMjgy
IGluc2VydGlvbnMoKyksIDc5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1t
CgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGFmMDU4ZmU2ZjBjLi45MDAxYjIzOGY1MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE1IEBACisyMDE3LTA3LTA0ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNv
bT4KKworICAgICAgICBJbnRyb2R1Y2UgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUyB0byBzaGFyZSBjb2RlIGJldHdlZW4gb3ZlcmZsb3cgYW5kIGZyYW1lIHNjcm9sbGluZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDk3CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzLCBiZWhhdmlvciB1bmNoYW5nZWQuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOiBNYWtlIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1Mgc28KKyAgICAgICAgaXQgY2FuIGFjY2VzcyB0aGUgcHJpdmF0ZSBtZW1iZXJz
IG9mIHRoZSBzY3JvbGxpbmcgbm9kZS4KKwogMjAxNy0wNy0yNiAgTmFuIFdhbmcgIDxuX3dhbmdA
YXBwbGUuY29tPgogCiAgICAgICAgIEFYOiBzaG91bGQgZGlzcGF0Y2ggYWNjZXNzaWJpbGl0eVBl
cmZvcm1QcmVzc0FjdGlvbiBhc3luYyBvbiBNYWNPUwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKaW5kZXgg
MzU5NGIxMDg2ZWMuLjQ0MzZjOGYxMzJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTMzLDEy
ICszMywyMiBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZU5vZGUuaCIKIAorI2lmIFBMQVRGT1JNKElPUykKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzsKK30KKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWU7CiBjbGFz
cyBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUzsKKyNlbmRpZgorCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwNGM1NWI0MmRmOC4uMDhhNmYzNTQ2MWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNjcgQEAKKzIwMTctMDctMDQgIEZyZWRlcmljIFdhbmcgIDxmd2Fu
Z0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBvdmVyZmxvdyBhbmQgZnJhbWUg
c2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzQwOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUyB0aGF0IGNhbiBiZSB1c2VkIGJ5CisgICAgICAgIFdLT3ZlcmZsb3dTY3JvbGxW
aWV3RGVsZWdhdGUgdG8gY29tbXVuaWNhdGUgdG8gdGhlIHNjcm9sbGluZyB0cmVlIGFuZCBub2Rl
cy4gSXQgY2FuIGFsc28gYmUKKyAgICAgICAgdXNlZCBhcyBhIGhlbHBlciBjbGFzcyBieSBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLiBGb3Igbm93LCBvbmx5IHRoZSBub24t
CisgICAgICAgIG92ZXJyaWRlbiBtZW1iZXIgZnVuY3Rpb25zIG9mIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1MgYXJlIG1vdmVkIHRvIHRoYXQgbmV3CisgICAgICAgIGNsYXNz
LiBJbiBmb2xsb3ctdXAgY29tbWl0cywgV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBjYW4g
YmVjb21lIGEgZ2VuZXJpYworICAgICAgICBTY3JvbGxWaWV3RGVsZWdhdGUgYW5kIG1vcmUgY29k
ZSBjYW4gYmUgbW92ZWQgaW50byB0aGUgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUworICAgICAgICBmaWxlLiBGcmFtZSBzY3JvbGxpbmcgbm9kZXMgd2lsbCB0aGVuIGJlIGFi
bGUgdG8gc2hhcmUgdGhlIHNhbWUgVUkgY29kZSBhcyBvdmVyZmxvdzphdXRvIHdoZW4KKyAgICAg
ICAgaU9TIGZyYW1lIHNjcm9sbGluZyBpcyBpbXBsZW1lbnRlZCAoYnVnIDE0OTI2NCkuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLmg6IE1vdmUgbm9uLW92ZXJyaWRlbiBtZW1iZXIKKyAgICAgICAgZnVuY3Rp
b25zIGFuZCBtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZSBpbnRvIHRoZSBkZWxlZ2F0ZSBjbGFzcy4g
QWxzbyBkZWZpbmUgYSBtZW1iZXIgdG8gc3RvcmUKKyAgICAgICAgdGhhdCBkZWxlZ2F0ZS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tOiBVc2UgdGhlIG5vZGUgZGVsZWdhdGUgdG8KKyAgICAgICAgY29tbXVu
aWNhdGUgdG8gdGhlIHNjcm9sbGluZyB0cmVlIGFuZCBub2RlLgorICAgICAgICAoLVtXS092ZXJm
bG93U2Nyb2xsVmlld0RlbGVnYXRlIGluaXRXaXRoU2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZTpd
KTogSW5pdCB3aXRoIGEgZGVsZWdhdGUuCisgICAgICAgICgtW1dLT3ZlcmZsb3dTY3JvbGxWaWV3
RGVsZWdhdGUgc2Nyb2xsVmlld0RpZFNjcm9sbDpdKTogQ2FsbCB0aGUgZGVsZWdhdGUgZnVuY3Rp
b24uCisgICAgICAgICgtW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgc2Nyb2xsVmlld1dp
bGxCZWdpbkRyYWdnaW5nOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tPdmVyZmxvd1Njcm9sbFZp
ZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRD
b250ZW50T2Zmc2V0Ol0pOgorICAgICAgICBVc2UgdGhlIGRlbGVnYXRlIGZ1bmN0aW9ucyBvciBw
YXNzIGJ5IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNjcm9sbGluZ05v
ZGUoKS4KKyAgICAgICAgKC1bV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3
RGlkRW5kRHJhZ2dpbmc6d2lsbERlY2VsZXJhdGU6XSk6IFVzZSB0aGUgZGVsZWdhdGUKKyAgICAg
ICAgZnVuY3Rpb25zLgorICAgICAgICAoLVtXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIHNj
cm9sbFZpZXdEaWRFbmREZWNlbGVyYXRpbmc6XSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TKToKKyAgICAgICAgSW5pdCB0aGUgZGVsZWdhdGUgZm9yIHRoaXMg
Y2xhc3MuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6IFVzZSB0aGUgZGVsZWdhdGUuCisgICAg
ICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnNldFNj
cm9sbExheWVyUG9zaXRpb24pOiBVc2UgdGhlIGRlbGVnYXRlCisgICAgICAgIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1
cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbCk6IERpdHRvLgorICAgICAgICAoLVtXS092
ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIGluaXRXaXRoU2Nyb2xsaW5nVHJlZU5vZGU6XSk6IERl
bGV0ZWQuIFRoaXMgaXMgcmVuYW1lZAorICAgICAgICBpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2Rl
RGVsZWdhdGUgYW5kIGFjY2VwdHMgYSBkZWxlZ2F0ZS4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Ny
b2xsKTogRGVsZXRlZC4gTW92ZWQKKyAgICAgICAgdG8gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUzo6b3ZlcmZsb3dTY3JvbGxXaWxsU3RhcnQpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6b3ZlcmZsb3dT
Y3JvbGxEaWRFbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUzo6b3ZlcmZsb3dTY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVy
ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjpzY3JvbGxWaWV3RGlkU2Nyb2xsKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJ
bmRpY2VzRGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oOiBBZGRlZC4gTmV3IGRl
bGVnYXRlIGNsYXNzCisgICAgICAgIGZvciBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TLiBUaGUgbWVtYmVycyB1c2VkIGJ5IFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUK
KyAgICAgICAgYXJlIHB1YmxpYyBhbmQgdGhlIG90aGVycyBhcmUgcHJpdmF0ZS4gVGhpcyBjbGFz
cyBpcyBhIGZyaWVuZCBvZgorICAgICAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TIHNvIHRoYXQgaXQgY2FuIGFjY2VzcyBwcml2YXRlIG1lbWJlcnMgZS5nLgorICAgICAg
ICB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoKSBvciAgbV91cGRhdGluZ0Zyb21TdGF0ZU5v
ZGUuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1M6OnNjcm9sbGluZ05vZGUpOiBFeHBvc2UgdGhlIHNjcm9sbGluZyBub2RlIGZvcgorICAgICAg
ICBXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlLgorICAgICAgICAqIFVJUHJvY2Vzcy9TY3Jv
bGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW06IEFkZGVk
LgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKToKKyAgICAgICAgKFdlYktp
dDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6flNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MpOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwpOiBD
b2RlIGV4dHJhY3RlZAorICAgICAgICBmcm9tIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1MuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1M6OnNjcm9sbFdpbGxTdGFydCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxEaWRFbmQpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6
c2Nyb2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsVmlld0RpZFNjcm9s
bCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZSk6IERpdHRvLgorICAg
ICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyBmaWxlcyB0byB0aGUKKyAgICAgICAgYnVpbGQgc3lz
dGVtLgorCiAyMDE3LTA3LTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBJY29uIGxvYWRlciBlcnJvciBvbiBzdGFydHVwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1MuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Njcm9sbGlu
Zy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oCmluZGV4IDAyYzhk
ZTkxOGM3Li4yMGM1YzQyN2E0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgKQEAgLTM0LDYgKzM0LDggQEAKIE9CSkNfQ0xBU1MgQ0FM
YXllcjsKIE9CSkNfQ0xBU1MgV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZTsKIAorY2xhc3Mg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzsKKwogbmFtZXNwYWNlIFdlYktp
dCB7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MgOiBwdWJs
aWMgV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSB7CkBAIC00MSwx
MiArNDMsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TPiBjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZSYsIFdlYkNvcmU6
OlNjcm9sbGluZ05vZGVJRCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUygpOwogCi0gICAgdm9pZCBvdmVyZmxvd1Njcm9sbFdpbGxTdGFydCgpOwot
ICAgIHZvaWQgb3ZlcmZsb3dTY3JvbGxEaWRFbmQoKTsKLSAgICB2b2lkIG92ZXJmbG93U2Nyb2xs
Vmlld1dpbGxTdGFydFBhbkdlc3R1cmUoKTsKLSAgICB2b2lkIHNjcm9sbFZpZXdEaWRTY3JvbGwo
Y29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGJvb2wgaW5Vc2VySW50ZXJhdGlvbik7Ci0gICAg
dm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZSh1bnNpZ25lZCBob3Jpem9udGFs
LCB1bnNpZ25lZCB2ZXJ0aWNhbCk7Ci0KICAgICBDQUxheWVyICpzY3JvbGxMYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXIuZ2V0KCk7IH0KIAogcHJpdmF0ZToKQEAgLTY2LDEzICs2
MiwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYkNv
cmU6OlBsYXRmb3JtV2hlZWxFdmVudCYpIG92ZXJyaWRlIHsgfQogCi0gICAgdm9pZCB1cGRhdGVD
aGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwotICAgIAog
ICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbExheWVyOwogICAgIFJldGFpblB0cjxDQUxh
eWVyPiBtX3Njcm9sbGVkQ29udGVudHNMYXllcjsKIAogICAgIFJldGFpblB0cjxXS092ZXJmbG93
U2Nyb2xsVmlld0RlbGVnYXRlPiBtX3Njcm9sbFZpZXdEZWxlZ2F0ZTsKLSAgICBib29sIG1fdXBk
YXRpbmdGcm9tU3RhdGVOb2RlOworICAgIHN0ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TPiBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZTsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
U2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TLm1tCmluZGV4IDQzM2QzOGU0MjUwLi42YmI1Y2M3MTU3YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5t
bQpAQCAtNDIsMzEgKzQyLDMzIEBACiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRz
SW5mby5oPgogI2VuZGlmCiAKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1MuaCIKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZhY2UgV0tP
dmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxVSVNjcm9sbFZpZXdEZWxlZ2F0
ZT4gewotICAgIFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyog
X3Njcm9sbGluZ1RyZWVOb2RlOworICAgIFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUyogX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGU7CiB9CiAKIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzSW5Vc2VySW50ZXJhY3Rpb24pIEJPT0wgaW5Vc2VySW50
ZXJhY3Rpb247CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlOihX
ZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MqKW5vZGU7CistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOihXZWJLaXQ6OlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MqKWRlbGVnYXRlOwogCiBAZW5kCiAK
IEBpbXBsZW1lbnRhdGlvbiBXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlCiAKLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlOihXZWJLaXQ6OlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MqKW5vZGUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNj
cm9sbGluZ1RyZWVOb2RlRGVsZWdhdGU6KFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUyopZGVsZWdhdGUKIHsKICAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUgPSBub2RlOworICAgICAgICBfc2Nyb2xsaW5n
VHJlZU5vZGVEZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0g
KHZvaWQpc2Nyb2xsVmlld0RpZFNjcm9sbDooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogewot
ICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+c2Nyb2xsVmlld0RpZFNjcm9sbChzY3JvbGxWaWV3LmNv
bnRlbnRPZmZzZXQsIF9pblVzZXJJbnRlcmFjdGlvbik7CisgICAgX3Njcm9sbGluZ1RyZWVOb2Rl
RGVsZWdhdGUtPnNjcm9sbFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCBf
aW5Vc2VySW50ZXJhY3Rpb24pOwogfQogCiAtICh2b2lkKXNjcm9sbFZpZXdXaWxsQmVnaW5EcmFn
Z2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwpAQCAtNzQsOCArNzYsOCBAQCAtICh2b2lk
KXNjcm9sbFZpZXdXaWxsQmVnaW5EcmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwog
ICAgIF9pblVzZXJJbnRlcmFjdGlvbiA9IFlFUzsKIAogICAgIGlmIChzY3JvbGxWaWV3LnBhbkdl
c3R1cmVSZWNvZ25pemVyLnN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuKQot
ICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPm92ZXJmbG93U2Nyb2xsVmlld1dpbGxTdGFydFBh
bkdlc3R1cmUoKTsKLSAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPm92ZXJmbG93U2Nyb2xsV2lsbFN0
YXJ0KCk7CisgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxWaWV3V2ls
bFN0YXJ0UGFuR2VzdHVyZSgpOworICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3Jv
bGxXaWxsU3RhcnQoKTsKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCkBAIC04NCwy
OCArODYsMjggQEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihVSVNjcm9sbFZp
ZXcgKilzY3JvbGxWaWV3IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICBDR0Zsb2F0IGhvcml6b250
YWxUYXJnZXQgPSB0YXJnZXRDb250ZW50T2Zmc2V0LT54OwogICAgIENHRmxvYXQgdmVydGljYWxU
YXJnZXQgPSB0YXJnZXRDb250ZW50T2Zmc2V0LT55OwogCi0gICAgdW5zaWduZWQgb3JpZ2luYWxI
b3Jpem9udGFsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlLT5jdXJyZW50SG9yaXpv
bnRhbFNuYXBQb2ludEluZGV4KCk7Ci0gICAgdW5zaWduZWQgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQ
b3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVlTm9kZS0+Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXgoKTsKKyAgICB1bnNpZ25lZCBvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gPSBfc2Ny
b2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRIb3Jpem9udGFs
U25hcFBvaW50SW5kZXgoKTsKKyAgICB1bnNpZ25lZCBvcmlnaW5hbFZlcnRpY2FsU25hcFBvc2l0
aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50
VmVydGljYWxTbmFwUG9pbnRJbmRleCgpOwogCi0gICAgaWYgKCFfc2Nyb2xsaW5nVHJlZU5vZGUt
Pmhvcml6b250YWxTbmFwT2Zmc2V0cygpLmlzRW1wdHkoKSkgeworICAgIGlmICghX3Njcm9sbGlu
Z1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldHMo
KS5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBv
dGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0KF9zY3JvbGxpbmdUcmVlTm9k
ZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCksIF9zY3JvbGxpbmdUcmVlTm9kZS0+aG9yaXpvbnRh
bFNuYXBPZmZzZXRSYW5nZXMoKSwgaG9yaXpvbnRhbFRhcmdldCwgdmVsb2NpdHkueCwgaW5kZXgp
OwotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBv
aW50SW5kZXgoaW5kZXgpOworICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBj
bG9zZXN0U25hcE9mZnNldChfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9k
ZSgpLmhvcml6b250YWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+
c2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCksIGhvcml6b250YWxU
YXJnZXQsIHZlbG9jaXR5LngsIGluZGV4KTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVs
ZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4
KGluZGV4KTsKICAgICAgICAgaWYgKGhvcml6b250YWxUYXJnZXQgPj0gMCAmJiBob3Jpem9udGFs
VGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNpemUud2lkdGgpCiAgICAgICAgICAgICB0YXJn
ZXRDb250ZW50T2Zmc2V0LT54ID0gcG90ZW50aWFsU25hcFBvc2l0aW9uOwogICAgIH0KIAotICAg
IGlmICghX3Njcm9sbGluZ1RyZWVOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkuaXNFbXB0eSgp
KSB7CisgICAgaWYgKCFfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgp
LnZlcnRpY2FsU25hcE9mZnNldHMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5k
ZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zm
c2V0KF9zY3JvbGxpbmdUcmVlTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5n
VHJlZU5vZGUtPnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpLCB2ZXJ0aWNhbFRhcmdldCwgdmVs
b2NpdHkueSwgaW5kZXgpOwotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNldEN1cnJlbnRW
ZXJ0aWNhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKKyAgICAgICAgZmxvYXQgcG90ZW50aWFsU25h
cFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXQoX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUt
PnNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCksIF9zY3JvbGxpbmdUcmVlTm9k
ZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCksIHZl
cnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS55LCBpbmRleCk7CisgICAgICAgIF9zY3JvbGxpbmdUcmVl
Tm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50
SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAodmVydGljYWxUYXJnZXQgPj0gMCAmJiB2ZXJ0aWNh
bFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLmhlaWdodCkKICAgICAgICAgICAgIHRh
cmdldENvbnRlbnRPZmZzZXQtPnkgPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CiAgICAgfQogCi0g
ICAgaWYgKG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQb3NpdGlvbiAhPSBfc2Nyb2xsaW5nVHJlZU5v
ZGUtPmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKQotICAgICAgICB8fCBvcmlnaW5h
bFZlcnRpY2FsU25hcFBvc2l0aW9uICE9IF9zY3JvbGxpbmdUcmVlTm9kZS0+Y3VycmVudFZlcnRp
Y2FsU25hcFBvaW50SW5kZXgoKSkgewotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJl
bnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKF9zY3JvbGxpbmdUcmVlTm9kZS0+Y3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleCgpLCBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJlbnRWZXJ0
aWNhbFNuYXBQb2ludEluZGV4KCkpOworICAgIGlmIChvcmlnaW5hbEhvcml6b250YWxTbmFwUG9z
aXRpb24gIT0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkKKyAgICAgICAgfHwgb3JpZ2luYWxWZXJ0aWNh
bFNuYXBQb3NpdGlvbiAhPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9k
ZSgpLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpIHsKKyAgICAgICAgX3Njcm9sbGlu
Z1RyZWVOb2RlRGVsZWdhdGUtPmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKF9zY3Jv
bGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudEhvcml6b250YWxT
bmFwUG9pbnRJbmRleCgpLCBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9k
ZSgpLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOwogICAgIH0KIH0KICNlbmRpZgpA
QCAtMTE0LDggKzExNiw4IEBAIC0gKHZvaWQpc2Nyb2xsVmlld0RpZEVuZERyYWdnaW5nOihVSVNj
cm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpbGxEZWNlbGVyYXRlOihCT09MCiB7CiAgICAgaWYgKF9p
blVzZXJJbnRlcmFjdGlvbiAmJiAhd2lsbERlY2VsZXJhdGUpIHsKICAgICAgICAgX2luVXNlcklu
dGVyYWN0aW9uID0gTk87Ci0gICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+c2Nyb2xsVmlld0Rp
ZFNjcm9sbChzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQsIF9pblVzZXJJbnRlcmFjdGlvbik7Ci0g
ICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+b3ZlcmZsb3dTY3JvbGxEaWRFbmQoKTsKKyAgICAg
ICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbFZpZXdEaWRTY3JvbGwoc2Nyb2xs
Vmlldy5jb250ZW50T2Zmc2V0LCBfaW5Vc2VySW50ZXJhY3Rpb24pOworICAgICAgICBfc2Nyb2xs
aW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsRGlkRW5kKCk7CiAgICAgfQogfQogCkBAIC0xMjMs
OCArMTI1LDggQEAgLSAodm9pZClzY3JvbGxWaWV3RGlkRW5kRGVjZWxlcmF0aW5nOihVSVNjcm9s
bFZpZXcgKilzY3JvbGxWaWV3CiB7CiAgICAgaWYgKF9pblVzZXJJbnRlcmFjdGlvbikgewogICAg
ICAgICBfaW5Vc2VySW50ZXJhY3Rpb24gPSBOTzsKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2Rl
LT5zY3JvbGxWaWV3RGlkU2Nyb2xsKHNjcm9sbFZpZXcuY29udGVudE9mZnNldCwgX2luVXNlcklu
dGVyYWN0aW9uKTsKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5vdmVyZmxvd1Njcm9sbERp
ZEVuZCgpOworICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsVmlld0Rp
ZFNjcm9sbChzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQsIF9pblVzZXJJbnRlcmFjdGlvbik7Cisg
ICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxEaWRFbmQoKTsKICAgICB9
CiB9CiAKQEAgLTEzOSw4ICsxNDEsOCBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUwogCiBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFdl
YkNvcmU6OlNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkKLSAgICAsIG1fdXBkYXRpbmdG
cm9tU3RhdGVOb2RlKGZhbHNlKQogeworICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLnJlc2V0
KG5ldyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKCp0aGlzKSk7CiB9CiAK
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6On5TY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TKCkKQEAgLTE4MCw3ICsxODIsNyBAQCB2b2lkIFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihj
b25zdCBTY3JvbAogewogICAgIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OmNv
bW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihzdGF0ZU5vZGUpOwogCi0gICAgU2V0Rm9yU2NvcGU8Ym9v
bD4gdXBkYXRpbmdDaGFuZ2UobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUsIHRydWUpOworICAgIFNl
dEZvclNjb3BlPGJvb2w+IHVwZGF0aW5nQ2hhbmdlKG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLT5t
X3VwZGF0aW5nRnJvbVN0YXRlTm9kZSwgdHJ1ZSk7CiAKICAgICBjb25zdCBhdXRvJiBzY3JvbGxp
bmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZT4oc3RhdGVOb2RlKTsKIApAQCAtMTk1LDcgKzE5Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNj
cm9sCiAKICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHko
U2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxMYXllcikpIHsKICAgICAgICAgICAg
IGlmICghbV9zY3JvbGxWaWV3RGVsZWdhdGUpCi0gICAgICAgICAgICAgICAgbV9zY3JvbGxWaWV3
RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBhbGxvY10g
aW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZTp0aGlzXSk7CisgICAgICAgICAgICAgICAgbV9zY3Jv
bGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOm1fc2Nyb2xsaW5nTm9kZURl
bGVnYXRlLmdldCgpXSk7CiAKICAgICAgICAgICAgIHNjcm9sbFZpZXcuc2Nyb2xsc1RvVG9wID0g
Tk87CiAgICAgICAgICAgICBzY3JvbGxWaWV3LmRlbGVnYXRlID0gbV9zY3JvbGxWaWV3RGVsZWdh
dGUuZ2V0KCk7CkBAIC0yNTksNTUgKzI2MSwxMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxvYXRQbwog
ewogICAgIFttX3Njcm9sbExheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKC1zY3JvbGxQb3Np
dGlvbi54KCkgKyBzY3JvbGxPcmlnaW4oKS54KCksIC1zY3JvbGxQb3NpdGlvbi55KCkgKyBzY3Jv
bGxPcmlnaW4oKS55KCkpXTsKIAotICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3Jv
bGxQb3NpdGlvbik7CisgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUtPnVwZGF0ZUNoaWxkTm9k
ZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwo
Y29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCiB7Ci0gICAgdXBkYXRlQ2hpbGROb2Rl
c0FmdGVyU2Nyb2xsKHNjcm9sbFBvc2l0aW9uKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3Qg
RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCi17Ci0gICAgaWYgKCFtX2NoaWxkcmVuKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJlY3QgPSBzY3JvbGxp
bmdUcmVlKCkuZml4ZWRQb3NpdGlvblJlY3QoKTsKLSAgICBGbG9hdFNpemUgc2Nyb2xsRGVsdGEg
PSBsYXN0Q29tbWl0dGVkU2Nyb2xsUG9zaXRpb24oKSAtIHNjcm9sbFBvc2l0aW9uOwotCi0gICAg
Zm9yIChhdXRvJiBjaGlsZCA6ICptX2NoaWxkcmVuKQotICAgICAgICBjaGlsZC0+dXBkYXRlTGF5
ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZSgqdGhpcywgZml4ZWRQb3NpdGlvblJlY3QsIHNjcm9sbERl
bHRhKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpv
dmVyZmxvd1Njcm9sbFdpbGxTdGFydCgpCi17Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGlu
Z1RyZWVOb2RlV2lsbFN0YXJ0U2Nyb2xsKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUzo6b3ZlcmZsb3dTY3JvbGxEaWRFbmQoKQotewotICAgIHNjcm9s
bGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZURpZEVuZFNjcm9sbCgpOwotfQotCi12b2lkIFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6Om92ZXJmbG93U2Nyb2xsVmlld1dp
bGxTdGFydFBhbkdlc3R1cmUoKQotewotICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVl
Tm9kZVdpbGxTdGFydFBhbkdlc3R1cmUoKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxWaWV3RGlkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQm
IHNjcm9sbFBvc2l0aW9uLCBib29sIGluVXNlckludGVyYXRpb24pCi17Ci0gICAgaWYgKG1fdXBk
YXRpbmdGcm9tU3RhdGVOb2RlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzY3JvbGxpbmdUcmVl
KCkuc2Nyb2xsUG9zaXRpb25DaGFuZ2VkVmlhRGVsZWdhdGVkU2Nyb2xsaW5nKHNjcm9sbGluZ05v
ZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwgaW5Vc2VySW50ZXJhdGlvbik7Ci19Ci0KLXZvaWQgU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y3VycmVudFNuYXBQb2ludEluZGlj
ZXNEaWRDaGFuZ2UodW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpCi17Ci0g
ICAgaWYgKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0g
ICAgc2Nyb2xsaW5nVHJlZSgpLmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHNjcm9s
bGluZ05vZGVJRCgpLCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7CisgICAgbV9zY3JvbGxpbmdOb2Rl
RGVsZWdhdGUtPnVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAuLjZmZWM1MjRmOTJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEg
Uy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lm
IFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2luY2x1ZGUgPFdl
YkNvcmUvSW50UmVjdC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZTsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M7CisKK2NsYXNzIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MgeworICAgIGZyaWVuZCBjbGFzcyBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOworCitwdWJsaWM6CisgICAgflNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MoKTsKKworICAgIFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdOb2RlKCkgeyByZXR1cm4gbV9zY3JvbGxpbmdOb2RlOyB9
CisgICAgdm9pZCBzY3JvbGxXaWxsU3RhcnQoKSBjb25zdDsKKyAgICB2b2lkIHNjcm9sbERpZEVu
ZCgpIGNvbnN0OworICAgIHZvaWQgc2Nyb2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUoKSBjb25z
dDsKKyAgICB2b2lkIHNjcm9sbFZpZXdEaWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2lu
dCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgaW5Vc2VySW50ZXJhdGlvbikgY29uc3Q7CisgICAgdm9p
ZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZSh1bnNpZ25lZCBob3Jpem9udGFsLCB1
bnNpZ25lZCB2ZXJ0aWNhbCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZXhwbGljaXQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyhXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZSYpOworICAgIHZvaWQgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKGNvbnN0
IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsKKworICAgIFdlYkNvcmU6OlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBtX3Njcm9sbGluZ05vZGU7CisgICAgYm9vbCBtX3Vw
ZGF0aW5nRnJvbVN0YXRlTm9kZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Njcm9s
bGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTU4NzMwNTcxZjYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5oIgorCisjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoQVNZTkNf
U0NST0xMSU5HKQorCisjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oPgorCit1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1M6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mo
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUpCisgICAgOiBtX3Njcm9s
bGluZ05vZGUoc2Nyb2xsaW5nTm9kZSkKKyAgICAsIG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlKGZh
bHNlKQoreworfQorCitTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp+U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUygpCit7Cit9CisKK3ZvaWQgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Ny
b2xsKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQoreworICAgIGlmICghbV9zY3Jv
bGxpbmdOb2RlLmNoaWxkcmVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0UmVjdCBm
aXhlZFBvc2l0aW9uUmVjdCA9IG1fc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdUcmVlKCkuZml4ZWRQ
b3NpdGlvblJlY3QoKTsKKyAgICBGbG9hdFNpemUgc2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGluZ05v
ZGUubGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkgLSBzY3JvbGxQb3NpdGlvbjsKKworICAg
IGZvciAoYXV0byYgY2hpbGQgOiAqbV9zY3JvbGxpbmdOb2RlLmNoaWxkcmVuKCkpCisgICAgICAg
IGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKG1fc2Nyb2xsaW5nTm9kZSwg
Zml4ZWRQb3NpdGlvblJlY3QsIHNjcm9sbERlbHRhKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxXaWxsU3RhcnQoKSBjb25zdAoreworICAg
IG1fc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3Rh
cnRTY3JvbGwoKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TOjpzY3JvbGxEaWRFbmQoKSBjb25zdAoreworICAgIG1fc2Nyb2xsaW5nTm9kZS5zY3JvbGxp
bmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVEaWRFbmRTY3JvbGwoKTsKK30KKwordm9pZCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxWaWV3V2lsbFN0YXJ0UGFu
R2VzdHVyZSgpIGNvbnN0Cit7CisgICAgbV9zY3JvbGxpbmdOb2RlLnNjcm9sbGluZ1RyZWUoKS5z
Y3JvbGxpbmdUcmVlTm9kZVdpbGxTdGFydFBhbkdlc3R1cmUoKTsKK30KKwordm9pZCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxWaWV3RGlkU2Nyb2xsKGNvbnN0
IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29sIGluVXNlckludGVyYXRpb24pIGNvbnN0
Cit7CisgICAgaWYgKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbFBvc2l0aW9uQ2hhbmdl
ZFZpYURlbGVnYXRlZFNjcm9sbGluZyhtX3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCks
IHNjcm9sbFBvc2l0aW9uLCBpblVzZXJJbnRlcmF0aW9uKTsKK30KKwordm9pZCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENo
YW5nZSh1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkgY29uc3QKK3sKKyAg
ICBpZiAobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
c2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdUcmVlKCkuY3VycmVudFNuYXBQb2ludEluZGljZXNEaWRD
aGFuZ2UobV9zY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCBob3Jpem9udGFsLCB2ZXJ0
aWNhbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0o
SU9TKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWVjOGQzN2FmZDguLmUxNjcwOGQ5YzZm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTg4LDYgKzg4LDggQEAKIAkJMEY1RTIwMDQxOEU3NzA1MTAwM0VDM0U1IC8qIFBsYXRmb3Jt
Q0FBbmltYXRpb25SZW1vdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNUUyMDAyMThFNzcwNTEwMDNFQzNFNSAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlLmggKi87IH07CiAJCTBGODUwRkU2MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3Jt
YW5jZUxvZ2dpbmdDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY4NTBGRTQxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9n
Z2luZ0NsaWVudC5jcHAgKi87IH07CiAJCTBGODUwRkU3MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQ
ZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGODUwRkU1MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5j
ZUxvZ2dpbmdDbGllbnQuaCAqLzsgfTsKKwkJQUM5MzFDMUMxOEM1NzExOTAwREJBN0MzIC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFDOTMxQzFBMThDNTcxMTkwMERCQTdDMyAvKiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggKi87IH07CisJCUFDOTMxQzFE
MThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUM5MzFD
MUIxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MubW0gKi87IH07CiAJCTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjkzMUMxQTE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oICovOyB9OwogCQkwRjkzMUMxRDE4QzU3MTE5MDBE
QkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMxQzFCMThDNTcxMTkw
MERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tICovOyB9
OwogCQkwRkI2NTkyMzEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI2NTkyMjEyMDhCNERC
MDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi87IH07CkBAIC0yMjQzLDYgKzIyNDUsOCBA
QAogCQkwRjcwN0M3OTFBMUZFRUEzMDBEQTdBNDUgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5n
UGVyZm9ybWFuY2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90
ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjg1MEZFNDFFRDdDMzlGMDBGQjc3QTcgLyogV2ViUGVyZm9ybWFuY2VMb2dn
aW5nQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBl
cmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGODUwRkU1MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGVyZm9ybWFuY2VMb2dnaW5n
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFDOTMxQzFBMThDNTcxMTkw
MERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1MuaDsgcGF0aCA9IFNjcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQzkzMUMxQjE4
QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW07IHBhdGggPSBTY3JvbGxpbmcvaW9zL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGOTMxQzFBMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaDsgcGF0aCA9IFNjcm9sbGluZy9pb3Mv
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjkzMUMxQjE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW07IHBhdGgg
PSBTY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjY1OTIyMTIwOEI0REIwMDQ0ODE2QyAv
KiBEcmF3aW5nQXJlYUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJh
d2luZ0FyZWFJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTcyLDYgKzQ1
NzYsOCBAQAogCQkwRjkzMUMxOTE4QzU3MTExMDBEQkE3QzMgLyogaW9zICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBQzkzMUMxQTE4QzU3MTE5MDBEQkE3
QzMgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oICovLAorCQkJCUFD
OTMxQzFCMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TLm1tICovLAogCQkJCTBGOTMxQzFBMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggKi8sCiAJCQkJMEY5MzFDMUIxOEM1NzExOTAw
REJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gKi8sCiAJ
CQkpOwpAQCAtODUzOCw2ICs4NTQ0LDcgQEAKIAkJCQlCQzJEMDIxNzEyQUM0MUNCMDBFNzMyQTMg
LyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUI0
QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFy
YW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUM5MzFDMUMxOEM1NzExOTAwREJBN0MzIC8q
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQxMzA1NDEzODJFQUMwMDAzNTFF
REQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQxMzA1NjEz
ODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDEwOSw2ICsxMDExNiw3IEBACiAJCQkJMUFBQjRBQUExMjk2RjE1NDAwMjM5NTJGIC8qIFNh
bmRib3hFeHRlbnNpb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUU1NTJDNDE2QUUwNjVG
MDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpYXRpb25QYXJhbWV0ZXJzTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTE5QkRBOEIxOTM2OEQ0NjAwQjk3RjU3IC8qIFNhbmRib3hVdGlsaXRpZXMu
bW0gaW4gU291cmNlcyAqLywKKwkJCQlBQzkzMUMxRDE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBG
OTMxQzFEMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEMTMwNTMxMzgyRUFDMDAwMzUxRUREIC8q
IFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUQxMzA1NTEzODJF
QUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgaW4gU291cmNlcyAqLywKLS0g
CjIuMTEuMCAoQXBwbGUgR2l0LTgxKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317226</attachid>
            <date>2017-08-04 01:36:09 -0700</date>
            <delta_ts>2017-08-04 02:19:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0002-Bug-174097-Introduce-ScrollingTreeScrollingNodeDeleg.patch</filename>
            <type>text/plain</type>
            <size>32421</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSAyNGNkY2FiZmQzMzRhMzI1YmYyNDMzMWM4MjA4ZjJmNGIyNTY2MmIwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBGcmVkZXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KRGF0
ZTogVGh1LCAyNyBKdWwgMjAxNyAxMToyNDo0MiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMi80XSBC
dWcgMTc0MDk3IC0gSW50cm9kdWNlCiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBvdmVyZmxvdyBhbmQKIGZyYW1lIHNjcm9sbGluZwoK
LS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAxMiArKysKIC4uLi9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
ICAgIHwgIDEwICsrCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB8ICA2NCArKysrKysrKysrKysrCiAuLi4vaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MuaCAgICB8ICAxMiArLS0KIC4uLi9pb3MvU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAgIHwgMTA0ICsrKysrKy0tLS0tLS0tLS0tLS0tLQog
Li4uL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggICAgfCAgNjMg
KysrKysrKysrKysrKwogLi4uL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLm1tICAgfCAgOTggKysrKysrKysrKysrKysrKysrKwogU291cmNlL1dlYktpdC9XZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgICAgfCAgIDggKysKIDggZmlsZXMgY2hhbmdlZCwg
Mjg3IGluc2VydGlvbnMoKyksIDg0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
Lm1tCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCmluZGV4IDVhMDAwNDRiNjM0Li4wNmY4ZWE0ZmIzNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE3LTA3LTA0ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlh
LmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUyB0byBzaGFyZSBjb2RlIGJldHdlZW4gb3ZlcmZsb3cgYW5kIGZyYW1lIHNjcm9sbGlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDk3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3
IHRlc3RzLCBiZWhhdmlvciB1bmNoYW5nZWQuCisKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOiBNYWtlIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1Mgc28KKyAgICAgICAgaXQgY2FuIGFjY2VzcyB0aGUgcHJpdmF0ZSBtZW1i
ZXJzIG9mIHRoZSBzY3JvbGxpbmcgbm9kZS4KKwogMjAxNy0wNy0yNyAgWGFiaWVyIFJvZHJpZ3Vl
eiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdW0VN
RV0gTm90IGhhdmluZyBhIGtleSBpZCBidWZmZXIgc2hvdWxkIG5vdCBhbHdheXMgZXJyb3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5oCmluZGV4IDM1OTRiMTA4NmVjLi40NDM2YzhmMTMyYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5oCkBAIC0zMywxMiArMzMsMjIgQEAKICNpbmNsdWRlICJTY3JvbGxpbmdDb29y
ZGluYXRvci5oIgogI2luY2x1ZGUgIlNjcm9sbGluZ1RyZWVOb2RlLmgiCiAKKyNpZiBQTEFURk9S
TShJT1MpCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1M7Cit9CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBTY3JvbGxpbmdUcmVlOwogY2xhc3MgU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOwogCiBj
bGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSA6IHB1YmxpYyBTY3JvbGxpbmdUcmVlTm9k
ZSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGZyaWVuZCBjbGFzcyBXZWJLaXQ6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M7CisjZW5kaWYKKwogcHVibGljOgogICAgIHZp
cnR1YWwgflNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMjk1NzAw
ZGNhMWYuLjhiOGYzNzU1YjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDE3LTA3LTA0
ICBGcmVkZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2Ug
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyB0byBzaGFyZSBjb2RlIGJldHdl
ZW4gb3ZlcmZsb3cgYW5kIGZyYW1lIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MgdGhhdCBjYW4gYmUgdXNlZCBieQorICAg
ICAgICBXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIHRvIGNvbW11bmljYXRlIHRvIHRoZSBz
Y3JvbGxpbmcgdHJlZSBhbmQgbm9kZXMuIEl0IGNhbiBhbHNvIGJlCisgICAgICAgIHVzZWQgYXMg
YSBoZWxwZXIgY2xhc3MgYnkgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy4g
Rm9yIG5vdywgb25seSB0aGUgbm9uLQorICAgICAgICBvdmVycmlkZW4gbWVtYmVyIGZ1bmN0aW9u
cyBvZiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TIGFyZSBtb3ZlZCB0byB0
aGF0IG5ldworICAgICAgICBjbGFzcy4gSW4gZm9sbG93LXVwIGNvbW1pdHMsIFdLT3ZlcmZsb3dT
Y3JvbGxWaWV3RGVsZWdhdGUgY2FuIGJlY29tZSBhIGdlbmVyaWMKKyAgICAgICAgU2Nyb2xsVmll
d0RlbGVnYXRlIGFuZCBtb3JlIGNvZGUgY2FuIGJlIG1vdmVkIGludG8gdGhlIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MKKyAgICAgICAgZmlsZS4gRnJhbWUgc2Nyb2xsaW5n
IG5vZGVzIHdpbGwgdGhlbiBiZSBhYmxlIHRvIHNoYXJlIHRoZSBzYW1lIFVJIGNvZGUgYXMgb3Zl
cmZsb3c6YXV0byB3aGVuCisgICAgICAgIGlPUyBmcmFtZSBzY3JvbGxpbmcgaXMgaW1wbGVtZW50
ZWQgKGJ1ZyAxNDkyNjQpLgorCisgICAgICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oOiBNb3ZlIG5vbi1vdmVycmlkZW4g
bWVtYmVyCisgICAgICAgIGZ1bmN0aW9ucyBhbmQgbV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUgaW50
byB0aGUgZGVsZWdhdGUgY2xhc3MuIEFsc28gZGVmaW5lIGEgbWVtYmVyIHRvIHN0b3JlCisgICAg
ICAgIHRoYXQgZGVsZWdhdGUuCisgICAgICAgICogVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbTogVXNlIHRoZSBub2RlIGRlbGVn
YXRlIHRvCisgICAgICAgIGNvbW11bmljYXRlIHRvIHRoZSBzY3JvbGxpbmcgdHJlZSBhbmQgbm9k
ZS4KKyAgICAgICAgKC1bV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBpbml0V2l0aFNjcm9s
bGluZ1RyZWVOb2RlRGVsZWdhdGU6XSk6IEluaXQgd2l0aCBhIGRlbGVnYXRlLgorICAgICAgICAo
LVtXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdEaWRTY3JvbGw6XSk6IENh
bGwgdGhlIGRlbGVnYXRlIGZ1bmN0aW9uLgorICAgICAgICAoLVtXS092ZXJmbG93U2Nyb2xsVmll
d0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsQmVnaW5EcmFnZ2luZzpdKTogRGl0dG8uCisgICAgICAg
ICgtW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgc2Nyb2xsVmlld1dpbGxFbmREcmFnZ2lu
Zzp3aXRoVmVsb2NpdHk6dGFyZ2V0Q29udGVudE9mZnNldDpdKToKKyAgICAgICAgVXNlIHRoZSBk
ZWxlZ2F0ZSBmdW5jdGlvbnMgb3IgcGFzcyBieSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TOjpzY3JvbGxpbmdOb2RlKCkuCisgICAgICAgICgtW1dLT3ZlcmZsb3dTY3JvbGxW
aWV3RGVsZWdhdGUgc2Nyb2xsVmlld0RpZEVuZERyYWdnaW5nOndpbGxEZWNlbGVyYXRlOl0pOiBV
c2UgdGhlIGRlbGVnYXRlCisgICAgICAgIGZ1bmN0aW9ucy4KKyAgICAgICAgKC1bV0tPdmVyZmxv
d1Njcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3RGlkRW5kRGVjZWxlcmF0aW5nOl0pOiBEaXR0
by4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyk6CisgICAgICAgIEluaXQg
dGhlIGRlbGVnYXRlIGZvciB0aGlzIGNsYXNzLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4pOiBV
c2UgdGhlIGRlbGVnYXRlLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKTogVXNlIHRoZSBkZWxlZ2F0
ZQorICAgICAgICBmdW5jdGlvbi4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwpOiBE
aXR0by4KKyAgICAgICAgKC1bV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBpbml0V2l0aFNj
cm9sbGluZ1RyZWVOb2RlOl0pOiBEZWxldGVkLiBUaGlzIGlzIHJlbmFtZWQKKyAgICAgICAgaW5p
dFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlIGFuZCBhY2NlcHRzIGEgZGVsZWdhdGUuCisg
ICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnVw
ZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbCk6IERlbGV0ZWQuIE1vdmVkCisgICAgICAgIHRvIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuCisgICAgICAgIChXZWJLaXQ6OlNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6Om92ZXJmbG93U2Nyb2xsV2lsbFN0
YXJ0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1M6Om92ZXJmbG93U2Nyb2xsRGlkRW5kKTogRGl0dG8uCisgICAgICAgIChXZWJL
aXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6Om92ZXJmbG93U2Nyb2xs
Vmlld1dpbGxTdGFydFBhbkdlc3R1cmUpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6c2Nyb2xsVmlld0RpZFNjcm9sbCk6IERp
dHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TOjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZSk6IERpdHRvLgorICAgICAgICAq
IFVJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MuaDogQWRkZWQuIE5ldyBkZWxlZ2F0ZSBjbGFzcworICAgICAgICBmb3IgU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy4gVGhlIG1lbWJlcnMgdXNlZCBieSBXS092ZXJm
bG93U2Nyb2xsVmlld0RlbGVnYXRlCisgICAgICAgIGFyZSBwdWJsaWMgYW5kIHRoZSBvdGhlcnMg
YXJlIHByaXZhdGUuIFRoaXMgY2xhc3MgaXMgYSBmcmllbmQgb2YKKyAgICAgICAgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyBzbyB0aGF0IGl0IGNhbiBhY2Nlc3MgcHJpdmF0
ZSBtZW1iZXJzIGUuZy4KKyAgICAgICAgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKCkgb3Ig
IG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxpbmdOb2RlKTogRXhwb3NlIHRoZSBzY3Jv
bGxpbmcgbm9kZSBmb3IKKyAgICAgICAgV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZS4KKyAg
ICAgICAgKiBVSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLm1tOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUyk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1M6On5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKToKKyAgICAgICAg
KFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6dXBkYXRlQ2hp
bGROb2Rlc0FmdGVyU2Nyb2xsKTogQ29kZSBleHRyYWN0ZWQKKyAgICAgICAgZnJvbSBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxXaWxsU3RhcnQpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6
c2Nyb2xsRGlkRW5kKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNjcm9sbFZpZXdXaWxsU3RhcnRQYW5HZXN0dXJlKTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1M6OnNjcm9sbFZpZXdEaWRTY3JvbGwpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y3VycmVudFNuYXBQb2ludEluZGljZXNE
aWRDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajogQWRkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MgZmlsZXMgdG8g
dGhlCisgICAgICAgIGJ1aWxkIHN5c3RlbS4KKwogMjAxNy0wNy0yNiAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBBUEkg
dGVzdHMgZmFpbCBvbiBFbCBDYXBpdGFuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9T
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAppbmRleCAwMmM4ZGU5MThjNy4uMjBjNWM0MjdhNGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uy5oCkBAIC0zNCw2ICszNCw4IEBACiBPQkpDX0NMQVNTIENBTGF5ZXI7CiBPQkpDX0NMQVNTIFdL
T3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGU7CiAKK2NsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1M7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TIDogcHVibGljIFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUgewpAQCAtNDEsMTIgKzQzLDYgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUz4gY3Jl
YXRlKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUmLCBXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQpOwog
ICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MoKTsKIAot
ICAgIHZvaWQgb3ZlcmZsb3dTY3JvbGxXaWxsU3RhcnQoKTsKLSAgICB2b2lkIG92ZXJmbG93U2Ny
b2xsRGlkRW5kKCk7Ci0gICAgdm9pZCBvdmVyZmxvd1Njcm9sbFZpZXdXaWxsU3RhcnRQYW5HZXN0
dXJlKCk7Ci0gICAgdm9pZCBzY3JvbGxWaWV3RGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmLCBib29sIGluVXNlckludGVyYXRpb24pOwotICAgIHZvaWQgY3VycmVudFNuYXBQb2lu
dEluZGljZXNEaWRDaGFuZ2UodW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwp
OwotCiAgICAgQ0FMYXllciAqc2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExh
eWVyLmdldCgpOyB9CiAKIHByaXZhdGU6CkBAIC02NiwxMyArNjIsMTEgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgaGFuZGxlV2hlZWxFdmVudChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZl
bnQmKSBvdmVycmlkZSB7IH0KIAotICAgIHZvaWQgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xs
KGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKLSAgICAKICAgICBSZXRhaW5QdHI8Q0FMYXll
cj4gbV9zY3JvbGxMYXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxlZENvbnRl
bnRzTGF5ZXI7CiAKICAgICBSZXRhaW5QdHI8V0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZT4g
bV9zY3JvbGxWaWV3RGVsZWdhdGU7Ci0gICAgYm9vbCBtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uz4gbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5t
bQppbmRleCA0Yzk5YTI1MzYyNi4uZjY0YzM2NjU2N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KQEAgLTQzLDMxICs0MywzMyBA
QAogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KICNlbmRpZgogCisj
aW1wb3J0ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgiCisKIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVs
ZWdhdGUgOiBOU09iamVjdCA8VUlTY3JvbGxWaWV3RGVsZWdhdGU+IHsKLSAgICBXZWJLaXQ6OlNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MqIF9zY3JvbGxpbmdUcmVlTm9kZTsK
KyAgICBXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MqIF9zY3Jv
bGxpbmdUcmVlTm9kZURlbGVnYXRlOwogfQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVy
PV9pc0luVXNlckludGVyYWN0aW9uKSBCT09MIGluVXNlckludGVyYWN0aW9uOwogCi0tIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZTooV2ViS2l0OjpTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TKilub2RlOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
U2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZTooV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TKilkZWxlZ2F0ZTsKIAogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tP
dmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTY3Jv
bGxpbmdUcmVlTm9kZTooV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TKilub2RlCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVn
YXRlOihXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MqKWRlbGVn
YXRlCiB7CiAgICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgX3Njcm9sbGlu
Z1RyZWVOb2RlID0gbm9kZTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUgPSBk
ZWxlZ2F0ZTsKIAogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKXNjcm9sbFZpZXdEaWRT
Y3JvbGw6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKIHsKLSAgICBfc2Nyb2xsaW5nVHJlZU5v
ZGUtPnNjcm9sbFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCBfaW5Vc2Vy
SW50ZXJhY3Rpb24pOworICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxWaWV3
RGlkU2Nyb2xsKHNjcm9sbFZpZXcuY29udGVudE9mZnNldCwgX2luVXNlckludGVyYWN0aW9uKTsK
IH0KIAogLSAodm9pZClzY3JvbGxWaWV3V2lsbEJlZ2luRHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAq
KXNjcm9sbFZpZXcKQEAgLTc1LDggKzc3LDggQEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbEJlZ2lu
RHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKICAgICBfaW5Vc2VySW50ZXJhY3Rp
b24gPSBZRVM7CiAKICAgICBpZiAoc2Nyb2xsVmlldy5wYW5HZXN0dXJlUmVjb2duaXplci5zdGF0
ZSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbikKLSAgICAgICAgX3Njcm9sbGluZ1Ry
ZWVOb2RlLT5vdmVyZmxvd1Njcm9sbFZpZXdXaWxsU3RhcnRQYW5HZXN0dXJlKCk7Ci0gICAgX3Nj
cm9sbGluZ1RyZWVOb2RlLT5vdmVyZmxvd1Njcm9sbFdpbGxTdGFydCgpOworICAgICAgICBfc2Ny
b2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUoKTsK
KyAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsV2lsbFN0YXJ0KCk7CiB9CiAK
ICNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQpAQCAtODUsMjggKzg3LDI4IEBAIC0gKHZvaWQp
c2Nyb2xsVmlld1dpbGxFbmREcmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldyB3aXRo
VmVsb2NpdHk6KENHUG9pCiAgICAgQ0dGbG9hdCBob3Jpem9udGFsVGFyZ2V0ID0gdGFyZ2V0Q29u
dGVudE9mZnNldC0+eDsKICAgICBDR0Zsb2F0IHZlcnRpY2FsVGFyZ2V0ID0gdGFyZ2V0Q29udGVu
dE9mZnNldC0+eTsKIAotICAgIHVuc2lnbmVkIG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQb3NpdGlv
biA9IF9zY3JvbGxpbmdUcmVlTm9kZS0+Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgp
OwotICAgIHVuc2lnbmVkIG9yaWdpbmFsVmVydGljYWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5n
VHJlZU5vZGUtPmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCk7CisgICAgdW5zaWduZWQg
b3JpZ2luYWxIb3Jpem9udGFsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdh
dGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCk7Cisg
ICAgdW5zaWduZWQgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVl
Tm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXgoKTsKIAotICAgIGlmICghX3Njcm9sbGluZ1RyZWVOb2RlLT5ob3Jpem9udGFsU25hcE9mZnNl
dHMoKS5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIV9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5z
Y3JvbGxpbmdOb2RlKCkuaG9yaXpvbnRhbFNuYXBPZmZzZXRzKCkuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24g
PSBjbG9zZXN0U25hcE9mZnNldChfc2Nyb2xsaW5nVHJlZU5vZGUtPmhvcml6b250YWxTbmFwT2Zm
c2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5vZGUtPmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCks
IGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngsIGluZGV4KTsKLSAgICAgICAgX3Njcm9sbGlu
Z1RyZWVOb2RlLT5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKKyAg
ICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXQoX3Nj
cm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25hcE9m
ZnNldHMoKSwgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5ob3Jp
em9udGFsU25hcE9mZnNldFJhbmdlcygpLCBob3Jpem9udGFsVGFyZ2V0LCB2ZWxvY2l0eS54LCBp
bmRleCk7CisgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2Rl
KCkuc2V0Q3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleChpbmRleCk7CiAgICAgICAgIGlm
IChob3Jpem9udGFsVGFyZ2V0ID49IDAgJiYgaG9yaXpvbnRhbFRhcmdldCA8PSBzY3JvbGxWaWV3
LmNvbnRlbnRTaXplLndpZHRoKQogICAgICAgICAgICAgdGFyZ2V0Q29udGVudE9mZnNldC0+eCA9
IHBvdGVudGlhbFNuYXBQb3NpdGlvbjsKICAgICB9CiAKLSAgICBpZiAoIV9zY3JvbGxpbmdUcmVl
Tm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpLmlzRW1wdHkoKSkgeworICAgIGlmICghX3Njcm9s
bGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNuYXBPZmZzZXRz
KCkuaXNFbXB0eSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGluZGV4OwotICAgICAgICBmbG9hdCBw
b3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0U25hcE9mZnNldChfc2Nyb2xsaW5nVHJlZU5v
ZGUtPnZlcnRpY2FsU25hcE9mZnNldHMoKSwgX3Njcm9sbGluZ1RyZWVOb2RlLT52ZXJ0aWNhbFNu
YXBPZmZzZXRSYW5nZXMoKSwgdmVydGljYWxUYXJnZXQsIHZlbG9jaXR5LnksIGluZGV4KTsKLSAg
ICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5zZXRDdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRl
eChpbmRleCk7CisgICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RT
bmFwT2Zmc2V0KF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkudmVy
dGljYWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5n
Tm9kZSgpLnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpLCB2ZXJ0aWNhbFRhcmdldCwgdmVsb2Np
dHkueSwgaW5kZXgpOworICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xs
aW5nTm9kZSgpLnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAg
ICAgaWYgKHZlcnRpY2FsVGFyZ2V0ID49IDAgJiYgdmVydGljYWxUYXJnZXQgPD0gc2Nyb2xsVmll
dy5jb250ZW50U2l6ZS5oZWlnaHQpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT55
ID0gcG90ZW50aWFsU25hcFBvc2l0aW9uOwogICAgIH0KIAotICAgIGlmIChvcmlnaW5hbEhvcml6
b250YWxTbmFwUG9zaXRpb24gIT0gX3Njcm9sbGluZ1RyZWVOb2RlLT5jdXJyZW50SG9yaXpvbnRh
bFNuYXBQb2ludEluZGV4KCkKLSAgICAgICAgfHwgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3NpdGlv
biAhPSBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkp
IHsKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5jdXJyZW50U25hcFBvaW50SW5kaWNlc0Rp
ZENoYW5nZShfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5k
ZXgoKSwgX3Njcm9sbGluZ1RyZWVOb2RlLT5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgp
KTsKKyAgICBpZiAob3JpZ2luYWxIb3Jpem9udGFsU25hcFBvc2l0aW9uICE9IF9zY3JvbGxpbmdU
cmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudEhvcml6b250YWxTbmFwUG9p
bnRJbmRleCgpCisgICAgICAgIHx8IG9yaWdpbmFsVmVydGljYWxTbmFwUG9zaXRpb24gIT0gX3Nj
cm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCgpKSB7CisgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5j
dXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0
ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKSwgX3Nj
cm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCgpKTsKICAgICB9CiB9CiAjZW5kaWYKQEAgLTExNSw4ICsxMTcsOCBAQCAt
ICh2b2lkKXNjcm9sbFZpZXdEaWRFbmREcmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmll
dyB3aWxsRGVjZWxlcmF0ZTooQk9PTAogewogICAgIGlmIChfaW5Vc2VySW50ZXJhY3Rpb24gJiYg
IXdpbGxEZWNlbGVyYXRlKSB7CiAgICAgICAgIF9pblVzZXJJbnRlcmFjdGlvbiA9IE5POwotICAg
ICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNjcm9sbFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5j
b250ZW50T2Zmc2V0LCBfaW5Vc2VySW50ZXJhY3Rpb24pOwotICAgICAgICBfc2Nyb2xsaW5nVHJl
ZU5vZGUtPm92ZXJmbG93U2Nyb2xsRGlkRW5kKCk7CisgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9k
ZURlbGVnYXRlLT5zY3JvbGxWaWV3RGlkU2Nyb2xsKHNjcm9sbFZpZXcuY29udGVudE9mZnNldCwg
X2luVXNlckludGVyYWN0aW9uKTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUt
PnNjcm9sbERpZEVuZCgpOwogICAgIH0KIH0KIApAQCAtMTI0LDggKzEyNiw4IEBAIC0gKHZvaWQp
c2Nyb2xsVmlld0RpZEVuZERlY2VsZXJhdGluZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwog
ewogICAgIGlmIChfaW5Vc2VySW50ZXJhY3Rpb24pIHsKICAgICAgICAgX2luVXNlckludGVyYWN0
aW9uID0gTk87Ci0gICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+c2Nyb2xsVmlld0RpZFNjcm9s
bChzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQsIF9pblVzZXJJbnRlcmFjdGlvbik7Ci0gICAgICAg
IF9zY3JvbGxpbmdUcmVlTm9kZS0+b3ZlcmZsb3dTY3JvbGxEaWRFbmQoKTsKKyAgICAgICAgX3Nj
cm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5j
b250ZW50T2Zmc2V0LCBfaW5Vc2VySW50ZXJhY3Rpb24pOworICAgICAgICBfc2Nyb2xsaW5nVHJl
ZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsRGlkRW5kKCk7CiAgICAgfQogfQogCkBAIC0xNDAsOCArMTQy
LDggQEAgUmVmPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M+IFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MKIAogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyhXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlLCBXZWJDb3JlOjpTY3JvbGxpbmdOb2Rl
SUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzY3Jv
bGxpbmdUcmVlLCBub2RlSUQpCi0gICAgLCBtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZShmYWxzZSkK
IHsKKyAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS5yZXNldChuZXcgU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUygqdGhpcykpOwogfQogCiBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TOjp+U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
UygpCkBAIC0xODEsNyArMTgzLDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2wKIHsKICAgICBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRy
ZW4oc3RhdGVOb2RlKTsKIAotICAgIFNldEZvclNjb3BlPGJvb2w+IHVwZGF0aW5nQ2hhbmdlKG1f
dXBkYXRpbmdGcm9tU3RhdGVOb2RlLCB0cnVlKTsKKyAgICBTZXRGb3JTY29wZTxib29sPiB1cGRh
dGluZ0NoYW5nZShtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+bV91cGRhdGluZ0Zyb21TdGF0ZU5v
ZGUsIHRydWUpOwogCiAgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2RlID0gZG93bmNh
c3Q8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KHN0YXRlTm9kZSk7CiAKQEAg
LTE5Niw3ICsxOTgsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbAogCiAgICAgICAgIGlmIChz
Y3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsTGF5ZXIpKSB7CiAgICAgICAgICAgICBpZiAoIW1fc2Nyb2xsVmlld0Rl
bGVnYXRlKQotICAgICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRvcHROUyhb
W1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Nyb2xsaW5nVHJl
ZU5vZGU6dGhpc10pOworICAgICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0RlbGVnYXRlID0gYWRv
cHROUyhbW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Nyb2xs
aW5nVHJlZU5vZGVEZWxlZ2F0ZTptX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS5nZXQoKV0pOwogCiAg
ICAgICAgICAgICBzY3JvbGxWaWV3LnNjcm9sbHNUb1RvcCA9IE5POwogICAgICAgICAgICAgc2Ny
b2xsVmlldy5kZWxlZ2F0ZSA9IG1fc2Nyb2xsVmlld0RlbGVnYXRlLmdldCgpOwpAQCAtMjYwLDYw
ICsyNjIsMTIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpz
ZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG8KIHsKICAgICBbbV9zY3JvbGxMYXll
ciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZSgtc2Nyb2xsUG9zaXRpb24ueCgpICsgc2Nyb2xsT3Jp
Z2luKCkueCgpLCAtc2Nyb2xsUG9zaXRpb24ueSgpICsgc2Nyb2xsT3JpZ2luKCkueSgpKV07CiAK
LSAgICB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoc2Nyb2xsUG9zaXRpb24pOworICAgIG1f
c2Nyb2xsaW5nTm9kZURlbGVnYXRlLT51cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoc2Nyb2xs
UG9zaXRpb24pOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1M6OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmIHNj
cm9sbFBvc2l0aW9uKQogewotICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQ
b3NpdGlvbik7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uzo6dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBv
c2l0aW9uKQotewotICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
RmxvYXRSZWN0IGZpeGVkUG9zaXRpb25SZWN0OwotICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9s
bGluZ05vZGUqIGZyYW1lTm9kZSA9IGVuY2xvc2luZ0ZyYW1lTm9kZSgpOwotICAgIGlmIChmcmFt
ZU5vZGUgJiYgZnJhbWVOb2RlLT5wYXJlbnQoKSkKLSAgICAgICAgZml4ZWRQb3NpdGlvblJlY3Qg
PSBmcmFtZU5vZGUtPmZpeGVkUG9zaXRpb25SZWN0KCk7Ci0gICAgZWxzZQotICAgICAgICBmaXhl
ZFBvc2l0aW9uUmVjdCA9IHNjcm9sbGluZ1RyZWUoKS5maXhlZFBvc2l0aW9uUmVjdCgpOwotICAg
IEZsb2F0U2l6ZSBzY3JvbGxEZWx0YSA9IGxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIC0g
c2Nyb2xsUG9zaXRpb247Ci0KLSAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hpbGRyZW4pCi0g
ICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0aGlzLCBmaXhl
ZFBvc2l0aW9uUmVjdCwgc2Nyb2xsRGVsdGEpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1M6Om92ZXJmbG93U2Nyb2xsV2lsbFN0YXJ0KCkKLXsKLSAgICBz
Y3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRTY3JvbGwoKTsKLX0KLQot
dm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpvdmVyZmxvd1Njcm9s
bERpZEVuZCgpCi17Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlRGlkRW5k
U2Nyb2xsKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uzo6b3ZlcmZsb3dTY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgpCi17Ci0gICAgc2Nyb2xs
aW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0UGFuR2VzdHVyZSgpOwotfQotCi12
b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnNjcm9sbFZpZXdEaWRT
Y3JvbGwoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgaW5Vc2VySW50ZXJh
dGlvbikKLXsKLSAgICBpZiAobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFEZWxlZ2F0
ZWRTY3JvbGxpbmcoc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uLCBpblVzZXJJbnRl
cmF0aW9uKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9T
OjpjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZSh1bnNpZ25lZCBob3Jpem9udGFsLCB1
bnNpZ25lZCB2ZXJ0aWNhbCkKLXsKLSAgICBpZiAobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUpCi0g
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzY3JvbGxpbmdUcmVlKCkuY3VycmVudFNuYXBQb2lu
dEluZGljZXNEaWRDaGFuZ2Uoc2Nyb2xsaW5nTm9kZUlEKCksIGhvcml6b250YWwsIHZlcnRpY2Fs
KTsKKyAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Ny
b2xsKHNjcm9sbFBvc2l0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TY3Jv
bGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNmZlYzUyNGY5MmIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKQorCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzsK
KworY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyB7CisgICAgZnJp
ZW5kIGNsYXNzIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M7CisKK3B1Ymxp
YzoKKyAgICB+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUygpOworCisgICAg
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUoKSB7IHJl
dHVybiBtX3Njcm9sbGluZ05vZGU7IH0KKyAgICB2b2lkIHNjcm9sbFdpbGxTdGFydCgpIGNvbnN0
OworICAgIHZvaWQgc2Nyb2xsRGlkRW5kKCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxWaWV3V2ls
bFN0YXJ0UGFuR2VzdHVyZSgpIGNvbnN0OworICAgIHZvaWQgc2Nyb2xsVmlld0RpZFNjcm9sbChj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBpblVzZXJJbnRl
cmF0aW9uKSBjb25zdDsKKyAgICB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdl
KHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBleHBsaWNpdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKFdl
YkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJik7CisgICAgdm9pZCB1cGRhdGVDaGls
ZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRp
b24pOworCisgICAgV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIG1fc2Nyb2xs
aW5nTm9kZTsKKyAgICBib29sIG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlOworfTsKKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Nyb2xs
aW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5k
MWRjNWUwZWQyNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQpAQCAt
MCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgiCisKKyNpZiBQTEFURk9S
TShJT1MpICYmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRlIDxXZWJDb3JlL1Nj
cm9sbGluZ1RyZWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsK
KworU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyhTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgc2Nyb2xs
aW5nTm9kZSkKKyAgICA6IG1fc2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdOb2RlKQorICAgICwgbV91
cGRhdGluZ0Zyb21TdGF0ZU5vZGUoZmFsc2UpCit7Cit9CisKK1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1M6On5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
KCkKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp1
cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRp
b24pCit7CisgICAgaWYgKCFtX3Njcm9sbGluZ05vZGUuY2hpbGRyZW4oKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRmxvYXRSZWN0IGZpeGVkUG9zaXRpb25SZWN0OworICAgIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGUqIGZyYW1lTm9kZSA9IG1fc2Nyb2xsaW5nTm9kZS5lbmNsb3Np
bmdGcmFtZU5vZGUoKTsKKyAgICBpZiAoZnJhbWVOb2RlICYmIGZyYW1lTm9kZS0+cGFyZW50KCkp
CisgICAgICBmaXhlZFBvc2l0aW9uUmVjdCA9IGZyYW1lTm9kZS0+Zml4ZWRQb3NpdGlvblJlY3Qo
KTsKKyAgICBlbHNlCisgICAgICBmaXhlZFBvc2l0aW9uUmVjdCA9IG1fc2Nyb2xsaW5nTm9kZS5z
Y3JvbGxpbmdUcmVlKCkuZml4ZWRQb3NpdGlvblJlY3QoKTsKKyAgICBGbG9hdFNpemUgc2Nyb2xs
RGVsdGEgPSBtX3Njcm9sbGluZ05vZGUubGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkgLSBz
Y3JvbGxQb3NpdGlvbjsKKworICAgIGZvciAoYXV0byYgY2hpbGQgOiAqbV9zY3JvbGxpbmdOb2Rl
LmNoaWxkcmVuKCkpCisgICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hh
bmdlKG1fc2Nyb2xsaW5nTm9kZSwgZml4ZWRQb3NpdGlvblJlY3QsIHNjcm9sbERlbHRhKTsKK30K
Kwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxXaWxs
U3RhcnQoKSBjb25zdAoreworICAgIG1fc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdUcmVlKCkuc2Ny
b2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRTY3JvbGwoKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxEaWRFbmQoKSBjb25zdAoreworICAgIG1f
c2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVEaWRFbmRTY3Jv
bGwoKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpz
Y3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgpIGNvbnN0Cit7CisgICAgbV9zY3JvbGxpbmdO
b2RlLnNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZVdpbGxTdGFydFBhbkdlc3R1cmUo
KTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3Jv
bGxWaWV3RGlkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29sIGlu
VXNlckludGVyYXRpb24pIGNvbnN0Cit7CisgICAgaWYgKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2Rl
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nVHJlZSgp
LnNjcm9sbFBvc2l0aW9uQ2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyhtX3Njcm9sbGluZ05v
ZGUuc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uLCBpblVzZXJJbnRlcmF0aW9uKTsK
K30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjdXJyZW50
U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZSh1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2
ZXJ0aWNhbCkgY29uc3QKK3sKKyAgICBpZiAobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdUcmVlKCkuY3VycmVu
dFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UobV9zY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJ
RCgpLCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAor
CisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOTg5
NTY2Yjg1ZWYuLjc1MTAyZTY1NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTg4LDYgKzg4LDggQEAKIAkJMEY1RTIwMDQxOEU3NzA1
MTAwM0VDM0U1IC8qIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUUyMDAyMThFNzcwNTEwMDNFQzNFNSAv
KiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmggKi87IH07CiAJCTBGODUwRkU2MUVEN0MzOUYw
MEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NTBGRTQxRUQ3QzM5RjAwRkI3N0E3
IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHAgKi87IH07CiAJCTBGODUwRkU3MUVE
N0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGODUwRkU1MUVEN0MzOUYwMEZC
NzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCAqLzsgfTsKKwkJQUM5MzFDMUMx
OEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFDOTMxQzFB
MThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
LmggKi87IH07CisJCUFDOTMxQzFEMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQUM5MzFDMUIxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gKi87IH07CiAJCTBGOTMxQzFDMThDNTcxMTkwMERC
QTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMUMxQTE4QzU3MTE5MDBE
QkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oICovOyB9Owog
CQkwRjkzMUMxRDE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGOTMxQzFCMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tICovOyB9OwogCQkwRkI2NTkyMzEyMDhCNERCMDA0NDgxNkMgLyogRHJh
d2luZ0FyZWFJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRkI2NTkyMjEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi87IH07
CkBAIC0yMjQzLDYgKzIyNDUsOCBAQAogCQkwRjcwN0M3OTFBMUZFRUEzMDBEQTdBNDUgLyogUmVt
b3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVyZm9ybWFuY2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxheWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjg1MEZFNDFFRDdDMzlGMDBGQjc3QTcg
LyogV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGODUwRkU1MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJm
b3JtYW5jZUxvZ2dpbmdDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUFDOTMxQzFBMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaDsgcGF0aCA9IFNjcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBQzkzMUMxQjE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW07IHBhdGggPSBT
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTMxQzFBMThDNTcxMTkwMERCQTdDMyAvKiBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaDsg
cGF0aCA9IFNjcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkzMUMxQjE4QzU3MTE5MDBEQkE3
QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MubW07IHBhdGggPSBTY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjY1
OTIyMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRHJhd2luZ0FyZWFJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00NTcyLDYgKzQ1NzYsOCBAQAogCQkwRjkzMUMxOTE4QzU3MTExMDBEQkE3QzMg
LyogaW9zICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlB
QzkzMUMxQTE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUy5oICovLAorCQkJCUFDOTMxQzFCMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tICovLAogCQkJCTBGOTMxQzFBMThDNTcxMTkw
MERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggKi8sCiAJ
CQkJMEY5MzFDMUIxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MubW0gKi8sCiAJCQkpOwpAQCAtODUzNyw2ICs4NTQzLDcgQEAKIAkJCQlCQzJE
MDIxNzEyQUM0MUNCMDBFNzMyQTMgLyogU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBQUI0QThEMTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5z
aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2Fu
ZGJveEluaXRpYWxpemF0aW9uUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUM5MzFD
MUMxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MUQxMzA1NDEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MUQxMzA1NjEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0
YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMDEwNyw2ICsxMDExNCw3IEBACiAJCQkJMUFBQjRBQUEx
Mjk2RjE1NDAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb25NYWMubW0gaW4gU291cmNlcyAqLywK
IAkJCQlFMUU1NTJDNDE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpYXRpb25QYXJh
bWV0ZXJzTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE5QkRBOEIxOTM2OEQ0NjAwQjk3RjU3
IC8qIFNhbmRib3hVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQlBQzkzMUMxRDE4QzU3
MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTBGOTMxQzFEMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEMTMw
NTMxMzgyRUFDMDAwMzUxRUREIC8qIFNlY0l0ZW1SZXF1ZXN0RGF0YS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MUQxMzA1NTEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5j
cHAgaW4gU291cmNlcyAqLywKLS0gCjIuMTEuMCAoQXBwbGUgR2l0LTgxKQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317228</attachid>
            <date>2017-08-04 02:19:41 -0700</date>
            <delta_ts>2017-09-04 09:48:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-174097-20170804111939.patch</filename>
            <type>text/plain</type>
            <size>32142</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwMjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzM4NjE2NGIzNzZhOWE2
NmFmZWQ5MDAyZjliMTJmNmM3NTlhZTkyYi4uMjIxZTMwYzI5ZTk5NWE4ZTNiNDFmM2ExNjIxY2Nj
YWI5OWY5Y2U3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE3LTA3LTA0ICBGcmVk
ZXJpYyBXYW5nICA8ZndhbmdAaWdhbGlhLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyB0byBzaGFyZSBjb2RlIGJldHdlZW4gb3Zl
cmZsb3cgYW5kIGZyYW1lIHNjcm9sbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTc0MDk3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBiZWhhdmlvciB1bmNoYW5nZWQuCisKKyAg
ICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oOiBNYWtl
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mgc28KKyAgICAgICAgaXQgY2Fu
IGFjY2VzcyB0aGUgcHJpdmF0ZSBtZW1iZXJzIG9mIHRoZSBzY3JvbGxpbmcgbm9kZS4KKwogMjAx
Ny0wOC0wNCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyB1c2VzIHRoZSB3cm9uZyBmaXhlZCBw
b3NpdGlvbiByZWN0YW5nbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggYjUxZmM3MTVjYjI0MWNkZmIzZmI5YzJjYTIz
NzNjYmY3MzcwOGZhYi4uNDc1NjZjMTM5YjRjY2VmZjhkZGU5NTcyMjRjYzc1MGU2NzU4YWNmZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxNy0wNy0wNCAgRnJlZGVyaWMgV2FuZyAgPGZ3
YW5nQGlnYWxpYS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MgdG8gc2hhcmUgY29kZSBiZXR3ZWVuIG92ZXJmbG93IGFuZCBmcmFt
ZSBzY3JvbGxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE3NDA5NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TIHRoYXQgY2FuIGJlIHVzZWQgYnkKKyAgICAgICAgV0tPdmVyZmxvd1Njcm9s
bFZpZXdEZWxlZ2F0ZSB0byBjb21tdW5pY2F0ZSB0byB0aGUgc2Nyb2xsaW5nIHRyZWUgYW5kIG5v
ZGVzLiBJdCBjYW4gYWxzbyBiZQorICAgICAgICB1c2VkIGFzIGEgaGVscGVyIGNsYXNzIGJ5IFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuIEZvciBub3csIG9ubHkgdGhlIG5v
bi0KKyAgICAgICAgb3ZlcnJpZGVuIG1lbWJlciBmdW5jdGlvbnMgb2YgU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyBhcmUgbW92ZWQgdG8gdGhhdCBuZXcKKyAgICAgICAgY2xh
c3MuIEluIGZvbGxvdy11cCBjb21taXRzLCBXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIGNh
biBiZWNvbWUgYSBnZW5lcmljCisgICAgICAgIFNjcm9sbFZpZXdEZWxlZ2F0ZSBhbmQgbW9yZSBj
b2RlIGNhbiBiZSBtb3ZlZCBpbnRvIHRoZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TCisgICAgICAgIGZpbGUuIEZyYW1lIHNjcm9sbGluZyBub2RlcyB3aWxsIHRoZW4gYmUg
YWJsZSB0byBzaGFyZSB0aGUgc2FtZSBVSSBjb2RlIGFzIG92ZXJmbG93OmF1dG8gd2hlbgorICAg
ICAgICBpT1MgZnJhbWUgc2Nyb2xsaW5nIGlzIGltcGxlbWVudGVkIChidWcgMTQ5MjY0KS4KKwor
ICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MuaDogTW92ZSBub24tb3ZlcnJpZGVuIG1lbWJlcgorICAgICAgICBmdW5j
dGlvbnMgYW5kIG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlIGludG8gdGhlIGRlbGVnYXRlIGNsYXNz
LiBBbHNvIGRlZmluZSBhIG1lbWJlciB0byBzdG9yZQorICAgICAgICB0aGF0IGRlbGVnYXRlLgor
ICAgICAgICAqIFVJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MubW06IFVzZSB0aGUgbm9kZSBkZWxlZ2F0ZSB0bworICAgICAgICBjb21t
dW5pY2F0ZSB0byB0aGUgc2Nyb2xsaW5nIHRyZWUgYW5kIG5vZGUuCisgICAgICAgICgtW1dLT3Zl
cmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRl
Ol0pOiBJbml0IHdpdGggYSBkZWxlZ2F0ZS4KKyAgICAgICAgKC1bV0tPdmVyZmxvd1Njcm9sbFZp
ZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3RGlkU2Nyb2xsOl0pOiBDYWxsIHRoZSBkZWxlZ2F0ZSBmdW5j
dGlvbi4KKyAgICAgICAgKC1bV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3
V2lsbEJlZ2luRHJhZ2dpbmc6XSk6IERpdHRvLgorICAgICAgICAoLVtXS092ZXJmbG93U2Nyb2xs
Vmlld0RlbGVnYXRlIHNjcm9sbFZpZXdXaWxsRW5kRHJhZ2dpbmc6d2l0aFZlbG9jaXR5OnRhcmdl
dENvbnRlbnRPZmZzZXQ6XSk6CisgICAgICAgIFVzZSB0aGUgZGVsZWdhdGUgZnVuY3Rpb25zIG9y
IHBhc3MgYnkgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsaW5n
Tm9kZSgpLgorICAgICAgICAoLVtXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIHNjcm9sbFZp
ZXdEaWRFbmREcmFnZ2luZzp3aWxsRGVjZWxlcmF0ZTpdKTogVXNlIHRoZSBkZWxlZ2F0ZQorICAg
ICAgICBmdW5jdGlvbnMuCisgICAgICAgICgtW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUg
c2Nyb2xsVmlld0RpZEVuZERlY2VsZXJhdGluZzpdKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OlNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1MpOgorICAgICAgICBJbml0IHRoZSBkZWxlZ2F0ZSBmb3IgdGhp
cyBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKTogVXNlIHRoZSBkZWxlZ2F0ZS4KKyAg
ICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6c2V0
U2Nyb2xsTGF5ZXJQb3NpdGlvbik6IFVzZSB0aGUgZGVsZWdhdGUKKyAgICAgICAgZnVuY3Rpb24u
CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6
OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKTogRGl0dG8uCisgICAgICAgICgtW1dL
T3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZTpdKTog
RGVsZXRlZC4gVGhpcyBpcyByZW5hbWVkCisgICAgICAgIGluaXRXaXRoU2Nyb2xsaW5nVHJlZU5v
ZGVEZWxlZ2F0ZSBhbmQgYWNjZXB0cyBhIGRlbGVnYXRlLgorICAgICAgICAoV2ViS2l0OjpTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJT
Y3JvbGwpOiBEZWxldGVkLiBNb3ZlZAorICAgICAgICB0byBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlSU9TLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TOjpvdmVyZmxvd1Njcm9sbFdpbGxTdGFydCk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpvdmVyZmxv
d1Njcm9sbERpZEVuZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpvdmVyZmxvd1Njcm9sbFZpZXdXaWxsU3RhcnRQYW5HZXN0
dXJlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1M6OnNjcm9sbFZpZXdEaWRTY3JvbGwpOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y3VycmVudFNuYXBQb2lu
dEluZGljZXNEaWRDaGFuZ2UpOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nlc3MvU2Nyb2xsaW5n
L2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmg6IEFkZGVkLiBOZXcg
ZGVsZWdhdGUgY2xhc3MKKyAgICAgICAgZm9yIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1MuIFRoZSBtZW1iZXJzIHVzZWQgYnkgV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0
ZQorICAgICAgICBhcmUgcHVibGljIGFuZCB0aGUgb3RoZXJzIGFyZSBwcml2YXRlLiBUaGlzIGNs
YXNzIGlzIGEgZnJpZW5kIG9mCisgICAgICAgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1Mgc28gdGhhdCBpdCBjYW4gYWNjZXNzIHByaXZhdGUgbWVtYmVycyBlLmcuCisgICAg
ICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbCgpIG9yICBtX3VwZGF0aW5nRnJvbVN0YXRl
Tm9kZS4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUzo6c2Nyb2xsaW5nTm9kZSk6IEV4cG9zZSB0aGUgc2Nyb2xsaW5nIG5vZGUgZm9yCisgICAg
ICAgIFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUuCisgICAgICAgICogVUlQcm9jZXNzL1Nj
cm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1M6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MpOgorICAgICAgICAoV2Vi
S2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp+U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbCk6
IENvZGUgZXh0cmFjdGVkCisgICAgICAgIGZyb20gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUy4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUzo6c2Nyb2xsV2lsbFN0YXJ0KTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNjcm9sbERpZEVuZCk6IERpdHRv
LgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
OjpzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0
OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxWaWV3RGlkU2Ny
b2xsKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKTogRGl0dG8uCisg
ICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIGZpbGVzIHRvIHRoZQorICAgICAgICBidWlsZCBz
eXN0ZW0uCisKIDIwMTctMDgtMDQgIEZyZWRlcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgog
CiAgICAgICAgIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MgdXNlcyB0aGUg
d3JvbmcgZml4ZWQgcG9zaXRpb24gcmVjdGFuZ2xlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaAppbmRleCAz
NTk0YjEwODZlY2JhMzc4YjUxNmJkMjhkNTdhYmM0YjIzMGRkNzI5Li40NDM2YzhmMTMyYmNlY2Ex
MWM2MDg1NmVlZTlhMjEyZTg0YTZiOWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTMzLDEy
ICszMywyMiBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAi
U2Nyb2xsaW5nVHJlZU5vZGUuaCIKIAorI2lmIFBMQVRGT1JNKElPUykKK25hbWVzcGFjZSBXZWJL
aXQgeworY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzsKK30KKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWU7CiBjbGFz
cyBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU7CiAKIGNsYXNzIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlIDogcHVibGljIFNjcm9sbGluZ1RyZWVOb2RlIHsKKyNpZiBQTEFURk9STShJT1Mp
CisgICAgZnJpZW5kIGNsYXNzIFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUzsKKyNlbmRpZgorCiBwdWJsaWM6CiAgICAgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Ny
b2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MuaAppbmRleCAyMDc5ZTAwNzdiMDA4NDFkZDVkMDc3YjJlMTM3N2IwNmVh
YTE4YzdkLi4yMGM1YzQyN2E0Y2ZmNmRlY2VjNjQ4NDY0MmQzMTYwYmE4MDBhMzIwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9T
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaApAQCAt
MzQsNiArMzQsOCBAQAogT0JKQ19DTEFTUyBDQUxheWVyOwogT0JKQ19DTEFTUyBXS092ZXJmbG93
U2Nyb2xsVmlld0RlbGVnYXRlOwogCitjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TOworCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyA6IHB1YmxpYyBXZWJDb3JlOjpTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlIHsKQEAgLTQxLDEyICs0Myw2IEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M+IGNyZWF0ZShXZWJD
b3JlOjpTY3JvbGxpbmdUcmVlJiwgV2ViQ29yZTo6U2Nyb2xsaW5nTm9kZUlEKTsKICAgICB2aXJ0
dWFsIH5TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TKCk7CiAKLSAgICB2b2lk
IG92ZXJmbG93U2Nyb2xsV2lsbFN0YXJ0KCk7Ci0gICAgdm9pZCBvdmVyZmxvd1Njcm9sbERpZEVu
ZCgpOwotICAgIHZvaWQgb3ZlcmZsb3dTY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgpOwot
ICAgIHZvaWQgc2Nyb2xsVmlld0RpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jiwg
Ym9vbCBpblVzZXJJbnRlcmFjdGlvbik7Ci0gICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNl
c0RpZENoYW5nZSh1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCk7Ci0KICAg
ICBDQUxheWVyICpzY3JvbGxMYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fc2Nyb2xsTGF5ZXIuZ2V0
KCk7IH0KIAogcHJpdmF0ZToKQEAgLTY2LDEzICs2MiwxMSBAQCBwcml2YXRlOgogCiAgICAgdm9p
ZCBoYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudCYpIG92
ZXJyaWRlIHsgfQogCi0gICAgdm9pZCB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYpOwotICAgIAogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Nj
cm9sbExheWVyOwogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Njcm9sbGVkQ29udGVudHNMYXll
cjsKIAogICAgIFJldGFpblB0cjxXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlPiBtX3Njcm9s
bFZpZXdEZWxlZ2F0ZTsKLSAgICBib29sIG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPiBtX3Nj
cm9sbGluZ05vZGVEZWxlZ2F0ZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Ny
b2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCmluZGV4
IGFjMWNjZTRmMjFiYTg4ZmRhMGMwNjI2NWRlM2E1NTBmMGY5YTUzYTUuLmM1ZWQ0MTIyNDNlZmFi
NDJiZTNmMGJmZmM2Mjc0OTRmMWQ4MjRiZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KQEAgLTM0LDcgKzM0LDYgQEAKICNpbXBv
cnQgPFVJS2l0L1VJU2Nyb2xsVmlldy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVl
Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaD4K
ICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvU2V0Rm9y
U2NvcGUuaD4KIApAQCAtNDMsMzEgKzQyLDMzIEBACiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFNu
YXBPZmZzZXRzSW5mby5oPgogI2VuZGlmCiAKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MuaCIKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRl
cmZhY2UgV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxVSVNjcm9sbFZp
ZXdEZWxlZ2F0ZT4gewotICAgIFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUyogX3Njcm9sbGluZ1RyZWVOb2RlOworICAgIFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyogX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGU7CiB9CiAK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzSW5Vc2VySW50ZXJhY3Rpb24pIEJPT0wg
aW5Vc2VySW50ZXJhY3Rpb247CiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNjcm9sbGluZ1Ry
ZWVOb2RlOihXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MqKW5v
ZGU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOihX
ZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MqKWRlbGVnYXRlOwog
CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlCiAK
LS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlOihXZWJLaXQ6OlNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MqKW5vZGUKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGU6KFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyopZGVsZWdhdGUKIHsKICAgICBpZiAoKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUgPSBub2RlOworICAgICAgICBf
c2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCiAgICAgcmV0dXJuIHNlbGY7
CiB9CiAKIC0gKHZvaWQpc2Nyb2xsVmlld0RpZFNjcm9sbDooVUlTY3JvbGxWaWV3ICopc2Nyb2xs
VmlldwogewotICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+c2Nyb2xsVmlld0RpZFNjcm9sbChzY3Jv
bGxWaWV3LmNvbnRlbnRPZmZzZXQsIF9pblVzZXJJbnRlcmFjdGlvbik7CisgICAgX3Njcm9sbGlu
Z1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5jb250ZW50
T2Zmc2V0LCBfaW5Vc2VySW50ZXJhY3Rpb24pOwogfQogCiAtICh2b2lkKXNjcm9sbFZpZXdXaWxs
QmVnaW5EcmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwpAQCAtNzUsOCArNzYsOCBA
QCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsQmVnaW5EcmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Ny
b2xsVmlldwogICAgIF9pblVzZXJJbnRlcmFjdGlvbiA9IFlFUzsKIAogICAgIGlmIChzY3JvbGxW
aWV3LnBhbkdlc3R1cmVSZWNvZ25pemVyLnN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0
ZUJlZ2FuKQotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPm92ZXJmbG93U2Nyb2xsVmlld1dp
bGxTdGFydFBhbkdlc3R1cmUoKTsKLSAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPm92ZXJmbG93U2Ny
b2xsV2lsbFN0YXJ0KCk7CisgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3Jv
bGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgpOworICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVn
YXRlLT5zY3JvbGxXaWxsU3RhcnQoKTsKIH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVAp
CkBAIC04NSwyOCArODYsMjggQEAgLSAodm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihV
SVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICBDR0Zsb2F0
IGhvcml6b250YWxUYXJnZXQgPSB0YXJnZXRDb250ZW50T2Zmc2V0LT54OwogICAgIENHRmxvYXQg
dmVydGljYWxUYXJnZXQgPSB0YXJnZXRDb250ZW50T2Zmc2V0LT55OwogCi0gICAgdW5zaWduZWQg
b3JpZ2luYWxIb3Jpem9udGFsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlLT5jdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCk7Ci0gICAgdW5zaWduZWQgb3JpZ2luYWxWZXJ0
aWNhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVlTm9kZS0+Y3VycmVudFZlcnRpY2FsU25h
cFBvaW50SW5kZXgoKTsKKyAgICB1bnNpZ25lZCBvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRp
b24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRI
b3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsKKyAgICB1bnNpZ25lZCBvcmlnaW5hbFZlcnRpY2Fs
U25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUo
KS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpOwogCi0gICAgaWYgKCFfc2Nyb2xsaW5n
VHJlZU5vZGUtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpLmlzRW1wdHkoKSkgeworICAgIGlmICgh
X3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25h
cE9mZnNldHMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAg
IGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0KF9zY3JvbGxp
bmdUcmVlTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCksIF9zY3JvbGxpbmdUcmVlTm9kZS0+
aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSwgaG9yaXpvbnRhbFRhcmdldCwgdmVsb2NpdHku
eCwgaW5kZXgpOwotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNldEN1cnJlbnRIb3Jpem9u
dGFsU25hcFBvaW50SW5kZXgoaW5kZXgpOworICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9z
aXRpb24gPSBjbG9zZXN0U25hcE9mZnNldChfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Ny
b2xsaW5nTm9kZSgpLmhvcml6b250YWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5vZGVE
ZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCksIGhv
cml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngsIGluZGV4KTsKKyAgICAgICAgX3Njcm9sbGluZ1Ry
ZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQ
b2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKGhvcml6b250YWxUYXJnZXQgPj0gMCAmJiBo
b3Jpem9udGFsVGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNpemUud2lkdGgpCiAgICAgICAg
ICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT54ID0gcG90ZW50aWFsU25hcFBvc2l0aW9uOwogICAg
IH0KIAotICAgIGlmICghX3Njcm9sbGluZ1RyZWVOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCku
aXNFbXB0eSgpKSB7CisgICAgaWYgKCFfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xs
aW5nTm9kZSgpLnZlcnRpY2FsU25hcE9mZnNldHMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5z
aWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nl
c3RTbmFwT2Zmc2V0KF9zY3JvbGxpbmdUcmVlTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpLCBf
c2Nyb2xsaW5nVHJlZU5vZGUtPnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpLCB2ZXJ0aWNhbFRh
cmdldCwgdmVsb2NpdHkueSwgaW5kZXgpOwotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNl
dEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKKyAgICAgICAgZmxvYXQgcG90
ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXQoX3Njcm9sbGluZ1RyZWVOb2Rl
RGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCksIF9zY3JvbGxp
bmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zmc2V0UmFu
Z2VzKCksIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS55LCBpbmRleCk7CisgICAgICAgIF9zY3Jv
bGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudFZlcnRpY2Fs
U25hcFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAodmVydGljYWxUYXJnZXQgPj0gMCAm
JiB2ZXJ0aWNhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLmhlaWdodCkKICAgICAg
ICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnkgPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CiAg
ICAgfQogCi0gICAgaWYgKG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQb3NpdGlvbiAhPSBfc2Nyb2xs
aW5nVHJlZU5vZGUtPmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKQotICAgICAgICB8
fCBvcmlnaW5hbFZlcnRpY2FsU25hcFBvc2l0aW9uICE9IF9zY3JvbGxpbmdUcmVlTm9kZS0+Y3Vy
cmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSkgewotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5v
ZGUtPmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKF9zY3JvbGxpbmdUcmVlTm9kZS0+
Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpLCBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1
cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOworICAgIGlmIChvcmlnaW5hbEhvcml6b250
YWxTbmFwUG9zaXRpb24gIT0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05v
ZGUoKS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkKKyAgICAgICAgfHwgb3JpZ2lu
YWxWZXJ0aWNhbFNuYXBQb3NpdGlvbiAhPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Ny
b2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpIHsKKyAgICAgICAg
X3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hh
bmdlKF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudEhv
cml6b250YWxTbmFwUG9pbnRJbmRleCgpLCBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Ny
b2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOwogICAgIH0KIH0K
ICNlbmRpZgpAQCAtMTE1LDggKzExNiw4IEBAIC0gKHZvaWQpc2Nyb2xsVmlld0RpZEVuZERyYWdn
aW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpbGxEZWNlbGVyYXRlOihCT09MCiB7CiAg
ICAgaWYgKF9pblVzZXJJbnRlcmFjdGlvbiAmJiAhd2lsbERlY2VsZXJhdGUpIHsKICAgICAgICAg
X2luVXNlckludGVyYWN0aW9uID0gTk87Ci0gICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+c2Ny
b2xsVmlld0RpZFNjcm9sbChzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQsIF9pblVzZXJJbnRlcmFj
dGlvbik7Ci0gICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+b3ZlcmZsb3dTY3JvbGxEaWRFbmQo
KTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbFZpZXdEaWRTY3Jv
bGwoc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCBfaW5Vc2VySW50ZXJhY3Rpb24pOworICAgICAg
ICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsRGlkRW5kKCk7CiAgICAgfQogfQog
CkBAIC0xMjQsOCArMTI1LDggQEAgLSAodm9pZClzY3JvbGxWaWV3RGlkRW5kRGVjZWxlcmF0aW5n
OihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CiB7CiAgICAgaWYgKF9pblVzZXJJbnRlcmFjdGlv
bikgewogICAgICAgICBfaW5Vc2VySW50ZXJhY3Rpb24gPSBOTzsKLSAgICAgICAgX3Njcm9sbGlu
Z1RyZWVOb2RlLT5zY3JvbGxWaWV3RGlkU2Nyb2xsKHNjcm9sbFZpZXcuY29udGVudE9mZnNldCwg
X2luVXNlckludGVyYWN0aW9uKTsKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5vdmVyZmxv
d1Njcm9sbERpZEVuZCgpOworICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Ny
b2xsVmlld0RpZFNjcm9sbChzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQsIF9pblVzZXJJbnRlcmFj
dGlvbik7CisgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxEaWRFbmQo
KTsKICAgICB9CiB9CiAKQEAgLTE0MCw4ICsxNDEsOCBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUz4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
UwogCiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUmIHNjcm9sbGlu
Z1RyZWUsIFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkKLSAgICAsIG1f
dXBkYXRpbmdGcm9tU3RhdGVOb2RlKGZhbHNlKQogeworICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVn
YXRlLnJlc2V0KG5ldyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKCp0aGlz
KSk7CiB9CiAKIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6On5TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TKCkKQEAgLTE4MSw3ICsxODIsNyBAQCB2b2lk
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJD
aGlsZHJlbihjb25zdCBTY3JvbAogewogICAgIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGU6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihzdGF0ZU5vZGUpOwogCi0gICAgU2V0Rm9y
U2NvcGU8Ym9vbD4gdXBkYXRpbmdDaGFuZ2UobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUsIHRydWUp
OworICAgIFNldEZvclNjb3BlPGJvb2w+IHVwZGF0aW5nQ2hhbmdlKG1fc2Nyb2xsaW5nTm9kZURl
bGVnYXRlLT5tX3VwZGF0aW5nRnJvbVN0YXRlTm9kZSwgdHJ1ZSk7CiAKICAgICBjb25zdCBhdXRv
JiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZT4oc3RhdGVOb2RlKTsKIApAQCAtMTk2LDcgKzE5Nyw3IEBAIHZvaWQgU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVu
KGNvbnN0IFNjcm9sCiAKICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2Vk
UHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxMYXllcikpIHsKICAg
ICAgICAgICAgIGlmICghbV9zY3JvbGxWaWV3RGVsZWdhdGUpCi0gICAgICAgICAgICAgICAgbV9z
Y3JvbGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0
ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZTp0aGlzXSk7CisgICAgICAgICAgICAg
ICAgbV9zY3JvbGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tPdmVyZmxvd1Njcm9sbFZpZXdE
ZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOm1fc2Nyb2xs
aW5nTm9kZURlbGVnYXRlLmdldCgpXSk7CiAKICAgICAgICAgICAgIHNjcm9sbFZpZXcuc2Nyb2xs
c1RvVG9wID0gTk87CiAgICAgICAgICAgICBzY3JvbGxWaWV3LmRlbGVnYXRlID0gbV9zY3JvbGxW
aWV3RGVsZWdhdGUuZ2V0KCk7CkBAIC0yNjAsNjAgKzI2MSwxMiBAQCB2b2lkIFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3Qg
RmxvYXRQbwogewogICAgIFttX3Njcm9sbExheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKC1z
Y3JvbGxQb3NpdGlvbi54KCkgKyBzY3JvbGxPcmlnaW4oKS54KCksIC1zY3JvbGxQb3NpdGlvbi55
KCkgKyBzY3JvbGxPcmlnaW4oKS55KCkpXTsKIAotICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNj
cm9sbChzY3JvbGxQb3NpdGlvbik7CisgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUtPnVwZGF0
ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7CiB9CiAKIHZvaWQgU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0
ZWRTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCiB7Ci0gICAgdXBkYXRl
Q2hpbGROb2Rlc0FmdGVyU2Nyb2xsKHNjcm9sbFBvc2l0aW9uKTsKLX0KLQotdm9pZCBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3Jv
bGwoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCi17Ci0gICAgaWYgKCFtX2NoaWxk
cmVuKQotICAgICAgICByZXR1cm47Ci0KLSAgICBGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJlY3Q7
Ci0gICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogZnJhbWVOb2RlID0gZW5jbG9z
aW5nRnJhbWVOb2RlKCk7Ci0gICAgaWYgKGZyYW1lTm9kZSAmJiBmcmFtZU5vZGUtPnBhcmVudCgp
KQotICAgICAgICBmaXhlZFBvc2l0aW9uUmVjdCA9IGZyYW1lTm9kZS0+Zml4ZWRQb3NpdGlvblJl
Y3QoKTsKLSAgICBlbHNlCi0gICAgICAgIGZpeGVkUG9zaXRpb25SZWN0ID0gc2Nyb2xsaW5nVHJl
ZSgpLmZpeGVkUG9zaXRpb25SZWN0KCk7Ci0gICAgRmxvYXRTaXplIHNjcm9sbERlbHRhID0gbGFz
dENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkgLSBzY3JvbGxQb3NpdGlvbjsKLQotICAgIGZvciAo
YXV0byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0Fm
dGVyQW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0LCBzY3JvbGxEZWx0YSk7
Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6b3ZlcmZs
b3dTY3JvbGxXaWxsU3RhcnQoKQotewotICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVl
Tm9kZVdpbGxTdGFydFNjcm9sbCgpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1M6Om92ZXJmbG93U2Nyb2xsRGlkRW5kKCkKLXsKLSAgICBzY3JvbGxpbmdU
cmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVEaWRFbmRTY3JvbGwoKTsKLX0KLQotdm9pZCBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpvdmVyZmxvd1Njcm9sbFZpZXdXaWxsU3Rh
cnRQYW5HZXN0dXJlKCkKLXsKLSAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVX
aWxsU3RhcnRQYW5HZXN0dXJlKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUzo6c2Nyb2xsVmlld0RpZFNjcm9sbChjb25zdCBGbG9hdFBvaW50JiBzY3Jv
bGxQb3NpdGlvbiwgYm9vbCBpblVzZXJJbnRlcmFjdGlvbikKLXsKLSAgICBpZiAobV91cGRhdGlu
Z0Zyb21TdGF0ZU5vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNjcm9sbGluZ1RyZWUoKS5z
Y3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFEZWxlZ2F0ZWRTY3JvbGxpbmcoc2Nyb2xsaW5nTm9kZUlE
KCksIHNjcm9sbFBvc2l0aW9uLCBpblVzZXJJbnRlcmFjdGlvbik7Ci19Ci0KLXZvaWQgU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y3VycmVudFNuYXBQb2ludEluZGljZXNE
aWRDaGFuZ2UodW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpCi17Ci0gICAg
aWYgKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
c2Nyb2xsaW5nVHJlZSgpLmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHNjcm9sbGlu
Z05vZGVJRCgpLCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7CisgICAgbV9zY3JvbGxpbmdOb2RlRGVs
ZWdhdGUtPnVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDg0ODk0MTY4YWFmODQ2YmQ0ZTQ0
MGU5ZGZlMmM5YTc3ZGVkOTgzMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Njcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uy5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgSWdhbGlhIFMu
TC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQ
TEFURk9STShJT1MpICYmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNpbmNsdWRlIDxXZWJD
b3JlL0ludFJlY3QuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGU7Cit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOworCitjbGFzcyBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TIHsKKyAgICBmcmllbmQgY2xhc3MgU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzsKKworcHVibGljOgorICAgIH5TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TKCk7CisKKyAgICBXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZSYgc2Nyb2xsaW5nTm9kZSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nTm9kZTsgfQor
ICAgIHZvaWQgc2Nyb2xsV2lsbFN0YXJ0KCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxEaWRFbmQo
KSBjb25zdDsKKyAgICB2b2lkIHNjcm9sbFZpZXdXaWxsU3RhcnRQYW5HZXN0dXJlKCkgY29uc3Q7
CisgICAgdm9pZCBzY3JvbGxWaWV3RGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
IHNjcm9sbFBvc2l0aW9uLCBib29sIGluVXNlckludGVyYWN0aW9uKSBjb25zdDsKKyAgICB2b2lk
IGN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHVuc2lnbmVkIGhvcml6b250YWwsIHVu
c2lnbmVkIHZlcnRpY2FsKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlJik7CisgICAgdm9pZCB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3Qg
V2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pOworCisgICAgV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIG1fc2Nyb2xsaW5nTm9kZTsKKyAgICBib29sIG1fdXBk
YXRpbmdGcm9tU3RhdGVOb2RlOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Nyb2xsaW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvU2Nyb2xs
aW5nL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU4OTUzZWNkOGE0NjI5ZmY3YWVhZTdkYTAzYzhlOTYxOTE2ZDI5MjcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9TY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0KQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1MuaCIKKworI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1ND
Uk9MTElORykKKworI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlLmg+CisjaW1wb3J0IDxX
ZWJDb3JlL1Njcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaD4KKyNpbXBvcnQgPFdlYkNv
cmUvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdOb2RlKQorICAgIDogbV9zY3JvbGxpbmdOb2Rl
KHNjcm9sbGluZ05vZGUpCisgICAgLCBtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZShmYWxzZSkKK3sK
K30KKworU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6flNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MoKQoreworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChjb25z
dCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbikKK3sKKyAgICBpZiAoIW1fc2Nyb2xsaW5nTm9k
ZS5jaGlsZHJlbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBGbG9hdFJlY3QgZml4ZWRQb3Np
dGlvblJlY3Q7CisgICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogZnJhbWVOb2Rl
ID0gbV9zY3JvbGxpbmdOb2RlLmVuY2xvc2luZ0ZyYW1lTm9kZSgpOworICAgIGlmIChmcmFtZU5v
ZGUgJiYgZnJhbWVOb2RlLT5wYXJlbnQoKSkKKyAgICAgICAgZml4ZWRQb3NpdGlvblJlY3QgPSBm
cmFtZU5vZGUtPmZpeGVkUG9zaXRpb25SZWN0KCk7CisgICAgZWxzZQorICAgICAgICBmaXhlZFBv
c2l0aW9uUmVjdCA9IG1fc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdUcmVlKCkuZml4ZWRQb3NpdGlv
blJlY3QoKTsKKyAgICBGbG9hdFNpemUgc2Nyb2xsRGVsdGEgPSBtX3Njcm9sbGluZ05vZGUubGFz
dENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkgLSBzY3JvbGxQb3NpdGlvbjsKKworICAgIGZvciAo
YXV0byYgY2hpbGQgOiAqbV9zY3JvbGxpbmdOb2RlLmNoaWxkcmVuKCkpCisgICAgICAgIGNoaWxk
LT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKG1fc2Nyb2xsaW5nTm9kZSwgZml4ZWRQ
b3NpdGlvblJlY3QsIHNjcm9sbERlbHRhKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxXaWxsU3RhcnQoKSBjb25zdAoreworICAgIG1fc2Ny
b2xsaW5nTm9kZS5zY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRTY3Jv
bGwoKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpz
Y3JvbGxEaWRFbmQoKSBjb25zdAoreworICAgIG1fc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdUcmVl
KCkuc2Nyb2xsaW5nVHJlZU5vZGVEaWRFbmRTY3JvbGwoKTsKK30KKwordm9pZCBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVy
ZSgpIGNvbnN0Cit7CisgICAgbV9zY3JvbGxpbmdOb2RlLnNjcm9sbGluZ1RyZWUoKS5zY3JvbGxp
bmdUcmVlTm9kZVdpbGxTdGFydFBhbkdlc3R1cmUoKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxWaWV3RGlkU2Nyb2xsKGNvbnN0IEZsb2F0
UG9pbnQmIHNjcm9sbFBvc2l0aW9uLCBib29sIGluVXNlckludGVyYWN0aW9uKSBjb25zdAorewor
ICAgIGlmIChtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9zY3JvbGxpbmdOb2RlLnNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFE
ZWxlZ2F0ZWRTY3JvbGxpbmcobV9zY3JvbGxpbmdOb2RlLnNjcm9sbGluZ05vZGVJRCgpLCBzY3Jv
bGxQb3NpdGlvbiwgaW5Vc2VySW50ZXJhY3Rpb24pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdl
KHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBjb25zdAoreworICAgIGlm
IChtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zY3Jv
bGxpbmdOb2RlLnNjcm9sbGluZ1RyZWUoKS5jdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5n
ZShtX3Njcm9sbGluZ05vZGUuc2Nyb2xsaW5nTm9kZUlEKCksIGhvcml6b250YWwsIHZlcnRpY2Fs
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1Mp
ICYmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA3NTM0OTEyZGFhNDMzYWIwOGI1MzEyZjVhODc5
YWY5YjYwZGM0MmQzLi44YTU1ZWM5NmM5Zjk3MmUyYmIxOTg0N2I4N2VlMjlmYTQ1ZDU5NGNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTg4LDYgKzg4LDggQEAKIAkJMEY1RTIwMDQxOEU3NzA1MTAwM0VDM0U1IC8qIFBsYXRmb3JtQ0FB
bmltYXRpb25SZW1vdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNUUyMDAyMThFNzcwNTEwMDNFQzNFNSAvKiBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlLmggKi87IH07CiAJCTBGODUwRkU2MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5j
ZUxvZ2dpbmdDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY4NTBGRTQxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2lu
Z0NsaWVudC5jcHAgKi87IH07CiAJCTBGODUwRkU3MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJm
b3JtYW5jZUxvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGODUwRkU1MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxv
Z2dpbmdDbGllbnQuaCAqLzsgfTsKKwkJQUM5MzFDMUMxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFDOTMxQzFBMThDNTcxMTkwMERCQTdDMyAvKiBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggKi87IH07CisJCUFDOTMxQzFEMThD
NTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUM5MzFDMUIx
OEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mu
bW0gKi87IH07CiAJCTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjkzMUMxQTE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92
ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oICovOyB9OwogCQkwRjkzMUMxRDE4QzU3MTE5MDBEQkE3
QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMxQzFCMThDNTcxMTkwMERC
QTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tICovOyB9Owog
CQkwRkI2NTkyMzEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkI2NTkyMjEyMDhCNERCMDA0
NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi87IH07CkBAIC0yMjQ1LDYgKzIyNDcsOCBAQAog
CQkwRjcwN0M3OTFBMUZFRUEzMDBEQTdBNDUgLyogUmVtb3RlTGF5ZXJUcmVlU2Nyb2xsaW5nUGVy
Zm9ybWFuY2VEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbW90ZUxh
eWVyVHJlZVNjcm9sbGluZ1BlcmZvcm1hbmNlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjg1MEZFNDFFRDdDMzlGMDBGQjc3QTcgLyogV2ViUGVyZm9ybWFuY2VMb2dnaW5n
Q2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlBlcmZv
cm1hbmNlTG9nZ2luZ0NsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
ODUwRkU1MUVEN0MzOUYwMEZCNzdBNyAvKiBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUGVyZm9ybWFuY2VMb2dnaW5nQ2xp
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUFDOTMxQzFBMThDNTcxMTkwMERC
QTdDMyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MuaDsgcGF0aCA9IFNjcm9sbGluZy9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBQzkzMUMxQjE4QzU3
MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MubW07IHBhdGggPSBTY3JvbGxpbmcvaW9zL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGOTMxQzFBMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaDsgcGF0aCA9IFNjcm9sbGluZy9pb3MvU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjkzMUMxQjE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW07IHBhdGggPSBT
Y3JvbGxpbmcvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjY1OTIyMTIwOEI0REIwMDQ0ODE2QyAvKiBE
cmF3aW5nQXJlYUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJhd2lu
Z0FyZWFJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NTc2LDYgKzQ1ODAs
OCBAQAogCQkwRjkzMUMxOTE4QzU3MTExMDBEQkE3QzMgLyogaW9zICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlBQzkzMUMxQTE4QzU3MTE5MDBEQkE3QzMg
LyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oICovLAorCQkJCUFDOTMx
QzFCMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
SU9TLm1tICovLAogCQkJCTBGOTMxQzFBMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggKi8sCiAJCQkJMEY5MzFDMUIxOEM1NzExOTAwREJB
N0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gKi8sCiAJCQkp
OwpAQCAtODU1OCw2ICs4NTY0LDcgQEAKIAkJCQlCQzJEMDIxNzEyQUM0MUNCMDBFNzMyQTMgLyog
U2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBQUI0QThE
MTI5NkYwQTIwMDIzOTUyRiAvKiBTYW5kYm94RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMUU1NTJDNTE2QUUwNjVGMDA0RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpemF0aW9uUGFyYW1l
dGVycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJQUM5MzFDMUMxOEM1NzExOTAwREJBN0MzIC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQxMzA1NDEzODJFQUMwMDAzNTFFREQg
LyogU2VjSXRlbVJlcXVlc3REYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQxMzA1NjEzODJF
QUMwMDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5oIGluIEhlYWRlcnMgKi8sCkBAIC0x
MDEyNSw2ICsxMDEzMiw3IEBACiAJCQkJMUFBQjRBQUExMjk2RjE1NDAwMjM5NTJGIC8qIFNhbmRi
b3hFeHRlbnNpb25NYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMUU1NTJDNDE2QUUwNjVGMDA0
RUQ2NTMgLyogU2FuZGJveEluaXRpYWxpYXRpb25QYXJhbWV0ZXJzTWFjLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRTE5QkRBOEIxOTM2OEQ0NjAwQjk3RjU3IC8qIFNhbmRib3hVdGlsaXRpZXMubW0g
aW4gU291cmNlcyAqLywKKwkJCQlBQzkzMUMxRDE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGOTMx
QzFEMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEMTMwNTMxMzgyRUFDMDAwMzUxRUREIC8qIFNl
Y0l0ZW1SZXF1ZXN0RGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUQxMzA1NTEzODJFQUMw
MDAzNTFFREQgLyogU2VjSXRlbVJlc3BvbnNlRGF0YS5jcHAgaW4gU291cmNlcyAqLywK
</data>
<flag name="review"
          id="337820"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319855</attachid>
            <date>2017-09-04 09:48:07 -0700</date>
            <delta_ts>2017-09-06 05:01:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>0002-Bug-174097-Introduce-ScrollingTreeScrollingNodeDeleg.patch</filename>
            <type>text/plain</type>
            <size>44034</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSAyZjg5NGJlZmJiZmE4ZTExYjgzYTE5ZWFhZDRlM2Q3OGI2ODE0NjY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RnI9QzM9QTlkPUMzPUE5cmljPTIwV2FuZz89
IDxmd2FuZ0BpZ2FsaWEuY29tPgpEYXRlOiBNb24sIDQgU2VwIDIwMTcgMTA6NTE6NDYgKzAyMDAK
U3ViamVjdDogW1BBVENIIDIvNF0gQnVnIDE3NDA5NyAtIEludHJvZHVjZQogU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyB0byBzaGFyZSBjb2RlIGJldHdlZW4gb3ZlcmZsb3cg
YW5kCiBmcmFtZSBzY3JvbGxpbmcKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgMjUgKysrKysKIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiAgIHwgIDEwICsrCiAuLi4vcGFnZS9zY3JvbGxpbmcv
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCAgICB8ICAgOCArKwogLi4uL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwICAgICAgICAgfCAgNTYgKysrKysrKysrKysKIC4u
Li9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oIHwgIDUzICsr
KysrKysrKysrCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICA2MiArKysrKysrKysrKysKIC4uLi9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5oICAgIHwgIDEyICstLQogLi4uL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TLm1tICAgfCAxMDUgKysrKysrLS0tLS0tLS0tLS0tLS0tCiAuLi4v
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCAgICB8ICA2MiArKysr
KysrKysrKysKIC4uLi9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5t
bSAgIHwgIDk5ICsrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogICAgIHwgICA4ICsrCiAxMSBmaWxlcyBjaGFuZ2VkLCA0MTUg
aW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZS5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy5tbQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOWVjYjgyMzIuLjA0NDFmNTVjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA5LTA0ICBGcsOpZMOpcmljIFdhbmcgIDxm
d2FuZ0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBvdmVyZmxvdyBhbmQgZnJh
bWUgc2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzQwOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGJlaGF2aW9yIHVuY2hhbmdlZC4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGUuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuaDogTWFrZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlIGEKKyAg
ICAgICAgZnJpZW5kIHNvIHRoYXQgaXQgY2FuIGFjY2VzcyBwcml2YXRlIG1lbWJlcnMuCisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5j
cHA6IEFkZGVkLiBOZXcgZGVsZWdhdGUgY2xhc3MgZm9yIGEKKyAgICAgICAgc2Nyb2xsaW5nIG5v
ZGUsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIFVJIHByb2Nlc3MuCisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlKToKKyAgICAgICAgQ29uc3RydWN0b3IsIHRha2luZyB0aGUgc2Nyb2xsaW5n
IG5vZGUgYXMgYSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOjpz
Y3JvbGxpbmdUcmVlIGNvbnN0KTogRXhwb3NlIHRoZSBzY3JvbGxpbmcKKyAgICAgICAgdHJlZSBj
b250YWluaW5nIHRoZSBzY3JvbGxpbmcgbm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbiBj
b25zdCk6IEV4cG9zZQorICAgICAgICB0aGUgbGFzdCBjb21taXR0ZWQgc2Nyb2xsIHBvc2l0aW9u
IG9mIHRoZSBzY3JvbGxpbmcgbm9kZS4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTo6c2Nyb2xsaW5nTm9kZSk6IEV4cG9z
ZSB0aGUgc2Nyb2xsaW5nIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlOjpzY3JvbGxpbmdOb2RlIGNvbnN0KTogRGl0dG8uCisKIDIwMTct
MDktMDMgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAg
UmVtb3ZlICJtYWxsb2MiIGFuZCAiZnJlZSIgdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWYxOTM5MGFkLi45N2YxYWQ5OTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTM4NjcsNiArMzg2Nyw4IEBACiAJCTkzOTFBOTkxMTYyNzQ2Q0IwMDI5NzMzMCAvKiBT
Y3JvbGxpbmdDb29yZGluYXRvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTM5MUE5OTAxNjI3NDZDQjAwMjk3MzMwIC8qIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yTWFjLmggKi87IH07CiAJCTkzOTFBOTlDMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzkxQTk5QTE2MjlENkZGMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuY3BwICovOyB9OwogCQk5MzkxQTk5RDE2MjlENzAwMDAyOTczMzAgLyogU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzOTFBOTlCMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUE2RDVBOTlDMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE2RDVBOTlBMTYyOUQ2RkYwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlLmNwcCAqLzsgfTsKKwkJQTZENUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8q
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE2RDVBOTlCMTYyOUQ3MDAwMDI5NzMzMCAvKiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM5MjE0NjkxOEE2RDc5MTAwMEVFNjg4IC8q
IFRleHRJdGVyYXRvckJlaGF2aW9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzkyMTQ2ODE4QTZENzkxMDAwRUU2ODggLyogVGV4dEl0ZXJhdG9yQmVo
YXZpb3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk5MzkyMjYyRjEwMzIxMDg0MDA2RTdENUQgLyogSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkyMjYyRTEwMzIx
MDg0MDA2RTdENUQgLyogSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAgKi87IH07CiAJCTkzOTJGMTQy
MEFEMTg1RjQwMDY5MUJENCAvKiBSZW5kZXJDb3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkyRjE0MTBBRDE4NUY0MDA2OTFCRDQgLyogUmVu
ZGVyQ291bnRlci5oICovOyB9OwpAQCAtMTIxNDYsNiArMTIxNDgsOCBAQAogCQk5MzkxQTk5MDE2
Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTM5MUE5OUIxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE2RDVBOTlBMTYy
OUQ2RkYwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNkQ1QTk5
QjE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTIxNDY4MThB
NkQ3OTEwMDBFRTY4OCAvKiBUZXh0SXRlcmF0b3JCZWhhdmlvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZXh0SXRlcmF0b3JCZWhhdmlvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzkyMjYyRTEwMzIxMDg0MDA2RTdENUQgLyogSlNDU1NSdWxlTGlzdEN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1J1bGVM
aXN0Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MkYxNDEwQUQx
ODVGNDAwNjkxQkQ0IC8qIFJlbmRlckNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlckNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE2ODU0LDYgKzE2ODU4LDggQEAKIAkJCQkwRkM0RTQwQzE4N0Y4MkUxMDA0NTg4MkMgLyogU2Ny
b2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbSAqLywKIAkJCQkwRkM0RTQwOTE4N0Y4
MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZUlPUy5jcHAgKi8sCiAJCQkJMEZDNEU0MEExODdG
ODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuaCAqLywKKwkJCQkxQjk0RTQwOTE4N0Y4
MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAgKi8s
CisJCQkJMUI5NEU0MEExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKQEAgLTE3MzE4LDYgKzE3MzI0LDggQEAKIAkJCQkwRkVBM0U3RTE5MUIzMTY5
MDAwRjFCNTUgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oICovLAogCQkJ
CTkzOTFBOTlBMTYyOUQ2RkYwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5j
cHAgKi8sCiAJCQkJOTM5MUE5OUIxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmggKi8sCisJCQkJQTZENUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwICovLAorCQkJCUE2RDVBOTlCMTYyOUQ3MDAw
MDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggKi8sCiAJCQkJ
N0FBRkU4Q0QxOUNCODY3MjAwMEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5nU3RhdGUuY3BwICovLAog
CQkJCTdBQUZFOENFMTlDQjg2NzIwMDBGNTZEOCAvKiBTY3JvbGxMYXRjaGluZ1N0YXRlLmggKi8s
CiAJCQkJRjQ2NzI5MjUxRTBERTVBQjAwQUNDM0Q4IC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5mby5o
ICovLApAQCAtMjk3MTgsNiArMjk3MjYsNyBAQAogCQkJCTFBQUFEREU0MTREQzhDOEYwMEFGNjRC
MyAvKiBTY3JvbGxpbmdUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTNFODAxOTFC
MzE2OTAwMEYxQjU1IC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzOTFBOTlEMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTZENUE5OUQxNjI5RDcwMDAwMjk3
MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGQjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9k
ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0FBRkU4RDAxOUNCODY3MjAwMEY1NkQ4IC8qIFNjcm9s
bExhdGNoaW5nU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0Nzg3NTU0MTk5ODNBRkYwMDI0
QTI4NyAvKiBTY3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzYy
Miw2ICszMzYzMSw3IEBACiAJCQkJMUFBQURERTMxNERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGlu
Z1RyZWVOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEzRTdGMTkxQjMxNjkwMDBGMUI1
NSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTkzOTFBOTlDMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNkQ1QTk5QzE2MjlENzAwMDAyOTczMzAgLyog
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRkI4ODkwQjE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3QUFGRThDRjE5Q0I4NjcyMDAwRjU2RDggLyogU2Nyb2xsTGF0
Y2hpbmdTdGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNDc4NzU1NTE5OTgzQUZGMDAyNEEy
ODcgLyogU2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZS5oCmluZGV4IDVhM2RlODdmNS4uZGEwMzQzMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmgKQEAgLTMzLDEyICszMywyMCBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgi
CiAjaW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKIAorI2lmIFBMQVRGT1JNKElPUykKK2Ns
YXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU7CisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBTY3JvbGxpbmdUcmVlOwogY2xhc3MgU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOwogCiBjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSA6IHB1
YmxpYyBTY3JvbGxpbmdUcmVlTm9kZSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGZyaWVuZCBj
bGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOworI2VuZGlmCisKIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMC4uOWRhYWM3NzVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAKQEAg
LTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCIKKworI2lmIFBMQVRGT1JNKElP
UykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlKFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdOb2RlKQorICAgIDogbV9zY3JvbGxp
bmdOb2RlKHNjcm9sbGluZ05vZGUpCit7Cit9CisKK1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGU6On5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlKCkKK3sKK30KKwor
U2Nyb2xsaW5nVHJlZSYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTo6c2Nyb2xs
aW5nVHJlZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdU
cmVlKCk7Cit9CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZTo6bGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9z
Y3JvbGxpbmdOb2RlLmxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpICYmIEVOQUJMRShBU1lO
Q19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4yNjM5ZDEwNTEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlLmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJ
Z2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2luY2x1
ZGUgIkludFJlY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGU7CitjbGFzcyBTY3JvbGxpbmdUcmVlOworCitjbGFzcyBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBl
eHBsaWNpdCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlKFNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZSgpOworICAgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
JiBzY3JvbGxpbmdOb2RlKCkgeyByZXR1cm4gbV9zY3JvbGxpbmdOb2RlOyB9CisgICAgY29uc3Qg
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUoKSBjb25zdCB7IHJldHVy
biBtX3Njcm9sbGluZ05vZGU7IH0KKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIFNj
cm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBG
bG9hdFBvaW50IGxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIGNvbnN0OworCitwcml2YXRl
OgorICAgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBtX3Njcm9sbGluZ05vZGU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpICYmIEVO
QUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRhOGQ4ZGRjMi4uMjgxNmNkZWIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTA5LTA0ICBGcsOpZMOpcmljIFdhbmcgIDxm
d2FuZ0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBvdmVyZmxvdyBhbmQgZnJh
bWUgc2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzQwOTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUyB0aGF0IGNhbiBiZSB1c2VkIGJ5CisgICAgICAgIFdLT3ZlcmZsb3dTY3Jv
bGxWaWV3RGVsZWdhdGUgdG8gY29tbXVuaWNhdGUgdG8gdGhlIHNjcm9sbGluZyB0cmVlIGFuZCBu
b2Rlcy4gSXQgY2FuIGFsc28gYmUKKyAgICAgICAgdXNlZCBhcyBhIGhlbHBlciBjbGFzcyBieSBT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLiBGb3Igbm93LCBvbmx5IHRoZSBu
b24tCisgICAgICAgIG92ZXJyaWRlbiBtZW1iZXIgZnVuY3Rpb25zIG9mIFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MgYXJlIG1vdmVkIHRvIHRoYXQgbmV3CisgICAgICAgIGNs
YXNzLiBJbiBmb2xsb3ctdXAgY29tbWl0cywgV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBj
YW4gYmVjb21lIGEgZ2VuZXJpYworICAgICAgICBTY3JvbGxWaWV3RGVsZWdhdGUgYW5kIG1vcmUg
Y29kZSBjYW4gYmUgbW92ZWQgaW50byB0aGUgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUworICAgICAgICBmaWxlLiBGcmFtZSBzY3JvbGxpbmcgbm9kZXMgd2lsbCB0aGVuIGJl
IGFibGUgdG8gc2hhcmUgdGhlIHNhbWUgVUkgY29kZSBhcyBvdmVyZmxvdzphdXRvIHdoZW4KKyAg
ICAgICAgaU9TIGZyYW1lIHNjcm9sbGluZyBpcyBpbXBsZW1lbnRlZCAoYnVnIDE0OTI2NCkuCisK
KyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TLmg6IE1vdmUgbm9uLW92ZXJyaWRlbiBtZW1iZXIKKyAgICAg
ICAgZnVuY3Rpb25zIGFuZCBtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZSBpbnRvIHRoZSBkZWxlZ2F0
ZSBjbGFzcy4gQWxzbyBkZWZpbmUgYSBtZW1iZXIgdG8gc3RvcmUKKyAgICAgICAgdGhhdCBkZWxl
Z2F0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOiBVc2UgdGhlIG5vZGUgZGVsZWdhdGUgdG8K
KyAgICAgICAgY29tbXVuaWNhdGUgdG8gdGhlIHNjcm9sbGluZyB0cmVlIGFuZCBub2RlLgorICAg
ICAgICAoLVtXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIGluaXRXaXRoU2Nyb2xsaW5nVHJl
ZU5vZGVEZWxlZ2F0ZTpdKTogSW5pdCB3aXRoIGEgZGVsZWdhdGUuCisgICAgICAgICgtW1dLT3Zl
cmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgc2Nyb2xsVmlld0RpZFNjcm9sbDpdKTogQ2FsbCB0aGUg
ZGVsZWdhdGUgZnVuY3Rpb24uCisgICAgICAgICgtW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdh
dGUgc2Nyb2xsVmlld1dpbGxCZWdpbkRyYWdnaW5nOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tP
dmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOndpdGhW
ZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zmc2V0Ol0pOgorICAgICAgICBVc2UgdGhlIGRlbGVnYXRl
IGZ1bmN0aW9ucyBvciBwYXNzIGJ5IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1M6OnNjcm9sbGluZ05vZGUoKS4KKyAgICAgICAgKC1bV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxl
Z2F0ZSBzY3JvbGxWaWV3RGlkRW5kRHJhZ2dpbmc6d2lsbERlY2VsZXJhdGU6XSk6IFVzZSB0aGUg
ZGVsZWdhdGUKKyAgICAgICAgZnVuY3Rpb25zLgorICAgICAgICAoLVtXS092ZXJmbG93U2Nyb2xs
Vmlld0RlbGVnYXRlIHNjcm9sbFZpZXdEaWRFbmREZWNlbGVyYXRpbmc6XSk6IERpdHRvLgorICAg
ICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TKToKKyAgICAgICAgSW5pdCB0aGUgZGVs
ZWdhdGUgZm9yIHRoaXMgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6IFVzZSB0aGUg
ZGVsZWdhdGUuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24pOiBVc2UgdGhlIGRlbGVnYXRlCisgICAg
ICAgIGZ1bmN0aW9uLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbCk6IERpdHRvLgor
ICAgICAgICAoLVtXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIGluaXRXaXRoU2Nyb2xsaW5n
VHJlZU5vZGU6XSk6IERlbGV0ZWQuIFRoaXMgaXMgcmVuYW1lZAorICAgICAgICBpbml0V2l0aFNj
cm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUgYW5kIGFjY2VwdHMgYSBkZWxlZ2F0ZS4KKyAgICAgICAg
KFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQ2hp
bGROb2Rlc0FmdGVyU2Nyb2xsKTogRGVsZXRlZC4gTW92ZWQKKyAgICAgICAgdG8gU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6b3ZlcmZsb3dTY3JvbGxXaWxsU3RhcnQpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUzo6b3ZlcmZsb3dTY3JvbGxEaWRFbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6U2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6b3ZlcmZsb3dTY3JvbGxWaWV3V2ls
bFN0YXJ0UGFuR2VzdHVyZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxWaWV3RGlkU2Nyb2xsKTogRGl0dG8uCisg
ICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OmN1
cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9j
ZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUy5oOiBBZGRlZC4gTmV3IGRlbGVnYXRlIGNsYXNzCisgICAgICAgIGZvciBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLiBUaGUgbWVtYmVycyB1c2VkIGJ5IFdLT3ZlcmZs
b3dTY3JvbGxWaWV3RGVsZWdhdGUKKyAgICAgICAgYXJlIHB1YmxpYyBhbmQgdGhlIG90aGVycyBh
cmUgcHJpdmF0ZS4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyBpcyBhIGZy
aWVuZCBvZgorICAgICAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIHNv
IHRoYXQgaXQgY2FuIGFjY2VzcyBwcml2YXRlIG1lbWJlcnMgZS5nLgorICAgICAgICB1cGRhdGVD
aGlsZE5vZGVzQWZ0ZXJTY3JvbGwoKSBvciAgbV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUuCisgICAg
ICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1MpOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyk6CisgICAg
ICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnVwZGF0
ZUNoaWxkTm9kZXNBZnRlclNjcm9sbCk6IENvZGUgZXh0cmFjdGVkCisgICAgICAgIGZyb20gU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy4KKyAgICAgICAgKFdlYktpdDo6U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsV2lsbFN0YXJ0KTogRGl0
dG8uCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1M6OnNjcm9sbERpZEVuZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TOjpzY3JvbGxWaWV3RGlkU2Nyb2xsKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJbmRp
Y2VzRGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIGZpbGVz
IHRvIHRoZQorICAgICAgICBidWlsZCBzeXN0ZW0uCisKIDIwMTctMDktMDMgIENhcmxvcyBHYXJj
aWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtUaHJlYWRlZCBDb21w
b3NpdG9yXSBEZWFkbG9jayBpbiBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MuaAppbmRleCA4MWIxYzdjYzQuLmY0ZGZlNDQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgKQEAgLTM1LDE3
ICszNSwxMyBAQCBPQkpDX0NMQVNTIFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TOworCiBjbGFzcyBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TIDog
cHVibGljIFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUgewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uz4gY3JlYXRlKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUmLCBXZWJDb3JlOjpTY3JvbGxpbmdOb2Rl
SUQpOwogICAgIHZpcnR1YWwgflNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1Mo
KTsKIAotICAgIHZvaWQgb3ZlcmZsb3dTY3JvbGxXaWxsU3RhcnQoKTsKLSAgICB2b2lkIG92ZXJm
bG93U2Nyb2xsRGlkRW5kKCk7Ci0gICAgdm9pZCBvdmVyZmxvd1Njcm9sbFZpZXdXaWxsU3RhcnRQ
YW5HZXN0dXJlKCk7Ci0gICAgdm9pZCBzY3JvbGxWaWV3RGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmLCBib29sIGluVXNlckludGVyYWN0aW9uKTsKLSAgICB2b2lkIGN1cnJlbnRT
bmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZl
cnRpY2FsKTsKLQogICAgIENBTGF5ZXIgKnNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9z
Y3JvbGxMYXllci5nZXQoKTsgfQogCiBwcml2YXRlOgpAQCAtNjUsMTMgKzYxLDExIEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1X
aGVlbEV2ZW50Jikgb3ZlcnJpZGUgeyB9CiAKLSAgICB2b2lkIHVwZGF0ZUNoaWxkTm9kZXNBZnRl
clNjcm9sbChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7Ci0gICAgCiAgICAgUmV0YWluUHRy
PENBTGF5ZXI+IG1fc2Nyb2xsTGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xs
ZWRDb250ZW50c0xheWVyOwogCiAgICAgUmV0YWluUHRyPFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVs
ZWdhdGU+IG1fc2Nyb2xsVmlld0RlbGVnYXRlOwotICAgIGJvb2wgbV91cGRhdGluZ0Zyb21TdGF0
ZU5vZGU7CisgICAgc3RkOjp1bmlxdWVfcHRyPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1M+IG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MubW0KaW5kZXggYWMxY2NlNGYyLi45NjFlNGFlMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1MubW0KQEAgLTM0LDcgKzM0LDYgQEAKICNpbXBvcnQgPFVJS2l0L1VJU2Nyb2xsVmlldy5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Nj
cm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNF
eGNlcHRpb25zLmg+CiAjaW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNDMsMzEgKzQy
LDMzIEBACiAjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgogI2VuZGlm
CiAKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCIKKwog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIEBpbnRlcmZhY2UgV0tPdmVyZmxvd1Njcm9sbFZp
ZXdEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxVSVNjcm9sbFZpZXdEZWxlZ2F0ZT4gewotICAgIFdlYktp
dDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyogX3Njcm9sbGluZ1RyZWVO
b2RlOworICAgIFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyog
X3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGU7CiB9CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBn
ZXR0ZXI9X2lzSW5Vc2VySW50ZXJhY3Rpb24pIEJPT0wgaW5Vc2VySW50ZXJhY3Rpb247CiAKLS0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlOihXZWJLaXQ6OlNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MqKW5vZGU7CistIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOihXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MqKWRlbGVnYXRlOwogCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlv
biBXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFNjcm9sbGluZ1RyZWVOb2RlOihXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1MqKW5vZGUKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2Rl
RGVsZWdhdGU6KFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyop
ZGVsZWdhdGUKIHsKICAgICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICBfc2Ny
b2xsaW5nVHJlZU5vZGUgPSBub2RlOworICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0
ZSA9IGRlbGVnYXRlOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpc2Nyb2xsVmll
d0RpZFNjcm9sbDooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogewotICAgIF9zY3JvbGxpbmdU
cmVlTm9kZS0+c2Nyb2xsVmlld0RpZFNjcm9sbChzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQsIF9p
blVzZXJJbnRlcmFjdGlvbik7CisgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9s
bFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCBfaW5Vc2VySW50ZXJhY3Rp
b24pOwogfQogCiAtICh2b2lkKXNjcm9sbFZpZXdXaWxsQmVnaW5EcmFnZ2luZzooVUlTY3JvbGxW
aWV3ICopc2Nyb2xsVmlldwpAQCAtNzUsOCArNzYsOCBAQCAtICh2b2lkKXNjcm9sbFZpZXdXaWxs
QmVnaW5EcmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogICAgIF9pblVzZXJJbnRl
cmFjdGlvbiA9IFlFUzsKIAogICAgIGlmIChzY3JvbGxWaWV3LnBhbkdlc3R1cmVSZWNvZ25pemVy
LnN0YXRlID09IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuKQotICAgICAgICBfc2Nyb2xs
aW5nVHJlZU5vZGUtPm92ZXJmbG93U2Nyb2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUoKTsKLSAg
ICBfc2Nyb2xsaW5nVHJlZU5vZGUtPm92ZXJmbG93U2Nyb2xsV2lsbFN0YXJ0KCk7CisgICAgICAg
IF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVy
ZSgpOworICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxXaWxsU3RhcnQoKTsK
IH0KIAogI2lmIEVOQUJMRShDU1NfU0NST0xMX1NOQVApCkBAIC04NSwyOCArODYsMjggQEAgLSAo
dm9pZClzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3
IHdpdGhWZWxvY2l0eTooQ0dQb2kKICAgICBDR0Zsb2F0IGhvcml6b250YWxUYXJnZXQgPSB0YXJn
ZXRDb250ZW50T2Zmc2V0LT54OwogICAgIENHRmxvYXQgdmVydGljYWxUYXJnZXQgPSB0YXJnZXRD
b250ZW50T2Zmc2V0LT55OwogCi0gICAgdW5zaWduZWQgb3JpZ2luYWxIb3Jpem9udGFsU25hcFBv
c2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlLT5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludElu
ZGV4KCk7Ci0gICAgdW5zaWduZWQgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3NpdGlvbiA9IF9zY3Jv
bGxpbmdUcmVlTm9kZS0+Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKTsKKyAgICB1bnNp
Z25lZCBvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVE
ZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgo
KTsKKyAgICB1bnNpZ25lZCBvcmlnaW5hbFZlcnRpY2FsU25hcFBvc2l0aW9uID0gX3Njcm9sbGlu
Z1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50VmVydGljYWxTbmFwUG9p
bnRJbmRleCgpOwogCi0gICAgaWYgKCFfc2Nyb2xsaW5nVHJlZU5vZGUtPmhvcml6b250YWxTbmFw
T2Zmc2V0cygpLmlzRW1wdHkoKSkgeworICAgIGlmICghX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdh
dGUtPnNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldHMoKS5pc0VtcHR5KCkpIHsK
ICAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3Np
dGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0KF9zY3JvbGxpbmdUcmVlTm9kZS0+aG9yaXpvbnRhbFNu
YXBPZmZzZXRzKCksIF9zY3JvbGxpbmdUcmVlTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5n
ZXMoKSwgaG9yaXpvbnRhbFRhcmdldCwgdmVsb2NpdHkueCwgaW5kZXgpOwotICAgICAgICBfc2Ny
b2xsaW5nVHJlZU5vZGUtPnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoaW5kZXgp
OworICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0U25hcE9mZnNl
dChfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxT
bmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgp
Lmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCksIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5
LngsIGluZGV4KTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGlu
Z05vZGUoKS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAg
ICAgaWYgKGhvcml6b250YWxUYXJnZXQgPj0gMCAmJiBob3Jpem9udGFsVGFyZ2V0IDw9IHNjcm9s
bFZpZXcuY29udGVudFNpemUud2lkdGgpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0
LT54ID0gcG90ZW50aWFsU25hcFBvc2l0aW9uOwogICAgIH0KIAotICAgIGlmICghX3Njcm9sbGlu
Z1RyZWVOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFf
c2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsU25hcE9m
ZnNldHMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIGZs
b2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0KF9zY3JvbGxpbmdU
cmVlTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5vZGUtPnZlcnRp
Y2FsU25hcE9mZnNldFJhbmdlcygpLCB2ZXJ0aWNhbFRhcmdldCwgdmVsb2NpdHkueSwgaW5kZXgp
OwotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2lu
dEluZGV4KGluZGV4KTsKKyAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xv
c2VzdFNuYXBPZmZzZXQoX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUo
KS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCksIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3Jv
bGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCksIHZlcnRpY2FsVGFyZ2V0LCB2
ZWxvY2l0eS55LCBpbmRleCk7CisgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5z
Y3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoaW5kZXgpOwog
ICAgICAgICBpZiAodmVydGljYWxUYXJnZXQgPj0gMCAmJiB2ZXJ0aWNhbFRhcmdldCA8PSBzY3Jv
bGxWaWV3LmNvbnRlbnRTaXplLmhlaWdodCkKICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZz
ZXQtPnkgPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CiAgICAgfQogCi0gICAgaWYgKG9yaWdpbmFs
SG9yaXpvbnRhbFNuYXBQb3NpdGlvbiAhPSBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJlbnRIb3Jp
em9udGFsU25hcFBvaW50SW5kZXgoKQotICAgICAgICB8fCBvcmlnaW5hbFZlcnRpY2FsU25hcFBv
c2l0aW9uICE9IF9zY3JvbGxpbmdUcmVlTm9kZS0+Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5k
ZXgoKSkgewotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJlbnRTbmFwUG9pbnRJbmRp
Y2VzRGlkQ2hhbmdlKF9zY3JvbGxpbmdUcmVlTm9kZS0+Y3VycmVudEhvcml6b250YWxTbmFwUG9p
bnRJbmRleCgpLCBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4KCkpOworICAgIGlmIChvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gIT0gX3Njcm9s
bGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50SG9yaXpvbnRhbFNu
YXBQb2ludEluZGV4KCkKKyAgICAgICAgfHwgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3NpdGlvbiAh
PSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0
aWNhbFNuYXBQb2ludEluZGV4KCkpIHsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdh
dGUtPmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKF9zY3JvbGxpbmdUcmVlTm9kZURl
bGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgp
LCBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0
aWNhbFNuYXBQb2ludEluZGV4KCkpOwogICAgIH0KIH0KICNlbmRpZgpAQCAtMTE1LDggKzExNiw4
IEBAIC0gKHZvaWQpc2Nyb2xsVmlld0RpZEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3Jv
bGxWaWV3IHdpbGxEZWNlbGVyYXRlOihCT09MCiB7CiAgICAgaWYgKF9pblVzZXJJbnRlcmFjdGlv
biAmJiAhd2lsbERlY2VsZXJhdGUpIHsKICAgICAgICAgX2luVXNlckludGVyYWN0aW9uID0gTk87
Ci0gICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+c2Nyb2xsVmlld0RpZFNjcm9sbChzY3JvbGxW
aWV3LmNvbnRlbnRPZmZzZXQsIF9pblVzZXJJbnRlcmFjdGlvbik7Ci0gICAgICAgIF9zY3JvbGxp
bmdUcmVlTm9kZS0+b3ZlcmZsb3dTY3JvbGxEaWRFbmQoKTsKKyAgICAgICAgX3Njcm9sbGluZ1Ry
ZWVOb2RlRGVsZWdhdGUtPnNjcm9sbFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5jb250ZW50T2Zm
c2V0LCBfaW5Vc2VySW50ZXJhY3Rpb24pOworICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxl
Z2F0ZS0+c2Nyb2xsRGlkRW5kKCk7CiAgICAgfQogfQogCkBAIC0xMjQsOCArMTI1LDggQEAgLSAo
dm9pZClzY3JvbGxWaWV3RGlkRW5kRGVjZWxlcmF0aW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxW
aWV3CiB7CiAgICAgaWYgKF9pblVzZXJJbnRlcmFjdGlvbikgewogICAgICAgICBfaW5Vc2VySW50
ZXJhY3Rpb24gPSBOTzsKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5zY3JvbGxWaWV3RGlk
U2Nyb2xsKHNjcm9sbFZpZXcuY29udGVudE9mZnNldCwgX2luVXNlckludGVyYWN0aW9uKTsKLSAg
ICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5vdmVyZmxvd1Njcm9sbERpZEVuZCgpOworICAgICAg
ICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsVmlld0RpZFNjcm9sbChzY3JvbGxW
aWV3LmNvbnRlbnRPZmZzZXQsIF9pblVzZXJJbnRlcmFjdGlvbik7CisgICAgICAgIF9zY3JvbGxp
bmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxEaWRFbmQoKTsKICAgICB9CiB9CiAKQEAgLTE0MCw3
ICsxNDEsNyBAQCBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUz4gU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUwogCiBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9T
KFdlYkNvcmU6OlNjcm9sbGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFdlYkNvcmU6OlNjcm9sbGlu
Z05vZGVJRCBub2RlSUQpCiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
KHNjcm9sbGluZ1RyZWUsIG5vZGVJRCkKLSAgICAsIG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlKGZh
bHNlKQorICAgICwgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykpCiB7CiB9CiAKQEAgLTE4
MSw3ICsxODIsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6
OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbAogewogICAgIFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGU6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihzdGF0ZU5v
ZGUpOwogCi0gICAgU2V0Rm9yU2NvcGU8Ym9vbD4gdXBkYXRpbmdDaGFuZ2UobV91cGRhdGluZ0Zy
b21TdGF0ZU5vZGUsIHRydWUpOworICAgIFNldEZvclNjb3BlPGJvb2w+IHVwZGF0aW5nQ2hhbmdl
KG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLT5tX3VwZGF0aW5nRnJvbVN0YXRlTm9kZSwgdHJ1ZSk7
CiAKICAgICBjb25zdCBhdXRvJiBzY3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxp
bmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4oc3RhdGVOb2RlKTsKIApAQCAtMTk2LDcgKzE5
Nyw3IEBAIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y29tbWl0
U3RhdGVBZnRlckNoaWxkcmVuKGNvbnN0IFNjcm9sCiAKICAgICAgICAgaWYgKHNjcm9sbGluZ1N0
YXRlTm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxMYXllcikpIHsKICAgICAgICAgICAgIGlmICghbV9zY3JvbGxWaWV3RGVsZWdhdGUpCi0g
ICAgICAgICAgICAgICAgbV9zY3JvbGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tPdmVyZmxv
d1Njcm9sbFZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZTp0aGlz
XSk7CisgICAgICAgICAgICAgICAgbV9zY3JvbGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tP
dmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9k
ZURlbGVnYXRlOm1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLmdldCgpXSk7CiAKICAgICAgICAgICAg
IHNjcm9sbFZpZXcuc2Nyb2xsc1RvVG9wID0gTk87CiAgICAgICAgICAgICBzY3JvbGxWaWV3LmRl
bGVnYXRlID0gbV9zY3JvbGxWaWV3RGVsZWdhdGUuZ2V0KCk7CkBAIC0yNjAsNjAgKzI2MSwxMiBA
QCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbExh
eWVyUG9zaXRpb24oY29uc3QgRmxvYXRQbwogewogICAgIFttX3Njcm9sbExheWVyIHNldFBvc2l0
aW9uOkNHUG9pbnRNYWtlKC1zY3JvbGxQb3NpdGlvbi54KCkgKyBzY3JvbGxPcmlnaW4oKS54KCks
IC1zY3JvbGxQb3NpdGlvbi55KCkgKyBzY3JvbGxPcmlnaW4oKS55KCkpXTsKIAotICAgIHVwZGF0
ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7CisgICAgbV9zY3JvbGxpbmdO
b2RlRGVsZWdhdGUtPnVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7
CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRl
TGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRp
b24pCiB7Ci0gICAgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKHNjcm9sbFBvc2l0aW9uKTsK
LX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVD
aGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCi17
Ci0gICAgaWYgKCFtX2NoaWxkcmVuKQotICAgICAgICByZXR1cm47Ci0KLSAgICBGbG9hdFJlY3Qg
Zml4ZWRQb3NpdGlvblJlY3Q7Ci0gICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSog
ZnJhbWVOb2RlID0gZW5jbG9zaW5nRnJhbWVOb2RlKCk7Ci0gICAgaWYgKGZyYW1lTm9kZSAmJiBm
cmFtZU5vZGUtPnBhcmVudCgpKQotICAgICAgICBmaXhlZFBvc2l0aW9uUmVjdCA9IGZyYW1lTm9k
ZS0+Zml4ZWRQb3NpdGlvblJlY3QoKTsKLSAgICBlbHNlCi0gICAgICAgIGZpeGVkUG9zaXRpb25S
ZWN0ID0gc2Nyb2xsaW5nVHJlZSgpLmZpeGVkUG9zaXRpb25SZWN0KCk7Ci0gICAgRmxvYXRTaXpl
IHNjcm9sbERlbHRhID0gbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkgLSBzY3JvbGxQb3Np
dGlvbjsKLQotICAgIGZvciAoYXV0byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAgY2hp
bGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZpeGVkUG9zaXRpb25S
ZWN0LCBzY3JvbGxEZWx0YSk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUzo6b3ZlcmZsb3dTY3JvbGxXaWxsU3RhcnQoKQotewotICAgIHNjcm9sbGluZ1Ry
ZWUoKS5zY3JvbGxpbmdUcmVlTm9kZVdpbGxTdGFydFNjcm9sbCgpOwotfQotCi12b2lkIFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6Om92ZXJmbG93U2Nyb2xsRGlkRW5kKCkK
LXsKLSAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVEaWRFbmRTY3JvbGwoKTsK
LX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpvdmVyZmxv
d1Njcm9sbFZpZXdXaWxsU3RhcnRQYW5HZXN0dXJlKCkKLXsKLSAgICBzY3JvbGxpbmdUcmVlKCku
c2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRQYW5HZXN0dXJlKCk7Ci19Ci0KLXZvaWQgU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6c2Nyb2xsVmlld0RpZFNjcm9sbChjb25z
dCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBpblVzZXJJbnRlcmFjdGlvbikKLXsK
LSAgICBpZiAobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFEZWxlZ2F0ZWRTY3JvbGxp
bmcoc2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uLCBpblVzZXJJbnRlcmFjdGlvbik7
Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y3VycmVu
dFNuYXBQb2ludEluZGljZXNEaWRDaGFuZ2UodW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQg
dmVydGljYWwpCi17Ci0gICAgaWYgKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgc2Nyb2xsaW5nVHJlZSgpLmN1cnJlbnRTbmFwUG9pbnRJbmRpY2Vz
RGlkQ2hhbmdlKHNjcm9sbGluZ05vZGVJRCgpLCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7CisgICAg
bV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUtPnVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3Jv
bGxQb3NpdGlvbik7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3Rl
TGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5hZmY1MzY1ZWMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaApAQCAtMCwwICsxLDYyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoQVNZ
TkNfU0NST0xMSU5HKQorCisjaW5jbHVkZSA8V2ViQ29yZS9JbnRSZWN0Lmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKK2NsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlOworfQorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUzsKKworY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyA6IHB1
YmxpYyBXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlIHsKKyAgICBm
cmllbmQgY2xhc3MgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzsKKworcHVi
bGljOgorICAgIGV4cGxpY2l0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mo
V2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmKTsKKyAgICB+U2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUygpIGZpbmFsOworCisgICAgdm9pZCBzY3JvbGxXaWxs
U3RhcnQoKSBjb25zdDsKKyAgICB2b2lkIHNjcm9sbERpZEVuZCgpIGNvbnN0OworICAgIHZvaWQg
c2Nyb2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUoKSBjb25zdDsKKyAgICB2b2lkIHNjcm9sbFZp
ZXdEaWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJv
b2wgaW5Vc2VySW50ZXJhY3Rpb24pIGNvbnN0OworICAgIHZvaWQgY3VycmVudFNuYXBQb2ludElu
ZGljZXNEaWRDaGFuZ2UodW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpIGNv
bnN0OworCitwcml2YXRlOgorICAgIHZvaWQgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKTsKKworICAgIGJvb2wgbV91
cGRhdGluZ0Zyb21TdGF0ZU5vZGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjhiYmJhYmU0NwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9p
b3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbQpAQCAtMCwwICsxLDk5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oIgorCisjaWYgUExBVEZPUk0oSU9TKSAmJiBF
TkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWUu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZS5oPgor
I2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MoU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUpCisgICAgOiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlKHNjcm9sbGluZ05vZGUpCisgICAgLCBt
X3VwZGF0aW5nRnJvbVN0YXRlTm9kZShmYWxzZSkKK3sKK30KKworU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZUlPUzo6flNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJ
T1MoKQoreworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6
OnVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3Np
dGlvbikKK3sKKyAgICBpZiAoIXNjcm9sbGluZ05vZGUoKS5jaGlsZHJlbigpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJlY3Q7CisgICAgU2Nyb2xsaW5n
VHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogZnJhbWVOb2RlID0gc2Nyb2xsaW5nTm9kZSgpLmVuY2xv
c2luZ0ZyYW1lTm9kZSgpOworICAgIGlmIChmcmFtZU5vZGUgJiYgZnJhbWVOb2RlLT5wYXJlbnQo
KSkKKyAgICAgICAgZml4ZWRQb3NpdGlvblJlY3QgPSBmcmFtZU5vZGUtPmZpeGVkUG9zaXRpb25S
ZWN0KCk7CisgICAgZWxzZQorICAgICAgICBmaXhlZFBvc2l0aW9uUmVjdCA9IHNjcm9sbGluZ1Ry
ZWUoKS5maXhlZFBvc2l0aW9uUmVjdCgpOworICAgIEZsb2F0U2l6ZSBzY3JvbGxEZWx0YSA9IGxh
c3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIC0gc2Nyb2xsUG9zaXRpb247CisKKyAgICBmb3Ig
KGF1dG8mIGNoaWxkIDogKnNjcm9sbGluZ05vZGUoKS5jaGlsZHJlbigpKQorICAgICAgICBjaGls
ZC0+dXBkYXRlTGF5ZXJzQWZ0ZXJBbmNlc3RvckNoYW5nZShzY3JvbGxpbmdOb2RlKCksIGZpeGVk
UG9zaXRpb25SZWN0LCBzY3JvbGxEZWx0YSk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsV2lsbFN0YXJ0KCkgY29uc3QKK3sKKyAgICBzY3Jv
bGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRTY3JvbGwoKTsKK30KKwordm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxEaWRFbmQoKSBj
b25zdAoreworICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZURpZEVuZFNjcm9s
bCgpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNj
cm9sbFZpZXdXaWxsU3RhcnRQYW5HZXN0dXJlKCkgY29uc3QKK3sKKyAgICBzY3JvbGxpbmdUcmVl
KCkuc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRQYW5HZXN0dXJlKCk7Cit9CisKK3ZvaWQgU2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsVmlld0RpZFNjcm9sbChj
b25zdCBGbG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBpblVzZXJJbnRlcmFjdGlvbikg
Y29uc3QKK3sKKyAgICBpZiAobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxQb3NpdGlvbkNoYW5nZWRWaWFEZWxlZ2F0
ZWRTY3JvbGxpbmcoc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3Np
dGlvbiwgaW5Vc2VySW50ZXJhY3Rpb24pOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHVuc2ln
bmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKSBjb25zdAoreworICAgIGlmIChtX3Vw
ZGF0aW5nRnJvbVN0YXRlTm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Nyb2xsaW5nVHJl
ZSgpLmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHNjcm9sbGluZ05vZGUoKS5zY3Jv
bGxpbmdOb2RlSUQoKSwgaG9yaXpvbnRhbCwgdmVydGljYWwpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9M
TElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IGMxODBkYTJmZS4uY2U5Y2NlZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkwLDYgKzkwLDggQEAKIAkJMEY4NTBGRTcx
RUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY4NTBGRTUxRUQ3QzM5RjAw
RkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oICovOyB9OwogCQkwRjkzMUMx
QzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzFD
MUExOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MuaCAqLzsgfTsKIAkJMEY5MzFDMUQxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjkzMUMxQjE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAqLzsgfTsKKwkJMEY5MzFDMUMxOEM1NzExOTAw
REJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMxQzFBMThDNTcxMTkw
MERCQjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggKi87IH07
CisJCTBGOTMxQzFEMThDNTcxMTkwMERCQjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5MzFDMUIxOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1MubW0gKi87IH07CiAJCTBGQjY1OTIzMTIwOEI0REIwMDQ0ODE2QyAvKiBE
cmF3aW5nQXJlYUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQjY1OTIyMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCAqLzsg
fTsKIAkJMEZDQjRFNDYxOEJCRTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkNCNEUzNjE4QkJF
MDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGxJT1MuaCAqLzsgfTsKIAkJMEZDQjRFNDcxOEJC
RTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDQjRFMzcxOEJCRTA0NDAwMEZDRkM5IC8qIFBh
Z2VDbGllbnRJbXBsSU9TLm1tICovOyB9OwpAQCAtMjI5Niw2ICsyMjk4LDggQEAKIAkJMEY4NTBG
RTUxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY5MzFDMUExOEM1NzExOTAwREJBN0Mz
IC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlP
Uy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjkzMUMxQjE4QzU3MTE5MDBEQkE3
QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGOTMxQzFBMThD
NTcxMTkwMERCQjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlRGVsZWdhdGVJT1MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MzFDMUIx
OEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRkI2NTkyMjEyMDhCNERCMDA0NDgxNkMgLyogRHJhd2luZ0FyZWFJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdpbmdBcmVhSW5mby5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRkMwODU2RTE4N0NFMEE5MDA3ODBEODYgLyogX19pbml0X18ucHkg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNj
cmlwdC5weXRob247IG5hbWUgPSBfX2luaXRfXy5weTsgcGF0aCA9IHdlYmtpdC9fX2luaXRfXy5w
eTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDg1NkYxODdDRTBBOTAwNzgwRDg2
IC8qIG1lc3NhZ2VzLnB5ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBuYW1lID0gbWVzc2FnZXMucHk7IHBhdGggPSB3
ZWJraXQvbWVzc2FnZXMucHk7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NDQzLDYg
KzU0NDcsOCBAQAogCQkJCTBGMEMzNjVCMThDMDVDQTEwMEY2MDdENyAvKiBSZW1vdGVTY3JvbGxp
bmdDb29yZGluYXRvclByb3h5SU9TLm1tICovLAogCQkJCTBGOTMxQzFBMThDNTcxMTkwMERCQTdD
MyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggKi8sCiAJCQkJMEY5
MzFDMUIxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1MubW0gKi8sCisJCQkJMEY5MzFDMUExOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCAqLywKKwkJCQkwRjkzMUMxQjE4QzU3MTE5MDBE
QkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTg3MTcs
NiArODcyMyw3IEBACiAJCQkJMUFBQjRBOEQxMjk2RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRl
bnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUxRTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBT
YW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkz
MUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9k
ZUlPUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5MzFDMUMxOEM1NzExOTAwREJCOEQ0IC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxRDEzMDU0MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVzdERhdGEuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxRDEzMDU2MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VE
YXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTc5MDg4RjE2OUJBQTZBMDA2OTA0QzcgLyogU2Vj
SXRlbVNoaW0uaCBpbiBIZWFkZXJzICovLApAQCAtMTAzMDEsNiArMTAzMDgsNyBAQAogCQkJCUUx
RTU1MkM0MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGlhdGlvblBhcmFtZXRlcnNN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMTlCREE4QjE5MzY4RDQ2MDBCOTdGNTcgLyogU2Fu
ZGJveFV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGOTMxQzFEMThDNTcxMTkwMERC
QTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY5MzFDMUQxOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MUQxMzA1MzEzODJF
QUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3REYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUUxNzkwODhEMTY5QkFBNjIwMDY5MDRDNyAvKiBTZWNJdGVtU2hpbS5j
cHAgaW4gU291cmNlcyAqLywKLS0gCjIuMTQuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319887</attachid>
            <date>2017-09-05 01:56:05 -0700</date>
            <delta_ts>2017-09-06 05:01:27 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>0001-Bug-174097-Introduce-ScrollingTreeScrollingNodeDeleg.patch</filename>
            <type>text/plain</type>
            <size>44519</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">RnJvbSA0NzY2NDJiYjU5Yjg2NDU4ZDljMjgwMWNhZWUyYTY0NTBhMGI0Yzg0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/RnI9QzM9QTlkPUMzPUE5cmljPTIwV2FuZz89
IDxmd2FuZ0BpZ2FsaWEuY29tPgpEYXRlOiBNb24sIDQgU2VwIDIwMTcgMTA6NTE6NDYgKzAyMDAK
U3ViamVjdDogW1BBVENIXSBCdWcgMTc0MDk3IC0gSW50cm9kdWNlIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MKIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBvdmVyZmxvdyBhbmQg
ZnJhbWUgc2Nyb2xsaW5nCgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgIDI1ICsrKysrCiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogICB8ICAxMCArKwogLi4uL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggICAgfCAgIDggKysKIC4uLi9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlLmNwcCAgICAgICAgIHwgIDU2ICsrKysrKysrKysrCiAuLi4vc2Ny
b2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCB8ICA1MyArKysrKysr
KysrCiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICA2MiArKysrKysrKysrKysKIC4uLi9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUy5oICAgIHwgIDEyICstLQogLi4uL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tICAgfCAxMDkgKysrKysrKy0tLS0tLS0tLS0tLS0tCiAuLi4vaW9zL1Nj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCAgICB8ICA2NCArKysrKysrKysr
KysKIC4uLi9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSAgIHwg
IDk5ICsrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogICAgIHwgICA4ICsrCiAxMSBmaWxlcyBjaGFuZ2VkLCA0MjEgaW5zZXJ0
aW9ucygrKSwgODUgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUy5tbQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOWVjYjgyMzIuLjhhZGQzNjZkOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA5LTA0ICBGcsOpZMOpcmljIFdhbmcgIDxmd2FuZ0Bp
Z2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBvdmVyZmxvdyBhbmQgZnJhbWUgc2Ny
b2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzQwOTcKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBObyBu
ZXcgdGVzdHMsIGJlaGF2aW9yIHVuY2hhbmdlZC4KKworICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGUuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aDogTWFrZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlIGEKKyAgICAgICAgZnJp
ZW5kIHNvIHRoYXQgaXQgY2FuIGFjY2VzcyBwcml2YXRlIG1lbWJlcnMuCisgICAgICAgICogcGFn
ZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHA6IEFkZGVk
LiBOZXcgZGVsZWdhdGUgY2xhc3MgZm9yIGEKKyAgICAgICAgc2Nyb2xsaW5nIG5vZGUsIHdoaWNo
IGlzIHVzZWQgYnkgdGhlIFVJIHByb2Nlc3MuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlKToKKyAgICAgICAgQ29uc3RydWN0b3IsIHRha2luZyB0aGUgc2Nyb2xsaW5nIG5vZGUgYXMg
YSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOjpzY3JvbGxpbmdU
cmVlIGNvbnN0KTogRXhwb3NlIHRoZSBzY3JvbGxpbmcKKyAgICAgICAgdHJlZSBjb250YWluaW5n
IHRoZSBzY3JvbGxpbmcgbm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbiBjb25zdCk6IEV4
cG9zZQorICAgICAgICB0aGUgbGFzdCBjb21taXR0ZWQgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBz
Y3JvbGxpbmcgbm9kZS4KKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTo6c2Nyb2xsaW5nTm9kZSk6IEV4cG9zZSB0aGUgc2Ny
b2xsaW5nIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlOjpzY3JvbGxpbmdOb2RlIGNvbnN0KTogRGl0dG8uCisKIDIwMTctMDktMDMgIFl1
c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgUmVtb3ZlICJt
YWxsb2MiIGFuZCAiZnJlZSIgdXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWYxOTM5MGFkLi45N2YxYWQ5OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTM4
NjcsNiArMzg2Nyw4IEBACiAJCTkzOTFBOTkxMTYyNzQ2Q0IwMDI5NzMzMCAvKiBTY3JvbGxpbmdD
b29yZGluYXRvck1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM5MUE5OTAxNjI3NDZDQjAwMjk3MzMwIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFj
LmggKi87IH07CiAJCTkzOTFBOTlDMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzkxQTk5QTE2MjlENkZGMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuY3BwICovOyB9OwogCQk5MzkxQTk5RDE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzOTFBOTlCMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUE2RDVBOTlDMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE2RDVBOTlBMTYyOUQ2RkYwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlLmNwcCAqLzsgfTsKKwkJQTZENUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE2RDVBOTlCMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM5MjE0NjkxOEE2RDc5MTAwMEVFNjg4IC8qIFRleHRJdGVy
YXRvckJlaGF2aW9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MzkyMTQ2ODE4QTZENzkxMDAwRUU2ODggLyogVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5MzkyMjYy
RjEwMzIxMDg0MDA2RTdENUQgLyogSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MzkyMjYyRTEwMzIxMDg0MDA2RTdE
NUQgLyogSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAgKi87IH07CiAJCTkzOTJGMTQyMEFEMTg1RjQw
MDY5MUJENCAvKiBSZW5kZXJDb3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5MzkyRjE0MTBBRDE4NUY0MDA2OTFCRDQgLyogUmVuZGVyQ291bnRl
ci5oICovOyB9OwpAQCAtMTIxNDYsNiArMTIxNDgsOCBAQAogCQk5MzkxQTk5MDE2Mjc0NkNCMDAy
OTczMzAgLyogU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTM5MUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTM5MUE5OUIxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE2RDVBOTlBMTYyOUQ2RkYwMDI5
NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNkQ1QTk5QjE2MjlENzAw
MDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTIxNDY4MThBNkQ3OTEwMDBF
RTY4OCAvKiBUZXh0SXRlcmF0b3JCZWhhdmlvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZXh0SXRlcmF0b3JCZWhhdmlvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzkyMjYyRTEwMzIxMDg0MDA2RTdENUQgLyogSlNDU1NSdWxlTGlzdEN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NTU1J1bGVMaXN0Q3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTM5MkYxNDEwQUQxODVGNDAwNjkx
QkQ0IC8qIFJlbmRlckNvdW50ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlbmRlckNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2ODU0LDYg
KzE2ODU4LDggQEAKIAkJCQkwRkM0RTQwQzE4N0Y4MkUxMDA0NTg4MkMgLyogU2Nyb2xsaW5nVHJl
ZUZyYW1lU2Nyb2xsaW5nTm9kZUlPUy5tbSAqLywKIAkJCQkwRkM0RTQwOTE4N0Y4MkUxMDA0NTg4
MkMgLyogU2Nyb2xsaW5nVHJlZUlPUy5jcHAgKi8sCiAJCQkJMEZDNEU0MEExODdGODJFMTAwNDU4
ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuaCAqLywKKwkJCQkxQjk0RTQwOTE4N0Y4MkUxMDA0NTg4
MkMgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAgKi8sCisJCQkJMUI5
NEU0MEExODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGUuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTE3MzE4LDYgKzE3MzI0LDggQEAKIAkJCQkwRkVBM0U3RTE5MUIzMTY5MDAwRjFCNTUg
LyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oICovLAogCQkJCTkzOTFBOTlB
MTYyOUQ2RkYwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAgKi8sCiAJ
CQkJOTM5MUE5OUIxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
LmggKi8sCisJCQkJQTZENUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGUuY3BwICovLAorCQkJCUE2RDVBOTlCMTYyOUQ3MDAwMDI5NzMzMCAv
KiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggKi8sCiAJCQkJN0FBRkU4Q0Qx
OUNCODY3MjAwMEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5nU3RhdGUuY3BwICovLAogCQkJCTdBQUZF
OENFMTlDQjg2NzIwMDBGNTZEOCAvKiBTY3JvbGxMYXRjaGluZ1N0YXRlLmggKi8sCiAJCQkJRjQ2
NzI5MjUxRTBERTVBQjAwQUNDM0Q4IC8qIFNjcm9sbFNuYXBPZmZzZXRzSW5mby5oICovLApAQCAt
Mjk3MTgsNiArMjk3MjYsNyBAQAogCQkJCTFBQUFEREU0MTREQzhDOEYwMEFGNjRCMyAvKiBTY3Jv
bGxpbmdUcmVlTm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZFQTNFODAxOTFCMzE2OTAwMEYx
QjU1IC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzOTFBOTlEMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTZENUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8qIFNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
Qjg4OTBBMTY3RDJGQTEwMDEwQ0RBNSAvKiBTY3JvbGxpbmdUcmVlU3RpY2t5Tm9kZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJN0FBRkU4RDAxOUNCODY3MjAwMEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5n
U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0Nzg3NTU0MTk5ODNBRkYwMDI0QTI4NyAvKiBT
Y3JvbGxTbmFwQW5pbWF0b3JTdGF0ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzYyMiw2ICszMzYz
MSw3IEBACiAJCQkJMUFBQURERTMxNERDOEM4RjAwQUY2NEIzIC8qIFNjcm9sbGluZ1RyZWVOb2Rl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUEzRTdGMTkxQjMxNjkwMDBGMUI1NSAvKiBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkz
OTFBOTlDMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlBNkQ1QTk5QzE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkI4ODkw
QjE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3QUFGRThDRjE5Q0I4NjcyMDAwRjU2RDggLyogU2Nyb2xsTGF0Y2hpbmdTdGF0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNDc4NzU1NTE5OTgzQUZGMDAyNEEyODcgLyogU2Ny
b2xsU25hcEFuaW1hdG9yU3RhdGUubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
CmluZGV4IDVhM2RlODdmNS4uZGEwMzQzMjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgKQEAgLTMz
LDEyICszMywyMCBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAjaW5jbHVk
ZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKIAorI2lmIFBMQVRGT1JNKElPUykKK2NsYXNzIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBTY3JvbGxpbmdUcmVlOwogY2xhc3MgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlOwogCiBjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSA6IHB1YmxpYyBTY3Jv
bGxpbmdUcmVlTm9kZSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGZyaWVuZCBjbGFzcyBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOworI2VuZGlmCisKIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MC4uOWRhYWM3NzVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAKQEAgLTAsMCArMSw1
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5MLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCIKKworI2lmIFBMQVRGT1JNKElPUykgJiYgRU5B
QkxFKEFTWU5DX1NDUk9MTElORykKKworI2ltcG9ydCAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlKFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdOb2RlKQorICAgIDogbV9zY3JvbGxpbmdOb2RlKHNj
cm9sbGluZ05vZGUpCit7Cit9CisKK1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6
On5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlKCkKK3sKK30KKworU2Nyb2xsaW5n
VHJlZSYgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTo6c2Nyb2xsaW5nVHJlZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2Nyb2xsaW5nTm9kZS5zY3JvbGxpbmdUcmVlKCk7Cit9
CisKK0Zsb2F0UG9pbnQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTo6bGFzdENv
bW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxpbmdO
b2RlLmxhc3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpICYmIEVOQUJMRShBU1lOQ19TQ1JPTExJ
TkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwLi5lODhkN2M3YzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRl
LmgKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2FsaWEgUy5M
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIFBM
QVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBGbG9hdFBvaW50OworY2xhc3MgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGU7CitjbGFzcyBTY3JvbGxpbmdUcmVlOworCitjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZURlbGVnYXRlIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VYUE9SVCBleHBsaWNpdCBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlKFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
Jik7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZSgpOworICAgIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdO
b2RlKCkgeyByZXR1cm4gbV9zY3JvbGxpbmdOb2RlOyB9CisgICAgY29uc3QgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGlu
Z05vZGU7IH0KKworcHJvdGVjdGVkOgorICAgIFdFQkNPUkVfRVhQT1JUIFNjcm9sbGluZ1RyZWUm
IHNjcm9sbGluZ1RyZWUoKSBjb25zdDsKKyAgICBXRUJDT1JFX0VYUE9SVCBGbG9hdFBvaW50IGxh
c3RDb21taXR0ZWRTY3JvbGxQb3NpdGlvbigpIGNvbnN0OworCitwcml2YXRlOgorICAgIFNjcm9s
bGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBtX3Njcm9sbGluZ05vZGU7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1MpICYmIEVOQUJMRShBU1lOQ19T
Q1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGRhOGQ4ZGRjMi4uYTdiM2ZjZGY4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDY1IEBACisyMDE3LTA5LTA0ICBGcsOpZMOpcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEu
Y29tPgorCisgICAgICAgIEludHJvZHVjZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBvdmVyZmxvdyBhbmQgZnJhbWUgc2Nyb2xsaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwOTcK
KworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBUaGlzIHBhdGNo
IGludHJvZHVjZXMgYSBuZXcgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyB0
aGF0IGNhbiBiZSB1c2VkIGJ5CisgICAgICAgIFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUg
dG8gY29tbXVuaWNhdGUgdG8gdGhlIHNjcm9sbGluZyB0cmVlIGFuZCBub2Rlcy4gSXQgY2FuIGFs
c28gYmUKKyAgICAgICAgdXNlZCBhcyBhIGhlbHBlciBjbGFzcyBieSBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TLiBGb3Igbm93LCBvbmx5IHRoZSBub24tCisgICAgICAgIG92
ZXJyaWRlbiBtZW1iZXIgZnVuY3Rpb25zIG9mIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGlu
Z05vZGVJT1MgYXJlIG1vdmVkIHRvIHRoYXQgbmV3CisgICAgICAgIGNsYXNzLiBJbiBmb2xsb3ct
dXAgY29tbWl0cywgV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBjYW4gYmVjb21lIGEgZ2Vu
ZXJpYworICAgICAgICBTY3JvbGxWaWV3RGVsZWdhdGUgYW5kIG1vcmUgY29kZSBjYW4gYmUgbW92
ZWQgaW50byB0aGUgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUworICAgICAg
ICBmaWxlLiBGcmFtZSBzY3JvbGxpbmcgbm9kZXMgd2lsbCB0aGVuIGJlIGFibGUgdG8gc2hhcmUg
dGhlIHNhbWUgVUkgY29kZSBhcyBvdmVyZmxvdzphdXRvIHdoZW4KKyAgICAgICAgaU9TIGZyYW1l
IHNjcm9sbGluZyBpcyBpbXBsZW1lbnRlZCAoYnVnIDE0OTI2NCkuCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TLmg6IE1vdmUgbm9uLW92ZXJyaWRlbiBtZW1iZXIKKyAgICAgICAgZnVuY3Rpb25zIGFu
ZCBtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZSBpbnRvIHRoZSBkZWxlZ2F0ZSBjbGFzcy4gQWxzbyBk
ZWZpbmUgYSBtZW1iZXIgdG8gc3RvcmUKKyAgICAgICAgdGhhdCBkZWxlZ2F0ZS4KKyAgICAgICAg
KiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLm1tOiBVc2UgdGhlIG5vZGUgZGVsZWdhdGUgdG8KKyAgICAgICAgY29tbXVu
aWNhdGUgdG8gdGhlIHNjcm9sbGluZyB0cmVlIGFuZCBub2RlLgorICAgICAgICAoLVtXS092ZXJm
bG93U2Nyb2xsVmlld0RlbGVnYXRlIGluaXRXaXRoU2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZTpd
KTogSW5pdCB3aXRoIGEgZGVsZWdhdGUuCisgICAgICAgICgtW1dLT3ZlcmZsb3dTY3JvbGxWaWV3
RGVsZWdhdGUgc2Nyb2xsVmlld0RpZFNjcm9sbDpdKTogQ2FsbCB0aGUgZGVsZWdhdGUgZnVuY3Rp
b24uCisgICAgICAgICgtW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgc2Nyb2xsVmlld1dp
bGxCZWdpbkRyYWdnaW5nOl0pOiBEaXR0by4KKyAgICAgICAgKC1bV0tPdmVyZmxvd1Njcm9sbFZp
ZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOndpdGhWZWxvY2l0eTp0YXJnZXRD
b250ZW50T2Zmc2V0Ol0pOgorICAgICAgICBVc2UgdGhlIGRlbGVnYXRlIGZ1bmN0aW9ucyBvciBw
YXNzIGJ5IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNjcm9sbGluZ05v
ZGUoKS4KKyAgICAgICAgKC1bV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3
RGlkRW5kRHJhZ2dpbmc6d2lsbERlY2VsZXJhdGU6XSk6IFVzZSB0aGUgZGVsZWdhdGUKKyAgICAg
ICAgZnVuY3Rpb25zLgorICAgICAgICAoLVtXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIHNj
cm9sbFZpZXdEaWRFbmREZWNlbGVyYXRpbmc6XSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TKToKKyAgICAgICAgSW5pdCB0aGUgZGVsZWdhdGUgZm9yIHRoaXMg
Y2xhc3MuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6IFVzZSB0aGUgZGVsZWdhdGUuCisgICAg
ICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnNldFNj
cm9sbExheWVyUG9zaXRpb24pOiBVc2UgdGhlIGRlbGVnYXRlCisgICAgICAgIGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1
cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbCk6IERpdHRvLgorICAgICAgICAoLVtXS092
ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIGluaXRXaXRoU2Nyb2xsaW5nVHJlZU5vZGU6XSk6IERl
bGV0ZWQuIFRoaXMgaXMgcmVuYW1lZAorICAgICAgICBpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2Rl
RGVsZWdhdGUgYW5kIGFjY2VwdHMgYSBkZWxlZ2F0ZS4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Ny
b2xsKTogRGVsZXRlZC4gTW92ZWQKKyAgICAgICAgdG8gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUzo6b3ZlcmZsb3dTY3JvbGxXaWxsU3RhcnQpOiBEaXR0by4KKyAgICAgICAg
KFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6b3ZlcmZsb3dT
Y3JvbGxEaWRFbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUzo6b3ZlcmZsb3dTY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVy
ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOjpzY3JvbGxWaWV3RGlkU2Nyb2xsKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJ
bmRpY2VzRGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVy
VHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oOiBBZGRlZC4g
TmV3IGRlbGVnYXRlIGNsYXNzCisgICAgICAgIGZvciBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLiBUaGUgbWVtYmVycyB1c2VkIGJ5IFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVs
ZWdhdGUKKyAgICAgICAgYXJlIHB1YmxpYyBhbmQgdGhlIG90aGVycyBhcmUgcHJpdmF0ZS4gU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyBpcyBhIGZyaWVuZCBvZgorICAgICAg
ICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIHNvIHRoYXQgaXQgY2FuIGFj
Y2VzcyBwcml2YXRlIG1lbWJlcnMgZS5nLgorICAgICAgICB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJT
Y3JvbGwoKSBvciAgbV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUuCisgICAgICAgICogVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1M6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MpOgorICAg
ICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp+U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyk6CisgICAgICAgIChXZWJLaXQ6OlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnVwZGF0ZUNoaWxkTm9kZXNBZnRl
clNjcm9sbCk6IENvZGUgZXh0cmFjdGVkCisgICAgICAgIGZyb20gU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUy4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsV2lsbFN0YXJ0KTogRGl0dG8uCisgICAgICAgIChX
ZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNjcm9sbERpZEVu
ZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TOjpzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSk6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxW
aWV3RGlkU2Nyb2xsKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKTog
RGl0dG8uCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZCBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIGZpbGVzIHRvIHRoZQorICAgICAg
ICBidWlsZCBzeXN0ZW0uCisKIDIwMTctMDktMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dh
cmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtUaHJlYWRlZCBDb21wb3NpdG9yXSBEZWFkbG9j
ayBpbiBUaHJlYWRlZERpc3BsYXlSZWZyZXNoTW9uaXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRy
ZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAppbmRleCA4MWIx
YzdjYzQuLmY0ZGZlNDQzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVt
b3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmgKQEAgLTM1LDE3ICszNSwxMyBAQCBPQkpD
X0NMQVNTIFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGU7CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOworCiBjbGFz
cyBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TIDogcHVibGljIFdlYkNvcmU6
OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUgewogcHVibGljOgogICAgIHN0YXRp
YyBSZWY8U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUz4gY3JlYXRlKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWUmLCBXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQpOwogICAgIHZpcnR1
YWwgflNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MoKTsKIAotICAgIHZvaWQg
b3ZlcmZsb3dTY3JvbGxXaWxsU3RhcnQoKTsKLSAgICB2b2lkIG92ZXJmbG93U2Nyb2xsRGlkRW5k
KCk7Ci0gICAgdm9pZCBvdmVyZmxvd1Njcm9sbFZpZXdXaWxsU3RhcnRQYW5HZXN0dXJlKCk7Ci0g
ICAgdm9pZCBzY3JvbGxWaWV3RGlkU2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCBi
b29sIGluVXNlckludGVyYWN0aW9uKTsKLSAgICB2b2lkIGN1cnJlbnRTbmFwUG9pbnRJbmRpY2Vz
RGlkQ2hhbmdlKHVuc2lnbmVkIGhvcml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKTsKLQogICAg
IENBTGF5ZXIgKnNjcm9sbExheWVyKCkgY29uc3QgeyByZXR1cm4gbV9zY3JvbGxMYXllci5nZXQo
KTsgfQogCiBwcml2YXRlOgpAQCAtNjUsMTMgKzYxLDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGhhbmRsZVdoZWVsRXZlbnQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1XaGVlbEV2ZW50Jikgb3Zl
cnJpZGUgeyB9CiAKLSAgICB2b2lkIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChjb25zdCBX
ZWJDb3JlOjpGbG9hdFBvaW50Jik7Ci0gICAgCiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Ny
b2xsTGF5ZXI7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IG1fc2Nyb2xsZWRDb250ZW50c0xheWVy
OwogCiAgICAgUmV0YWluUHRyPFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGU+IG1fc2Nyb2xs
Vmlld0RlbGVnYXRlOwotICAgIGJvb2wgbV91cGRhdGluZ0Zyb21TdGF0ZU5vZGU7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M+IG1fc2Ny
b2xsaW5nTm9kZURlbGVnYXRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MubW0KaW5kZXggYWMxY2NlNGYyLi4xZTlhYWVlYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXll
clRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0KQEAgLTM0
LDcgKzM0LDYgQEAKICNpbXBvcnQgPFVJS2l0L1VJU2Nyb2xsVmlldy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9TY3JvbGxpbmdUcmVlLmg+Ci0jaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVGcmFt
ZVNjcm9sbGluZ05vZGUuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja09iakNFeGNlcHRpb25zLmg+CiAj
aW1wb3J0IDx3dGYvU2V0Rm9yU2NvcGUuaD4KIApAQCAtNDMsMzEgKzQyLDMzIEBACiAjaW1wb3J0
IDxXZWJDb3JlL1Njcm9sbFNuYXBPZmZzZXRzSW5mby5oPgogI2VuZGlmCiAKKyNpbXBvcnQgIlNj
cm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCIKKwogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIEBpbnRlcmZhY2UgV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSA6IE5T
T2JqZWN0IDxVSVNjcm9sbFZpZXdEZWxlZ2F0ZT4gewotICAgIFdlYktpdDo6U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyogX3Njcm9sbGluZ1RyZWVOb2RlOworICAgIFdlYktp
dDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyogX3Njcm9sbGluZ1RyZWVO
b2RlRGVsZWdhdGU7CiB9CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzSW5Vc2Vy
SW50ZXJhY3Rpb24pIEJPT0wgaW5Vc2VySW50ZXJhY3Rpb247CiAKLS0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlOihXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MqKW5vZGU7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTY3JvbGxpbmdU
cmVlTm9kZURlbGVnYXRlOihXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MqKWRlbGVnYXRlOwogCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS092ZXJmbG93U2Ny
b2xsVmlld0RlbGVnYXRlCiAKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNjcm9sbGluZ1RyZWVO
b2RlOihXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MqKW5vZGUK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aFNjcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGU6KFdlYktp
dDo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyopZGVsZWdhdGUKIHsKICAg
ICBpZiAoKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUg
PSBub2RlOworICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZSA9IGRlbGVnYXRlOwog
CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKIC0gKHZvaWQpc2Nyb2xsVmlld0RpZFNjcm9sbDooVUlT
Y3JvbGxWaWV3ICopc2Nyb2xsVmlldwogewotICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+c2Nyb2xs
Vmlld0RpZFNjcm9sbChzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQsIF9pblVzZXJJbnRlcmFjdGlv
bik7CisgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbFZpZXdEaWRTY3JvbGwo
c2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCBfaW5Vc2VySW50ZXJhY3Rpb24pOwogfQogCiAtICh2
b2lkKXNjcm9sbFZpZXdXaWxsQmVnaW5EcmFnZ2luZzooVUlTY3JvbGxWaWV3ICopc2Nyb2xsVmll
dwpAQCAtNzUsOCArNzYsOCBAQCAtICh2b2lkKXNjcm9sbFZpZXdXaWxsQmVnaW5EcmFnZ2luZzoo
VUlTY3JvbGxWaWV3ICopc2Nyb2xsVmlldwogICAgIF9pblVzZXJJbnRlcmFjdGlvbiA9IFlFUzsK
IAogICAgIGlmIChzY3JvbGxWaWV3LnBhbkdlc3R1cmVSZWNvZ25pemVyLnN0YXRlID09IFVJR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuKQotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPm92
ZXJmbG93U2Nyb2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUoKTsKLSAgICBfc2Nyb2xsaW5nVHJl
ZU5vZGUtPm92ZXJmbG93U2Nyb2xsV2lsbFN0YXJ0KCk7CisgICAgICAgIF9zY3JvbGxpbmdUcmVl
Tm9kZURlbGVnYXRlLT5zY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgpOworICAgIF9zY3Jv
bGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxXaWxsU3RhcnQoKTsKIH0KIAogI2lmIEVOQUJM
RShDU1NfU0NST0xMX1NOQVApCkBAIC04NSwyOCArODYsMjggQEAgLSAodm9pZClzY3JvbGxWaWV3
V2lsbEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpdGhWZWxvY2l0eToo
Q0dQb2kKICAgICBDR0Zsb2F0IGhvcml6b250YWxUYXJnZXQgPSB0YXJnZXRDb250ZW50T2Zmc2V0
LT54OwogICAgIENHRmxvYXQgdmVydGljYWxUYXJnZXQgPSB0YXJnZXRDb250ZW50T2Zmc2V0LT55
OwogCi0gICAgdW5zaWduZWQgb3JpZ2luYWxIb3Jpem9udGFsU25hcFBvc2l0aW9uID0gX3Njcm9s
bGluZ1RyZWVOb2RlLT5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCk7Ci0gICAgdW5z
aWduZWQgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3NpdGlvbiA9IF9zY3JvbGxpbmdUcmVlTm9kZS0+
Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKTsKKyAgICB1bnNpZ25lZCBvcmlnaW5hbEhv
cml6b250YWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xs
aW5nTm9kZSgpLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKTsKKyAgICB1bnNpZ25l
ZCBvcmlnaW5hbFZlcnRpY2FsU25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdh
dGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50VmVydGljYWxTbmFwUG9pbnRJbmRleCgpOwogCi0g
ICAgaWYgKCFfc2Nyb2xsaW5nVHJlZU5vZGUtPmhvcml6b250YWxTbmFwT2Zmc2V0cygpLmlzRW1w
dHkoKSkgeworICAgIGlmICghX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05v
ZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldHMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5zaWdu
ZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RT
bmFwT2Zmc2V0KF9zY3JvbGxpbmdUcmVlTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRzKCksIF9z
Y3JvbGxpbmdUcmVlTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZzZXRSYW5nZXMoKSwgaG9yaXpvbnRh
bFRhcmdldCwgdmVsb2NpdHkueCwgaW5kZXgpOwotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUt
PnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoaW5kZXgpOworICAgICAgICBmbG9h
dCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0U25hcE9mZnNldChfc2Nyb2xsaW5nVHJl
ZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxTbmFwT2Zmc2V0cygpLCBf
c2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmhvcml6b250YWxTbmFw
T2Zmc2V0UmFuZ2VzKCksIGhvcml6b250YWxUYXJnZXQsIHZlbG9jaXR5LngsIGluZGV4KTsKKyAg
ICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5zZXRDdXJy
ZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGluZGV4KTsKICAgICAgICAgaWYgKGhvcml6b250
YWxUYXJnZXQgPj0gMCAmJiBob3Jpem9udGFsVGFyZ2V0IDw9IHNjcm9sbFZpZXcuY29udGVudFNp
emUud2lkdGgpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50T2Zmc2V0LT54ID0gcG90ZW50aWFs
U25hcFBvc2l0aW9uOwogICAgIH0KIAotICAgIGlmICghX3Njcm9sbGluZ1RyZWVOb2RlLT52ZXJ0
aWNhbFNuYXBPZmZzZXRzKCkuaXNFbXB0eSgpKSB7CisgICAgaWYgKCFfc2Nyb2xsaW5nVHJlZU5v
ZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2FsU25hcE9mZnNldHMoKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNu
YXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0KF9zY3JvbGxpbmdUcmVlTm9kZS0+dmVydGlj
YWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5vZGUtPnZlcnRpY2FsU25hcE9mZnNldFJh
bmdlcygpLCB2ZXJ0aWNhbFRhcmdldCwgdmVsb2NpdHkueSwgaW5kZXgpOwotICAgICAgICBfc2Ny
b2xsaW5nVHJlZU5vZGUtPnNldEN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KGluZGV4KTsK
KyAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9uID0gY2xvc2VzdFNuYXBPZmZzZXQo
X3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS52ZXJ0aWNhbFNuYXBP
ZmZzZXRzKCksIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkudmVy
dGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCksIHZlcnRpY2FsVGFyZ2V0LCB2ZWxvY2l0eS55LCBpbmRl
eCk7CisgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCku
c2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoaW5kZXgpOwogICAgICAgICBpZiAodmVy
dGljYWxUYXJnZXQgPj0gMCAmJiB2ZXJ0aWNhbFRhcmdldCA8PSBzY3JvbGxWaWV3LmNvbnRlbnRT
aXplLmhlaWdodCkKICAgICAgICAgICAgIHRhcmdldENvbnRlbnRPZmZzZXQtPnkgPSBwb3RlbnRp
YWxTbmFwUG9zaXRpb247CiAgICAgfQogCi0gICAgaWYgKG9yaWdpbmFsSG9yaXpvbnRhbFNuYXBQ
b3NpdGlvbiAhPSBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXgoKQotICAgICAgICB8fCBvcmlnaW5hbFZlcnRpY2FsU25hcFBvc2l0aW9uICE9IF9zY3Jv
bGxpbmdUcmVlTm9kZS0+Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKSkgewotICAgICAg
ICBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKF9z
Y3JvbGxpbmdUcmVlTm9kZS0+Y3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpLCBfc2Ny
b2xsaW5nVHJlZU5vZGUtPmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOworICAgIGlm
IChvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gIT0gX3Njcm9sbGluZ1RyZWVOb2RlRGVs
ZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KCkK
KyAgICAgICAgfHwgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3NpdGlvbiAhPSBfc2Nyb2xsaW5nVHJl
ZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4KCkpIHsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPmN1cnJlbnRTbmFw
UG9pbnRJbmRpY2VzRGlkQ2hhbmdlKF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxp
bmdOb2RlKCkuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJbmRleCgpLCBfc2Nyb2xsaW5nVHJl
ZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRWZXJ0aWNhbFNuYXBQb2ludElu
ZGV4KCkpOwogICAgIH0KIH0KICNlbmRpZgpAQCAtMTE1LDggKzExNiw4IEBAIC0gKHZvaWQpc2Ny
b2xsVmlld0RpZEVuZERyYWdnaW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3IHdpbGxEZWNl
bGVyYXRlOihCT09MCiB7CiAgICAgaWYgKF9pblVzZXJJbnRlcmFjdGlvbiAmJiAhd2lsbERlY2Vs
ZXJhdGUpIHsKICAgICAgICAgX2luVXNlckludGVyYWN0aW9uID0gTk87Ci0gICAgICAgIF9zY3Jv
bGxpbmdUcmVlTm9kZS0+c2Nyb2xsVmlld0RpZFNjcm9sbChzY3JvbGxWaWV3LmNvbnRlbnRPZmZz
ZXQsIF9pblVzZXJJbnRlcmFjdGlvbik7Ci0gICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+b3Zl
cmZsb3dTY3JvbGxEaWRFbmQoKTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUt
PnNjcm9sbFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCBfaW5Vc2VySW50
ZXJhY3Rpb24pOworICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsRGlk
RW5kKCk7CiAgICAgfQogfQogCkBAIC0xMjQsOCArMTI1LDggQEAgLSAodm9pZClzY3JvbGxWaWV3
RGlkRW5kRGVjZWxlcmF0aW5nOihVSVNjcm9sbFZpZXcgKilzY3JvbGxWaWV3CiB7CiAgICAgaWYg
KF9pblVzZXJJbnRlcmFjdGlvbikgewogICAgICAgICBfaW5Vc2VySW50ZXJhY3Rpb24gPSBOTzsK
LSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlLT5zY3JvbGxWaWV3RGlkU2Nyb2xsKHNjcm9sbFZp
ZXcuY29udGVudE9mZnNldCwgX2luVXNlckludGVyYWN0aW9uKTsKLSAgICAgICAgX3Njcm9sbGlu
Z1RyZWVOb2RlLT5vdmVyZmxvd1Njcm9sbERpZEVuZCgpOworICAgICAgICBfc2Nyb2xsaW5nVHJl
ZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsVmlld0RpZFNjcm9sbChzY3JvbGxWaWV3LmNvbnRlbnRPZmZz
ZXQsIF9pblVzZXJJbnRlcmFjdGlvbik7CisgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVn
YXRlLT5zY3JvbGxEaWRFbmQoKTsKICAgICB9CiB9CiAKQEAgLTE0MCw3ICsxNDEsNyBAQCBSZWY8
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUz4gU2Nyb2xsaW5nVHJlZU92ZXJm
bG93U2Nyb2xsaW5nTm9kZUlPUwogCiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TOjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TKFdlYkNvcmU6OlNjcm9s
bGluZ1RyZWUmIHNjcm9sbGluZ1RyZWUsIFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCBub2RlSUQp
CiAgICAgOiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlKHNjcm9sbGluZ1RyZWUs
IG5vZGVJRCkKLSAgICAsIG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlKGZhbHNlKQorICAgICwgbV9z
Y3JvbGxpbmdOb2RlRGVsZWdhdGUoc3RkOjptYWtlX3VuaXF1ZTxTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TPigqdGhpcykpCiB7CiB9CiAKQEAgLTE1NCw2ICsxNTUsMTAgQEAg
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6flNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1MoKQogICAgICAgICAgICAgc2Nyb2xsVmlldy5kZWxlZ2F0ZSA9
IG5pbDsKICAgICB9CiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUworCisgICAgLy8gV0tP
dmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBob2xkcyBhIHBvaW50ZXIgdG8gU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUywgc28gd2UgZW5zdXJlIGl0IGlzIGRlc3Ryb3llZCBm
aXJzdC4KKyAgICBtX3Njcm9sbFZpZXdEZWxlZ2F0ZS5jbGVhcigpOworICAgIG1fc2Nyb2xsaW5n
Tm9kZURlbGVnYXRlLnJlc2V0KCk7CiB9CiAKIHZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUzo6Y29tbWl0U3RhdGVCZWZvcmVDaGlsZHJlbihjb25zdCBXZWJDb3JlOjpT
Y3JvbGxpbmdTdGF0ZU5vZGUmIHN0YXRlTm9kZSkKQEAgLTE4MSw3ICsxODYsNyBAQCB2b2lkIFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGls
ZHJlbihjb25zdCBTY3JvbAogewogICAgIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05v
ZGU6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihzdGF0ZU5vZGUpOwogCi0gICAgU2V0Rm9yU2Nv
cGU8Ym9vbD4gdXBkYXRpbmdDaGFuZ2UobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUsIHRydWUpOwor
ICAgIFNldEZvclNjb3BlPGJvb2w+IHVwZGF0aW5nQ2hhbmdlKG1fc2Nyb2xsaW5nTm9kZURlbGVn
YXRlLT5tX3VwZGF0aW5nRnJvbVN0YXRlTm9kZSwgdHJ1ZSk7CiAKICAgICBjb25zdCBhdXRvJiBz
Y3JvbGxpbmdTdGF0ZU5vZGUgPSBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZT4oc3RhdGVOb2RlKTsKIApAQCAtMTk2LDcgKzIwMSw3IEBAIHZvaWQgU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y29tbWl0U3RhdGVBZnRlckNoaWxkcmVuKGNv
bnN0IFNjcm9sCiAKICAgICAgICAgaWYgKHNjcm9sbGluZ1N0YXRlTm9kZS5oYXNDaGFuZ2VkUHJv
cGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpTY3JvbGxMYXllcikpIHsKICAgICAg
ICAgICAgIGlmICghbV9zY3JvbGxWaWV3RGVsZWdhdGUpCi0gICAgICAgICAgICAgICAgbV9zY3Jv
bGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBh
bGxvY10gaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZTp0aGlzXSk7CisgICAgICAgICAgICAgICAg
bV9zY3JvbGxWaWV3RGVsZWdhdGUgPSBhZG9wdE5TKFtbV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOm1fc2Nyb2xsaW5n
Tm9kZURlbGVnYXRlLmdldCgpXSk7CiAKICAgICAgICAgICAgIHNjcm9sbFZpZXcuc2Nyb2xsc1Rv
VG9wID0gTk87CiAgICAgICAgICAgICBzY3JvbGxWaWV3LmRlbGVnYXRlID0gbV9zY3JvbGxWaWV3
RGVsZWdhdGUuZ2V0KCk7CkBAIC0yNjAsNjAgKzI2NSwxMiBAQCB2b2lkIFNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24oY29uc3QgRmxv
YXRQbwogewogICAgIFttX3Njcm9sbExheWVyIHNldFBvc2l0aW9uOkNHUG9pbnRNYWtlKC1zY3Jv
bGxQb3NpdGlvbi54KCkgKyBzY3JvbGxPcmlnaW4oKS54KCksIC1zY3JvbGxQb3NpdGlvbi55KCkg
KyBzY3JvbGxPcmlnaW4oKS55KCkpXTsKIAotICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9s
bChzY3JvbGxQb3NpdGlvbik7CisgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdhdGUtPnVwZGF0ZUNo
aWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7CiB9CiAKIHZvaWQgU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRlTGF5ZXJzQWZ0ZXJEZWxlZ2F0ZWRT
Y3JvbGwoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCiB7Ci0gICAgdXBkYXRlQ2hp
bGROb2Rlc0FmdGVyU2Nyb2xsKHNjcm9sbFBvc2l0aW9uKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwo
Y29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCi17Ci0gICAgaWYgKCFtX2NoaWxkcmVu
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBGbG9hdFJlY3QgZml4ZWRQb3NpdGlvblJlY3Q7Ci0g
ICAgU2Nyb2xsaW5nVHJlZUZyYW1lU2Nyb2xsaW5nTm9kZSogZnJhbWVOb2RlID0gZW5jbG9zaW5n
RnJhbWVOb2RlKCk7Ci0gICAgaWYgKGZyYW1lTm9kZSAmJiBmcmFtZU5vZGUtPnBhcmVudCgpKQot
ICAgICAgICBmaXhlZFBvc2l0aW9uUmVjdCA9IGZyYW1lTm9kZS0+Zml4ZWRQb3NpdGlvblJlY3Qo
KTsKLSAgICBlbHNlCi0gICAgICAgIGZpeGVkUG9zaXRpb25SZWN0ID0gc2Nyb2xsaW5nVHJlZSgp
LmZpeGVkUG9zaXRpb25SZWN0KCk7Ci0gICAgRmxvYXRTaXplIHNjcm9sbERlbHRhID0gbGFzdENv
bW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkgLSBzY3JvbGxQb3NpdGlvbjsKLQotICAgIGZvciAoYXV0
byYgY2hpbGQgOiAqbV9jaGlsZHJlbikKLSAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVy
QW5jZXN0b3JDaGFuZ2UoKnRoaXMsIGZpeGVkUG9zaXRpb25SZWN0LCBzY3JvbGxEZWx0YSk7Ci19
Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6b3ZlcmZsb3dT
Y3JvbGxXaWxsU3RhcnQoKQotewotICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9k
ZVdpbGxTdGFydFNjcm9sbCgpOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1M6Om92ZXJmbG93U2Nyb2xsRGlkRW5kKCkKLXsKLSAgICBzY3JvbGxpbmdUcmVl
KCkuc2Nyb2xsaW5nVHJlZU5vZGVEaWRFbmRTY3JvbGwoKTsKLX0KLQotdm9pZCBTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpvdmVyZmxvd1Njcm9sbFZpZXdXaWxsU3RhcnRQ
YW5HZXN0dXJlKCkKLXsKLSAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVXaWxs
U3RhcnRQYW5HZXN0dXJlKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUzo6c2Nyb2xsVmlld0RpZFNjcm9sbChjb25zdCBGbG9hdFBvaW50JiBzY3JvbGxQ
b3NpdGlvbiwgYm9vbCBpblVzZXJJbnRlcmFjdGlvbikKLXsKLSAgICBpZiAobV91cGRhdGluZ0Zy
b21TdGF0ZU5vZGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNjcm9sbGluZ1RyZWUoKS5zY3Jv
bGxQb3NpdGlvbkNoYW5nZWRWaWFEZWxlZ2F0ZWRTY3JvbGxpbmcoc2Nyb2xsaW5nTm9kZUlEKCks
IHNjcm9sbFBvc2l0aW9uLCBpblVzZXJJbnRlcmFjdGlvbik7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6Y3VycmVudFNuYXBQb2ludEluZGljZXNEaWRD
aGFuZ2UodW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpCi17Ci0gICAgaWYg
KG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2Ny
b2xsaW5nVHJlZSgpLmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHNjcm9sbGluZ05v
ZGVJRCgpLCBob3Jpem9udGFsLCB2ZXJ0aWNhbCk7CisgICAgbV9zY3JvbGxpbmdOb2RlRGVsZWdh
dGUtPnVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbChzY3JvbGxQb3NpdGlvbik7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwLi4wMmE5OTNjM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1MuaApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3
IElnYWxpYSBTLkwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW5j
bHVkZSA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRQb2ludDsKK2NsYXNzIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlOworCit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOworCitjbGFzcyBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIDogcHVibGljIFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGUgeworICAgIGZyaWVuZCBjbGFzcyBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TOworCitwdWJsaWM6CisgICAgZXhwbGljaXQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyhXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZSYpOworICAgIH5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKCkg
ZmluYWw7CisKKyAgICB2b2lkIHNjcm9sbFdpbGxTdGFydCgpIGNvbnN0OworICAgIHZvaWQgc2Ny
b2xsRGlkRW5kKCkgY29uc3Q7CisgICAgdm9pZCBzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVy
ZSgpIGNvbnN0OworICAgIHZvaWQgc2Nyb2xsVmlld0RpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JiBzY3JvbGxQb3NpdGlvbiwgYm9vbCBpblVzZXJJbnRlcmFjdGlvbikgY29uc3Q7
CisgICAgdm9pZCBjdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZSh1bnNpZ25lZCBob3Jp
em9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1
cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Ny
b2xsUG9zaXRpb24pOworCisgICAgYm9vbCBtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFC
TEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMC4uOGJiYmFiZTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TLm1tCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTcgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
LmgiCisKKyNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisKKyNp
bXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxp
bmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3Bh
Y2UgV2ViS2l0IHsKKworU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6U2Ny
b2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyhTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZSYgc2Nyb2xsaW5nTm9kZSkKKyAgICA6IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGUoc2Nyb2xsaW5nTm9kZSkKKyAgICAsIG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlKGZhbHNl
KQoreworfQorCitTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjp+U2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUygpCit7Cit9CisKK3ZvaWQgU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xs
KGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQoreworICAgIGlmICghc2Nyb2xsaW5n
Tm9kZSgpLmNoaWxkcmVuKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0UmVjdCBmaXhl
ZFBvc2l0aW9uUmVjdDsKKyAgICBTY3JvbGxpbmdUcmVlRnJhbWVTY3JvbGxpbmdOb2RlKiBmcmFt
ZU5vZGUgPSBzY3JvbGxpbmdOb2RlKCkuZW5jbG9zaW5nRnJhbWVOb2RlKCk7CisgICAgaWYgKGZy
YW1lTm9kZSAmJiBmcmFtZU5vZGUtPnBhcmVudCgpKQorICAgICAgICBmaXhlZFBvc2l0aW9uUmVj
dCA9IGZyYW1lTm9kZS0+Zml4ZWRQb3NpdGlvblJlY3QoKTsKKyAgICBlbHNlCisgICAgICAgIGZp
eGVkUG9zaXRpb25SZWN0ID0gc2Nyb2xsaW5nVHJlZSgpLmZpeGVkUG9zaXRpb25SZWN0KCk7Cisg
ICAgRmxvYXRTaXplIHNjcm9sbERlbHRhID0gbGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCkg
LSBzY3JvbGxQb3NpdGlvbjsKKworICAgIGZvciAoYXV0byYgY2hpbGQgOiAqc2Nyb2xsaW5nTm9k
ZSgpLmNoaWxkcmVuKCkpCisgICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9y
Q2hhbmdlKHNjcm9sbGluZ05vZGUoKSwgZml4ZWRQb3NpdGlvblJlY3QsIHNjcm9sbERlbHRhKTsK
K30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxX
aWxsU3RhcnQoKSBjb25zdAoreworICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9k
ZVdpbGxTdGFydFNjcm9sbCgpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1M6OnNjcm9sbERpZEVuZCgpIGNvbnN0Cit7CisgICAgc2Nyb2xsaW5nVHJlZSgp
LnNjcm9sbGluZ1RyZWVOb2RlRGlkRW5kU2Nyb2xsKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJl
ZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUo
KSBjb25zdAoreworICAgIHNjcm9sbGluZ1RyZWUoKS5zY3JvbGxpbmdUcmVlTm9kZVdpbGxTdGFy
dFBhbkdlc3R1cmUoKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TOjpzY3JvbGxWaWV3RGlkU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQmIHNjcm9sbFBvc2l0
aW9uLCBib29sIGluVXNlckludGVyYWN0aW9uKSBjb25zdAoreworICAgIGlmIChtX3VwZGF0aW5n
RnJvbVN0YXRlTm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgc2Nyb2xsaW5nVHJlZSgpLnNj
cm9sbFBvc2l0aW9uQ2hhbmdlZFZpYURlbGVnYXRlZFNjcm9sbGluZyhzY3JvbGxpbmdOb2RlKCku
c2Nyb2xsaW5nTm9kZUlEKCksIHNjcm9sbFBvc2l0aW9uLCBpblVzZXJJbnRlcmFjdGlvbik7Cit9
CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6Y3VycmVudFNu
YXBQb2ludEluZGljZXNEaWRDaGFuZ2UodW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVy
dGljYWwpIGNvbnN0Cit7CisgICAgaWYgKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBzY3JvbGxpbmdUcmVlKCkuY3VycmVudFNuYXBQb2ludEluZGljZXNE
aWRDaGFuZ2Uoc2Nyb2xsaW5nTm9kZSgpLnNjcm9sbGluZ05vZGVJRCgpLCBob3Jpem9udGFsLCB2
ZXJ0aWNhbCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZP
Uk0oSU9TKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzE4MGRhMmZlLi5jZTljY2VmY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtOTAsNiArOTAsOCBAQAogCQkwRjg1MEZFNzFFRDdDMzlGMDBGQjc3QTcgLyogV2ViUGVyZm9y
bWFuY2VMb2dnaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjg1MEZFNTFFRDdDMzlGMDBGQjc3QTcgLyogV2ViUGVyZm9ybWFuY2VMb2dn
aW5nQ2xpZW50LmggKi87IH07CiAJCTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMUMxQTE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oICovOyB9OwogCQkwRjkzMUMxRDE4QzU3
MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGOTMxQzFCMThD
NTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1t
ICovOyB9OworCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY5MzFDMUExOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3Jv
bGxpbmdOb2RlRGVsZWdhdGVJT1MuaCAqLzsgfTsKKwkJMEY5MzFDMUQxOEM1NzExOTAwREJCOEQ0
IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMUMxQjE4QzU3MTE5MDBEQkI4
RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSAqLzsgfTsKIAkJ
MEZCNjU5MjMxMjA4QjREQjAwNDQ4MTZDIC8qIERyYXdpbmdBcmVhSW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCNjU5MjIxMjA4QjREQjAwNDQ4
MTZDIC8qIERyYXdpbmdBcmVhSW5mby5oICovOyB9OwogCQkwRkNCNEU0NjE4QkJFMDQ0MDAwRkNG
QzkgLyogUGFnZUNsaWVudEltcGxJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGQ0I0RTM2MThCQkUwNDQwMDBGQ0ZDOSAvKiBQYWdlQ2xpZW50SW1w
bElPUy5oICovOyB9OwogCQkwRkNCNEU0NzE4QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudElt
cGxJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RkNCNEUzNzE4QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGxJT1MubW0gKi87IH07CkBA
IC0yMjk2LDYgKzIyOTgsOCBAQAogCQkwRjg1MEZFNTFFRDdDMzlGMDBGQjc3QTcgLyogV2ViUGVy
Zm9ybWFuY2VMb2dnaW5nQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYlBlcmZvcm1hbmNlTG9nZ2luZ0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjkzMUMxQTE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGOTMxQzFCMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MzFDMUExOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjkzMUMxQjE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQjY1OTIyMTIwOEI0REIwMDQ0ODE2QyAv
KiBEcmF3aW5nQXJlYUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHJh
d2luZ0FyZWFJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA4NTZFMTg3
Q0UwQTkwMDc4MEQ4NiAvKiBfX2luaXRfXy5weSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnB5dGhvbjsgbmFtZSA9IF9faW5pdF9f
LnB5OyBwYXRoID0gd2Via2l0L19faW5pdF9fLnB5OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRkMwODU2RjE4N0NFMEE5MDA3ODBEODYgLyogbWVzc2FnZXMucHkgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247
IG5hbWUgPSBtZXNzYWdlcy5weTsgcGF0aCA9IHdlYmtpdC9tZXNzYWdlcy5weTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTU0NDMsNiArNTQ0Nyw4IEBACiAJCQkJMEYwQzM2NUIxOEMw
NUNBMTAwRjYwN0Q3IC8qIFJlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yUHJveHlJT1MubW0gKi8s
CiAJCQkJMEY5MzFDMUExOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MuaCAqLywKIAkJCQkwRjkzMUMxQjE4QzU3MTE5MDBEQkE3QzMgLyogU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAqLywKKwkJCQkwRjkzMUMxQTE4
QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5o
ICovLAorCQkJCTBGOTMxQzFCMThDNTcxMTkwMERCQjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBpb3M7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtODcxNyw2ICs4NzIzLDcgQEAKIAkJCQkxQUFCNEE4RDEy
OTZGMEEyMDAyMzk1MkYgLyogU2FuZGJveEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTFFNTUyQzUxNkFFMDY1RjAwNEVENjUzIC8qIFNhbmRib3hJbml0aWFsaXphdGlvblBhcmFtZXRl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGOTMxQzFDMThDNTcxMTkwMERCQTdDMyAvKiBTY3Jv
bGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjkzMUMxQzE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFEMTMwNTQxMzgyRUFDMDAwMzUxRUREIC8q
IFNlY0l0ZW1SZXF1ZXN0RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFEMTMwNTYxMzgyRUFD
MDAwMzUxRUREIC8qIFNlY0l0ZW1SZXNwb25zZURhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
NzkwODhGMTY5QkFBNkEwMDY5MDRDNyAvKiBTZWNJdGVtU2hpbS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0xMDMwMSw2ICsxMDMwOCw3IEBACiAJCQkJRTFFNTUyQzQxNkFFMDY1RjAwNEVENjUzIC8qIFNh
bmRib3hJbml0aWFsaWF0aW9uUGFyYW1ldGVyc01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUx
OUJEQThCMTkzNjhENDYwMEI5N0Y1NyAvKiBTYW5kYm94VXRpbGl0aWVzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY5MzFDMUQxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxv
d1Njcm9sbGluZ05vZGVJT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQkwRjkzMUMxRDE4QzU3MTE5
MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTUxRDEzMDUzMTM4MkVBQzAwMDM1MUVERCAvKiBTZWNJdGVtUmVxdWVz
dERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEMTMwNTUxMzgyRUFDMDAwMzUxRUREIC8q
IFNlY0l0ZW1SZXNwb25zZURhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTE3OTA4OEQxNjlC
QUE2MjAwNjkwNEM3IC8qIFNlY0l0ZW1TaGltLmNwcCBpbiBTb3VyY2VzICovLAotLSAKMi4xNC4x
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320009</attachid>
            <date>2017-09-06 05:01:31 -0700</date>
            <delta_ts>2017-09-06 05:42:50 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-174097-20170906140129.patch</filename>
            <type>text/plain</type>
            <size>43593</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjAyMmVkOTAwZWI3NmJk
NjdkNzY5ZTZhMzZhNWJlOWZlYTdhOGZhYS4uY2VhNjUzNjg5ODk0Nzk2MGVmZTQyZmE3YzhjYjY5
NDFiYzgzODRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA5LTA2ICBGcsOp
ZMOpcmljIFdhbmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBv
dmVyZmxvdyBhbmQgZnJhbWUgc2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzQwOTcKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBObyBuZXcgdGVzdHMsIGJlaGF2aW9yIHVuY2hhbmdlZC4KKworICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogQWRkIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGUuaDogTWFrZSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlIGEKKyAgICAgICAgZnJpZW5kIHNvIHRoYXQgaXQgY2FuIGFjY2VzcyBwcml2YXRlIG1l
bWJlcnMuCisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZS5jcHA6IEFkZGVkLiBOZXcgZGVsZWdhdGUgY2xhc3MgZm9yIGEKKyAgICAgICAg
c2Nyb2xsaW5nIG5vZGUsIHdoaWNoIGlzIHVzZWQgYnkgdGhlIFVJIHByb2Nlc3MuCisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlKToKKyAgICAgICAgQ29uc3RydWN0b3IsIHRha2luZyB0
aGUgc2Nyb2xsaW5nIG5vZGUgYXMgYSBwYXJhbWV0ZXIuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlOjpzY3JvbGxpbmdUcmVlIGNvbnN0KTogRXhwb3NlIHRoZSBzY3JvbGxpbmcKKyAg
ICAgICAgdHJlZSBjb250YWluaW5nIHRoZSBzY3JvbGxpbmcgbm9kZS4KKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU6Omxhc3RDb21taXR0ZWRTY3Jv
bGxQb3NpdGlvbiBjb25zdCk6IEV4cG9zZQorICAgICAgICB0aGUgbGFzdCBjb21taXR0ZWQgc2Ny
b2xsIHBvc2l0aW9uIG9mIHRoZSBzY3JvbGxpbmcgbm9kZS4KKyAgICAgICAgKiBwYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZTo6c2Nyb2xsaW5n
Tm9kZSk6IEV4cG9zZSB0aGUgc2Nyb2xsaW5nIG5vZGUuCisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOjpzY3JvbGxpbmdOb2RlIGNvbnN0KTogRGl0
dG8uCisKIDIwMTctMDktMDYgIE1hbnVlbCBSZWdvIENhc2Fzbm92YXMgIDxyZWdvQGlnYWxpYS5j
b20+CiAKICAgICAgICAgW2Nzcy1ncmlkXSBncmlkIHNob3J0aGFuZCBzaG91bGQgbm90IHJlc2V0
IHRoZSBndXR0ZXIgcHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhMjllMzU5YzYyYTI5MmY5NGQyNjgz
ZDY5MmQyZDIyZDNiYzRlMDEzLi44ZTdiOWNiOTU4YjhhNzNjODY0YTc1ZmRhNmE3Yzc2YWI2YjUz
ZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE3LTA5LTA2ICBGcsOpZMOpcmljIFdh
bmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgorCisgICAgICAgIEludHJvZHVjZSBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIHRvIHNoYXJlIGNvZGUgYmV0d2VlbiBvdmVyZmxvdyBh
bmQgZnJhbWUgc2Nyb2xsaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzQwOTcKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKwor
ICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUyB0aGF0IGNhbiBiZSB1c2VkIGJ5CisgICAgICAgIFdLT3ZlcmZsb3dT
Y3JvbGxWaWV3RGVsZWdhdGUgdG8gY29tbXVuaWNhdGUgdG8gdGhlIHNjcm9sbGluZyB0cmVlIGFu
ZCBub2Rlcy4gSXQgY2FuIGFsc28gYmUKKyAgICAgICAgdXNlZCBhcyBhIGhlbHBlciBjbGFzcyBi
eSBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLiBGb3Igbm93LCBvbmx5IHRo
ZSBub24tCisgICAgICAgIG92ZXJyaWRlbiBtZW1iZXIgZnVuY3Rpb25zIG9mIFNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MgYXJlIG1vdmVkIHRvIHRoYXQgbmV3CisgICAgICAg
IGNsYXNzLiBJbiBmb2xsb3ctdXAgY29tbWl0cywgV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0
ZSBjYW4gYmVjb21lIGEgZ2VuZXJpYworICAgICAgICBTY3JvbGxWaWV3RGVsZWdhdGUgYW5kIG1v
cmUgY29kZSBjYW4gYmUgbW92ZWQgaW50byB0aGUgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZUlPUworICAgICAgICBmaWxlLiBGcmFtZSBzY3JvbGxpbmcgbm9kZXMgd2lsbCB0aGVu
IGJlIGFibGUgdG8gc2hhcmUgdGhlIHNhbWUgVUkgY29kZSBhcyBvdmVyZmxvdzphdXRvIHdoZW4K
KyAgICAgICAgaU9TIGZyYW1lIHNjcm9sbGluZyBpcyBpbXBsZW1lbnRlZCAoYnVnIDE0OTI2NCku
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVl
T3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLmg6IE1vdmUgbm9uLW92ZXJyaWRlbiBtZW1iZXIKKyAg
ICAgICAgZnVuY3Rpb25zIGFuZCBtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZSBpbnRvIHRoZSBkZWxl
Z2F0ZSBjbGFzcy4gQWxzbyBkZWZpbmUgYSBtZW1iZXIgdG8gc3RvcmUKKyAgICAgICAgdGhhdCBk
ZWxlZ2F0ZS4KKyAgICAgICAgKiBVSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tOiBVc2UgdGhlIG5vZGUgZGVsZWdhdGUg
dG8KKyAgICAgICAgY29tbXVuaWNhdGUgdG8gdGhlIHNjcm9sbGluZyB0cmVlIGFuZCBub2RlLgor
ICAgICAgICAoLVtXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIGluaXRXaXRoU2Nyb2xsaW5n
VHJlZU5vZGVEZWxlZ2F0ZTpdKTogSW5pdCB3aXRoIGEgZGVsZWdhdGUuCisgICAgICAgICgtW1dL
T3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgc2Nyb2xsVmlld0RpZFNjcm9sbDpdKTogQ2FsbCB0
aGUgZGVsZWdhdGUgZnVuY3Rpb24uCisgICAgICAgICgtW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVs
ZWdhdGUgc2Nyb2xsVmlld1dpbGxCZWdpbkRyYWdnaW5nOl0pOiBEaXR0by4KKyAgICAgICAgKC1b
V0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZSBzY3JvbGxWaWV3V2lsbEVuZERyYWdnaW5nOndp
dGhWZWxvY2l0eTp0YXJnZXRDb250ZW50T2Zmc2V0Ol0pOgorICAgICAgICBVc2UgdGhlIGRlbGVn
YXRlIGZ1bmN0aW9ucyBvciBwYXNzIGJ5IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1M6OnNjcm9sbGluZ05vZGUoKS4KKyAgICAgICAgKC1bV0tPdmVyZmxvd1Njcm9sbFZpZXdE
ZWxlZ2F0ZSBzY3JvbGxWaWV3RGlkRW5kRHJhZ2dpbmc6d2lsbERlY2VsZXJhdGU6XSk6IFVzZSB0
aGUgZGVsZWdhdGUKKyAgICAgICAgZnVuY3Rpb25zLgorICAgICAgICAoLVtXS092ZXJmbG93U2Ny
b2xsVmlld0RlbGVnYXRlIHNjcm9sbFZpZXdEaWRFbmREZWNlbGVyYXRpbmc6XSk6IERpdHRvLgor
ICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpT
Y3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TKToKKyAgICAgICAgSW5pdCB0aGUg
ZGVsZWdhdGUgZm9yIHRoaXMgY2xhc3MuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVP
dmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbik6IFVzZSB0
aGUgZGVsZWdhdGUuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1M6OnNldFNjcm9sbExheWVyUG9zaXRpb24pOiBVc2UgdGhlIGRlbGVnYXRlCisg
ICAgICAgIGZ1bmN0aW9uLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TOjp1cGRhdGVMYXllcnNBZnRlckRlbGVnYXRlZFNjcm9sbCk6IERpdHRv
LgorICAgICAgICAoLVtXS092ZXJmbG93U2Nyb2xsVmlld0RlbGVnYXRlIGluaXRXaXRoU2Nyb2xs
aW5nVHJlZU5vZGU6XSk6IERlbGV0ZWQuIFRoaXMgaXMgcmVuYW1lZAorICAgICAgICBpbml0V2l0
aFNjcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUgYW5kIGFjY2VwdHMgYSBkZWxlZ2F0ZS4KKyAgICAg
ICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6dXBkYXRl
Q2hpbGROb2Rlc0FmdGVyU2Nyb2xsKTogRGVsZXRlZC4gTW92ZWQKKyAgICAgICAgdG8gU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUy4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6b3ZlcmZsb3dTY3JvbGxXaWxsU3RhcnQp
OiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZUlPUzo6b3ZlcmZsb3dTY3JvbGxEaWRFbmQpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6b3ZlcmZsb3dTY3JvbGxWaWV3
V2lsbFN0YXJ0UGFuR2VzdHVyZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdU
cmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpzY3JvbGxWaWV3RGlkU2Nyb2xsKTogRGl0dG8u
CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6
OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogVUlQ
cm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZUlPUy5oOiBBZGRlZC4gTmV3IGRlbGVnYXRlIGNsYXNzCisgICAgICAgIGZvciBTY3JvbGxp
bmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLiBUaGUgbWVtYmVycyB1c2VkIGJ5IFdLT3Zl
cmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUKKyAgICAgICAgYXJlIHB1YmxpYyBhbmQgdGhlIG90aGVy
cyBhcmUgcHJpdmF0ZS4gU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyBpcyBh
IGZyaWVuZCBvZgorICAgICAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9T
IHNvIHRoYXQgaXQgY2FuIGFjY2VzcyBwcml2YXRlIG1lbWJlcnMgZS5nLgorICAgICAgICB1cGRh
dGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoKSBvciAgbV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUuCisg
ICAgICAgICogVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZUlPUy5tbTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGVJT1MpOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TOjp+U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUyk6Cisg
ICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnVw
ZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9sbCk6IENvZGUgZXh0cmFjdGVkCisgICAgICAgIGZyb20g
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy4KKyAgICAgICAgKFdlYktpdDo6
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUzo6c2Nyb2xsV2lsbFN0YXJ0KTog
RGl0dG8uCisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1M6OnNjcm9sbERpZEVuZCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVy
ZSk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlSU9TOjpzY3JvbGxWaWV3RGlkU2Nyb2xsKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJ
bmRpY2VzRGlkQ2hhbmdlKTogRGl0dG8uCisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TIGZp
bGVzIHRvIHRoZQorICAgICAgICBidWlsZCBzeXN0ZW0uCisKIDIwMTctMDktMDUgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPUyBXSzJdIEFkZCBw
bHVtYmluZyBmb3IgV0tDb250ZW50VmlldyB0byBhc2sgdGhlIHdlYiBwcm9jZXNzIGZvciBhZGRp
dGlvbmFsIGRyYWcgaXRlbXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA4MGFiYzlhNzQ2YjJkYWVhMmNhOGRhNzZhMDc4NGZiNzQ1
NzI2ODlhLi45ODJmMmIyY2VjM2YzNzU1ZDdhODNiODZjNzU4OGFiNmIwYTY2MmRmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
ODkyLDYgKzM4OTIsOCBAQAogCQk5MzkxQTk5MTE2Mjc0NkNCMDAyOTczMzAgLyogU2Nyb2xsaW5n
Q29vcmRpbmF0b3JNYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzOTFBOTkwMTYyNzQ2Q0IwMDI5NzMzMCAvKiBTY3JvbGxpbmdDb29yZGluYXRvck1h
Yy5oICovOyB9OwogCQk5MzkxQTk5QzE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNj
cm9sbGluZ05vZGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM5MUE5OUExNjI5RDZGRjAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlLmNwcCAqLzsgfTsKIAkJOTM5MUE5OUQxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MzkxQTk5QjE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQlBNkQ1QTk5QzE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBBNkQ1QTk5QTE2MjlENkZGMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVE
ZWxlZ2F0ZS5jcHAgKi87IH07CisJCUE2RDVBOTlEMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxp
bmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNkQ1QTk5QjE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5n
VHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTkzOTIxNDY5MThBNkQ3OTEwMDBFRTY4OCAvKiBUZXh0SXRl
cmF0b3JCZWhhdmlvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTM5MjE0NjgxOEE2RDc5MTAwMEVFNjg4IC8qIFRleHRJdGVyYXRvckJlaGF2aW9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTM5MjI2
MkYxMDMyMTA4NDAwNkU3RDVEIC8qIEpTQ1NTUnVsZUxpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTM5MjI2MkUxMDMyMTA4NDAwNkU3
RDVEIC8qIEpTQ1NTUnVsZUxpc3RDdXN0b20uY3BwICovOyB9OwogCQk5MzkyRjE0MjBBRDE4NUY0
MDA2OTFCRDQgLyogUmVuZGVyQ291bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTM5MkYxNDEwQUQxODVGNDAwNjkxQkQ0IC8qIFJlbmRlckNvdW50
ZXIuaCAqLzsgfTsKQEAgLTEyMjE3LDYgKzEyMjE5LDggQEAKIAkJOTM5MUE5OTAxNjI3NDZDQjAw
Mjk3MzMwIC8qIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzOTFBOTlBMTYyOUQ2RkYwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3Jv
bGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzOTFBOTlCMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNkQ1QTk5QTE2MjlENkZGMDAy
OTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURl
bGVnYXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTZENUE5OUIxNjI5RDcw
MDAwMjk3MzMwIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxl
Z2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkyMTQ2ODE4QTZENzkxMDAw
RUU2ODggLyogVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGV4dEl0ZXJhdG9yQmVoYXZpb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTM5MjI2MkUxMDMyMTA4NDAwNkU3RDVEIC8qIEpTQ1NTUnVsZUxpc3RDdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDU1NSdWxlTGlzdEN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzOTJGMTQxMEFEMTg1RjQwMDY5
MUJENCAvKiBSZW5kZXJDb3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSZW5kZXJDb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjkyMSw2
ICsxNjkyNSw4IEBACiAJCQkJMEZDNEU0MEMxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1Ry
ZWVGcmFtZVNjcm9sbGluZ05vZGVJT1MubW0gKi8sCiAJCQkJMEZDNEU0MDkxODdGODJFMTAwNDU4
ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuY3BwICovLAogCQkJCTBGQzRFNDBBMTg3RjgyRTEwMDQ1
ODgyQyAvKiBTY3JvbGxpbmdUcmVlSU9TLmggKi8sCisJCQkJMUI5NEU0MDkxODdGODJFMTAwNDU4
ODJDIC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwICovLAorCQkJCTFC
OTRFNDBBMTg3RjgyRTEwMDQ1ODgyQyAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0xNzM4NSw2ICsxNzM5MSw4IEBACiAJCQkJMEZFQTNFN0UxOTFCMzE2OTAwMEYxQjU1
IC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaCAqLywKIAkJCQk5MzkxQTk5
QTE2MjlENkZGMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3BwICovLAog
CQkJCTkzOTFBOTlCMTYyOUQ3MDAwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZS5oICovLAorCQkJCUE2RDVBOTlBMTYyOUQ2RkYwMDI5NzMzMCAvKiBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlLmNwcCAqLywKKwkJCQlBNkQ1QTk5QjE2MjlENzAwMDAyOTczMzAg
LyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oICovLAogCQkJCTdBQUZFOENE
MTlDQjg2NzIwMDBGNTZEOCAvKiBTY3JvbGxMYXRjaGluZ1N0YXRlLmNwcCAqLywKIAkJCQk3QUFG
RThDRTE5Q0I4NjcyMDAwRjU2RDggLyogU2Nyb2xsTGF0Y2hpbmdTdGF0ZS5oICovLAogCQkJCUY0
NjcyOTI1MUUwREU1QUIwMEFDQzNEOCAvKiBTY3JvbGxTbmFwT2Zmc2V0c0luZm8uaCAqLywKQEAg
LTI5ODQ0LDYgKzI5ODUyLDcgQEAKIAkJCQkxQUFBRERFNDE0REM4QzhGMDBBRjY0QjMgLyogU2Ny
b2xsaW5nVHJlZU5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUEzRTgwMTkxQjMxNjkwMDBG
MUI1NSAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk5MzkxQTk5RDE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUE2RDVBOTlEMTYyOUQ3MDAwMDI5NzMzMCAvKiBT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkI4ODkwQTE2N0QyRkExMDAxMENEQTUgLyogU2Nyb2xsaW5nVHJlZVN0aWNreU5vZGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTdBQUZFOEQwMTlDQjg2NzIwMDBGNTZEOCAvKiBTY3JvbGxMYXRjaGlu
Z1N0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlGNDc4NzU1NDE5OTgzQUZGMDAyNEEyODcgLyog
U2Nyb2xsU25hcEFuaW1hdG9yU3RhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzM3NTYsNiArMzM3
NjUsNyBAQAogCQkJCTFBQUFEREUzMTREQzhDOEYwMEFGNjRCMyAvKiBTY3JvbGxpbmdUcmVlTm9k
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBM0U3RjE5MUIzMTY5MDAwRjFCNTUgLyogU2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
MzkxQTk5QzE2MjlENzAwMDAyOTczMzAgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJQTZENUE5OUMxNjI5RDcwMDAwMjk3MzMwIC8qIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCODg5
MEIxNjdEMkZBMTAwMTBDREE1IC8qIFNjcm9sbGluZ1RyZWVTdGlja3lOb2RlLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0FBRkU4Q0YxOUNCODY3MjAwMEY1NkQ4IC8qIFNjcm9sbExhdGNoaW5nU3Rh
dGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjQ3ODc1NTUxOTk4M0FGRjAwMjRBMjg3IC8qIFNj
cm9sbFNuYXBBbmltYXRvclN0YXRlLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUu
aAppbmRleCA1YTNkZTg3ZjUwMmYyOGMyYjRiYmNjOWYzYmU0ZDIwZjJiZTk1M2QyLi5kYTAzNDMy
NWZhMzhkZDQ5YWFkZTMwMDRmNWUxMTdhN2M4MzllOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlLmgK
QEAgLTMzLDEyICszMywyMCBAQAogI2luY2x1ZGUgIlNjcm9sbGluZ0Nvb3JkaW5hdG9yLmgiCiAj
aW5jbHVkZSAiU2Nyb2xsaW5nVHJlZU5vZGUuaCIKIAorI2lmIFBMQVRGT1JNKElPUykKK2NsYXNz
IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGU7CisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTY3JvbGxpbmdUcmVlOwogY2xhc3MgU2Nyb2xsaW5nU3RhdGVT
Y3JvbGxpbmdOb2RlOwogCiBjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSA6IHB1Ymxp
YyBTY3JvbGxpbmdUcmVlTm9kZSB7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIGZyaWVuZCBjbGFz
cyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOworI2VuZGlmCisKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlkYWFjNzc1ZDdkMWI0ODVm
NTZlYWFlNDk3ZDI4OGY5NWIxNTE5MDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmNwcApA
QCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZS5oIgorCisjaWYgUExBVEZPUk0o
SU9TKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW1wb3J0ICJTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Njcm9sbGluZ1RyZWVT
Y3JvbGxpbmdOb2RlRGVsZWdhdGU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUo
U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGUmIHNjcm9sbGluZ05vZGUpCisgICAgOiBtX3Njcm9s
bGluZ05vZGUoc2Nyb2xsaW5nTm9kZSkKK3sKK30KKworU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZTo6flNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUoKQoreworfQor
CitTY3JvbGxpbmdUcmVlJiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlOjpzY3Jv
bGxpbmdUcmVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxpbmdOb2RlLnNjcm9sbGlu
Z1RyZWUoKTsKK30KKworRmxvYXRQb2ludCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlOjpsYXN0Q29tbWl0dGVkU2Nyb2xsUG9zaXRpb24oKSBjb25zdAoreworICAgIHJldHVybiBt
X3Njcm9sbGluZ05vZGUubGFzdENvbW1pdHRlZFNjcm9sbFBvc2l0aW9uKCk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFT
WU5DX1NDUk9MTElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lODhkN2M3YzM3MmY3MDRhZTdiNDlhMTI4MDBlN2Q4Yjg0YWU0M2E3Ci0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGVEZWxlZ2F0ZS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgSWdhbGlhIFMuTC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBQTEFURk9STShJT1MpICYmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRmxvYXRQb2ludDsKK2NsYXNzIFNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlOworY2xhc3MgU2Nyb2xsaW5nVHJlZTsKKworY2xhc3MgU2Nyb2xs
aW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZSB7CitwdWJsaWM6CisgICAgV0VCQ09SRV9FWFBP
UlQgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZShTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZSYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNjcm9sbGlu
Z1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGUoKTsKKyAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5n
Tm9kZSYgc2Nyb2xsaW5nTm9kZSgpIHsgcmV0dXJuIG1fc2Nyb2xsaW5nTm9kZTsgfQorICAgIGNv
bnN0IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBzY3JvbGxpbmdOb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9zY3JvbGxpbmdOb2RlOyB9CisKK3Byb3RlY3RlZDoKKyAgICBXRUJDT1JFX0VYUE9S
VCBTY3JvbGxpbmdUcmVlJiBzY3JvbGxpbmdUcmVlKCkgY29uc3Q7CisgICAgV0VCQ09SRV9FWFBP
UlQgRmxvYXRQb2ludCBsYXN0Q29tbWl0dGVkU2Nyb2xsUG9zaXRpb24oKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYgbV9zY3JvbGxpbmdOb2RlOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAm
JiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Nj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAppbmRleCA4MWIxYzdjYzQwZWNj
ZjVkOWUzMmViMTk2ZDJkZmZjN2Q3NWY2ZDI5Li5mNGRmZTQ0M2U5MTRlOTg5ODM4MjY3Mjg2MWZk
MjM0ODQ3MmVmMDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVM
YXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaApAQCAtMzUsMTcgKzM1LDEzIEBAIE9CSkNfQ0xB
U1MgV0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
K2NsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M7CisKIGNsYXNzIFNj
cm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MgOiBwdWJsaWMgV2ViQ29yZTo6U2Ny
b2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJl
ZjxTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TPiBjcmVhdGUoV2ViQ29yZTo6
U2Nyb2xsaW5nVHJlZSYsIFdlYkNvcmU6OlNjcm9sbGluZ05vZGVJRCk7CiAgICAgdmlydHVhbCB+
U2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUygpOwogCi0gICAgdm9pZCBvdmVy
Zmxvd1Njcm9sbFdpbGxTdGFydCgpOwotICAgIHZvaWQgb3ZlcmZsb3dTY3JvbGxEaWRFbmQoKTsK
LSAgICB2b2lkIG92ZXJmbG93U2Nyb2xsVmlld1dpbGxTdGFydFBhbkdlc3R1cmUoKTsKLSAgICB2
b2lkIHNjcm9sbFZpZXdEaWRTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGJvb2wg
aW5Vc2VySW50ZXJhY3Rpb24pOwotICAgIHZvaWQgY3VycmVudFNuYXBQb2ludEluZGljZXNEaWRD
aGFuZ2UodW5zaWduZWQgaG9yaXpvbnRhbCwgdW5zaWduZWQgdmVydGljYWwpOwotCiAgICAgQ0FM
YXllciAqc2Nyb2xsTGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbExheWVyLmdldCgpOyB9
CiAKIHByaXZhdGU6CkBAIC02NSwxMyArNjEsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgaGFu
ZGxlV2hlZWxFdmVudChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVdoZWVsRXZlbnQmKSBvdmVycmlk
ZSB7IH0KIAotICAgIHZvaWQgdXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKGNvbnN0IFdlYkNv
cmU6OkZsb2F0UG9pbnQmKTsKLSAgICAKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxM
YXllcjsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9zY3JvbGxlZENvbnRlbnRzTGF5ZXI7CiAK
ICAgICBSZXRhaW5QdHI8V0tPdmVyZmxvd1Njcm9sbFZpZXdEZWxlZ2F0ZT4gbV9zY3JvbGxWaWV3
RGVsZWdhdGU7Ci0gICAgYm9vbCBtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlPUz4gbV9zY3JvbGxp
bmdOb2RlRGVsZWdhdGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
bW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5t
bQppbmRleCBhYzFjY2U0ZjIxYmE4OGZkYTBjMDYyNjVkZTNhNTUwZjBmOWE1M2E1Li4xZTlhYWVl
YzQyNDU3ZDc2MDU5NzRjNzNhOGE0MDg5YzYyZDhkNmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVPdmVyZmxvd1Nj
cm9sbGluZ05vZGVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5
ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TLm1tCkBAIC0z
NCw3ICszNCw2IEBACiAjaW1wb3J0IDxVSUtpdC9VSVNjcm9sbFZpZXcuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGUuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2Nyb2xsaW5nVHJlZS5oPgotI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxpbmdUcmVlRnJh
bWVTY3JvbGxpbmdOb2RlLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL1NldEZvclNjb3BlLmg+CiAKQEAgLTQzLDMxICs0MiwzMyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9TY3JvbGxTbmFwT2Zmc2V0c0luZm8uaD4KICNlbmRpZgogCisjaW1wb3J0ICJT
Y3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmgiCisKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogCiBAaW50ZXJmYWNlIFdLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgOiBO
U09iamVjdCA8VUlTY3JvbGxWaWV3RGVsZWdhdGU+IHsKLSAgICBXZWJLaXQ6OlNjcm9sbGluZ1Ry
ZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MqIF9zY3JvbGxpbmdUcmVlTm9kZTsKKyAgICBXZWJL
aXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MqIF9zY3JvbGxpbmdUcmVl
Tm9kZURlbGVnYXRlOwogfQogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV9pc0luVXNl
ckludGVyYWN0aW9uKSBCT09MIGluVXNlckludGVyYWN0aW9uOwogCi0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZTooV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TKilub2RlOworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoU2Nyb2xsaW5n
VHJlZU5vZGVEZWxlZ2F0ZTooV2ViS2l0OjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVn
YXRlSU9TKilkZWxlZ2F0ZTsKIAogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tPdmVyZmxvd1Nj
cm9sbFZpZXdEZWxlZ2F0ZQogCi0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTY3JvbGxpbmdUcmVl
Tm9kZTooV2ViS2l0OjpTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TKilub2Rl
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlOihXZWJL
aXQ6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MqKWRlbGVnYXRlCiB7CiAg
ICAgaWYgKChzZWxmID0gW3N1cGVyIGluaXRdKSkKLSAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2Rl
ID0gbm9kZTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUgPSBkZWxlZ2F0ZTsK
IAogICAgIHJldHVybiBzZWxmOwogfQogCiAtICh2b2lkKXNjcm9sbFZpZXdEaWRTY3JvbGw6KFVJ
U2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKIHsKLSAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNjcm9s
bFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCBfaW5Vc2VySW50ZXJhY3Rp
b24pOworICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxWaWV3RGlkU2Nyb2xs
KHNjcm9sbFZpZXcuY29udGVudE9mZnNldCwgX2luVXNlckludGVyYWN0aW9uKTsKIH0KIAogLSAo
dm9pZClzY3JvbGxWaWV3V2lsbEJlZ2luRHJhZ2dpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZp
ZXcKQEAgLTc1LDggKzc2LDggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAgICAgX2luVXNl
ckludGVyYWN0aW9uID0gWUVTOwogCiAgICAgaWYgKHNjcm9sbFZpZXcucGFuR2VzdHVyZVJlY29n
bml6ZXIuc3RhdGUgPT0gVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQmVnYW4pCi0gICAgICAgIF9z
Y3JvbGxpbmdUcmVlTm9kZS0+b3ZlcmZsb3dTY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgp
OwotICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+b3ZlcmZsb3dTY3JvbGxXaWxsU3RhcnQoKTsKKyAg
ICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbFZpZXdXaWxsU3RhcnRQYW5H
ZXN0dXJlKCk7CisgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbFdpbGxTdGFy
dCgpOwogfQogCiAjaWYgRU5BQkxFKENTU19TQ1JPTExfU05BUCkKQEAgLTg1LDI4ICs4NiwyOCBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKICAgICBDR0Zsb2F0IGhvcml6b250YWxUYXJnZXQg
PSB0YXJnZXRDb250ZW50T2Zmc2V0LT54OwogICAgIENHRmxvYXQgdmVydGljYWxUYXJnZXQgPSB0
YXJnZXRDb250ZW50T2Zmc2V0LT55OwogCi0gICAgdW5zaWduZWQgb3JpZ2luYWxIb3Jpem9udGFs
U25hcFBvc2l0aW9uID0gX3Njcm9sbGluZ1RyZWVOb2RlLT5jdXJyZW50SG9yaXpvbnRhbFNuYXBQ
b2ludEluZGV4KCk7Ci0gICAgdW5zaWduZWQgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3NpdGlvbiA9
IF9zY3JvbGxpbmdUcmVlTm9kZS0+Y3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoKTsKKyAg
ICB1bnNpZ25lZCBvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gPSBfc2Nyb2xsaW5nVHJl
ZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50
SW5kZXgoKTsKKyAgICB1bnNpZ25lZCBvcmlnaW5hbFZlcnRpY2FsU25hcFBvc2l0aW9uID0gX3Nj
cm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50VmVydGljYWxT
bmFwUG9pbnRJbmRleCgpOwogCi0gICAgaWYgKCFfc2Nyb2xsaW5nVHJlZU5vZGUtPmhvcml6b250
YWxTbmFwT2Zmc2V0cygpLmlzRW1wdHkoKSkgeworICAgIGlmICghX3Njcm9sbGluZ1RyZWVOb2Rl
RGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5ob3Jpem9udGFsU25hcE9mZnNldHMoKS5pc0VtcHR5
KCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAgICAgIGZsb2F0IHBvdGVudGlhbFNu
YXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0KF9zY3JvbGxpbmdUcmVlTm9kZS0+aG9yaXpv
bnRhbFNuYXBPZmZzZXRzKCksIF9zY3JvbGxpbmdUcmVlTm9kZS0+aG9yaXpvbnRhbFNuYXBPZmZz
ZXRSYW5nZXMoKSwgaG9yaXpvbnRhbFRhcmdldCwgdmVsb2NpdHkueCwgaW5kZXgpOwotICAgICAg
ICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNldEN1cnJlbnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgo
aW5kZXgpOworICAgICAgICBmbG9hdCBwb3RlbnRpYWxTbmFwUG9zaXRpb24gPSBjbG9zZXN0U25h
cE9mZnNldChfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmhvcml6
b250YWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5n
Tm9kZSgpLmhvcml6b250YWxTbmFwT2Zmc2V0UmFuZ2VzKCksIGhvcml6b250YWxUYXJnZXQsIHZl
bG9jaXR5LngsIGluZGV4KTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNj
cm9sbGluZ05vZGUoKS5zZXRDdXJyZW50SG9yaXpvbnRhbFNuYXBQb2ludEluZGV4KGluZGV4KTsK
ICAgICAgICAgaWYgKGhvcml6b250YWxUYXJnZXQgPj0gMCAmJiBob3Jpem9udGFsVGFyZ2V0IDw9
IHNjcm9sbFZpZXcuY29udGVudFNpemUud2lkdGgpCiAgICAgICAgICAgICB0YXJnZXRDb250ZW50
T2Zmc2V0LT54ID0gcG90ZW50aWFsU25hcFBvc2l0aW9uOwogICAgIH0KIAotICAgIGlmICghX3Nj
cm9sbGluZ1RyZWVOb2RlLT52ZXJ0aWNhbFNuYXBPZmZzZXRzKCkuaXNFbXB0eSgpKSB7CisgICAg
aWYgKCFfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLnZlcnRpY2Fs
U25hcE9mZnNldHMoKS5pc0VtcHR5KCkpIHsKICAgICAgICAgdW5zaWduZWQgaW5kZXg7Ci0gICAg
ICAgIGZsb2F0IHBvdGVudGlhbFNuYXBQb3NpdGlvbiA9IGNsb3Nlc3RTbmFwT2Zmc2V0KF9zY3Jv
bGxpbmdUcmVlTm9kZS0+dmVydGljYWxTbmFwT2Zmc2V0cygpLCBfc2Nyb2xsaW5nVHJlZU5vZGUt
PnZlcnRpY2FsU25hcE9mZnNldFJhbmdlcygpLCB2ZXJ0aWNhbFRhcmdldCwgdmVsb2NpdHkueSwg
aW5kZXgpOwotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNldEN1cnJlbnRWZXJ0aWNhbFNu
YXBQb2ludEluZGV4KGluZGV4KTsKKyAgICAgICAgZmxvYXQgcG90ZW50aWFsU25hcFBvc2l0aW9u
ID0gY2xvc2VzdFNuYXBPZmZzZXQoX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGlu
Z05vZGUoKS52ZXJ0aWNhbFNuYXBPZmZzZXRzKCksIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVnYXRl
LT5zY3JvbGxpbmdOb2RlKCkudmVydGljYWxTbmFwT2Zmc2V0UmFuZ2VzKCksIHZlcnRpY2FsVGFy
Z2V0LCB2ZWxvY2l0eS55LCBpbmRleCk7CisgICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZURlbGVn
YXRlLT5zY3JvbGxpbmdOb2RlKCkuc2V0Q3VycmVudFZlcnRpY2FsU25hcFBvaW50SW5kZXgoaW5k
ZXgpOwogICAgICAgICBpZiAodmVydGljYWxUYXJnZXQgPj0gMCAmJiB2ZXJ0aWNhbFRhcmdldCA8
PSBzY3JvbGxWaWV3LmNvbnRlbnRTaXplLmhlaWdodCkKICAgICAgICAgICAgIHRhcmdldENvbnRl
bnRPZmZzZXQtPnkgPSBwb3RlbnRpYWxTbmFwUG9zaXRpb247CiAgICAgfQogCi0gICAgaWYgKG9y
aWdpbmFsSG9yaXpvbnRhbFNuYXBQb3NpdGlvbiAhPSBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJl
bnRIb3Jpem9udGFsU25hcFBvaW50SW5kZXgoKQotICAgICAgICB8fCBvcmlnaW5hbFZlcnRpY2Fs
U25hcFBvc2l0aW9uICE9IF9zY3JvbGxpbmdUcmVlTm9kZS0+Y3VycmVudFZlcnRpY2FsU25hcFBv
aW50SW5kZXgoKSkgewotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJlbnRTbmFwUG9p
bnRJbmRpY2VzRGlkQ2hhbmdlKF9zY3JvbGxpbmdUcmVlTm9kZS0+Y3VycmVudEhvcml6b250YWxT
bmFwUG9pbnRJbmRleCgpLCBfc2Nyb2xsaW5nVHJlZU5vZGUtPmN1cnJlbnRWZXJ0aWNhbFNuYXBQ
b2ludEluZGV4KCkpOworICAgIGlmIChvcmlnaW5hbEhvcml6b250YWxTbmFwUG9zaXRpb24gIT0g
X3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNjcm9sbGluZ05vZGUoKS5jdXJyZW50SG9yaXpv
bnRhbFNuYXBQb2ludEluZGV4KCkKKyAgICAgICAgfHwgb3JpZ2luYWxWZXJ0aWNhbFNuYXBQb3Np
dGlvbiAhPSBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpIHsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2Rl
RGVsZWdhdGUtPmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKF9zY3JvbGxpbmdUcmVl
Tm9kZURlbGVnYXRlLT5zY3JvbGxpbmdOb2RlKCkuY3VycmVudEhvcml6b250YWxTbmFwUG9pbnRJ
bmRleCgpLCBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsaW5nTm9kZSgpLmN1cnJl
bnRWZXJ0aWNhbFNuYXBQb2ludEluZGV4KCkpOwogICAgIH0KIH0KICNlbmRpZgpAQCAtMTE1LDgg
KzExNiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogewogICAgIGlmIChfaW5Vc2VySW50
ZXJhY3Rpb24gJiYgIXdpbGxEZWNlbGVyYXRlKSB7CiAgICAgICAgIF9pblVzZXJJbnRlcmFjdGlv
biA9IE5POwotICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGUtPnNjcm9sbFZpZXdEaWRTY3JvbGwo
c2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCBfaW5Vc2VySW50ZXJhY3Rpb24pOwotICAgICAgICBf
c2Nyb2xsaW5nVHJlZU5vZGUtPm92ZXJmbG93U2Nyb2xsRGlkRW5kKCk7CisgICAgICAgIF9zY3Jv
bGxpbmdUcmVlTm9kZURlbGVnYXRlLT5zY3JvbGxWaWV3RGlkU2Nyb2xsKHNjcm9sbFZpZXcuY29u
dGVudE9mZnNldCwgX2luVXNlckludGVyYWN0aW9uKTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVO
b2RlRGVsZWdhdGUtPnNjcm9sbERpZEVuZCgpOwogICAgIH0KIH0KIApAQCAtMTI0LDggKzEyNSw4
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogewogICAgIGlmIChfaW5Vc2VySW50ZXJhY3Rp
b24pIHsKICAgICAgICAgX2luVXNlckludGVyYWN0aW9uID0gTk87Ci0gICAgICAgIF9zY3JvbGxp
bmdUcmVlTm9kZS0+c2Nyb2xsVmlld0RpZFNjcm9sbChzY3JvbGxWaWV3LmNvbnRlbnRPZmZzZXQs
IF9pblVzZXJJbnRlcmFjdGlvbik7Ci0gICAgICAgIF9zY3JvbGxpbmdUcmVlTm9kZS0+b3ZlcmZs
b3dTY3JvbGxEaWRFbmQoKTsKKyAgICAgICAgX3Njcm9sbGluZ1RyZWVOb2RlRGVsZWdhdGUtPnNj
cm9sbFZpZXdEaWRTY3JvbGwoc2Nyb2xsVmlldy5jb250ZW50T2Zmc2V0LCBfaW5Vc2VySW50ZXJh
Y3Rpb24pOworICAgICAgICBfc2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZS0+c2Nyb2xsRGlkRW5k
KCk7CiAgICAgfQogfQogCkBAIC0xNDAsNyArMTQxLDcgQEAgUmVmPFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1M+IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJ
T1MKIAogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUzo6U2Nyb2xsaW5nVHJl
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUyhXZWJDb3JlOjpTY3JvbGxpbmdUcmVlJiBzY3JvbGxp
bmdUcmVlLCBXZWJDb3JlOjpTY3JvbGxpbmdOb2RlSUQgbm9kZUlEKQogICAgIDogU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZShzY3JvbGxpbmdUcmVlLCBub2RlSUQpCi0gICAgLCBt
X3VwZGF0aW5nRnJvbVN0YXRlTm9kZShmYWxzZSkKKyAgICAsIG1fc2Nyb2xsaW5nTm9kZURlbGVn
YXRlKHN0ZDo6bWFrZV91bmlxdWU8U2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZUlP
Uz4oKnRoaXMpKQogewogfQogCkBAIC0xNTQsNiArMTU1LDEwIEBAIFNjcm9sbGluZ1RyZWVPdmVy
Zmxvd1Njcm9sbGluZ05vZGVJT1M6On5TY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
SU9TKCkKICAgICAgICAgICAgIHNjcm9sbFZpZXcuZGVsZWdhdGUgPSBuaWw7CiAgICAgfQogICAg
IEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlMKKworICAgIC8vIFdLT3ZlcmZsb3dTY3JvbGxWaWV3
RGVsZWdhdGUgaG9sZHMgYSBwb2ludGVyIHRvIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVs
ZWdhdGVJT1MsIHNvIHdlIGVuc3VyZSBpdCBpcyBkZXN0cm95ZWQgZmlyc3QuCisgICAgbV9zY3Jv
bGxWaWV3RGVsZWdhdGUuY2xlYXIoKTsKKyAgICBtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS5yZXNl
dCgpOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OmNv
bW1pdFN0YXRlQmVmb3JlQ2hpbGRyZW4oY29uc3QgV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVOb2Rl
JiBzdGF0ZU5vZGUpCkBAIC0xODEsNyArMTg2LDcgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZs
b3dTY3JvbGxpbmdOb2RlSU9TOjpjb21taXRTdGF0ZUFmdGVyQ2hpbGRyZW4oY29uc3QgU2Nyb2wK
IHsKICAgICBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOjpjb21taXRTdGF0ZUFm
dGVyQ2hpbGRyZW4oc3RhdGVOb2RlKTsKIAotICAgIFNldEZvclNjb3BlPGJvb2w+IHVwZGF0aW5n
Q2hhbmdlKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlLCB0cnVlKTsKKyAgICBTZXRGb3JTY29wZTxi
b29sPiB1cGRhdGluZ0NoYW5nZShtX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS0+bV91cGRhdGluZ0Zy
b21TdGF0ZU5vZGUsIHRydWUpOwogCiAgICAgY29uc3QgYXV0byYgc2Nyb2xsaW5nU3RhdGVOb2Rl
ID0gZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KHN0YXRlTm9k
ZSk7CiAKQEAgLTE5Niw3ICsyMDEsNyBAQCB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1M6OmNvbW1pdFN0YXRlQWZ0ZXJDaGlsZHJlbihjb25zdCBTY3JvbAogCiAgICAg
ICAgIGlmIChzY3JvbGxpbmdTdGF0ZU5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsTGF5ZXIpKSB7CiAgICAgICAgICAgICBpZiAoIW1fc2Ny
b2xsVmlld0RlbGVnYXRlKQotICAgICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0RlbGVnYXRlID0g
YWRvcHROUyhbW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRXaXRoU2Ny
b2xsaW5nVHJlZU5vZGU6dGhpc10pOworICAgICAgICAgICAgICAgIG1fc2Nyb2xsVmlld0RlbGVn
YXRlID0gYWRvcHROUyhbW1dLT3ZlcmZsb3dTY3JvbGxWaWV3RGVsZWdhdGUgYWxsb2NdIGluaXRX
aXRoU2Nyb2xsaW5nVHJlZU5vZGVEZWxlZ2F0ZTptX3Njcm9sbGluZ05vZGVEZWxlZ2F0ZS5nZXQo
KV0pOwogCiAgICAgICAgICAgICBzY3JvbGxWaWV3LnNjcm9sbHNUb1RvcCA9IE5POwogICAgICAg
ICAgICAgc2Nyb2xsVmlldy5kZWxlZ2F0ZSA9IG1fc2Nyb2xsVmlld0RlbGVnYXRlLmdldCgpOwpA
QCAtMjYwLDYwICsyNjUsMTIgQEAgdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdO
b2RlSU9TOjpzZXRTY3JvbGxMYXllclBvc2l0aW9uKGNvbnN0IEZsb2F0UG8KIHsKICAgICBbbV9z
Y3JvbGxMYXllciBzZXRQb3NpdGlvbjpDR1BvaW50TWFrZSgtc2Nyb2xsUG9zaXRpb24ueCgpICsg
c2Nyb2xsT3JpZ2luKCkueCgpLCAtc2Nyb2xsUG9zaXRpb24ueSgpICsgc2Nyb2xsT3JpZ2luKCku
eSgpKV07CiAKLSAgICB1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoc2Nyb2xsUG9zaXRpb24p
OworICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLT51cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3Jv
bGwoc2Nyb2xsUG9zaXRpb24pOwogfQogCiB2b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1M6OnVwZGF0ZUxheWVyc0FmdGVyRGVsZWdhdGVkU2Nyb2xsKGNvbnN0IEZsb2F0
UG9pbnQmIHNjcm9sbFBvc2l0aW9uKQogewotICAgIHVwZGF0ZUNoaWxkTm9kZXNBZnRlclNjcm9s
bChzY3JvbGxQb3NpdGlvbik7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUzo6dXBkYXRlQ2hpbGROb2Rlc0FmdGVyU2Nyb2xsKGNvbnN0IEZsb2F0UG9pbnQm
IHNjcm9sbFBvc2l0aW9uKQotewotICAgIGlmICghbV9jaGlsZHJlbikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgRmxvYXRSZWN0IGZpeGVkUG9zaXRpb25SZWN0OwotICAgIFNjcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGUqIGZyYW1lTm9kZSA9IGVuY2xvc2luZ0ZyYW1lTm9kZSgpOwotICAg
IGlmIChmcmFtZU5vZGUgJiYgZnJhbWVOb2RlLT5wYXJlbnQoKSkKLSAgICAgICAgZml4ZWRQb3Np
dGlvblJlY3QgPSBmcmFtZU5vZGUtPmZpeGVkUG9zaXRpb25SZWN0KCk7Ci0gICAgZWxzZQotICAg
ICAgICBmaXhlZFBvc2l0aW9uUmVjdCA9IHNjcm9sbGluZ1RyZWUoKS5maXhlZFBvc2l0aW9uUmVj
dCgpOwotICAgIEZsb2F0U2l6ZSBzY3JvbGxEZWx0YSA9IGxhc3RDb21taXR0ZWRTY3JvbGxQb3Np
dGlvbigpIC0gc2Nyb2xsUG9zaXRpb247Ci0KLSAgICBmb3IgKGF1dG8mIGNoaWxkIDogKm1fY2hp
bGRyZW4pCi0gICAgICAgIGNoaWxkLT51cGRhdGVMYXllcnNBZnRlckFuY2VzdG9yQ2hhbmdlKCp0
aGlzLCBmaXhlZFBvc2l0aW9uUmVjdCwgc2Nyb2xsRGVsdGEpOwotfQotCi12b2lkIFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6Om92ZXJmbG93U2Nyb2xsV2lsbFN0YXJ0KCkK
LXsKLSAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsaW5nVHJlZU5vZGVXaWxsU3RhcnRTY3JvbGwo
KTsKLX0KLQotdm9pZCBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlSU9TOjpvdmVy
Zmxvd1Njcm9sbERpZEVuZCgpCi17Ci0gICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVO
b2RlRGlkRW5kU2Nyb2xsKCk7Ci19Ci0KLXZvaWQgU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZUlPUzo6b3ZlcmZsb3dTY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgpCi17Ci0g
ICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0UGFuR2VzdHVyZSgp
OwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1M6OnNjcm9s
bFZpZXdEaWRTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJvb2wgaW5V
c2VySW50ZXJhY3Rpb24pCi17Ci0gICAgaWYgKG1fdXBkYXRpbmdGcm9tU3RhdGVOb2RlKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsUG9zaXRpb25DaGFuZ2Vk
VmlhRGVsZWdhdGVkU2Nyb2xsaW5nKHNjcm9sbGluZ05vZGVJRCgpLCBzY3JvbGxQb3NpdGlvbiwg
aW5Vc2VySW50ZXJhY3Rpb24pOwotfQotCi12b2lkIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1M6OmN1cnJlbnRTbmFwUG9pbnRJbmRpY2VzRGlkQ2hhbmdlKHVuc2lnbmVkIGhv
cml6b250YWwsIHVuc2lnbmVkIHZlcnRpY2FsKQotewotICAgIGlmIChtX3VwZGF0aW5nRnJvbVN0
YXRlTm9kZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNjcm9sbGluZ1RyZWUoKS5jdXJy
ZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZShzY3JvbGxpbmdOb2RlSUQoKSwgaG9yaXpvbnRh
bCwgdmVydGljYWwpOworICAgIG1fc2Nyb2xsaW5nTm9kZURlbGVnYXRlLT51cGRhdGVDaGlsZE5v
ZGVzQWZ0ZXJTY3JvbGwoc2Nyb2xsUG9zaXRpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZW1vdGVMYXllclRyZWUv
aW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1JlbW90ZUxheWVyVHJlZS9pb3MvU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05v
ZGVEZWxlZ2F0ZUlPUy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyYTk5M2MzZmMxZDQyYWQxMzA0MTEwMjUyNjZh
NzI1MTJmZDUzZTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9S
ZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1Mu
aApAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IElnYWxpYSBTLkwu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExB
VEZPUk0oSU9TKSAmJiBFTkFCTEUoQVNZTkNfU0NST0xMSU5HKQorCisjaW5jbHVkZSA8V2ViQ29y
ZS9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgRmxvYXRQb2ludDsKK2NsYXNzIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdO
b2RlOworCit9CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBTY3JvbGxpbmdUcmVlT3Zl
cmZsb3dTY3JvbGxpbmdOb2RlSU9TOworCitjbGFzcyBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9k
ZURlbGVnYXRlSU9TIDogcHVibGljIFdlYkNvcmU6OlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2Rl
RGVsZWdhdGUgeworICAgIGZyaWVuZCBjbGFzcyBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3JvbGxp
bmdOb2RlSU9TOworCitwdWJsaWM6CisgICAgZXhwbGljaXQgU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUyhXZWJDb3JlOjpTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZSYpOwor
ICAgIH5TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKCkgZmluYWw7CisKKyAg
ICB2b2lkIHNjcm9sbFdpbGxTdGFydCgpIGNvbnN0OworICAgIHZvaWQgc2Nyb2xsRGlkRW5kKCkg
Y29uc3Q7CisgICAgdm9pZCBzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgpIGNvbnN0Owor
ICAgIHZvaWQgc2Nyb2xsVmlld0RpZFNjcm9sbChjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBz
Y3JvbGxQb3NpdGlvbiwgYm9vbCBpblVzZXJJbnRlcmFjdGlvbikgY29uc3Q7CisgICAgdm9pZCBj
dXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5nZSh1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNp
Z25lZCB2ZXJ0aWNhbCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgdm9pZCB1cGRhdGVDaGlsZE5v
ZGVzQWZ0ZXJTY3JvbGwoY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24p
OworCisgICAgYm9vbCBtX3VwZGF0aW5nRnJvbVN0YXRlTm9kZTsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJU
cmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVtb3RlTGF5ZXJUcmVlL2lvcy9TY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiYmJhYmU0NzViMWUxNmVlN2NhM2Mw
NGIzY2ZhMWFkMmVhN2E2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZW1vdGVMYXllclRyZWUvaW9zL1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MubW0KQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJZ2Fs
aWEgUy5MLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcu
aCIKKyNpbXBvcnQgIlNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCIKKwor
I2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEFTWU5DX1NDUk9MTElORykKKworI2ltcG9ydCA8
V2ViQ29yZS9TY3JvbGxpbmdUcmVlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Njcm9sbGluZ1RyZWVG
cmFtZVNjcm9sbGluZ05vZGUuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2Nyb2xsaW5nVHJlZVNjcm9s
bGluZ05vZGUuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJL
aXQgeworCitTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpTY3JvbGxpbmdU
cmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlJiBz
Y3JvbGxpbmdOb2RlKQorICAgIDogU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0ZShz
Y3JvbGxpbmdOb2RlKQorICAgICwgbV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUoZmFsc2UpCit7Cit9
CisKK1Njcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6On5TY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TKCkKK3sKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Ny
b2xsaW5nTm9kZURlbGVnYXRlSU9TOjp1cGRhdGVDaGlsZE5vZGVzQWZ0ZXJTY3JvbGwoY29uc3Qg
RmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCit7CisgICAgaWYgKCFzY3JvbGxpbmdOb2RlKCku
Y2hpbGRyZW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRmxvYXRSZWN0IGZpeGVkUG9zaXRp
b25SZWN0OworICAgIFNjcm9sbGluZ1RyZWVGcmFtZVNjcm9sbGluZ05vZGUqIGZyYW1lTm9kZSA9
IHNjcm9sbGluZ05vZGUoKS5lbmNsb3NpbmdGcmFtZU5vZGUoKTsKKyAgICBpZiAoZnJhbWVOb2Rl
ICYmIGZyYW1lTm9kZS0+cGFyZW50KCkpCisgICAgICAgIGZpeGVkUG9zaXRpb25SZWN0ID0gZnJh
bWVOb2RlLT5maXhlZFBvc2l0aW9uUmVjdCgpOworICAgIGVsc2UKKyAgICAgICAgZml4ZWRQb3Np
dGlvblJlY3QgPSBzY3JvbGxpbmdUcmVlKCkuZml4ZWRQb3NpdGlvblJlY3QoKTsKKyAgICBGbG9h
dFNpemUgc2Nyb2xsRGVsdGEgPSBsYXN0Q29tbWl0dGVkU2Nyb2xsUG9zaXRpb24oKSAtIHNjcm9s
bFBvc2l0aW9uOworCisgICAgZm9yIChhdXRvJiBjaGlsZCA6ICpzY3JvbGxpbmdOb2RlKCkuY2hp
bGRyZW4oKSkKKyAgICAgICAgY2hpbGQtPnVwZGF0ZUxheWVyc0FmdGVyQW5jZXN0b3JDaGFuZ2Uo
c2Nyb2xsaW5nTm9kZSgpLCBmaXhlZFBvc2l0aW9uUmVjdCwgc2Nyb2xsRGVsdGEpOworfQorCit2
b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6OnNjcm9sbFdpbGxTdGFy
dCgpIGNvbnN0Cit7CisgICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0
YXJ0U2Nyb2xsKCk7Cit9CisKK3ZvaWQgU2Nyb2xsaW5nVHJlZVNjcm9sbGluZ05vZGVEZWxlZ2F0
ZUlPUzo6c2Nyb2xsRGlkRW5kKCkgY29uc3QKK3sKKyAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xs
aW5nVHJlZU5vZGVEaWRFbmRTY3JvbGwoKTsKK30KKwordm9pZCBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TOjpzY3JvbGxWaWV3V2lsbFN0YXJ0UGFuR2VzdHVyZSgpIGNvbnN0
Cit7CisgICAgc2Nyb2xsaW5nVHJlZSgpLnNjcm9sbGluZ1RyZWVOb2RlV2lsbFN0YXJ0UGFuR2Vz
dHVyZSgpOworfQorCit2b2lkIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1M6
OnNjcm9sbFZpZXdEaWRTY3JvbGwoY29uc3QgRmxvYXRQb2ludCYgc2Nyb2xsUG9zaXRpb24sIGJv
b2wgaW5Vc2VySW50ZXJhY3Rpb24pIGNvbnN0Cit7CisgICAgaWYgKG1fdXBkYXRpbmdGcm9tU3Rh
dGVOb2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBzY3JvbGxpbmdUcmVlKCkuc2Nyb2xsUG9z
aXRpb25DaGFuZ2VkVmlhRGVsZWdhdGVkU2Nyb2xsaW5nKHNjcm9sbGluZ05vZGUoKS5zY3JvbGxp
bmdOb2RlSUQoKSwgc2Nyb2xsUG9zaXRpb24sIGluVXNlckludGVyYWN0aW9uKTsKK30KKwordm9p
ZCBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TOjpjdXJyZW50U25hcFBvaW50
SW5kaWNlc0RpZENoYW5nZSh1bnNpZ25lZCBob3Jpem9udGFsLCB1bnNpZ25lZCB2ZXJ0aWNhbCkg
Y29uc3QKK3sKKyAgICBpZiAobV91cGRhdGluZ0Zyb21TdGF0ZU5vZGUpCisgICAgICAgIHJldHVy
bjsKKworICAgIHNjcm9sbGluZ1RyZWUoKS5jdXJyZW50U25hcFBvaW50SW5kaWNlc0RpZENoYW5n
ZShzY3JvbGxpbmdOb2RlKCkuc2Nyb2xsaW5nTm9kZUlEKCksIGhvcml6b250YWwsIHZlcnRpY2Fs
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBQTEFURk9STShJT1Mp
ICYmIEVOQUJMRShBU1lOQ19TQ1JPTExJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMmEyODVlNGQzZDBiOGFkYzAyYzZlNzljZDJh
OGQwMjk0MjRhZDBlLi42ZWM1NzFjOWY5MzRhZjE5YTAwYzlhMzNhMGNmMGZlMmU4NGJkN2I1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTkwLDYgKzkwLDggQEAKIAkJMEY4NTBGRTcxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1h
bmNlTG9nZ2luZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY4NTBGRTUxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZvcm1hbmNlTG9nZ2lu
Z0NsaWVudC5oICovOyB9OwogCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzFDMUExOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaCAqLzsgfTsKIAkJMEY5MzFDMUQxOEM1NzEx
OTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjkzMUMxQjE4QzU3
MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5tbSAq
LzsgfTsKKwkJMEY5MzFDMUMxOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxp
bmdOb2RlRGVsZWdhdGVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGOTMxQzFBMThDNTcxMTkwMERCQjhENCAvKiBTY3JvbGxpbmdUcmVlU2Nyb2xs
aW5nTm9kZURlbGVnYXRlSU9TLmggKi87IH07CisJCTBGOTMxQzFEMThDNTcxMTkwMERCQjhENCAv
KiBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5MzFDMUIxOEM1NzExOTAwREJCOEQ0
IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gKi87IH07CiAJCTBG
QjY1OTIzMTIwOEI0REIwMDQ0ODE2QyAvKiBEcmF3aW5nQXJlYUluZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGQjY1OTIyMTIwOEI0REIwMDQ0ODE2
QyAvKiBEcmF3aW5nQXJlYUluZm8uaCAqLzsgfTsKIAkJMEZDQjRFNDYxOEJCRTA0NDAwMEZDRkM5
IC8qIFBhZ2VDbGllbnRJbXBsSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkNCNEUzNjE4QkJFMDQ0MDAwRkNGQzkgLyogUGFnZUNsaWVudEltcGxJ
T1MuaCAqLzsgfTsKIAkJMEZDQjRFNDcxOEJCRTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBs
SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZD
QjRFMzcxOEJCRTA0NDAwMEZDRkM5IC8qIFBhZ2VDbGllbnRJbXBsSU9TLm1tICovOyB9OwpAQCAt
MjI5OCw2ICsyMzAwLDggQEAKIAkJMEY4NTBGRTUxRUQ3QzM5RjAwRkI3N0E3IC8qIFdlYlBlcmZv
cm1hbmNlTG9nZ2luZ0NsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJQZXJmb3JtYW5jZUxvZ2dpbmdDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY5MzFDMUExOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9s
bGluZ05vZGVJT1MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2Nyb2xsaW5n
VHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjkzMUMxQjE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xsaW5nVHJlZU92ZXJmbG93U2Ny
b2xsaW5nTm9kZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFNjcm9sbGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGOTMxQzFBMThDNTcxMTkwMERCQjhENCAvKiBTY3JvbGxpbmdUcmVl
U2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY5MzFDMUIxOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1Ry
ZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBTY3JvbGxpbmdUcmVlU2Nyb2xsaW5nTm9kZURlbGVnYXRlSU9TLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkI2NTkyMjEyMDhCNERCMDA0NDgxNkMgLyog
RHJhd2luZ0FyZWFJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERyYXdp
bmdBcmVhSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwODU2RTE4N0NF
MEE5MDA3ODBEODYgLyogX19pbml0X18ucHkgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5weXRob247IG5hbWUgPSBfX2luaXRfXy5w
eTsgcGF0aCA9IHdlYmtpdC9fX2luaXRfXy5weTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZDMDg1NkYxODdDRTBBOTAwNzgwRDg2IC8qIG1lc3NhZ2VzLnB5ICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucHl0aG9uOyBu
YW1lID0gbWVzc2FnZXMucHk7IHBhdGggPSB3ZWJraXQvbWVzc2FnZXMucHk7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC01NDQ3LDYgKzU0NTEsOCBAQAogCQkJCTBGMEMzNjVCMThDMDVD
QTEwMEY2MDdENyAvKiBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclByb3h5SU9TLm1tICovLAog
CQkJCTBGOTMxQzFBMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dTY3Jv
bGxpbmdOb2RlSU9TLmggKi8sCiAJCQkJMEY5MzFDMUIxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9s
bGluZ1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MubW0gKi8sCisJCQkJMEY5MzFDMUExOEM1
NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MuaCAq
LywKKwkJCQkwRjkzMUMxQjE4QzU3MTE5MDBEQkI4RDQgLyogU2Nyb2xsaW5nVHJlZVNjcm9sbGlu
Z05vZGVEZWxlZ2F0ZUlPUy5tbSAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTg3MjQsNiArODczMCw3IEBACiAJCQkJMUFBQjRBOEQxMjk2
RjBBMjAwMjM5NTJGIC8qIFNhbmRib3hFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUUx
RTU1MkM1MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5kYm94SW5pdGlhbGl6YXRpb25QYXJhbWV0ZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMUMxQzE4QzU3MTE5MDBEQkE3QzMgLyogU2Nyb2xs
aW5nVHJlZU92ZXJmbG93U2Nyb2xsaW5nTm9kZUlPUy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY5
MzFDMUMxOEM1NzExOTAwREJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdh
dGVJT1MuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDEzMDU0MTM4MkVBQzAwMDM1MUVERCAvKiBT
ZWNJdGVtUmVxdWVzdERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDEzMDU2MTM4MkVBQzAw
MDM1MUVERCAvKiBTZWNJdGVtUmVzcG9uc2VEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMTc5
MDg4RjE2OUJBQTZBMDA2OTA0QzcgLyogU2VjSXRlbVNoaW0uaCBpbiBIZWFkZXJzICovLApAQCAt
MTAzMDksNiArMTAzMTYsNyBAQAogCQkJCUUxRTU1MkM0MTZBRTA2NUYwMDRFRDY1MyAvKiBTYW5k
Ym94SW5pdGlhbGlhdGlvblBhcmFtZXRlcnNNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQlFMTlC
REE4QjE5MzY4RDQ2MDBCOTdGNTcgLyogU2FuZGJveFV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTBGOTMxQzFEMThDNTcxMTkwMERCQTdDMyAvKiBTY3JvbGxpbmdUcmVlT3ZlcmZsb3dT
Y3JvbGxpbmdOb2RlSU9TLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMEY5MzFDMUQxOEM1NzExOTAw
REJCOEQ0IC8qIFNjcm9sbGluZ1RyZWVTY3JvbGxpbmdOb2RlRGVsZWdhdGVJT1MubW0gaW4gU291
cmNlcyAqLywKIAkJCQk1MUQxMzA1MzEzODJFQUMwMDAzNTFFREQgLyogU2VjSXRlbVJlcXVlc3RE
YXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRDEzMDU1MTM4MkVBQzAwMDM1MUVERCAvKiBT
ZWNJdGVtUmVzcG9uc2VEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNzkwODhEMTY5QkFB
NjIwMDY5MDRDNyAvKiBTZWNJdGVtU2hpbS5jcHAgaW4gU291cmNlcyAqLywK
</data>

          </attachment>
      

    </bug>

</bugzilla>