<?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>208406</bug_id>
          
          <creation_ts>2020-02-29 00:28:20 -0800</creation_ts>
          <short_desc>Batch observations and completions of text manipulations</short_desc>
          <delta_ts>2020-03-03 21:22:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>mifenton</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1624242</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-29 00:28:20 -0800</bug_when>
    <thetext>We should patch findings of paragraphs and completions of text manipulations.

&lt;rdar://problem/59643650&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624243</commentid>
    <comment_count>1</comment_count>
      <attachid>392051</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-02-29 00:43:37 -0800</bug_when>
    <thetext>Created attachment 392051
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1624957</commentid>
    <comment_count>2</comment_count>
      <attachid>392250</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-02 23:13:18 -0800</bug_when>
    <thetext>Created attachment 392250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625225</commentid>
    <comment_count>3</comment_count>
      <attachid>392323</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-03 13:47:18 -0800</bug_when>
    <thetext>Created attachment 392323
Fixed build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625281</commentid>
    <comment_count>4</comment_count>
      <attachid>392323</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-03-03 15:24:34 -0800</bug_when>
    <thetext>Comment on attachment 392323
Fixed build

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

&gt; Source/WebCore/editing/TextManipulationController.cpp:279
&gt; +        m_callback(*m_document, m_pendingItemsForCallback);
&gt; +        m_pendingItemsForCallback.clear();

Nit - you could call flushPendingItemsForCallback() here instead of repeating the code.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1658
&gt; +        // WebCore::TextManipulationController::ItemIdentifier itemID, const Vector&lt;WebCore::TextManipulationController::ManipulationToken&gt;&amp; tokens

Nit - stray comment?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1694
&gt; +            [wkItems addObject:[[_WKTextManipulationItem alloc] initWithIdentifier:String::number(item.identifier.toUInt64()) tokens:wkTokens]];

This appears to be a leak — use RetainPtr/adoptNS or -autorelease?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:75
&gt; +        for (_WKTextManipulationItem* item in items)

Nit - * on the other side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625394</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-03 21:00:39 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #4)
&gt; Comment on attachment 392323 [details]
&gt; Fixed build
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=392323&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/TextManipulationController.cpp:279
&gt; &gt; +        m_callback(*m_document, m_pendingItemsForCallback);
&gt; &gt; +        m_pendingItemsForCallback.clear();
&gt; 
&gt; Nit - you could call flushPendingItemsForCallback() here instead of
&gt; repeating the code.

Good idea. Done.

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1658
&gt; &gt; +        // WebCore::TextManipulationController::ItemIdentifier itemID, const Vector&lt;WebCore::TextManipulationController::ManipulationToken&gt;&amp; tokens
&gt; 
&gt; Nit - stray comment?

Oops, removed.

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:1694
&gt; &gt; +            [wkItems addObject:[[_WKTextManipulationItem alloc] initWithIdentifier:String::number(item.identifier.toUInt64()) tokens:wkTokens]];
&gt; 
&gt; This appears to be a leak — use RetainPtr/adoptNS or -autorelease?

Oh oops, fixed it by adoptNS into a local variable first.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/TextManipulation.mm:75
&gt; &gt; +        for (_WKTextManipulationItem* item in items)
&gt; 
&gt; Nit - * on the other side.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625398</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-03-03 21:22:16 -0800</bug_when>
    <thetext>Committed r257830: &lt;https://trac.webkit.org/changeset/257830&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392051</attachid>
            <date>2020-02-29 00:43:37 -0800</date>
            <delta_ts>2020-03-02 23:13:16 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wip208406.patch</filename>
            <type>text/plain</type>
            <size>33684</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlci5jcHAKaW5kZXggZDA1YWY0NGZkOGUuLjEzNmYzMGEyMjRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmNwcApAQCAt
MTM2LDYgKzEzNiw3IEBAIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnN0YXJ0T2Jz
ZXJ2aW5nUGFyYWdyYXBocyhNYW5pcHVsYXRpb25JdGVtQ2FsbGJhCiAgICAgVmlzaWJsZVBvc2l0
aW9uIGVuZCA9IGxhc3RQb3NpdGlvbkluTm9kZShtX2RvY3VtZW50LmdldCgpKTsKIAogICAgIG9i
c2VydmVQYXJhZ3JhcGhzKHN0YXJ0LCBlbmQpOworICAgIGZsdXNoUGVuZGluZ0l0ZW1zRm9yQ2Fs
bGJhY2soKTsKIH0KIAogdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6b2JzZXJ2ZVBh
cmFncmFwaHMoVmlzaWJsZVBvc2l0aW9uJiBzdGFydCwgVmlzaWJsZVBvc2l0aW9uJiBlbmQpCkBA
IC0yNTgsMzAgKzI1OSw0OSBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpzY2hl
ZHVsZU9ic2VydmFydGlvblVwZGF0ZSgpCiAKICAgICAgICAgICAgIGNvbnRyb2xsZXItPm9ic2Vy
dmVQYXJhZ3JhcGhzKHN0YXJ0LCBlbmQpOwogICAgICAgICB9CisgICAgICAgIGNvbnRyb2xsZXIt
PmZsdXNoUGVuZGluZ0l0ZW1zRm9yQ2FsbGJhY2soKTsKICAgICB9KTsKIH0KIAogdm9pZCBUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6YWRkSXRlbShjb25zdCBQb3NpdGlvbiYgc3RhcnRPZlBh
cmFncmFwaCwgY29uc3QgUG9zaXRpb24mIGVuZE9mUGFyYWdyYXBoLCBWZWN0b3I8TWFuaXB1bGF0
aW9uVG9rZW4+JiYgdG9rZW5zKQogewogICAgIEFTU0VSVChtX2RvY3VtZW50KTsKLSAgICBhdXRv
IHJlc3VsdCA9IG1faXRlbXMuYWRkKG1faXRlbUlkZW50aWZpZXIuZ2VuZXJhdGUoKSwgTWFuaXB1
bGF0aW9uSXRlbSB7IHN0YXJ0T2ZQYXJhZ3JhcGgsIGVuZE9mUGFyYWdyYXBoLCBXVEZNb3ZlKHRv
a2VucykgfSk7Ci0gICAgbV9jYWxsYmFjaygqbV9kb2N1bWVudCwgcmVzdWx0Lml0ZXJhdG9yLT5r
ZXksIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUudG9rZW5zKTsKKyAgICBhdXRvIG5ld0lEID0gbV9p
dGVtSWRlbnRpZmllci5nZW5lcmF0ZSgpOworICAgIG1fcGVuZGluZ0l0ZW1zRm9yQ2FsbGJhY2su
YXBwZW5kKE1hbmlwdWxhdGlvbkl0ZW0geyBuZXdJRCwgdG9rZW5zLm1hcChbXShhdXRvJiB0b2tl
bikgeyByZXR1cm4gdG9rZW47IH0pIH0pOworICAgIG1faXRlbXMuYWRkKG5ld0lELCBNYW5pcHVs
YXRpb25JdGVtRGF0YSB7IHN0YXJ0T2ZQYXJhZ3JhcGgsIGVuZE9mUGFyYWdyYXBoLCBXVEZNb3Zl
KHRva2VucykgfSk7CisgICAgaWYgKG1fcGVuZGluZ0l0ZW1zRm9yQ2FsbGJhY2suc2l6ZSgpID49
IDEyOCkgeworICAgICAgICBtX2NhbGxiYWNrKCptX2RvY3VtZW50LCBtX3BlbmRpbmdJdGVtc0Zv
ckNhbGxiYWNrKTsKKyAgICAgICAgbV9wZW5kaW5nSXRlbXNGb3JDYWxsYmFjay5jbGVhcigpOwor
ICAgIH0KKwogfQogCi1hdXRvIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpjb21wbGV0ZU1h
bmlwdWxhdGlvbihJdGVtSWRlbnRpZmllciBpdGVtSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPE1h
bmlwdWxhdGlvblRva2VuPiYgcmVwbGFjZW1lbnRUb2tlbnMpIC0+IE1hbmlwdWxhdGlvblJlc3Vs
dAordm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6Zmx1c2hQZW5kaW5nSXRlbXNGb3JD
YWxsYmFjaygpCiB7Ci0gICAgaWYgKCFpdGVtSWRlbnRpZmllcikKLSAgICAgICAgcmV0dXJuIE1h
bmlwdWxhdGlvblJlc3VsdDo6SW52YWxpZEl0ZW07CisgICAgbV9jYWxsYmFjaygqbV9kb2N1bWVu
dCwgbV9wZW5kaW5nSXRlbXNGb3JDYWxsYmFjayk7CisgICAgbV9wZW5kaW5nSXRlbXNGb3JDYWxs
YmFjay5jbGVhcigpOworfQogCi0gICAgYXV0byBpdGVtSXRlcmF0b3IgPSBtX2l0ZW1zLmZpbmQo
aXRlbUlkZW50aWZpZXIpOwotICAgIGlmIChpdGVtSXRlcmF0b3IgPT0gbV9pdGVtcy5lbmQoKSkK
LSAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvblJlc3VsdDo6SW52YWxpZEl0ZW07CithdXRvIFRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpjb21wbGV0ZU1hbmlwdWxhdGlvbihjb25zdCBWZWN0
b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+
JiBpdGVtcykgLT4gSGFzaE1hcDxJdGVtSWRlbnRpZmllciwgTWFuaXB1bGF0aW9uRmFpbHVyZT4K
K3sKKyAgICBIYXNoTWFwPEl0ZW1JZGVudGlmaWVyLCBNYW5pcHVsYXRpb25GYWlsdXJlPiBmYWls
dXJlczsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBpdGVtcykgeworICAgICAgICBpZiAoIWl0ZW0u
aWRlbnRpZmllcikKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gaXRlbUl0
ZXJhdG9yID0gbV9pdGVtcy5maW5kKGl0ZW0uaWRlbnRpZmllcik7CisgICAgICAgIGlmIChpdGVt
SXRlcmF0b3IgPT0gbV9pdGVtcy5lbmQoKSkgeworICAgICAgICAgICAgZmFpbHVyZXMuc2V0KGl0
ZW0uaWRlbnRpZmllciwgTWFuaXB1bGF0aW9uRmFpbHVyZTo6SW52YWxpZEl0ZW0pOworICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIH0KIAotICAgIE1hbmlwdWxhdGlvbkl0ZW0gaXRlbTsK
LSAgICBzdGQ6OmV4Y2hhbmdlKGl0ZW0sIGl0ZW1JdGVyYXRvci0+dmFsdWUpOwotICAgIG1faXRl
bXMucmVtb3ZlKGl0ZW1JdGVyYXRvcik7CisgICAgICAgIGF1dG8gZmFpbHVyZU9yTnVsbG9wdCA9
IHJlcGxhY2UoaXRlbUl0ZXJhdG9yLT52YWx1ZSwgaXRlbS50b2tlbnMpOworICAgICAgICBpZiAo
ZmFpbHVyZU9yTnVsbG9wdCkKKyAgICAgICAgICAgIGZhaWx1cmVzLnNldChpdGVtLmlkZW50aWZp
ZXIsICpmYWlsdXJlT3JOdWxsb3B0KTsKIAotICAgIHJldHVybiByZXBsYWNlKGl0ZW0sIHJlcGxh
Y2VtZW50VG9rZW5zKTsKKyAgICAgICAgbV9pdGVtcy5yZW1vdmUoaXRlbUl0ZXJhdG9yKTsKKyAg
ICB9CisgICAgcmV0dXJuIGZhaWx1cmVzOwogfQogCiBzdHJ1Y3QgVG9rZW5FeGNoYW5nZURhdGEg
ewpAQCAtMzAxLDEwICszMjEsMTAgQEAgc3RydWN0IE5vZGVJbnNlcnRpb24gewogICAgIFJlZjxO
b2RlPiBjaGlsZDsKIH07CiAKLWF1dG8gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxh
Y2UoY29uc3QgTWFuaXB1bGF0aW9uSXRlbSYgaXRlbSwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlv
blRva2VuPiYgcmVwbGFjZW1lbnRUb2tlbnMpIC0+IE1hbmlwdWxhdGlvblJlc3VsdAorYXV0byBU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVt
RGF0YSYgaXRlbSwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYgcmVwbGFjZW1lbnRU
b2tlbnMpIC0+IE9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmU+CiB7CiAgICAgaWYgKGl0ZW0u
c3RhcnQuaXNPcnBoYW4oKSB8fCBpdGVtLmVuZC5pc09ycGhhbigpKQotICAgICAgICByZXR1cm4g
TWFuaXB1bGF0aW9uUmVzdWx0OjpDb250ZW50Q2hhbmdlZDsKKyAgICAgICAgcmV0dXJuIE1hbmlw
dWxhdGlvbkZhaWx1cmU6OkNvbnRlbnRDaGFuZ2VkOwogCiAgICAgVGV4dEl0ZXJhdG9yIGl0ZXJh
dG9yIHsgaXRlbS5zdGFydCwgaXRlbS5lbmQgfTsKICAgICBzaXplX3QgY3VycmVudFRva2VuSW5k
ZXggPSAwOwpAQCAtMzE0LDEwICszMzQsMTAgQEAgYXV0byBUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVtJiBpdGVtLCBjb25zdCBWZWMKICAg
ICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKICAgICAgICAgYXV0byBzdHJpbmcgPSBpdGVy
YXRvci50ZXh0KCkudG9TdHJpbmcoKTsKICAgICAgICAgaWYgKGN1cnJlbnRUb2tlbkluZGV4ID49
IGl0ZW0udG9rZW5zLnNpemUoKSkKLSAgICAgICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25SZXN1
bHQ6OkNvbnRlbnRDaGFuZ2VkOworICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvbkZhaWx1
cmU6OkNvbnRlbnRDaGFuZ2VkOwogICAgICAgICBhdXRvJiBjdXJyZW50VG9rZW4gPSBpdGVtLnRv
a2Vuc1tjdXJyZW50VG9rZW5JbmRleF07CiAgICAgICAgIGlmIChpdGVyYXRvci50ZXh0KCkgIT0g
Y3VycmVudFRva2VuLmNvbnRlbnQpCi0gICAgICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uUmVz
dWx0OjpDb250ZW50Q2hhbmdlZDsKKyAgICAgICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25GYWls
dXJlOjpDb250ZW50Q2hhbmdlZDsKIAogICAgICAgICBhdXRvIGN1cnJlbnROb2RlID0gbWFrZVJl
ZlB0cihpdGVyYXRvci5ub2RlKCkpOwogICAgICAgICB0b2tlbkV4Y2hhbmdlTWFwLnNldChjdXJy
ZW50VG9rZW4uaWRlbnRpZmllciwgVG9rZW5FeGNoYW5nZURhdGEgeyBjdXJyZW50Tm9kZS5jb3B5
UmVmKCksIGN1cnJlbnRUb2tlbi5jb250ZW50LCBjdXJyZW50VG9rZW4uaXNFeGNsdWRlZCB9KTsK
QEAgLTM1OCwxNyArMzc4LDE3IEBAIGF1dG8gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJl
cGxhY2UoY29uc3QgTWFuaXB1bGF0aW9uSXRlbSYgaXRlbSwgY29uc3QgVmVjCiAgICAgZm9yIChh
dXRvJiBuZXdUb2tlbiA6IHJlcGxhY2VtZW50VG9rZW5zKSB7CiAgICAgICAgIGF1dG8gaXQgPSB0
b2tlbkV4Y2hhbmdlTWFwLmZpbmQobmV3VG9rZW4uaWRlbnRpZmllcik7CiAgICAgICAgIGlmIChp
dCA9PSB0b2tlbkV4Y2hhbmdlTWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxh
dGlvblJlc3VsdDo6SW52YWxpZFRva2VuOworICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlv
bkZhaWx1cmU6OkludmFsaWRUb2tlbjsKIAogICAgICAgICBhdXRvJiBleGNoYW5nZURhdGEgPSBp
dC0+dmFsdWU7CiAKICAgICAgICAgUmVmUHRyPE5vZGU+IGNvbnRlbnROb2RlOwogICAgICAgICBp
ZiAoZXhjaGFuZ2VEYXRhLmlzRXhjbHVkZWQpIHsKICAgICAgICAgICAgIGlmIChleGNoYW5nZURh
dGEuaXNDb25zdW1lZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uUmVzdWx0
OjpFeGNsdXNpb25WaW9sYXRpb247CisgICAgICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlv
bkZhaWx1cmU6OkV4Y2x1c2lvblZpb2xhdGlvbjsKICAgICAgICAgICAgIGV4Y2hhbmdlRGF0YS5p
c0NvbnN1bWVkID0gdHJ1ZTsKICAgICAgICAgICAgIGlmICghbmV3VG9rZW4uY29udGVudC5pc051
bGwoKSAmJiBuZXdUb2tlbi5jb250ZW50ICE9IGV4Y2hhbmdlRGF0YS5vcmlnaW5hbENvbnRlbnQp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvblJlc3VsdDo6RXhjbHVzaW9uVmlv
bGF0aW9uOworICAgICAgICAgICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25GYWlsdXJlOjpFeGNs
dXNpb25WaW9sYXRpb247CiAgICAgICAgICAgICBjb250ZW50Tm9kZSA9IFRleHQ6OmNyZWF0ZShj
b21tb25BbmNlc3Rvci0+ZG9jdW1lbnQoKSwgZXhjaGFuZ2VEYXRhLm9yaWdpbmFsQ29udGVudCk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgY29udGVudE5vZGUgPSBUZXh0OjpjcmVhdGUo
Y29tbW9uQW5jZXN0b3ItPmRvY3VtZW50KCksIG5ld1Rva2VuLmNvbnRlbnQpOwpAQCAtNDIzLDcg
KzQ0Myw3IEBAIGF1dG8gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UoY29uc3Qg
TWFuaXB1bGF0aW9uSXRlbSYgaXRlbSwgY29uc3QgVmVjCiAgICAgICAgICAgICBtX21hbmlwdWxh
dGVkRWxlbWVudHMuYWRkKGRvd25jYXN0PEVsZW1lbnQ+KGluc2VydGlvbi5jaGlsZC5nZXQoKSkp
OwogICAgIH0KIAotICAgIHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OlN1Y2Nlc3M7CisgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCmlu
ZGV4IDM2NGMzYjhlNmI2Li4zNmU1YzQxMTM1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaApAQCAtNTksNiArNTksMTQgQEAg
cHVibGljOgogICAgIGVudW0gSXRlbUlkZW50aWZpZXJUeXBlIHsgfTsKICAgICB1c2luZyBJdGVt
SWRlbnRpZmllciA9IE9iamVjdElkZW50aWZpZXI8SXRlbUlkZW50aWZpZXJUeXBlPjsKIAorICAg
IHN0cnVjdCBNYW5pcHVsYXRpb25JdGVtIHsKKyAgICAgICAgSXRlbUlkZW50aWZpZXIgaWRlbnRp
ZmllcjsKKyAgICAgICAgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiB0b2tlbnM7CisKKyAgICAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owor
ICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWFuaXB1bGF0
aW9uSXRlbT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCiAgICAgc3RydWN0IEV4Y2x1c2lv
blJ1bGUgewogICAgICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgRXhjbHVkZSwgSW5j
bHVkZSB9OwogCkBAIC05Myw0MCArMTAxLDQzIEBAIHB1YmxpYzoKICAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIE9wdGlvbmFsPEV4Y2x1c2lvblJ1bGU+IGRlY29kZShEZWNv
ZGVyJik7CiAgICAgfTsKIAotICAgIHVzaW5nIE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayA9IFdU
Rjo6RnVuY3Rpb248dm9pZChEb2N1bWVudCYsIEl0ZW1JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8
TWFuaXB1bGF0aW9uVG9rZW4+Jik+OworICAgIHVzaW5nIE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFj
ayA9IFdURjo6RnVuY3Rpb248dm9pZChEb2N1bWVudCYsIGNvbnN0IFZlY3RvcjxNYW5pcHVsYXRp
b25JdGVtPiYpPjsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5nUGFyYWdy
YXBocyhNYW5pcHVsYXRpb25JdGVtQ2FsbGJhY2smJiwgVmVjdG9yPEV4Y2x1c2lvblJ1bGU+JiYg
PSB7IH0pOwogCiAgICAgdm9pZCBkaWRDcmVhdGVSZW5kZXJlckZvckVsZW1lbnQoRWxlbWVudCYp
OwogCi0gICAgZW51bSBjbGFzcyBNYW5pcHVsYXRpb25SZXN1bHQgOiB1aW50OF90IHsKLSAgICAg
ICAgU3VjY2VzcywKKyAgICBlbnVtIGNsYXNzIE1hbmlwdWxhdGlvbkZhaWx1cmUgOiB1aW50OF90
IHsKICAgICAgICAgQ29udGVudENoYW5nZWQsCiAgICAgICAgIEludmFsaWRJdGVtLAogICAgICAg
ICBJbnZhbGlkVG9rZW4sCiAgICAgICAgIEV4Y2x1c2lvblZpb2xhdGlvbiwKICAgICB9OwotICAg
IFdFQkNPUkVfRVhQT1JUIE1hbmlwdWxhdGlvblJlc3VsdCBjb21wbGV0ZU1hbmlwdWxhdGlvbihJ
dGVtSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYpOworICAgIFdF
QkNPUkVfRVhQT1JUIEhhc2hNYXA8SXRlbUlkZW50aWZpZXIsIE1hbmlwdWxhdGlvbkZhaWx1cmU+
IGNvbXBsZXRlTWFuaXB1bGF0aW9uKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4mKTsKIAogcHJpdmF0ZToKICAgICBib29s
IGlzSW5NYW5pcHVsYXRlZEVsZW1lbnQoRWxlbWVudCYpOwogICAgIHZvaWQgb2JzZXJ2ZVBhcmFn
cmFwaHMoVmlzaWJsZVBvc2l0aW9uJiBzdGFydCwgVmlzaWJsZVBvc2l0aW9uJiBlbmQpOwogICAg
IHZvaWQgc2NoZWR1bGVPYnNlcnZhcnRpb25VcGRhdGUoKTsKIAotICAgIHN0cnVjdCBNYW5pcHVs
YXRpb25JdGVtIHsKKyAgICBzdHJ1Y3QgTWFuaXB1bGF0aW9uSXRlbURhdGEgewogICAgICAgICBQ
b3NpdGlvbiBzdGFydDsKICAgICAgICAgUG9zaXRpb24gZW5kOwogICAgICAgICBWZWN0b3I8TWFu
aXB1bGF0aW9uVG9rZW4+IHRva2VuczsKICAgICB9OwogCiAgICAgdm9pZCBhZGRJdGVtKGNvbnN0
IFBvc2l0aW9uJiBzdGFydE9mUGFyYWdyYXBoLCBjb25zdCBQb3NpdGlvbiYgZW5kT2ZQYXJhZ3Jh
cGgsIFZlY3RvcjxNYW5pcHVsYXRpb25Ub2tlbj4mJik7Ci0gICAgTWFuaXB1bGF0aW9uUmVzdWx0
IHJlcGxhY2UoY29uc3QgTWFuaXB1bGF0aW9uSXRlbSYsIGNvbnN0IFZlY3RvcjxNYW5pcHVsYXRp
b25Ub2tlbj4mKTsKKyAgICB2b2lkIGZsdXNoUGVuZGluZ0l0ZW1zRm9yQ2FsbGJhY2soKTsKKyAg
ICBPcHRpb25hbDxNYW5pcHVsYXRpb25GYWlsdXJlPiByZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlv
bkl0ZW1EYXRhJiwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYpOwogCiAgICAgV2Vh
a1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBXZWFrSGFzaFNldDxFbGVtZW50PiBtX2Vs
ZW1lbnRzV2l0aE5ld1JlbmRlcmVyOwogICAgIFdlYWtIYXNoU2V0PEVsZW1lbnQ+IG1fbWFuaXB1
bGF0ZWRFbGVtZW50czsKKwogICAgIE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayBtX2NhbGxiYWNr
OworICAgIFZlY3RvcjxNYW5pcHVsYXRpb25JdGVtPiBtX3BlbmRpbmdJdGVtc0ZvckNhbGxiYWNr
OworCiAgICAgVmVjdG9yPEV4Y2x1c2lvblJ1bGU+IG1fZXhjbHVzaW9uUnVsZXM7Ci0gICAgSGFz
aE1hcDxJdGVtSWRlbnRpZmllciwgTWFuaXB1bGF0aW9uSXRlbT4gbV9pdGVtczsKKyAgICBIYXNo
TWFwPEl0ZW1JZGVudGlmaWVyLCBNYW5pcHVsYXRpb25JdGVtRGF0YT4gbV9pdGVtczsKICAgICBJ
dGVtSWRlbnRpZmllciBtX2l0ZW1JZGVudGlmaWVyOwogICAgIFRva2VuSWRlbnRpZmllciBtX3Rv
a2VuSWRlbnRpZmllcjsKIH07CkBAIC0xNTAsNiArMTYxLDIzIEBAIE9wdGlvbmFsPFRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4gVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4K
K3ZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW06OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgaWRlbnRpZmllciA8
PCB0b2tlbnM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRpb25hbDxUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4gVGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW06OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQorewor
ICAgIE1hbmlwdWxhdGlvbkl0ZW0gcmVzdWx0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRva2VucykpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZv
aWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6OmVuY29kZShFbmNv
ZGVyJiBlbmNvZGVyKSBjb25zdAogewpAQCAtMjI3LDE1ICsyNTUsMTQgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhj
bHVzaW9uUnVsZToKICAgICA+OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxX
ZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uUmVzdWx0PiB7
Ci0gICAgdXNpbmcgTWFuaXB1bGF0aW9uUmVzdWx0ID0gV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblJlc3VsdDsKK3RlbXBsYXRlPD4gc3RydWN0IEVudW1U
cmFpdHM8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZh
aWx1cmU+IHsKKyAgICB1c2luZyBNYW5pcHVsYXRpb25GYWlsdXJlID0gV2ViQ29yZTo6VGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmU7CiAgICAgdXNpbmcgdmFs
dWVzID0gRW51bVZhbHVlczwKLSAgICAgICAgTWFuaXB1bGF0aW9uUmVzdWx0LAotICAgICAgICBN
YW5pcHVsYXRpb25SZXN1bHQ6OlN1Y2Nlc3MsCi0gICAgICAgIE1hbmlwdWxhdGlvblJlc3VsdDo6
Q29udGVudENoYW5nZWQsCi0gICAgICAgIE1hbmlwdWxhdGlvblJlc3VsdDo6SW52YWxpZEl0ZW0s
Ci0gICAgICAgIE1hbmlwdWxhdGlvblJlc3VsdDo6SW52YWxpZFRva2VuLAotICAgICAgICBNYW5p
cHVsYXRpb25SZXN1bHQ6OkV4Y2x1c2lvblZpb2xhdGlvbgorICAgICAgICBNYW5pcHVsYXRpb25G
YWlsdXJlLAorICAgICAgICBNYW5pcHVsYXRpb25GYWlsdXJlOjpDb250ZW50Q2hhbmdlZCwKKyAg
ICAgICAgTWFuaXB1bGF0aW9uRmFpbHVyZTo6SW52YWxpZEl0ZW0sCisgICAgICAgIE1hbmlwdWxh
dGlvbkZhaWx1cmU6OkludmFsaWRUb2tlbiwKKyAgICAgICAgTWFuaXB1bGF0aW9uRmFpbHVyZTo6
RXhjbHVzaW9uVmlvbGF0aW9uCiAgICAgPjsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDgzZjg5YzQxYWE4Li5jNzJmNmNmZjJm
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CkBAIC0xNjU0LDggKzE2NTQsOSBAQCAtICh2b2lkKV9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0
aENvbmZpZ3VyYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aQogICAgICAgICB9
CiAgICAgfQogCi0gICAgX3BhZ2UtPnN0YXJ0VGV4dE1hbmlwdWxhdGlvbnMoZXhjbHVzaW9uUnVs
ZXMsIFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLV2ViVmlldz4oc2VsZildIChXZWJDb3JlOjpU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXIgaXRlbUlELAotICAgICAg
ICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlw
dWxhdGlvblRva2VuPiYgdG9rZW5zKSB7CisgICAgX3BhZ2UtPnN0YXJ0VGV4dE1hbmlwdWxhdGlv
bnMoZXhjbHVzaW9uUnVsZXMsIFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLV2ViVmlldz4oc2Vs
ZildIChjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1h
bmlwdWxhdGlvbkl0ZW0+JiBpdGVtUmVmZXJlbmNlcykgeworICAgICAgICAvLyBXZWJDb3JlOjpU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXIgaXRlbUlELCBjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRv
a2VuPiYgdG9rZW5zCisKICAgICAgICAgaWYgKCF3ZWFrU2VsZikKICAgICAgICAgICAgIHJldHVy
bjsKIApAQCAtMTY2NCwxNyArMTY2NSwzNiBAQCAtICh2b2lkKV9zdGFydFRleHRNYW5pcHVsYXRp
b25zV2l0aENvbmZpZ3VyYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aQogICAg
ICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIE5TTXV0
YWJsZUFycmF5ICp3a1Rva2VucyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTp0
b2tlbnMuc2l6ZSgpXTsKLSAgICAgICAgZm9yIChhdXRvJiB0b2tlbiA6IHRva2VucykgewotICAg
ICAgICAgICAgYXV0byB3a1Rva2VuID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tl
biBhbGxvY10gaW5pdF0pOwotICAgICAgICAgICAgW3drVG9rZW4gc2V0SWRlbnRpZmllcjpTdHJp
bmc6Om51bWJlcih0b2tlbi5pZGVudGlmaWVyLnRvVUludDY0KCkpXTsKLSAgICAgICAgICAgIFt3
a1Rva2VuIHNldENvbnRlbnQ6dG9rZW4uY29udGVudF07Ci0gICAgICAgICAgICBbd2tUb2tlbiBz
ZXRFeGNsdWRlZDp0b2tlbi5pc0V4Y2x1ZGVkXTsKLSAgICAgICAgICAgIFt3a1Rva2VucyBhZGRP
YmplY3Q6d2tUb2tlbi5nZXQoKV07CisgICAgICAgIGlmICghW2RlbGVnYXRlIHJlc3BvbmRzVG9T
ZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtczop
XSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbVJlZmVyZW5jZXMpIHsKKyAg
ICAgICAgICAgICAgICBOU011dGFibGVBcnJheSAqd2tUb2tlbnMgPSBbTlNNdXRhYmxlQXJyYXkg
YXJyYXlXaXRoQ2FwYWNpdHk6aXRlbS50b2tlbnMuc2l6ZSgpXTsKKyAgICAgICAgICAgICAgICBm
b3IgKGF1dG8mIHRva2VuIDogaXRlbS50b2tlbnMpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byB3a1Rva2VuID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5p
dF0pOworICAgICAgICAgICAgICAgICAgICBbd2tUb2tlbiBzZXRJZGVudGlmaWVyOlN0cmluZzo6
bnVtYmVyKHRva2VuLmlkZW50aWZpZXIudG9VSW50NjQoKSldOworICAgICAgICAgICAgICAgICAg
ICBbd2tUb2tlbiBzZXRDb250ZW50OnRva2VuLmNvbnRlbnRdOworICAgICAgICAgICAgICAgICAg
ICBbd2tUb2tlbiBzZXRFeGNsdWRlZDp0b2tlbi5pc0V4Y2x1ZGVkXTsKKyAgICAgICAgICAgICAg
ICAgICAgW3drVG9rZW5zIGFkZE9iamVjdDp3a1Rva2VuLmdldCgpXTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgYXV0byB3a0l0ZW0gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlw
dWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpTdHJpbmc6Om51bWJlcihpdGVt
LmlkZW50aWZpZXIudG9VSW50NjQoKSkgdG9rZW5zOndrVG9rZW5zXSk7CisgICAgICAgICAgICAg
ICAgW2RlbGVnYXRlIF93ZWJWaWV3OnJldGFpbmVkU2VsZi5nZXQoKSBkaWRGaW5kVGV4dE1hbmlw
dWxhdGlvbkl0ZW06d2tJdGVtLmdldCgpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIE5TTXV0YWJsZUFycmF5ICp3a0l0ZW1zID0gW05T
TXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5Oml0ZW1SZWZlcmVuY2VzLnNpemUoKV07Cisg
ICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1SZWZlcmVuY2VzKSB7CisgICAgICAgICAgICBO
U011dGFibGVBcnJheSAqd2tUb2tlbnMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNp
dHk6aXRlbS50b2tlbnMuc2l6ZSgpXTsKKyAgICAgICAgICAgIGZvciAoYXV0byYgdG9rZW4gOiBp
dGVtLnRva2VucykgeworICAgICAgICAgICAgICAgIGF1dG8gd2tUb2tlbiA9IGFkb3B0TlMoW1tf
V0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAgICAgICBb
d2tUb2tlbiBzZXRJZGVudGlmaWVyOlN0cmluZzo6bnVtYmVyKHRva2VuLmlkZW50aWZpZXIudG9V
SW50NjQoKSldOworICAgICAgICAgICAgICAgIFt3a1Rva2VuIHNldENvbnRlbnQ6dG9rZW4uY29u
dGVudF07CisgICAgICAgICAgICAgICAgW3drVG9rZW4gc2V0RXhjbHVkZWQ6dG9rZW4uaXNFeGNs
dWRlZF07CisgICAgICAgICAgICAgICAgW3drVG9rZW5zIGFkZE9iamVjdDp3a1Rva2VuLmdldCgp
XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFt3a0l0ZW1zIGFkZE9iamVjdDpbW19XS1Rl
eHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6U3RyaW5nOjpudW1i
ZXIoaXRlbS5pZGVudGlmaWVyLnRvVUludDY0KCkpIHRva2Vuczp3a1Rva2Vuc11dOwogICAgICAg
ICB9CisgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpyZXRhaW5lZFNlbGYuZ2V0KCkgZGlkRmlu
ZFRleHRNYW5pcHVsYXRpb25JdGVtczp3a0l0ZW1zXTsKIAotICAgICAgICBhdXRvIGl0ZW0gPSBh
ZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmll
cjpTdHJpbmc6Om51bWJlcihpdGVtSUQudG9VSW50NjQoKSkgdG9rZW5zOndrVG9rZW5zXSk7Ci0g
ICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpyZXRhaW5lZFNlbGYuZ2V0KCkgZGlkRmluZFRleHRN
YW5pcHVsYXRpb25JdGVtOml0ZW0uZ2V0KCldOwogICAgIH0sIFtjYXB0dXJlZENvbXBsZXRpb25C
bG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildICgpIHsKICAgICAgICAgY2Fw
dHVyZWRDb21wbGV0aW9uQmxvY2soKTsKICAgICB9KTsKQEAgLTE2ODIsMTAgKzE3MDIsMTMgQEAg
LSAodm9pZClfc3RhcnRUZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25maWd1cmF0aW9uOihfV0tUZXh0
TWFuaXB1bGF0aW9uQ29uZmlndXJhdGkKIAogLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0
aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWl0ZW0gY29tcGxldGlvbjoodm9pZCheKShC
T09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgdXNpbmcgTWFuaXB1bGF0aW9u
UmVzdWx0ID0gV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlv
blJlc3VsdDsKKyAgICB1c2luZyBJdGVtSWRlbnRpZmllciA9IFdlYkNvcmU6OlRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllcjsKKyAgICB1c2luZyBNYW5pcHVsYXRpb25G
YWlsdXJlID0gV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlv
bkZhaWx1cmU7CiAKLSAgICBpZiAoIV9wYWdlKQorICAgIGlmICghX3BhZ2UpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAg
YXV0byBpdGVtSUQgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXJUeXBlPihTdHJpbmcoaXRlbS5pZGVudGlmaWVy
KS50b1VJbnQ2NCgpKTsKIApAQCAtMTY5NSw4ICsxNzE4LDc0IEBAIC0gKHZvaWQpX2NvbXBsZXRl
VGV4dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKilpdGVtIGNvbXBsZXRp
b246KHZvCiAgICAgICAgIHRva2Vucy5hcHBlbmQoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuIHsgdG9rZW5JRCwgd2tUb2tlbi5jb250ZW50IH0p
OwogICAgIH0KIAotICAgIF9wYWdlLT5jb21wbGV0ZVRleHRNYW5pcHVsYXRpb24oaXRlbUlELCB0
b2tlbnMsIFtjYXB0dXJlZENvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildIChNYW5pcHVsYXRpb25SZXN1bHQgcmVzdWx0KSB7Ci0gICAgICAgIGNhcHR1cmVk
Q29tcGxldGlvbkJsb2NrKHJlc3VsdCA9PSBNYW5pcHVsYXRpb25SZXN1bHQ6OlN1Y2Nlc3MpOwor
ICAgIFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0
aW9uSXRlbT4gY29yZUl0ZW1zOworICAgIGNvcmVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KDEpOworICAgIGNvcmVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6VGV4dE1hbmlwdWxh
dGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0geyBpdGVtSUQsIFdURk1vdmUodG9rZW5z
KSB9KTsKKyAgICBfcGFnZS0+Y29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKGNvcmVJdGVtcywgW2Nh
cHR1cmVkQ29tcGxldGlvbkJsb2NrID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0g
KGJvb2wgYWxsRmFpbGVkLCBjb25zdCBIYXNoTWFwPEl0ZW1JZGVudGlmaWVyLCBNYW5pcHVsYXRp
b25GYWlsdXJlPiYgZmFpbHVyZU1hcCkgeworICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25CbG9j
ayhhbGxGYWlsZWQgfHwgZmFpbHVyZU1hcC5pc0VtcHR5KCkpOworICAgIH0pOworfQorCitzdGF0
aWMgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gbWFrZUZhaWx1cmVTZXRGb3JBbGxUZXh0TWFuaXB1
bGF0aW9uSXRlbXMoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqPiAqaXRlbXMpCit7
CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZVNldD4gd2tGYWlsdXJlcyA9IGFkb3B0TlMoW1tbTlNN
dXRhYmxlU2V0IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Oml0ZW1zLmNvdW50XSBhdXRvcmVsZWFz
ZV0pOworICAgIGZvciAoX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKml0ZW0gaW4gaXRlbXMpCisg
ICAgICAgIFt3a0ZhaWx1cmVzIGFkZE9iamVjdDpbTlNFcnJvciBlcnJvcldpdGhEb21haW46X1dL
VGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckRvbWFpbiBjb2RlOl9XS1RleHRNYW5pcHVsYXRpb25J
dGVtRXJyb3JOb3RBdmFpbGFibGUgdXNlckluZm86QHtAIml0ZW1JZGVudGlmaWVyIjogaXRlbS5p
ZGVudGlmaWVyfV1dOworICAgIHJldHVybiB3a0ZhaWx1cmVzOworfQorCistICh2b2lkKV9jb21w
bGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczooTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9u
SXRlbSAqPiAqKWl0ZW1zIGNvbXBsZXRpb246KHZvaWQoXikoTlNTZXQ8TlNFcnJvciAqPiAqZXJy
b3JzKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIHVzaW5nIEl0ZW1JZGVudGlmaWVyID0gV2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVudGlmaWVyOworICAgIHVz
aW5nIE1hbmlwdWxhdGlvbkZhaWx1cmUgPSBXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZTsKKworICAgIGlmICghX3BhZ2UpIHsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIobWFrZUZhaWx1cmVTZXRGb3JBbGxUZXh0TWFuaXB1bGF0aW9uSXRl
bXMoaXRlbXMpLmdldCgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3RvcjxX
ZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4gY29y
ZUl0ZW1zOworICAgIGNvcmVJdGVtcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGl0ZW1zLmNvdW50
KTsKKyAgICBmb3IgKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICp3a0l0ZW0gaW4gaXRlbXMpIHsK
KyAgICAgICAgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5p
cHVsYXRpb25Ub2tlbj4gY29yZVRva2VuczsKKyAgICAgICAgY29yZVRva2Vucy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KHdrSXRlbS50b2tlbnMuY291bnQpOworICAgICAgICBmb3IgKF9XS1RleHRN
YW5pcHVsYXRpb25Ub2tlbiAqd2tUb2tlbiBpbiB3a0l0ZW0udG9rZW5zKSB7CisgICAgICAgICAg
ICBhdXRvIHRva2VuSUQgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6VG9rZW5JZGVudGlmaWVyVHlwZT4oU3RyaW5nKHdrVG9rZW4uaWRl
bnRpZmllcikudG9VSW50NjQoKSk7CisgICAgICAgICAgICBjb3JlVG9rZW5zLnVuY2hlY2tlZEFw
cGVuZChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9r
ZW4geyB0b2tlbklELCB3a1Rva2VuLmNvbnRlbnQgfSk7CisgICAgICAgIH0KKyAgICAgICAgYXV0
byBpdGVtSUQgPSBtYWtlT2JqZWN0SWRlbnRpZmllcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXJUeXBlPihTdHJpbmcod2tJdGVtLmlkZW50aWZpZXIp
LnRvVUludDY0KCkpOworICAgICAgICBjb3JlSXRlbXMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6
OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVtIHsgaXRlbUlELCBX
VEZNb3ZlKGNvcmVUb2tlbnMpIH0pOworICAgIH0KKworICAgIFJldGFpblB0cjxOU0FycmF5PF9X
S1RleHRNYW5pcHVsYXRpb25JdGVtICo+PiByZXRhaW5lZEl0ZW1zID0gaXRlbXM7CisgICAgX3Bh
Z2UtPmNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbihjb3JlSXRlbXMsIFtjYXB0dXJlZEl0ZW1zID0g
cmV0YWluZWRJdGVtcywgY2FwdHVyZWRDb21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29t
cGxldGlvbkhhbmRsZXIpXShib29sIGFsbEZhaWxlZCwgY29uc3QgSGFzaE1hcDxJdGVtSWRlbnRp
ZmllciwgTWFuaXB1bGF0aW9uRmFpbHVyZT4mIGNvcmVGYWlsdXJlTWFwKSB7CisgICAgICAgIGlm
IChhbGxGYWlsZWQpIHsKKyAgICAgICAgICAgIGNhcHR1cmVkQ29tcGxldGlvbkJsb2NrKG1ha2VG
YWlsdXJlU2V0Rm9yQWxsVGV4dE1hbmlwdWxhdGlvbkl0ZW1zKGNhcHR1cmVkSXRlbXMuZ2V0KCkp
LmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgh
Y29yZUZhaWx1cmVNYXAuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBSZXRhaW5QdHI8TlNNdXRh
YmxlU2V0PiB3a0ZhaWx1cmVzID0gYWRvcHROUyhbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdFdp
dGhDYXBhY2l0eTpjb3JlRmFpbHVyZU1hcC5zaXplKCldKTsKKyAgICAgICAgICAgIGZvciAoYXV0
byYgZW50cnkgOiBjb3JlRmFpbHVyZU1hcCkgeworICAgICAgICAgICAgICAgIF9XS1RleHRNYW5p
cHVsYXRpb25JdGVtRXJyb3JDb2RlIGVycm9yQ29kZSA9IFsmXSgpIHsKKyAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChlbnRyeS52YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIE1h
bmlwdWxhdGlvbkZhaWx1cmU6OkNvbnRlbnRDaGFuZ2VkOgorICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JDb250ZW50Q2hhbmdlZDsKKyAg
ICAgICAgICAgICAgICAgICAgY2FzZSBNYW5pcHVsYXRpb25GYWlsdXJlOjpJbnZhbGlkSXRlbToK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVy
cm9ySW52YWxpZEl0ZW07CisgICAgICAgICAgICAgICAgICAgIGNhc2UgTWFuaXB1bGF0aW9uRmFp
bHVyZTo6SW52YWxpZFRva2VuOgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9XS1Rl
eHRNYW5pcHVsYXRpb25JdGVtRXJyb3JJbnZhbGlkVG9rZW47CisgICAgICAgICAgICAgICAgICAg
IGNhc2UgTWFuaXB1bGF0aW9uRmFpbHVyZTo6RXhjbHVzaW9uVmlvbGF0aW9uOgorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JFeGNsdXNp
b25WaW9sYXRpb247CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KCk7
CisgICAgICAgICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gU3RyaW5nOjpudW1iZXIoZW50cnku
a2V5LnRvVUludDY0KCkpOworICAgICAgICAgICAgICAgIFt3a0ZhaWx1cmVzIGFkZE9iamVjdDpb
TlNFcnJvciBlcnJvcldpdGhEb21haW46X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckRvbWFp
biBjb2RlOnN0YXRpY19jYXN0PGludD4oZXJyb3JDb2RlKSB1c2VySW5mbzpAe0AiaXRlbUlkZW50
aWZpZXIiOiBpZGVudGlmaWVyfV1dOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FwdHVy
ZWRDb21wbGV0aW9uQmxvY2sod2tGYWlsdXJlcy5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgY2FwdHVyZWRDb21wbGV0aW9uQmxvY2sobmlsKTsKICAgICB9
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggMmU1ODhlOGVmZWIuLjk1MTgxZTgwZWE0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
QEAgLTE5MCw4ICsxOTAsOSBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgX1dLRnJhbWVIYW5kbGUgKl9tYWluRnJhbWUgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdl
YWssIHNldHRlcj1fc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOikgaWQgPF9XS1RleHRNYW5p
cHVsYXRpb25EZWxlZ2F0ZT4gX3RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfc3RhcnRU
ZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25maWd1cmF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uQ29u
ZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uZmlndXJhdGlvbiBjb21wbGV0aW9uOih2b2lkKF4pKHZv
aWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0aENv
bmZpZ3VyYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uICopY29uZmlndXJh
dGlvbiBjb21wbGV0aW9uOih2b2lkKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9j
b21wbGV0ZVRleHRNYW5pcHVsYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopaXRlbSBj
b21wbGV0aW9uOih2b2lkKF4pKEJPT0wgc3VjY2VzcykpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
X2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOihOU0FycmF5PF9XS1RleHRNYW5pcHVs
YXRpb25JdGVtICo+ICopaXRlbXMgY29tcGxldGlvbjoodm9pZCheKShOU1NldDxOU0Vycm9yICo+
ICplcnJvcnMpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9
X3NldEFkZHNWaXNpdGVkTGlua3M6KSBCT09MIF9hZGRzVmlzaXRlZExpbmtzOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlv
bkRlbGVnYXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1h
bmlwdWxhdGlvbkRlbGVnYXRlLmgKaW5kZXggNzBhYjQ5ZTYwY2QuLjgwZmJlZWI3MTFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxh
dGlvbkRlbGVnYXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZS5oCkBAIC0zNCw2ICszNCw3IEBACiBAb3B0aW9uYWwK
IAogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5kVGV4dE1hbmlw
dWxhdGlvbkl0ZW06KF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopaXRlbTsKKy0gKHZvaWQpX3dl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtczoo
TlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqPiAqKWl0ZW1zOwogCiBAZW5kCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1
bGF0aW9uSXRlbS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRN
YW5pcHVsYXRpb25JdGVtLmgKaW5kZXggNTllNjVlNTJhMjUuLjdkNGVjMzczZDcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlv
bkl0ZW0uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1h
bmlwdWxhdGlvbkl0ZW0uaApAQCAtNDUsNCArNDUsMTQgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1h
Y29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpCiAKIEBlbmQKIAorV0tfRVhURVJOIE5T
U3RyaW5nICogY29uc3QgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckRvbWFpbiBXS19BUElf
QVZBSUxBQkxFKG1hY29zKDEwLjEyKSwgaW9zKDEwLjApKTsKKwordHlwZWRlZiBOU19FTlVNKE5T
SW50ZWdlciwgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckNvZGUpIHsKKyAgICBfV0tUZXh0
TWFuaXB1bGF0aW9uSXRlbUVycm9yTm90QXZhaWxhYmxlLAorICAgIF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtRXJyb3JDb250ZW50Q2hhbmdlZCwKKyAgICBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVy
cm9ySW52YWxpZEl0ZW0sCisgICAgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckludmFsaWRU
b2tlbiwKKyAgICBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yRXhjbHVzaW9uVmlvbGF0aW9u
LAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OworCiBOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uSXRlbS5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uSXRlbS5tbQppbmRleCA4
MGU3MjhhZTUzNS4uMzc3ZGY3NjdhYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uSXRlbS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0ubW0KQEAgLTI5
LDYgKzI5LDggQEAKICNpbXBvcnQgIl9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbi5oIgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCitOU1N0cmluZyAqIGNvbnN0IF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtRXJyb3JEb21haW4gPSBAIldLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckRvbWFpbiI7
CisKIEBpbXBsZW1lbnRhdGlvbiBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSB7CiAgICAgUmV0YWlu
UHRyPE5TU3RyaW5nPiBfaWRlbnRpZmllcjsKICAgICBSZXRhaW5QdHI8TlNBcnJheTxfV0tUZXh0
TWFuaXB1bGF0aW9uVG9rZW4gKj4+IF90b2tlbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcAppbmRleCA4MjYzYWFkNWY1Ni4uZDkzYTM2ZTgzMzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtOTg3NywyMiArOTg3NywyMSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRUZXh0TWFuaXB1bGF0aW9ucyhjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbgogICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6U3RhcnRUZXh0TWFuaXB1bGF0aW9ucyhleGNsdXNpb25SdWxlcyksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmRUZXh0
TWFuaXB1bGF0aW9uSXRlbShXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRl
bUlkZW50aWZpZXIgaXRlbUlELAotICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+JiB0b2tlbnMpCit2b2lkIFdlYlBh
Z2VQcm94eTo6ZGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtcyhjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+JiBpdGVtcykK
IHsKICAgICBpZiAoIW1fdGV4dE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjaykKICAgICAgICAgcmV0
dXJuOwotICAgIG1fdGV4dE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayhpdGVtSUQsIHRva2Vucyk7
CisgICAgbV90ZXh0TWFuaXB1bGF0aW9uSXRlbUNhbGxiYWNrKGl0ZW1zKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbihXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXIgaXRlbUlELAotICAgIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+
JiB0b2tlbnMsIFdURjo6RnVuY3Rpb248dm9pZCAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvblJlc3VsdCByZXN1bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBXZWJQYWdlUHJveHk6OmNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbihjb25zdCBWZWN0
b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+
JiBpdGVtcywKKyAgICBXVEY6OkZ1bmN0aW9uPHZvaWQgKGJvb2wgYWxsRmFpbGVkLCBjb25zdCBI
YXNoTWFwPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmll
ciwgV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1
cmU+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2Vz
cygpKSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25SZXN1bHQ6OkludmFsaWRJdGVtKTsKKyAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIodHJ1ZSwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXBsZXRlVGV4dE1hbmlw
dWxhdGlvbihpdGVtSUQsIHRva2VucyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkNvbXBsZXRlVGV4dE1hbmlw
dWxhdGlvbihpdGVtcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldE92ZXJyaWRkZW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJiBtZWRpYVR5
cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDk3OWMxZjRjMWRm
Li4wYjQzMThjYzBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTE2ODEsMTEgKzE2ODEsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TW9ja1dlYkF1dGhlbnRp
Y2F0aW9uQ29uZmlndXJhdGlvbihXZWJDb3JlOjpNb2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1
cmF0aW9uJiYpOwogI2VuZGlmCiAKLSAgICB1c2luZyBUZXh0TWFuaXB1bGF0aW9uSXRlbUNhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6SXRlbUlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+Jik+OworICAgIHVzaW5nIFRleHRNYW5p
cHVsYXRpb25JdGVtQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4mKT47
CiAgICAgdm9pZCBzdGFydFRleHRNYW5pcHVsYXRpb25zKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZT4mLCBUZXh0TWFuaXB1bGF0
aW9uSXRlbUNhbGxiYWNrJiYsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKLSAg
ICB2b2lkIGRpZEZpbmRUZXh0TWFuaXB1bGF0aW9uSXRlbShXZWJDb3JlOjpUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+Jik7Ci0gICAgdm9pZCBj
b21wbGV0ZVRleHRNYW5pcHVsYXRpb24oV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXI6Okl0ZW1JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiYsCi0gICAgICAgIFdURjo6RnVuY3Rpb248
dm9pZCAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblJl
c3VsdCk+JiYpOworICAgIHZvaWQgZGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtcyhjb25zdCBW
ZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0
ZW0+Jik7CisgICAgdm9pZCBjb21wbGV0ZVRleHRNYW5pcHVsYXRpb24oY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25JdGVtPiYsCisg
ICAgICAgIFdURjo6RnVuY3Rpb248dm9pZCAoYm9vbCBhbGxGYWlsZWQsIGNvbnN0IEhhc2hNYXA8
V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVudGlmaWVyLCBXZWJD
b3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZT4mKT4m
Jik7CiAKICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRkZW5NZWRpYVR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX292ZXJyaWRkZW5NZWRpYVR5cGU7IH0KICAgICB2b2lkIHNldE92ZXJyaWRkZW5NZWRp
YVR5cGUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOWY2NDRmNDYyZmIuLjc1ZjY4NmQxY2Y0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBA
IC01ODcsNiArNTg3LDYgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICAgICBTZW5kTWVz
c2FnZVRvV2ViVmlld1dpdGhSZXBseShzdHJ1Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSB1c2VyTWVz
c2FnZSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlVzZXJNZXNzYWdlIHJlcGx5TWVzc2FnZSkgQXN5bmMK
ICNlbmRpZgogCi0gICAgRGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtKFdlYkNvcmU6OlRleHRN
YW5pcHVsYXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciBpdGVtSUQsIFZlY3RvcjxXZWJD
b3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+IHRva2Vu
cykKKyAgICBEaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW1zKFZlY3RvcjxXZWJDb3JlOjpUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4gaXRlbXMpCiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggZTI0NTcw
NDNhNDguLjZiNGRmZTNiMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcApAQCAtNjk0NSw4ICs2OTQ1LDcgQEAgdm9pZCBXZWJQYWdlOjpzdGFydFRl
eHRNYW5pcHVsYXRpb25zKFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
cjoKICAgICBpZiAoIW1haW5Eb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbWFpbkRv
Y3VtZW50LT50ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcigpLnN0YXJ0T2JzZXJ2aW5nUGFyYWdy
YXBocyhbd2ViUGFnZSA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKFdlYkNvcmU6OkRvY3VtZW50JiBk
b2N1bWVudCwKLSAgICAgICAgV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0
ZW1JZGVudGlmaWVyIGl0ZW1JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiYgdG9rZW5zKSB7CisgICAg
bWFpbkRvY3VtZW50LT50ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcigpLnN0YXJ0T2JzZXJ2aW5n
UGFyYWdyYXBocyhbd2ViUGFnZSA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gKERvY3VtZW50JiBkb2N1
bWVudCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpN
YW5pcHVsYXRpb25JdGVtPiYgaXRlbXMpIHsKICAgICAgICAgYXV0byogZnJhbWUgPSBkb2N1bWVu
dC5mcmFtZSgpOwogICAgICAgICBpZiAoIXdlYlBhZ2UgfHwgIWZyYW1lIHx8IHdlYlBhZ2UtPm1h
aW5GcmFtZSgpICE9IGZyYW1lKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNjk1NSwzMSArNjk1
NCwzNiBAQCB2b2lkIFdlYlBhZ2U6OnN0YXJ0VGV4dE1hbmlwdWxhdGlvbnMoVmVjdG9yPFdlYkNv
cmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOgogICAgICAgICBpZiAoIXdlYkZyYW1lKQog
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2VQcm94eTo6RGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtKGl0ZW1JZGVudGlmaWVyLCB0
b2tlbnMpKTsKKyAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW1zKGl0ZW1zKSk7CiAgICAgfSwgV1RGTW92ZShleGNs
dXNpb25SdWxlcykpOwogICAgIC8vIEZvciBub3csIHdlIGFzc3VtZSBzdGFydE9ic2VydmluZ1Bh
cmFncmFwaHMgZmluZCBhbGwgcGFyYWdyYXBocyBzeW5jaHJvbm91c2x5IGF0IG9uY2UuCiAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpjb21wbGV0ZVRleHRNYW5p
cHVsYXRpb24oV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVudGlm
aWVyIGl0ZW1JRCwKLSAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiYgdG9rZW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25SZXN1
bHQpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBjb21wbGV0ZVRleHRNYW5pcHVsYXRpb24o
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVs
YXRpb25JdGVtPiwKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IEhhc2hTZXQ8V2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVudGlmaWVyLCBXZWJDb3Jl
OjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZT4mKT4mJik7
CisKK3ZvaWQgV2ViUGFnZTo6Y29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKGNvbnN0IFZlY3RvcjxX
ZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4mIGl0
ZW1zLAorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBhbGxGYWlsZWQsIGNvbnN0IEhh
c2hNYXA8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVudGlmaWVy
LCBXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVy
ZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICB1c2luZyBNYW5pcHVsYXRpb25SZXN1
bHQgPSBXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uUmVz
dWx0OwotICAgIGF1dG8gY29tcGxldGVNYW5pcHVsYXRpb24gPSBbJl0gewotICAgICAgICBpZiAo
IW1fcGFnZSkKLSAgICAgICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OkludmFsaWRJ
dGVtOworICAgIGlmICghbV9wYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUs
IHsgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICAgICAgYXV0byBtYWluRG9jdW1l
bnQgPSBtYWtlUmVmUHRyKG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSk7Ci0gICAgICAg
IGlmICghbWFpbkRvY3VtZW50KQotICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvblJlc3Vs
dDo6SW52YWxpZEl0ZW07CisgICAgYXV0byBtYWluRG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fcGFn
ZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSk7CisgICAgaWYgKCFtYWluRG9jdW1lbnQpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KIAotICAgICAgICBhdXRvKiBjb250cm9sbGVyID0gbWFpbkRvY3VtZW50LT50ZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcklmRXhpc3RzKCk7Ci0gICAgICAgIGlmICghY29udHJvbGxlcikKLSAg
ICAgICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OkludmFsaWRJdGVtOworICAgIGF1
dG8qIGNvbnRyb2xsZXIgPSBtYWluRG9jdW1lbnQtPnRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
SWZFeGlzdHMoKTsKKyAgICBpZiAoIWNvbnRyb2xsZXIpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAgICByZXR1
cm4gY29udHJvbGxlci0+Y29tcGxldGVNYW5pcHVsYXRpb24oaXRlbUlELCB0b2tlbnMpOwotICAg
IH07Ci0gICAgY29tcGxldGlvbkhhbmRsZXIoY29tcGxldGVNYW5pcHVsYXRpb24oKSk7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoZmFsc2UsIGNvbnRyb2xsZXItPmNvbXBsZXRlTWFuaXB1bGF0aW9u
KGl0ZW1zKSk7CiB9CiAKIFBBTDo6U2Vzc2lvbklEIFdlYlBhZ2U6OnNlc3Npb25JRCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZDI2MzRh
NWY0MzMuLjA0MWQ1NjQ2ZjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0xMjM3LDkgKzEyMzcsOCBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8V2Vi
Q29yZTo6RWxlbWVudENvbnRleHQ+IGNvbnRleHRGb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQm
KSBjb25zdDsKIAogICAgIHZvaWQgc3RhcnRUZXh0TWFuaXB1bGF0aW9ucyhWZWN0b3I8V2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU+JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjb21wbGV0ZVRleHRNYW5pcHVsYXRpb24o
V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVudGlmaWVyLAotICAg
ICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1h
bmlwdWxhdGlvblRva2VuPiYsCi0gICAgICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblJlc3VsdCk+JiYpOwor
ICAgIHZvaWQgY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4mLAorICAgICAgICBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgYWxsRmFpbGVkLCBjb25zdCBIYXNoTWFwPFdlYkNv
cmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciwgV2ViQ29yZTo6
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmU+Jik+JiYpOwog
CiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBXZWJQYXltZW50Q29vcmRpbmF0b3IqIHBheW1l
bnRDb29yZGluYXRvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNzM1NGMxOTIwODcuLmNiODkwMDA0ZjA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4KQEAgLTU5OSw4ICs1OTksOCBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21t
YW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogI2Vu
ZGlmCiAKICAgICBTdGFydFRleHRNYW5pcHVsYXRpb25zKFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZT4gZXhjbHVzaW9uUnVsZXMpIC0+ICgp
IEFzeW5jCi0gICAgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKFdlYkNvcmU6OlRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciBpdGVtSUQsIFZlY3RvcjxXZWJDb3JlOjpU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+IHRva2VucykgLT4g
KGVudW06dWludDhfdCBXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1
bGF0aW9uUmVzdWx0IHJlc3VsdCkgQXN5bmMKLSAgICAKKyAgICBDb21wbGV0ZVRleHRNYW5pcHVs
YXRpb24oVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVs
YXRpb25JdGVtPiBpdGVtcykgLT4gKGJvb2wgYWxsRmFpbGVkLCBIYXNoTWFwPFdlYkNvcmU6OlRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciwgV2ViQ29yZTo6VGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmU+IGZhaWx1cmVzKSBBc3lu
YworCiAgICAgU2V0T3ZlcnJpZGRlbk1lZGlhVHlwZShTdHJpbmcgbWVkaWFUeXBlKQogICAgIEdl
dFByb2Nlc3NEaXNwbGF5TmFtZSgpIC0+IChTdHJpbmcgZGlzcGxheU5hbWUpIEFzeW5jCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392250</attachid>
            <date>2020-03-02 23:13:18 -0800</date>
            <delta_ts>2020-03-03 13:47:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-208406-20200302231317.patch</filename>
            <type>text/plain</type>
            <size>69907</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIzOTUwNGI5ZDlmNjFj
MDk1NmQ4MjE5MzVlMzk1ODdjNTFhNGM4Ny4uZWYyZTZkNTFlOTY3NDA0NDQ1NzIzZmM3NWYxMDFj
NWU0NGMwOTRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTAzLTAyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEJhdGNoIG9ic2VydmF0aW9u
cyBhbmQgY29tcGxldGlvbnMgb2YgdGV4dCBtYW5pcHVsYXRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIgdG8gbm90aWZ5IGFuZCByZXBsYWNlIG11bHRpcGxlIHBhcmFn
cmFwaHMgYXQgb25jZS4KKworICAgICAgICBUbyBhbGxvdyBzb21lIGZvcm0gb2YgcGFyYWxsZWxp
c20gZm9yIHRoZSBjbGllbnQgYXBwbGljYXRpb24gdG8gcHJvY2VzcyBpdGVtcyB3aGlsZSBXZWJD
b250ZW50J3MgbWFpbiB0aHJlYWQKKyAgICAgICAgaXMgZmluZGluZyBwYXJhZ3JhcGhzLCB3ZSBu
b3RpZnkgdGhlIGNsaWVudCBldmVyeSAxMjggaXRlbXMuCisKKyAgICAgICAgVGVzdHM6IFRlc3RX
ZWJLaXRBUEkuVGV4dE1hbmlwdWxhdGlvbi5TdGFydFRleHRNYW5pcHVsYXRpb25TdXBwb3J0c0xl
Z2FjeURlbGVnYXRlQ2FsbGJhY2s6IEFkZGVkLgorICAgICAgICAgICAgICAgVGVzdFdlYktpdEFQ
SS5UZXh0TWFuaXB1bGF0aW9uLkxlZ2FjeUNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblJlcGxhY2VT
aW1wbGVTaW5nbGVQYXJhZ3JhcGg6IEFkZGVkLgorICAgICAgICAgICAgICAgVGVzdFdlYktpdEFQ
SS5UZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblJlcGxhY2VNdWx0aXBs
ZVNpbXBsZVBhcmFncmFwaHNBdE9uY2U6IEFkZGVkLgorICAgICAgICAgICAgICAgVGVzdFdlYktp
dEFQSS5UZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblNob3VsZEJhdGNo
SXRlbUNhbGxiYWNrOiBBZGRlZC4KKyAgICAgICAgICAgICAgIFRlc3RXZWJLaXRBUEkuVGV4dE1h
bmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5pcHVsYXRpb25GYWlsV2hlbkl0ZW1JZGVudGlmaWVy
SXNEdXBsaWNhdGVkOiBBZGRlZC4KKyAgICAgICAgICAgICAgIFRlc3RXZWJLaXRBUEkuVGV4dE1h
bmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5pcHVsYXRpb25DYW5IYW5kbGVTdWJzZXRPZkl0ZW1z
VG9GYWlsOiBBZGRlZC4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
OnN0YXJ0T2JzZXJ2aW5nUGFyYWdyYXBocyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVPYnNlcnZhcnRpb25VcGRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmFkZEl0ZW0pOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpmbHVzaFBlbmRpbmdJ
dGVtc0ZvckNhbGxiYWNrKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6Y29tcGxldGVNYW5pcHVsYXRpb24pOiBBcHBseSBlYWNoIE1hbmlwdWxh
dGlvbkl0ZW0gY2hhbmdlcyBhbmQgcmV0dXJuCisgICAgICAgIGFuIGFycmF5IGZvciBNYW5pcHVs
YXRpb25GYWlsdXJlIGZvciB0aG9zZSB0aGF0IGZhaWxlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpyZXBsYWNlKToKKyAgICAgICAgKiBlZGl0aW5nL1Rl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbSk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmVUeXBl
KTogUmVuYW1lZCBmcm9tIE1hbmlwdWxhdGlvblJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWlsdXJlKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9u
SXRlbURhdGEpOiBSZW5hbWVkIGZyb20gTWFuaXB1bGF0aW9uSXRlbS4gCisgICAgICAgIChXZWJD
b3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbTo6ZW5jb2Rl
IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6TWFuaXB1bGF0aW9uSXRlbTo6ZGVjb2RlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZTo6ZW5jb2Rl
IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZTo6ZGVjb2RlKTogQWRkZWQuCisKIDIwMjAtMDItMjgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4gYW5kIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhciBGb250RGF0YWJhc2Ugd2hlbiBsb3ctbWVt
b3J5LXdhcm5pbmcgaGFwcGVucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0MGE3NTcxNGViZTg0ZDNjYTM1NTA2MzY2
Mjg4YWVkYzI2ZjJjZGU0Li4wNjBlYjIzYzdjNDEwYzQ1ZjU2YTBlN2U4Y2EzY2IzZWQxZTg4YzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAzLTAyICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEJhdGNoIG9ic2VydmF0aW9ucyBhbmQgY29tcGxl
dGlvbnMgb2YgdGV4dCBtYW5pcHVsYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgV0tXZWJWaWV3J3MgU1BJIGZvciB0ZXh0IG1hbmlw
dWxhdGlvbnMgdG8gYmF0Y2ggb2JzZXJ2YXRpb25zIGFuZCByZXBsYWNlbWVudHMgb2YgbXVsdGlw
bGUgcGFyYWdyYXBocworICAgICAgICBhdCBvbmNlIGluc3RlYWQgb2Ygb2JzZXJ2aW5nIGFuZCBy
ZXBsYWNpbmcgb25lIHBhcmFncmFwaCBhdCBhIHRpbWUuCisKKyAgICAgICAgX1dLVGV4dE1hbmlw
dWxhdGlvbkRlbGVnYXRlIG5vdyBoYXMgYSBuZXcgY2FsbGJhY2ssIGRpZEZpbmRUZXh0TWFuaXB1
bGF0aW9uSXRlbXMsIHdoaWNoIGdldHMgYW4gYXJyYXkgb2YKKyAgICAgICAgX1dLVGV4dE1hbmlw
dWxhdGlvbkl0ZW0gaW5zdGVhZCBvZiBhIHNpbmdsZSBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBs
aWtlIGRpZEZpbmRUZXh0TWFuaXB1bGF0aW9uSXRlbSwKKyAgICAgICAgYW5kIFdLV2ViVmlldydz
IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtcyByZXBsYWNlcyBtdWx0aXBsZSBwYXJh
Z3JhcGhzIGF0IG9uY2UsIGFuZCBnaXZlcyBhbiBhcnJheQorICAgICAgICBvZiBOU0Vycm9yIGZv
ciBlYWNoIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtIHRoYXQgZmFpbGVkIHRvIHJlcGxhY2UgdGhl
IHJlc3BlY3RpdmUgY29udGVudC4KKworICAgICAgICBUZXN0czogVGVzdFdlYktpdEFQSS5UZXh0
TWFuaXB1bGF0aW9uLlN0YXJ0VGV4dE1hbmlwdWxhdGlvblN1cHBvcnRzTGVnYWN5RGVsZWdhdGVD
YWxsYmFjazogQWRkZWQuCisgICAgICAgICAgICAgICBUZXN0V2ViS2l0QVBJLlRleHRNYW5pcHVs
YXRpb24uTGVnYWN5Q29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZVNpbXBsZVNpbmdsZVBh
cmFncmFwaDogQWRkZWQuCisgICAgICAgICAgICAgICBUZXN0V2ViS2l0QVBJLlRleHRNYW5pcHVs
YXRpb24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZU11bHRpcGxlU2ltcGxlUGFyYWdy
YXBoc0F0T25jZTogQWRkZWQuCisgICAgICAgICAgICAgICBUZXN0V2ViS2l0QVBJLlRleHRNYW5p
cHVsYXRpb24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uU2hvdWxkQmF0Y2hJdGVtQ2FsbGJhY2s6
IEFkZGVkLgorICAgICAgICAgICAgICAgVGVzdFdlYktpdEFQSS5UZXh0TWFuaXB1bGF0aW9uLkNv
bXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVuSXRlbUlkZW50aWZpZXJJc0R1cGxpY2F0ZWQ6
IEFkZGVkLgorICAgICAgICAgICAgICAgVGVzdFdlYktpdEFQSS5UZXh0TWFuaXB1bGF0aW9uLkNv
bXBsZXRlVGV4dE1hbmlwdWxhdGlvbkNhbkhhbmRsZVN1YnNldE9mSXRlbXNUb0ZhaWw6IEFkZGVk
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc3RhcnRUZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25maWd1cmF0aW9uOmNv
bXBsZXRpb246XSk6CisgICAgICAgIChjb3JlVGV4dE1hbmlwdWxhdGlvbkl0ZW1JZGVudGlmaWVy
RnJvbVN0cmluZyk6IEFkZGVkLgorICAgICAgICAoY29yZVRleHRNYW5pcHVsYXRpb25Ub2tlbklk
ZW50aWZpZXJGcm9tU3RyaW5nKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfY29tcGxl
dGVUZXh0TWFuaXB1bGF0aW9uOmNvbXBsZXRpb246XSk6IFVwZGF0ZWQgdG8gd29yayB3aXRoIHRo
ZSBuZXcgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIKKyAgICAgICAgaW50ZXJmYWNlLgorICAg
ICAgICAobWFrZUZhaWx1cmVTZXRGb3JBbGxUZXh0TWFuaXB1bGF0aW9uSXRlbXMpOiBBZGRlZC4K
KyAgICAgICAgKHdrVGV4dE1hbmlwdWxhdGlvbkVycm9ycyk6IEFkZGVkLgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOmNvbXBsZXRpb246XSk6
IEFkZGVkLiBUaGlzIGlzIHRoZSBuZXcgU1BJLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tUZXh0TWFuaXB1bGF0aW9uSXRlbS5oOgorICAgICAgICAoX1dLVGV4dE1hbmlwdWxhdGlv
bkl0ZW1FcnJvckRvbWFpbik6IEFkZGVkLgorICAgICAgICAoX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcnJvckNvZGUpOiBBZGRlZC4KKyAgICAgICAgKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJy
b3JJdGVtS2V5KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0
TWFuaXB1bGF0aW9uSXRlbS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN0YXJ0VGV4dE1hbmlw
dWxhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wbGV0ZVRleHRNYW5pcHVs
YXRpb24pOiBVcGRhdGVkIHBlciBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlciBpbnRlcmZhY2Ug
Y2hhbmdlLgorICAgICAgICBUbyBhdm9pZCBoYXZpbmcgdG8gZHVwbGljYXRlIHRoZSBjb2RlIHRv
IGNyZWF0ZSBhIHZlY3RvciBvZiBNYW5pcHVsYXRpb25GYWlsdXJlLCB0aGlzIGZ1bmN0aW9uJ3Mg
Y29tcGxldGlvbgorICAgICAgICBoYW5kbGVyIGhhcyBhIGJvb2xlYW4gaW5kaWNhdGluZyB0aGF0
IGFsbCByZXBsYWNlbWVudHMgaGFkIGZhaWxlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCiAyMDIwLTAyLTI4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSBhY2Nlc3MgdG8gdGhlICJjb20uYXBwbGUubHNkLm9w
ZW4iIG1hY2ggc2VydmljZSBmcm9tIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5k
ZXggZDA1YWY0NGZkOGVhYTM0ZThiMzI0MGJjODRjNzc1MGJkNDA2M2E2Yy4uY2M1OTNlMDZlYWRm
YmNmOGYwMjVmNDkyYjhhMzZkYTE5YzM5MDYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTEzNiw2ICsxMzYs
NyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpzdGFydE9ic2VydmluZ1BhcmFn
cmFwaHMoTWFuaXB1bGF0aW9uSXRlbUNhbGxiYQogICAgIFZpc2libGVQb3NpdGlvbiBlbmQgPSBs
YXN0UG9zaXRpb25Jbk5vZGUobV9kb2N1bWVudC5nZXQoKSk7CiAKICAgICBvYnNlcnZlUGFyYWdy
YXBocyhzdGFydCwgZW5kKTsKKyAgICBmbHVzaFBlbmRpbmdJdGVtc0ZvckNhbGxiYWNrKCk7CiB9
CiAKIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3JhcGhzKFZp
c2libGVQb3NpdGlvbiYgc3RhcnQsIFZpc2libGVQb3NpdGlvbiYgZW5kKQpAQCAtMjU4LDMwICsy
NTksNjAgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVPYnNlcnZh
cnRpb25VcGRhdGUoKQogCiAgICAgICAgICAgICBjb250cm9sbGVyLT5vYnNlcnZlUGFyYWdyYXBo
cyhzdGFydCwgZW5kKTsKICAgICAgICAgfQorICAgICAgICBjb250cm9sbGVyLT5mbHVzaFBlbmRp
bmdJdGVtc0ZvckNhbGxiYWNrKCk7CiAgICAgfSk7CiB9CiAKIHZvaWQgVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6OmFkZEl0ZW0oY29uc3QgUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcGgsIGNv
bnN0IFBvc2l0aW9uJiBlbmRPZlBhcmFncmFwaCwgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYm
IHRva2VucykKIHsKKyAgICBjb25zdCB1bnNpZ25lZCBpdGVtQ2FsbGJhY2tCYXRjaGluZ1NpemUg
PSAxMjg7CisKICAgICBBU1NFUlQobV9kb2N1bWVudCk7Ci0gICAgYXV0byByZXN1bHQgPSBtX2l0
ZW1zLmFkZChtX2l0ZW1JZGVudGlmaWVyLmdlbmVyYXRlKCksIE1hbmlwdWxhdGlvbkl0ZW0geyBz
dGFydE9mUGFyYWdyYXBoLCBlbmRPZlBhcmFncmFwaCwgV1RGTW92ZSh0b2tlbnMpIH0pOwotICAg
IG1fY2FsbGJhY2soKm1fZG9jdW1lbnQsIHJlc3VsdC5pdGVyYXRvci0+a2V5LCByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLnRva2Vucyk7CisgICAgYXV0byBuZXdJRCA9IG1faXRlbUlkZW50aWZpZXIu
Z2VuZXJhdGUoKTsKKyAgICBtX3BlbmRpbmdJdGVtc0ZvckNhbGxiYWNrLmFwcGVuZChNYW5pcHVs
YXRpb25JdGVtIHsKKyAgICAgICAgbmV3SUQsCisgICAgICAgIHRva2Vucy5tYXAoW10oYXV0byYg
dG9rZW4pIHsgcmV0dXJuIHRva2VuOyB9KQorICAgIH0pOworICAgIG1faXRlbXMuYWRkKG5ld0lE
LCBNYW5pcHVsYXRpb25JdGVtRGF0YSB7IHN0YXJ0T2ZQYXJhZ3JhcGgsIGVuZE9mUGFyYWdyYXBo
LCBXVEZNb3ZlKHRva2VucykgfSk7CisgICAgaWYgKG1fcGVuZGluZ0l0ZW1zRm9yQ2FsbGJhY2su
c2l6ZSgpID49IGl0ZW1DYWxsYmFja0JhdGNoaW5nU2l6ZSkgeworICAgICAgICBtX2NhbGxiYWNr
KCptX2RvY3VtZW50LCBtX3BlbmRpbmdJdGVtc0ZvckNhbGxiYWNrKTsKKyAgICAgICAgbV9wZW5k
aW5nSXRlbXNGb3JDYWxsYmFjay5jbGVhcigpOworICAgIH0KKworfQorCit2b2lkIFRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpmbHVzaFBlbmRpbmdJdGVtc0ZvckNhbGxiYWNrKCkKK3sKKyAg
ICBtX2NhbGxiYWNrKCptX2RvY3VtZW50LCBtX3BlbmRpbmdJdGVtc0ZvckNhbGxiYWNrKTsKKyAg
ICBtX3BlbmRpbmdJdGVtc0ZvckNhbGxiYWNrLmNsZWFyKCk7CiB9CiAKLWF1dG8gVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXI6OmNvbXBsZXRlTWFuaXB1bGF0aW9uKEl0ZW1JZGVudGlmaWVyIGl0
ZW1JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+JiByZXBsYWNlbWVu
dFRva2VucykgLT4gTWFuaXB1bGF0aW9uUmVzdWx0CithdXRvIFRleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyOjpjb21wbGV0ZU1hbmlwdWxhdGlvbihjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+JiBjb21wbGV0aW9uSXRlbXMp
IC0+IFZlY3RvcjxNYW5pcHVsYXRpb25GYWlsdXJlPgogewotICAgIGlmICghaXRlbUlkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OkludmFsaWRJdGVtOworICAg
IFZlY3RvcjxNYW5pcHVsYXRpb25GYWlsdXJlPiBmYWlsdXJlczsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY29tcGxldGlvbkl0ZW1zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8m
IGl0ZW1Ub0NvbXBsZXRlID0gY29tcGxldGlvbkl0ZW1zW2ldOworICAgICAgICBhdXRvIGlkZW50
aWZpZXIgPSBpdGVtVG9Db21wbGV0ZS5pZGVudGlmaWVyOworICAgICAgICBpZiAoIWlkZW50aWZp
ZXIpIHsKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChNYW5pcHVsYXRpb25GYWlsdXJlIHsg
aWRlbnRpZmllciwgaSwgTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkludmFsaWRJdGVtIH0pOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAotICAgIGF1dG8gaXRlbUl0ZXJhdG9y
ID0gbV9pdGVtcy5maW5kKGl0ZW1JZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlbUl0ZXJhdG9yID09
IG1faXRlbXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OkludmFs
aWRJdGVtOworICAgICAgICBhdXRvIGl0ZW1EYXRhSXRlcmF0b3IgPSBtX2l0ZW1zLmZpbmQoaWRl
bnRpZmllcik7CisgICAgICAgIGlmIChpdGVtRGF0YUl0ZXJhdG9yID09IG1faXRlbXMuZW5kKCkp
IHsKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChNYW5pcHVsYXRpb25GYWlsdXJlIHsgaWRl
bnRpZmllciwgaSwgTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkludmFsaWRJdGVtIH0pOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAotICAgIE1hbmlwdWxhdGlvbkl0ZW0gaXRl
bTsKLSAgICBzdGQ6OmV4Y2hhbmdlKGl0ZW0sIGl0ZW1JdGVyYXRvci0+dmFsdWUpOwotICAgIG1f
aXRlbXMucmVtb3ZlKGl0ZW1JdGVyYXRvcik7CisgICAgICAgIE1hbmlwdWxhdGlvbkl0ZW1EYXRh
IGl0ZW1EYXRhOworICAgICAgICBzdGQ6OmV4Y2hhbmdlKGl0ZW1EYXRhLCBpdGVtRGF0YUl0ZXJh
dG9yLT52YWx1ZSk7CisgICAgICAgIG1faXRlbXMucmVtb3ZlKGl0ZW1EYXRhSXRlcmF0b3IpOwog
Ci0gICAgcmV0dXJuIHJlcGxhY2UoaXRlbSwgcmVwbGFjZW1lbnRUb2tlbnMpOworICAgICAgICBh
dXRvIGZhaWx1cmVPck51bGxvcHQgPSByZXBsYWNlKGl0ZW1EYXRhLCBpdGVtVG9Db21wbGV0ZS50
b2tlbnMpOworICAgICAgICBpZiAoZmFpbHVyZU9yTnVsbG9wdCkKKyAgICAgICAgICAgIGZhaWx1
cmVzLmFwcGVuZChNYW5pcHVsYXRpb25GYWlsdXJlIHsgaWRlbnRpZmllciwgaSwgKmZhaWx1cmVP
ck51bGxvcHQgfSk7CisgICAgfQorICAgIHJldHVybiBmYWlsdXJlczsKIH0KIAogc3RydWN0IFRv
a2VuRXhjaGFuZ2VEYXRhIHsKQEAgLTMwMSwxMCArMzMyLDEwIEBAIHN0cnVjdCBOb2RlSW5zZXJ0
aW9uIHsKICAgICBSZWY8Tm9kZT4gY2hpbGQ7CiB9OwogCi1hdXRvIFRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpyZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW0mIGl0ZW0sIGNvbnN0IFZl
Y3RvcjxNYW5pcHVsYXRpb25Ub2tlbj4mIHJlcGxhY2VtZW50VG9rZW5zKSAtPiBNYW5pcHVsYXRp
b25SZXN1bHQKK2F1dG8gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UoY29uc3Qg
TWFuaXB1bGF0aW9uSXRlbURhdGEmIGl0ZW0sIGNvbnN0IFZlY3RvcjxNYW5pcHVsYXRpb25Ub2tl
bj4mIHJlcGxhY2VtZW50VG9rZW5zKSAtPiBPcHRpb25hbDxNYW5pcHVsYXRpb25GYWlsdXJlVHlw
ZT4KIHsKICAgICBpZiAoaXRlbS5zdGFydC5pc09ycGhhbigpIHx8IGl0ZW0uZW5kLmlzT3JwaGFu
KCkpCi0gICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OkNvbnRlbnRDaGFuZ2VkOwor
ICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkNvbnRlbnRDaGFuZ2VkOwog
CiAgICAgVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yIHsgaXRlbS5zdGFydCwgaXRlbS5lbmQgfTsKICAg
ICBzaXplX3QgY3VycmVudFRva2VuSW5kZXggPSAwOwpAQCAtMzE0LDEwICszNDUsMTAgQEAgYXV0
byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25J
dGVtJiBpdGVtLCBjb25zdCBWZWMKICAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKICAg
ICAgICAgYXV0byBzdHJpbmcgPSBpdGVyYXRvci50ZXh0KCkudG9TdHJpbmcoKTsKICAgICAgICAg
aWYgKGN1cnJlbnRUb2tlbkluZGV4ID49IGl0ZW0udG9rZW5zLnNpemUoKSkKLSAgICAgICAgICAg
IHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OkNvbnRlbnRDaGFuZ2VkOworICAgICAgICAgICAg
cmV0dXJuIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOjpDb250ZW50Q2hhbmdlZDsKICAgICAgICAg
YXV0byYgY3VycmVudFRva2VuID0gaXRlbS50b2tlbnNbY3VycmVudFRva2VuSW5kZXhdOwogICAg
ICAgICBpZiAoaXRlcmF0b3IudGV4dCgpICE9IGN1cnJlbnRUb2tlbi5jb250ZW50KQotICAgICAg
ICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvblJlc3VsdDo6Q29udGVudENoYW5nZWQ7CisgICAgICAg
ICAgICByZXR1cm4gTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkNvbnRlbnRDaGFuZ2VkOwogCiAg
ICAgICAgIGF1dG8gY3VycmVudE5vZGUgPSBtYWtlUmVmUHRyKGl0ZXJhdG9yLm5vZGUoKSk7CiAg
ICAgICAgIHRva2VuRXhjaGFuZ2VNYXAuc2V0KGN1cnJlbnRUb2tlbi5pZGVudGlmaWVyLCBUb2tl
bkV4Y2hhbmdlRGF0YSB7IGN1cnJlbnROb2RlLmNvcHlSZWYoKSwgY3VycmVudFRva2VuLmNvbnRl
bnQsIGN1cnJlbnRUb2tlbi5pc0V4Y2x1ZGVkIH0pOwpAQCAtMzU4LDE3ICszODksMTcgQEAgYXV0
byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25J
dGVtJiBpdGVtLCBjb25zdCBWZWMKICAgICBmb3IgKGF1dG8mIG5ld1Rva2VuIDogcmVwbGFjZW1l
bnRUb2tlbnMpIHsKICAgICAgICAgYXV0byBpdCA9IHRva2VuRXhjaGFuZ2VNYXAuZmluZChuZXdU
b2tlbi5pZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGl0ID09IHRva2VuRXhjaGFuZ2VNYXAuZW5k
KCkpCi0gICAgICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uUmVzdWx0OjpJbnZhbGlkVG9rZW47
CisgICAgICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkludmFsaWRUb2tl
bjsKIAogICAgICAgICBhdXRvJiBleGNoYW5nZURhdGEgPSBpdC0+dmFsdWU7CiAKICAgICAgICAg
UmVmUHRyPE5vZGU+IGNvbnRlbnROb2RlOwogICAgICAgICBpZiAoZXhjaGFuZ2VEYXRhLmlzRXhj
bHVkZWQpIHsKICAgICAgICAgICAgIGlmIChleGNoYW5nZURhdGEuaXNDb25zdW1lZCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uUmVzdWx0OjpFeGNsdXNpb25WaW9sYXRpb247
CisgICAgICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOjpFeGNsdXNp
b25WaW9sYXRpb247CiAgICAgICAgICAgICBleGNoYW5nZURhdGEuaXNDb25zdW1lZCA9IHRydWU7
CiAgICAgICAgICAgICBpZiAoIW5ld1Rva2VuLmNvbnRlbnQuaXNOdWxsKCkgJiYgbmV3VG9rZW4u
Y29udGVudCAhPSBleGNoYW5nZURhdGEub3JpZ2luYWxDb250ZW50KQotICAgICAgICAgICAgICAg
IHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OkV4Y2x1c2lvblZpb2xhdGlvbjsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkV4Y2x1c2lvblZpb2xhdGlv
bjsKICAgICAgICAgICAgIGNvbnRlbnROb2RlID0gVGV4dDo6Y3JlYXRlKGNvbW1vbkFuY2VzdG9y
LT5kb2N1bWVudCgpLCBleGNoYW5nZURhdGEub3JpZ2luYWxDb250ZW50KTsKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBjb250ZW50Tm9kZSA9IFRleHQ6OmNyZWF0ZShjb21tb25BbmNlc3Rv
ci0+ZG9jdW1lbnQoKSwgbmV3VG9rZW4uY29udGVudCk7CkBAIC00MjMsNyArNDU0LDcgQEAgYXV0
byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25J
dGVtJiBpdGVtLCBjb25zdCBWZWMKICAgICAgICAgICAgIG1fbWFuaXB1bGF0ZWRFbGVtZW50cy5h
ZGQoZG93bmNhc3Q8RWxlbWVudD4oaW5zZXJ0aW9uLmNoaWxkLmdldCgpKSk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIE1hbmlwdWxhdGlvblJlc3VsdDo6U3VjY2VzczsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKaW5kZXggMzY0YzNiOGU2
YjYyMWE4Zjg0YWIyZjk3MzYxZWM0ZmEwYTVkZmU1Ni4uNWY2MjI5YWMzODVmYTIzZTljZTk1Nzgx
YmYxZTMyZWVkY2Y2ZGM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaApAQCAtNTksNiArNTksMTQgQEAgcHVibGljOgogICAg
IGVudW0gSXRlbUlkZW50aWZpZXJUeXBlIHsgfTsKICAgICB1c2luZyBJdGVtSWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8SXRlbUlkZW50aWZpZXJUeXBlPjsKIAorICAgIHN0cnVjdCBNYW5p
cHVsYXRpb25JdGVtIHsKKyAgICAgICAgSXRlbUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAg
ICAgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiB0b2tlbnM7CisKKyAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWFuaXB1bGF0aW9uSXRlbT4gZGVj
b2RlKERlY29kZXImKTsKKyAgICB9OworCiAgICAgc3RydWN0IEV4Y2x1c2lvblJ1bGUgewogICAg
ICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgRXhjbHVkZSwgSW5jbHVkZSB9OwogCkBA
IC05Myw0MCArMTAxLDUzIEBAIHB1YmxpYzoKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEV4Y2x1c2lvblJ1bGU+IGRlY29kZShEZWNvZGVyJik7CiAgICAg
fTsKIAotICAgIHVzaW5nIE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248
dm9pZChEb2N1bWVudCYsIEl0ZW1JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8TWFuaXB1bGF0aW9u
VG9rZW4+Jik+OworICAgIHVzaW5nIE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChEb2N1bWVudCYsIGNvbnN0IFZlY3RvcjxNYW5pcHVsYXRpb25JdGVtPiYpPjsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5nUGFyYWdyYXBocyhNYW5pcHVs
YXRpb25JdGVtQ2FsbGJhY2smJiwgVmVjdG9yPEV4Y2x1c2lvblJ1bGU+JiYgPSB7IH0pOwogCiAg
ICAgdm9pZCBkaWRDcmVhdGVSZW5kZXJlckZvckVsZW1lbnQoRWxlbWVudCYpOwogCi0gICAgZW51
bSBjbGFzcyBNYW5pcHVsYXRpb25SZXN1bHQgOiB1aW50OF90IHsKLSAgICAgICAgU3VjY2VzcywK
KyAgICBlbnVtIGNsYXNzIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlIDogdWludDhfdCB7CiAgICAg
ICAgIENvbnRlbnRDaGFuZ2VkLAogICAgICAgICBJbnZhbGlkSXRlbSwKICAgICAgICAgSW52YWxp
ZFRva2VuLAogICAgICAgICBFeGNsdXNpb25WaW9sYXRpb24sCiAgICAgfTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBNYW5pcHVsYXRpb25SZXN1bHQgY29tcGxldGVNYW5pcHVsYXRpb24oSXRlbUlkZW50
aWZpZXIsIGNvbnN0IFZlY3RvcjxNYW5pcHVsYXRpb25Ub2tlbj4mKTsKKworICAgIHN0cnVjdCBN
YW5pcHVsYXRpb25GYWlsdXJlIHsKKyAgICAgICAgSXRlbUlkZW50aWZpZXIgaWRlbnRpZmllcjsK
KyAgICAgICAgdWludDY0X3QgaW5kZXg7CisgICAgICAgIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBl
IHR5cGU7CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8TWFuaXB1bGF0aW9uRmFpbHVyZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPE1hbmlwdWxhdGlvbkZhaWx1cmU+IGNvbXBsZXRlTWFu
aXB1bGF0aW9uKGNvbnN0IFZlY3RvcjxNYW5pcHVsYXRpb25JdGVtPiYpOwogCiBwcml2YXRlOgog
ICAgIGJvb2wgaXNJbk1hbmlwdWxhdGVkRWxlbWVudChFbGVtZW50Jik7CiAgICAgdm9pZCBvYnNl
cnZlUGFyYWdyYXBocyhWaXNpYmxlUG9zaXRpb24mIHN0YXJ0LCBWaXNpYmxlUG9zaXRpb24mIGVu
ZCk7CiAgICAgdm9pZCBzY2hlZHVsZU9ic2VydmFydGlvblVwZGF0ZSgpOwogCi0gICAgc3RydWN0
IE1hbmlwdWxhdGlvbkl0ZW0geworICAgIHN0cnVjdCBNYW5pcHVsYXRpb25JdGVtRGF0YSB7CiAg
ICAgICAgIFBvc2l0aW9uIHN0YXJ0OwogICAgICAgICBQb3NpdGlvbiBlbmQ7CiAgICAgICAgIFZl
Y3RvcjxNYW5pcHVsYXRpb25Ub2tlbj4gdG9rZW5zOwogICAgIH07CiAKICAgICB2b2lkIGFkZEl0
ZW0oY29uc3QgUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcGgsIGNvbnN0IFBvc2l0aW9uJiBlbmRP
ZlBhcmFncmFwaCwgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYmKTsKLSAgICBNYW5pcHVsYXRp
b25SZXN1bHQgcmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVtJiwgY29uc3QgVmVjdG9yPE1h
bmlwdWxhdGlvblRva2VuPiYpOworICAgIHZvaWQgZmx1c2hQZW5kaW5nSXRlbXNGb3JDYWxsYmFj
aygpOworICAgIE9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlPiByZXBsYWNlKGNvbnN0
IE1hbmlwdWxhdGlvbkl0ZW1EYXRhJiwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYp
OwogCiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBXZWFrSGFzaFNldDxF
bGVtZW50PiBtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyOwogICAgIFdlYWtIYXNoU2V0PEVsZW1l
bnQ+IG1fbWFuaXB1bGF0ZWRFbGVtZW50czsKKwogICAgIE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFj
ayBtX2NhbGxiYWNrOworICAgIFZlY3RvcjxNYW5pcHVsYXRpb25JdGVtPiBtX3BlbmRpbmdJdGVt
c0ZvckNhbGxiYWNrOworCiAgICAgVmVjdG9yPEV4Y2x1c2lvblJ1bGU+IG1fZXhjbHVzaW9uUnVs
ZXM7Ci0gICAgSGFzaE1hcDxJdGVtSWRlbnRpZmllciwgTWFuaXB1bGF0aW9uSXRlbT4gbV9pdGVt
czsKKyAgICBIYXNoTWFwPEl0ZW1JZGVudGlmaWVyLCBNYW5pcHVsYXRpb25JdGVtRGF0YT4gbV9p
dGVtczsKICAgICBJdGVtSWRlbnRpZmllciBtX2l0ZW1JZGVudGlmaWVyOwogICAgIFRva2VuSWRl
bnRpZmllciBtX3Rva2VuSWRlbnRpZmllcjsKIH07CkBAIC0xNTAsNiArMTcxLDIzIEBAIE9wdGlv
bmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4gVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlv
bkl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
aWRlbnRpZmllciA8PCB0b2tlbnM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRp
b25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4gVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW06OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE1hbmlwdWxhdGlvbkl0ZW0gcmVzdWx0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRva2VucykpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpAQCAtMjE0LDYgKzI1MiwyNSBAQCBP
cHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6Q2xhc3NS
dWxlPiBUZXh0TWFuaXB1bGF0aW9uQwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3RlbXBsYXRl
PGNsYXNzIEVuY29kZXI+Cit2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVs
YXRpb25GYWlsdXJlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IGlkZW50aWZpZXIgPDwgaW5kZXggPDwgdHlwZTsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KK09wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRp
b25GYWlsdXJlPiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVy
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgTWFuaXB1bGF0aW9uRmFpbHVyZSBy
ZXN1bHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
aW5kZXgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC0yMjcsMTUgKzI4NCwxNCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxlOgogICAgID47
CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25SZXN1bHQ+IHsKLSAgICB1c2luZyBNYW5pcHVs
YXRpb25SZXN1bHQgPSBXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1
bGF0aW9uUmVzdWx0OwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU+IHsKKyAgICB1
c2luZyBNYW5pcHVsYXRpb25GYWlsdXJlVHlwZSA9IFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWlsdXJlVHlwZTsKICAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAotICAgICAgICBNYW5pcHVsYXRpb25SZXN1bHQsCi0gICAgICAgIE1hbmlwdWxh
dGlvblJlc3VsdDo6U3VjY2VzcywKLSAgICAgICAgTWFuaXB1bGF0aW9uUmVzdWx0OjpDb250ZW50
Q2hhbmdlZCwKLSAgICAgICAgTWFuaXB1bGF0aW9uUmVzdWx0OjpJbnZhbGlkSXRlbSwKLSAgICAg
ICAgTWFuaXB1bGF0aW9uUmVzdWx0OjpJbnZhbGlkVG9rZW4sCi0gICAgICAgIE1hbmlwdWxhdGlv
blJlc3VsdDo6RXhjbHVzaW9uVmlvbGF0aW9uCisgICAgICAgIE1hbmlwdWxhdGlvbkZhaWx1cmVU
eXBlLAorICAgICAgICBNYW5pcHVsYXRpb25GYWlsdXJlVHlwZTo6Q29udGVudENoYW5nZWQsCisg
ICAgICAgIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOjpJbnZhbGlkSXRlbSwKKyAgICAgICAgTWFu
aXB1bGF0aW9uRmFpbHVyZVR5cGU6OkludmFsaWRUb2tlbiwKKyAgICAgICAgTWFuaXB1bGF0aW9u
RmFpbHVyZVR5cGU6OkV4Y2x1c2lvblZpb2xhdGlvbgogICAgID47CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4M2Y4OWM0MWFh
ODZmMTVhNDExNjFiMDVhYzM5MTVkMmM0ZjI4ZGZkLi5hMzFkOTExNTc1ZjEzMzc0MzY3ZjEwM2Q3
MmMzMzczMzkzY2RmNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTE2NTQsOCArMTY1NCw5IEBAIC0gKHZvaWQpX3N0YXJ0VGV4dE1h
bmlwdWxhdGlvbnNXaXRoQ29uZmlndXJhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3Vy
YXRpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfcGFnZS0+c3RhcnRUZXh0TWFuaXB1bGF0aW9u
cyhleGNsdXNpb25SdWxlcywgW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tXZWJWaWV3PihzZWxm
KV0gKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciBp
dGVtSUQsCi0gICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+JiB0b2tlbnMpIHsKKyAgICBfcGFnZS0+c3RhcnRU
ZXh0TWFuaXB1bGF0aW9ucyhleGNsdXNpb25SdWxlcywgW3dlYWtTZWxmID0gV2Vha09iakNQdHI8
V0tXZWJWaWV3PihzZWxmKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4mIGl0ZW1SZWZlcmVuY2VzKSB7CisgICAgICAg
IC8vIFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciBp
dGVtSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
TWFuaXB1bGF0aW9uVG9rZW4+JiB0b2tlbnMKKwogICAgICAgICBpZiAoIXdlYWtTZWxmKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjY0LDM5ICsxNjY1LDEzNiBAQCAtICh2b2lkKV9zdGFy
dFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3VyYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25D
b25maWd1cmF0aQogICAgICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5ICp3a1Rva2VucyA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTp0b2tlbnMuc2l6ZSgpXTsKLSAgICAgICAgZm9yIChhdXRvJiB0b2tlbiA6
IHRva2VucykgewotICAgICAgICAgICAgYXV0byB3a1Rva2VuID0gYWRvcHROUyhbW19XS1RleHRN
YW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOwotICAgICAgICAgICAgW3drVG9rZW4gc2V0
SWRlbnRpZmllcjpTdHJpbmc6Om51bWJlcih0b2tlbi5pZGVudGlmaWVyLnRvVUludDY0KCkpXTsK
LSAgICAgICAgICAgIFt3a1Rva2VuIHNldENvbnRlbnQ6dG9rZW4uY29udGVudF07Ci0gICAgICAg
ICAgICBbd2tUb2tlbiBzZXRFeGNsdWRlZDp0b2tlbi5pc0V4Y2x1ZGVkXTsKLSAgICAgICAgICAg
IFt3a1Rva2VucyBhZGRPYmplY3Q6d2tUb2tlbi5nZXQoKV07CisgICAgICAgIGlmICghW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkRmluZFRleHRNYW5p
cHVsYXRpb25JdGVtczopXSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbVJl
ZmVyZW5jZXMpIHsKKyAgICAgICAgICAgICAgICBOU011dGFibGVBcnJheSAqd2tUb2tlbnMgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6aXRlbS50b2tlbnMuc2l6ZSgpXTsKKyAg
ICAgICAgICAgICAgICBmb3IgKGF1dG8mIHRva2VuIDogaXRlbS50b2tlbnMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byB3a1Rva2VuID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25U
b2tlbiBhbGxvY10gaW5pdF0pOworICAgICAgICAgICAgICAgICAgICBbd2tUb2tlbiBzZXRJZGVu
dGlmaWVyOlN0cmluZzo6bnVtYmVyKHRva2VuLmlkZW50aWZpZXIudG9VSW50NjQoKSldOworICAg
ICAgICAgICAgICAgICAgICBbd2tUb2tlbiBzZXRDb250ZW50OnRva2VuLmNvbnRlbnRdOworICAg
ICAgICAgICAgICAgICAgICBbd2tUb2tlbiBzZXRFeGNsdWRlZDp0b2tlbi5pc0V4Y2x1ZGVkXTsK
KyAgICAgICAgICAgICAgICAgICAgW3drVG9rZW5zIGFkZE9iamVjdDp3a1Rva2VuLmdldCgpXTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXV0byB3a0l0ZW0gPSBhZG9wdE5T
KFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpTdHJp
bmc6Om51bWJlcihpdGVtLmlkZW50aWZpZXIudG9VSW50NjQoKSkgdG9rZW5zOndrVG9rZW5zXSk7
CisgICAgICAgICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnJldGFpbmVkU2VsZi5nZXQoKSBk
aWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW06d2tJdGVtLmdldCgpXTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIE5TTXV0YWJsZUFycmF5
ICp3a0l0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5Oml0ZW1SZWZlcmVu
Y2VzLnNpemUoKV07CisgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1SZWZlcmVuY2VzKSB7
CisgICAgICAgICAgICBOU011dGFibGVBcnJheSAqd2tUb2tlbnMgPSBbTlNNdXRhYmxlQXJyYXkg
YXJyYXlXaXRoQ2FwYWNpdHk6aXRlbS50b2tlbnMuc2l6ZSgpXTsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgdG9rZW4gOiBpdGVtLnRva2VucykgeworICAgICAgICAgICAgICAgIGF1dG8gd2tUb2tl
biA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgICAgICAgICBbd2tUb2tlbiBzZXRJZGVudGlmaWVyOlN0cmluZzo6bnVtYmVyKHRva2Vu
LmlkZW50aWZpZXIudG9VSW50NjQoKSldOworICAgICAgICAgICAgICAgIFt3a1Rva2VuIHNldENv
bnRlbnQ6dG9rZW4uY29udGVudF07CisgICAgICAgICAgICAgICAgW3drVG9rZW4gc2V0RXhjbHVk
ZWQ6dG9rZW4uaXNFeGNsdWRlZF07CisgICAgICAgICAgICAgICAgW3drVG9rZW5zIGFkZE9iamVj
dDp3a1Rva2VuLmdldCgpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFt3a0l0ZW1zIGFk
ZE9iamVjdDpbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZp
ZXI6U3RyaW5nOjpudW1iZXIoaXRlbS5pZGVudGlmaWVyLnRvVUludDY0KCkpIHRva2Vuczp3a1Rv
a2Vuc11dOwogICAgICAgICB9CisgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpyZXRhaW5lZFNl
bGYuZ2V0KCkgZGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtczp3a0l0ZW1zXTsKIAotICAgICAg
ICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGlu
aXRXaXRoSWRlbnRpZmllcjpTdHJpbmc6Om51bWJlcihpdGVtSUQudG9VSW50NjQoKSkgdG9rZW5z
OndrVG9rZW5zXSk7Ci0gICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpyZXRhaW5lZFNlbGYuZ2V0
KCkgZGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtOml0ZW0uZ2V0KCldOwogICAgIH0sIFtjYXB0
dXJlZENvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildICgp
IHsKICAgICAgICAgY2FwdHVyZWRDb21wbGV0aW9uQmxvY2soKTsKICAgICB9KTsKIH0KIAotLSAo
dm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAq
KWl0ZW0gY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVy
CitzdGF0aWMgV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVudGlm
aWVyIGNvcmVUZXh0TWFuaXB1bGF0aW9uSXRlbUlkZW50aWZpZXJGcm9tU3RyaW5nKE5TU3RyaW5n
KiBpZGVudGlmaWVyKQogewotICAgIHVzaW5nIE1hbmlwdWxhdGlvblJlc3VsdCA9IFdlYkNvcmU6
OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25SZXN1bHQ7CisgICAgcmV0
dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyOjpJdGVtSWRlbnRpZmllclR5cGU+KFN0cmluZyhpZGVudGlmaWVyKS50b1VJbnQ2NCgpKTsK
K30KKworc3RhdGljIFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpUb2tlbklk
ZW50aWZpZXIgY29yZVRleHRNYW5pcHVsYXRpb25Ub2tlbklkZW50aWZpZXJGcm9tU3RyaW5nKE5T
U3RyaW5nKiBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtYWtlT2JqZWN0SWRlbnRpZmllcjxX
ZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6VG9rZW5JZGVudGlmaWVyVHlwZT4o
U3RyaW5nKGlkZW50aWZpZXIpLnRvVUludDY0KCkpOworfQogCi0gICAgaWYgKCFfcGFnZSkKKy0g
KHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0g
KilpdGVtIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxl
cgoreworICAgIGlmICghX3BhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYXV0byBpdGVtSUQgPSBtYWtlT2JqZWN0
SWRlbnRpZmllcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50
aWZpZXJUeXBlPihTdHJpbmcoaXRlbS5pZGVudGlmaWVyKS50b1VJbnQ2NCgpKTsKKyAgICBhdXRv
IGl0ZW1JRCA9IGNvcmVUZXh0TWFuaXB1bGF0aW9uSXRlbUlkZW50aWZpZXJGcm9tU3RyaW5nKGl0
ZW0uaWRlbnRpZmllcik7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiB0b2tlbnM7Ci0gICAgZm9yIChfV0tUZXh0TWFu
aXB1bGF0aW9uVG9rZW4gKndrVG9rZW4gaW4gaXRlbS50b2tlbnMpIHsKLSAgICAgICAgYXV0byB0
b2tlbklEID0gbWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6OlRva2VuSWRlbnRpZmllclR5cGU+KFN0cmluZyh3a1Rva2VuLmlkZW50aWZpZXIp
LnRvVUludDY0KCkpOwotICAgICAgICB0b2tlbnMuYXBwZW5kKFdlYkNvcmU6OlRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbiB7IHRva2VuSUQsIHdrVG9rZW4uY29u
dGVudCB9KTsKKyAgICBmb3IgKF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiAqd2tUb2tlbiBpbiBp
dGVtLnRva2VucykKKyAgICAgICAgdG9rZW5zLmFwcGVuZChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4geyBjb3JlVGV4dE1hbmlwdWxhdGlvblRv
a2VuSWRlbnRpZmllckZyb21TdHJpbmcod2tUb2tlbi5pZGVudGlmaWVyKSwgd2tUb2tlbi5jb250
ZW50IH0pOworCisgICAgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjpNYW5pcHVsYXRpb25JdGVtPiBjb3JlSXRlbXM7CisgICAgY29yZUl0ZW1zLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoMSk7CisgICAgY29yZUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbSB7IGl0ZW1JRCwgV1RG
TW92ZSh0b2tlbnMpIH0pOworICAgIF9wYWdlLT5jb21wbGV0ZVRleHRNYW5pcHVsYXRpb24oY29y
ZUl0ZW1zLCBbY2FwdHVyZWRDb21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSAoYm9vbCBhbGxGYWlsZWQsIGF1dG8mIGZhaWx1cmVzKSB7CisgICAgICAgIGNh
cHR1cmVkQ29tcGxldGlvbkJsb2NrKCFhbGxGYWlsZWQgJiYgZmFpbHVyZXMuaXNFbXB0eSgpKTsK
KyAgICB9KTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWFrZUZhaWx1
cmVTZXRGb3JBbGxUZXh0TWFuaXB1bGF0aW9uSXRlbXMoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0
aW9uSXRlbSAqPiAqaXRlbXMpCit7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3a0Zh
aWx1cmVzID0gYWRvcHROUyhbW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTppdGVtcy5jb3VudF0gYXV0b3JlbGVhc2VdKTsKKyAgICBmb3IgKF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtICppdGVtIGluIGl0ZW1zKQorICAgICAgICBbd2tGYWlsdXJlcyBhZGRPYmplY3Q6W05T
RXJyb3IgZXJyb3JXaXRoRG9tYWluOl9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JEb21haW4g
Y29kZTpfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yTm90QXZhaWxhYmxlIHVzZXJJbmZvOkB7
X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckl0ZW1LZXk6IGl0ZW19XV07CisgICAgcmV0dXJu
IHdrRmFpbHVyZXM7Cit9OworCitzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3a1Rl
eHRNYW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqPiAq
aXRlbXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
TWFuaXB1bGF0aW9uRmFpbHVyZT4mIGZhaWx1cmVzKQoreworICAgIHVzaW5nIE1hbmlwdWxhdGlv
bkZhaWx1cmVUeXBlID0gV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlw
dWxhdGlvbkZhaWx1cmVUeXBlOworCisgICAgaWYgKGZhaWx1cmVzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIFJldGFpblB0cjxOU011dGFibGVBcnJheT4geyBuaWwgfTsKKworICAgIFJldGFp
blB0cjxOU011dGFibGVBcnJheT4gd2tGYWlsdXJlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpmYWlsdXJlcy5zaXplKCldKTsKKyAgICBmb3IgKGF1
dG8mIGNvcmVGYWlsdXJlIDogZmFpbHVyZXMpIHsKKyAgICAgICAgQVNTRVJUKGNvcmVGYWlsdXJl
LmluZGV4IDwgaXRlbXMuY291bnQpOworICAgICAgICBpZiAoY29yZUZhaWx1cmUuaW5kZXggPj0g
aXRlbXMuY291bnQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byogaXRlbSA9
IGl0ZW1zW2NvcmVGYWlsdXJlLmluZGV4XTsKKyAgICAgICAgQVNTRVJUKGNvcmVUZXh0TWFuaXB1
bGF0aW9uSXRlbUlkZW50aWZpZXJGcm9tU3RyaW5nKGl0ZW0uaWRlbnRpZmllcikgPT0gY29yZUZh
aWx1cmUuaWRlbnRpZmllcik7CisgICAgICAgIGF1dG8gZXJyb3JDb2RlID0gKFsmY29yZUZhaWx1
cmVdKCkgeworICAgICAgICAgICAgc3dpdGNoIChjb3JlRmFpbHVyZS50eXBlKSB7CisgICAgICAg
ICAgICBjYXNlIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOjpDb250ZW50Q2hhbmdlZDoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckNvbnRlbnRDaGFu
Z2VkOworICAgICAgICAgICAgY2FzZSBNYW5pcHVsYXRpb25GYWlsdXJlVHlwZTo6SW52YWxpZEl0
ZW06CisgICAgICAgICAgICAgICAgcmV0dXJuIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JJ
bnZhbGlkSXRlbTsKKyAgICAgICAgICAgIGNhc2UgTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6Oklu
dmFsaWRUb2tlbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcnJvckludmFsaWRUb2tlbjsKKyAgICAgICAgICAgIGNhc2UgTWFuaXB1bGF0aW9uRmFpbHVy
ZVR5cGU6OkV4Y2x1c2lvblZpb2xhdGlvbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gX1dLVGV4
dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckV4Y2x1c2lvblZpb2xhdGlvbjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSkoKTsKKyAgICAgICAgW3drRmFpbHVyZXMgYWRkT2JqZWN0OltOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yRG9tYWluIGNvZGU6c3Rh
dGljX2Nhc3Q8aW50PihlcnJvckNvZGUpIHVzZXJJbmZvOkB7X1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcnJvckl0ZW1LZXk6IGl0ZW19XV07CisgICAgfQorCisgICAgcmV0dXJuIHdrRmFpbHVyZXM7
Cit9CisKKy0gKHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOihOU0FycmF5
PF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICo+ICopaXRlbXMgY29tcGxldGlvbjoodm9pZCheKShO
U0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAo
IV9wYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VGYWlsdXJlU2V0Rm9yQWxs
VGV4dE1hbmlwdWxhdGlvbkl0ZW1zKGl0ZW1zKS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBfcGFnZS0+Y29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKGl0ZW1JRCwgdG9rZW5z
LCBbY2FwdHVyZWRDb21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoTWFuaXB1bGF0aW9uUmVzdWx0IHJlc3VsdCkgewotICAgICAgICBjYXB0dXJlZENvbXBs
ZXRpb25CbG9jayhyZXN1bHQgPT0gTWFuaXB1bGF0aW9uUmVzdWx0OjpTdWNjZXNzKTsKKyAgICBW
ZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0
ZW0+IGNvcmVJdGVtczsKKyAgICBjb3JlSXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpdGVt
cy5jb3VudCk7CisgICAgZm9yIChfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqd2tJdGVtIGluIGl0
ZW1zKSB7CisgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
cjo6TWFuaXB1bGF0aW9uVG9rZW4+IGNvcmVUb2tlbnM7CisgICAgICAgIGNvcmVUb2tlbnMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSh3a0l0ZW0udG9rZW5zLmNvdW50KTsKKyAgICAgICAgZm9yIChf
V0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gKndrVG9rZW4gaW4gd2tJdGVtLnRva2VucykKKyAgICAg
ICAgICAgIGNvcmVUb2tlbnMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbiB7IGNvcmVUZXh0TWFuaXB1bGF0aW9uVG9r
ZW5JZGVudGlmaWVyRnJvbVN0cmluZyh3a1Rva2VuLmlkZW50aWZpZXIpLCB3a1Rva2VuLmNvbnRl
bnQgfSk7CisgICAgICAgIGNvcmVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6VGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0geyBjb3JlVGV4dE1hbmlwdWxh
dGlvbkl0ZW1JZGVudGlmaWVyRnJvbVN0cmluZyh3a0l0ZW0uaWRlbnRpZmllciksIFdURk1vdmUo
Y29yZVRva2VucykgfSk7CisgICAgfQorCisgICAgUmV0YWluUHRyPE5TQXJyYXk8X1dLVGV4dE1h
bmlwdWxhdGlvbkl0ZW0gKj4+IHJldGFpbmVkSXRlbXMgPSBpdGVtczsKKyAgICBfcGFnZS0+Y29t
cGxldGVUZXh0TWFuaXB1bGF0aW9uKGNvcmVJdGVtcywgW2NhcHR1cmVkSXRlbXMgPSByZXRhaW5l
ZEl0ZW1zLCBjYXB0dXJlZENvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildKGJvb2wgYWxsRmFpbGVkLCBhdXRvJiBmYWlsdXJlcykgeworICAgICAgICBpZiAo
YWxsRmFpbGVkKSB7CisgICAgICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25CbG9jayhtYWtlRmFp
bHVyZVNldEZvckFsbFRleHRNYW5pcHVsYXRpb25JdGVtcyhjYXB0dXJlZEl0ZW1zLmdldCgpKS5n
ZXQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2FwdHVyZWRD
b21wbGV0aW9uQmxvY2sod2tUZXh0TWFuaXB1bGF0aW9uRXJyb3JzKGNhcHR1cmVkSXRlbXMuZ2V0
KCksIGZhaWx1cmVzKS5nZXQoKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDJlNTg4ZThl
ZmViNDNmY2YxYjMwZjBiOTkyMWNjYjM0YTM3MjVhMDIuLmE2ZDU5Mjc5OTU4NDY4NWY5ZWJkNjYy
M2FlYjg4OWU2YmMxMGUwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTkwLDggKzE5MCw5IEBAIGZvciB0aGlz
IHByb3BlcnR5LgogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tGcmFtZUhhbmRs
ZSAqX21haW5GcmFtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikp
OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRUZXh0TWFuaXB1bGF0
aW9uRGVsZWdhdGU6KSBpZCA8X1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlPiBfdGV4dE1hbmlw
dWxhdGlvbkRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7Ci0tICh2b2lkKV9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3Vy
YXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1
cmF0aW9uIGNvbXBsZXRpb246KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
X3N0YXJ0VGV4dE1hbmlwdWxhdGlvbnNXaXRoQ29uZmlndXJhdGlvbjooX1dLVGV4dE1hbmlwdWxh
dGlvbkNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGNvbXBsZXRpb246KHZvaWQoXikodm9p
ZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjooX1dL
VGV4dE1hbmlwdWxhdGlvbkl0ZW0gKilpdGVtIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNj
ZXNzKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9y
SXRlbXM6KE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKj4gKilpdGVtcyBjb21wbGV0
aW9uOih2b2lkKF4pKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBZGRzVmlzaXRlZExpbmtzOikgQk9P
TCBfYWRkc1Zpc2l0ZWRMaW5rczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZS5oCmluZGV4
IDcwYWI0OWU2MGNkNzE5YzI1OWFjZjJmMDVmOGU5ZGE2MTk0ZTEwYTMuLjgwZmJlZWI3MTFkYWEx
YjRlZjJiNTkyZTMxODE2NDI1NGE3NjU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRl
LmgKQEAgLTM0LDYgKzM0LDcgQEAKIEBvcHRpb25hbAogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZpbmRUZXh0TWFuaXB1bGF0aW9uSXRlbTooX1dLVGV4dE1hbmlw
dWxhdGlvbkl0ZW0gKilpdGVtOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW1zOihOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtICo+ICopaXRlbXM7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25JdGVtLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0uaAppbmRleCA1
OWU2NWU1MmEyNTE2ZjBhMDQ2YTFkZmNiYjU5M2M2NTdkNWY5MmI2Li4yMjU2OTQ4YzUzNjViMDIy
Yzc1MzNjYTAyZmY3ZWMxZTk1NTE5M2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0uaApAQCAtNDUs
NCArNDUsMTYgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpCiAKIEBlbmQKIAorV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLVGV4dE1h
bmlwdWxhdGlvbkl0ZW1FcnJvckRvbWFpbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tU
ZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yQ29kZSkgeworICAgIF9XS1RleHRNYW5pcHVsYXRpb25J
dGVtRXJyb3JOb3RBdmFpbGFibGUsCisgICAgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckNv
bnRlbnRDaGFuZ2VkLAorICAgIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JJbnZhbGlkSXRl
bSwKKyAgICBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9ySW52YWxpZFRva2VuLAorICAgIF9X
S1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JFeGNsdXNpb25WaW9sYXRpb24sCit9IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKK1dLX0VYVEVS
TiBOU0Vycm9yVXNlckluZm9LZXkgY29uc3QgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckl0
ZW1LZXkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKwogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0ubW0KaW5kZXgg
ODBlNzI4YWU1MzU3YzNiMTJhNzk4MDQwNDhmMzE5ZDhmN2Q2ODc3YS4uYzgyZWEyZjM4NmI4MjBk
MTkxNzY4NzM4M2ExZDI3NDVmMzA0MjZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25JdGVtLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uSXRlbS5tbQpAQCAt
MjksNiArMjksOSBAQAogI2ltcG9ydCAiX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLmgiCiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKK05TU3RyaW5nICogY29uc3QgX1dLVGV4dE1hbmlwdWxh
dGlvbkl0ZW1FcnJvckRvbWFpbiA9IEAiV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yRG9tYWlu
IjsKK05TU3RyaW5nICogY29uc3QgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckl0ZW1LZXkg
PSBAIml0ZW0iOworCiBAaW1wbGVtZW50YXRpb24gX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gewog
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2lkZW50aWZpZXI7CiAgICAgUmV0YWluUHRyPE5TQXJy
YXk8X1dLVGV4dE1hbmlwdWxhdGlvblRva2VuICo+PiBfdG9rZW5zOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODI2M2FhZDVmNTY2MjdlZjFkMmYwM2E4YmRm
ZWIwZmQ2ZmRlZWUzYS4uOTUwOGUxYWJjZDQwZWZmYzQ0NDc3ZmJkZmRjOTk1ZDAwZGY3MWVkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05ODc3LDIyICs5
ODc3LDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydFRleHRNYW5pcHVsYXRpb25zKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTdGFydFRleHRNYW5pcHVsYXRpb25zKGV4Y2x1c2lvblJ1bGVz
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyOjpJdGVtSWRlbnRpZmllciBpdGVtSUQsCi0gICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4mIHRva2VucykK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW1zKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRl
bT4mIGl0ZW1zKQogewogICAgIGlmICghbV90ZXh0TWFuaXB1bGF0aW9uSXRlbUNhbGxiYWNrKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV90ZXh0TWFuaXB1bGF0aW9uSXRlbUNhbGxiYWNrKGl0ZW1J
RCwgdG9rZW5zKTsKKyAgICBtX3RleHRNYW5pcHVsYXRpb25JdGVtQ2FsbGJhY2soaXRlbXMpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKFdlYkNvcmU6
OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciBpdGVtSUQsCi0gICAg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVs
YXRpb25Ub2tlbj4mIHRva2VucywgV1RGOjpGdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uUmVzdWx0IHJlc3VsdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcGxldGVUZXh0TWFuaXB1bGF0aW9u
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1
bGF0aW9uSXRlbT4mIGl0ZW1zLAorICAgIFdURjo6RnVuY3Rpb248dm9pZChib29sIGFsbEZhaWxl
ZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5p
cHVsYXRpb25GYWlsdXJlPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uUmVzdWx0OjpJbnZhbGlkSXRl
bSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUsIHsgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21w
bGV0ZVRleHRNYW5pcHVsYXRpb24oaXRlbUlELCB0b2tlbnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21w
bGV0ZVRleHRNYW5pcHVsYXRpb24oaXRlbXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVycmlkZGVuTWVkaWFUeXBlKGNvbnN0IFN0
cmluZyYgbWVkaWFUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCA5NzljMWY0YzFkZmRkOThhOGZkODNiNGRkYzE2ZDJjNTU0ZjE4MDNjLi5iMzNkMjhmNzBlNDlj
YzA3MzEyZGFjMmQ2YzJjOGY4MzUwZWIxNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTY4MSwxMSArMTY4MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24mJik7CiAjZW5kaWYKIAotICAgIHVzaW5nIFRleHRNYW5pcHVs
YXRpb25JdGVtQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4mKT47CisgICAg
dXNpbmcgVGV4dE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxh
dGlvbkl0ZW0+Jik+OwogICAgIHZvaWQgc3RhcnRUZXh0TWFuaXB1bGF0aW9ucyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU+Jiwg
VGV4dE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayYmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCBkaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW0oV2ViQ29yZTo6
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiYp
OwotICAgIHZvaWQgY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKFdlYkNvcmU6OlRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4mLAotICAgICAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpN
YW5pcHVsYXRpb25SZXN1bHQpPiYmKTsKKyAgICB2b2lkIGRpZEZpbmRUZXh0TWFuaXB1bGF0aW9u
SXRlbXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpN
YW5pcHVsYXRpb25JdGVtPiYpOworICAgIHZvaWQgY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0
aW9uSXRlbT4mLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBhbGxGYWlsZWQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVy
ZT4mKT4mJik7CiAKICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRkZW5NZWRpYVR5cGUoKSBjb25z
dCB7IHJldHVybiBtX292ZXJyaWRkZW5NZWRpYVR5cGU7IH0KICAgICB2b2lkIHNldE92ZXJyaWRk
ZW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOWY2NDRmNDYyZmJhNjU2MTc2NzllZjIy
ZGJjZTI4ODI1NjFhOTEwNS4uNzVmNjg2ZDFjZjRlZWRkYTg5ZTFhZTAzYzNhN2MwMWEwZjQ3ZmVj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgpAQCAtNTg3LDYgKzU4Nyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
U2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2Ug
dXNlck1lc3NhZ2UpIC0+IChzdHJ1Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSByZXBseU1lc3NhZ2Up
IEFzeW5jCiAjZW5kaWYKIAotICAgIERpZEZpbmRUZXh0TWFuaXB1bGF0aW9uSXRlbShXZWJDb3Jl
OjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXIgaXRlbUlELCBWZWN0
b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2Vu
PiB0b2tlbnMpCisgICAgRGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtcyhWZWN0b3I8V2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+IGl0ZW1zKQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IGUyNDU3MDQzYTQ4YzgxZTE2MzBmYmE2MGQ1MjFlYzQ0MDBiYjk1NjYuLjIzMmZhOTUzY2RlNjEx
OTk4YzViZDBkYzg2MTJkMGI1M2QxNzU0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02OTQ1LDggKzY5NDUsNyBAQCB2b2lkIFdlYlBhZ2U6
OnN0YXJ0VGV4dE1hbmlwdWxhdGlvbnMoVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOgogICAgIGlmICghbWFpbkRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtYWluRG9jdW1lbnQtPnRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyKCkuc3RhcnRPYnNlcnZp
bmdQYXJhZ3JhcGhzKFt3ZWJQYWdlID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoV2ViQ29yZTo6RG9j
dW1lbnQmIGRvY3VtZW50LAotICAgICAgICBXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6SXRlbUlkZW50aWZpZXIgaXRlbUlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+JiB0b2tlbnMp
IHsKKyAgICBtYWluRG9jdW1lbnQtPnRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyKCkuc3RhcnRP
YnNlcnZpbmdQYXJhZ3JhcGhzKFt3ZWJQYWdlID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+JiBpdGVtcykgewogICAgICAgICBhdXRvKiBmcmFtZSA9
IGRvY3VtZW50LmZyYW1lKCk7CiAgICAgICAgIGlmICghd2ViUGFnZSB8fCAhZnJhbWUgfHwgd2Vi
UGFnZS0+bWFpbkZyYW1lKCkgIT0gZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02OTU1
LDMxICs2OTU0LDM2IEBAIHZvaWQgV2ViUGFnZTo6c3RhcnRUZXh0TWFuaXB1bGF0aW9ucyhWZWN0
b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6CiAgICAgICAgIGlmICghd2Vi
RnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW0oaXRlbUlkZW50
aWZpZXIsIHRva2VucykpOworICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZEZpbmRUZXh0TWFuaXB1bGF0aW9uSXRlbXMoaXRlbXMpKTsKICAgICB9LCBXVEZN
b3ZlKGV4Y2x1c2lvblJ1bGVzKSk7CiAgICAgLy8gRm9yIG5vdywgd2UgYXNzdW1lIHN0YXJ0T2Jz
ZXJ2aW5nUGFyYWdyYXBocyBmaW5kIGFsbCBwYXJhZ3JhcGhzIHN5bmNocm9ub3VzbHkgYXQgb25j
ZS4KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYlBhZ2U6OmNvbXBsZXRl
VGV4dE1hbmlwdWxhdGlvbihXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRl
bUlkZW50aWZpZXIgaXRlbUlELAotICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+JiB0b2tlbnMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxh
dGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIGNvbXBsZXRlVGV4dE1hbmlw
dWxhdGlvbihjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
Ok1hbmlwdWxhdGlvbkl0ZW0+LAorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFz
aFNldDxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXIs
IFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWlsdXJl
PiYpPiYmKTsKKwordm9pZCBXZWJQYWdlOjpjb21wbGV0ZVRleHRNYW5pcHVsYXRpb24oY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25J
dGVtPiYgaXRlbXMsCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFsbEZhaWxlZCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVs
YXRpb25GYWlsdXJlPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHVzaW5nIE1hbmlw
dWxhdGlvblJlc3VsdCA9IFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5p
cHVsYXRpb25SZXN1bHQ7Ci0gICAgYXV0byBjb21wbGV0ZU1hbmlwdWxhdGlvbiA9IFsmXSB7Ci0g
ICAgICAgIGlmICghbV9wYWdlKQotICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvblJlc3Vs
dDo6SW52YWxpZEl0ZW07CisgICAgaWYgKCFtX3BhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAgICBhdXRv
IG1haW5Eb2N1bWVudCA9IG1ha2VSZWZQdHIobV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
KTsKLSAgICAgICAgaWYgKCFtYWluRG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gTWFuaXB1
bGF0aW9uUmVzdWx0OjpJbnZhbGlkSXRlbTsKKyAgICBhdXRvIG1haW5Eb2N1bWVudCA9IG1ha2VS
ZWZQdHIobV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKTsKKyAgICBpZiAoIW1haW5Eb2N1
bWVudCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlLCB7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQogCi0gICAgICAgIGF1dG8qIGNvbnRyb2xsZXIgPSBtYWluRG9jdW1lbnQt
PnRleHRNYW5pcHVsYXRpb25Db250cm9sbGVySWZFeGlzdHMoKTsKLSAgICAgICAgaWYgKCFjb250
cm9sbGVyKQotICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvblJlc3VsdDo6SW52YWxpZEl0
ZW07CisgICAgYXV0byogY29udHJvbGxlciA9IG1haW5Eb2N1bWVudC0+dGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXJJZkV4aXN0cygpOworICAgIGlmICghY29udHJvbGxlcikgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih0cnVlLCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQogCi0g
ICAgICAgIHJldHVybiBjb250cm9sbGVyLT5jb21wbGV0ZU1hbmlwdWxhdGlvbihpdGVtSUQsIHRv
a2Vucyk7Ci0gICAgfTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihjb21wbGV0ZU1hbmlwdWxhdGlv
bigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSwgY29udHJvbGxlci0+Y29tcGxldGVN
YW5pcHVsYXRpb24oaXRlbXMpKTsKIH0KIAogUEFMOjpTZXNzaW9uSUQgV2ViUGFnZTo6c2Vzc2lv
bklEKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCBkMjYzNGE1ZjQzMzQxNWNiYWJhYjc1Yzk2YzBlZTAwMzE5NzQyYTQ0Li5lNzNiMDQ3YzYz
M2IxYmZmNzk4Y2E4YWExNWNhNzMzODcxMmMzYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMjM3LDkgKzEyMzcsNyBAQCBwdWJsaWM6CiAgICAg
T3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IGNvbnRleHRGb3JFbGVtZW50KFdlYkNv
cmU6OkVsZW1lbnQmKSBjb25zdDsKIAogICAgIHZvaWQgc3RhcnRUZXh0TWFuaXB1bGF0aW9ucyhW
ZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjb21wbGV0ZVRleHRN
YW5pcHVsYXRpb24oV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVu
dGlmaWVyLAotICAgICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiYsCi0gICAgICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblJl
c3VsdCk+JiYpOworICAgIHZvaWQgY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgYWxsRmFpbGVkLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmU+Jik+
JiYpOwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBXZWJQYXltZW50Q29vcmRpbmF0b3Iq
IHBheW1lbnRDb29yZGluYXRvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNzM1NGMxOTIwODc0MDg5YmYwMDMw
YzYzNjNhYTg1ODYwMGRjYzg4NS4uYjc1OWM4Y2EwZjZjNmVlZmQzYzBkYTJkZGUyZTkwZWRjYzIz
ZjE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC01OTksOCArNTk5LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUKICNlbmRpZgogCiAgICAgU3RhcnRUZXh0TWFuaXB1bGF0aW9ucyhWZWN0b3I8V2ViQ29yZTo6
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU+IGV4Y2x1c2lvblJ1bGVz
KSAtPiAoKSBBc3luYwotICAgIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbihXZWJDb3JlOjpUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXIgaXRlbUlELCBWZWN0b3I8V2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiB0b2tl
bnMpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
Ok1hbmlwdWxhdGlvblJlc3VsdCByZXN1bHQpIEFzeW5jCi0gICAgCisgICAgQ29tcGxldGVUZXh0
TWFuaXB1bGF0aW9uKFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
TWFuaXB1bGF0aW9uSXRlbT4gaXRlbXMpIC0+IChib29sIGFsbEZhaWxlZCwgVmVjdG9yPFdlYkNv
cmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWlsdXJlPiBmYWls
dXJlcykgQXN5bmMKKwogICAgIFNldE92ZXJyaWRkZW5NZWRpYVR5cGUoU3RyaW5nIG1lZGlhVHlw
ZSkKICAgICBHZXRQcm9jZXNzRGlzcGxheU5hbWUoKSAtPiAoU3RyaW5nIGRpc3BsYXlOYW1lKSBB
c3luYwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggODliYzE4N2MwYzQyZDQ2MGQwMDUwMTQxMTE4NmUyZjEwZDY0NmU1Ny4uZmE5YWUxNGQxNjNm
YzU2MzYyMmZlYThhMmI3M2NjYmMxZmZhMGM0YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAzLTAyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEJhdGNoIG9ic2VydmF0aW9u
cyBhbmQgY29tcGxldGlvbnMgb2YgdGV4dCBtYW5pcHVsYXRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRoZSBleGlzdGluZyB0ZXN0
cyB0byB1c2UgbmV3IEFQSXMsIGFuZCBhZGRlZCBuZXcgdGVzdHMgZm9yIGJhdGNoaW5nIGZpbmRp
bmcgJiByZXBsYWNpbmcKKyAgICAgICAgbXVsdGlwbGUgcGFyYWdyYXBocyBhdCBvbmNlLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9u
Lm1tOgorICAgICAgICAoLVtUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlkRmlu
ZFRleHRNYW5pcHVsYXRpb25JdGVtczpdKToKKyAgICAgICAgKC1bVGV4dE1hbmlwdWxhdGlvbkRl
bGVnYXRlIGl0ZW1zXSk6CisgICAgICAgICgtW0xlZ2FjeVRleHRNYW5pcHVsYXRpb25EZWxlZ2F0
ZSBpbml0XSk6CisgICAgICAgICgtW0xlZ2FjeVRleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBfd2Vi
VmlldzpkaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW06XSk6CisgICAgICAgIChUZXh0TWFuaXB1
bGF0aW9uLlN0YXJ0VGV4dE1hbmlwdWxhdGlvblN1cHBvcnRzTGVnYWN5RGVsZWdhdGVDYWxsYmFj
ayk6IEFkZGVkLgorICAgICAgICAoVGV4dE1hbmlwdWxhdGlvbi5MZWdhY3lDb21wbGV0ZVRleHRN
YW5pcHVsYXRpb25SZXBsYWNlU2ltcGxlU2luZ2xlUGFyYWdyYXBoKTogQWRkZWQuCisgICAgICAg
IChUZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblJlcGxhY2VNdWx0aXBs
ZVNpbXBsZVBhcmFncmFwaHNBdE9uY2UpOiBBZGRlZC4KKyAgICAgICAgKFRleHRNYW5pcHVsYXRp
b24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uU2hvdWxkQmF0Y2hJdGVtQ2FsbGJhY2spOiBBZGRl
ZC4KKyAgICAgICAgKFRleHRNYW5pcHVsYXRpb24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRmFp
bFdoZW5JdGVtSWRlbnRpZmllcklzRHVwbGljYXRlZCk6IEFkZGVkLgorICAgICAgICAoVGV4dE1h
bmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5pcHVsYXRpb25DYW5IYW5kbGVTdWJzZXRPZkl0ZW1z
VG9GYWlsKTogQWRkZWQuCisKIDIwMjAtMDItMjggIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIEVXUyBmYWlscyB0byByZXRyeSBidWlsZCBpbiBjYXNlIG9m
IGtpbGwtb2xkLXByb2Nlc3NlcyBleGNlcHRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQppbmRleCBkZmU0
MmQ1NzFiNmI1MzJlNzIwYWNkMDlkMWE5NmI4MDRlZWRlOTU1Li4zMzVmMGIxNzlmOThiODAyMDRh
YmQwYjgxNjExNWU3ZmMwZTAwZWQ1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tCkBAIC0zNiwxNyArMzYs
MjEgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaD4KICNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlTnVtYmVycy5oPgogCiBzdGF0aWMgYm9vbCBkb25lID0gZmFsc2U7CiAKIHR5cGVk
ZWYgdm9pZCheSXRlbUNhbGxiYWNrKShfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKTsKK3R5cGVk
ZWYgdm9pZCheSXRlbUxpc3RDYWxsYmFjaykoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRl
bSAqPiAqKTsKIAogQGludGVyZmFjZSBUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgOiBOU09iamVj
dCA8X1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlPgogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZpbmRUZXh0TWFuaXB1bGF0aW9uSXRlbTooX1dLVGV4dE1hbmlw
dWxhdGlvbkl0ZW0gKilpdGVtOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW1zOihOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtICo+ICopaXRlbXM7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqPiAqaXRlbXM7CiBAcHJvcGVydHkg
KHN0cm9uZykgSXRlbUNhbGxiYWNrIGl0ZW1DYWxsYmFjazsKK0Bwcm9wZXJ0eSAoc3Ryb25nKSBJ
dGVtTGlzdENhbGxiYWNrIGl0ZW1MaXN0Q2FsbGJhY2s7CiAKIEBlbmQKIApAQCAtNjIsMTEgKzY2
LDQ4IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKKy0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluZFRleHRNYW5pcHVsYXRpb25J
dGVtczooTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqPiAqKWl0ZW1zCit7CisgICAg
W19pdGVtcyBhZGRPYmplY3RzRnJvbUFycmF5Oml0ZW1zXTsKKyAgICBpZiAoc2VsZi5pdGVtTGlz
dENhbGxiYWNrKQorICAgICAgICBzZWxmLml0ZW1MaXN0Q2FsbGJhY2soaXRlbXMpOworICAgIGlm
IChzZWxmLml0ZW1DYWxsYmFjaykgeworICAgICAgICBmb3IgKF9XS1RleHRNYW5pcHVsYXRpb25J
dGVtKiBpdGVtIGluIGl0ZW1zKQorICAgICAgICAgICAgc2VsZi5pdGVtQ2FsbGJhY2soaXRlbSk7
CisgICAgfQorfQorCistIChOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICo+ICopaXRl
bXMKK3sKKyAgICByZXR1cm4gX2l0ZW1zLmdldCgpOworfQorCitAZW5kCisKK0BpbnRlcmZhY2Ug
TGVnYWN5VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPF9XS1RleHRNYW5pcHVs
YXRpb25EZWxlZ2F0ZT4KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW06KF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopaXRl
bTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PF9XS1Rl
eHRNYW5pcHVsYXRpb25JdGVtICo+ICppdGVtczsKK0Bwcm9wZXJ0eSAoc3Ryb25nKSBJdGVtQ2Fs
bGJhY2sgaXRlbUNhbGxiYWNrOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBMZWdhY3lUZXh0
TWFuaXB1bGF0aW9uRGVsZWdhdGUgeworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX2l0
ZW1zOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIF9pdGVtcyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIHJldHVybiBzZWxmOworfQorCiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmRUZXh0TWFuaXB1bGF0aW9u
SXRlbTooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKilpdGVtCiB7CiAgICAgW19pdGVtcyBhZGRP
YmplY3Q6aXRlbV07Ci0gICAgaWYgKHNlbGYuaXRlbUNhbGxiYWNrKQotICAgICAgICBzZWxmLml0
ZW1DYWxsYmFjayhpdGVtKTsKIH0KIAogLSAoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRl
bSAqPiAqKWl0ZW1zCkBAIC0xNzUsNiArMjE2LDI5IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwg
U3RhcnRUZXh0TWFuaXB1bGF0aW9uRmluZFBhcmFncmFwaHNXaXRoTXVsdGlsZVRva2VucykKICAg
ICBFWFBFQ1RfU1RSRVEoIktpdCIsIGl0ZW1zWzFdLnRva2Vuc1sxXS5jb250ZW50LlVURjhTdHJp
bmcpOwogfQogCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4dE1hbmlwdWxhdGlvblN1
cHBvcnRzTGVnYWN5RGVsZWdhdGVDYWxsYmFjaykKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW0xlZ2FjeVRleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgX3NldFRleHRN
YW5pcHVsYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48cD5o
ZWxsbywgPHNwYW4+d29ybGQ8L3NwYW4+PC9wPjxwPldlYktpdDwvcD48L2JvZHk+PC9odG1sPiJd
OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRp
b25zV2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb246XnsKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAg
IF9fYmxvY2sgYXV0byAqaXRlbXMgPSBbZGVsZWdhdGUgaXRlbXNdOworICAgIEVYUEVDVF9FUShp
dGVtcy5jb3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfRVEoaXRlbXNbMF0udG9rZW5zLmNvdW50LCAy
VUwpOworICAgIEVYUEVDVF9TVFJFUSgiaGVsbG8sICIsIGl0ZW1zWzBdLnRva2Vuc1swXS5jb250
ZW50LlVURjhTdHJpbmcpOworICAgIEVYUEVDVF9TVFJFUSgid29ybGQiLCBpdGVtc1swXS50b2tl
bnNbMV0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfRVEoaXRlbXNbMV0udG9rZW5z
LmNvdW50LCAxVUwpOworICAgIEVYUEVDVF9TVFJFUSgiV2ViS2l0IiwgaXRlbXNbMV0udG9rZW5z
WzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7Cit9CisKIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgU3Rh
cnRUZXh0TWFuaXB1bGF0aW9uRmluZE5ld2x5SW5zZXJ0ZWRQYXJhZ3JhcGgpCiB7CiAgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKQEAgLTQ2MiwxMCArNTI2LDQwIEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxl
dGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZVNpbXBsZVNpbmdsZVBhcmFncmFwaCkKICAgICBFWFBF
Q1RfRVEoaXRlbXNbMF0udG9rZW5zLmNvdW50LCAxVUwpOwogICAgIEVYUEVDVF9TVFJFUSgiaGVs
bGxvLCB3b29vcmxkIiwgaXRlbXNbMF0udG9rZW5zWzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CiAK
KyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlv
bkZvckl0ZW1zOkBbKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRlbShpdGVtc1sw
XS5pZGVudGlmaWVyLCB7CisgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIs
IEAiaGVsbG8sIHdvcmxkIiB9LAorICAgIH0pXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9y
ICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjxwPmhlbGxvLCB3b3JsZDwvcD4iLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXSk7
Cit9CisKK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgTGVnYWN5Q29tcGxldGVUZXh0TWFuaXB1bGF0
aW9uUmVwbGFjZVNpbXBsZVNpbmdsZVBhcmFncmFwaCkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgX3NldFRleHRNYW5p
cHVsYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48cD5oZWxs
bG8sIHdvb29ybGQ8L3A+PC9ib2R5PjwvaHRtbD4iXTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAg
ICBbd2ViVmlldyBfc3RhcnRUZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25maWd1cmF0aW9uOm5pbCBj
b21wbGV0aW9uOl57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBhdXRvICppdGVtcyA9IFtkZWxlZ2F0ZSBp
dGVtc107CisgICAgRVhQRUNUX0VRKGl0ZW1zLmNvdW50LCAxVUwpOworICAgIEVYUEVDVF9FUShp
dGVtc1swXS50b2tlbnMuY291bnQsIDFVTCk7CisgICAgRVhQRUNUX1NUUkVRKCJoZWxsbG8sIHdv
b29ybGQiLCBpdGVtc1swXS50b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKKwogICAgIGRv
bmUgPSBmYWxzZTsKICAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uOihfV0tU
ZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgewog
ICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAImhlbGxvLCB3b3JsZCIg
fSwKLSAgICB9KS5nZXQoKSBjb21wbGV0aW9uOl4oQk9PTCBzdWNjZXNzKSB7CisgICAgfSkgY29t
cGxldGlvbjpeKEJPT0wgc3VjY2VzcykgewogICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsK
ICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CkBAIC00OTcsMTggKzU5MSwxOCBAQCBURVNU
KFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkRpc2dhcmRzVG9rZW5z
KQogICAgIEVYUEVDVF9TVFJFUSgiV2ViS2l0IiwgaXRlbXNbMF0udG9rZW5zWzNdLmNvbnRlbnQu
VVRGOFN0cmluZyk7CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NvbXBsZXRl
VGV4dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0
ZW1zWzBdLmlkZW50aWZpZXIsIHsKKyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0
aW9uRm9ySXRlbXM6QFsoX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1z
WzBdLmlkZW50aWZpZXIsIHsKICAgICAgICAgeyBpdGVtc1swXS50b2tlbnNbMF0uaWRlbnRpZmll
ciwgQCJoZWxsbywgIiB9LAogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1szXS5pZGVudGlmaWVy
LCBAIldlYktpdCIgfSwKLSAgICB9KS5nZXQoKSBjb21wbGV0aW9uOl4oQk9PTCBzdWNjZXNzKSB7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIH0pXSBjb21wbGV0aW9uOl4oTlNB
cnJheTxOU0Vycm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmls
KTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIjxwPmhlbGxvLCA8aT5XZWJLaXQ8
L2k+PC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5ib2R5LmlubmVySFRNTCJdKTsKIH0KIAotVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0
ZVRleHRNYW5pcHVsYXRpb25SZXBsYWNlU2ltcGxlUGFyYWdyYXBoQ29udGVudCkKK1RFU1QoVGV4
dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZU11bHRpcGxlU2lt
cGxlUGFyYWdyYXBocykKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRNYW5p
cHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
NDAwLCA0MDApXSk7CkBAIC01MzUsMTMgKzYyOSwxMyBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24s
IENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblJlcGxhY2VTaW1wbGVQYXJhZ3JhcGhDb250ZW50KQog
ICAgIEVYUEVDVF9TVFJFUSgiY3V1dXRlIiwgaXRlbXNbMV0udG9rZW5zWzNdLmNvbnRlbnQuVVRG
OFN0cmluZyk7CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4
dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1z
WzFdLmlkZW50aWZpZXIsIHsKKyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9u
Rm9ySXRlbXM6QFsoX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1zWzFd
LmlkZW50aWZpZXIsIHsKICAgICAgICAgeyBpdGVtc1sxXS50b2tlbnNbMF0uaWRlbnRpZmllciwg
QCJIZWxsbywgIiB9LAogICAgICAgICB7IGl0ZW1zWzFdLnRva2Vuc1sxXS5pZGVudGlmaWVyLCBA
ImtpdHRlbnMiIH0sCiAgICAgICAgIHsgaXRlbXNbMV0udG9rZW5zWzJdLmlkZW50aWZpZXIsIEAi
IGFyZSAiIH0sCiAgICAgICAgIHsgaXRlbXNbMV0udG9rZW5zWzNdLmlkZW50aWZpZXIsIEAiY3V0
ZSIgfSwKLSAgICB9KS5nZXQoKSBjb21wbGV0aW9uOl4oQk9PTCBzdWNjZXNzKSB7Ci0gICAgICAg
IEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIH0pXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vy
cm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKICAgICAg
ICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKQEAgLTU0OSwxMCArNjQzLDUzIEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxl
dGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZVNpbXBsZVBhcmFncmFwaENvbnRlbnQpCiAgICAgICAg
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5Lmlu
bmVySFRNTCJdKTsKIAogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY29tcGxldGVU
ZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRl
bXNbMF0uaWRlbnRpZmllciwgeworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRp
b25Gb3JJdGVtczpAWyhfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRlbXNb
MF0uaWRlbnRpZmllciwgewogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVy
LCBAIkhlbGxvLCB3b3JsZC4iIH0sCi0gICAgfSkuZ2V0KCkgY29tcGxldGlvbjpeKEJPT0wgc3Vj
Y2VzcykgewotICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICB9KV0gY29tcGxldGlv
bjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJv
cnMsIG5pbCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCI8cD5IZWxsbywgd29y
bGQuPC9wPjxwPkhlbGxvLCA8Yj5raXR0ZW5zPC9iPiBhcmUgPGVtPmN1dGU8L2VtPjwvcD4iLAor
ICAgICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
Ym9keS5pbm5lckhUTUwiXSk7Cit9CisKK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVU
ZXh0TWFuaXB1bGF0aW9uUmVwbGFjZU11bHRpcGxlU2ltcGxlUGFyYWdyYXBoc0F0T25jZSkKK3sK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAg
W3dlYlZpZXcgX3NldFRleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRt
bD4iCisgICAgICAgICI8aHRtbD48Ym9keT48cD5oZWxsbG8sIHdvb29ybGQ8L3A+PHA+IGhleSwg
PGI+IEtpdHM8L2I+IGlzIDxlbT5jdXV1dGU8L2VtPjwvcD48L2JvZHk+PC9odG1sPiJdOworCisg
ICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0
aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb246XnsKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGF1dG8g
Kml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKKyAgICBFWFBFQ1RfRVEoaXRlbXMuY291bnQsIDJV
TCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgMVVMKTsKKyAgICBFWFBF
Q1RfU1RSRVEoImhlbGxsbywgd29vb3JsZCIsIGl0ZW1zWzBdLnRva2Vuc1swXS5jb250ZW50LlVU
RjhTdHJpbmcpOworCisgICAgRVhQRUNUX0VRKGl0ZW1zWzFdLnRva2Vucy5jb3VudCwgNFVMKTsK
KyAgICBFWFBFQ1RfU1RSRVEoImhleSwgIiwgaXRlbXNbMV0udG9rZW5zWzBdLmNvbnRlbnQuVVRG
OFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCJLaXRzIiwgaXRlbXNbMV0udG9rZW5zWzFdLmNv
bnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCIgaXMgIiwgaXRlbXNbMV0udG9r
ZW5zWzJdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCJjdXV1dGUiLCBp
dGVtc1sxXS50b2tlbnNbM10uY29udGVudC5VVEY4U3RyaW5nKTsKKworICAgIGRvbmUgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6QFsoX1dL
VGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1zWzFdLmlkZW50aWZpZXIsIHsK
KyAgICAgICAgeyBpdGVtc1sxXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJIZWxsbywgIiB9LAor
ICAgICAgICB7IGl0ZW1zWzFdLnRva2Vuc1sxXS5pZGVudGlmaWVyLCBAImtpdHRlbnMiIH0sCisg
ICAgICAgIHsgaXRlbXNbMV0udG9rZW5zWzJdLmlkZW50aWZpZXIsIEAiIGFyZSAiIH0sCisgICAg
ICAgIHsgaXRlbXNbMV0udG9rZW5zWzNdLmlkZW50aWZpZXIsIEAiY3V0ZSIgfSwKKyAgICB9KSwg
KF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRlbShpdGVtc1swXS5pZGVudGlmaWVy
LCB7CisgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiSGVsbG8sIHdv
cmxkLiIgfSwKKyAgICB9KV0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3Jz
KSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMsIG5pbCk7CiAgICAgICAgIGRvbmUgPSB0cnVl
OwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CkBAIC01NjAs
NiArNjk3LDM1IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0
aW9uUmVwbGFjZVNpbXBsZVBhcmFncmFwaENvbnRlbnQpCiAgICAgICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsKIH0K
IAorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25TaG91bGRC
YXRjaEl0ZW1DYWxsYmFjaykKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRN
YW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgX3NldFRleHRNYW5pcHVsYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiJdOworCisg
ICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWwgPSAnJzsgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDAwOyArK2kpIGh0bWwgKz0gYDxwPmhlbGxvICR7aX08L3A+YDsg
ZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBodG1sOyJdOworCisgICAgZG9uZSA9IGZhbHNlOwor
ICAgIF9fYmxvY2sgdW5zaWduZWQgaXRlbUxpc3RDYWxsYmFja0NvdW50ID0gMDsKKyAgICBkZWxl
Z2F0ZS5nZXQoKS5pdGVtTGlzdENhbGxiYWNrID0gXihOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtICo+ICppdGVtcykgeworICAgICAgICBpdGVtTGlzdENhbGxiYWNrQ291bnQrKzsKKyAg
ICB9OworICAgIFt3ZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3VyYXRp
b246bmlsIGNvbXBsZXRpb246XnsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBFWFBFQ1RfR0UoaXRlbUxpc3RD
YWxsYmFja0NvdW50LCAyKTsKKworICAgIGF1dG8gKml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsg
ICAgCisgICAgRVhQRUNUX0VRKGl0ZW1zLmNvdW50LCAyMDAwVUwpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCAyMDAwOyArK2kpIHsKKyAgICAgICAgRVhQRUNUX0VRKGl0ZW1zW2ldLnRv
a2Vucy5jb3VudCwgMVVMKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKG1ha2VTdHJpbmcoImhl
bGxvICIsIGkpLCBpdGVtc1tpXS50b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICB9
Cit9CisKIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUmVv
cmRlcnNDb250ZW50KQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGV4dE1hbmlw
dWxhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC01ODQsMTIgKzc1MCwxMiBAQCBURVNU
KFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblJlb3JkZXJzQ29udGVu
dCkKICAgICBFWFBFQ1RfU1RSRVEoIiBhcmUiLCBpdGVtc1swXS50b2tlbnNbM10uY29udGVudC5V
VEY4U3RyaW5nKTsKIAogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY29tcGxldGVU
ZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRl
bXNbMF0uaWRlbnRpZmllciwgeworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRp
b25Gb3JJdGVtczpAWyhfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRlbXNb
MF0uaWRlbnRpZmllciwgewogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1syXS5pZGVudGlmaWVy
LCBAIkkiIH0sCiAgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzNdLmlkZW50aWZpZXIsIEAiJ20g
YSAiIH0sCiAgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiY2F0IiB9
LAotICAgIH0pLmdldCgpIGNvbXBsZXRpb246XihCT09MIHN1Y2Nlc3MpIHsKLSAgICAgICAgRVhQ
RUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgfSkuZ2V0KCldIGNvbXBsZXRpb246XihOU0FycmF5PE5T
RXJyb3IgKj4gKmVycm9ycykgeworICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLCBuaWwpOwogICAg
ICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOwpAQCAtNjIwLDEyICs3ODYsMTIgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21w
bGV0ZVRleHRNYW5pcHVsYXRpb25DYW5TcGxpdENvbnRlbnQpCiAgICAgRVhQRUNUX1NUUkVRKCIg
V2ViS2l0IiwgaXRlbXNbMF0udG9rZW5zWzFdLmNvbnRlbnQuVVRGOFN0cmluZyk7CiAKICAgICBk
b25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjooX1dL
VGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsK
KyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6QFsoX1dLVGV4
dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsKICAg
ICAgICAgeyBpdGVtc1swXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJoZWxsbyIgfSwKICAgICAg
ICAgeyBpdGVtc1swXS50b2tlbnNbMV0uaWRlbnRpZmllciwgQCIgV2ViS2l0ICIgfSwKICAgICAg
ICAgeyBpdGVtc1swXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJ3b3JsZCIgfSwKLSAgICB9KS5n
ZXQoKSBjb21wbGV0aW9uOl4oQk9PTCBzdWNjZXNzKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHN1
Y2Nlc3MpOworICAgIH0pXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+ICplcnJvcnMp
IHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKICAgICAgICAgZG9uZSA9IHRydWU7
CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKQEAgLTY1Nywx
NyArODIzLDg4IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0
aW9uQ2FuTWVyZ2VDb250ZW50KQogICAgIEVYUEVDVF9TVFJFUSgiIFdlYktpdCIsIGl0ZW1zWzBd
LnRva2Vuc1syXS5jb250ZW50LlVURjhTdHJpbmcpOwogCiAgICAgZG9uZSA9IGZhbHNlOwotICAg
IFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25J
dGVtICopY3JlYXRlSXRlbShpdGVtc1swXS5pZGVudGlmaWVyLCB7CisgICAgW3dlYlZpZXcgX2Nv
bXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOkBbKF9XS1RleHRNYW5pcHVsYXRpb25JdGVt
ICopY3JlYXRlSXRlbShpdGVtc1swXS5pZGVudGlmaWVyLCB7CiAgICAgICAgIHsgaXRlbXNbMF0u
dG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiaGVsbG8gIiB9LAogICAgICAgICB7IGl0ZW1zWzBdLnRv
a2Vuc1syXS5pZGVudGlmaWVyLCBAIndvcmxkIiB9LAotICAgIH0pLmdldCgpIGNvbXBsZXRpb246
XihCT09MIHN1Y2Nlc3MpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7CisgICAgfSld
IGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykgeworICAgICAgICBFWFBF
Q1RfRVEoZXJyb3JzLCBuaWwpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIEVYUEVDVF9XS19TVFJFUSgiPHA+
PGI+aGVsbG8gd29ybGQ8L2I+PC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsKIH0KIAorVEVTVChUZXh0TWFuaXB1
bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25GYWlsV2hlbkl0ZW1JZGVudGlmaWVySXNE
dXBsaWNhdGVkKQoreworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGV4dE1hbmlwdWxh
dGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAs
IDQwMCldKTsKKyAgICBbd2ViVmlldyBfc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOmRlbGVn
YXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpA
IjwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5PjxwPmhlbGxvLCA8Yj53b3JsZDwvYj48L3A+PC9i
b2R5PjwvaHRtbD4iXTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfc3RhcnRU
ZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25maWd1cmF0aW9uOm5pbCBjb21wbGV0aW9uOl57CisgICAg
ICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CisKKyAgICBhdXRvICppdGVtcyA9IFtkZWxlZ2F0ZSBpdGVtc107CisgICAgRVhQRUNU
X0VRKGl0ZW1zLmNvdW50LCAxVUwpOworICAgIEVYUEVDVF9FUShpdGVtc1swXS50b2tlbnMuY291
bnQsIDJVTCk7CisgICAgRVhQRUNUX1NUUkVRKCJoZWxsbywgIiwgaXRlbXNbMF0udG9rZW5zWzBd
LmNvbnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCJ3b3JsZCIsIGl0ZW1zWzBd
LnRva2Vuc1sxXS5jb250ZW50LlVURjhTdHJpbmcpOworCisgICAgZG9uZSA9IGZhbHNlOworICAg
IGF1dG8gZmlyc3RJdGVtID0gY3JlYXRlSXRlbShpdGVtc1swXS5pZGVudGlmaWVyLCB7IHsgaXRl
bXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiZG9uZSIgfSB9KTsKKyAgICBfX2Jsb2NrIGF1
dG8gc2Vjb25kSXRlbSA9IGNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgeyB7IGl0ZW1z
WzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAImJhZCIgfSB9KTsKKyAgICBbd2ViVmlldyBfY29t
cGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6QFtmaXJzdEl0ZW0uZ2V0KCksIHNlY29uZEl0
ZW0uZ2V0KCldIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykgeworICAg
ICAgICBFWFBFQ1RfRVEoZXJyb3JzLmNvdW50LCAxVUwpOworICAgICAgICBFWFBFQ1RfRVEoZXJy
b3JzLmZpcnN0T2JqZWN0LmRvbWFpbiwgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckRvbWFp
bik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuZmlyc3RPYmplY3QuY29kZSwgX1dLVGV4dE1h
bmlwdWxhdGlvbkl0ZW1FcnJvckludmFsaWRJdGVtKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9y
cy5maXJzdE9iamVjdC51c2VySW5mb1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9ySXRlbUtl
eV0sIHNlY29uZEl0ZW0uZ2V0KCkpOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIEVYUEVDVF9XS19TVFJFUSgi
PHA+ZG9uZTwvcD4iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9j
dW1lbnQuYm9keS5pbm5lckhUTUwiXSk7Cit9CisKK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29t
cGxldGVUZXh0TWFuaXB1bGF0aW9uQ2FuSGFuZGxlU3Vic2V0T2ZJdGVtc1RvRmFpbCkKK3sKKyAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxv
Y10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dl
YlZpZXcgX3NldFRleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48
aHRtbD48Ym9keT48cD5oZXksIDxiPmR1ZGU8L2I+PC9wPjxwPnRoaXMgaXMgPGI+YmFkPC9iPjwv
cD48L2JvZHk+PC9odG1sPiJdOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9z
dGFydFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb246XnsK
KyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
cnVuKCZkb25lKTsKKworICAgIGF1dG8gKml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKKyAgICBF
WFBFQ1RfRVEoaXRlbXMuY291bnQsIDJVTCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vu
cy5jb3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfU1RSRVEoImhleSwgIiwgaXRlbXNbMF0udG9rZW5z
WzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCJkdWRlIiwgaXRlbXNb
MF0udG9rZW5zWzFdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzFd
LnRva2Vucy5jb3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfU1RSRVEoInRoaXMgaXMgIiwgaXRlbXNb
MV0udG9rZW5zWzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCJiYWQi
LCBpdGVtc1sxXS50b2tlbnNbMV0uY29udGVudC5VVEY4U3RyaW5nKTsKKworICAgIGRvbmUgPSBm
YWxzZTsKKyAgICBfX2Jsb2NrIGF1dG8gZmlyc3RJdGVtID0gY3JlYXRlSXRlbShpdGVtc1swXS5p
ZGVudGlmaWVyLCB7IHsgaXRlbXNbMV0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiYmFkIiB9IH0p
OworICAgIGF1dG8gc2Vjb25kSXRlbSA9IGNyZWF0ZUl0ZW0oaXRlbXNbMV0uaWRlbnRpZmllciwg
eyB7IGl0ZW1zWzFdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAImdvb2QiIH0gfSk7CisgICAgW3dl
YlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOkBbZmlyc3RJdGVtLmdldCgp
LCBzZWNvbmRJdGVtLmdldCgpXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+ICplcnJv
cnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycy5jb3VudCwgMVVMKTsKKyAgICAgICAgRVhQ
RUNUX0VRKGVycm9ycy5maXJzdE9iamVjdC5kb21haW4sIF9XS1RleHRNYW5pcHVsYXRpb25JdGVt
RXJyb3JEb21haW4pOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLmZpcnN0T2JqZWN0LmNvZGUs
IF9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JJbnZhbGlkVG9rZW4pOworICAgICAgICBFWFBF
Q1RfRVEoZXJyb3JzLmZpcnN0T2JqZWN0LnVzZXJJbmZvW19XS1RleHRNYW5pcHVsYXRpb25JdGVt
RXJyb3JJdGVtS2V5XSwgZmlyc3RJdGVtLmdldCgpKTsKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIjxwPmhleSwgPGI+ZHVkZTwvYj48L3A+PHA+Z29vZDwvcD4iLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXSk7
Cit9CisKIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRmFp
bFdoZW5Db250ZW50SXNDaGFuZ2VkKQogewogICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIGFsbG9jXSBpbml0XSk7CkBAIC02OTMsMTIgKzkzMCwx
NiBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxX
aGVuQ29udGVudElzQ2hhbmdlZCkKICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZW0nKS5uZXh0U2libGluZy5kYXRhID0g
JyBpcyBpdCBub3cgaW4gTG9uZG9uPyciXTsKIAogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBbd2Vi
VmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAq
KWNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgeworICAgIF9fYmxvY2sgYXV0byBpdGVt
ID0gY3JlYXRlSXRlbShpdGVtc1swXS5pZGVudGlmaWVyLCB7CiAgICAgICAgIHsgaXRlbXNbMF0u
dG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiV2hhdCAiIH0sCiAgICAgICAgIHsgaXRlbXNbMF0udG9r
ZW5zWzFdLmlkZW50aWZpZXIsIEAidGltZSIgfSwKICAgICAgICAgeyBpdGVtc1swXS50b2tlbnNb
Ml0uaWRlbnRpZmllciwgQCIgaXMgaXQgbm93PyIgfSwKLSAgICB9KS5nZXQoKSBjb21wbGV0aW9u
Ol4oQk9PTCBzdWNjZXNzKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKyAgICB9
KTsKKyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6QFtpdGVt
LmdldCgpXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+ICplcnJvcnMpIHsKKyAgICAg
ICAgRVhQRUNUX0VRKGVycm9ycy5jb3VudCwgMVVMKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9y
cy5maXJzdE9iamVjdC5kb21haW4sIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JEb21haW4p
OworICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLmZpcnN0T2JqZWN0LmNvZGUsIF9XS1RleHRNYW5p
cHVsYXRpb25JdGVtRXJyb3JDb250ZW50Q2hhbmdlZCk7CisgICAgICAgIEVYUEVDVF9FUShlcnJv
cnMuZmlyc3RPYmplY3QudXNlckluZm9bX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckl0ZW1L
ZXldLCBpdGVtLmdldCgpKTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKQEAgLTcyOCwxMCArOTY5LDE0IEBAIFRFU1Qo
VGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRmFpbFdoZW5Db250ZW50
SXNSZW1vdmVkKQogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5ib2R5LmlubmVySFRNTCA9ICduZXcgY29udGVudCciXTsKIAogICAgIGRvbmUgPSBm
YWxzZTsKLSAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFu
aXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgeworICAgIF9f
YmxvY2sgYXV0byBpdGVtID0gY3JlYXRlSXRlbShpdGVtc1swXS5pZGVudGlmaWVyLCB7CiAgICAg
ICAgIHsgaXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiaGV5IiB9LAotICAgIH0pLmdl
dCgpIGNvbXBsZXRpb246XihCT09MIHN1Y2Nlc3MpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHN1
Y2Nlc3MpOworICAgIH0pOworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25G
b3JJdGVtczpAW2l0ZW0uZ2V0KCldIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVy
cm9ycykgeworICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLmNvdW50LCAxVUwpOworICAgICAgICBF
WFBFQ1RfRVEoZXJyb3JzLmZpcnN0T2JqZWN0LmRvbWFpbiwgX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuZmlyc3RPYmplY3QuY29k
ZSwgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckNvbnRlbnRDaGFuZ2VkKTsKKyAgICAgICAg
RVhQRUNUX0VRKGVycm9ycy5maXJzdE9iamVjdC51c2VySW5mb1tfV0tUZXh0TWFuaXB1bGF0aW9u
SXRlbUVycm9ySXRlbUtleV0sIGl0ZW0uZ2V0KCkpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAg
ICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwpAQCAtNzY5LDExICsx
MDE0LDE1IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9u
RmFpbFdoZW5Eb2N1bWVudEhhc0JlZW5OYXZpZ2F0ZWRBCiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKIAogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY29tcGxl
dGVUZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0o
aXRlbXNbMF0uaWRlbnRpZmllciwgeworICAgIF9fYmxvY2sgYXV0byBpdGVtID0gY3JlYXRlSXRl
bShpdGVtc1swXS5pZGVudGlmaWVyLCB7CiAgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzBdLmlk
ZW50aWZpZXIsIEAiaGVsbG8sICIgfSwKICAgICAgICAgeyBpdGVtc1swXS50b2tlbnNbMV0uaWRl
bnRpZmllciwgQCJ3b3JsZCIgfSwKLSAgICB9KS5nZXQoKSBjb21wbGV0aW9uOl4oQk9PTCBzdWNj
ZXNzKSB7Ci0gICAgICAgIEVYUEVDVF9GQUxTRShzdWNjZXNzKTsKKyAgICB9KTsKKyAgICBbd2Vi
VmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6QFtpdGVtLmdldCgpXSBjb21w
bGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VR
KGVycm9ycy5jb3VudCwgMVVMKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycy5maXJzdE9iamVj
dC5kb21haW4sIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JEb21haW4pOworICAgICAgICBF
WFBFQ1RfRVEoZXJyb3JzLmZpcnN0T2JqZWN0LmNvZGUsIF9XS1RleHRNYW5pcHVsYXRpb25JdGVt
RXJyb3JJbnZhbGlkSXRlbSk7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuZmlyc3RPYmplY3Qu
dXNlckluZm9bX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckl0ZW1LZXldLCBpdGVtLmdldCgp
KTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAKQEAgLTgwNywxMSArMTA1NiwxNSBA
QCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVu
RXhjbHVzaW9uSXNWaW9sYXRlZCkKICAgICBFWFBFQ1RfU1RSRVEoIldlYktpdHRlbiIsIGl0ZW1z
WzBdLnRva2Vuc1sxXS5jb250ZW50LlVURjhTdHJpbmcpOwogCiAgICAgZG9uZSA9IGZhbHNlOwot
ICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb246KF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtICopY3JlYXRlSXRlbShpdGVtc1swXS5pZGVudGlmaWVyLCB7CisgICAgX19ibG9jayBh
dXRvIGl0ZW0gPSBjcmVhdGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsKICAgICAgICAgeyBp
dGVtc1swXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJIZWxsbywiIH0sCiAgICAgICAgIHsgaXRl
bXNbMF0udG9rZW5zWzFdLmlkZW50aWZpZXIsIEAiV2ViS2l0IiB9LAotICAgIH0pLmdldCgpIGNv
bXBsZXRpb246XihCT09MIHN1Y2Nlc3MpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3Mp
OworICAgIH0pOworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVt
czpAW2l0ZW0uZ2V0KCldIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykg
eworICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLmNvdW50LCAxVUwpOworICAgICAgICBFWFBFQ1Rf
RVEoZXJyb3JzLmZpcnN0T2JqZWN0LmRvbWFpbiwgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJv
ckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuZmlyc3RPYmplY3QuY29kZSwgX1dL
VGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckV4Y2x1c2lvblZpb2xhdGlvbik7CisgICAgICAgIEVY
UEVDVF9FUShlcnJvcnMuZmlyc3RPYmplY3QudXNlckluZm9bX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcnJvckl0ZW1LZXldLCBpdGVtLmdldCgpKTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAg
fV07CiAKQEAgLTg0NiwxMiArMTA5OSwxNiBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBs
ZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVuRXhjbHVkZWRDb250ZW50QXBwZWFyc01vcgogICAg
IEVYUEVDVF9TVFJFUSgiV2ViS2l0dGVuIiwgaXRlbXNbMF0udG9rZW5zWzFdLmNvbnRlbnQuVVRG
OFN0cmluZyk7CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4
dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1z
WzBdLmlkZW50aWZpZXIsIHsKKyAgICBfX2Jsb2NrIGF1dG8gaXRlbSA9IGNyZWF0ZUl0ZW0oaXRl
bXNbMF0uaWRlbnRpZmllciwgewogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1sxXS5pZGVudGlm
aWVyLCBuaWwgfSwKICAgICAgICAgeyBpdGVtc1swXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJI
ZWxsbywiIH0sCiAgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzFdLmlkZW50aWZpZXIsIG5pbCB9
LAotICAgIH0pLmdldCgpIGNvbXBsZXRpb246XihCT09MIHN1Y2Nlc3MpIHsKLSAgICAgICAgRVhQ
RUNUX0ZBTFNFKHN1Y2Nlc3MpOworICAgIH0pOworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRN
YW5pcHVsYXRpb25Gb3JJdGVtczpAW2l0ZW0uZ2V0KCldIGNvbXBsZXRpb246XihOU0FycmF5PE5T
RXJyb3IgKj4gKmVycm9ycykgeworICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLmNvdW50LCAxVUwp
OworICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLmZpcnN0T2JqZWN0LmRvbWFpbiwgX1dLVGV4dE1h
bmlwdWxhdGlvbkl0ZW1FcnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuZmly
c3RPYmplY3QuY29kZSwgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckV4Y2x1c2lvblZpb2xh
dGlvbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuZmlyc3RPYmplY3QudXNlckluZm9bX1dL
VGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckl0ZW1LZXldLCBpdGVtLmdldCgpKTsKICAgICAgICAg
ZG9uZSA9IHRydWU7CiAgICAgfV07CiAKQEAgLTg4NSwxMSArMTE0MiwxMSBAQCBURVNUKFRleHRN
YW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblByZXNlcnZlc0V4Y2x1ZGVkQ29u
dGVudCkKICAgICBFWFBFQ1RfU1RSRVEoIldlYktpdHRlbiIsIGl0ZW1zWzBdLnRva2Vuc1sxXS5j
b250ZW50LlVURjhTdHJpbmcpOwogCiAgICAgZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9j
b21wbGV0ZVRleHRNYW5pcHVsYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRl
SXRlbShpdGVtc1swXS5pZGVudGlmaWVyLCB7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1h
bmlwdWxhdGlvbkZvckl0ZW1zOkBbKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRl
bShpdGVtc1swXS5pZGVudGlmaWVyLCB7CiAgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzBdLmlk
ZW50aWZpZXIsIEAiSGVsbG8sICIgfSwKICAgICAgICAgeyBpdGVtc1swXS50b2tlbnNbMV0uaWRl
bnRpZmllciwgbmlsIH0sCi0gICAgfSkuZ2V0KCkgY29tcGxldGlvbjpeKEJPT0wgc3VjY2Vzcykg
ewotICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICB9KV0gY29tcGxldGlvbjpeKE5T
QXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMsIG5p
bCk7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogCkBAIC05MjUsMTIgKzExODIsMTIg
QEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Eb2VzTm90
Q3JlYXRlTW9yZVRleHRNYW5pcHVsYXRpb24KICAgICB9XTsKIAogICAgIGRvbmUgPSBmYWxzZTsK
LSAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0
aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oZmlyc3RJdGVtLmlkZW50aWZpZXIsIHsKKyAgICBbd2ViVmll
dyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6QFsoX1dLVGV4dE1hbmlwdWxhdGlv
bkl0ZW0gKiljcmVhdGVJdGVtKGZpcnN0SXRlbS5pZGVudGlmaWVyLCB7CiAgICAgICAgIHsgZmly
c3RJdGVtLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAImJhciAiIH0sCiAgICAgICAgIHsgZmlyc3RJ
dGVtLnRva2Vuc1sxXS5pZGVudGlmaWVyLCBAImdhcnBseSIgfSwKICAgICAgICAgeyBmaXJzdEl0
ZW0udG9rZW5zWzJdLmlkZW50aWZpZXIsIEAiIGZvbyIgfSwKLSAgICB9KS5nZXQoKSBjb21wbGV0
aW9uOl4oQk9PTCBzdWNjZXNzKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAg
IH0pXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAg
RVhQRUNUX0VRKGVycm9ycywgbmlsKTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAK
QEAgLTk3MSwxMSArMTIyOCwxMSBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIEluc2VydGluZ0Nv
bnRlbnRJbnRvQWxyZWFkeU1hbmlwdWxhdGVkQ29udGVudERvZXNOb3RDcmVhdAogICAgIH1dOwog
CiAgICAgZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRp
b246KF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRlbShmaXJzdEl0ZW0uaWRlbnRp
ZmllciwgeworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpA
WyhfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oZmlyc3RJdGVtLmlkZW50aWZp
ZXIsIHsKICAgICAgICAgeyBmaXJzdEl0ZW0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiaGVsbG8s
IiB9LAogICAgICAgICB7IGZpcnN0SXRlbS50b2tlbnNbMV0uaWRlbnRpZmllciwgQCIgd29ybGQi
IH0sCi0gICAgfSkuZ2V0KCkgY29tcGxldGlvbjpeKEJPT0wgc3VjY2VzcykgewotICAgICAgICBF
WFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICB9KV0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJv
ciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMsIG5pbCk7CiAgICAgICAg
IGRvbmUgPSB0cnVlOwogICAgIH1dOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>392323</attachid>
            <date>2020-03-03 13:47:18 -0800</date>
            <delta_ts>2020-03-03 15:24:34 -0800</delta_ts>
            <desc>Fixed build</desc>
            <filename>bug-208406-20200303134717.patch</filename>
            <type>text/plain</type>
            <size>69909</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmIzOTUwNGI5ZDlmNjFj
MDk1NmQ4MjE5MzVlMzk1ODdjNTFhNGM4Ny4uZWYyZTZkNTFlOTY3NDA0NDQ1NzIzZmM3NWYxMDFj
NWU0NGMwOTRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTAzLTAyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEJhdGNoIG9ic2VydmF0aW9u
cyBhbmQgY29tcGxldGlvbnMgb2YgdGV4dCBtYW5pcHVsYXRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXIgdG8gbm90aWZ5IGFuZCByZXBsYWNlIG11bHRpcGxlIHBhcmFn
cmFwaHMgYXQgb25jZS4KKworICAgICAgICBUbyBhbGxvdyBzb21lIGZvcm0gb2YgcGFyYWxsZWxp
c20gZm9yIHRoZSBjbGllbnQgYXBwbGljYXRpb24gdG8gcHJvY2VzcyBpdGVtcyB3aGlsZSBXZWJD
b250ZW50J3MgbWFpbiB0aHJlYWQKKyAgICAgICAgaXMgZmluZGluZyBwYXJhZ3JhcGhzLCB3ZSBu
b3RpZnkgdGhlIGNsaWVudCBldmVyeSAxMjggaXRlbXMuCisKKyAgICAgICAgVGVzdHM6IFRlc3RX
ZWJLaXRBUEkuVGV4dE1hbmlwdWxhdGlvbi5TdGFydFRleHRNYW5pcHVsYXRpb25TdXBwb3J0c0xl
Z2FjeURlbGVnYXRlQ2FsbGJhY2s6IEFkZGVkLgorICAgICAgICAgICAgICAgVGVzdFdlYktpdEFQ
SS5UZXh0TWFuaXB1bGF0aW9uLkxlZ2FjeUNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblJlcGxhY2VT
aW1wbGVTaW5nbGVQYXJhZ3JhcGg6IEFkZGVkLgorICAgICAgICAgICAgICAgVGVzdFdlYktpdEFQ
SS5UZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblJlcGxhY2VNdWx0aXBs
ZVNpbXBsZVBhcmFncmFwaHNBdE9uY2U6IEFkZGVkLgorICAgICAgICAgICAgICAgVGVzdFdlYktp
dEFQSS5UZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblNob3VsZEJhdGNo
SXRlbUNhbGxiYWNrOiBBZGRlZC4KKyAgICAgICAgICAgICAgIFRlc3RXZWJLaXRBUEkuVGV4dE1h
bmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5pcHVsYXRpb25GYWlsV2hlbkl0ZW1JZGVudGlmaWVy
SXNEdXBsaWNhdGVkOiBBZGRlZC4KKyAgICAgICAgICAgICAgIFRlc3RXZWJLaXRBUEkuVGV4dE1h
bmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5pcHVsYXRpb25DYW5IYW5kbGVTdWJzZXRPZkl0ZW1z
VG9GYWlsOiBBZGRlZC4KKworICAgICAgICAqIGVkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
OnN0YXJ0T2JzZXJ2aW5nUGFyYWdyYXBocyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVPYnNlcnZhcnRpb25VcGRhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OmFkZEl0ZW0pOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpmbHVzaFBlbmRpbmdJ
dGVtc0ZvckNhbGxiYWNrKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6Y29tcGxldGVNYW5pcHVsYXRpb24pOiBBcHBseSBlYWNoIE1hbmlwdWxh
dGlvbkl0ZW0gY2hhbmdlcyBhbmQgcmV0dXJuCisgICAgICAgIGFuIGFycmF5IGZvciBNYW5pcHVs
YXRpb25GYWlsdXJlIGZvciB0aG9zZSB0aGF0IGZhaWxlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpyZXBsYWNlKToKKyAgICAgICAgKiBlZGl0aW5nL1Rl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbSk6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmVUeXBl
KTogUmVuYW1lZCBmcm9tIE1hbmlwdWxhdGlvblJlc3VsdC4KKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWlsdXJlKTogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9u
SXRlbURhdGEpOiBSZW5hbWVkIGZyb20gTWFuaXB1bGF0aW9uSXRlbS4gCisgICAgICAgIChXZWJD
b3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbTo6ZW5jb2Rl
IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6TWFuaXB1bGF0aW9uSXRlbTo6ZGVjb2RlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZTo6ZW5jb2Rl
IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZTo6ZGVjb2RlKTogQWRkZWQuCisKIDIwMjAtMDItMjgg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4gYW5kIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBDbGVhciBGb250RGF0YWJhc2Ugd2hlbiBsb3ctbWVt
b3J5LXdhcm5pbmcgaGFwcGVucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0MGE3NTcxNGViZTg0ZDNjYTM1NTA2MzY2
Mjg4YWVkYzI2ZjJjZGU0Li4wNjBlYjIzYzdjNDEwYzQ1ZjU2YTBlN2U4Y2EzY2IzZWQxZTg4YzA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDIwLTAzLTAyICBSeW9zdWtlIE5pd2EgIDxy
bml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEJhdGNoIG9ic2VydmF0aW9ucyBhbmQgY29tcGxl
dGlvbnMgb2YgdGV4dCBtYW5pcHVsYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgV0tXZWJWaWV3J3MgU1BJIGZvciB0ZXh0IG1hbmlw
dWxhdGlvbnMgdG8gYmF0Y2ggb2JzZXJ2YXRpb25zIGFuZCByZXBsYWNlbWVudHMgb2YgbXVsdGlw
bGUgcGFyYWdyYXBocworICAgICAgICBhdCBvbmNlIGluc3RlYWQgb2Ygb2JzZXJ2aW5nIGFuZCBy
ZXBsYWNpbmcgb25lIHBhcmFncmFwaCBhdCBhIHRpbWUuCisKKyAgICAgICAgX1dLVGV4dE1hbmlw
dWxhdGlvbkRlbGVnYXRlIG5vdyBoYXMgYSBuZXcgY2FsbGJhY2ssIGRpZEZpbmRUZXh0TWFuaXB1
bGF0aW9uSXRlbXMsIHdoaWNoIGdldHMgYW4gYXJyYXkgb2YKKyAgICAgICAgX1dLVGV4dE1hbmlw
dWxhdGlvbkl0ZW0gaW5zdGVhZCBvZiBhIHNpbmdsZSBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSBs
aWtlIGRpZEZpbmRUZXh0TWFuaXB1bGF0aW9uSXRlbSwKKyAgICAgICAgYW5kIFdLV2ViVmlldydz
IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtcyByZXBsYWNlcyBtdWx0aXBsZSBwYXJh
Z3JhcGhzIGF0IG9uY2UsIGFuZCBnaXZlcyBhbiBhcnJheQorICAgICAgICBvZiBOU0Vycm9yIGZv
ciBlYWNoIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtIHRoYXQgZmFpbGVkIHRvIHJlcGxhY2UgdGhl
IHJlc3BlY3RpdmUgY29udGVudC4KKworICAgICAgICBUZXN0czogVGVzdFdlYktpdEFQSS5UZXh0
TWFuaXB1bGF0aW9uLlN0YXJ0VGV4dE1hbmlwdWxhdGlvblN1cHBvcnRzTGVnYWN5RGVsZWdhdGVD
YWxsYmFjazogQWRkZWQuCisgICAgICAgICAgICAgICBUZXN0V2ViS2l0QVBJLlRleHRNYW5pcHVs
YXRpb24uTGVnYWN5Q29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZVNpbXBsZVNpbmdsZVBh
cmFncmFwaDogQWRkZWQuCisgICAgICAgICAgICAgICBUZXN0V2ViS2l0QVBJLlRleHRNYW5pcHVs
YXRpb24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZU11bHRpcGxlU2ltcGxlUGFyYWdy
YXBoc0F0T25jZTogQWRkZWQuCisgICAgICAgICAgICAgICBUZXN0V2ViS2l0QVBJLlRleHRNYW5p
cHVsYXRpb24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uU2hvdWxkQmF0Y2hJdGVtQ2FsbGJhY2s6
IEFkZGVkLgorICAgICAgICAgICAgICAgVGVzdFdlYktpdEFQSS5UZXh0TWFuaXB1bGF0aW9uLkNv
bXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVuSXRlbUlkZW50aWZpZXJJc0R1cGxpY2F0ZWQ6
IEFkZGVkLgorICAgICAgICAgICAgICAgVGVzdFdlYktpdEFQSS5UZXh0TWFuaXB1bGF0aW9uLkNv
bXBsZXRlVGV4dE1hbmlwdWxhdGlvbkNhbkhhbmRsZVN1YnNldE9mSXRlbXNUb0ZhaWw6IEFkZGVk
LgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBfc3RhcnRUZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25maWd1cmF0aW9uOmNv
bXBsZXRpb246XSk6CisgICAgICAgIChjb3JlVGV4dE1hbmlwdWxhdGlvbkl0ZW1JZGVudGlmaWVy
RnJvbVN0cmluZyk6IEFkZGVkLgorICAgICAgICAoY29yZVRleHRNYW5pcHVsYXRpb25Ub2tlbklk
ZW50aWZpZXJGcm9tU3RyaW5nKTogQWRkZWQuCisgICAgICAgICgtW1dLV2ViVmlldyBfY29tcGxl
dGVUZXh0TWFuaXB1bGF0aW9uOmNvbXBsZXRpb246XSk6IFVwZGF0ZWQgdG8gd29yayB3aXRoIHRo
ZSBuZXcgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIKKyAgICAgICAgaW50ZXJmYWNlLgorICAg
ICAgICAobWFrZUZhaWx1cmVTZXRGb3JBbGxUZXh0TWFuaXB1bGF0aW9uSXRlbXMpOiBBZGRlZC4K
KyAgICAgICAgKHdrVGV4dE1hbmlwdWxhdGlvbkVycm9ycyk6IEFkZGVkLgorICAgICAgICAoLVtX
S1dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOmNvbXBsZXRpb246XSk6
IEFkZGVkLiBUaGlzIGlzIHRoZSBuZXcgU1BJLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tUZXh0TWFuaXB1bGF0aW9uSXRlbS5oOgorICAgICAgICAoX1dLVGV4dE1hbmlwdWxhdGlv
bkl0ZW1FcnJvckRvbWFpbik6IEFkZGVkLgorICAgICAgICAoX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcnJvckNvZGUpOiBBZGRlZC4KKyAgICAgICAgKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJy
b3JJdGVtS2V5KTogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0
TWFuaXB1bGF0aW9uSXRlbS5tbToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN0YXJ0VGV4dE1hbmlw
dWxhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wbGV0ZVRleHRNYW5pcHVs
YXRpb24pOiBVcGRhdGVkIHBlciBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlciBpbnRlcmZhY2Ug
Y2hhbmdlLgorICAgICAgICBUbyBhdm9pZCBoYXZpbmcgdG8gZHVwbGljYXRlIHRoZSBjb2RlIHRv
IGNyZWF0ZSBhIHZlY3RvciBvZiBNYW5pcHVsYXRpb25GYWlsdXJlLCB0aGlzIGZ1bmN0aW9uJ3Mg
Y29tcGxldGlvbgorICAgICAgICBoYW5kbGVyIGhhcyBhIGJvb2xlYW4gaW5kaWNhdGluZyB0aGF0
IGFsbCByZXBsYWNlbWVudHMgaGFkIGZhaWxlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluOgorCiAyMDIwLTAyLTI4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSBhY2Nlc3MgdG8gdGhlICJjb20uYXBwbGUubHNkLm9w
ZW4iIG1hY2ggc2VydmljZSBmcm9tIHRoZSBXZWJDb250ZW50IHByb2Nlc3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKaW5k
ZXggZDA1YWY0NGZkOGVhYTM0ZThiMzI0MGJjODRjNzc1MGJkNDA2M2E2Yy4uY2M1OTNlMDZlYWRm
YmNmOGYwMjVmNDkyYjhhMzZkYTE5YzM5MDYyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTEzNiw2ICsxMzYs
NyBAQCB2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpzdGFydE9ic2VydmluZ1BhcmFn
cmFwaHMoTWFuaXB1bGF0aW9uSXRlbUNhbGxiYQogICAgIFZpc2libGVQb3NpdGlvbiBlbmQgPSBs
YXN0UG9zaXRpb25Jbk5vZGUobV9kb2N1bWVudC5nZXQoKSk7CiAKICAgICBvYnNlcnZlUGFyYWdy
YXBocyhzdGFydCwgZW5kKTsKKyAgICBmbHVzaFBlbmRpbmdJdGVtc0ZvckNhbGxiYWNrKCk7CiB9
CiAKIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Om9ic2VydmVQYXJhZ3JhcGhzKFZp
c2libGVQb3NpdGlvbiYgc3RhcnQsIFZpc2libGVQb3NpdGlvbiYgZW5kKQpAQCAtMjU4LDMwICsy
NTksNjAgQEAgdm9pZCBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6c2NoZWR1bGVPYnNlcnZh
cnRpb25VcGRhdGUoKQogCiAgICAgICAgICAgICBjb250cm9sbGVyLT5vYnNlcnZlUGFyYWdyYXBo
cyhzdGFydCwgZW5kKTsKICAgICAgICAgfQorICAgICAgICBjb250cm9sbGVyLT5mbHVzaFBlbmRp
bmdJdGVtc0ZvckNhbGxiYWNrKCk7CiAgICAgfSk7CiB9CiAKIHZvaWQgVGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXI6OmFkZEl0ZW0oY29uc3QgUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcGgsIGNv
bnN0IFBvc2l0aW9uJiBlbmRPZlBhcmFncmFwaCwgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYm
IHRva2VucykKIHsKKyAgICBjb25zdCB1bnNpZ25lZCBpdGVtQ2FsbGJhY2tCYXRjaGluZ1NpemUg
PSAxMjg7CisKICAgICBBU1NFUlQobV9kb2N1bWVudCk7Ci0gICAgYXV0byByZXN1bHQgPSBtX2l0
ZW1zLmFkZChtX2l0ZW1JZGVudGlmaWVyLmdlbmVyYXRlKCksIE1hbmlwdWxhdGlvbkl0ZW0geyBz
dGFydE9mUGFyYWdyYXBoLCBlbmRPZlBhcmFncmFwaCwgV1RGTW92ZSh0b2tlbnMpIH0pOwotICAg
IG1fY2FsbGJhY2soKm1fZG9jdW1lbnQsIHJlc3VsdC5pdGVyYXRvci0+a2V5LCByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLnRva2Vucyk7CisgICAgYXV0byBuZXdJRCA9IG1faXRlbUlkZW50aWZpZXIu
Z2VuZXJhdGUoKTsKKyAgICBtX3BlbmRpbmdJdGVtc0ZvckNhbGxiYWNrLmFwcGVuZChNYW5pcHVs
YXRpb25JdGVtIHsKKyAgICAgICAgbmV3SUQsCisgICAgICAgIHRva2Vucy5tYXAoW10oYXV0byYg
dG9rZW4pIHsgcmV0dXJuIHRva2VuOyB9KQorICAgIH0pOworICAgIG1faXRlbXMuYWRkKG5ld0lE
LCBNYW5pcHVsYXRpb25JdGVtRGF0YSB7IHN0YXJ0T2ZQYXJhZ3JhcGgsIGVuZE9mUGFyYWdyYXBo
LCBXVEZNb3ZlKHRva2VucykgfSk7CisgICAgaWYgKG1fcGVuZGluZ0l0ZW1zRm9yQ2FsbGJhY2su
c2l6ZSgpID49IGl0ZW1DYWxsYmFja0JhdGNoaW5nU2l6ZSkgeworICAgICAgICBtX2NhbGxiYWNr
KCptX2RvY3VtZW50LCBtX3BlbmRpbmdJdGVtc0ZvckNhbGxiYWNrKTsKKyAgICAgICAgbV9wZW5k
aW5nSXRlbXNGb3JDYWxsYmFjay5jbGVhcigpOworICAgIH0KKworfQorCit2b2lkIFRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpmbHVzaFBlbmRpbmdJdGVtc0ZvckNhbGxiYWNrKCkKK3sKKyAg
ICBtX2NhbGxiYWNrKCptX2RvY3VtZW50LCBtX3BlbmRpbmdJdGVtc0ZvckNhbGxiYWNrKTsKKyAg
ICBtX3BlbmRpbmdJdGVtc0ZvckNhbGxiYWNrLmNsZWFyKCk7CiB9CiAKLWF1dG8gVGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXI6OmNvbXBsZXRlTWFuaXB1bGF0aW9uKEl0ZW1JZGVudGlmaWVyIGl0
ZW1JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8TWFuaXB1bGF0aW9uVG9rZW4+JiByZXBsYWNlbWVu
dFRva2VucykgLT4gTWFuaXB1bGF0aW9uUmVzdWx0CithdXRvIFRleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyOjpjb21wbGV0ZU1hbmlwdWxhdGlvbihjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+JiBjb21wbGV0aW9uSXRlbXMp
IC0+IFZlY3RvcjxNYW5pcHVsYXRpb25GYWlsdXJlPgogewotICAgIGlmICghaXRlbUlkZW50aWZp
ZXIpCi0gICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OkludmFsaWRJdGVtOworICAg
IFZlY3RvcjxNYW5pcHVsYXRpb25GYWlsdXJlPiBmYWlsdXJlczsKKyAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgY29tcGxldGlvbkl0ZW1zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGF1dG8m
IGl0ZW1Ub0NvbXBsZXRlID0gY29tcGxldGlvbkl0ZW1zW2ldOworICAgICAgICBhdXRvIGlkZW50
aWZpZXIgPSBpdGVtVG9Db21wbGV0ZS5pZGVudGlmaWVyOworICAgICAgICBpZiAoIWlkZW50aWZp
ZXIpIHsKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChNYW5pcHVsYXRpb25GYWlsdXJlIHsg
aWRlbnRpZmllciwgaSwgTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkludmFsaWRJdGVtIH0pOwor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAotICAgIGF1dG8gaXRlbUl0ZXJhdG9y
ID0gbV9pdGVtcy5maW5kKGl0ZW1JZGVudGlmaWVyKTsKLSAgICBpZiAoaXRlbUl0ZXJhdG9yID09
IG1faXRlbXMuZW5kKCkpCi0gICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OkludmFs
aWRJdGVtOworICAgICAgICBhdXRvIGl0ZW1EYXRhSXRlcmF0b3IgPSBtX2l0ZW1zLmZpbmQoaWRl
bnRpZmllcik7CisgICAgICAgIGlmIChpdGVtRGF0YUl0ZXJhdG9yID09IG1faXRlbXMuZW5kKCkp
IHsKKyAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChNYW5pcHVsYXRpb25GYWlsdXJlIHsgaWRl
bnRpZmllciwgaSwgTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkludmFsaWRJdGVtIH0pOworICAg
ICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KIAotICAgIE1hbmlwdWxhdGlvbkl0ZW0gaXRl
bTsKLSAgICBzdGQ6OmV4Y2hhbmdlKGl0ZW0sIGl0ZW1JdGVyYXRvci0+dmFsdWUpOwotICAgIG1f
aXRlbXMucmVtb3ZlKGl0ZW1JdGVyYXRvcik7CisgICAgICAgIE1hbmlwdWxhdGlvbkl0ZW1EYXRh
IGl0ZW1EYXRhOworICAgICAgICBzdGQ6OmV4Y2hhbmdlKGl0ZW1EYXRhLCBpdGVtRGF0YUl0ZXJh
dG9yLT52YWx1ZSk7CisgICAgICAgIG1faXRlbXMucmVtb3ZlKGl0ZW1EYXRhSXRlcmF0b3IpOwog
Ci0gICAgcmV0dXJuIHJlcGxhY2UoaXRlbSwgcmVwbGFjZW1lbnRUb2tlbnMpOworICAgICAgICBh
dXRvIGZhaWx1cmVPck51bGxvcHQgPSByZXBsYWNlKGl0ZW1EYXRhLCBpdGVtVG9Db21wbGV0ZS50
b2tlbnMpOworICAgICAgICBpZiAoZmFpbHVyZU9yTnVsbG9wdCkKKyAgICAgICAgICAgIGZhaWx1
cmVzLmFwcGVuZChNYW5pcHVsYXRpb25GYWlsdXJlIHsgaWRlbnRpZmllciwgaSwgKmZhaWx1cmVP
ck51bGxvcHQgfSk7CisgICAgfQorICAgIHJldHVybiBmYWlsdXJlczsKIH0KIAogc3RydWN0IFRv
a2VuRXhjaGFuZ2VEYXRhIHsKQEAgLTMwMSwxMCArMzMyLDEwIEBAIHN0cnVjdCBOb2RlSW5zZXJ0
aW9uIHsKICAgICBSZWY8Tm9kZT4gY2hpbGQ7CiB9OwogCi1hdXRvIFRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpyZXBsYWNlKGNvbnN0IE1hbmlwdWxhdGlvbkl0ZW0mIGl0ZW0sIGNvbnN0IFZl
Y3RvcjxNYW5pcHVsYXRpb25Ub2tlbj4mIHJlcGxhY2VtZW50VG9rZW5zKSAtPiBNYW5pcHVsYXRp
b25SZXN1bHQKK2F1dG8gVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OnJlcGxhY2UoY29uc3Qg
TWFuaXB1bGF0aW9uSXRlbURhdGEmIGl0ZW0sIGNvbnN0IFZlY3RvcjxNYW5pcHVsYXRpb25Ub2tl
bj4mIHJlcGxhY2VtZW50VG9rZW5zKSAtPiBPcHRpb25hbDxNYW5pcHVsYXRpb25GYWlsdXJlVHlw
ZT4KIHsKICAgICBpZiAoaXRlbS5zdGFydC5pc09ycGhhbigpIHx8IGl0ZW0uZW5kLmlzT3JwaGFu
KCkpCi0gICAgICAgIHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OkNvbnRlbnRDaGFuZ2VkOwor
ICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkNvbnRlbnRDaGFuZ2VkOwog
CiAgICAgVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yIHsgaXRlbS5zdGFydCwgaXRlbS5lbmQgfTsKICAg
ICBzaXplX3QgY3VycmVudFRva2VuSW5kZXggPSAwOwpAQCAtMzE0LDEwICszNDUsMTAgQEAgYXV0
byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25J
dGVtJiBpdGVtLCBjb25zdCBWZWMKICAgICB3aGlsZSAoIWl0ZXJhdG9yLmF0RW5kKCkpIHsKICAg
ICAgICAgYXV0byBzdHJpbmcgPSBpdGVyYXRvci50ZXh0KCkudG9TdHJpbmcoKTsKICAgICAgICAg
aWYgKGN1cnJlbnRUb2tlbkluZGV4ID49IGl0ZW0udG9rZW5zLnNpemUoKSkKLSAgICAgICAgICAg
IHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OkNvbnRlbnRDaGFuZ2VkOworICAgICAgICAgICAg
cmV0dXJuIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOjpDb250ZW50Q2hhbmdlZDsKICAgICAgICAg
YXV0byYgY3VycmVudFRva2VuID0gaXRlbS50b2tlbnNbY3VycmVudFRva2VuSW5kZXhdOwogICAg
ICAgICBpZiAoaXRlcmF0b3IudGV4dCgpICE9IGN1cnJlbnRUb2tlbi5jb250ZW50KQotICAgICAg
ICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvblJlc3VsdDo6Q29udGVudENoYW5nZWQ7CisgICAgICAg
ICAgICByZXR1cm4gTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkNvbnRlbnRDaGFuZ2VkOwogCiAg
ICAgICAgIGF1dG8gY3VycmVudE5vZGUgPSBtYWtlUmVmUHRyKGl0ZXJhdG9yLm5vZGUoKSk7CiAg
ICAgICAgIHRva2VuRXhjaGFuZ2VNYXAuc2V0KGN1cnJlbnRUb2tlbi5pZGVudGlmaWVyLCBUb2tl
bkV4Y2hhbmdlRGF0YSB7IGN1cnJlbnROb2RlLmNvcHlSZWYoKSwgY3VycmVudFRva2VuLmNvbnRl
bnQsIGN1cnJlbnRUb2tlbi5pc0V4Y2x1ZGVkIH0pOwpAQCAtMzU4LDE3ICszODksMTcgQEAgYXV0
byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25J
dGVtJiBpdGVtLCBjb25zdCBWZWMKICAgICBmb3IgKGF1dG8mIG5ld1Rva2VuIDogcmVwbGFjZW1l
bnRUb2tlbnMpIHsKICAgICAgICAgYXV0byBpdCA9IHRva2VuRXhjaGFuZ2VNYXAuZmluZChuZXdU
b2tlbi5pZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGl0ID09IHRva2VuRXhjaGFuZ2VNYXAuZW5k
KCkpCi0gICAgICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uUmVzdWx0OjpJbnZhbGlkVG9rZW47
CisgICAgICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkludmFsaWRUb2tl
bjsKIAogICAgICAgICBhdXRvJiBleGNoYW5nZURhdGEgPSBpdC0+dmFsdWU7CiAKICAgICAgICAg
UmVmUHRyPE5vZGU+IGNvbnRlbnROb2RlOwogICAgICAgICBpZiAoZXhjaGFuZ2VEYXRhLmlzRXhj
bHVkZWQpIHsKICAgICAgICAgICAgIGlmIChleGNoYW5nZURhdGEuaXNDb25zdW1lZCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uUmVzdWx0OjpFeGNsdXNpb25WaW9sYXRpb247
CisgICAgICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOjpFeGNsdXNp
b25WaW9sYXRpb247CiAgICAgICAgICAgICBleGNoYW5nZURhdGEuaXNDb25zdW1lZCA9IHRydWU7
CiAgICAgICAgICAgICBpZiAoIW5ld1Rva2VuLmNvbnRlbnQuaXNOdWxsKCkgJiYgbmV3VG9rZW4u
Y29udGVudCAhPSBleGNoYW5nZURhdGEub3JpZ2luYWxDb250ZW50KQotICAgICAgICAgICAgICAg
IHJldHVybiBNYW5pcHVsYXRpb25SZXN1bHQ6OkV4Y2x1c2lvblZpb2xhdGlvbjsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6OkV4Y2x1c2lvblZpb2xhdGlv
bjsKICAgICAgICAgICAgIGNvbnRlbnROb2RlID0gVGV4dDo6Y3JlYXRlKGNvbW1vbkFuY2VzdG9y
LT5kb2N1bWVudCgpLCBleGNoYW5nZURhdGEub3JpZ2luYWxDb250ZW50KTsKICAgICAgICAgfSBl
bHNlCiAgICAgICAgICAgICBjb250ZW50Tm9kZSA9IFRleHQ6OmNyZWF0ZShjb21tb25BbmNlc3Rv
ci0+ZG9jdW1lbnQoKSwgbmV3VG9rZW4uY29udGVudCk7CkBAIC00MjMsNyArNDU0LDcgQEAgYXV0
byBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25J
dGVtJiBpdGVtLCBjb25zdCBWZWMKICAgICAgICAgICAgIG1fbWFuaXB1bGF0ZWRFbGVtZW50cy5h
ZGQoZG93bmNhc3Q8RWxlbWVudD4oaW5zZXJ0aW9uLmNoaWxkLmdldCgpKSk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIE1hbmlwdWxhdGlvblJlc3VsdDo6U3VjY2VzczsKKyAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1RleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgKaW5kZXggMzY0YzNiOGU2
YjYyMWE4Zjg0YWIyZjk3MzYxZWM0ZmEwYTVkZmU1Ni4uNWY2MjI5YWMzODVmYTIzZTljZTk1Nzgx
YmYxZTMyZWVkY2Y2ZGM5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaApAQCAtNTksNiArNTksMTQgQEAgcHVibGljOgogICAg
IGVudW0gSXRlbUlkZW50aWZpZXJUeXBlIHsgfTsKICAgICB1c2luZyBJdGVtSWRlbnRpZmllciA9
IE9iamVjdElkZW50aWZpZXI8SXRlbUlkZW50aWZpZXJUeXBlPjsKIAorICAgIHN0cnVjdCBNYW5p
cHVsYXRpb25JdGVtIHsKKyAgICAgICAgSXRlbUlkZW50aWZpZXIgaWRlbnRpZmllcjsKKyAgICAg
ICAgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiB0b2tlbnM7CisKKyAgICAgICAgdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OworICAgICAgICB0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0aW9uYWw8TWFuaXB1bGF0aW9uSXRlbT4gZGVj
b2RlKERlY29kZXImKTsKKyAgICB9OworCiAgICAgc3RydWN0IEV4Y2x1c2lvblJ1bGUgewogICAg
ICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgRXhjbHVkZSwgSW5jbHVkZSB9OwogCkBA
IC05Myw0MCArMTAxLDUzIEBAIHB1YmxpYzoKICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rl
cj4gc3RhdGljIE9wdGlvbmFsPEV4Y2x1c2lvblJ1bGU+IGRlY29kZShEZWNvZGVyJik7CiAgICAg
fTsKIAotICAgIHVzaW5nIE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248
dm9pZChEb2N1bWVudCYsIEl0ZW1JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8TWFuaXB1bGF0aW9u
VG9rZW4+Jik+OworICAgIHVzaW5nIE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayA9IFdURjo6RnVu
Y3Rpb248dm9pZChEb2N1bWVudCYsIGNvbnN0IFZlY3RvcjxNYW5pcHVsYXRpb25JdGVtPiYpPjsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0YXJ0T2JzZXJ2aW5nUGFyYWdyYXBocyhNYW5pcHVs
YXRpb25JdGVtQ2FsbGJhY2smJiwgVmVjdG9yPEV4Y2x1c2lvblJ1bGU+JiYgPSB7IH0pOwogCiAg
ICAgdm9pZCBkaWRDcmVhdGVSZW5kZXJlckZvckVsZW1lbnQoRWxlbWVudCYpOwogCi0gICAgZW51
bSBjbGFzcyBNYW5pcHVsYXRpb25SZXN1bHQgOiB1aW50OF90IHsKLSAgICAgICAgU3VjY2VzcywK
KyAgICBlbnVtIGNsYXNzIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlIDogdWludDhfdCB7CiAgICAg
ICAgIENvbnRlbnRDaGFuZ2VkLAogICAgICAgICBJbnZhbGlkSXRlbSwKICAgICAgICAgSW52YWxp
ZFRva2VuLAogICAgICAgICBFeGNsdXNpb25WaW9sYXRpb24sCiAgICAgfTsKLSAgICBXRUJDT1JF
X0VYUE9SVCBNYW5pcHVsYXRpb25SZXN1bHQgY29tcGxldGVNYW5pcHVsYXRpb24oSXRlbUlkZW50
aWZpZXIsIGNvbnN0IFZlY3RvcjxNYW5pcHVsYXRpb25Ub2tlbj4mKTsKKworICAgIHN0cnVjdCBN
YW5pcHVsYXRpb25GYWlsdXJlIHsKKyAgICAgICAgSXRlbUlkZW50aWZpZXIgaWRlbnRpZmllcjsK
KyAgICAgICAgdWludDY0X3QgaW5kZXg7CisgICAgICAgIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBl
IHR5cGU7CisKKyAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5j
b2RlciYpIGNvbnN0OworICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgT3B0
aW9uYWw8TWFuaXB1bGF0aW9uRmFpbHVyZT4gZGVjb2RlKERlY29kZXImKTsKKyAgICB9OworCisg
ICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPE1hbmlwdWxhdGlvbkZhaWx1cmU+IGNvbXBsZXRlTWFu
aXB1bGF0aW9uKGNvbnN0IFZlY3RvcjxNYW5pcHVsYXRpb25JdGVtPiYpOwogCiBwcml2YXRlOgog
ICAgIGJvb2wgaXNJbk1hbmlwdWxhdGVkRWxlbWVudChFbGVtZW50Jik7CiAgICAgdm9pZCBvYnNl
cnZlUGFyYWdyYXBocyhWaXNpYmxlUG9zaXRpb24mIHN0YXJ0LCBWaXNpYmxlUG9zaXRpb24mIGVu
ZCk7CiAgICAgdm9pZCBzY2hlZHVsZU9ic2VydmFydGlvblVwZGF0ZSgpOwogCi0gICAgc3RydWN0
IE1hbmlwdWxhdGlvbkl0ZW0geworICAgIHN0cnVjdCBNYW5pcHVsYXRpb25JdGVtRGF0YSB7CiAg
ICAgICAgIFBvc2l0aW9uIHN0YXJ0OwogICAgICAgICBQb3NpdGlvbiBlbmQ7CiAgICAgICAgIFZl
Y3RvcjxNYW5pcHVsYXRpb25Ub2tlbj4gdG9rZW5zOwogICAgIH07CiAKICAgICB2b2lkIGFkZEl0
ZW0oY29uc3QgUG9zaXRpb24mIHN0YXJ0T2ZQYXJhZ3JhcGgsIGNvbnN0IFBvc2l0aW9uJiBlbmRP
ZlBhcmFncmFwaCwgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYmKTsKLSAgICBNYW5pcHVsYXRp
b25SZXN1bHQgcmVwbGFjZShjb25zdCBNYW5pcHVsYXRpb25JdGVtJiwgY29uc3QgVmVjdG9yPE1h
bmlwdWxhdGlvblRva2VuPiYpOworICAgIHZvaWQgZmx1c2hQZW5kaW5nSXRlbXNGb3JDYWxsYmFj
aygpOworICAgIE9wdGlvbmFsPE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlPiByZXBsYWNlKGNvbnN0
IE1hbmlwdWxhdGlvbkl0ZW1EYXRhJiwgY29uc3QgVmVjdG9yPE1hbmlwdWxhdGlvblRva2VuPiYp
OwogCiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBXZWFrSGFzaFNldDxF
bGVtZW50PiBtX2VsZW1lbnRzV2l0aE5ld1JlbmRlcmVyOwogICAgIFdlYWtIYXNoU2V0PEVsZW1l
bnQ+IG1fbWFuaXB1bGF0ZWRFbGVtZW50czsKKwogICAgIE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFj
ayBtX2NhbGxiYWNrOworICAgIFZlY3RvcjxNYW5pcHVsYXRpb25JdGVtPiBtX3BlbmRpbmdJdGVt
c0ZvckNhbGxiYWNrOworCiAgICAgVmVjdG9yPEV4Y2x1c2lvblJ1bGU+IG1fZXhjbHVzaW9uUnVs
ZXM7Ci0gICAgSGFzaE1hcDxJdGVtSWRlbnRpZmllciwgTWFuaXB1bGF0aW9uSXRlbT4gbV9pdGVt
czsKKyAgICBIYXNoTWFwPEl0ZW1JZGVudGlmaWVyLCBNYW5pcHVsYXRpb25JdGVtRGF0YT4gbV9p
dGVtczsKICAgICBJdGVtSWRlbnRpZmllciBtX2l0ZW1JZGVudGlmaWVyOwogICAgIFRva2VuSWRl
bnRpZmllciBtX3Rva2VuSWRlbnRpZmllcjsKIH07CkBAIC0xNTAsNiArMTcxLDIzIEBAIE9wdGlv
bmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4gVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KK3ZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlv
bkl0ZW06OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwg
aWRlbnRpZmllciA8PCB0b2tlbnM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitPcHRp
b25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4gVGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW06OmRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQoreworICAgIE1hbmlwdWxhdGlvbkl0ZW0gcmVzdWx0OworICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0LmlkZW50aWZpZXIpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnRva2VucykpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KIHZvaWQgVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU6
OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogewpAQCAtMjE0LDYgKzI1MiwyNSBAQCBP
cHRpb25hbDxUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6RXhjbHVzaW9uUnVsZTo6Q2xhc3NS
dWxlPiBUZXh0TWFuaXB1bGF0aW9uQwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3RlbXBsYXRl
PGNsYXNzIEVuY29kZXI+Cit2b2lkIFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVs
YXRpb25GYWlsdXJlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNv
ZGVyIDw8IGlkZW50aWZpZXIgPDwgaW5kZXggPDwgdHlwZTsKK30KKwordGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4KK09wdGlvbmFsPFRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRp
b25GYWlsdXJlPiBUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVy
ZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgTWFuaXB1bGF0aW9uRmFpbHVyZSBy
ZXN1bHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaWRlbnRpZmllcikpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
aW5kZXgpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LnR5cGUpKQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogbmFtZXNwYWNlIFdU
RiB7CkBAIC0yMjcsMTUgKzI4NCwxNCBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdl
YkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpFeGNsdXNpb25SdWxlOgogICAgID47
CiB9OwogCi10ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OlRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25SZXN1bHQ+IHsKLSAgICB1c2luZyBNYW5pcHVs
YXRpb25SZXN1bHQgPSBXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1
bGF0aW9uUmVzdWx0OwordGVtcGxhdGU8PiBzdHJ1Y3QgRW51bVRyYWl0czxXZWJDb3JlOjpUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU+IHsKKyAgICB1
c2luZyBNYW5pcHVsYXRpb25GYWlsdXJlVHlwZSA9IFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWlsdXJlVHlwZTsKICAgICB1c2luZyB2YWx1ZXMgPSBF
bnVtVmFsdWVzPAotICAgICAgICBNYW5pcHVsYXRpb25SZXN1bHQsCi0gICAgICAgIE1hbmlwdWxh
dGlvblJlc3VsdDo6U3VjY2VzcywKLSAgICAgICAgTWFuaXB1bGF0aW9uUmVzdWx0OjpDb250ZW50
Q2hhbmdlZCwKLSAgICAgICAgTWFuaXB1bGF0aW9uUmVzdWx0OjpJbnZhbGlkSXRlbSwKLSAgICAg
ICAgTWFuaXB1bGF0aW9uUmVzdWx0OjpJbnZhbGlkVG9rZW4sCi0gICAgICAgIE1hbmlwdWxhdGlv
blJlc3VsdDo6RXhjbHVzaW9uVmlvbGF0aW9uCisgICAgICAgIE1hbmlwdWxhdGlvbkZhaWx1cmVU
eXBlLAorICAgICAgICBNYW5pcHVsYXRpb25GYWlsdXJlVHlwZTo6Q29udGVudENoYW5nZWQsCisg
ICAgICAgIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOjpJbnZhbGlkSXRlbSwKKyAgICAgICAgTWFu
aXB1bGF0aW9uRmFpbHVyZVR5cGU6OkludmFsaWRUb2tlbiwKKyAgICAgICAgTWFuaXB1bGF0aW9u
RmFpbHVyZVR5cGU6OkV4Y2x1c2lvblZpb2xhdGlvbgogICAgID47CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA4M2Y4OWM0MWFh
ODZmMTVhNDExNjFiMDVhYzM5MTVkMmM0ZjI4ZGZkLi5hMzFkOTExNTc1ZjEzMzc0MzY3ZjEwM2Q3
MmMzMzczMzkzY2RmNWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0KQEAgLTE2NTQsOCArMTY1NCw5IEBAIC0gKHZvaWQpX3N0YXJ0VGV4dE1h
bmlwdWxhdGlvbnNXaXRoQ29uZmlndXJhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkNvbmZpZ3Vy
YXRpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfcGFnZS0+c3RhcnRUZXh0TWFuaXB1bGF0aW9u
cyhleGNsdXNpb25SdWxlcywgW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tXZWJWaWV3PihzZWxm
KV0gKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciBp
dGVtSUQsCi0gICAgICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29u
dHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+JiB0b2tlbnMpIHsKKyAgICBfcGFnZS0+c3RhcnRU
ZXh0TWFuaXB1bGF0aW9ucyhleGNsdXNpb25SdWxlcywgW3dlYWtTZWxmID0gV2Vha09iakNQdHI8
V0tXZWJWaWV3PihzZWxmKV0gKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4mIGl0ZW1SZWZlcmVuY2VzKSB7CisgICAgICAg
IC8vIFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciBp
dGVtSUQsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
TWFuaXB1bGF0aW9uVG9rZW4+JiB0b2tlbnMKKwogICAgICAgICBpZiAoIXdlYWtTZWxmKQogICAg
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjY0LDM5ICsxNjY1LDEzNiBAQCAtICh2b2lkKV9zdGFy
dFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3VyYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25D
b25maWd1cmF0aQogICAgICAgICBpZiAoIWRlbGVnYXRlKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIE5TTXV0YWJsZUFycmF5ICp3a1Rva2VucyA9IFtOU011dGFibGVBcnJheSBhcnJh
eVdpdGhDYXBhY2l0eTp0b2tlbnMuc2l6ZSgpXTsKLSAgICAgICAgZm9yIChhdXRvJiB0b2tlbiA6
IHRva2VucykgewotICAgICAgICAgICAgYXV0byB3a1Rva2VuID0gYWRvcHROUyhbW19XS1RleHRN
YW5pcHVsYXRpb25Ub2tlbiBhbGxvY10gaW5pdF0pOwotICAgICAgICAgICAgW3drVG9rZW4gc2V0
SWRlbnRpZmllcjpTdHJpbmc6Om51bWJlcih0b2tlbi5pZGVudGlmaWVyLnRvVUludDY0KCkpXTsK
LSAgICAgICAgICAgIFt3a1Rva2VuIHNldENvbnRlbnQ6dG9rZW4uY29udGVudF07Ci0gICAgICAg
ICAgICBbd2tUb2tlbiBzZXRFeGNsdWRlZDp0b2tlbi5pc0V4Y2x1ZGVkXTsKLSAgICAgICAgICAg
IFt3a1Rva2VucyBhZGRPYmplY3Q6d2tUb2tlbi5nZXQoKV07CisgICAgICAgIGlmICghW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGlkRmluZFRleHRNYW5p
cHVsYXRpb25JdGVtczopXSkgeworICAgICAgICAgICAgZm9yIChhdXRvJiBpdGVtIDogaXRlbVJl
ZmVyZW5jZXMpIHsKKyAgICAgICAgICAgICAgICBOU011dGFibGVBcnJheSAqd2tUb2tlbnMgPSBb
TlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6aXRlbS50b2tlbnMuc2l6ZSgpXTsKKyAg
ICAgICAgICAgICAgICBmb3IgKGF1dG8mIHRva2VuIDogaXRlbS50b2tlbnMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byB3a1Rva2VuID0gYWRvcHROUyhbW19XS1RleHRNYW5pcHVsYXRpb25U
b2tlbiBhbGxvY10gaW5pdF0pOworICAgICAgICAgICAgICAgICAgICBbd2tUb2tlbiBzZXRJZGVu
dGlmaWVyOlN0cmluZzo6bnVtYmVyKHRva2VuLmlkZW50aWZpZXIudG9VSW50NjQoKSldOworICAg
ICAgICAgICAgICAgICAgICBbd2tUb2tlbiBzZXRDb250ZW50OnRva2VuLmNvbnRlbnRdOworICAg
ICAgICAgICAgICAgICAgICBbd2tUb2tlbiBzZXRFeGNsdWRlZDp0b2tlbi5pc0V4Y2x1ZGVkXTsK
KyAgICAgICAgICAgICAgICAgICAgW3drVG9rZW5zIGFkZE9iamVjdDp3a1Rva2VuLmdldCgpXTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXV0byB3a0l0ZW0gPSBhZG9wdE5T
KFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGluaXRXaXRoSWRlbnRpZmllcjpTdHJp
bmc6Om51bWJlcihpdGVtLmlkZW50aWZpZXIudG9VSW50NjQoKSkgdG9rZW5zOndrVG9rZW5zXSk7
CisgICAgICAgICAgICAgICAgW2RlbGVnYXRlIF93ZWJWaWV3OnJldGFpbmVkU2VsZi5nZXQoKSBk
aWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW06d2tJdGVtLmdldCgpXTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIE5TTXV0YWJsZUFycmF5
ICp3a0l0ZW1zID0gW05TTXV0YWJsZUFycmF5IGFycmF5V2l0aENhcGFjaXR5Oml0ZW1SZWZlcmVu
Y2VzLnNpemUoKV07CisgICAgICAgIGZvciAoYXV0byYgaXRlbSA6IGl0ZW1SZWZlcmVuY2VzKSB7
CisgICAgICAgICAgICBOU011dGFibGVBcnJheSAqd2tUb2tlbnMgPSBbTlNNdXRhYmxlQXJyYXkg
YXJyYXlXaXRoQ2FwYWNpdHk6aXRlbS50b2tlbnMuc2l6ZSgpXTsKKyAgICAgICAgICAgIGZvciAo
YXV0byYgdG9rZW4gOiBpdGVtLnRva2VucykgeworICAgICAgICAgICAgICAgIGF1dG8gd2tUb2tl
biA9IGFkb3B0TlMoW1tfV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gYWxsb2NdIGluaXRdKTsKKyAg
ICAgICAgICAgICAgICBbd2tUb2tlbiBzZXRJZGVudGlmaWVyOlN0cmluZzo6bnVtYmVyKHRva2Vu
LmlkZW50aWZpZXIudG9VSW50NjQoKSldOworICAgICAgICAgICAgICAgIFt3a1Rva2VuIHNldENv
bnRlbnQ6dG9rZW4uY29udGVudF07CisgICAgICAgICAgICAgICAgW3drVG9rZW4gc2V0RXhjbHVk
ZWQ6dG9rZW4uaXNFeGNsdWRlZF07CisgICAgICAgICAgICAgICAgW3drVG9rZW5zIGFkZE9iamVj
dDp3a1Rva2VuLmdldCgpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFt3a0l0ZW1zIGFk
ZE9iamVjdDpbW19XS1RleHRNYW5pcHVsYXRpb25JdGVtIGFsbG9jXSBpbml0V2l0aElkZW50aWZp
ZXI6U3RyaW5nOjpudW1iZXIoaXRlbS5pZGVudGlmaWVyLnRvVUludDY0KCkpIHRva2Vuczp3a1Rv
a2Vuc11dOwogICAgICAgICB9CisgICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpyZXRhaW5lZFNl
bGYuZ2V0KCkgZGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtczp3a0l0ZW1zXTsKIAotICAgICAg
ICBhdXRvIGl0ZW0gPSBhZG9wdE5TKFtbX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gYWxsb2NdIGlu
aXRXaXRoSWRlbnRpZmllcjpTdHJpbmc6Om51bWJlcihpdGVtSUQudG9VSW50NjQoKSkgdG9rZW5z
OndrVG9rZW5zXSk7Ci0gICAgICAgIFtkZWxlZ2F0ZSBfd2ViVmlldzpyZXRhaW5lZFNlbGYuZ2V0
KCkgZGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtOml0ZW0uZ2V0KCldOwogICAgIH0sIFtjYXB0
dXJlZENvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildICgp
IHsKICAgICAgICAgY2FwdHVyZWRDb21wbGV0aW9uQmxvY2soKTsKICAgICB9KTsKIH0KIAotLSAo
dm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAq
KWl0ZW0gY29tcGxldGlvbjoodm9pZCheKShCT09MIHN1Y2Nlc3MpKWNvbXBsZXRpb25IYW5kbGVy
CitzdGF0aWMgV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVudGlm
aWVyIGNvcmVUZXh0TWFuaXB1bGF0aW9uSXRlbUlkZW50aWZpZXJGcm9tU3RyaW5nKE5TU3RyaW5n
KiBpZGVudGlmaWVyKQogewotICAgIHVzaW5nIE1hbmlwdWxhdGlvblJlc3VsdCA9IFdlYkNvcmU6
OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25SZXN1bHQ7CisgICAgcmV0
dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9s
bGVyOjpJdGVtSWRlbnRpZmllclR5cGU+KFN0cmluZyhpZGVudGlmaWVyKS50b1VJbnQ2NCgpKTsK
K30KKworc3RhdGljIFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpUb2tlbklk
ZW50aWZpZXIgY29yZVRleHRNYW5pcHVsYXRpb25Ub2tlbklkZW50aWZpZXJGcm9tU3RyaW5nKE5T
U3RyaW5nKiBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBtYWtlT2JqZWN0SWRlbnRpZmllcjxX
ZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6VG9rZW5JZGVudGlmaWVyVHlwZT4o
U3RyaW5nKGlkZW50aWZpZXIpLnRvVUludDY0KCkpOworfQogCi0gICAgaWYgKCFfcGFnZSkKKy0g
KHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0g
KilpdGVtIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNjZXNzKSljb21wbGV0aW9uSGFuZGxl
cgoreworICAgIGlmICghX3BhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2Up
OwogICAgICAgICByZXR1cm47CisgICAgfQogCi0gICAgYXV0byBpdGVtSUQgPSBtYWtlT2JqZWN0
SWRlbnRpZmllcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50
aWZpZXJUeXBlPihTdHJpbmcoaXRlbS5pZGVudGlmaWVyKS50b1VJbnQ2NCgpKTsKKyAgICBhdXRv
IGl0ZW1JRCA9IGNvcmVUZXh0TWFuaXB1bGF0aW9uSXRlbUlkZW50aWZpZXJGcm9tU3RyaW5nKGl0
ZW0uaWRlbnRpZmllcik7CiAKICAgICBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiB0b2tlbnM7Ci0gICAgZm9yIChfV0tUZXh0TWFu
aXB1bGF0aW9uVG9rZW4gKndrVG9rZW4gaW4gaXRlbS50b2tlbnMpIHsKLSAgICAgICAgYXV0byB0
b2tlbklEID0gbWFrZU9iamVjdElkZW50aWZpZXI8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6OlRva2VuSWRlbnRpZmllclR5cGU+KFN0cmluZyh3a1Rva2VuLmlkZW50aWZpZXIp
LnRvVUludDY0KCkpOwotICAgICAgICB0b2tlbnMuYXBwZW5kKFdlYkNvcmU6OlRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbiB7IHRva2VuSUQsIHdrVG9rZW4uY29u
dGVudCB9KTsKKyAgICBmb3IgKF9XS1RleHRNYW5pcHVsYXRpb25Ub2tlbiAqd2tUb2tlbiBpbiBp
dGVtLnRva2VucykKKyAgICAgICAgdG9rZW5zLmFwcGVuZChXZWJDb3JlOjpUZXh0TWFuaXB1bGF0
aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4geyBjb3JlVGV4dE1hbmlwdWxhdGlvblRv
a2VuSWRlbnRpZmllckZyb21TdHJpbmcod2tUb2tlbi5pZGVudGlmaWVyKSwgd2tUb2tlbi5jb250
ZW50IH0pOworCisgICAgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
OjpNYW5pcHVsYXRpb25JdGVtPiBjb3JlSXRlbXM7CisgICAgY29yZUl0ZW1zLnJlc2VydmVJbml0
aWFsQ2FwYWNpdHkoMSk7CisgICAgY29yZUl0ZW1zLnVuY2hlY2tlZEFwcGVuZChXZWJDb3JlOjpU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbSB7IGl0ZW1JRCwgV1RG
TW92ZSh0b2tlbnMpIH0pOworICAgIF9wYWdlLT5jb21wbGV0ZVRleHRNYW5pcHVsYXRpb24oY29y
ZUl0ZW1zLCBbY2FwdHVyZWRDb21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXSAoYm9vbCBhbGxGYWlsZWQsIGF1dG8mIGZhaWx1cmVzKSB7CisgICAgICAgIGNh
cHR1cmVkQ29tcGxldGlvbkJsb2NrKCFhbGxGYWlsZWQgJiYgZmFpbHVyZXMuaXNFbXB0eSgpKTsK
KyAgICB9KTsKK30KKworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gbWFrZUZhaWx1
cmVTZXRGb3JBbGxUZXh0TWFuaXB1bGF0aW9uSXRlbXMoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0
aW9uSXRlbSAqPiAqaXRlbXMpCit7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3a0Zh
aWx1cmVzID0gYWRvcHROUyhbW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0
eTppdGVtcy5jb3VudF0gYXV0b3JlbGVhc2VdKTsKKyAgICBmb3IgKF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtICppdGVtIGluIGl0ZW1zKQorICAgICAgICBbd2tGYWlsdXJlcyBhZGRPYmplY3Q6W05T
RXJyb3IgZXJyb3JXaXRoRG9tYWluOl9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JEb21haW4g
Y29kZTpfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yTm90QXZhaWxhYmxlIHVzZXJJbmZvOkB7
X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckl0ZW1LZXk6IGl0ZW19XV07CisgICAgcmV0dXJu
IHdrRmFpbHVyZXM7Cit9OworCitzdGF0aWMgUmV0YWluUHRyPE5TTXV0YWJsZUFycmF5PiB3a1Rl
eHRNYW5pcHVsYXRpb25FcnJvcnMoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqPiAq
aXRlbXMsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
TWFuaXB1bGF0aW9uRmFpbHVyZT4mIGZhaWx1cmVzKQoreworICAgIHVzaW5nIE1hbmlwdWxhdGlv
bkZhaWx1cmVUeXBlID0gV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlw
dWxhdGlvbkZhaWx1cmVUeXBlOworCisgICAgaWYgKGZhaWx1cmVzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIFJldGFpblB0cjxOU011dGFibGVBcnJheT4geyBuaWwgfTsKKworICAgIFJldGFp
blB0cjxOU011dGFibGVBcnJheT4gd2tGYWlsdXJlcyA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJh
eSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpmYWlsdXJlcy5zaXplKCldKTsKKyAgICBmb3IgKGF1
dG8mIGNvcmVGYWlsdXJlIDogZmFpbHVyZXMpIHsKKyAgICAgICAgQVNTRVJUKGNvcmVGYWlsdXJl
LmluZGV4IDwgaXRlbXMuY291bnQpOworICAgICAgICBpZiAoY29yZUZhaWx1cmUuaW5kZXggPj0g
aXRlbXMuY291bnQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgYXV0byogaXRlbSA9
IGl0ZW1zW2NvcmVGYWlsdXJlLmluZGV4XTsKKyAgICAgICAgQVNTRVJUKGNvcmVUZXh0TWFuaXB1
bGF0aW9uSXRlbUlkZW50aWZpZXJGcm9tU3RyaW5nKGl0ZW0uaWRlbnRpZmllcikgPT0gY29yZUZh
aWx1cmUuaWRlbnRpZmllcik7CisgICAgICAgIGF1dG8gZXJyb3JDb2RlID0gKFsmY29yZUZhaWx1
cmVdKCkgeworICAgICAgICAgICAgc3dpdGNoIChjb3JlRmFpbHVyZS50eXBlKSB7CisgICAgICAg
ICAgICBjYXNlIE1hbmlwdWxhdGlvbkZhaWx1cmVUeXBlOjpDb250ZW50Q2hhbmdlZDoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckNvbnRlbnRDaGFu
Z2VkOworICAgICAgICAgICAgY2FzZSBNYW5pcHVsYXRpb25GYWlsdXJlVHlwZTo6SW52YWxpZEl0
ZW06CisgICAgICAgICAgICAgICAgcmV0dXJuIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JJ
bnZhbGlkSXRlbTsKKyAgICAgICAgICAgIGNhc2UgTWFuaXB1bGF0aW9uRmFpbHVyZVR5cGU6Oklu
dmFsaWRUb2tlbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcnJvckludmFsaWRUb2tlbjsKKyAgICAgICAgICAgIGNhc2UgTWFuaXB1bGF0aW9uRmFpbHVy
ZVR5cGU6OkV4Y2x1c2lvblZpb2xhdGlvbjoKKyAgICAgICAgICAgICAgICByZXR1cm4gX1dLVGV4
dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckV4Y2x1c2lvblZpb2xhdGlvbjsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSkoKTsKKyAgICAgICAgW3drRmFpbHVyZXMgYWRkT2JqZWN0OltOU0Vycm9yIGVy
cm9yV2l0aERvbWFpbjpfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yRG9tYWluIGNvZGU6c3Rh
dGljX2Nhc3Q8aW50PihlcnJvckNvZGUpIHVzZXJJbmZvOkB7X1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcnJvckl0ZW1LZXk6IGl0ZW19XV07CisgICAgfQorCisgICAgcmV0dXJuIHdrRmFpbHVyZXM7
Cit9CisKKy0gKHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1zOihOU0FycmF5
PF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICo+ICopaXRlbXMgY29tcGxldGlvbjoodm9pZCheKShO
U0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAo
IV9wYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKG1ha2VGYWlsdXJlU2V0Rm9yQWxs
VGV4dE1hbmlwdWxhdGlvbkl0ZW1zKGl0ZW1zKS5nZXQoKSk7CisgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBfcGFnZS0+Y29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKGl0ZW1JRCwgdG9rZW5z
LCBbY2FwdHVyZWRDb21wbGV0aW9uQmxvY2sgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRs
ZXIpXSAoTWFuaXB1bGF0aW9uUmVzdWx0IHJlc3VsdCkgewotICAgICAgICBjYXB0dXJlZENvbXBs
ZXRpb25CbG9jayhyZXN1bHQgPT0gTWFuaXB1bGF0aW9uUmVzdWx0OjpTdWNjZXNzKTsKKyAgICBW
ZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0
ZW0+IGNvcmVJdGVtczsKKyAgICBjb3JlSXRlbXMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShpdGVt
cy5jb3VudCk7CisgICAgZm9yIChfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqd2tJdGVtIGluIGl0
ZW1zKSB7CisgICAgICAgIFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxl
cjo6TWFuaXB1bGF0aW9uVG9rZW4+IGNvcmVUb2tlbnM7CisgICAgICAgIGNvcmVUb2tlbnMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eSh3a0l0ZW0udG9rZW5zLmNvdW50KTsKKyAgICAgICAgZm9yIChf
V0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4gKndrVG9rZW4gaW4gd2tJdGVtLnRva2VucykKKyAgICAg
ICAgICAgIGNvcmVUb2tlbnMudW5jaGVja2VkQXBwZW5kKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRp
b25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbiB7IGNvcmVUZXh0TWFuaXB1bGF0aW9uVG9r
ZW5JZGVudGlmaWVyRnJvbVN0cmluZyh3a1Rva2VuLmlkZW50aWZpZXIpLCB3a1Rva2VuLmNvbnRl
bnQgfSk7CisgICAgICAgIGNvcmVJdGVtcy51bmNoZWNrZWRBcHBlbmQoV2ViQ29yZTo6VGV4dE1h
bmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0geyBjb3JlVGV4dE1hbmlwdWxh
dGlvbkl0ZW1JZGVudGlmaWVyRnJvbVN0cmluZyh3a0l0ZW0uaWRlbnRpZmllciksIFdURk1vdmUo
Y29yZVRva2VucykgfSk7CisgICAgfQorCisgICAgUmV0YWluUHRyPE5TQXJyYXk8X1dLVGV4dE1h
bmlwdWxhdGlvbkl0ZW0gKj4+IHJldGFpbmVkSXRlbXMgPSBpdGVtczsKKyAgICBfcGFnZS0+Y29t
cGxldGVUZXh0TWFuaXB1bGF0aW9uKGNvcmVJdGVtcywgW2NhcHR1cmVkSXRlbXMgPSByZXRhaW5l
ZEl0ZW1zLCBjYXB0dXJlZENvbXBsZXRpb25CbG9jayA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9u
SGFuZGxlcildKGJvb2wgYWxsRmFpbGVkLCBhdXRvJiBmYWlsdXJlcykgeworICAgICAgICBpZiAo
YWxsRmFpbGVkKSB7CisgICAgICAgICAgICBjYXB0dXJlZENvbXBsZXRpb25CbG9jayhtYWtlRmFp
bHVyZVNldEZvckFsbFRleHRNYW5pcHVsYXRpb25JdGVtcyhjYXB0dXJlZEl0ZW1zLmdldCgpKS5n
ZXQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY2FwdHVyZWRD
b21wbGV0aW9uQmxvY2sod2tUZXh0TWFuaXB1bGF0aW9uRXJyb3JzKGNhcHR1cmVkSXRlbXMuZ2V0
KCksIGZhaWx1cmVzKS5nZXQoKSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDJlNTg4ZThl
ZmViNDNmY2YxYjMwZjBiOTkyMWNjYjM0YTM3MjVhMDIuLmE2ZDU5Mjc5OTU4NDY4NWY5ZWJkNjYy
M2FlYjg4OWU2YmMxMGUwNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTkwLDggKzE5MCw5IEBAIGZvciB0aGlz
IHByb3BlcnR5LgogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBfV0tGcmFtZUhhbmRs
ZSAqX21haW5GcmFtZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikp
OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRUZXh0TWFuaXB1bGF0
aW9uRGVsZWdhdGU6KSBpZCA8X1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlPiBfdGV4dE1hbmlw
dWxhdGlvbkRlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhX
S19JT1NfVEJBKSk7Ci0tICh2b2lkKV9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3Vy
YXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25Db25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1
cmF0aW9uIGNvbXBsZXRpb246KHZvaWQoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
X3N0YXJ0VGV4dE1hbmlwdWxhdGlvbnNXaXRoQ29uZmlndXJhdGlvbjooX1dLVGV4dE1hbmlwdWxh
dGlvbkNvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGNvbXBsZXRpb246KHZvaWQoXikodm9p
ZCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjooX1dL
VGV4dE1hbmlwdWxhdGlvbkl0ZW0gKilpdGVtIGNvbXBsZXRpb246KHZvaWQoXikoQk9PTCBzdWNj
ZXNzKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9y
SXRlbXM6KE5TQXJyYXk8X1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKj4gKilpdGVtcyBjb21wbGV0
aW9uOih2b2lkKF4pKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSljb21wbGV0aW9uSGFuZGxl
ciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwog
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRBZGRzVmlzaXRlZExpbmtzOikgQk9P
TCBfYWRkc1Zpc2l0ZWRMaW5rczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZS5oCmluZGV4
IDcwYWI0OWU2MGNkNzE5YzI1OWFjZjJmMDVmOGU5ZGE2MTk0ZTEwYTMuLjgwZmJlZWI3MTFkYWEx
YjRlZjJiNTkyZTMxODE2NDI1NGE3NjU1ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRl
LmgKQEAgLTM0LDYgKzM0LDcgQEAKIEBvcHRpb25hbAogCiAtICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZpbmRUZXh0TWFuaXB1bGF0aW9uSXRlbTooX1dLVGV4dE1hbmlw
dWxhdGlvbkl0ZW0gKilpdGVtOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW1zOihOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtICo+ICopaXRlbXM7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25JdGVtLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0uaAppbmRleCA1
OWU2NWU1MmEyNTE2ZjBhMDQ2YTFkZmNiYjU5M2M2NTdkNWY5MmI2Li4yMjU2OTQ4YzUzNjViMDIy
Yzc1MzNjYTAyZmY3ZWMxZTk1NTE5M2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0uaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0uaApAQCAtNDUs
NCArNDUsMTYgQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpCiAKIEBlbmQKIAorV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgX1dLVGV4dE1h
bmlwdWxhdGlvbkl0ZW1FcnJvckRvbWFpbiBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCit0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBfV0tU
ZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yQ29kZSkgeworICAgIF9XS1RleHRNYW5pcHVsYXRpb25J
dGVtRXJyb3JOb3RBdmFpbGFibGUsCisgICAgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckNv
bnRlbnRDaGFuZ2VkLAorICAgIF9XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JJbnZhbGlkSXRl
bSwKKyAgICBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9ySW52YWxpZFRva2VuLAorICAgIF9X
S1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JFeGNsdXNpb25WaW9sYXRpb24sCit9IFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKK1dLX0VYVEVS
TiBOU0Vycm9yVXNlckluZm9LZXkgY29uc3QgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckl0
ZW1LZXkgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKKwogTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0ubW0gYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0ubW0KaW5kZXgg
ODBlNzI4YWU1MzU3YzNiMTJhNzk4MDQwNDhmMzE5ZDhmN2Q2ODc3YS4uYzgyZWEyZjM4NmI4MjBk
MTkxNzY4NzM4M2ExZDI3NDVmMzA0MjZjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1RleHRNYW5pcHVsYXRpb25JdGVtLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tUZXh0TWFuaXB1bGF0aW9uSXRlbS5tbQpAQCAt
MjksNiArMjksOSBAQAogI2ltcG9ydCAiX1dLVGV4dE1hbmlwdWxhdGlvblRva2VuLmgiCiAjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKK05TU3RyaW5nICogY29uc3QgX1dLVGV4dE1hbmlwdWxh
dGlvbkl0ZW1FcnJvckRvbWFpbiA9IEAiV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yRG9tYWlu
IjsKK05TU3RyaW5nICogY29uc3QgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckl0ZW1LZXkg
PSBAIml0ZW0iOworCiBAaW1wbGVtZW50YXRpb24gX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gewog
ICAgIFJldGFpblB0cjxOU1N0cmluZz4gX2lkZW50aWZpZXI7CiAgICAgUmV0YWluUHRyPE5TQXJy
YXk8X1dLVGV4dE1hbmlwdWxhdGlvblRva2VuICo+PiBfdG9rZW5zOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggODI2M2FhZDVmNTY2MjdlZjFkMmYwM2E4YmRm
ZWIwZmQ2ZmRlZWUzYS4uOTUwOGUxYWJjZDQwZWZmYzQ0NDc3ZmJkZmRjOTk1ZDAwZGY3MWVkMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC05ODc3LDIyICs5
ODc3LDIxIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydFRleHRNYW5pcHVsYXRpb25zKGNvbnN0
IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uCiAgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpTdGFydFRleHRNYW5pcHVsYXRpb25zKGV4Y2x1c2lvblJ1bGVz
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyOjpJdGVtSWRlbnRpZmllciBpdGVtSUQsCi0gICAgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4mIHRva2VucykK
K3ZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW1zKGNvbnN0IFZl
Y3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRl
bT4mIGl0ZW1zKQogewogICAgIGlmICghbV90ZXh0TWFuaXB1bGF0aW9uSXRlbUNhbGxiYWNrKQog
ICAgICAgICByZXR1cm47Ci0gICAgbV90ZXh0TWFuaXB1bGF0aW9uSXRlbUNhbGxiYWNrKGl0ZW1J
RCwgdG9rZW5zKTsKKyAgICBtX3RleHRNYW5pcHVsYXRpb25JdGVtQ2FsbGJhY2soaXRlbXMpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6Y29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKFdlYkNvcmU6
OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciBpdGVtSUQsCi0gICAg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVs
YXRpb25Ub2tlbj4mIHRva2VucywgV1RGOjpGdW5jdGlvbjx2b2lkIChXZWJDb3JlOjpUZXh0TWFu
aXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uUmVzdWx0IHJlc3VsdCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIFdlYlBhZ2VQcm94eTo6Y29tcGxldGVUZXh0TWFuaXB1bGF0aW9u
KGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1
bGF0aW9uSXRlbT4mIGl0ZW1zLAorICAgIFdURjo6RnVuY3Rpb248dm9pZChib29sIGFsbEZhaWxl
ZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5p
cHVsYXRpb25GYWlsdXJlPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghaGFz
UnVubmluZ1Byb2Nlc3MoKSkgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXZWJDb3JlOjpU
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uUmVzdWx0OjpJbnZhbGlkSXRl
bSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUsIHsgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21w
bGV0ZVRleHRNYW5pcHVsYXRpb24oaXRlbUlELCB0b2tlbnMpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpDb21w
bGV0ZVRleHRNYW5pcHVsYXRpb24oaXRlbXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVycmlkZGVuTWVkaWFUeXBlKGNvbnN0IFN0
cmluZyYgbWVkaWFUeXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRl
eCA5NzljMWY0YzFkZmRkOThhOGZkODNiNGRkYzE2ZDJjNTU0ZjE4MDNjLi5iMzNkMjhmNzBlNDlj
YzA3MzEyZGFjMmQ2YzJjOGY4MzUwZWIxNTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaApAQCAtMTY4MSwxMSArMTY4MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRN
b2NrV2ViQXV0aGVudGljYXRpb25Db25maWd1cmF0aW9uKFdlYkNvcmU6Ok1vY2tXZWJBdXRoZW50
aWNhdGlvbkNvbmZpZ3VyYXRpb24mJik7CiAjZW5kaWYKIAotICAgIHVzaW5nIFRleHRNYW5pcHVs
YXRpb25JdGVtQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlRleHRNYW5p
cHVsYXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6
OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4mKT47CisgICAg
dXNpbmcgVGV4dE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxh
dGlvbkl0ZW0+Jik+OwogICAgIHZvaWQgc3RhcnRUZXh0TWFuaXB1bGF0aW9ucyhjb25zdCBWZWN0
b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU+Jiwg
VGV4dE1hbmlwdWxhdGlvbkl0ZW1DYWxsYmFjayYmLCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJik7Ci0gICAgdm9pZCBkaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW0oV2ViQ29yZTo6
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8
V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiYp
OwotICAgIHZvaWQgY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKFdlYkNvcmU6OlRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyOjpJdGVtSWRlbnRpZmllciwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRl
eHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25Ub2tlbj4mLAotICAgICAgICBX
VEY6OkZ1bmN0aW9uPHZvaWQgKFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpN
YW5pcHVsYXRpb25SZXN1bHQpPiYmKTsKKyAgICB2b2lkIGRpZEZpbmRUZXh0TWFuaXB1bGF0aW9u
SXRlbXMoY29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpN
YW5pcHVsYXRpb25JdGVtPiYpOworICAgIHZvaWQgY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKGNv
bnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0
aW9uSXRlbT4mLCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCBhbGxGYWlsZWQsIGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uRmFpbHVy
ZT4mKT4mJik7CiAKICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRkZW5NZWRpYVR5cGUoKSBjb25z
dCB7IHJldHVybiBtX292ZXJyaWRkZW5NZWRpYVR5cGU7IH0KICAgICB2b2lkIHNldE92ZXJyaWRk
ZW5NZWRpYVR5cGUoY29uc3QgU3RyaW5nJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOWY2NDRmNDYyZmJhNjU2MTc2NzllZjIy
ZGJjZTI4ODI1NjFhOTEwNS4uNzVmNjg2ZDFjZjRlZWRkYTg5ZTFhZTAzYzNhN2MwMWEwZjQ3ZmVj
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdl
cy5pbgpAQCAtNTg3LDYgKzU4Nyw2IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAg
U2VuZE1lc3NhZ2VUb1dlYlZpZXdXaXRoUmVwbHkoc3RydWN0IFdlYktpdDo6VXNlck1lc3NhZ2Ug
dXNlck1lc3NhZ2UpIC0+IChzdHJ1Y3QgV2ViS2l0OjpVc2VyTWVzc2FnZSByZXBseU1lc3NhZ2Up
IEFzeW5jCiAjZW5kaWYKIAotICAgIERpZEZpbmRUZXh0TWFuaXB1bGF0aW9uSXRlbShXZWJDb3Jl
OjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXIgaXRlbUlELCBWZWN0
b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2Vu
PiB0b2tlbnMpCisgICAgRGlkRmluZFRleHRNYW5pcHVsYXRpb25JdGVtcyhWZWN0b3I8V2ViQ29y
ZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+IGl0ZW1zKQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4
IGUyNDU3MDQzYTQ4YzgxZTE2MzBmYmE2MGQ1MjFlYzQ0MDBiYjk1NjYuLjIzMmZhOTUzY2RlNjEx
OTk4YzViZDBkYzg2MTJkMGI1M2QxNzU0MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC02OTQ1LDggKzY5NDUsNyBAQCB2b2lkIFdlYlBhZ2U6
OnN0YXJ0VGV4dE1hbmlwdWxhdGlvbnMoVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25D
b250cm9sbGVyOgogICAgIGlmICghbWFpbkRvY3VtZW50KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBtYWluRG9jdW1lbnQtPnRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyKCkuc3RhcnRPYnNlcnZp
bmdQYXJhZ3JhcGhzKFt3ZWJQYWdlID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoV2ViQ29yZTo6RG9j
dW1lbnQmIGRvY3VtZW50LAotICAgICAgICBXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJv
bGxlcjo6SXRlbUlkZW50aWZpZXIgaXRlbUlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+JiB0b2tlbnMp
IHsKKyAgICBtYWluRG9jdW1lbnQtPnRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyKCkuc3RhcnRP
YnNlcnZpbmdQYXJhZ3JhcGhzKFt3ZWJQYWdlID0gbWFrZVdlYWtQdHIoKnRoaXMpXSAoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXI6Ok1hbmlwdWxhdGlvbkl0ZW0+JiBpdGVtcykgewogICAgICAgICBhdXRvKiBmcmFtZSA9
IGRvY3VtZW50LmZyYW1lKCk7CiAgICAgICAgIGlmICghd2ViUGFnZSB8fCAhZnJhbWUgfHwgd2Vi
UGFnZS0+bWFpbkZyYW1lKCkgIT0gZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC02OTU1
LDMxICs2OTU0LDM2IEBAIHZvaWQgV2ViUGFnZTo6c3RhcnRUZXh0TWFuaXB1bGF0aW9ucyhWZWN0
b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6CiAgICAgICAgIGlmICghd2Vi
RnJhbWUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW0oaXRlbUlkZW50
aWZpZXIsIHRva2VucykpOworICAgICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRpZEZpbmRUZXh0TWFuaXB1bGF0aW9uSXRlbXMoaXRlbXMpKTsKICAgICB9LCBXVEZN
b3ZlKGV4Y2x1c2lvblJ1bGVzKSk7CiAgICAgLy8gRm9yIG5vdywgd2UgYXNzdW1lIHN0YXJ0T2Jz
ZXJ2aW5nUGFyYWdyYXBocyBmaW5kIGFsbCBwYXJhZ3JhcGhzIHN5bmNocm9ub3VzbHkgYXQgb25j
ZS4KICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCi12b2lkIFdlYlBhZ2U6OmNvbXBsZXRl
VGV4dE1hbmlwdWxhdGlvbihXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRl
bUlkZW50aWZpZXIgaXRlbUlELAotICAgIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1
bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uVG9rZW4+JiB0b2tlbnMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxh
dGlvblJlc3VsdCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIGNvbXBsZXRlVGV4dE1hbmlw
dWxhdGlvbihjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
Ok1hbmlwdWxhdGlvbkl0ZW0+LAorICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSGFz
aFNldDxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXIs
IFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWlsdXJl
PiYpPiYmKTsKKwordm9pZCBXZWJQYWdlOjpjb21wbGV0ZVRleHRNYW5pcHVsYXRpb24oY29uc3Qg
VmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25J
dGVtPiYgaXRlbXMsCisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGFsbEZhaWxlZCwg
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVs
YXRpb25GYWlsdXJlPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHVzaW5nIE1hbmlw
dWxhdGlvblJlc3VsdCA9IFdlYkNvcmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5p
cHVsYXRpb25SZXN1bHQ7Ci0gICAgYXV0byBjb21wbGV0ZU1hbmlwdWxhdGlvbiA9IFsmXSB7Ci0g
ICAgICAgIGlmICghbV9wYWdlKQotICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvblJlc3Vs
dDo6SW52YWxpZEl0ZW07CisgICAgaWYgKCFtX3BhZ2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSwgeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgICAgICBhdXRv
IG1haW5Eb2N1bWVudCA9IG1ha2VSZWZQdHIobV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
KTsKLSAgICAgICAgaWYgKCFtYWluRG9jdW1lbnQpCi0gICAgICAgICAgICByZXR1cm4gTWFuaXB1
bGF0aW9uUmVzdWx0OjpJbnZhbGlkSXRlbTsKKyAgICBhdXRvIG1haW5Eb2N1bWVudCA9IG1ha2VS
ZWZQdHIobV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKTsKKyAgICBpZiAoIW1haW5Eb2N1
bWVudCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0cnVlLCB7IH0pOworICAgICAgICBy
ZXR1cm47CisgICAgfQogCi0gICAgICAgIGF1dG8qIGNvbnRyb2xsZXIgPSBtYWluRG9jdW1lbnQt
PnRleHRNYW5pcHVsYXRpb25Db250cm9sbGVySWZFeGlzdHMoKTsKLSAgICAgICAgaWYgKCFjb250
cm9sbGVyKQotICAgICAgICAgICAgcmV0dXJuIE1hbmlwdWxhdGlvblJlc3VsdDo6SW52YWxpZEl0
ZW07CisgICAgYXV0byogY29udHJvbGxlciA9IG1haW5Eb2N1bWVudC0+dGV4dE1hbmlwdWxhdGlv
bkNvbnRyb2xsZXJJZkV4aXN0cygpOworICAgIGlmICghY29udHJvbGxlcikgeworICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcih0cnVlLCB7IH0pOworICAgICAgICByZXR1cm47CisgICAgfQogCi0g
ICAgICAgIHJldHVybiBjb250cm9sbGVyLT5jb21wbGV0ZU1hbmlwdWxhdGlvbihpdGVtSUQsIHRv
a2Vucyk7Ci0gICAgfTsKLSAgICBjb21wbGV0aW9uSGFuZGxlcihjb21wbGV0ZU1hbmlwdWxhdGlv
bigpKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSwgY29udHJvbGxlci0+Y29tcGxldGVN
YW5pcHVsYXRpb24oaXRlbXMpKTsKIH0KIAogUEFMOjpTZXNzaW9uSUQgV2ViUGFnZTo6c2Vzc2lv
bklEKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApp
bmRleCBkMjYzNGE1ZjQzMzQxNWNiYWJhYjc1Yzk2YzBlZTAwMzE5NzQyYTQ0Li5lNzNiMDQ3YzYz
M2IxYmZmNzk4Y2E4YWExNWNhNzMzODcxMmMzYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xMjM3LDkgKzEyMzcsNyBAQCBwdWJsaWM6CiAgICAg
T3B0aW9uYWw8V2ViQ29yZTo6RWxlbWVudENvbnRleHQ+IGNvbnRleHRGb3JFbGVtZW50KFdlYkNv
cmU6OkVsZW1lbnQmKSBjb25zdDsKIAogICAgIHZvaWQgc3RhcnRUZXh0TWFuaXB1bGF0aW9ucyhW
ZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU+
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Ci0gICAgdm9pZCBjb21wbGV0ZVRleHRN
YW5pcHVsYXRpb24oV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Okl0ZW1JZGVu
dGlmaWVyLAotICAgICAgICBjb25zdCBWZWN0b3I8V2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNv
bnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiYsCi0gICAgICAgIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblJl
c3VsdCk+JiYpOworICAgIHZvaWQgY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6TWFuaXB1bGF0aW9uSXRlbT4m
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgYWxsRmFpbGVkLCBjb25zdCBWZWN0b3I8V2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvbkZhaWx1cmU+Jik+
JiYpOwogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKICAgICBXZWJQYXltZW50Q29vcmRpbmF0b3Iq
IHBheW1lbnRDb29yZGluYXRvcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggNzM1NGMxOTIwODc0MDg5YmYwMDMw
YzYzNjNhYTg1ODYwMGRjYzg4NS4uYjc1OWM4Y2EwZjZjNmVlZmQzYzBkYTJkZGUyZTkwZWRjYzIz
ZjE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC01OTksOCArNTk5LDggQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0
aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5
cGUKICNlbmRpZgogCiAgICAgU3RhcnRUZXh0TWFuaXB1bGF0aW9ucyhWZWN0b3I8V2ViQ29yZTo6
VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6OkV4Y2x1c2lvblJ1bGU+IGV4Y2x1c2lvblJ1bGVz
KSAtPiAoKSBBc3luYwotICAgIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbihXZWJDb3JlOjpUZXh0
TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6SXRlbUlkZW50aWZpZXIgaXRlbUlELCBWZWN0b3I8V2Vi
Q29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6Ok1hbmlwdWxhdGlvblRva2VuPiB0b2tl
bnMpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6VGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXI6
Ok1hbmlwdWxhdGlvblJlc3VsdCByZXN1bHQpIEFzeW5jCi0gICAgCisgICAgQ29tcGxldGVUZXh0
TWFuaXB1bGF0aW9uKFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlcjo6
TWFuaXB1bGF0aW9uSXRlbT4gaXRlbXMpIC0+IChib29sIGFsbEZhaWxlZCwgVmVjdG9yPFdlYkNv
cmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOjpNYW5pcHVsYXRpb25GYWlsdXJlPiBmYWls
dXJlcykgQXN5bmMKKwogICAgIFNldE92ZXJyaWRkZW5NZWRpYVR5cGUoU3RyaW5nIG1lZGlhVHlw
ZSkKICAgICBHZXRQcm9jZXNzRGlzcGxheU5hbWUoKSAtPiAoU3RyaW5nIGRpc3BsYXlOYW1lKSBB
c3luYwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggODliYzE4N2MwYzQyZDQ2MGQwMDUwMTQxMTE4NmUyZjEwZDY0NmU1Ny4uZmE5YWUxNGQxNjNm
YzU2MzYyMmZlYThhMmI3M2NjYmMxZmZhMGM0YyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIwLTAzLTAyICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEJhdGNoIG9ic2VydmF0aW9u
cyBhbmQgY29tcGxldGlvbnMgb2YgdGV4dCBtYW5pcHVsYXRpb25zCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0MDYKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVkIHRoZSBleGlzdGluZyB0ZXN0
cyB0byB1c2UgbmV3IEFQSXMsIGFuZCBhZGRlZCBuZXcgdGVzdHMgZm9yIGJhdGNoaW5nIGZpbmRp
bmcgJiByZXBsYWNpbmcKKyAgICAgICAgbXVsdGlwbGUgcGFyYWdyYXBocyBhdCBvbmNlLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9u
Lm1tOgorICAgICAgICAoLVtUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgX3dlYlZpZXc6ZGlkRmlu
ZFRleHRNYW5pcHVsYXRpb25JdGVtczpdKToKKyAgICAgICAgKC1bVGV4dE1hbmlwdWxhdGlvbkRl
bGVnYXRlIGl0ZW1zXSk6CisgICAgICAgICgtW0xlZ2FjeVRleHRNYW5pcHVsYXRpb25EZWxlZ2F0
ZSBpbml0XSk6CisgICAgICAgICgtW0xlZ2FjeVRleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBfd2Vi
VmlldzpkaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW06XSk6CisgICAgICAgIChUZXh0TWFuaXB1
bGF0aW9uLlN0YXJ0VGV4dE1hbmlwdWxhdGlvblN1cHBvcnRzTGVnYWN5RGVsZWdhdGVDYWxsYmFj
ayk6IEFkZGVkLgorICAgICAgICAoVGV4dE1hbmlwdWxhdGlvbi5MZWdhY3lDb21wbGV0ZVRleHRN
YW5pcHVsYXRpb25SZXBsYWNlU2ltcGxlU2luZ2xlUGFyYWdyYXBoKTogQWRkZWQuCisgICAgICAg
IChUZXh0TWFuaXB1bGF0aW9uLkNvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblJlcGxhY2VNdWx0aXBs
ZVNpbXBsZVBhcmFncmFwaHNBdE9uY2UpOiBBZGRlZC4KKyAgICAgICAgKFRleHRNYW5pcHVsYXRp
b24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uU2hvdWxkQmF0Y2hJdGVtQ2FsbGJhY2spOiBBZGRl
ZC4KKyAgICAgICAgKFRleHRNYW5pcHVsYXRpb24uQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRmFp
bFdoZW5JdGVtSWRlbnRpZmllcklzRHVwbGljYXRlZCk6IEFkZGVkLgorICAgICAgICAoVGV4dE1h
bmlwdWxhdGlvbi5Db21wbGV0ZVRleHRNYW5pcHVsYXRpb25DYW5IYW5kbGVTdWJzZXRPZkl0ZW1z
VG9GYWlsKTogQWRkZWQuCisKIDIwMjAtMDItMjggIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIEVXUyBmYWlscyB0byByZXRyeSBidWlsZCBpbiBjYXNlIG9m
IGtpbGwtb2xkLXByb2Nlc3NlcyBleGNlcHRpb24KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGV4dE1hbmlwdWxhdGlvbi5tbQppbmRleCBkZmU0
MmQ1NzFiNmI1MzJlNzIwYWNkMDlkMWE5NmI4MDRlZWRlOTU1Li5kNmJlYWZkMjQ0MTczMjYwNzQw
OTNmYzZlZTY1YWM2ZDg4YjZjNGNjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1RleHRNYW5pcHVsYXRpb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXh0TWFuaXB1bGF0aW9uLm1tCkBAIC0zNiwxNyArMzYs
MjEgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tUZXh0TWFuaXB1bGF0aW9uVG9rZW4uaD4KICNpbXBv
cnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0Nv
bmNhdGVuYXRlTnVtYmVycy5oPgogCiBzdGF0aWMgYm9vbCBkb25lID0gZmFsc2U7CiAKIHR5cGVk
ZWYgdm9pZCheSXRlbUNhbGxiYWNrKShfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKTsKK3R5cGVk
ZWYgdm9pZCheSXRlbUxpc3RDYWxsYmFjaykoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRl
bSAqPiAqKTsKIAogQGludGVyZmFjZSBUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgOiBOU09iamVj
dCA8X1dLVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlPgogCi0tICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGRpZEZpbmRUZXh0TWFuaXB1bGF0aW9uSXRlbTooX1dLVGV4dE1hbmlw
dWxhdGlvbkl0ZW0gKilpdGVtOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkaWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW1zOihOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtICo+ICopaXRlbXM7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqPiAqaXRlbXM7CiBAcHJvcGVydHkg
KHN0cm9uZykgSXRlbUNhbGxiYWNrIGl0ZW1DYWxsYmFjazsKK0Bwcm9wZXJ0eSAoc3Ryb25nKSBJ
dGVtTGlzdENhbGxiYWNrIGl0ZW1MaXN0Q2FsbGJhY2s7CiAKIEBlbmQKIApAQCAtNjIsMTEgKzY2
LDQ4IEBAIC0gKGluc3RhbmNldHlwZSlpbml0CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKKy0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluZFRleHRNYW5pcHVsYXRpb25J
dGVtczooTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqPiAqKWl0ZW1zCit7CisgICAg
W19pdGVtcyBhZGRPYmplY3RzRnJvbUFycmF5Oml0ZW1zXTsKKyAgICBpZiAoc2VsZi5pdGVtTGlz
dENhbGxiYWNrKQorICAgICAgICBzZWxmLml0ZW1MaXN0Q2FsbGJhY2soaXRlbXMpOworICAgIGlm
IChzZWxmLml0ZW1DYWxsYmFjaykgeworICAgICAgICBmb3IgKF9XS1RleHRNYW5pcHVsYXRpb25J
dGVtKiBpdGVtIGluIGl0ZW1zKQorICAgICAgICAgICAgc2VsZi5pdGVtQ2FsbGJhY2soaXRlbSk7
CisgICAgfQorfQorCistIChOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICo+ICopaXRl
bXMKK3sKKyAgICByZXR1cm4gX2l0ZW1zLmdldCgpOworfQorCitAZW5kCisKK0BpbnRlcmZhY2Ug
TGVnYWN5VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPF9XS1RleHRNYW5pcHVs
YXRpb25EZWxlZ2F0ZT4KKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
aWRGaW5kVGV4dE1hbmlwdWxhdGlvbkl0ZW06KF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopaXRl
bTsKKworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5KSBOU0FycmF5PF9XS1Rl
eHRNYW5pcHVsYXRpb25JdGVtICo+ICppdGVtczsKK0Bwcm9wZXJ0eSAoc3Ryb25nKSBJdGVtQ2Fs
bGJhY2sgaXRlbUNhbGxiYWNrOworCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBMZWdhY3lUZXh0
TWFuaXB1bGF0aW9uRGVsZWdhdGUgeworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gX2l0
ZW1zOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIF9pdGVtcyA9IGFkb3B0TlMoW1tO
U011dGFibGVBcnJheSBhbGxvY10gaW5pdF0pOworICAgIHJldHVybiBzZWxmOworfQorCiAtICh2
b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmRUZXh0TWFuaXB1bGF0aW9u
SXRlbTooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKilpdGVtCiB7CiAgICAgW19pdGVtcyBhZGRP
YmplY3Q6aXRlbV07Ci0gICAgaWYgKHNlbGYuaXRlbUNhbGxiYWNrKQotICAgICAgICBzZWxmLml0
ZW1DYWxsYmFjayhpdGVtKTsKIH0KIAogLSAoTlNBcnJheTxfV0tUZXh0TWFuaXB1bGF0aW9uSXRl
bSAqPiAqKWl0ZW1zCkBAIC0xNzUsNiArMjE2LDI5IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwg
U3RhcnRUZXh0TWFuaXB1bGF0aW9uRmluZFBhcmFncmFwaHNXaXRoTXVsdGlsZVRva2VucykKICAg
ICBFWFBFQ1RfU1RSRVEoIktpdCIsIGl0ZW1zWzFdLnRva2Vuc1sxXS5jb250ZW50LlVURjhTdHJp
bmcpOwogfQogCitURVNUKFRleHRNYW5pcHVsYXRpb24sIFN0YXJ0VGV4dE1hbmlwdWxhdGlvblN1
cHBvcnRzTGVnYWN5RGVsZWdhdGVDYWxsYmFjaykKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbW0xlZ2FjeVRleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgX3NldFRleHRN
YW5pcHVsYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48cD5o
ZWxsbywgPHNwYW4+d29ybGQ8L3NwYW4+PC9wPjxwPldlYktpdDwvcD48L2JvZHk+PC9odG1sPiJd
OworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRp
b25zV2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb246XnsKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAg
IF9fYmxvY2sgYXV0byAqaXRlbXMgPSBbZGVsZWdhdGUgaXRlbXNdOworICAgIEVYUEVDVF9FUShp
dGVtcy5jb3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfRVEoaXRlbXNbMF0udG9rZW5zLmNvdW50LCAy
VUwpOworICAgIEVYUEVDVF9TVFJFUSgiaGVsbG8sICIsIGl0ZW1zWzBdLnRva2Vuc1swXS5jb250
ZW50LlVURjhTdHJpbmcpOworICAgIEVYUEVDVF9TVFJFUSgid29ybGQiLCBpdGVtc1swXS50b2tl
bnNbMV0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfRVEoaXRlbXNbMV0udG9rZW5z
LmNvdW50LCAxVUwpOworICAgIEVYUEVDVF9TVFJFUSgiV2ViS2l0IiwgaXRlbXNbMV0udG9rZW5z
WzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7Cit9CisKIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgU3Rh
cnRUZXh0TWFuaXB1bGF0aW9uRmluZE5ld2x5SW5zZXJ0ZWRQYXJhZ3JhcGgpCiB7CiAgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKQEAgLTQ2MiwxMCArNTI2LDQwIEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxl
dGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZVNpbXBsZVNpbmdsZVBhcmFncmFwaCkKICAgICBFWFBF
Q1RfRVEoaXRlbXNbMF0udG9rZW5zLmNvdW50LCAxVUwpOwogICAgIEVYUEVDVF9TVFJFUSgiaGVs
bGxvLCB3b29vcmxkIiwgaXRlbXNbMF0udG9rZW5zWzBdLmNvbnRlbnQuVVRGOFN0cmluZyk7CiAK
KyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlv
bkZvckl0ZW1zOkBbKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRlbShpdGVtc1sw
XS5pZGVudGlmaWVyLCB7CisgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIs
IEAiaGVsbG8sIHdvcmxkIiB9LAorICAgIH0pXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vycm9y
ICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKKyAgICAgICAg
ZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25l
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjxwPmhlbGxvLCB3b3JsZDwvcD4iLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5pbm5lckhUTUwiXSk7
Cit9CisKK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgTGVnYWN5Q29tcGxldGVUZXh0TWFuaXB1bGF0
aW9uUmVwbGFjZVNpbXBsZVNpbmdsZVBhcmFncmFwaCkKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0g
YWRvcHROUyhbW1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgX3NldFRleHRNYW5p
cHVsYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48cD5oZWxs
bG8sIHdvb29ybGQ8L3A+PC9ib2R5PjwvaHRtbD4iXTsKKworICAgIGRvbmUgPSBmYWxzZTsKKyAg
ICBbd2ViVmlldyBfc3RhcnRUZXh0TWFuaXB1bGF0aW9uc1dpdGhDb25maWd1cmF0aW9uOm5pbCBj
b21wbGV0aW9uOl57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisKKyAgICBhdXRvICppdGVtcyA9IFtkZWxlZ2F0ZSBp
dGVtc107CisgICAgRVhQRUNUX0VRKGl0ZW1zLmNvdW50LCAxVUwpOworICAgIEVYUEVDVF9FUShp
dGVtc1swXS50b2tlbnMuY291bnQsIDFVTCk7CisgICAgRVhQRUNUX1NUUkVRKCJoZWxsbG8sIHdv
b29ybGQiLCBpdGVtc1swXS50b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKKwogICAgIGRv
bmUgPSBmYWxzZTsKICAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uOihfV0tU
ZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgewog
ICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAImhlbGxvLCB3b3JsZCIg
fSwKLSAgICB9KS5nZXQoKSBjb21wbGV0aW9uOl4oQk9PTCBzdWNjZXNzKSB7CisgICAgfSkgY29t
cGxldGlvbjpeKEJPT0wgc3VjY2VzcykgewogICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsK
ICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CkBAIC00OTcsMTggKzU5MSwxOCBAQCBURVNU
KFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkRpc2dhcmRzVG9rZW5z
KQogICAgIEVYUEVDVF9TVFJFUSgiV2ViS2l0IiwgaXRlbXNbMF0udG9rZW5zWzNdLmNvbnRlbnQu
VVRGOFN0cmluZyk7CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NvbXBsZXRl
VGV4dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0
ZW1zWzBdLmlkZW50aWZpZXIsIHsKKyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0
aW9uRm9ySXRlbXM6QFsoX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1z
WzBdLmlkZW50aWZpZXIsIHsKICAgICAgICAgeyBpdGVtc1swXS50b2tlbnNbMF0uaWRlbnRpZmll
ciwgQCJoZWxsbywgIiB9LAogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1szXS5pZGVudGlmaWVy
LCBAIldlYktpdCIgfSwKLSAgICB9KS5nZXQoKSBjb21wbGV0aW9uOl4oQk9PTCBzdWNjZXNzKSB7
Ci0gICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIH0pXSBjb21wbGV0aW9uOl4oTlNB
cnJheTxOU0Vycm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmls
KTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoIjxwPmhlbGxvLCA8aT5XZWJLaXQ8
L2k+PC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5ib2R5LmlubmVySFRNTCJdKTsKIH0KIAotVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0
ZVRleHRNYW5pcHVsYXRpb25SZXBsYWNlU2ltcGxlUGFyYWdyYXBoQ29udGVudCkKK1RFU1QoVGV4
dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZU11bHRpcGxlU2lt
cGxlUGFyYWdyYXBocykKIHsKICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRNYW5p
cHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwg
NDAwLCA0MDApXSk7CkBAIC01MzUsMTMgKzYyOSwxMyBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24s
IENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvblJlcGxhY2VTaW1wbGVQYXJhZ3JhcGhDb250ZW50KQog
ICAgIEVYUEVDVF9TVFJFUSgiY3V1dXRlIiwgaXRlbXNbMV0udG9rZW5zWzNdLmNvbnRlbnQuVVRG
OFN0cmluZyk7CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4
dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1z
WzFdLmlkZW50aWZpZXIsIHsKKyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9u
Rm9ySXRlbXM6QFsoX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1zWzFd
LmlkZW50aWZpZXIsIHsKICAgICAgICAgeyBpdGVtc1sxXS50b2tlbnNbMF0uaWRlbnRpZmllciwg
QCJIZWxsbywgIiB9LAogICAgICAgICB7IGl0ZW1zWzFdLnRva2Vuc1sxXS5pZGVudGlmaWVyLCBA
ImtpdHRlbnMiIH0sCiAgICAgICAgIHsgaXRlbXNbMV0udG9rZW5zWzJdLmlkZW50aWZpZXIsIEAi
IGFyZSAiIH0sCiAgICAgICAgIHsgaXRlbXNbMV0udG9rZW5zWzNdLmlkZW50aWZpZXIsIEAiY3V0
ZSIgfSwKLSAgICB9KS5nZXQoKSBjb21wbGV0aW9uOl4oQk9PTCBzdWNjZXNzKSB7Ci0gICAgICAg
IEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIH0pXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vy
cm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKICAgICAg
ICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKQEAgLTU0OSwxMCArNjQzLDUzIEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxl
dGVUZXh0TWFuaXB1bGF0aW9uUmVwbGFjZVNpbXBsZVBhcmFncmFwaENvbnRlbnQpCiAgICAgICAg
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5Lmlu
bmVySFRNTCJdKTsKIAogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY29tcGxldGVU
ZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRl
bXNbMF0uaWRlbnRpZmllciwgeworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRp
b25Gb3JJdGVtczpAWyhfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRlbXNb
MF0uaWRlbnRpZmllciwgewogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVy
LCBAIkhlbGxvLCB3b3JsZC4iIH0sCi0gICAgfSkuZ2V0KCkgY29tcGxldGlvbjpeKEJPT0wgc3Vj
Y2VzcykgewotICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICB9KV0gY29tcGxldGlv
bjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJv
cnMsIG5pbCk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCI8cD5IZWxsbywgd29y
bGQuPC9wPjxwPkhlbGxvLCA8Yj5raXR0ZW5zPC9iPiBhcmUgPGVtPmN1dGU8L2VtPjwvcD4iLAor
ICAgICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
Ym9keS5pbm5lckhUTUwiXSk7Cit9CisKK1RFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVU
ZXh0TWFuaXB1bGF0aW9uUmVwbGFjZU11bHRpcGxlU2ltcGxlUGFyYWdyYXBoc0F0T25jZSkKK3sK
KyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAg
W3dlYlZpZXcgX3NldFRleHRNYW5pcHVsYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8IURPQ1RZUEUgaHRt
bD4iCisgICAgICAgICI8aHRtbD48Ym9keT48cD5oZWxsbG8sIHdvb29ybGQ8L3A+PHA+IGhleSwg
PGI+IEtpdHM8L2I+IGlzIDxlbT5jdXV1dGU8L2VtPjwvcD48L2JvZHk+PC9odG1sPiJdOworCisg
ICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0
aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb246XnsKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKworICAgIGF1dG8g
Kml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKKyAgICBFWFBFQ1RfRVEoaXRlbXMuY291bnQsIDJV
TCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5jb3VudCwgMVVMKTsKKyAgICBFWFBF
Q1RfU1RSRVEoImhlbGxsbywgd29vb3JsZCIsIGl0ZW1zWzBdLnRva2Vuc1swXS5jb250ZW50LlVU
RjhTdHJpbmcpOworCisgICAgRVhQRUNUX0VRKGl0ZW1zWzFdLnRva2Vucy5jb3VudCwgNFVMKTsK
KyAgICBFWFBFQ1RfU1RSRVEoImhleSwgIiwgaXRlbXNbMV0udG9rZW5zWzBdLmNvbnRlbnQuVVRG
OFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCJLaXRzIiwgaXRlbXNbMV0udG9rZW5zWzFdLmNv
bnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCIgaXMgIiwgaXRlbXNbMV0udG9r
ZW5zWzJdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisgICAgRVhQRUNUX1NUUkVRKCJjdXV1dGUiLCBp
dGVtc1sxXS50b2tlbnNbM10uY29udGVudC5VVEY4U3RyaW5nKTsKKworICAgIGRvbmUgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6QFsoX1dL
VGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1zWzFdLmlkZW50aWZpZXIsIHsK
KyAgICAgICAgeyBpdGVtc1sxXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJIZWxsbywgIiB9LAor
ICAgICAgICB7IGl0ZW1zWzFdLnRva2Vuc1sxXS5pZGVudGlmaWVyLCBAImtpdHRlbnMiIH0sCisg
ICAgICAgIHsgaXRlbXNbMV0udG9rZW5zWzJdLmlkZW50aWZpZXIsIEAiIGFyZSAiIH0sCisgICAg
ICAgIHsgaXRlbXNbMV0udG9rZW5zWzNdLmlkZW50aWZpZXIsIEAiY3V0ZSIgfSwKKyAgICB9KSwg
KF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRlbShpdGVtc1swXS5pZGVudGlmaWVy
LCB7CisgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiSGVsbG8sIHdv
cmxkLiIgfSwKKyAgICB9KV0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3Jz
KSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMsIG5pbCk7CiAgICAgICAgIGRvbmUgPSB0cnVl
OwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CkBAIC01NjAs
NiArNjk3LDM1IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0
aW9uUmVwbGFjZVNpbXBsZVBhcmFncmFwaENvbnRlbnQpCiAgICAgICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsKIH0K
IAorVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25TaG91bGRC
YXRjaEl0ZW1DYWxsYmFjaykKK3sKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW1RleHRN
YW5pcHVsYXRpb25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgX3NldFRleHRNYW5pcHVsYXRpb25EZWxlZ2F0
ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6QCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48L2JvZHk+PC9odG1sPiJdOworCisg
ICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWwgPSAnJzsgZm9y
IChsZXQgaSA9IDA7IGkgPCAyMDAwOyArK2kpIGh0bWwgKz0gYDxwPmhlbGxvICR7aX08L3A+YDsg
ZG9jdW1lbnQuYm9keS5pbm5lckhUTUwgPSBodG1sOyJdOworCisgICAgZG9uZSA9IGZhbHNlOwor
ICAgIF9fYmxvY2sgdW5zaWduZWQgaXRlbUxpc3RDYWxsYmFja0NvdW50ID0gMDsKKyAgICBkZWxl
Z2F0ZS5nZXQoKS5pdGVtTGlzdENhbGxiYWNrID0gXihOU0FycmF5PF9XS1RleHRNYW5pcHVsYXRp
b25JdGVtICo+ICppdGVtcykgeworICAgICAgICBpdGVtTGlzdENhbGxiYWNrQ291bnQrKzsKKyAg
ICB9OworICAgIFt3ZWJWaWV3IF9zdGFydFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3VyYXRp
b246bmlsIGNvbXBsZXRpb246XnsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBFWFBFQ1RfR0UoaXRlbUxpc3RD
YWxsYmFja0NvdW50LCAyVUwpOworCisgICAgYXV0byAqaXRlbXMgPSBbZGVsZWdhdGUgaXRlbXNd
OyAgICAKKyAgICBFWFBFQ1RfRVEoaXRlbXMuY291bnQsIDIwMDBVTCk7CisgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IDIwMDA7ICsraSkgeworICAgICAgICBFWFBFQ1RfRVEoaXRlbXNbaV0u
dG9rZW5zLmNvdW50LCAxVUwpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEobWFrZVN0cmluZygi
aGVsbG8gIiwgaSksIGl0ZW1zW2ldLnRva2Vuc1swXS5jb250ZW50LlVURjhTdHJpbmcpOworICAg
IH0KK30KKwogVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25S
ZW9yZGVyc0NvbnRlbnQpCiB7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXh0TWFu
aXB1bGF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTU4NCwxMiArNzUwLDEyIEBAIFRF
U1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUmVvcmRlcnNDb250
ZW50KQogICAgIEVYUEVDVF9TVFJFUSgiIGFyZSIsIGl0ZW1zWzBdLnRva2Vuc1szXS5jb250ZW50
LlVURjhTdHJpbmcpOwogCiAgICAgZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9jb21wbGV0
ZVRleHRNYW5pcHVsYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRlbShp
dGVtc1swXS5pZGVudGlmaWVyLCB7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxh
dGlvbkZvckl0ZW1zOkBbKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRlbShpdGVt
c1swXS5pZGVudGlmaWVyLCB7CiAgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzJdLmlkZW50aWZp
ZXIsIEAiSSIgfSwKICAgICAgICAgeyBpdGVtc1swXS50b2tlbnNbM10uaWRlbnRpZmllciwgQCIn
bSBhICIgfSwKICAgICAgICAgeyBpdGVtc1swXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJjYXQi
IH0sCi0gICAgfSkuZ2V0KCkgY29tcGxldGlvbjpeKEJPT0wgc3VjY2VzcykgewotICAgICAgICBF
WFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICB9KS5nZXQoKV0gY29tcGxldGlvbjpeKE5TQXJyYXk8
TlNFcnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMsIG5pbCk7CiAg
ICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CkBAIC02MjAsMTIgKzc4NiwxMiBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENv
bXBsZXRlVGV4dE1hbmlwdWxhdGlvbkNhblNwbGl0Q29udGVudCkKICAgICBFWFBFQ1RfU1RSRVEo
IiBXZWJLaXQiLCBpdGVtc1swXS50b2tlbnNbMV0uY29udGVudC5VVEY4U3RyaW5nKTsKIAogICAg
IGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uOihf
V0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwg
eworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAWyhfV0tU
ZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgewog
ICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAImhlbGxvIiB9LAogICAg
ICAgICB7IGl0ZW1zWzBdLnRva2Vuc1sxXS5pZGVudGlmaWVyLCBAIiBXZWJLaXQgIiB9LAogICAg
ICAgICB7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAIndvcmxkIiB9LAotICAgIH0p
LmdldCgpIGNvbXBsZXRpb246XihCT09MIHN1Y2Nlc3MpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUo
c3VjY2Vzcyk7CisgICAgfSldIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVycm9y
cykgeworICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLCBuaWwpOwogICAgICAgICBkb25lID0gdHJ1
ZTsKICAgICB9XTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwpAQCAtNjU3
LDE3ICs4MjMsODggQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVs
YXRpb25DYW5NZXJnZUNvbnRlbnQpCiAgICAgRVhQRUNUX1NUUkVRKCIgV2ViS2l0IiwgaXRlbXNb
MF0udG9rZW5zWzJdLmNvbnRlbnQuVVRGOFN0cmluZyk7CiAKICAgICBkb25lID0gZmFsc2U7Ci0g
ICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlv
bkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsKKyAgICBbd2ViVmlldyBf
Y29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6QFsoX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW0gKiljcmVhdGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsKICAgICAgICAgeyBpdGVtc1sw
XS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJoZWxsbyAiIH0sCiAgICAgICAgIHsgaXRlbXNbMF0u
dG9rZW5zWzJdLmlkZW50aWZpZXIsIEAid29ybGQiIH0sCi0gICAgfSkuZ2V0KCkgY29tcGxldGlv
bjpeKEJPT0wgc3VjY2VzcykgewotICAgICAgICBFWFBFQ1RfVFJVRShzdWNjZXNzKTsKKyAgICB9
KV0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVY
UEVDVF9FUShlcnJvcnMsIG5pbCk7CiAgICAgICAgIGRvbmUgPSB0cnVlOwogICAgIH1dOwogICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgRVhQRUNUX1dLX1NUUkVRKCI8
cD48Yj5oZWxsbyB3b3JsZDwvYj48L3A+IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MIl0pOwogfQogCitURVNUKFRleHRNYW5p
cHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZhaWxXaGVuSXRlbUlkZW50aWZpZXJJ
c0R1cGxpY2F0ZWQpCit7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXh0TWFuaXB1
bGF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQw
MCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IF9zZXRUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGU6ZGVs
ZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAiPCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PHA+aGVsbG8sIDxiPndvcmxkPC9iPjwvcD48
L2JvZHk+PC9odG1sPiJdOworCisgICAgZG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IF9zdGFy
dFRleHRNYW5pcHVsYXRpb25zV2l0aENvbmZpZ3VyYXRpb246bmlsIGNvbXBsZXRpb246XnsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKworICAgIGF1dG8gKml0ZW1zID0gW2RlbGVnYXRlIGl0ZW1zXTsKKyAgICBFWFBF
Q1RfRVEoaXRlbXMuY291bnQsIDFVTCk7CisgICAgRVhQRUNUX0VRKGl0ZW1zWzBdLnRva2Vucy5j
b3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfU1RSRVEoImhlbGxvLCAiLCBpdGVtc1swXS50b2tlbnNb
MF0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfU1RSRVEoIndvcmxkIiwgaXRlbXNb
MF0udG9rZW5zWzFdLmNvbnRlbnQuVVRGOFN0cmluZyk7CisKKyAgICBkb25lID0gZmFsc2U7Cisg
ICAgYXV0byBmaXJzdEl0ZW0gPSBjcmVhdGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsgeyBp
dGVtc1swXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJkb25lIiB9IH0pOworICAgIF9fYmxvY2sg
YXV0byBzZWNvbmRJdGVtID0gY3JlYXRlSXRlbShpdGVtc1swXS5pZGVudGlmaWVyLCB7IHsgaXRl
bXNbMF0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiYmFkIiB9IH0pOworICAgIFt3ZWJWaWV3IF9j
b21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAW2ZpcnN0SXRlbS5nZXQoKSwgc2Vjb25k
SXRlbS5nZXQoKV0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3JzKSB7Cisg
ICAgICAgIEVYUEVDVF9FUShlcnJvcnMuY291bnQsIDFVTCk7CisgICAgICAgIEVYUEVDVF9FUShl
cnJvcnMuZmlyc3RPYmplY3QuZG9tYWluLCBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yRG9t
YWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycy5maXJzdE9iamVjdC5jb2RlLCBfV0tUZXh0
TWFuaXB1bGF0aW9uSXRlbUVycm9ySW52YWxpZEl0ZW0pOworICAgICAgICBFWFBFQ1RfRVEoZXJy
b3JzLmZpcnN0T2JqZWN0LnVzZXJJbmZvW19XS1RleHRNYW5pcHVsYXRpb25JdGVtRXJyb3JJdGVt
S2V5XSwgc2Vjb25kSXRlbS5nZXQoKSk7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCI8cD5kb25lPC9wPiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5ib2R5LmlubmVySFRNTCJdKTsKK30KKworVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBD
b21wbGV0ZVRleHRNYW5pcHVsYXRpb25DYW5IYW5kbGVTdWJzZXRPZkl0ZW1zVG9GYWlsKQorewor
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbVGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlIGFs
bG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKKyAgICBb
d2ViVmlldyBfc2V0VGV4dE1hbmlwdWxhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjwhRE9DVFlQRSBodG1s
PjxodG1sPjxib2R5PjxwPmhleSwgPGI+ZHVkZTwvYj48L3A+PHA+dGhpcyBpcyA8Yj5iYWQ8L2I+
PC9wPjwvYm9keT48L2h0bWw+Il07CisKKyAgICBkb25lID0gZmFsc2U7CisgICAgW3dlYlZpZXcg
X3N0YXJ0VGV4dE1hbmlwdWxhdGlvbnNXaXRoQ29uZmlndXJhdGlvbjpuaWwgY29tcGxldGlvbjpe
eworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmRvbmUpOworCisgICAgYXV0byAqaXRlbXMgPSBbZGVsZWdhdGUgaXRlbXNdOworICAg
IEVYUEVDVF9FUShpdGVtcy5jb3VudCwgMlVMKTsKKyAgICBFWFBFQ1RfRVEoaXRlbXNbMF0udG9r
ZW5zLmNvdW50LCAyVUwpOworICAgIEVYUEVDVF9TVFJFUSgiaGV5LCAiLCBpdGVtc1swXS50b2tl
bnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfU1RSRVEoImR1ZGUiLCBpdGVt
c1swXS50b2tlbnNbMV0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfRVEoaXRlbXNb
MV0udG9rZW5zLmNvdW50LCAyVUwpOworICAgIEVYUEVDVF9TVFJFUSgidGhpcyBpcyAiLCBpdGVt
c1sxXS50b2tlbnNbMF0uY29udGVudC5VVEY4U3RyaW5nKTsKKyAgICBFWFBFQ1RfU1RSRVEoImJh
ZCIsIGl0ZW1zWzFdLnRva2Vuc1sxXS5jb250ZW50LlVURjhTdHJpbmcpOworCisgICAgZG9uZSA9
IGZhbHNlOworICAgIF9fYmxvY2sgYXV0byBmaXJzdEl0ZW0gPSBjcmVhdGVJdGVtKGl0ZW1zWzBd
LmlkZW50aWZpZXIsIHsgeyBpdGVtc1sxXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJiYWQiIH0g
fSk7CisgICAgYXV0byBzZWNvbmRJdGVtID0gY3JlYXRlSXRlbShpdGVtc1sxXS5pZGVudGlmaWVy
LCB7IHsgaXRlbXNbMV0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiZ29vZCIgfSB9KTsKKyAgICBb
d2ViVmlldyBfY29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRm9ySXRlbXM6QFtmaXJzdEl0ZW0uZ2V0
KCksIHNlY29uZEl0ZW0uZ2V0KCldIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVy
cm9ycykgeworICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLmNvdW50LCAxVUwpOworICAgICAgICBF
WFBFQ1RfRVEoZXJyb3JzLmZpcnN0T2JqZWN0LmRvbWFpbiwgX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcnJvckRvbWFpbik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuZmlyc3RPYmplY3QuY29k
ZSwgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckludmFsaWRUb2tlbik7CisgICAgICAgIEVY
UEVDVF9FUShlcnJvcnMuZmlyc3RPYmplY3QudXNlckluZm9bX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcnJvckl0ZW1LZXldLCBmaXJzdEl0ZW0uZ2V0KCkpOworICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIEVYUEVD
VF9XS19TVFJFUSgiPHA+aGV5LCA8Yj5kdWRlPC9iPjwvcD48cD5nb29kPC9wPiIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmlubmVySFRNTCJd
KTsKK30KKwogVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25G
YWlsV2hlbkNvbnRlbnRJc0NoYW5nZWQpCiB7CiAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tUZXh0TWFuaXB1bGF0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKQEAgLTY5MywxMiArOTMw
LDE2IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRmFp
bFdoZW5Db250ZW50SXNDaGFuZ2VkKQogICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdlbScpLm5leHRTaWJsaW5nLmRhdGEg
PSAnIGlzIGl0IG5vdyBpbiBMb25kb24/JyJdOwogCiAgICAgZG9uZSA9IGZhbHNlOwotICAgIFt3
ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25JdGVt
ICopY3JlYXRlSXRlbShpdGVtc1swXS5pZGVudGlmaWVyLCB7CisgICAgX19ibG9jayBhdXRvIGl0
ZW0gPSBjcmVhdGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsKICAgICAgICAgeyBpdGVtc1sw
XS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJXaGF0ICIgfSwKICAgICAgICAgeyBpdGVtc1swXS50
b2tlbnNbMV0uaWRlbnRpZmllciwgQCJ0aW1lIiB9LAogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vu
c1syXS5pZGVudGlmaWVyLCBAIiBpcyBpdCBub3c/IiB9LAotICAgIH0pLmdldCgpIGNvbXBsZXRp
b246XihCT09MIHN1Y2Nlc3MpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworICAg
IH0pOworICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAW2l0
ZW0uZ2V0KCldIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykgeworICAg
ICAgICBFWFBFQ1RfRVEoZXJyb3JzLmNvdW50LCAxVUwpOworICAgICAgICBFWFBFQ1RfRVEoZXJy
b3JzLmZpcnN0T2JqZWN0LmRvbWFpbiwgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckRvbWFp
bik7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuZmlyc3RPYmplY3QuY29kZSwgX1dLVGV4dE1h
bmlwdWxhdGlvbkl0ZW1FcnJvckNvbnRlbnRDaGFuZ2VkKTsKKyAgICAgICAgRVhQRUNUX0VRKGVy
cm9ycy5maXJzdE9iamVjdC51c2VySW5mb1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9ySXRl
bUtleV0sIGl0ZW0uZ2V0KCkpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKICAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwpAQCAtNzI4LDEwICs5NjksMTQgQEAgVEVT
VChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRpb25GYWlsV2hlbkNvbnRl
bnRJc1JlbW92ZWQpCiAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJ25ldyBjb250ZW50JyJdOwogCiAgICAgZG9uZSA9
IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb246KF9XS1RleHRN
YW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRlbShpdGVtc1swXS5pZGVudGlmaWVyLCB7CisgICAg
X19ibG9jayBhdXRvIGl0ZW0gPSBjcmVhdGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsKICAg
ICAgICAgeyBpdGVtc1swXS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJoZXkiIH0sCi0gICAgfSku
Z2V0KCkgY29tcGxldGlvbjpeKEJPT0wgc3VjY2VzcykgewotICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3VjY2Vzcyk7CisgICAgfSk7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlv
bkZvckl0ZW1zOkBbaXRlbS5nZXQoKV0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAq
ZXJyb3JzKSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuY291bnQsIDFVTCk7CisgICAgICAg
IEVYUEVDVF9FUShlcnJvcnMuZmlyc3RPYmplY3QuZG9tYWluLCBfV0tUZXh0TWFuaXB1bGF0aW9u
SXRlbUVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycy5maXJzdE9iamVjdC5j
b2RlLCBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yQ29udGVudENoYW5nZWQpOworICAgICAg
ICBFWFBFQ1RfRVEoZXJyb3JzLmZpcnN0T2JqZWN0LnVzZXJJbmZvW19XS1RleHRNYW5pcHVsYXRp
b25JdGVtRXJyb3JJdGVtS2V5XSwgaXRlbS5nZXQoKSk7CiAgICAgICAgIGRvbmUgPSB0cnVlOwog
ICAgIH1dOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CkBAIC03NjksMTEg
KzEwMTQsMTUgQEAgVEVTVChUZXh0TWFuaXB1bGF0aW9uLCBDb21wbGV0ZVRleHRNYW5pcHVsYXRp
b25GYWlsV2hlbkRvY3VtZW50SGFzQmVlbk5hdmlnYXRlZEEKICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOwogCiAgICAgZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9jb21w
bGV0ZVRleHRNYW5pcHVsYXRpb246KF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRl
bShpdGVtc1swXS5pZGVudGlmaWVyLCB7CisgICAgX19ibG9jayBhdXRvIGl0ZW0gPSBjcmVhdGVJ
dGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsKICAgICAgICAgeyBpdGVtc1swXS50b2tlbnNbMF0u
aWRlbnRpZmllciwgQCJoZWxsbywgIiB9LAogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1sxXS5p
ZGVudGlmaWVyLCBAIndvcmxkIiB9LAotICAgIH0pLmdldCgpIGNvbXBsZXRpb246XihCT09MIHN1
Y2Nlc3MpIHsKLSAgICAgICAgRVhQRUNUX0ZBTFNFKHN1Y2Nlc3MpOworICAgIH0pOworICAgIFt3
ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAW2l0ZW0uZ2V0KCldIGNv
bXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykgeworICAgICAgICBFWFBFQ1Rf
RVEoZXJyb3JzLmNvdW50LCAxVUwpOworICAgICAgICBFWFBFQ1RfRVEoZXJyb3JzLmZpcnN0T2Jq
ZWN0LmRvbWFpbiwgX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW1FcnJvckRvbWFpbik7CisgICAgICAg
IEVYUEVDVF9FUShlcnJvcnMuZmlyc3RPYmplY3QuY29kZSwgX1dLVGV4dE1hbmlwdWxhdGlvbkl0
ZW1FcnJvckludmFsaWRJdGVtKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycy5maXJzdE9iamVj
dC51c2VySW5mb1tfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9ySXRlbUtleV0sIGl0ZW0uZ2V0
KCkpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsKIApAQCAtODA3LDExICsxMDU2LDE1
IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uRmFpbFdo
ZW5FeGNsdXNpb25Jc1Zpb2xhdGVkKQogICAgIEVYUEVDVF9TVFJFUSgiV2ViS2l0dGVuIiwgaXRl
bXNbMF0udG9rZW5zWzFdLmNvbnRlbnQuVVRGOFN0cmluZyk7CiAKICAgICBkb25lID0gZmFsc2U7
Ci0gICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxh
dGlvbkl0ZW0gKiljcmVhdGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsKKyAgICBfX2Jsb2Nr
IGF1dG8gaXRlbSA9IGNyZWF0ZUl0ZW0oaXRlbXNbMF0uaWRlbnRpZmllciwgewogICAgICAgICB7
IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBAIkhlbGxvLCIgfSwKICAgICAgICAgeyBp
dGVtc1swXS50b2tlbnNbMV0uaWRlbnRpZmllciwgQCJXZWJLaXQiIH0sCi0gICAgfSkuZ2V0KCkg
Y29tcGxldGlvbjpeKEJPT0wgc3VjY2VzcykgewotICAgICAgICBFWFBFQ1RfRkFMU0Uoc3VjY2Vz
cyk7CisgICAgfSk7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0
ZW1zOkBbaXRlbS5nZXQoKV0gY29tcGxldGlvbjpeKE5TQXJyYXk8TlNFcnJvciAqPiAqZXJyb3Jz
KSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuY291bnQsIDFVTCk7CisgICAgICAgIEVYUEVD
VF9FUShlcnJvcnMuZmlyc3RPYmplY3QuZG9tYWluLCBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVy
cm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycy5maXJzdE9iamVjdC5jb2RlLCBf
V0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yRXhjbHVzaW9uVmlvbGF0aW9uKTsKKyAgICAgICAg
RVhQRUNUX0VRKGVycm9ycy5maXJzdE9iamVjdC51c2VySW5mb1tfV0tUZXh0TWFuaXB1bGF0aW9u
SXRlbUVycm9ySXRlbUtleV0sIGl0ZW0uZ2V0KCkpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAg
ICB9XTsKIApAQCAtODQ2LDEyICsxMDk5LDE2IEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgQ29t
cGxldGVUZXh0TWFuaXB1bGF0aW9uRmFpbFdoZW5FeGNsdWRlZENvbnRlbnRBcHBlYXJzTW9yCiAg
ICAgRVhQRUNUX1NUUkVRKCJXZWJLaXR0ZW4iLCBpdGVtc1swXS50b2tlbnNbMV0uY29udGVudC5V
VEY4U3RyaW5nKTsKIAogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY29tcGxldGVU
ZXh0TWFuaXB1bGF0aW9uOihfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oaXRl
bXNbMF0uaWRlbnRpZmllciwgeworICAgIF9fYmxvY2sgYXV0byBpdGVtID0gY3JlYXRlSXRlbShp
dGVtc1swXS5pZGVudGlmaWVyLCB7CiAgICAgICAgIHsgaXRlbXNbMF0udG9rZW5zWzFdLmlkZW50
aWZpZXIsIG5pbCB9LAogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1swXS5pZGVudGlmaWVyLCBA
IkhlbGxvLCIgfSwKICAgICAgICAgeyBpdGVtc1swXS50b2tlbnNbMV0uaWRlbnRpZmllciwgbmls
IH0sCi0gICAgfSkuZ2V0KCkgY29tcGxldGlvbjpeKEJPT0wgc3VjY2VzcykgewotICAgICAgICBF
WFBFQ1RfRkFMU0Uoc3VjY2Vzcyk7CisgICAgfSk7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4
dE1hbmlwdWxhdGlvbkZvckl0ZW1zOkBbaXRlbS5nZXQoKV0gY29tcGxldGlvbjpeKE5TQXJyYXk8
TlNFcnJvciAqPiAqZXJyb3JzKSB7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuY291bnQsIDFV
TCk7CisgICAgICAgIEVYUEVDVF9FUShlcnJvcnMuZmlyc3RPYmplY3QuZG9tYWluLCBfV0tUZXh0
TWFuaXB1bGF0aW9uSXRlbUVycm9yRG9tYWluKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycy5m
aXJzdE9iamVjdC5jb2RlLCBfV0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9yRXhjbHVzaW9uVmlv
bGF0aW9uKTsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycy5maXJzdE9iamVjdC51c2VySW5mb1tf
V0tUZXh0TWFuaXB1bGF0aW9uSXRlbUVycm9ySXRlbUtleV0sIGl0ZW0uZ2V0KCkpOwogICAgICAg
ICBkb25lID0gdHJ1ZTsKICAgICB9XTsKIApAQCAtODg1LDExICsxMTQyLDExIEBAIFRFU1QoVGV4
dE1hbmlwdWxhdGlvbiwgQ29tcGxldGVUZXh0TWFuaXB1bGF0aW9uUHJlc2VydmVzRXhjbHVkZWRD
b250ZW50KQogICAgIEVYUEVDVF9TVFJFUSgiV2ViS2l0dGVuIiwgaXRlbXNbMF0udG9rZW5zWzFd
LmNvbnRlbnQuVVRGOFN0cmluZyk7CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcg
X2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVh
dGVJdGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsKKyAgICBbd2ViVmlldyBfY29tcGxldGVUZXh0
TWFuaXB1bGF0aW9uRm9ySXRlbXM6QFsoX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJ
dGVtKGl0ZW1zWzBdLmlkZW50aWZpZXIsIHsKICAgICAgICAgeyBpdGVtc1swXS50b2tlbnNbMF0u
aWRlbnRpZmllciwgQCJIZWxsbywgIiB9LAogICAgICAgICB7IGl0ZW1zWzBdLnRva2Vuc1sxXS5p
ZGVudGlmaWVyLCBuaWwgfSwKLSAgICB9KS5nZXQoKSBjb21wbGV0aW9uOl4oQk9PTCBzdWNjZXNz
KSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIH0pXSBjb21wbGV0aW9uOl4o
TlNBcnJheTxOU0Vycm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywg
bmlsKTsKICAgICAgICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAKQEAgLTkyNSwxMiArMTE4Miwx
MiBAQCBURVNUKFRleHRNYW5pcHVsYXRpb24sIENvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkRvZXNO
b3RDcmVhdGVNb3JlVGV4dE1hbmlwdWxhdGlvbgogICAgIH1dOwogCiAgICAgZG9uZSA9IGZhbHNl
OwotICAgIFt3ZWJWaWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb246KF9XS1RleHRNYW5pcHVs
YXRpb25JdGVtICopY3JlYXRlSXRlbShmaXJzdEl0ZW0uaWRlbnRpZmllciwgeworICAgIFt3ZWJW
aWV3IF9jb21wbGV0ZVRleHRNYW5pcHVsYXRpb25Gb3JJdGVtczpAWyhfV0tUZXh0TWFuaXB1bGF0
aW9uSXRlbSAqKWNyZWF0ZUl0ZW0oZmlyc3RJdGVtLmlkZW50aWZpZXIsIHsKICAgICAgICAgeyBm
aXJzdEl0ZW0udG9rZW5zWzBdLmlkZW50aWZpZXIsIEAiYmFyICIgfSwKICAgICAgICAgeyBmaXJz
dEl0ZW0udG9rZW5zWzFdLmlkZW50aWZpZXIsIEAiZ2FycGx5IiB9LAogICAgICAgICB7IGZpcnN0
SXRlbS50b2tlbnNbMl0uaWRlbnRpZmllciwgQCIgZm9vIiB9LAotICAgIH0pLmdldCgpIGNvbXBs
ZXRpb246XihCT09MIHN1Y2Nlc3MpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7Cisg
ICAgfSldIGNvbXBsZXRpb246XihOU0FycmF5PE5TRXJyb3IgKj4gKmVycm9ycykgeworICAgICAg
ICBFWFBFQ1RfRVEoZXJyb3JzLCBuaWwpOwogICAgICAgICBkb25lID0gdHJ1ZTsKICAgICB9XTsK
IApAQCAtOTcxLDExICsxMjI4LDExIEBAIFRFU1QoVGV4dE1hbmlwdWxhdGlvbiwgSW5zZXJ0aW5n
Q29udGVudEludG9BbHJlYWR5TWFuaXB1bGF0ZWRDb250ZW50RG9lc05vdENyZWF0CiAgICAgfV07
CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxh
dGlvbjooX1dLVGV4dE1hbmlwdWxhdGlvbkl0ZW0gKiljcmVhdGVJdGVtKGZpcnN0SXRlbS5pZGVu
dGlmaWVyLCB7CisgICAgW3dlYlZpZXcgX2NvbXBsZXRlVGV4dE1hbmlwdWxhdGlvbkZvckl0ZW1z
OkBbKF9XS1RleHRNYW5pcHVsYXRpb25JdGVtICopY3JlYXRlSXRlbShmaXJzdEl0ZW0uaWRlbnRp
ZmllciwgewogICAgICAgICB7IGZpcnN0SXRlbS50b2tlbnNbMF0uaWRlbnRpZmllciwgQCJoZWxs
bywiIH0sCiAgICAgICAgIHsgZmlyc3RJdGVtLnRva2Vuc1sxXS5pZGVudGlmaWVyLCBAIiB3b3Js
ZCIgfSwKLSAgICB9KS5nZXQoKSBjb21wbGV0aW9uOl4oQk9PTCBzdWNjZXNzKSB7Ci0gICAgICAg
IEVYUEVDVF9UUlVFKHN1Y2Nlc3MpOworICAgIH0pXSBjb21wbGV0aW9uOl4oTlNBcnJheTxOU0Vy
cm9yICo+ICplcnJvcnMpIHsKKyAgICAgICAgRVhQRUNUX0VRKGVycm9ycywgbmlsKTsKICAgICAg
ICAgZG9uZSA9IHRydWU7CiAgICAgfV07CiAK
</data>
<flag name="review"
          id="407775"
          type_id="1"
          status="+"
          setter="wenson_hsieh"
    />
          </attachment>
      

    </bug>

</bugzilla>