<?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>212097</bug_id>
          
          <creation_ts>2020-05-19 11:41:10 -0700</creation_ts>
          <short_desc>Blue dotted underline with alternatives only shown for last word, gets lost for previous insertions</short_desc>
          <delta_ts>2020-05-19 17:05:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=212093</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=212098</see_also>
          <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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>mifenton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1654105</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-19 11:41:10 -0700</bug_when>
    <thetext>When space separated dictation alternatives are inserted only the last inserted one has blue dots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654107</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-19 11:41:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/61913405&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654149</commentid>
    <comment_count>2</comment_count>
      <attachid>399763</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-19 13:11:06 -0700</bug_when>
    <thetext>Created attachment 399763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654179</commentid>
    <comment_count>3</comment_count>
      <attachid>399763</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-19 14:16:02 -0700</bug_when>
    <thetext>Comment on attachment 399763
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/InsertTextAlternatives.mm:365
&gt; +    // FIXME: Set CSS white-space to workaround &lt;https://webkit.org/b/212093&gt;.

Actually, works around &lt;https://webkit.org/b/212098&gt; because space converted to no-break space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654181</commentid>
    <comment_count>4</comment_count>
      <attachid>399770</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-19 14:20:36 -0700</bug_when>
    <thetext>Created attachment 399770
Patch

Just cosmetic fixing of comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654186</commentid>
    <comment_count>5</comment_count>
      <attachid>399770</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-19 14:38:22 -0700</bug_when>
    <thetext>Comment on attachment 399770
Patch

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

&gt; Source/WebCore/ChangeLog:28
&gt; +        if it is a space or newline. This will be false when there is no preceeding character (e.g. start of document),

preceeding =&gt; preceding

&gt; Source/WebCore/ChangeLog:31
&gt; +        because that would incorrectly return false if the current selection is at the of a paragraph. I could have

the of =&gt; the end of

&gt; Source/WebCore/ChangeLog:35
&gt; +        start of the last word positions before mutating them. Update early returns checks to use these saved values

returns =&gt; return

&gt; Source/WebCore/ChangeLog:40
&gt; +        * editing/Editor.h: While I am here, fix up a param name to match the what it is called in the impl.

the what =&gt; what
impl =&gt; .cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654237</commentid>
    <comment_count>6</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-19 16:59:27 -0700</bug_when>
    <thetext>Thanks Darin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654243</commentid>
    <comment_count>7</comment_count>
      <attachid>399785</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-19 17:04:39 -0700</bug_when>
    <thetext>Created attachment 399785
To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654244</commentid>
    <comment_count>8</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-05-19 17:05:52 -0700</bug_when>
    <thetext>Committed r261897: &lt;https://trac.webkit.org/changeset/261897&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399763</attachid>
            <date>2020-05-19 13:11:06 -0700</date>
            <delta_ts>2020-05-19 14:20:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212097-20200519131105.patch</filename>
            <type>text/plain</type>
            <size>41701</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODU3ZTM5MmZhY2MyZGUz
NjE2OTY2MzQxNmRiYzc3OGI4ZmZjYTIyNi4uN2MwMmZmNjU4MzVhMTNkZDk2ZGUyZGIyYTRhMDk5
OTNhYmM4NTMyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA1LTE5ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBCbHVlIGRvdHRlZCB1bmRl
cmxpbmUgd2l0aCBhbHRlcm5hdGl2ZXMgb25seSBzaG93biBmb3IgbGFzdCB3b3JkLCBnZXRzIGxv
c3QgZm9yIHByZXZpb3VzIGluc2VydGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE5MTM0
MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
IHVwIHR3byBjYXNlcywgPHNwYWNlPiBpcyBhIGxpdGVyYWwgJyAnIGFuZCB8IGlzIHRoZSBwb3Np
dGlvbiBvZiB0aGUgY2FyZXQ6CisgICAgICAgICAgICAxLiBTcGFjZSBpbnNlcnRlZCBhZnRlciBt
YXJrZXIsIGhlcmUncyB3aGF0IGl0IGxvb2tzIGxpa2UgQkVGT1JFIGluc2VydGlvbiAoaS5lLiBl
bmRPZkZpcnN0V29yZCA9PSBzdGFydE9mU2VsZWN0aW9uKToKKyAgICAgICAgICAgICAgICBoZWxs
b3wKKworICAgICAgICAgICAgVGhpcyBjYXNlIGlzIGRldGVjdGVkIHdoZW4gdGhlIGVuZCBvZiB0
aGUgbmV4dCB3b3JkIChyZWxhdGl2ZSB0byBjYXJldCkgd291bGQgYmUgYXQgdGhlIHN0YXJ0IG9m
IHRoZQorICAgICAgICAgICAgd29yZCB0aGF0IGJlZ2lucyBiZWZvcmUgb3Igb24gdGhlIGNhcmV0
LgorCisgICAgICAgICAgICAyLiBTcGFjZSBpbnNlcnRlZCBiZWZvcmUgbWFya2VyLCBoZXJlJ3Mg
d2hhdCBpdCBsb29rcyBsaWtlIEJFRk9SRSBpbnNlcnRpb24gKGkuZS4gc3RhcnRPZkxhc3RXb3Jk
ID09IGVuZE9mU2VsZWN0aW9uKToKKyAgICAgICAgICAgICAgICB8aGVsbG8KKworICAgICAgICAg
ICAgVGhpcyBjYXNlIGlzIGRldGVjdGVkIHdoZW4gdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgd29y
ZCAocmVsYXRpdmUgdG8gY2FyZXQpIHdvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICAg
ICAgICB3b3JkIHRoYXQgZW5kcyBhZnRlciBvciBvbiB0aGUgY2FyZXQuCisKKyAgICAgICAgTm90
ZSBeXl4gZXhhbXBsZSB1c2VzIGEgY2FyZXQsIGJ1dCBjb2RlIGlzIHNsaWdodGx5IG1vcmUgZ2Vu
ZXJhbCBhbmQgd29ya3Mgd2hlbiB0aGUgY3VycmVudCBzZWxlY3Rpb24KKyAgICAgICAgaXMgYSBy
YW5nZS4gVGhvdWdoIEkgZGlkbid0IGV4cGxpY2l0bHkgdGVzdCB0aGF0IGJlY2F1c2UgbXkgYnVn
IGlzIHNwZWNpZmljIHRvIGhhdmluZyBhIGNhcmV0IHNlbGVjdGlvbi4KKworICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4dFdp
dGhvdXRTZW5kaW5nVGV4dEV2ZW50KTogRG8gbm90IHJlbW92ZSBtYXJrZXJzIGlmIHNlbGVjdGlv
biBzdGFydHMgYXQgdGhlCisgICAgICAgIGJlZ2lubmluZyBvZiBhIG5ldyB3b3JkLiBUaGlzIGlz
IGRldGVjdGVkIGJ5IGxvb2tpbmcgYXQgdGhlIGNoYXJhY3RlciBiZWZvcmUgdGhlIHNlbGVjdGlv
biBzdGFydCB0byBzZWUKKyAgICAgICAgaWYgaXQgaXMgYSBzcGFjZSBvciBuZXdsaW5lLiBUaGlz
IHdpbGwgYmUgZmFsc2Ugd2hlbiB0aGVyZSBpcyBubyBwcmVjZWVkaW5nIGNoYXJhY3RlciAoZS5n
LiBzdGFydCBvZiBkb2N1bWVudCksCisgICAgICAgIGJ1dCB0aGF0J3MgT0sgYmVjYXVzZSBpdCBk
b2Vzbid0IG1hdHRlciB3aGF0IHdlIHBhc3MgdG8gdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0
ZWRCeUVkaXRpbmcoKSAtIHRoZXJlJ3MKKyAgICAgICAgbm8gbWFya2VycyB0byByZW1vdmUgYW55
d2F5LCBsZXQgYWxvbmUgdGV4dCBmb3IgbWFya2VycyB0byBleGlzdCBpbi4gSSBkb24ndCB1c2Ug
aXNTdGFydE9mV29yZCgpIGhlcmUKKyAgICAgICAgYmVjYXVzZSB0aGF0IHdvdWxkIGluY29ycmVj
dGx5IHJldHVybiBmYWxzZSBpZiB0aGUgY3VycmVudCBzZWxlY3Rpb24gaXMgYXQgdGhlIG9mIGEg
cGFyYWdyYXBoLiBJIGNvdWxkIGhhdmUKKyAgICAgICAgZml4ZWQgdGhhdCB1cCBieSBjaGVja2lu
ZyBpc0VuZE9mUGFyYWdyYXBoKCkgYXMgd2VsbCwgYnV0IGlzU3RhcnRPZldvcmQoKSArIGlzRW5k
T2ZQYXJhZ3JhcGgoKSBpcyBsZXNzCisgICAgICAgIGVmZmljaWVudCB0aGFuIGp1c3QgbG9va2lu
ZyBhdCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIGRpcmVjdGx5LiBTbywgSSBkaWQgdGhhdCBpbnN0
ZWFkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZl
Y3RlZEJ5RWRpdGluZyk6IFNhdmUgb2ZmIHRoZSBvcmlnaW5hbCBlbmQgb2YgdGhlIGZpcnN0IHdv
cmQgYW5kCisgICAgICAgIHN0YXJ0IG9mIHRoZSBsYXN0IHdvcmQgcG9zaXRpb25zIGJlZm9yZSBt
dXRhdGluZyB0aGVtLiBVcGRhdGUgZWFybHkgcmV0dXJucyBjaGVja3MgdG8gdXNlIHRoZXNlIHNh
dmVkIHZhbHVlcworICAgICAgICBpbnN0ZWFkIG9mIGNvbXBhcmluZyBhZ2FpbnN0IHRoZSBzdGFy
dCBhbmQgZW5kIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiwgd2hpY2ggd2VyZW4ndCBjb3JyZWN0
LiBTYXZlZCBwb3NpdGlvbmVkCisgICAgICAgIGFyZSBhbGlnbmVkIGJ5IHdvcmQsIGJ1dCBzdGFy
dCBhbmQgZW5kIG9mIGN1cnJlbnQgc2VsZWN0aW9uIG1heSBOT1QgYmUuIFNvLCBjb21wYXJpc29u
IHdhcyBhc3ltbWV0cmljOiBsaHMgd2FzCisgICAgICAgIHdvcmQgYWxpZ25lZCBwb3NpdGlvbiwg
YnV0IHJocyBtYXkgbm90IGJlLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDogV2hpbGUg
SSBhbSBoZXJlLCBmaXggdXAgYSBwYXJhbSBuYW1lIHRvIG1hdGNoIHRoZSB3aGF0IGl0IGlzIGNh
bGxlZCBpbiB0aGUgaW1wbC4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2Vy
KTogQWRkZWQKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgQWRkIG5ldyBmdW5jdGlvbmFsaXR5IGZvciB0ZXN0
aW5nIHB1cnBvc2VzLgorCisKIDIwMjAtMDUtMDggIEFuZHJlcyBHb256YWxleiAgPGFuZHJlc2df
MjJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmb3IgY3Jhc2hlcyBpbiBMYXlvdXRUZXN0cyBp
biBpc29sYXRlZCB0cmVlIG1vZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggZjUy
NGE3ODEwOThlM2M3YzNlZTM1NGZmYTc2NzAyYTkzMWVmM2QzOS4uMTk4Yjg1ZTEwNTQ3ZGUwNDBi
OWU3Mjc1MzdkYWIwNTc5M2VmY2IwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAt
MTI2NSw3ICsxMjY1LDEwIEBAIGJvb2wgRWRpdG9yOjppbnNlcnRUZXh0V2l0aG91dFNlbmRpbmdU
ZXh0RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluCiAgICAgaWYgKCFzaG91
bGRJbnNlcnRUZXh0KHRleHQsIGNyZWF0ZUxpdmVSYW5nZShzZWxlY3Rpb24udG9Ob3JtYWxpemVk
UmFuZ2UoKSkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6VHlwZWQpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKIAotICAgIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5nKGlz
U3BhY2VPck5ld2xpbmUodGV4dFswXSkpOworICAgIC8vIEZJWE1FOiBTaG91bGQgcGFzcyBmYWxz
ZSB0byB1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZygpIHRvIG5vdCByZW1v
dmUgbWFya2VycyBpZgorICAgIC8vIGEgbGVhZGluZyBvciB0cmFpbGluZyBuby1icmVhayBzcGFj
ZSBpcyBiZWluZyBpbnNlcnRlZC4gU2VlIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTIwOTg+Lgor
ICAgIGJvb2wgaXNTdGFydE9mTmV3V29yZCA9IGlzU3BhY2VPck5ld2xpbmUoc2VsZWN0aW9uLnZp
c2libGVTdGFydCgpLmNoYXJhY3RlckJlZm9yZSgpKTsKKyAgICB1cGRhdGVNYXJrZXJzRm9yV29y
ZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHRbMF0pIHx8IGlzU3RhcnRP
Zk5ld1dvcmQpOwogCiAgICAgYm9vbCBzaG91bGRDb25zaWRlckFwcGx5aW5nQXV0b2NvcnJlY3Rp
b24gPSBmYWxzZTsKICAgICBpZiAodGV4dCA9PSAiICIgfHwgdGV4dCA9PSAiXHQiKQpAQCAtMzAx
NywxMiArMzAyMCwxNSBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0
ZWRCeUVkaXRpbmcoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9uQQogICAgICAgICBlbmRPZkxh
c3RXb3JkID0gZW5kT2ZXb3JkKGVuZE9mU2VsZWN0aW9uLCBMZWZ0V29yZElmT25Cb3VuZGFyeSk7
CiAgICAgfQogCisgICAgYXV0byBvcmlnaW5hbEVuZE9mRmlyc3RXb3JkID0gZW5kT2ZGaXJzdFdv
cmQ7CisgICAgYXV0byBvcmlnaW5hbFN0YXJ0T2ZMYXN0V29yZCA9IHN0YXJ0T2ZMYXN0V29yZDsK
KwogICAgIC8vIElmIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSBpcyB0cnVl
LCBhbmQgZmlyc3Qgd29yZCBlbmRzIGF0IHRoZSBzdGFydCBvZiBzZWxlY3Rpb24sCiAgICAgLy8g
d2UgY2hvb3NlIG5leHQgd29yZCBhcyB0aGUgZmlyc3Qgd29yZC4KICAgICBpZiAoZG9Ob3RSZW1v
dmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5ICYmIGVuZE9mRmlyc3RXb3JkID09IHN0YXJ0T2ZT
ZWxlY3Rpb24pIHsKICAgICAgICAgc3RhcnRPZkZpcnN0V29yZCA9IG5leHRXb3JkUG9zaXRpb24o
c3RhcnRPZkZpcnN0V29yZCk7CiAgICAgICAgIGVuZE9mRmlyc3RXb3JkID0gZW5kT2ZXb3JkKHN0
YXJ0T2ZGaXJzdFdvcmQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgIGlmIChzdGFy
dE9mRmlyc3RXb3JkID09IGVuZE9mU2VsZWN0aW9uKQorICAgICAgICBpZiAoc3RhcnRPZkZpcnN0
V29yZCA9PSBvcmlnaW5hbFN0YXJ0T2ZMYXN0V29yZCkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTMwMzEsNyArMzAzNyw3IEBAIHZvaWQgRWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9y
V29yZHNBZmZlY3RlZEJ5RWRpdGluZyhib29sIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BCiAgICAg
aWYgKGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSAmJiBzdGFydE9mTGFzdFdv
cmQgPT0gZW5kT2ZTZWxlY3Rpb24pIHsKICAgICAgICAgc3RhcnRPZkxhc3RXb3JkID0gcHJldmlv
dXNXb3JkUG9zaXRpb24oc3RhcnRPZkxhc3RXb3JkKTsKICAgICAgICAgZW5kT2ZMYXN0V29yZCA9
IGVuZE9mV29yZChzdGFydE9mTGFzdFdvcmQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAg
ICAgIGlmIChlbmRPZkxhc3RXb3JkID09IHN0YXJ0T2ZTZWxlY3Rpb24pCisgICAgICAgIGlmIChl
bmRPZkxhc3RXb3JkID09IG9yaWdpbmFsRW5kT2ZGaXJzdFdvcmQpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA1NmY1ZWUzY2FmOWRlMzBi
NzYxMjEyMzQ5OGM2MDhkYTYwOGU3YTlhLi5jNGU3MDFmOGFjZDhiM2MzODRlNWNiYmFkN2YyZmZl
Mzg0YTllMDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTQ3Niw3ICs0NzYsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdt
ZW50KERvY3VtZW50RnJhZ21lbnQmLCBTZWxlY3RSZXBsYWNlbWVudCwgU21hcnRSZXBsYWNlLCBN
YXRjaFN0eWxlLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6SW5zZXJ0LCBNYWlsQmxvY2txdW90
ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVvdGUpOwog
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGNvbnN0IFN0
cmluZyYsIFNlbGVjdFJlcGxhY2VtZW50LCBTbWFydFJlcGxhY2UsIEVkaXRBY3Rpb24gPSBFZGl0
QWN0aW9uOjpJbnNlcnQpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2VsZWN0aW9uU3RhcnRI
YXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGludCBmcm9tLCBpbnQgbGVu
Z3RoKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0
aW5nKGJvb2wgb25seUhhbmRsZVdvcmRzQ29udGFpbmluZ1NlbGVjdGlvbik7CisgICAgdm9pZCB1
cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhib29sIGRvTm90UmVtb3ZlSWZT
ZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSk7CiAgICAgdm9pZCBkZWxldGVkQXV0b2NvcnJlY3Rpb25B
dFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFN0cmluZyk7
CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaW1wbGlmeU1hcmt1cChOb2RlKiBzdGFy
dE5vZGUsIE5vZGUqIGVuZE5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IGZjZDkzMzQ4YTBkYmEwOGUyZGM4ZGI3M2JmNWQ5ZWVjZDg3MDQyMWUuLmVhMzQwZDMwMGNh
OGM2ODhiYTg5NTdlYzgwOTQxYWE2MTkwM2JkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTIzNDYsNiArMjM0NiwxNyBAQCBib29sIEludGVybmFsczo6aGFzQXV0b2Nv
cnJlY3RlZE1hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkKICAgICByZXR1cm4gZG9jdW1lbnQt
PmZyYW1lKCktPmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFy
a2VyOjpBdXRvY29ycmVjdGVkLCBmcm9tLCBsZW5ndGgpOwogfQogCitib29sIEludGVybmFsczo6
aGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKQorewor
ICAgIGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVu
dCB8fCAhZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVw
ZGF0ZUVkaXRvclVJTm93SWZTY2hlZHVsZWQoKTsKKworICAgIHJldHVybiBkb2N1bWVudC0+ZnJh
bWUoKS0+ZWRpdG9yKCkuc2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6
OkRpY3RhdGlvbkFsdGVybmF0aXZlcywgZnJvbSwgbGVuZ3RoKTsKK30KKwogdm9pZCBJbnRlcm5h
bHM6OnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAg
ICAgaWYgKCFjb250ZXh0RG9jdW1lbnQoKSB8fCAhY29udGV4dERvY3VtZW50KCktPmZyYW1lKCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAwMjUxMTg4YTI4OGEyMTkxOWRmYzVj
OWE1ODcyMGQ4ZmZkMmRhMjkzLi40NzQxNjliNDAwNWFmMzFhMDkyZmE3MDJhMmVmNzNkM2RkOThj
NzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTM0Nyw2ICszNDcsNyBAQCBw
dWJsaWM6CiAgICAgYm9vbCBoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCk7
CiAgICAgYm9vbCBoYXNHcmFtbWFyTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKTsKICAgICBi
b29sIGhhc0F1dG9jb3JyZWN0ZWRNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpOworICAgIGJv
b2wgaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKTsK
ICAgICB2b2lkIHNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKTsKICAgICB2
b2lkIHNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChib29sKTsKICAgICB2b2lk
IHNldEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuaWRsCmluZGV4IDFhZGZjYzc4Mjk0MzM3MDY0ZmJlZmE1NDkxNmI4YzhjNGVh
NjFjMmIuLjNlMDQ4YzEwNDA4ZGJlZmRjZTBhNzQ4NGU3ZDRiMGEwNzFlNDk2NDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTQwMSw2ICs0MDEsNyBAQCBlbnVtIENvbXBv
c2l0aW5nUG9saWN5IHsKICAgICBib29sZWFuIGhhc1NwZWxsaW5nTWFya2VyKGxvbmcgZnJvbSwg
bG9uZyBsZW5ndGgpOwogICAgIGJvb2xlYW4gaGFzR3JhbW1hck1hcmtlcihsb25nIGZyb20sIGxv
bmcgbGVuZ3RoKTsKICAgICBib29sZWFuIGhhc0F1dG9jb3JyZWN0ZWRNYXJrZXIobG9uZyBmcm9t
LCBsb25nIGxlbmd0aCk7CisgICAgYm9vbGVhbiBoYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJr
ZXIobG9uZyBmcm9tLCBsb25nIGxlbmd0aCk7CiAgICAgdm9pZCBzZXRDb250aW51b3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKICAgICB2b2lkIHNldEF1dG9tYXRpY1F1
b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogICAgIHZvaWQgc2V0QXV0
b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlODllYjEwODQzZDdhZWYx
NzhiZmYzYjg0YjY1OTcyMTg1Yjc4M2Q3Li4wNDBkYWYwNTg3ZTNmMzY2OTQ5ODY1ZTA2OWI0MTU0
YmQ3NWUyYWViIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDUtMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIEJsdWUgZG90dGVkIHVuZGVybGluZSB3aXRoIGFsdGVybmF0
aXZlcyBvbmx5IHNob3duIGZvciBsYXN0IHdvcmQsIGdldHMgbG9zdCBmb3IgcHJldmlvdXMgaW5z
ZXJ0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEyMDk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTkxMzQwNT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMuIEFzIEkgd2FzIHdy
aXRpbmcgdGhlbSBJIGRpc2NvdmVyZWQgYSBmZXcgYnVncyBpbiB0aGUgZXhpc3RpbmcgY29kZToK
KyAgICAgICAgICAgICAgICAxLiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyMDkzPiBSRUdSRVNT
SU9OIChyMjU5OTMwKTogRGljdGF0aW9uIG1hcmtlciBhdCBzdGFydCBvZiB0ZXh0IGlzIHJlbW92
ZWQgd2hlbiBhZGRlZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGlzIGNvbGxhcHNlZAorICAgICAgICAg
ICAgICAgIDIuIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTIwOTg+IEluc2VydGluZyBhIG5vLWJy
ZWFrIHNwYWNlIGJlZm9yZSBvciBhZnRlciBhIG1hcmtlciByZW1vdmVzIHRoZSBtYXJrZXIKKwor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5zZXJ0
VGV4dEFsdGVybmF0aXZlcy5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNU
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Om1ha2VOU1N0cmluZ1dpdGhDaGFyYWN0ZXIpOiBB
ZGRlZC4KKwogMjAyMC0wNS0xNCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgSW5jbHVkZSBMb2NhbE92ZXJyaWRlcy54Y2NvbmZpZyBpbiBhbGwgVG9vbHMgcHJv
amVjdHMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWUzMTMxNzMyY2M4NWUwNjRkZTM5MmIw
YWJiZmRkNjQzMWI1YzUzNC4uOTgwMzFjOGU0ZDRjZjI2MDgxNjYyOWRhZTUwNTg5MjdmOTA0Y2Y5
MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMTUsNiArMTAxNSw3IEBACiAJCUNFQkNB
MTM5MUUzQTgwN0EwMEM3MzI5MyAvKiBwYWdlLXdpdGgtY3NwLWlmcmFtZS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkNBMTM0MUUz
QTgwMzQwMEM3MzI5MyAvKiBwYWdlLXdpdGgtY3NwLWlmcmFtZS5odG1sICovOyB9OwogCQlDRUJD
QTEzQTFFM0E4MDdBMDBDNzMyOTMgLyogcGFnZS13aXRob3V0LWNzcC5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkNBMTM3MUUzQTgw
MzQwMEM3MzI5MyAvKiBwYWdlLXdpdGhvdXQtY3NwLmh0bWwgKi87IH07CiAJCUNFQkNBMTNCMUUz
QTgwN0EwMEM3MzI5MyAvKiBwYWdlLXdpdGhvdXQtY3NwLWlmcmFtZS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkNBMTM2MUUzQTgw
MzQwMEM3MzI5MyAvKiBwYWdlLXdpdGhvdXQtY3NwLWlmcmFtZS5odG1sICovOyB9OworCQlDRUQ3
M0QzNzI0NkYyOUZBMDBEQUUzMjcgLyogSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRDczRDM1MjQ2RjIwNEMw
MERBRTMyNyAvKiBJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLm1tICovOyB9OwogCQlDRURBMTI0MTI0
MzdDOUZCMDBDMjhBOUUgLyogZWRpdGFibGUtcmVnaW9uLWNvbXBvc2l0ZWQtYW5kLW5vbi1jb21w
b3NpdGVkLW92ZXJsYXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDRURBMTI0MDI0MzdDOUVBMDBDMjhBOUUgLyogZWRpdGFibGUtcmVn
aW9uLWNvbXBvc2l0ZWQtYW5kLW5vbi1jb21wb3NpdGVkLW92ZXJsYXAuaHRtbCAqLzsgfTsKIAkJ
RDM0RTA4NzYxRTRFNDJFMTAwNUZGMTRBIC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCRTVFMzQxRTRDRTg1
RTAwRkQ1NjNBIC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1tICovOyB9OwogCQlERjRCMjczOTIx
QTQ3NzI4MDA5QkQxQ0EgLyogV0tOU0RpY3Rpb25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGNEIyNzM4MjFB
NDc3MjcwMDlCRDFDQSAvKiBXS05TRGljdGlvbmFyeUVtcHR5RGljdGlvbmFyeUNyYXNoLm1tICov
OyB9OwpAQCAtMjY1Miw2ICsyNjUzLDcgQEAKIAkJQ0VCQ0ExMzUxRTNBODAzNDAwQzczMjkzIC8q
IHBhZ2Utd2l0aC1jc3AuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwYWdlLXdp
dGgtY3NwLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUJDQTEzNjFFM0E4
MDM0MDBDNzMyOTMgLyogcGFnZS13aXRob3V0LWNzcC1pZnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJwYWdlLXdpdGhvdXQtY3NwLWlmcmFtZS5odG1sIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VCQ0ExMzcxRTNBODAzNDAwQzczMjkzIC8qIHBhZ2Utd2l0
aG91dC1jc3AuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwYWdlLXdpdGhvdXQt
Y3NwLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUQ3M0QzNTI0NkYyMDRD
MDBEQUUzMjcgLyogSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEluc2VydFRleHRBbHRlcm5hdGl2ZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFREExMjQwMjQzN0M5RUEwMEMyOEE5RSAvKiBlZGl0YWJsZS1yZWdpb24tY29tcG9zaXRl
ZC1hbmQtbm9uLWNvbXBvc2l0ZWQtb3ZlcmxhcC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBuYW1lID0gImVkaXRhYmxlLXJl
Z2lvbi1jb21wb3NpdGVkLWFuZC1ub24tY29tcG9zaXRlZC1vdmVybGFwLmh0bWwiOyBwYXRoID0g
Imlvcy9lZGl0YWJsZS1yZWdpb24tY29tcG9zaXRlZC1hbmQtbm9uLWNvbXBvc2l0ZWQtb3Zlcmxh
cC5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlEM0JFNUUzNDFFNENFODVF
MDBGRDU2M0EgLyogV0tXZWJWaWV3R2V0Q29udGVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS1dlYlZpZXdHZXRDb250ZW50cy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJREM2OUFBNjIxQ0Y3N0M2NTAwQzYyNzJGIC8qIFNjb3BlZExhbWJk
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRMYW1iZGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzExNSw2ICszMTE3LDcgQEAKIAkJ
CQlDQTk3QjM5MjIxOTM2NjNCMDA0NURGNkYgLyogSW5kZXhlZERCVXNlckRlbGV0ZS5tbSAqLywK
IAkJCQkwRTQwNEE4QTIxNjZEREY4MDA4MjcxQkEgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
SXNTZWxlY3RFbGVtZW50Lm1tICovLAogCQkJCTc5QzVENDMwMjA5RDc2ODMwMEYxRTdDQSAvKiBJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGVJc1RleHRGaWVsZC5tbSAqLywKKwkJCQlDRUQ3M0QzNTI0
NkYyMDRDMDBEQUUzMjcgLyogSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbSAqLywKIAkJCQkyREIw
MjMyRTFFNEU4NzE4MDA3MDcxMjMgLyogSW50ZXJhY3Rpb25EZWFkbG9ja0FmdGVyQ3Jhc2gubW0g
Ki8sCiAJCQkJNUM2OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFTY3JpcHREdXJpbmdOYXZp
Z2F0aW9uLm1tICovLAogCQkJCTVDMDE2MEMwMjFBMTMyMzIwMDc3RkEzMiAvKiBKSVRFbmFibGVk
Lm1tICovLApAQCAtNDk4NCw2ICs0OTg3LDcgQEAKIAkJCQk3Q0NFN0VGQzFBNDExQUU2MDA0NDdD
NEMgLyogSW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdFRkQxQTQxMUFFNjAwNDQ3QzRDIC8qIEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25V
c2VyRGF0YUNhbGxiYWNrV2lucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBCODFEMEE2
NEJEMDBGRUJDRjMgLyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUNFRDczRDM3MjQ2RjI5RkEwMERBRTMyNyAvKiBJbnNlcnRUZXh0
QWx0ZXJuYXRpdmVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzMxQTQxMUE3RTAwNDQ3
QzRDIC8qIEluc3BlY3RvckJhci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NEE1MzExMjFCODk5
MDMwMERCQjk5QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFREExQTQxMUE4NzAwNDQ3QzRDIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
MDhlZjdmYjg3YjJlMjI5ZDVhMGRjNGNiYjZmZDgzZDQ2ZjUxOTRlCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbnNlcnRUZXh0QWx0ZXJu
YXRpdmVzLm1tCkBAIC0wLDAgKzEsMzgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiUGxhdGZvcm1VdGls
aXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RJbnB1dERlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCisjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmln
dXJhdGlvbkV4dHJhcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNp
bXBvcnQgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CisKK25hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKKworVEVTVChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLCBTaW1wbGUpCit7CisgICAg
YXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZp
Z3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50
ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBp
bnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7
CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5k
bGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJu
IF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3
IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVkaXRhYmxlPSd0cnVl
Jz5BIGJpZyZuYnNwOzwvYm9keT4iXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRB
bmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsK
KyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVUb0Vu
ZE9mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRl
bnRWaWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iIGFsdGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5
bGU6VUlUZXh0QWx0ZXJuYXRpdmVTdHlsZU5vbmVdOworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91
c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgYXJndW1l
bnQ6bmlsXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisK
KyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDAsIDEpIl0gYm9vbFZh
bHVlXSk7IC8vIEEKKyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDIs
IDMpIl0gYm9vbFZhbHVlXSk7IC8vIGJpZworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2Jq
ZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5h
dGl2ZXNNYXJrZXIoMCwgNikiXSBib29sVmFsdWVdKTsgLy8gIkEgYmlnICIKKyAgICBFWFBFQ1Rf
VFJVRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5o
YXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoNiwgNSkiXSBib29sVmFsdWVdKTsgLy8gaGVs
bG8KK30KKworVEVTVChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLCBJbnNlcnRMZWFkaW5nU3BhY2Up
Cit7CisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90
ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVn
SW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7Cisg
ICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9j
XSBpbml0XSk7CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Q
b2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4p
IHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAg
IFt3ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVkaXRh
YmxlPSd0cnVlJz48L2JvZHk+Il07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5k
V2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAiZG9jdW1lbnQuYm9keS5mb2N1cygpIl07Cisg
ICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iIGFs
dGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5bGU6VUlUZXh0QWx0ZXJuYXRpdmVTdHlsZU5vbmVd
OworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIFt3
ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiTW92ZVRvQmVnaW5uaW5n
T2ZEb2N1bWVudCIgYXJndW1lbnQ6bmlsXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVu
dFZpZXddIGluc2VydFRleHQ6QCIgIl07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVj
dXRlRWRpdENvbW1hbmQ6QCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpuaWxd
OworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVY
UEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVy
bmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMCwgMSkiXSBib29sVmFsdWVdKTsg
Ly8gPHNwYWNlPgorICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigxLCA1
KSJdIGJvb2xWYWx1ZV0pOyAvLyBoZWxsbworfQorCitURVNUKEluc2VydFRleHRBbHRlcm5hdGl2
ZXMsIEluc2VydExlYWRpbmdOZXdsaW5lKQoreworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5D
bGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9y
VGVzdGluZzpZRVNdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFkb3B0TlMo
W1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtpbnB1dERlbGVnYXRlIHNl
dEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3ICosIGlk
IDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vz
c2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTppbnB1
dERlbGVnYXRlLmdldCgpXTsKKworICAgIC8vIFNldCBDU1Mgd2hpdGUtc3BhY2UgYW5kIHVzZXIt
bW9kaWZ5IHNvIHRoYXQgXG4gaXMgaW5zZXJ0ZWQgbGl0ZXJhbGx5LiBPdGhlcndpc2UsIGl0IHdv
dWxkIGJlIGNvbnZlcnRlZCBpbnRvIGEgPGJyPiBpZiA8Ym9keT4KKyAgICAvLyBvbmx5IGhhZCAi
Y29udGVudGVkaXRhYmxlPSd0cnVlJyIgYmVjYXVzZSBpdCBpcyBjb25zaWRlcmVkIHJpY2hseSBl
ZGl0YWJsZS4KKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9k
eSBzdHlsZT0nd2hpdGUtc3BhY2U6IHByZTsgLXdlYmtpdC11c2VyLW1vZGlmeTogcmVhZC13cml0
ZS1wbGFpbnRleHQtb25seSc+PC9ib2R5PiJdOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0NoYW5nZTpAImRvY3VtZW50LmJvZHkuZm9jdXMo
KSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImhl
bGxvIiBhbHRlcm5hdGl2ZXM6QFtAInllbGxvdyJdIHN0eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5
bGVOb25lXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpA
Ik1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW1t3ZWJWaWV3
IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiXG4iXTsKKyAgICBbd2ViVmlldyBf
c3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1l
bnQiIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25V
cGRhdGVdOworCisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCAx
KSJdIGJvb2xWYWx1ZV0pOyAvLyBcbgorICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0
ZUVkaXRDb21tYW5kOkAiTW92ZURvd24iIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZpZXcgd2Fp
dEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBv
YmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVy
bmF0aXZlc01hcmtlcigwLCA1KSJdIGJvb2xWYWx1ZV0pOyAvLyBoZWxsbworfQorCitzdGF0aWMg
aW5saW5lIE5TU3RyaW5nICptYWtlTlNTdHJpbmdXaXRoQ2hhcmFjdGVyKHVuaWNoYXIgYykKK3sK
KyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjIGxlbmd0aDoxXTsK
K307CisKK1RFU1QoSW5zZXJ0VGV4dEFsdGVybmF0aXZlcywgSW5zZXJ0TGVhZGluZ05vQnJlYWtT
cGFjZV9FeHBlY3RlZEZhaWx1cmUpCit7CisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNz
TmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0
aW5nOllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxs
b2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rl
c3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9j
dXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9X
S0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9u
UG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVs
ZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAiPGJvZHkgY29udGVudGVkaXRhYmxlPSd0cnVlJz48L2JvZHk+Il07CisgICAgW3dlYlZpZXcg
ZXZhbHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAiZG9jdW1l
bnQuYm9keS5mb2N1cygpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBp
bnNlcnRUZXh0OkAiaGVsbG8iIGFsdGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5bGU6VUlUZXh0
QWx0ZXJuYXRpdmVTdHlsZU5vbmVdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0
aW9uVXBkYXRlXTsKKworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21t
YW5kOkAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgYXJndW1lbnQ6bmlsXTsKKyAgICBbW3dl
YlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6bWFrZU5TU3RyaW5nV2l0aENo
YXJhY3Rlcihub0JyZWFrU3BhY2UpXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1
dGVFZGl0Q29tbWFuZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07
CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQ
RUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJu
YWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCAxKSJdIGJvb2xWYWx1ZV0pOyAv
LyA8bm8tYnJlYWsgc3BhY2U+CisgICAgLy8gRklYTUU6IENoYW5nZSB0aGlzIHRvIEVYUEVDVF9U
UlVFKCkgb25jZSBsZWFkaW5nIG5vLWJyZWFrIHNwYWNlcyBkbyBub3QgY2F1c2UgcmVtb3ZhbCBv
ZiBhbHRlcm5hdGl2ZXMuCisgICAgLy8gU2VlIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTIwOTg+
LgorICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMSwgNSkiXSBib29s
VmFsdWVdKTsgLy8gaGVsbG8KK30KKworVEVTVChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLCBJbnNl
cnRUcmFpbGluZ1NwYWNlKQoreworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6
QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZ
RVNdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbl0pOworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5w
dXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3Rh
cnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1
c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGlj
eUFsbG93OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRl
LmdldCgpXTsKKworICAgIC8vIEZJWE1FOiBTZXQgQ1NTIHdoaXRlLXNwYWNlIHRvIHdvcmthcm91
bmQgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjA5Mz4uCisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVkaXRhYmxlPSd0cnVlJyBzdHlsZT0n
d2hpdGUtc3BhY2U6IHByZSc+PC9ib2R5PiJdOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0NoYW5nZTpAImRvY3VtZW50LmJvZHkuZm9jdXMo
KSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImhl
bGxvIiBhbHRlcm5hdGl2ZXM6QFtAInllbGxvdyJdIHN0eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5
bGVOb25lXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6
QCIgIl07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJN
b3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpuaWxdOworICAgIFt3ZWJWaWV3IHdh
aXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9UUlVFKFtbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFs
dGVybmF0aXZlc01hcmtlcigwLCA1KSJdIGJvb2xWYWx1ZV0pOyAvLyBoZWxsbworICAgIEVYUEVD
VF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFs
cy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoNSwgMSkiXSBib29sVmFsdWVdKTsgLy8g
PHNwYWNlPgorfQorCitURVNUKEluc2VydFRleHRBbHRlcm5hdGl2ZXMsIEluc2VydFRyYWlsaW5n
U3BhY2VXaGl0ZXNwYWNlUmViYWxhbmNlX0V4cGVjdGVkRmFpbHVyZSkKK3sKKyAgICBhdXRvICpj
b25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlv
bldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMi
IGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMw
MCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGlucHV0RGVs
ZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBb
aW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10g
KFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9j
dXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAgW3dlYlZpZXcgX3NldElu
cHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU9J3RydWUnPjwvYm9k
eT4iXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNz
aW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4
dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBbQCJ5
ZWxsb3ciXSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07CisgICAgW1t3ZWJWaWV3
IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiICJdOworICAgIFt3ZWJWaWV3IHdh
aXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhp
cyB0byBFWFBFQ1RfVFJVRSgpIG9uY2UgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjA5Mz4gaXMg
Zml4ZWQuCisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCA1KSJd
IGJvb2xWYWx1ZV0pOyAvLyBoZWxsbworfQorCitURVNUKEluc2VydFRleHRBbHRlcm5hdGl2ZXMs
IEluc2VydFRyYWlsaW5nTmV3bGluZSkKK3sKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRl
c3Rpbmc6WUVTXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtb
VGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRG
b2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8
X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Np
b25Qb2xpY3lBbGxvdzsgfV07CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXRE
ZWxlZ2F0ZS5nZXQoKV07CisKKyAgICAvLyBTZXQgQ1NTIHdoaXRlLXNwYWNlIGFuZCB1c2VyLW1v
ZGlmeSBzbyB0aGF0IFxuIGlzIGluc2VydGVkIGxpdGVyYWxseS4gT3RoZXJ3aXNlLCBpdCB3b3Vs
ZCBiZSBjb252ZXJ0ZWQgaW50byBhIDxicj4gaWYgPGJvZHk+CisgICAgLy8gb25seSBoYWQgImNv
bnRlbnRlZGl0YWJsZT0ndHJ1ZSciIGJlY2F1c2UgaXQgaXMgY29uc2lkZXJlZCByaWNobHkgZWRp
dGFibGUuCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkg
c3R5bGU9J3doaXRlLXNwYWNlOiBwcmU7IC13ZWJraXQtdXNlci1tb2RpZnk6IHJlYWQtd3JpdGUt
cGxhaW50ZXh0LW9ubHknPjwvYm9keT4iXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3Jp
cHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCki
XTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJoZWxs
byIgYWx0ZXJuYXRpdmVzOkBbQCJ5ZWxsb3ciXSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxl
Tm9uZV07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAi
XG4iXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1v
dmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZpZXcgd2Fp
dEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3
IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0
ZXJuYXRpdmVzTWFya2VyKDAsIDUpIl0gYm9vbFZhbHVlXSk7IC8vIGhlbGxvCisgICAgW3dlYlZp
ZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJNb3ZlRG93biIgYXJndW1lbnQ6
bmlsXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAg
RVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50
ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCAxKSJdIGJvb2xWYWx1ZV0p
OyAvLyBcbgorfQorCitURVNUKEluc2VydFRleHRBbHRlcm5hdGl2ZXMsIEluc2VydFRyYWlsaW5n
Tm9CcmVha1NwYWNlX0V4cGVjdGVkRmFpbHVyZSkKK3sKKyAgICBhdXRvICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpT
Q0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9w
dE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0
ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAq
LCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1
dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6
aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU9J3RydWUnPjwvYm9keT4iXTsKKyAgICBb
d2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6
QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVu
dFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBbQCJ5ZWxsb3ciXSBzdHls
ZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENv
bnRlbnRWaWV3XSBpbnNlcnRUZXh0Om1ha2VOU1N0cmluZ1dpdGhDaGFyYWN0ZXIobm9CcmVha1Nw
YWNlKV07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJN
b3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpuaWxdOworICAgIFt3ZWJWaWV3IHdh
aXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIC8vIEZJWE1FOiBDaGFuZ2UgZmly
c3QgRVhQRUNUIHRvIEVYUEVDVF9UUlVFKCkgb25jZSB0cmFpbGluZyBuby1icmVhayBzcGFjZXMg
ZG8gbm90IGNhdXNlIHJlbW92YWwgb2YgYWx0ZXJuYXRpdmVzLgorICAgIC8vIFNlZSA8aHR0cHM6
Ly93ZWJraXQub3JnL2IvMjEyMDk4Pi4KKyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRp
dmVzTWFya2VyKDAsIDUpIl0gYm9vbFZhbHVlXSk7IC8vIGhlbGxvCisgICAgRVhQRUNUX0ZBTFNF
KFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0Rp
Y3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcig1LCAxKSJdIGJvb2xWYWx1ZV0pOyAvLyA8bm8tYnJl
YWsgc3BhY2U+Cit9CisKK1RFU1QoSW5zZXJ0VGV4dEFsdGVybmF0aXZlcywgSW5zZXJ0U3BhY2VJ
bk1pZGRsZSkKK3sKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJv
Y2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25dKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0
U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1l
bnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsg
fV07CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07
CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBjb250
ZW50ZWRpdGFibGU9J3RydWUnPjwvYm9keT4iXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFT
Y3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3Vz
KCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJo
ZWxsbyIgYWx0ZXJuYXRpdmVzOkBbQCJ5ZWxsb3ciXSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0
eWxlTm9uZV07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwor
CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlv
bigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHkuZmlyc3RDaGlsZCwgMikiXTsKKyAgICBbW3dl
YlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCIgIl07CisgICAgW3dlYlZp
ZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJNb3ZlVG9CZWdpbm5pbmdPZkRv
Y3VtZW50IiBhcmd1bWVudDpuaWxdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0
aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIo
MCwgMikiXSBib29sVmFsdWVdKTsgLy8gaGUKKyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9i
amVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJu
YXRpdmVzTWFya2VyKDIsIDEpIl0gYm9vbFZhbHVlXSk7IC8vIDxzcGFjZT4KKyAgICBFWFBFQ1Rf
RkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMu
aGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDMsIDMpIl0gYm9vbFZhbHVlXSk7IC8vIGxs
bworfQorCitURVNUKEluc2VydFRleHRBbHRlcm5hdGl2ZXMsIEluc2VydE5ld2xpbmVJbk1pZGRs
ZV9FeHBlY3RlZEZhaWx1cmUpCit7CisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFt
ZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5n
OllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJ
bnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNT
dGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0Zv
Y3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9s
aWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdh
dGUuZ2V0KCldOworCisgICAgLy8gU2V0IENTUyB3aGl0ZS1zcGFjZSBhbmQgdXNlci1tb2RpZnkg
c28gdGhhdCBcbiBpcyBpbnNlcnRlZCBsaXRlcmFsbHkuIE90aGVyd2lzZSwgaXQgd291bGQgYmUg
Y29udmVydGVkIGludG8gYSA8YnI+IGlmIDxib2R5PgorICAgIC8vIG9ubHkgaGFkICJjb250ZW50
ZWRpdGFibGU9J3RydWUnIiBiZWNhdXNlIGl0IGlzIGNvbnNpZGVyZWQgcmljaGx5IGVkaXRhYmxl
LgorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxl
PSd3aGl0ZS1zcGFjZTogcHJlOyAtd2Via2l0LXVzZXItbW9kaWZ5OiByZWFkLXdyaXRlLXBsYWlu
dGV4dC1vbmx5Jz48L2JvZHk+Il07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5k
V2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAiZG9jdW1lbnQuYm9keS5mb2N1cygpIl07Cisg
ICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iIGFs
dGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5bGU6VUlUZXh0QWx0ZXJuYXRpdmVTdHlsZU5vbmVd
OworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRQ
b3NpdGlvbihkb2N1bWVudC5ib2R5LmZpcnN0Q2hpbGQsIDIpIl07CisgICAgW1t3ZWJWaWV3IHRl
eHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiXG4iXTsKKyAgICBbd2ViVmlldyBfc3lu
Y2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQi
IGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRh
dGVdOworCisgICAgLy8gRklYTUU6IFRoZXNlIHJlc3VsdHMgY29pbmNpZGVudGFsbHkgbWF0Y2gg
VUlLaXQsIGJ1dCB0aGV5IGp1c3QgZmVlbCB3ZWlyZDogdGhleSBhcmUgYXN5bW1ldHJpYyB0bwor
ICAgIC8vIHdoYXQgaGFwcGVucyB3aGVuIGEgc3BhY2UgaXMgaW5zZXJ0ZWQgaW4gdGhlIG1pZGRs
ZS4gTWFya2VyIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gbWFya2VyIGlzIHNwbGl0LgorICAgIEVY
UEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJu
YWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCAyKSJdIGJvb2xWYWx1ZV0pOyAv
LyBoZQorICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiTW92
ZURvd24iIGFyZ3VtZW50Om5pbF07CisgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG9iamVjdEJ5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVz
TWFya2VyKDAsIDMpIl0gYm9vbFZhbHVlXSk7IC8vIGxsbworfQorCitURVNUKEluc2VydFRleHRB
bHRlcm5hdGl2ZXMsIEluc2VydE5vQnJlYWtTcGFjZUluTWlkZGxlKQoreworICAgIGF1dG8gKmNv
bmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9u
V2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIg
Y29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAw
LCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gaW5wdXREZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtp
bnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAo
V0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1
c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5w
dXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKworICAgIC8vIFNldCBDU1Mgd2hpdGUt
c3BhY2UgYW5kIHVzZXItbW9kaWZ5IHNvIHRoYXQgXG4gaXMgaW5zZXJ0ZWQgbGl0ZXJhbGx5LiBP
dGhlcndpc2UsIGl0IHdvdWxkIGJlIGNvbnZlcnRlZCBpbnRvIGEgPGJyPiBpZiA8Ym9keT4KKyAg
ICAvLyBvbmx5IGhhZCAiY29udGVudGVkaXRhYmxlPSd0cnVlJyIgYmVjYXVzZSBpdCBpcyBjb25z
aWRlcmVkIHJpY2hseSBlZGl0YWJsZS4KKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nd2hpdGUtc3BhY2U6IHByZTsgLXdlYmtpdC11c2VyLW1v
ZGlmeTogcmVhZC13cml0ZS1wbGFpbnRleHQtb25seSc+PC9ib2R5PiJdOworICAgIFt3ZWJWaWV3
IGV2YWx1YXRlSmF2YVNjcmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0NoYW5nZTpAImRvY3Vt
ZW50LmJvZHkuZm9jdXMoKSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10g
aW5zZXJ0VGV4dDpAImhlbGxvIiBhbHRlcm5hdGl2ZXM6QFtAInllbGxvdyJdIHN0eWxlOlVJVGV4
dEFsdGVybmF0aXZlU3R5bGVOb25lXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRh
dGlvblVwZGF0ZV07CisKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keS5maXJzdENoaWxkLCAy
KSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDptYWtl
TlNTdHJpbmdXaXRoQ2hhcmFjdGVyKG5vQnJlYWtTcGFjZSldOworICAgIFt3ZWJWaWV3IF9zeW5j
aHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIg
YXJndW1lbnQ6bmlsXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0
ZV07CisKKyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDAsIDIpIl0g
Ym9vbFZhbHVlXSk7IC8vIGhlCisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01h
cmtlcigyLCAxKSJdIGJvb2xWYWx1ZV0pOyAvLyA8bm8tYnJlYWsgc3BhY2U+CisgICAgRVhQRUNU
X0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxz
Lmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigzLCAzKSJdIGJvb2xWYWx1ZV0pOyAvLyBs
bG8KK30KKworVEVTVChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLCBJbnNlcnRMZWFkaW5nTm9uV2hp
dGVzcGFjZUNoYXJhY3RlcikKK3sKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmll
d0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1l
OkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6
WUVTXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElu
cHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0
YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9j
dXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xp
Y3lBbGxvdzsgfV07CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0
ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8
Ym9keSBjb250ZW50ZWRpdGFibGU9J3RydWUnPjwvYm9keT4iXTsKKyAgICBbd2ViVmlldyBldmFs
dWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5i
b2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2Vy
dFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBbQCJ5ZWxsb3ciXSBzdHlsZTpVSVRleHRBbHRl
cm5hdGl2ZVN0eWxlTm9uZV07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25V
cGRhdGVdOworCisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6
QCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpuaWxdOworICAgIFtbd2ViVmll
dyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImEiXTsKKyAgICBbd2ViVmlldyBf
c3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1l
bnQiIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25V
cGRhdGVdOworCisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCAx
KSJdIGJvb2xWYWx1ZV0pOyAvLyBhCisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZl
c01hcmtlcigxLCA1KSJdIGJvb2xWYWx1ZV0pOyAvLyBoZWxsbworfQorCitURVNUKEluc2VydFRl
eHRBbHRlcm5hdGl2ZXMsIEluc2VydFRyYWlsaW5nTm9uV2hpdGVzcGFjZUNoYXJhY3RlcikKK3sK
KyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3Rf
Y29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldp
dGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBh
dXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGlu
aXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGlj
eUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyBy
ZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAgW3dl
YlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU9
J3RydWUnPjwvYm9keT4iXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0
Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBb
W3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJu
YXRpdmVzOkBbQCJ5ZWxsb3ciXSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07Cisg
ICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiYSJdOworICAg
IFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiTW92ZVRvQmVnaW5u
aW5nT2ZEb2N1bWVudCIgYXJndW1lbnQ6bmlsXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFBy
ZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVz
TWFya2VyKDAsIDUpIl0gYm9vbFZhbHVlXSk7IC8vIGhlbGxvCisgICAgRVhQRUNUX0ZBTFNFKFtb
d2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3Rh
dGlvbkFsdGVybmF0aXZlc01hcmtlcig1LCAxKSJdIGJvb2xWYWx1ZV0pOyAvLyBhCit9CisKK1RF
U1QoSW5zZXJ0VGV4dEFsdGVybmF0aXZlcywgSW5zZXJ0Tm9uV2hpdGVzcGFjZUNoYXJhY3Rlcklu
TWlkZGxlKQoreworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9j
ZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bl0pOworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOworICAgIFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRT
ZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVu
dEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9
XTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsK
KworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGNvbnRl
bnRlZGl0YWJsZT0ndHJ1ZSc+PC9ib2R5PiJdOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0NoYW5nZTpAImRvY3VtZW50LmJvZHkuZm9jdXMo
KSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImhl
bGxvIiBhbHRlcm5hdGl2ZXM6QFtAInllbGxvdyJdIHN0eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5
bGVOb25lXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisK
KyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9u
KCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keS5maXJzdENoaWxkLCAyKSJdOworICAgIFtbd2Vi
VmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImEiXTsKKyAgICBbd2ViVmll
dyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9j
dW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRp
b25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigw
LCAyKSJdIGJvb2xWYWx1ZV0pOyAvLyBoZQorICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2Jq
ZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5h
dGl2ZXNNYXJrZXIoMiwgMSkiXSBib29sVmFsdWVdKTsgLy8gYQorICAgIEVYUEVDVF9GQUxTRShb
W3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0
YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMywgMykiXSBib29sVmFsdWVdKTsgLy8gbGxvCit9CisK
K1RFU1QoSW5zZXJ0VGV4dEFsdGVybmF0aXZlcywgSW5zZXJ0TXVsdGlwbGVXb3Jkc1dpdGhBbHRl
cm5hdGl2ZXMpCit7CisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlBy
b2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1
dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVt
ZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7
IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCld
OworCisgICAgLy8gRklYTUU6IFNldCBDU1Mgd2hpdGUtc3BhY2UgdG8gd29ya2Fyb3VuZCA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMjEyMDkzPi4KKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZEhUTUxTdHJpbmc6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU9J3RydWUnIHN0eWxlPSd3aGl0ZS1z
cGFjZTogcHJlJz48L2JvZHk+Il07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5k
V2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAiZG9jdW1lbnQuYm9keS5mb2N1cygpIl07Cisg
ICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iIGFs
dGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5bGU6VUlUZXh0QWx0ZXJuYXRpdmVTdHlsZU5vbmVd
OworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAIiAiXTsK
KyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJ3b3JsZHMi
IGFsdGVybmF0aXZlczpAW0Aid29ybSJdIHN0eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5bGVOb25l
XTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVU
b0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG9i
amVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJu
YXRpdmVzTWFya2VyKDAsIDUpIl0gYm9vbFZhbHVlXSk7IC8vIGhlbGxvCisgICAgRVhQRUNUX0ZB
TFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhh
c0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcig1LCAxKSJdIGJvb2xWYWx1ZV0pOyAvLyA8c3Bh
Y2U+CisgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDYsIDUpIl0gYm9v
bFZhbHVlXSk7IC8vIHdvcmxkcworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisK
KyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399770</attachid>
            <date>2020-05-19 14:20:36 -0700</date>
            <delta_ts>2020-05-19 17:04:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-212097-20200519142035.patch</filename>
            <type>text/plain</type>
            <size>41767</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzNhMmVjMzQ5MGJmM2Nh
MDExZjdjNDc4ZTI0MGQyNGVlZDJkOGI4ZC4uNmYyMDIwM2RiZmJmYjE4ZjI1MzhkZDdlM2NhMDM3
N2JiNTAxYzExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA1LTE5ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBCbHVlIGRvdHRlZCB1bmRl
cmxpbmUgd2l0aCBhbHRlcm5hdGl2ZXMgb25seSBzaG93biBmb3IgbGFzdCB3b3JkLCBnZXRzIGxv
c3QgZm9yIHByZXZpb3VzIGluc2VydGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE5MTM0
MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4
IHVwIHR3byBjYXNlcywgPHNwYWNlPiBpcyBhIGxpdGVyYWwgJyAnIGFuZCB8IGlzIHRoZSBwb3Np
dGlvbiBvZiB0aGUgY2FyZXQ6CisgICAgICAgICAgICAxLiBTcGFjZSBpbnNlcnRlZCBhZnRlciBt
YXJrZXIsIGhlcmUncyB3aGF0IGl0IGxvb2tzIGxpa2UgQkVGT1JFIGluc2VydGlvbiAoaS5lLiBl
bmRPZkZpcnN0V29yZCA9PSBzdGFydE9mU2VsZWN0aW9uKToKKyAgICAgICAgICAgICAgICBoZWxs
b3wKKworICAgICAgICAgICAgVGhpcyBjYXNlIGlzIGRldGVjdGVkIHdoZW4gdGhlIGVuZCBvZiB0
aGUgbmV4dCB3b3JkIChyZWxhdGl2ZSB0byBjYXJldCkgd291bGQgYmUgYXQgdGhlIHN0YXJ0IG9m
IHRoZQorICAgICAgICAgICAgd29yZCB0aGF0IGJlZ2lucyBiZWZvcmUgb3Igb24gdGhlIGNhcmV0
LgorCisgICAgICAgICAgICAyLiBTcGFjZSBpbnNlcnRlZCBiZWZvcmUgbWFya2VyLCBoZXJlJ3Mg
d2hhdCBpdCBsb29rcyBsaWtlIEJFRk9SRSBpbnNlcnRpb24gKGkuZS4gc3RhcnRPZkxhc3RXb3Jk
ID09IGVuZE9mU2VsZWN0aW9uKToKKyAgICAgICAgICAgICAgICB8aGVsbG8KKworICAgICAgICAg
ICAgVGhpcyBjYXNlIGlzIGRldGVjdGVkIHdoZW4gdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgd29y
ZCAocmVsYXRpdmUgdG8gY2FyZXQpIHdvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICAg
ICAgICB3b3JkIHRoYXQgZW5kcyBhZnRlciBvciBvbiB0aGUgY2FyZXQuCisKKyAgICAgICAgTm90
ZSBeXl4gZXhhbXBsZSB1c2VzIGEgY2FyZXQsIGJ1dCBjb2RlIGlzIHNsaWdodGx5IG1vcmUgZ2Vu
ZXJhbCBhbmQgd29ya3Mgd2hlbiB0aGUgY3VycmVudCBzZWxlY3Rpb24KKyAgICAgICAgaXMgYSBy
YW5nZS4gVGhvdWdoIEkgZGlkbid0IGV4cGxpY2l0bHkgdGVzdCB0aGF0IGJlY2F1c2UgbXkgYnVn
IGlzIHNwZWNpZmljIHRvIGhhdmluZyBhIGNhcmV0IHNlbGVjdGlvbi4KKworICAgICAgICAqIGVk
aXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4dFdp
dGhvdXRTZW5kaW5nVGV4dEV2ZW50KTogRG8gbm90IHJlbW92ZSBtYXJrZXJzIGlmIHNlbGVjdGlv
biBzdGFydHMgYXQgdGhlCisgICAgICAgIGJlZ2lubmluZyBvZiBhIG5ldyB3b3JkLiBUaGlzIGlz
IGRldGVjdGVkIGJ5IGxvb2tpbmcgYXQgdGhlIGNoYXJhY3RlciBiZWZvcmUgdGhlIHNlbGVjdGlv
biBzdGFydCB0byBzZWUKKyAgICAgICAgaWYgaXQgaXMgYSBzcGFjZSBvciBuZXdsaW5lLiBUaGlz
IHdpbGwgYmUgZmFsc2Ugd2hlbiB0aGVyZSBpcyBubyBwcmVjZWVkaW5nIGNoYXJhY3RlciAoZS5n
LiBzdGFydCBvZiBkb2N1bWVudCksCisgICAgICAgIGJ1dCB0aGF0J3MgT0sgYmVjYXVzZSBpdCBk
b2Vzbid0IG1hdHRlciB3aGF0IHdlIHBhc3MgdG8gdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0
ZWRCeUVkaXRpbmcoKSAtIHRoZXJlJ3MKKyAgICAgICAgbm8gbWFya2VycyB0byByZW1vdmUgYW55
d2F5LCBsZXQgYWxvbmUgdGV4dCBmb3IgbWFya2VycyB0byBleGlzdCBpbi4gSSBkb24ndCB1c2Ug
aXNTdGFydE9mV29yZCgpIGhlcmUKKyAgICAgICAgYmVjYXVzZSB0aGF0IHdvdWxkIGluY29ycmVj
dGx5IHJldHVybiBmYWxzZSBpZiB0aGUgY3VycmVudCBzZWxlY3Rpb24gaXMgYXQgdGhlIG9mIGEg
cGFyYWdyYXBoLiBJIGNvdWxkIGhhdmUKKyAgICAgICAgZml4ZWQgdGhhdCB1cCBieSBjaGVja2lu
ZyBpc0VuZE9mUGFyYWdyYXBoKCkgYXMgd2VsbCwgYnV0IGlzU3RhcnRPZldvcmQoKSArIGlzRW5k
T2ZQYXJhZ3JhcGgoKSBpcyBsZXNzCisgICAgICAgIGVmZmljaWVudCB0aGFuIGp1c3QgbG9va2lu
ZyBhdCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIGRpcmVjdGx5LiBTbywgSSBkaWQgdGhhdCBpbnN0
ZWFkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZl
Y3RlZEJ5RWRpdGluZyk6IFNhdmUgb2ZmIHRoZSBvcmlnaW5hbCBlbmQgb2YgdGhlIGZpcnN0IHdv
cmQgYW5kCisgICAgICAgIHN0YXJ0IG9mIHRoZSBsYXN0IHdvcmQgcG9zaXRpb25zIGJlZm9yZSBt
dXRhdGluZyB0aGVtLiBVcGRhdGUgZWFybHkgcmV0dXJucyBjaGVja3MgdG8gdXNlIHRoZXNlIHNh
dmVkIHZhbHVlcworICAgICAgICBpbnN0ZWFkIG9mIGNvbXBhcmluZyBhZ2FpbnN0IHRoZSBzdGFy
dCBhbmQgZW5kIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiwgd2hpY2ggd2VyZW4ndCBjb3JyZWN0
LiBTYXZlZCBwb3NpdGlvbmVkCisgICAgICAgIGFyZSBhbGlnbmVkIGJ5IHdvcmQsIGJ1dCBzdGFy
dCBhbmQgZW5kIG9mIGN1cnJlbnQgc2VsZWN0aW9uIG1heSBOT1QgYmUuIFNvLCBjb21wYXJpc29u
IHdhcyBhc3ltbWV0cmljOiBsaHMgd2FzCisgICAgICAgIHdvcmQgYWxpZ25lZCBwb3NpdGlvbiwg
YnV0IHJocyBtYXkgbm90IGJlLgorCisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDogV2hpbGUg
SSBhbSBoZXJlLCBmaXggdXAgYSBwYXJhbSBuYW1lIHRvIG1hdGNoIHRoZSB3aGF0IGl0IGlzIGNh
bGxlZCBpbiB0aGUgaW1wbC4KKworICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6aGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2Vy
KTogQWRkZWQKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmlkbDoKKyAgICAgICAgQWRkIG5ldyBmdW5jdGlvbmFsaXR5IGZvciB0ZXN0
aW5nIHB1cnBvc2VzLgorCisKIDIwMjAtMDUtMTcgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgogCiAgICAgICAgIEJvdHRsZSB1cCBpT1Mgd29yZCBib3VuZGFyeSBoYWNrIGJlaGlu
ZCBpbnRlcmZhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCAwZWE5YWUwOWQzNzUz
MGE1NzEwOTA5ZWY5MGQ2NjZlOWMyODcwMTNlLi40OTgyOTA5ZDk4NmFiNGE3NmI5YjExZTMxNjM5
YTdkNzFhMWUyZjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xMjY1LDcgKzEy
NjUsMTAgQEAgYm9vbCBFZGl0b3I6Omluc2VydFRleHRXaXRob3V0U2VuZGluZ1RleHRFdmVudChj
b25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2VsZWN0SW4KICAgICBpZiAoIXNob3VsZEluc2VydFRl
eHQodGV4dCwgY3JlYXRlTGl2ZVJhbmdlKHNlbGVjdGlvbi50b05vcm1hbGl6ZWRSYW5nZSgpKS5n
ZXQoKSwgRWRpdG9ySW5zZXJ0QWN0aW9uOjpUeXBlZCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoaXNTcGFjZU9yTmV3
bGluZSh0ZXh0WzBdKSk7CisgICAgLy8gRklYTUU6IFNob3VsZCBwYXNzIGZhbHNlIHRvIHVwZGF0
ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5nKCkgdG8gbm90IHJlbW92ZSBtYXJrZXJz
IGlmCisgICAgLy8gYSBsZWFkaW5nIG9yIHRyYWlsaW5nIG5vLWJyZWFrIHNwYWNlIGlzIGJlaW5n
IGluc2VydGVkLiBTZWUgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjA5OD4uCisgICAgYm9vbCBp
c1N0YXJ0T2ZOZXdXb3JkID0gaXNTcGFjZU9yTmV3bGluZShzZWxlY3Rpb24udmlzaWJsZVN0YXJ0
KCkuY2hhcmFjdGVyQmVmb3JlKCkpOworICAgIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVk
QnlFZGl0aW5nKGlzU3BhY2VPck5ld2xpbmUodGV4dFswXSkgfHwgaXNTdGFydE9mTmV3V29yZCk7
CiAKICAgICBib29sIHNob3VsZENvbnNpZGVyQXBwbHlpbmdBdXRvY29ycmVjdGlvbiA9IGZhbHNl
OwogICAgIGlmICh0ZXh0ID09ICIgIiB8fCB0ZXh0ID09ICJcdCIpCkBAIC0zMDE3LDEyICszMDIw
LDE1IEBAIHZvaWQgRWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGlu
Zyhib29sIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BCiAgICAgICAgIGVuZE9mTGFzdFdvcmQgPSBl
bmRPZldvcmQoZW5kT2ZTZWxlY3Rpb24sIExlZnRXb3JkSWZPbkJvdW5kYXJ5KTsKICAgICB9CiAK
KyAgICBhdXRvIG9yaWdpbmFsRW5kT2ZGaXJzdFdvcmQgPSBlbmRPZkZpcnN0V29yZDsKKyAgICBh
dXRvIG9yaWdpbmFsU3RhcnRPZkxhc3RXb3JkID0gc3RhcnRPZkxhc3RXb3JkOworCiAgICAgLy8g
SWYgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5IGlzIHRydWUsIGFuZCBmaXJz
dCB3b3JkIGVuZHMgYXQgdGhlIHN0YXJ0IG9mIHNlbGVjdGlvbiwKICAgICAvLyB3ZSBjaG9vc2Ug
bmV4dCB3b3JkIGFzIHRoZSBmaXJzdCB3b3JkLgogICAgIGlmIChkb05vdFJlbW92ZUlmU2VsZWN0
aW9uQXRXb3JkQm91bmRhcnkgJiYgZW5kT2ZGaXJzdFdvcmQgPT0gc3RhcnRPZlNlbGVjdGlvbikg
ewogICAgICAgICBzdGFydE9mRmlyc3RXb3JkID0gbmV4dFdvcmRQb3NpdGlvbihzdGFydE9mRmly
c3RXb3JkKTsKICAgICAgICAgZW5kT2ZGaXJzdFdvcmQgPSBlbmRPZldvcmQoc3RhcnRPZkZpcnN0
V29yZCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgaWYgKHN0YXJ0T2ZGaXJzdFdv
cmQgPT0gZW5kT2ZTZWxlY3Rpb24pCisgICAgICAgIGlmIChzdGFydE9mRmlyc3RXb3JkID09IG9y
aWdpbmFsU3RhcnRPZkxhc3RXb3JkKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MzAzMSw3ICszMDM3LDcgQEAgdm9pZCBFZGl0b3I6OnVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVj
dGVkQnlFZGl0aW5nKGJvb2wgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkEKICAgICBpZiAoZG9Ob3RS
ZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5ICYmIHN0YXJ0T2ZMYXN0V29yZCA9PSBlbmRP
ZlNlbGVjdGlvbikgewogICAgICAgICBzdGFydE9mTGFzdFdvcmQgPSBwcmV2aW91c1dvcmRQb3Np
dGlvbihzdGFydE9mTGFzdFdvcmQpOwogICAgICAgICBlbmRPZkxhc3RXb3JkID0gZW5kT2ZXb3Jk
KHN0YXJ0T2ZMYXN0V29yZCwgUmlnaHRXb3JkSWZPbkJvdW5kYXJ5KTsKLSAgICAgICAgaWYgKGVu
ZE9mTGFzdFdvcmQgPT0gc3RhcnRPZlNlbGVjdGlvbikKKyAgICAgICAgaWYgKGVuZE9mTGFzdFdv
cmQgPT0gb3JpZ2luYWxFbmRPZkZpcnN0V29yZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDU2ZjVlZTNjYWY5ZGUzMGI3NjEyMTIzNDk4
YzYwOGRhNjA4ZTdhOWEuLmM0ZTcwMWY4YWNkOGIzYzM4NGU1Y2JiYWQ3ZjJmZmUzODRhOWUwNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtNDc2LDcgKzQ3Niw3IEBAIHB1YmxpYzoKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoRG9jdW1l
bnRGcmFnbWVudCYsIFNlbGVjdFJlcGxhY2VtZW50LCBTbWFydFJlcGxhY2UsIE1hdGNoU3R5bGUs
IEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uOjpJbnNlcnQsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcg
PSBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2txdW90ZSk7CiAgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQoY29uc3QgU3RyaW5nJiwgU2Vs
ZWN0UmVwbGFjZW1lbnQsIFNtYXJ0UmVwbGFjZSwgRWRpdEFjdGlvbiA9IEVkaXRBY3Rpb246Oklu
c2VydCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZWxlY3Rpb25TdGFydEhhc01hcmtlckZv
cihEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgaW50IGZyb20sIGludCBsZW5ndGgpIGNvbnN0
OwotICAgIHZvaWQgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmcoYm9vbCBv
bmx5SGFuZGxlV29yZHNDb250YWluaW5nU2VsZWN0aW9uKTsKKyAgICB2b2lkIHVwZGF0ZU1hcmtl
cnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0aW5nKGJvb2wgZG9Ob3RSZW1vdmVJZlNlbGVjdGlvbkF0
V29yZEJvdW5kYXJ5KTsKICAgICB2b2lkIGRlbGV0ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24o
Y29uc3QgUG9zaXRpb24mLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsU3RyaW5nKTsKICAgICAKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNpbXBsaWZ5TWFya3VwKE5vZGUqIHN0YXJ0Tm9kZSwgTm9k
ZSogZW5kTm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggZGQxMmNl
ZWNhMjViYTcyN2ViNjgwNDg4Y2MxZjE1M2E5ZjRhNTc5Yy4uYzQ1N2I3YjUxNDEzYTlmMTE4YTJi
NmFmNGFjOTlhYzg1NDBhYmMwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApA
QCAtMjM0NSw2ICsyMzQ1LDE3IEBAIGJvb2wgSW50ZXJuYWxzOjpoYXNBdXRvY29ycmVjdGVkTWFy
a2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKQogICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+
ZWRpdG9yKCkuc2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OkF1dG9j
b3JyZWN0ZWQsIGZyb20sIGxlbmd0aCk7CiB9CiAKK2Jvb2wgSW50ZXJuYWxzOjpoYXNEaWN0YXRp
b25BbHRlcm5hdGl2ZXNNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpCit7CisgICAgYXV0byog
ZG9jdW1lbnQgPSBjb250ZXh0RG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50IHx8ICFkb2N1
bWVudC0+ZnJhbWUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdXBkYXRlRWRpdG9y
VUlOb3dJZlNjaGVkdWxlZCgpOworCisgICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5lZGl0
b3IoKS5zZWxlY3Rpb25TdGFydEhhc01hcmtlckZvcihEb2N1bWVudE1hcmtlcjo6RGljdGF0aW9u
QWx0ZXJuYXRpdmVzLCBmcm9tLCBsZW5ndGgpOworfQorCiB2b2lkIEludGVybmFsczo6c2V0Q29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBpZiAoIWNv
bnRleHREb2N1bWVudCgpIHx8ICFjb250ZXh0RG9jdW1lbnQoKS0+ZnJhbWUoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDI1Yzc5ZjFmMTllNzc4ZmEwOGMwNzAyODg1YmQ1OGNh
ZmM3MmI3ZDAuLjhhYWRmZmZhNmVhZmYxZGM1OTY0MGQ1MDliMGRmZjFmZGQwNWFlNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtMzQ3LDYgKzM0Nyw3IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc1NwZWxsaW5nTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKTsKICAgICBib29s
IGhhc0dyYW1tYXJNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpOwogICAgIGJvb2wgaGFzQXV0
b2NvcnJlY3RlZE1hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCk7CisgICAgYm9vbCBoYXNEaWN0
YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpOwogICAgIHZvaWQg
c2V0Q29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0QXV0
b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKGJvb2wpOwogICAgIHZvaWQgc2V0QXV0b21h
dGljTGlua0RldGVjdGlvbkVuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwKaW5kZXggNGQxZDFhNTNkZDY4YmU1NzZmOGVkN2MxNWQ4MThkOTU0YTBiOWUwYy4uMjlh
Njc1MTc2NGY0YmVhZTE0MzUxOWVmMTM1ZWE5ZTIxNWU5ZTA1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbApAQCAtNDAxLDYgKzQwMSw3IEBAIGVudW0gQ29tcG9zaXRpbmdQb2xp
Y3kgewogICAgIGJvb2xlYW4gaGFzU3BlbGxpbmdNYXJrZXIobG9uZyBmcm9tLCBsb25nIGxlbmd0
aCk7CiAgICAgYm9vbGVhbiBoYXNHcmFtbWFyTWFya2VyKGxvbmcgZnJvbSwgbG9uZyBsZW5ndGgp
OwogICAgIGJvb2xlYW4gaGFzQXV0b2NvcnJlY3RlZE1hcmtlcihsb25nIGZyb20sIGxvbmcgbGVu
Z3RoKTsKKyAgICBib29sZWFuIGhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcihsb25nIGZy
b20sIGxvbmcgbGVuZ3RoKTsKICAgICB2b2lkIHNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5h
YmxlZChib29sZWFuIGVuYWJsZWQpOwogICAgIHZvaWQgc2V0QXV0b21hdGljUXVvdGVTdWJzdGl0
dXRpb25FbmFibGVkKGJvb2xlYW4gZW5hYmxlZCk7CiAgICAgdm9pZCBzZXRBdXRvbWF0aWNMaW5r
RGV0ZWN0aW9uRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMzZGVjZTkxYjNiZDdkZWVhMjgxZDEzNDVk
NDgxZWRhMTc0NzJhZmUuLmMzZjQ2OGUwMzJkNTg2MTQ5YmM2ZDQ2NDE4YzYyZDc2ZmJlZWNmZjEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMC0wNS0xOSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgQmx1ZSBkb3R0ZWQgdW5kZXJsaW5lIHdpdGggYWx0ZXJuYXRpdmVzIG9ubHkg
c2hvd24gZm9yIGxhc3Qgd29yZCwgZ2V0cyBsb3N0IGZvciBwcmV2aW91cyBpbnNlcnRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTIwOTcKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzYxOTEzNDA1PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0cy4gQXMgSSB3YXMgd3JpdGluZyB0aGVt
IEkgZGlzY292ZXJlZCBhIGZldyBidWdzIGluIHRoZSBleGlzdGluZyBjb2RlOgorICAgICAgICAg
ICAgICAgIDEuIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTIwOTM+IFJFR1JFU1NJT04gKHIyNTk5
MzApOiBEaWN0YXRpb24gbWFya2VyIGF0IHN0YXJ0IG9mIHRleHQgaXMgcmVtb3ZlZCB3aGVuIGFk
ZGVkIHRyYWlsaW5nIHdoaXRlc3BhY2UgaXMgY29sbGFwc2VkCisgICAgICAgICAgICAgICAgMi4g
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjA5OD4gSW5zZXJ0aW5nIGEgbm8tYnJlYWsgc3BhY2Ug
YmVmb3JlIG9yIGFmdGVyIGEgbWFya2VyIHJlbW92ZXMgdGhlIG1hcmtlcgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbnNlcnRUZXh0QWx0ZXJu
YXRpdmVzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6bWFrZU5TU3RyaW5nV2l0aENoYXJhY3Rlcik6IEFkZGVkLgorCiAy
MDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBT
dXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFseXN0IGZyb20gWGNvZGUKZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYWUyYzU3ODYwYmFiMDc0ODVlNmM4Yjc1NjQ3YTQ4ZGFjMTQ2
ODkzMy4uMTVjOThjMjllNDJiMzY2OThkMWFkNzI2NjlkYTJlNGY3Y2M0NmJkOSAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEwMTQsNiArMTAxNCw3IEBACiAJCUNFQkNBMTM5MUUzQTgwN0Ew
MEM3MzI5MyAvKiBwYWdlLXdpdGgtY3NwLWlmcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkNBMTM0MUUzQTgwMzQwMEM3MzI5
MyAvKiBwYWdlLXdpdGgtY3NwLWlmcmFtZS5odG1sICovOyB9OwogCQlDRUJDQTEzQTFFM0E4MDdB
MDBDNzMyOTMgLyogcGFnZS13aXRob3V0LWNzcC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkNBMTM3MUUzQTgwMzQwMEM3MzI5MyAv
KiBwYWdlLXdpdGhvdXQtY3NwLmh0bWwgKi87IH07CiAJCUNFQkNBMTNCMUUzQTgwN0EwMEM3MzI5
MyAvKiBwYWdlLXdpdGhvdXQtY3NwLWlmcmFtZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFQkNBMTM2MUUzQTgwMzQwMEM3MzI5MyAv
KiBwYWdlLXdpdGhvdXQtY3NwLWlmcmFtZS5odG1sICovOyB9OworCQlDRUQ3M0QzNzI0NkYyOUZB
MDBEQUUzMjcgLyogSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFRDczRDM1MjQ2RjIwNEMwMERBRTMyNyAvKiBJ
bnNlcnRUZXh0QWx0ZXJuYXRpdmVzLm1tICovOyB9OwogCQlDRURBMTI0MTI0MzdDOUZCMDBDMjhB
OUUgLyogZWRpdGFibGUtcmVnaW9uLWNvbXBvc2l0ZWQtYW5kLW5vbi1jb21wb3NpdGVkLW92ZXJs
YXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDRURBMTI0MDI0MzdDOUVBMDBDMjhBOUUgLyogZWRpdGFibGUtcmVnaW9uLWNvbXBvc2l0
ZWQtYW5kLW5vbi1jb21wb3NpdGVkLW92ZXJsYXAuaHRtbCAqLzsgfTsKIAkJRDM0RTA4NzYxRTRF
NDJFMTAwNUZGMTRBIC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCRTVFMzQxRTRDRTg1RTAwRkQ1NjNBIC8q
IFdLV2ViVmlld0dldENvbnRlbnRzLm1tICovOyB9OwogCQlERjRCMjczOTIxQTQ3NzI4MDA5QkQx
Q0EgLyogV0tOU0RpY3Rpb25hcnlFbXB0eURpY3Rpb25hcnlDcmFzaC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERGNEIyNzM4MjFBNDc3MjcwMDlCRDFD
QSAvKiBXS05TRGljdGlvbmFyeUVtcHR5RGljdGlvbmFyeUNyYXNoLm1tICovOyB9OwpAQCAtMjY0
OSw2ICsyNjUwLDcgQEAKIAkJQ0VCQ0ExMzUxRTNBODAzNDAwQzczMjkzIC8qIHBhZ2Utd2l0aC1j
c3AuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwYWdlLXdpdGgtY3NwLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRUJDQTEzNjFFM0E4MDM0MDBDNzMyOTMg
LyogcGFnZS13aXRob3V0LWNzcC1pZnJhbWUuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJwYWdlLXdpdGhvdXQtY3NwLWlmcmFtZS5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0VCQ0ExMzcxRTNBODAzNDAwQzczMjkzIC8qIHBhZ2Utd2l0aG91dC1jc3AuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwYWdlLXdpdGhvdXQtY3NwLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRUQ3M0QzNTI0NkYyMDRDMDBEQUUzMjcgLyog
SW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluc2VydFRl
eHRBbHRlcm5hdGl2ZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFREExMjQw
MjQzN0M5RUEwMEMyOEE5RSAvKiBlZGl0YWJsZS1yZWdpb24tY29tcG9zaXRlZC1hbmQtbm9uLWNv
bXBvc2l0ZWQtb3ZlcmxhcC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBuYW1lID0gImVkaXRhYmxlLXJlZ2lvbi1jb21wb3Np
dGVkLWFuZC1ub24tY29tcG9zaXRlZC1vdmVybGFwLmh0bWwiOyBwYXRoID0gImlvcy9lZGl0YWJs
ZS1yZWdpb24tY29tcG9zaXRlZC1hbmQtbm9uLWNvbXBvc2l0ZWQtb3ZlcmxhcC5odG1sIjsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyog
V0tXZWJWaWV3R2V0Q29udGVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXS1dlYlZpZXdHZXRDb250ZW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJREM2OUFBNjIxQ0Y3N0M2NTAwQzYyNzJGIC8qIFNjb3BlZExhbWJkYS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY29wZWRMYW1iZGEuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzExMiw2ICszMTE0LDcgQEAKIAkJCQlDQTk3QjM5MjIx
OTM2NjNCMDA0NURGNkYgLyogSW5kZXhlZERCVXNlckRlbGV0ZS5tbSAqLywKIAkJCQkwRTQwNEE4
QTIxNjZEREY4MDA4MjcxQkEgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlSXNTZWxlY3RFbGVt
ZW50Lm1tICovLAogCQkJCTc5QzVENDMwMjA5RDc2ODMwMEYxRTdDQSAvKiBJbmplY3RlZEJ1bmRs
ZU5vZGVIYW5kbGVJc1RleHRGaWVsZC5tbSAqLywKKwkJCQlDRUQ3M0QzNTI0NkYyMDRDMDBEQUUz
MjcgLyogSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbSAqLywKIAkJCQkyREIwMjMyRTFFNEU4NzE4
MDA3MDcxMjMgLyogSW50ZXJhY3Rpb25EZWFkbG9ja0FmdGVyQ3Jhc2gubW0gKi8sCiAJCQkJNUM2
OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tICov
LAogCQkJCTVDMDE2MEMwMjFBMTMyMzIwMDc3RkEzMiAvKiBKSVRFbmFibGVkLm1tICovLApAQCAt
NDk4MCw2ICs0OTgzLDcgQEAKIAkJCQk3Q0NFN0VGQzFBNDExQUU2MDA0NDdDNEMgLyogSW5qZWN0
ZWRCdW5kbGVGcmFtZUhpdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRkQxQTQx
MUFFNjAwNDQ3QzRDIC8qIEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxi
YWNrV2lucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBCODFEMEE2NEJEMDBGRUJDRjMg
LyogSW5qZWN0ZWRCdW5kbGVNYWtlQWxsU2hhZG93Um9vdHNPcGVuLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUNFRDczRDM3MjQ2RjI5RkEwMERBRTMyNyAvKiBJbnNlcnRUZXh0QWx0ZXJuYXRpdmVz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQzMxQTQxMUE3RTAwNDQ3QzRDIC8qIEluc3Bl
Y3RvckJhci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NEE1MzExMjFCODk5MDMwMERCQjk5QyAv
KiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFREEx
QTQxMUE4NzAwNDQ3QzRDIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5z
ZXJ0VGV4dEFsdGVybmF0aXZlcy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZGYyYmRiZjVlMWM5
MjVkMDRkMDY1OWM3ZjEwMzBhYWQzMDQ0OWI3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9JbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLm1tCkBA
IC0wLDAgKzEsMzgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNp
bXBvcnQgIlRlc3RJbnB1dERlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisj
aW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJh
cy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi91
bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKwor
VEVTVChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLCBTaW1wbGUpCit7CisgICAgYXV0byAqY29uZmln
dXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRo
VGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25m
aWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRl
ID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0
RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dl
YlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3Rh
cnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERl
bGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVkaXRhYmxlPSd0cnVlJz5BIGJpZyZuYnNw
OzwvYm9keT4iXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5w
dXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbd2ViVmll
dyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVUb0VuZE9mRG9jdW1lbnQi
IGFyZ3VtZW50Om5pbF07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNl
cnRUZXh0OkAiaGVsbG8iIGFsdGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5bGU6VUlUZXh0QWx0
ZXJuYXRpdmVTdHlsZU5vbmVdOworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVk
aXRDb21tYW5kOkAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgYXJndW1lbnQ6bmlsXTsKKyAg
ICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1Rf
RkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMu
aGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDAsIDEpIl0gYm9vbFZhbHVlXSk7IC8vIEEK
KyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDIsIDMpIl0gYm9vbFZh
bHVlXSk7IC8vIGJpZworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIo
MCwgNikiXSBib29sVmFsdWVdKTsgLy8gIkEgYmlnICIKKyAgICBFWFBFQ1RfVFJVRShbW3dlYlZp
ZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25B
bHRlcm5hdGl2ZXNNYXJrZXIoNiwgNSkiXSBib29sVmFsdWVdKTsgLy8gaGVsbG8KK30KKworVEVT
VChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLCBJbnNlcnRMZWFkaW5nU3BhY2UpCit7CisgICAgYXV0
byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3Vy
YXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJu
YWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBpbnB1
dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cisg
ICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVy
OltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9X
S0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9z
ZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVkaXRhYmxlPSd0cnVlJz48
L2JvZHk+Il07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZvcklucHV0
U2Vzc2lvblRvQ2hhbmdlOkAiZG9jdW1lbnQuYm9keS5mb2N1cygpIl07CisgICAgW1t3ZWJWaWV3
IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iIGFsdGVybmF0aXZlczpA
W0AieWVsbG93Il0gc3R5bGU6VUlUZXh0QWx0ZXJuYXRpdmVTdHlsZU5vbmVdOworICAgIFt3ZWJW
aWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIFt3ZWJWaWV3IF9zeW5j
aHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIg
YXJndW1lbnQ6bmlsXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2Vy
dFRleHQ6QCIgIl07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1h
bmQ6QCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpuaWxdOworICAgIFt3ZWJW
aWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GQUxTRShb
W3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0
YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMCwgMSkiXSBib29sVmFsdWVdKTsgLy8gPHNwYWNlPgor
ICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
aW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigxLCA1KSJdIGJvb2xWYWx1
ZV0pOyAvLyBoZWxsbworfQorCitURVNUKEluc2VydFRleHRBbHRlcm5hdGl2ZXMsIEluc2VydExl
YWRpbmdOZXdsaW5lKQoreworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJX
ZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNd
OworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbl0pOworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRz
SW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2Vk
RWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFs
bG93OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdl
dCgpXTsKKworICAgIC8vIFNldCBDU1Mgd2hpdGUtc3BhY2UgYW5kIHVzZXItbW9kaWZ5IHNvIHRo
YXQgXG4gaXMgaW5zZXJ0ZWQgbGl0ZXJhbGx5LiBPdGhlcndpc2UsIGl0IHdvdWxkIGJlIGNvbnZl
cnRlZCBpbnRvIGEgPGJyPiBpZiA8Ym9keT4KKyAgICAvLyBvbmx5IGhhZCAiY29udGVudGVkaXRh
YmxlPSd0cnVlJyIgYmVjYXVzZSBpdCBpcyBjb25zaWRlcmVkIHJpY2hseSBlZGl0YWJsZS4KKyAg
ICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nd2hp
dGUtc3BhY2U6IHByZTsgLXdlYmtpdC11c2VyLW1vZGlmeTogcmVhZC13cml0ZS1wbGFpbnRleHQt
b25seSc+PC9ib2R5PiJdOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdEFuZFdhaXRG
b3JJbnB1dFNlc3Npb25Ub0NoYW5nZTpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJdOworICAgIFtb
d2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImhlbGxvIiBhbHRlcm5h
dGl2ZXM6QFtAInllbGxvdyJdIHN0eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5bGVOb25lXTsKKyAg
ICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVUb0JlZ2lu
bmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENv
bnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiXG4iXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNs
eUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50
Om5pbF07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisg
ICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
aW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCAxKSJdIGJvb2xWYWx1
ZV0pOyAvLyBcbgorICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5k
OkAiTW92ZURvd24iIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVz
ZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtl
cigwLCA1KSJdIGJvb2xWYWx1ZV0pOyAvLyBoZWxsbworfQorCitzdGF0aWMgaW5saW5lIE5TU3Ry
aW5nICptYWtlTlNTdHJpbmdXaXRoQ2hhcmFjdGVyKHVuaWNoYXIgYykKK3sKKyAgICByZXR1cm4g
W05TU3RyaW5nIHN0cmluZ1dpdGhDaGFyYWN0ZXJzOiZjIGxlbmd0aDoxXTsKK307CisKK1RFU1Qo
SW5zZXJ0VGV4dEFsdGVybmF0aXZlcywgSW5zZXJ0TGVhZGluZ05vQnJlYWtTcGFjZV9FeHBlY3Rl
ZEZhaWx1cmUpCit7CisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1
cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlBy
b2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVn
YXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1
dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVt
ZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7
IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCld
OworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29u
dGVudGVkaXRhYmxlPSd0cnVlJz48L2JvZHk+Il07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAiZG9jdW1lbnQuYm9keS5mb2N1
cygpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAi
aGVsbG8iIGFsdGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5bGU6VUlUZXh0QWx0ZXJuYXRpdmVT
dHlsZU5vbmVdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsK
KworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiTW92ZVRv
QmVnaW5uaW5nT2ZEb2N1bWVudCIgYXJndW1lbnQ6bmlsXTsKKyAgICBbW3dlYlZpZXcgdGV4dElu
cHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6bWFrZU5TU3RyaW5nV2l0aENoYXJhY3Rlcihub0Jy
ZWFrU3BhY2UpXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFu
ZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZp
ZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZBTFNFKFtb
d2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3Rh
dGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCAxKSJdIGJvb2xWYWx1ZV0pOyAvLyA8bm8tYnJlYWsg
c3BhY2U+CisgICAgLy8gRklYTUU6IENoYW5nZSB0aGlzIHRvIEVYUEVDVF9UUlVFKCkgb25jZSBs
ZWFkaW5nIG5vLWJyZWFrIHNwYWNlcyBkbyBub3QgY2F1c2UgcmVtb3ZhbCBvZiBhbHRlcm5hdGl2
ZXMuCisgICAgLy8gU2VlIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTIwOTg+LgorICAgIEVYUEVD
VF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFs
cy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMSwgNSkiXSBib29sVmFsdWVdKTsgLy8g
aGVsbG8KK30KKworVEVTVChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLCBJbnNlcnRUcmFpbGluZ1Nw
YWNlKQoreworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNz
UGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOworICAgIFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNz
aW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudElu
Zm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsK
KyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKwor
ICAgIC8vIFNldCBDU1Mgd2hpdGUtc3BhY2Ugc28gdGhhdCAnICcgaXMgaW5zZXJ0ZWQgbGl0ZXJh
bGx5LiBPdGhlcndpc2UsIGl0IHdvdWxkIGJlIGNvbnZlcnRlZCBpbnRvIGEgbm8tYnJlYWsgc3Bh
Y2UuCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29u
dGVudGVkaXRhYmxlPSd0cnVlJyBzdHlsZT0nd2hpdGUtc3BhY2U6IHByZSc+PC9ib2R5PiJdOwor
ICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0No
YW5nZTpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRD
b250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImhlbGxvIiBhbHRlcm5hdGl2ZXM6QFtAInllbGxvdyJd
IHN0eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5bGVOb25lXTsKKyAgICBbW3dlYlZpZXcgdGV4dElu
cHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCIgIl07CisgICAgW3dlYlZpZXcgX3N5bmNocm9u
b3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1
bWVudDpuaWxdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsK
KworICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCA1KSJdIGJvb2xW
YWx1ZV0pOyAvLyBoZWxsbworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJr
ZXIoNSwgMSkiXSBib29sVmFsdWVdKTsgLy8gPHNwYWNlPgorfQorCitURVNUKEluc2VydFRleHRB
bHRlcm5hdGl2ZXMsIEluc2VydFRyYWlsaW5nU3BhY2VXaGl0ZXNwYWNlUmViYWxhbmNlX0V4cGVj
dGVkRmFpbHVyZSkKK3sKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2Vi
UHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb25dKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVs
ZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lu
cHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVs
ZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxv
dzsgfV07CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQo
KV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBj
b250ZW50ZWRpdGFibGU9J3RydWUnPjwvYm9keT4iXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUph
dmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZv
Y3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6
QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBbQCJ5ZWxsb3ciXSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2
ZVN0eWxlTm9uZV07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRU
ZXh0OkAiICJdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsK
KworICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhpcyB0byBFWFBFQ1RfVFJVRSgpIG9uY2UgPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzIxMjA5Mz4gaXMgZml4ZWQuCisgICAgRVhQRUNUX0ZBTFNFKFtbd2Vi
VmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlv
bkFsdGVybmF0aXZlc01hcmtlcigwLCA1KSJdIGJvb2xWYWx1ZV0pOyAvLyBoZWxsbworfQorCitU
RVNUKEluc2VydFRleHRBbHRlcm5hdGl2ZXMsIEluc2VydFRyYWlsaW5nTmV3bGluZSkKK3sKKyAg
ICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29u
ZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJ
bnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRv
IGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRd
KTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhh
bmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1
cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAgW3dlYlZp
ZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICAvLyBTZXQg
Q1NTIHdoaXRlLXNwYWNlIGFuZCB1c2VyLW1vZGlmeSBzbyB0aGF0IFxuIGlzIGluc2VydGVkIGxp
dGVyYWxseS4gT3RoZXJ3aXNlLCBpdCB3b3VsZCBiZSBjb252ZXJ0ZWQgaW50byBhIDxicj4gaWYg
PGJvZHk+CisgICAgLy8gb25seSBoYWQgImNvbnRlbnRlZGl0YWJsZT0ndHJ1ZSciIGJlY2F1c2Ug
aXQgaXMgY29uc2lkZXJlZCByaWNobHkgZWRpdGFibGUuCisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J3doaXRlLXNwYWNlOiBwcmU7IC13ZWJr
aXQtdXNlci1tb2RpZnk6IHJlYWQtd3JpdGUtcGxhaW50ZXh0LW9ubHknPjwvYm9keT4iXTsKKyAg
ICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFu
Z2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29u
dGVudFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBbQCJ5ZWxsb3ciXSBz
dHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1
dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiXG4iXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25v
dXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3Vt
ZW50Om5pbF07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOwor
CisgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDAsIDUpIl0gYm9vbFZh
bHVlXSk7IC8vIGhlbGxvCisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENv
bW1hbmQ6QCJNb3ZlRG93biIgYXJndW1lbnQ6bmlsXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4
dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZl
c01hcmtlcigwLCAxKSJdIGJvb2xWYWx1ZV0pOyAvLyBcbgorfQorCitURVNUKEluc2VydFRleHRB
bHRlcm5hdGl2ZXMsIEluc2VydFRyYWlsaW5nTm9CcmVha1NwYWNlX0V4cGVjdGVkRmFpbHVyZSkK
K3sKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rl
c3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJ
bldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAg
ICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBv
bGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikg
eyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAg
W3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBjb250ZW50ZWRpdGFi
bGU9J3RydWUnPjwvYm9keT4iXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRX
YWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAg
ICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0
ZXJuYXRpdmVzOkBbQCJ5ZWxsb3ciXSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07
CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0Om1ha2VOU1N0
cmluZ1dpdGhDaGFyYWN0ZXIobm9CcmVha1NwYWNlKV07CisgICAgW3dlYlZpZXcgX3N5bmNocm9u
b3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1
bWVudDpuaWxdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsK
KworICAgIC8vIEZJWE1FOiBDaGFuZ2UgZmlyc3QgRVhQRUNUIHRvIEVYUEVDVF9UUlVFKCkgb25j
ZSB0cmFpbGluZyBuby1icmVhayBzcGFjZXMgZG8gbm90IGNhdXNlIHJlbW92YWwgb2YgYWx0ZXJu
YXRpdmVzLgorICAgIC8vIFNlZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyMDk4Pi4KKyAgICBF
WFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRl
cm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDAsIDUpIl0gYm9vbFZhbHVlXSk7
IC8vIGhlbGxvCisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcig1LCAx
KSJdIGJvb2xWYWx1ZV0pOyAvLyA8bm8tYnJlYWsgc3BhY2U+Cit9CisKK1RFU1QoSW5zZXJ0VGV4
dEFsdGVybmF0aXZlcywgSW5zZXJ0U3BhY2VJbk1pZGRsZSkKK3sKKyAgICBhdXRvICpjb25maWd1
cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhU
ZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZp
Z3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUg
PSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXRE
ZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2Vi
VmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFy
dHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVs
ZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5
TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU9J3RydWUnPjwvYm9keT4iXTsK
KyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9D
aGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0
Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBbQCJ5ZWxsb3ci
XSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07CisgICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHku
Zmlyc3RDaGlsZCwgMikiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGlu
c2VydFRleHQ6QCIgIl07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENv
bW1hbmQ6QCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpuaWxdOworICAgIFt3
ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GQUxT
RShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNE
aWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMCwgMikiXSBib29sVmFsdWVdKTsgLy8gaGUKKyAg
ICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJp
bnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDIsIDEpIl0gYm9vbFZhbHVl
XSk7IC8vIDxzcGFjZT4KKyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2Vy
KDMsIDMpIl0gYm9vbFZhbHVlXSk7IC8vIGxsbworfQorCitURVNUKEluc2VydFRleHRBbHRlcm5h
dGl2ZXMsIEluc2VydE5ld2xpbmVJbk1pZGRsZV9FeHBlY3RlZEZhaWx1cmUpCit7CisgICAgYXV0
byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3Vy
YXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJu
YWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBpbnB1
dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cisg
ICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVy
OltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9X
S0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9z
ZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAgLy8gU2V0IENTUyB3
aGl0ZS1zcGFjZSBhbmQgdXNlci1tb2RpZnkgc28gdGhhdCBcbiBpcyBpbnNlcnRlZCBsaXRlcmFs
bHkuIE90aGVyd2lzZSwgaXQgd291bGQgYmUgY29udmVydGVkIGludG8gYSA8YnI+IGlmIDxib2R5
PgorICAgIC8vIG9ubHkgaGFkICJjb250ZW50ZWRpdGFibGU9J3RydWUnIiBiZWNhdXNlIGl0IGlz
IGNvbnNpZGVyZWQgcmljaGx5IGVkaXRhYmxlLgorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxlPSd3aGl0ZS1zcGFjZTogcHJlOyAtd2Via2l0LXVz
ZXItbW9kaWZ5OiByZWFkLXdyaXRlLXBsYWludGV4dC1vbmx5Jz48L2JvZHk+Il07CisgICAgW3dl
YlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAi
ZG9jdW1lbnQuYm9keS5mb2N1cygpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRW
aWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iIGFsdGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5bGU6
VUlUZXh0QWx0ZXJuYXRpdmVTdHlsZU5vbmVdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJl
c2VudGF0aW9uVXBkYXRlXTsKKworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LmZpcnN0Q2hp
bGQsIDIpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0
OkAiXG4iXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpA
Ik1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZpZXcg
d2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgLy8gRklYTUU6IFRoZXNlIHJl
c3VsdHMgY29pbmNpZGVudGFsbHkgbWF0Y2ggVUlLaXQsIGJ1dCB0aGV5IGp1c3QgZmVlbCB3ZWly
ZDogdGhleSBhcmUgYXN5bW1ldHJpYyB0bworICAgIC8vIHdoYXQgaGFwcGVucyB3aGVuIGEgc3Bh
Y2UgaXMgaW5zZXJ0ZWQgaW4gdGhlIG1pZGRsZS4gTWFya2VyIHNob3VsZCBiZSByZW1vdmVkIHdo
ZW4gbWFya2VyIGlzIHNwbGl0LgorICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01h
cmtlcigwLCAyKSJdIGJvb2xWYWx1ZV0pOyAvLyBoZQorICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91
c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiTW92ZURvd24iIGFyZ3VtZW50Om5pbF07CisgICAgRVhQ
RUNUX1RSVUUoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5h
bHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDAsIDMpIl0gYm9vbFZhbHVlXSk7IC8v
IGxsbworfQorCitURVNUKEluc2VydFRleHRBbHRlcm5hdGl2ZXMsIEluc2VydE5vQnJlYWtTcGFj
ZUluTWlkZGxlKQoreworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQ
cm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbl0pOworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5w
dXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxl
bWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93
OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgp
XTsKKworICAgIC8vIFNldCBDU1Mgd2hpdGUtc3BhY2UgYW5kIHVzZXItbW9kaWZ5IHNvIHRoYXQg
XG4gaXMgaW5zZXJ0ZWQgbGl0ZXJhbGx5LiBPdGhlcndpc2UsIGl0IHdvdWxkIGJlIGNvbnZlcnRl
ZCBpbnRvIGEgPGJyPiBpZiA8Ym9keT4KKyAgICAvLyBvbmx5IGhhZCAiY29udGVudGVkaXRhYmxl
PSd0cnVlJyIgYmVjYXVzZSBpdCBpcyBjb25zaWRlcmVkIHJpY2hseSBlZGl0YWJsZS4KKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nd2hpdGUt
c3BhY2U6IHByZTsgLXdlYmtpdC11c2VyLW1vZGlmeTogcmVhZC13cml0ZS1wbGFpbnRleHQtb25s
eSc+PC9ib2R5PiJdOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdEFuZFdhaXRGb3JJ
bnB1dFNlc3Npb25Ub0NoYW5nZTpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJdOworICAgIFtbd2Vi
VmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImhlbGxvIiBhbHRlcm5hdGl2
ZXM6QFtAInllbGxvdyJdIHN0eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5bGVOb25lXTsKKyAgICBb
d2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24o
ZG9jdW1lbnQuYm9keS5maXJzdENoaWxkLCAyKSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRD
b250ZW50Vmlld10gaW5zZXJ0VGV4dDptYWtlTlNTdHJpbmdXaXRoQ2hhcmFjdGVyKG5vQnJlYWtT
cGFjZSldOworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAi
TW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgYXJndW1lbnQ6bmlsXTsKKyAgICBbd2ViVmlldyB3
YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJW
aWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9u
QWx0ZXJuYXRpdmVzTWFya2VyKDAsIDIpIl0gYm9vbFZhbHVlXSk7IC8vIGhlCisgICAgRVhQRUNU
X0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxz
Lmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigyLCAxKSJdIGJvb2xWYWx1ZV0pOyAvLyA8
bm8tYnJlYWsgc3BhY2U+CisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtl
cigzLCAzKSJdIGJvb2xWYWx1ZV0pOyAvLyBsbG8KK30KKworVEVTVChJbnNlcnRUZXh0QWx0ZXJu
YXRpdmVzLCBJbnNlcnRMZWFkaW5nTm9uV2hpdGVzcGFjZUNoYXJhY3RlcikKK3sKKyAgICBhdXRv
ICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJh
dGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5h
bHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGlucHV0
RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6
W10gKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dL
Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAgW3dlYlZpZXcgX3Nl
dElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU9J3RydWUnPjwv
Ym9keT4iXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRT
ZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcg
dGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBb
QCJ5ZWxsb3ciXSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07CisgICAgW3dlYlZp
ZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgW3dlYlZpZXcgX3N5bmNo
cm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBh
cmd1bWVudDpuaWxdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0
VGV4dDpAImEiXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFu
ZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZp
ZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZBTFNFKFtb
d2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3Rh
dGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCAxKSJdIGJvb2xWYWx1ZV0pOyAvLyBhCisgICAgRVhQ
RUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJu
YWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigxLCA1KSJdIGJvb2xWYWx1ZV0pOyAv
LyBoZWxsbworfQorCitURVNUKEluc2VydFRleHRBbHRlcm5hdGl2ZXMsIEluc2VydFRyYWlsaW5n
Tm9uV2hpdGVzcGFjZUNoYXJhY3RlcikKK3sKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRl
c3Rpbmc6WUVTXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtb
VGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRG
b2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8
X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Np
b25Qb2xpY3lBbGxvdzsgfV07CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXRE
ZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmc6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU9J3RydWUnPjwvYm9keT4iXTsKKyAgICBbd2ViVmll
dyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1
bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXdd
IGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBbQCJ5ZWxsb3ciXSBzdHlsZTpVSVRl
eHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRW
aWV3XSBpbnNlcnRUZXh0OkAiYSJdOworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0
ZUVkaXRDb21tYW5kOkAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgYXJndW1lbnQ6bmlsXTsK
KyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBF
Q1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5h
bHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDAsIDUpIl0gYm9vbFZhbHVlXSk7IC8v
IGhlbGxvCisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcig1LCAxKSJd
IGJvb2xWYWx1ZV0pOyAvLyBhCit9CisKK1RFU1QoSW5zZXJ0VGV4dEFsdGVybmF0aXZlcywgSW5z
ZXJ0Tm9uV2hpdGVzcGFjZUNoYXJhY3RlckluTWlkZGxlKQoreworICAgIGF1dG8gKmNvbmZpZ3Vy
YXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRl
c3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmln
dXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtpbnB1dERl
bGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJW
aWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0
c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxl
Z2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT0ndHJ1ZSc+PC9ib2R5PiJdOwor
ICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0No
YW5nZTpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRD
b250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImhlbGxvIiBhbHRlcm5hdGl2ZXM6QFtAInllbGxvdyJd
IHN0eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5bGVOb25lXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9y
TmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keS5m
aXJzdENoaWxkLCAyKSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5z
ZXJ0VGV4dDpAImEiXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29t
bWFuZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW3dl
YlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZBTFNF
KFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0Rp
Y3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCAyKSJdIGJvb2xWYWx1ZV0pOyAvLyBoZQorICAg
IEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlu
dGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMiwgMSkiXSBib29sVmFsdWVd
KTsgLy8gYQorICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMywgMyki
XSBib29sVmFsdWVdKTsgLy8gbGxvCit9CisKK1RFU1QoSW5zZXJ0VGV4dEFsdGVybmF0aXZlcywg
SW5zZXJ0TXVsdGlwbGVXb3Jkc1dpdGhBbHRlcm5hdGl2ZXMpCit7CisgICAgYXV0byAqY29uZmln
dXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRo
VGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25m
aWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rl
c3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRl
ID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0
RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dl
YlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3Rh
cnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERl
bGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAgLy8gU2V0IENTUyB3aGl0ZS1zcGFj
ZSBzbyB0aGF0ICcgJyBpcyBpbnNlcnRlZCBsaXRlcmFsbHkuIE90aGVyd2lzZSwgaXQgd291bGQg
YmUgY29udmVydGVkIGludG8gYSBuby1icmVhayBzcGFjZS4KKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU9J3RydWUnIHN0eWxl
PSd3aGl0ZS1zcGFjZTogcHJlJz48L2JvZHk+Il07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZh
U2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAiZG9jdW1lbnQuYm9keS5mb2N1
cygpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAi
aGVsbG8iIGFsdGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5bGU6VUlUZXh0QWx0ZXJuYXRpdmVT
dHlsZU5vbmVdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4
dDpAIiAiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6
QCJ3b3JsZHMiIGFsdGVybmF0aXZlczpAW0Aid29ybSJdIHN0eWxlOlVJVGV4dEFsdGVybmF0aXZl
U3R5bGVOb25lXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFu
ZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZp
ZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX1RSVUUoW1t3
ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0
aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDAsIDUpIl0gYm9vbFZhbHVlXSk7IC8vIGhlbGxvCisgICAg
RVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50
ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcig1LCAxKSJdIGJvb2xWYWx1ZV0p
OyAvLyA8c3BhY2U+CisgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDYs
IDUpIl0gYm9vbFZhbHVlXSk7IC8vIHdvcmxkcworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399785</attachid>
            <date>2020-05-19 17:04:39 -0700</date>
            <delta_ts>2020-05-19 17:04:39 -0700</delta_ts>
            <desc>To Land</desc>
            <filename>bug-212097-20200519170439.patch</filename>
            <type>text/plain</type>
            <size>41762</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNiNmU1YzM2MDMxYTQ0
MjExOWYzOWFlMWQxZDMwODFkODQwODY2YS4uZGEzY2QyYzEyYmZhOGUwMDU5YTQ2NGVhNzhjOWY3
YzQ4ODhlYWY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDIwLTA1LTE5ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBCbHVlIGRvdHRlZCB1bmRl
cmxpbmUgd2l0aCBhbHRlcm5hdGl2ZXMgb25seSBzaG93biBmb3IgbGFzdCB3b3JkLCBnZXRzIGxv
c3QgZm9yIHByZXZpb3VzIGluc2VydGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMjA5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjE5MTM0
MDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgRml4IHVw
IHR3byBjYXNlcywgPHNwYWNlPiBpcyBhIGxpdGVyYWwgJyAnIGFuZCB8IGlzIHRoZSBwb3NpdGlv
biBvZiB0aGUgY2FyZXQ6CisgICAgICAgICAgICAxLiBTcGFjZSBpbnNlcnRlZCBhZnRlciBtYXJr
ZXIsIGhlcmUncyB3aGF0IGl0IGxvb2tzIGxpa2UgQkVGT1JFIGluc2VydGlvbiAoaS5lLiBlbmRP
ZkZpcnN0V29yZCA9PSBzdGFydE9mU2VsZWN0aW9uKToKKyAgICAgICAgICAgICAgICBoZWxsb3wK
KworICAgICAgICAgICAgVGhpcyBjYXNlIGlzIGRldGVjdGVkIHdoZW4gdGhlIGVuZCBvZiB0aGUg
bmV4dCB3b3JkIChyZWxhdGl2ZSB0byBjYXJldCkgd291bGQgYmUgYXQgdGhlIHN0YXJ0IG9mIHRo
ZQorICAgICAgICAgICAgd29yZCB0aGF0IGJlZ2lucyBiZWZvcmUgb3Igb24gdGhlIGNhcmV0Lgor
CisgICAgICAgICAgICAyLiBTcGFjZSBpbnNlcnRlZCBiZWZvcmUgbWFya2VyLCBoZXJlJ3Mgd2hh
dCBpdCBsb29rcyBsaWtlIEJFRk9SRSBpbnNlcnRpb24gKGkuZS4gc3RhcnRPZkxhc3RXb3JkID09
IGVuZE9mU2VsZWN0aW9uKToKKyAgICAgICAgICAgICAgICB8aGVsbG8KKworICAgICAgICAgICAg
VGhpcyBjYXNlIGlzIGRldGVjdGVkIHdoZW4gdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgd29yZCAo
cmVsYXRpdmUgdG8gY2FyZXQpIHdvdWxkIGJlIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICAgICAg
ICB3b3JkIHRoYXQgZW5kcyBhZnRlciBvciBvbiB0aGUgY2FyZXQuCisKKyAgICAgICAgTm90ZSBe
Xl4gZXhhbXBsZSB1c2VzIGEgY2FyZXQsIGJ1dCBjb2RlIGlzIHNsaWdodGx5IG1vcmUgZ2VuZXJh
bCBhbmQgd29ya3Mgd2hlbiB0aGUgY3VycmVudCBzZWxlY3Rpb24KKyAgICAgICAgaXMgYSByYW5n
ZS4gVGhvdWdoIEkgZGlkbid0IGV4cGxpY2l0bHkgdGVzdCB0aGF0IGJlY2F1c2UgbXkgYnVnIGlz
IHNwZWNpZmljIHRvIGhhdmluZyBhIGNhcmV0IHNlbGVjdGlvbi4KKworICAgICAgICAqIGVkaXRp
bmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6aW5zZXJ0VGV4dFdpdGhv
dXRTZW5kaW5nVGV4dEV2ZW50KTogRG8gbm90IHJlbW92ZSBtYXJrZXJzIGlmIHNlbGVjdGlvbiBz
dGFydHMgYXQgdGhlCisgICAgICAgIGJlZ2lubmluZyBvZiBhIG5ldyB3b3JkLiBUaGlzIGlzIGRl
dGVjdGVkIGJ5IGxvb2tpbmcgYXQgdGhlIGNoYXJhY3RlciBiZWZvcmUgdGhlIHNlbGVjdGlvbiBz
dGFydCB0byBzZWUKKyAgICAgICAgaWYgaXQgaXMgYSBzcGFjZSBvciBuZXdsaW5lLiBUaGlzIHdp
bGwgYmUgZmFsc2Ugd2hlbiB0aGVyZSBpcyBubyBwcmVjZWRpbmcgY2hhcmFjdGVyIChlLmcuIHN0
YXJ0IG9mIGRvY3VtZW50KSwKKyAgICAgICAgYnV0IHRoYXQncyBPSyBiZWNhdXNlIGl0IGRvZXNu
J3QgbWF0dGVyIHdoYXQgd2UgcGFzcyB0byB1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5
RWRpdGluZygpIC0gdGhlcmUncworICAgICAgICBubyBtYXJrZXJzIHRvIHJlbW92ZSBhbnl3YXks
IGxldCBhbG9uZSB0ZXh0IGZvciBtYXJrZXJzIHRvIGV4aXN0IGluLiBJIGRvbid0IHVzZSBpc1N0
YXJ0T2ZXb3JkKCkgaGVyZQorICAgICAgICBiZWNhdXNlIHRoYXQgd291bGQgaW5jb3JyZWN0bHkg
cmV0dXJuIGZhbHNlIGlmIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpcyBhdCB0aGUgZW5kIG9mIGEg
cGFyYWdyYXBoLiBJIGNvdWxkIGhhdmUKKyAgICAgICAgZml4ZWQgdGhhdCB1cCBieSBjaGVja2lu
ZyBpc0VuZE9mUGFyYWdyYXBoKCkgYXMgd2VsbCwgYnV0IGlzU3RhcnRPZldvcmQoKSArIGlzRW5k
T2ZQYXJhZ3JhcGgoKSBpcyBsZXNzCisgICAgICAgIGVmZmljaWVudCB0aGFuIGp1c3QgbG9va2lu
ZyBhdCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIGRpcmVjdGx5LiBTbywgSSBkaWQgdGhhdCBpbnN0
ZWFkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjp1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZl
Y3RlZEJ5RWRpdGluZyk6IFNhdmUgb2ZmIHRoZSBvcmlnaW5hbCBlbmQgb2YgdGhlIGZpcnN0IHdv
cmQgYW5kCisgICAgICAgIHN0YXJ0IG9mIHRoZSBsYXN0IHdvcmQgcG9zaXRpb25zIGJlZm9yZSBt
dXRhdGluZyB0aGVtLiBVcGRhdGUgZWFybHkgcmV0dXJuIGNoZWNrcyB0byB1c2UgdGhlc2Ugc2F2
ZWQgdmFsdWVzCisgICAgICAgIGluc3RlYWQgb2YgY29tcGFyaW5nIGFnYWluc3QgdGhlIHN0YXJ0
IGFuZCBlbmQgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLCB3aGljaCB3ZXJlbid0IGNvcnJlY3Qu
IFNhdmVkIHBvc2l0aW9uZWQKKyAgICAgICAgYXJlIGFsaWduZWQgYnkgd29yZCwgYnV0IHN0YXJ0
IGFuZCBlbmQgb2YgY3VycmVudCBzZWxlY3Rpb24gbWF5IE5PVCBiZS4gU28sIGNvbXBhcmlzb24g
d2FzIGFzeW1tZXRyaWM6IGxocyB3YXMKKyAgICAgICAgd29yZCBhbGlnbmVkIHBvc2l0aW9uLCBi
dXQgcmhzIG1heSBub3QgYmUuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5oOiBXaGlsZSBJ
IGFtIGhlcmUsIGZpeCB1cCBhIHBhcmFtIG5hbWUgdG8gbWF0Y2ggd2hhdCBpdCBpcyBjYWxsZWQg
aW4gdGhlIC5jcHAuCisKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcm5hbHM6Omhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcik6IEFk
ZGVkCisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0lu
dGVybmFscy5pZGw6CisgICAgICAgIEFkZCBuZXcgZnVuY3Rpb25hbGl0eSBmb3IgdGVzdGluZyBw
dXJwb3Nlcy4KKworCiAyMDIwLTA1LTE5ICBPcmlvbCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5j
b20+CiAKICAgICAgICAgRml4IG1hcmdpbkxvZ2ljYWxTaXplRm9yQ2hpbGQgdG8gY2hlY2sgYXV0
byBtYXJnaW5zIGluIHRoZSByaWdodCBheGlzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5k
ZXggOTk1NTNkZTcyMTA2ZTM5ODQwNmZlN2Y5NmE2ZjNhZTUxNGM1OWI3Yi4uM2UzNmZhNTk4N2Qx
YmU5MDNjYzc1NjhiMDc4Nzg1OTE2ZGY2NWIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cApAQCAtMTI3MCw3ICsxMjcwLDEwIEBAIGJvb2wgRWRpdG9yOjppbnNlcnRUZXh0V2l0aG91dFNl
bmRpbmdUZXh0RXZlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluCiAgICAgaWYg
KCFzaG91bGRJbnNlcnRUZXh0KHRleHQsIGNyZWF0ZUxpdmVSYW5nZShzZWxlY3Rpb24udG9Ob3Jt
YWxpemVkUmFuZ2UoKSkuZ2V0KCksIEVkaXRvckluc2VydEFjdGlvbjo6VHlwZWQpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKIAotICAgIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVkQnlFZGl0
aW5nKGlzU3BhY2VPck5ld2xpbmUodGV4dFswXSkpOworICAgIC8vIEZJWE1FOiBTaG91bGQgcGFz
cyBmYWxzZSB0byB1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZygpIHRvIG5v
dCByZW1vdmUgbWFya2VycyBpZgorICAgIC8vIGEgbGVhZGluZyBvciB0cmFpbGluZyBuby1icmVh
ayBzcGFjZSBpcyBiZWluZyBpbnNlcnRlZC4gU2VlIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTIw
OTg+LgorICAgIGJvb2wgaXNTdGFydE9mTmV3V29yZCA9IGlzU3BhY2VPck5ld2xpbmUoc2VsZWN0
aW9uLnZpc2libGVTdGFydCgpLmNoYXJhY3RlckJlZm9yZSgpKTsKKyAgICB1cGRhdGVNYXJrZXJz
Rm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhpc1NwYWNlT3JOZXdsaW5lKHRleHRbMF0pIHx8IGlz
U3RhcnRPZk5ld1dvcmQpOwogCiAgICAgYm9vbCBzaG91bGRDb25zaWRlckFwcGx5aW5nQXV0b2Nv
cnJlY3Rpb24gPSBmYWxzZTsKICAgICBpZiAodGV4dCA9PSAiICIgfHwgdGV4dCA9PSAiXHQiKQpA
QCAtMzAyOCwxMiArMzAzMSwxNSBAQCB2b2lkIEVkaXRvcjo6dXBkYXRlTWFya2Vyc0ZvcldvcmRz
QWZmZWN0ZWRCeUVkaXRpbmcoYm9vbCBkb05vdFJlbW92ZUlmU2VsZWN0aW9uQQogICAgICAgICBl
bmRPZkxhc3RXb3JkID0gZW5kT2ZXb3JkKGVuZE9mU2VsZWN0aW9uLCBMZWZ0V29yZElmT25Cb3Vu
ZGFyeSk7CiAgICAgfQogCisgICAgYXV0byBvcmlnaW5hbEVuZE9mRmlyc3RXb3JkID0gZW5kT2ZG
aXJzdFdvcmQ7CisgICAgYXV0byBvcmlnaW5hbFN0YXJ0T2ZMYXN0V29yZCA9IHN0YXJ0T2ZMYXN0
V29yZDsKKwogICAgIC8vIElmIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSBp
cyB0cnVlLCBhbmQgZmlyc3Qgd29yZCBlbmRzIGF0IHRoZSBzdGFydCBvZiBzZWxlY3Rpb24sCiAg
ICAgLy8gd2UgY2hvb3NlIG5leHQgd29yZCBhcyB0aGUgZmlyc3Qgd29yZC4KICAgICBpZiAoZG9O
b3RSZW1vdmVJZlNlbGVjdGlvbkF0V29yZEJvdW5kYXJ5ICYmIGVuZE9mRmlyc3RXb3JkID09IHN0
YXJ0T2ZTZWxlY3Rpb24pIHsKICAgICAgICAgc3RhcnRPZkZpcnN0V29yZCA9IG5leHRXb3JkUG9z
aXRpb24oc3RhcnRPZkZpcnN0V29yZCk7CiAgICAgICAgIGVuZE9mRmlyc3RXb3JkID0gZW5kT2ZX
b3JkKHN0YXJ0T2ZGaXJzdFdvcmQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7Ci0gICAgICAgIGlm
IChzdGFydE9mRmlyc3RXb3JkID09IGVuZE9mU2VsZWN0aW9uKQorICAgICAgICBpZiAoc3RhcnRP
ZkZpcnN0V29yZCA9PSBvcmlnaW5hbFN0YXJ0T2ZMYXN0V29yZCkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTMwNDIsNyArMzA0OCw3IEBAIHZvaWQgRWRpdG9yOjp1cGRhdGVNYXJr
ZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhib29sIGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25B
CiAgICAgaWYgKGRvTm90UmVtb3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSAmJiBzdGFydE9m
TGFzdFdvcmQgPT0gZW5kT2ZTZWxlY3Rpb24pIHsKICAgICAgICAgc3RhcnRPZkxhc3RXb3JkID0g
cHJldmlvdXNXb3JkUG9zaXRpb24oc3RhcnRPZkxhc3RXb3JkKTsKICAgICAgICAgZW5kT2ZMYXN0
V29yZCA9IGVuZE9mV29yZChzdGFydE9mTGFzdFdvcmQsIFJpZ2h0V29yZElmT25Cb3VuZGFyeSk7
Ci0gICAgICAgIGlmIChlbmRPZkxhc3RXb3JkID09IHN0YXJ0T2ZTZWxlY3Rpb24pCisgICAgICAg
IGlmIChlbmRPZkxhc3RXb3JkID09IG9yaWdpbmFsRW5kT2ZGaXJzdFdvcmQpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA1MTM3YzBkZWQy
ZGZkMWJhMTUzZjg3MjBiYTkxZmVhMDY1NTZhYTc0Li5lOTdhMDg1ZDA1MjYwN2UyZWRlZmU5N2Fj
MmZmOWE2ZTNiODI4ZmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTQ3OSw3ICs0Nzks
NyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0
aEZyYWdtZW50KERvY3VtZW50RnJhZ21lbnQmLCBTZWxlY3RSZXBsYWNlbWVudCwgU21hcnRSZXBs
YWNlLCBNYXRjaFN0eWxlLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbjo6SW5zZXJ0LCBNYWlsQmxv
Y2txdW90ZUhhbmRsaW5nID0gTWFpbEJsb2NrcXVvdGVIYW5kbGluZzo6UmVzcGVjdEJsb2NrcXVv
dGUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KGNv
bnN0IFN0cmluZyYsIFNlbGVjdFJlcGxhY2VtZW50LCBTbWFydFJlcGxhY2UsIEVkaXRBY3Rpb24g
PSBFZGl0QWN0aW9uOjpJbnNlcnQpOwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgc2VsZWN0aW9u
U3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGUsIGludCBmcm9tLCBp
bnQgbGVuZ3RoKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZU1hcmtlcnNGb3JXb3Jkc0FmZmVjdGVk
QnlFZGl0aW5nKGJvb2wgb25seUhhbmRsZVdvcmRzQ29udGFpbmluZ1NlbGVjdGlvbik7CisgICAg
dm9pZCB1cGRhdGVNYXJrZXJzRm9yV29yZHNBZmZlY3RlZEJ5RWRpdGluZyhib29sIGRvTm90UmVt
b3ZlSWZTZWxlY3Rpb25BdFdvcmRCb3VuZGFyeSk7CiAgICAgdm9pZCBkZWxldGVkQXV0b2NvcnJl
Y3Rpb25BdFBvc2l0aW9uKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgU3RyaW5nJiBvcmlnaW5hbFN0
cmluZyk7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzaW1wbGlmeU1hcmt1cChOb2Rl
KiBzdGFydE5vZGUsIE5vZGUqIGVuZE5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
Y3BwCmluZGV4IDM1NDMzNzg5ZGNiMGJkMzFlNDUwMmM0MzBlMGFkODYxZDBlOGU5OTkuLjNjZjBl
YzA1ODYyM2I2MzEzZDBkOGFkYzE2ODhjMGYzNDBlMDFkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTIzNTYsNiArMjM1NiwxNyBAQCBib29sIEludGVybmFsczo6aGFz
QXV0b2NvcnJlY3RlZE1hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCkKICAgICByZXR1cm4gZG9j
dW1lbnQtPmVkaXRvcigpLnNlbGVjdGlvblN0YXJ0SGFzTWFya2VyRm9yKERvY3VtZW50TWFya2Vy
OjpBdXRvY29ycmVjdGVkLCBmcm9tLCBsZW5ndGgpOwogfQogCitib29sIEludGVybmFsczo6aGFz
RGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKQoreworICAg
IGF1dG8qIGRvY3VtZW50ID0gY29udGV4dERvY3VtZW50KCk7CisgICAgaWYgKCFkb2N1bWVudCB8
fCAhZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVwZGF0
ZUVkaXRvclVJTm93SWZTY2hlZHVsZWQoKTsKKworICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUo
KS0+ZWRpdG9yKCkuc2VsZWN0aW9uU3RhcnRIYXNNYXJrZXJGb3IoRG9jdW1lbnRNYXJrZXI6OkRp
Y3RhdGlvbkFsdGVybmF0aXZlcywgZnJvbSwgbGVuZ3RoKTsKK30KKwogdm9pZCBJbnRlcm5hbHM6
OnNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAg
aWYgKCFjb250ZXh0RG9jdW1lbnQoKSB8fCAhY29udGV4dERvY3VtZW50KCktPmZyYW1lKCkpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCAzMzc4ODhjNjI2ZWUzYzY1YjViZmJhMzg1
ZmE5NjBmZDFiNDg3NzljLi4wYjFkMGEyODA3MGU4YTE5NmE5MDU0MzhiZjMzMzRlYzZmZGFmY2M3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTM0OSw2ICszNDksNyBAQCBwdWJs
aWM6CiAgICAgYm9vbCBoYXNTcGVsbGluZ01hcmtlcihpbnQgZnJvbSwgaW50IGxlbmd0aCk7CiAg
ICAgYm9vbCBoYXNHcmFtbWFyTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKTsKICAgICBib29s
IGhhc0F1dG9jb3JyZWN0ZWRNYXJrZXIoaW50IGZyb20sIGludCBsZW5ndGgpOworICAgIGJvb2wg
aGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKGludCBmcm9tLCBpbnQgbGVuZ3RoKTsKICAg
ICB2b2lkIHNldENvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKTsKICAgICB2b2lk
IHNldEF1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZChib29sKTsKICAgICB2b2lkIHNl
dEF1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuaWRsCmluZGV4IGMwMmI0ZGQ5MjY4YjBlNjc1MTU5YmY0MTg2OGIwZmYzNWM2OTRm
ZjguLjAyYTQ3ZWQzNzIzMzRhYmRmYzczNjYzMTZkMzhlMTU5YzlkNDAxODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTQwMiw2ICs0MDIsNyBAQCBlbnVtIENvbXBvc2l0
aW5nUG9saWN5IHsKICAgICBib29sZWFuIGhhc1NwZWxsaW5nTWFya2VyKGxvbmcgZnJvbSwgbG9u
ZyBsZW5ndGgpOwogICAgIGJvb2xlYW4gaGFzR3JhbW1hck1hcmtlcihsb25nIGZyb20sIGxvbmcg
bGVuZ3RoKTsKICAgICBib29sZWFuIGhhc0F1dG9jb3JyZWN0ZWRNYXJrZXIobG9uZyBmcm9tLCBs
b25nIGxlbmd0aCk7CisgICAgYm9vbGVhbiBoYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIo
bG9uZyBmcm9tLCBsb25nIGxlbmd0aCk7CiAgICAgdm9pZCBzZXRDb250aW51b3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKICAgICB2b2lkIHNldEF1dG9tYXRpY1F1b3Rl
U3Vic3RpdHV0aW9uRW5hYmxlZChib29sZWFuIGVuYWJsZWQpOwogICAgIHZvaWQgc2V0QXV0b21h
dGljTGlua0RldGVjdGlvbkVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2ZTI2MjE5MTM0NDdhOGY5ZGFi
Y2UzMTg4ZmEzNWZkNjU4Y2ZkOGVjLi4wNDc3ODEwOTJkY2U5YzBhYWNmMjc4M2RlMmFmYTNjZDY0
ZTUwMTA3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMjAtMDUtMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBw
bGUuY29tPgorCisgICAgICAgIEJsdWUgZG90dGVkIHVuZGVybGluZSB3aXRoIGFsdGVybmF0aXZl
cyBvbmx5IHNob3duIGZvciBsYXN0IHdvcmQsIGdldHMgbG9zdCBmb3IgcHJldmlvdXMgaW5zZXJ0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEy
MDk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MTkxMzQwNT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICBBZGQgdGVzdHMuIEFzIEkgd2FzIHdyaXRpbmcg
dGhlbSBJIGRpc2NvdmVyZWQgYSBmZXcgYnVncyBpbiB0aGUgZXhpc3RpbmcgY29kZToKKyAgICAg
ICAgICAgICAgICAxLiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyMDkzPiBSRUdSRVNTSU9OIChy
MjU5OTMwKTogRGljdGF0aW9uIG1hcmtlciBhdCBzdGFydCBvZiB0ZXh0IGlzIHJlbW92ZWQgd2hl
biBhZGRlZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGlzIGNvbGxhcHNlZAorICAgICAgICAgICAgICAg
IDIuIDxodHRwczovL3dlYmtpdC5vcmcvYi8yMTIwOTg+IEluc2VydGluZyBhIG5vLWJyZWFrIHNw
YWNlIGJlZm9yZSBvciBhZnRlciBhIG1hcmtlciByZW1vdmVzIHRoZSBtYXJrZXIKKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5zZXJ0VGV4dEFs
dGVybmF0aXZlcy5tbTogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6Om1ha2VOU1N0cmluZ1dpdGhDaGFyYWN0ZXIpOiBBZGRlZC4K
KwogMjAyMC0wNS0xOSAgU2VyZ2lvIFZpbGxhciBTZW5pbiAgPHN2aWxsYXJAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV1BFXSBTeW5jIGpoYnVpbGQgdG8gZmxhdHBhawpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBiN2QwYTEzYTRkYWQ5ZjdkMWQ2NzY1MWQ1NDU0ZTRiNTgwNmM0NzBiLi41YjQ4
NTU1M2IxMDlmNjllNzhiOGY3MDliMDk5YTAwMjkwZmY0YWI3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTAxNCw2ICsxMDE0LDcgQEAKIAkJQ0VCQ0ExMzkxRTNBODA3QTAwQzczMjkzIC8q
IHBhZ2Utd2l0aC1jc3AtaWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VCQ0ExMzQxRTNBODAzNDAwQzczMjkzIC8qIHBhZ2Ut
d2l0aC1jc3AtaWZyYW1lLmh0bWwgKi87IH07CiAJCUNFQkNBMTNBMUUzQTgwN0EwMEM3MzI5MyAv
KiBwYWdlLXdpdGhvdXQtY3NwLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VCQ0ExMzcxRTNBODAzNDAwQzczMjkzIC8qIHBhZ2Utd2l0
aG91dC1jc3AuaHRtbCAqLzsgfTsKIAkJQ0VCQ0ExM0IxRTNBODA3QTAwQzczMjkzIC8qIHBhZ2Ut
d2l0aG91dC1jc3AtaWZyYW1lLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0VCQ0ExMzYxRTNBODAzNDAwQzczMjkzIC8qIHBhZ2Utd2l0
aG91dC1jc3AtaWZyYW1lLmh0bWwgKi87IH07CisJCUNFRDczRDM3MjQ2RjI5RkEwMERBRTMyNyAv
KiBJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0VENzNEMzUyNDZGMjA0QzAwREFFMzI3IC8qIEluc2VydFRleHRB
bHRlcm5hdGl2ZXMubW0gKi87IH07CiAJCUNFREExMjQxMjQzN0M5RkIwMEMyOEE5RSAvKiBlZGl0
YWJsZS1yZWdpb24tY29tcG9zaXRlZC1hbmQtbm9uLWNvbXBvc2l0ZWQtb3ZlcmxhcC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFREEx
MjQwMjQzN0M5RUEwMEMyOEE5RSAvKiBlZGl0YWJsZS1yZWdpb24tY29tcG9zaXRlZC1hbmQtbm9u
LWNvbXBvc2l0ZWQtb3ZlcmxhcC5odG1sICovOyB9OwogCQlEMzRFMDg3NjFFNEU0MkUxMDA1RkYx
NEEgLyogV0tXZWJWaWV3R2V0Q29udGVudHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBEM0JFNUUzNDFFNENFODVFMDBGRDU2M0EgLyogV0tXZWJWaWV3
R2V0Q29udGVudHMubW0gKi87IH07CiAJCURGNEIyNzM5MjFBNDc3MjgwMDlCRDFDQSAvKiBXS05T
RGljdGlvbmFyeUVtcHR5RGljdGlvbmFyeUNyYXNoLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREY0QjI3MzgyMUE0NzcyNzAwOUJEMUNBIC8qIFdLTlNE
aWN0aW9uYXJ5RW1wdHlEaWN0aW9uYXJ5Q3Jhc2gubW0gKi87IH07CkBAIC0yNjUxLDYgKzI2NTIs
NyBAQAogCQlDRUJDQTEzNTFFM0E4MDM0MDBDNzMyOTMgLyogcGFnZS13aXRoLWNzcC5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInBhZ2Utd2l0aC1jc3AuaHRtbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFQkNBMTM2MUUzQTgwMzQwMEM3MzI5MyAvKiBwYWdlLXdp
dGhvdXQtY3NwLWlmcmFtZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInBhZ2Ut
d2l0aG91dC1jc3AtaWZyYW1lLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RUJDQTEzNzFFM0E4MDM0MDBDNzMyOTMgLyogcGFnZS13aXRob3V0LWNzcC5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5odG1sOyBwYXRoID0gInBhZ2Utd2l0aG91dC1jc3AuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNFRDczRDM1MjQ2RjIwNEMwMERBRTMyNyAvKiBJbnNlcnRUZXh0
QWx0ZXJuYXRpdmVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW5zZXJ0VGV4dEFsdGVybmF0
aXZlcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0VEQTEyNDAyNDM3QzlFQTAw
QzI4QTlFIC8qIGVkaXRhYmxlLXJlZ2lvbi1jb21wb3NpdGVkLWFuZC1ub24tY29tcG9zaXRlZC1v
dmVybGFwLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0Lmh0bWw7IG5hbWUgPSAiZWRpdGFibGUtcmVnaW9uLWNvbXBvc2l0ZWQtYW5kLW5v
bi1jb21wb3NpdGVkLW92ZXJsYXAuaHRtbCI7IHBhdGggPSAiaW9zL2VkaXRhYmxlLXJlZ2lvbi1j
b21wb3NpdGVkLWFuZC1ub24tY29tcG9zaXRlZC1vdmVybGFwLmh0bWwiOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CiAJCUQzQkU1RTM0MUU0Q0U4NUUwMEZENTYzQSAvKiBXS1dlYlZpZXdH
ZXRDb250ZW50cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdL
V2ViVmlld0dldENvbnRlbnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEQzY5
QUE2MjFDRjc3QzY1MDBDNjI3MkYgLyogU2NvcGVkTGFtYmRhLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjb3BlZExhbWJkYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0zMTE0LDYgKzMxMTYsNyBAQAogCQkJCUNBOTdCMzkyMjE5MzY2M0IwMDQ1
REY2RiAvKiBJbmRleGVkREJVc2VyRGVsZXRlLm1tICovLAogCQkJCTBFNDA0QThBMjE2NkRERjgw
MDgyNzFCQSAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGVJc1NlbGVjdEVsZW1lbnQubW0gKi8s
CiAJCQkJNzlDNUQ0MzAyMDlENzY4MzAwRjFFN0NBIC8qIEluamVjdGVkQnVuZGxlTm9kZUhhbmRs
ZUlzVGV4dEZpZWxkLm1tICovLAorCQkJCUNFRDczRDM1MjQ2RjIwNEMwMERBRTMyNyAvKiBJbnNl
cnRUZXh0QWx0ZXJuYXRpdmVzLm1tICovLAogCQkJCTJEQjAyMzJFMUU0RTg3MTgwMDcwNzEyMyAv
KiBJbnRlcmFjdGlvbkRlYWRsb2NrQWZ0ZXJDcmFzaC5tbSAqLywKIAkJCQkyRDExNkUxMjIzRTBD
QjM5MDAyMDg5MDAgLyogaU9TTW91c2VTdXBwb3J0Lm1tICovLAogCQkJCTVDNjlCREQ0MUY4MkE3
RUIwMDBGNEY0QiAvKiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbSAqLywKQEAgLTQ5ODUs
NiArNDk4OCw3IEBACiAJCQkJN0NDRTdFRkMxQTQxMUFFNjAwNDQ3QzRDIC8qIEluamVjdGVkQnVu
ZGxlRnJhbWVIaXRUZXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUZEMUE0MTFBRTYw
MDQ0N0M0QyAvKiBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dp
bnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQjgxRDBBNjRCRDAwRkVCQ0YzIC8qIElu
amVjdGVkQnVuZGxlTWFrZUFsbFNoYWRvd1Jvb3RzT3Blbi5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlDRUQ3M0QzNzI0NkYyOUZBMDBEQUUzMjcgLyogSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUMzMUE0MTFBN0UwMDQ0N0M0QyAvKiBJbnNwZWN0b3JC
YXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDRBNTMxMTIxQjg5OTAzMDBEQkI5OUMgLyogSW5z
dGFuY2VNZXRob2RTd2l6emxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RURBMUE0MTFB
ODcwMDQ0N0M0QyAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0luc2VydFRl
eHRBbHRlcm5hdGl2ZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0luc2VydFRleHRBbHRlcm5hdGl2ZXMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmRmMmJkYmY1ZTFjOTI1ZDA0
ZDA2NTljN2YxMDMwYWFkMzA0NDliNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSW5zZXJ0VGV4dEFsdGVybmF0aXZlcy5tbQpAQCAtMCww
ICsxLDM4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0
ICJUZXN0SW5wdXREZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9y
dCAiVUlLaXRTUEkuaCIKKyNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25FeHRyYXMuaCIK
KyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvdW5pY29k
ZS9DaGFyYWN0ZXJOYW1lcy5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1Qo
SW5zZXJ0VGV4dEFsdGVybmF0aXZlcywgU2ltcGxlKQoreworICAgIGF1dG8gKmNvbmZpZ3VyYXRp
b24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQ
bHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJl
SlNDRm9yVGVzdGluZzpZRVNdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtpbnB1dERlbGVn
YXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3
ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lu
cHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0
ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
SFRNTFN0cmluZzpAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT0ndHJ1ZSc+QSBiaWcmbmJzcDs8L2Jv
ZHk+Il07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZvcklucHV0U2Vz
c2lvblRvQ2hhbmdlOkAiZG9jdW1lbnQuYm9keS5mb2N1cygpIl07CisgICAgW3dlYlZpZXcgX3N5
bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJNb3ZlVG9FbmRPZkRvY3VtZW50IiBhcmd1
bWVudDpuaWxdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4
dDpAImhlbGxvIiBhbHRlcm5hdGl2ZXM6QFtAInllbGxvdyJdIHN0eWxlOlVJVGV4dEFsdGVybmF0
aXZlU3R5bGVOb25lXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29t
bWFuZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW3dl
YlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZBTFNF
KFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0Rp
Y3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCAxKSJdIGJvb2xWYWx1ZV0pOyAvLyBBCisgICAg
RVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50
ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigyLCAzKSJdIGJvb2xWYWx1ZV0p
OyAvLyBiaWcKKyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDAsIDYp
Il0gYm9vbFZhbHVlXSk7IC8vICJBIGJpZyAiCisgICAgRVhQRUNUX1RSVUUoW1t3ZWJWaWV3IG9i
amVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJu
YXRpdmVzTWFya2VyKDYsIDUpIl0gYm9vbFZhbHVlXSk7IC8vIGhlbGxvCit9CisKK1RFU1QoSW5z
ZXJ0VGV4dEFsdGVybmF0aXZlcywgSW5zZXJ0TGVhZGluZ1NwYWNlKQoreworICAgIGF1dG8gKmNv
bmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9u
V2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIg
Y29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAw
LCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gaW5wdXREZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtp
bnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAo
V0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1
c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5w
dXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGNvbnRlbnRlZGl0YWJsZT0ndHJ1ZSc+PC9ib2R5
PiJdOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Np
b25Ub0NoYW5nZTpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJdOworICAgIFtbd2ViVmlldyB0ZXh0
SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImhlbGxvIiBhbHRlcm5hdGl2ZXM6QFtAInll
bGxvdyJdIHN0eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5bGVOb25lXTsKKyAgICBbd2ViVmlldyB3
YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBbd2ViVmlldyBfc3luY2hyb25v
dXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3Vt
ZW50Om5pbF07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0
OkAiICJdOworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAi
TW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgYXJndW1lbnQ6bmlsXTsKKyAgICBbd2ViVmlldyB3
YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJW
aWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9u
QWx0ZXJuYXRpdmVzTWFya2VyKDAsIDEpIl0gYm9vbFZhbHVlXSk7IC8vIDxzcGFjZT4KKyAgICBF
WFBFQ1RfVFJVRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVy
bmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMSwgNSkiXSBib29sVmFsdWVdKTsg
Ly8gaGVsbG8KK30KKworVEVTVChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLCBJbnNlcnRMZWFkaW5n
TmV3bGluZSkKK3sKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJv
Y2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25dKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0
U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1l
bnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsg
fV07CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07
CisKKyAgICAvLyBTZXQgQ1NTIHdoaXRlLXNwYWNlIGFuZCB1c2VyLW1vZGlmeSBzbyB0aGF0IFxu
IGlzIGluc2VydGVkIGxpdGVyYWxseS4gT3RoZXJ3aXNlLCBpdCB3b3VsZCBiZSBjb252ZXJ0ZWQg
aW50byBhIDxicj4gaWYgPGJvZHk+CisgICAgLy8gb25seSBoYWQgImNvbnRlbnRlZGl0YWJsZT0n
dHJ1ZSciIGJlY2F1c2UgaXQgaXMgY29uc2lkZXJlZCByaWNobHkgZWRpdGFibGUuCisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J3doaXRlLXNw
YWNlOiBwcmU7IC13ZWJraXQtdXNlci1tb2RpZnk6IHJlYWQtd3JpdGUtcGxhaW50ZXh0LW9ubHkn
PjwvYm9keT4iXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5w
dXRTZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZp
ZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVz
OkBbQCJ5ZWxsb3ciXSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07CisgICAgW3dl
YlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJNb3ZlVG9CZWdpbm5pbmdP
ZkRvY3VtZW50IiBhcmd1bWVudDpuaWxdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50
Vmlld10gaW5zZXJ0VGV4dDpAIlxuIl07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVj
dXRlRWRpdENvbW1hbmQ6QCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpuaWxd
OworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVY
UEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVy
bmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMCwgMSkiXSBib29sVmFsdWVdKTsg
Ly8gXG4KKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1v
dmVEb3duIiBhcmd1bWVudDpuaWxdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0
aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMCwg
NSkiXSBib29sVmFsdWVdKTsgLy8gaGVsbG8KK30KKworc3RhdGljIGlubGluZSBOU1N0cmluZyAq
bWFrZU5TU3RyaW5nV2l0aENoYXJhY3Rlcih1bmljaGFyIGMpCit7CisgICAgcmV0dXJuIFtOU1N0
cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomYyBsZW5ndGg6MV07Cit9OworCitURVNUKEluc2Vy
dFRleHRBbHRlcm5hdGl2ZXMsIEluc2VydExlYWRpbmdOb0JyZWFrU3BhY2VfRXhwZWN0ZWRGYWls
dXJlKQoreworICAgIGF1dG8gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNz
UGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBh
bGxvY10gaW5pdF0pOworICAgIFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNz
aW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudElu
Zm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsK
KyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGNvbnRlbnRl
ZGl0YWJsZT0ndHJ1ZSc+PC9ib2R5PiJdOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0NoYW5nZTpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJd
OworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImhlbGxv
IiBhbHRlcm5hdGl2ZXM6QFtAInllbGxvdyJdIHN0eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5bGVO
b25lXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAg
ICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVUb0JlZ2lu
bmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENv
bnRlbnRWaWV3XSBpbnNlcnRUZXh0Om1ha2VOU1N0cmluZ1dpdGhDaGFyYWN0ZXIobm9CcmVha1Nw
YWNlKV07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJN
b3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpuaWxdOworICAgIFt3ZWJWaWV3IHdh
aXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZp
ZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25B
bHRlcm5hdGl2ZXNNYXJrZXIoMCwgMSkiXSBib29sVmFsdWVdKTsgLy8gPG5vLWJyZWFrIHNwYWNl
PgorICAgIC8vIEZJWE1FOiBDaGFuZ2UgdGhpcyB0byBFWFBFQ1RfVFJVRSgpIG9uY2UgbGVhZGlu
ZyBuby1icmVhayBzcGFjZXMgZG8gbm90IGNhdXNlIHJlbW92YWwgb2YgYWx0ZXJuYXRpdmVzLgor
ICAgIC8vIFNlZSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjEyMDk4Pi4KKyAgICBFWFBFQ1RfRkFM
U0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFz
RGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDEsIDUpIl0gYm9vbFZhbHVlXSk7IC8vIGhlbGxv
Cit9CisKK1RFU1QoSW5zZXJ0VGV4dEFsdGVybmF0aXZlcywgSW5zZXJ0VHJhaWxpbmdTcGFjZSkK
K3sKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rl
c3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJ
bldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIHdl
YlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAg
ICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBv
bGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikg
eyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAg
W3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICAv
LyBTZXQgQ1NTIHdoaXRlLXNwYWNlIHNvIHRoYXQgJyAnIGlzIGluc2VydGVkIGxpdGVyYWxseS4g
T3RoZXJ3aXNlLCBpdCB3b3VsZCBiZSBjb252ZXJ0ZWQgaW50byBhIG5vLWJyZWFrIHNwYWNlLgor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxib2R5IGNvbnRlbnRl
ZGl0YWJsZT0ndHJ1ZScgc3R5bGU9J3doaXRlLXNwYWNlOiBwcmUnPjwvYm9keT4iXTsKKyAgICBb
d2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6
QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVu
dFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBbQCJ5ZWxsb3ciXSBzdHls
ZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENv
bnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiICJdOworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5
RXhlY3V0ZUVkaXRDb21tYW5kOkAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgYXJndW1lbnQ6
bmlsXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAg
ICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlu
dGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMCwgNSkiXSBib29sVmFsdWVd
KTsgLy8gaGVsbG8KKyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDUs
IDEpIl0gYm9vbFZhbHVlXSk7IC8vIDxzcGFjZT4KK30KKworVEVTVChJbnNlcnRUZXh0QWx0ZXJu
YXRpdmVzLCBJbnNlcnRUcmFpbGluZ1NwYWNlV2hpdGVzcGFjZVJlYmFsYW5jZV9FeHBlY3RlZEZh
aWx1cmUpCit7CisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0
aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nl
c3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
XSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRl
IGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNl
c3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50
SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1d
OworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOwor
CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVu
dGVkaXRhYmxlPSd0cnVlJz48L2JvZHk+Il07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2Ny
aXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAiZG9jdW1lbnQuYm9keS5mb2N1cygp
Il07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiaGVs
bG8iIGFsdGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5bGU6VUlUZXh0QWx0ZXJuYXRpdmVTdHls
ZU5vbmVdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpA
IiAiXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAg
ICAvLyBGSVhNRTogQ2hhbmdlIHRoaXMgdG8gRVhQRUNUX1RSVUUoKSBvbmNlIDxodHRwczovL3dl
YmtpdC5vcmcvYi8yMTIwOTM+IGlzIGZpeGVkLgorICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcg
b2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRl
cm5hdGl2ZXNNYXJrZXIoMCwgNSkiXSBib29sVmFsdWVdKTsgLy8gaGVsbG8KK30KKworVEVTVChJ
bnNlcnRUZXh0QWx0ZXJuYXRpdmVzLCBJbnNlcnRUcmFpbGluZ05ld2xpbmUpCit7CisgICAgYXV0
byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3Vy
YXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJu
YWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBpbnB1
dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cisg
ICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVy
OltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9X
S0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9z
ZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAgLy8gU2V0IENTUyB3
aGl0ZS1zcGFjZSBhbmQgdXNlci1tb2RpZnkgc28gdGhhdCBcbiBpcyBpbnNlcnRlZCBsaXRlcmFs
bHkuIE90aGVyd2lzZSwgaXQgd291bGQgYmUgY29udmVydGVkIGludG8gYSA8YnI+IGlmIDxib2R5
PgorICAgIC8vIG9ubHkgaGFkICJjb250ZW50ZWRpdGFibGU9J3RydWUnIiBiZWNhdXNlIGl0IGlz
IGNvbnNpZGVyZWQgcmljaGx5IGVkaXRhYmxlLgorICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzpAIjxib2R5IHN0eWxlPSd3aGl0ZS1zcGFjZTogcHJlOyAtd2Via2l0LXVz
ZXItbW9kaWZ5OiByZWFkLXdyaXRlLXBsYWludGV4dC1vbmx5Jz48L2JvZHk+Il07CisgICAgW3dl
YlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAi
ZG9jdW1lbnQuYm9keS5mb2N1cygpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRW
aWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iIGFsdGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5bGU6
VUlUZXh0QWx0ZXJuYXRpdmVTdHlsZU5vbmVdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250
ZW50Vmlld10gaW5zZXJ0VGV4dDpAIlxuIl07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlF
eGVjdXRlRWRpdENvbW1hbmQ6QCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpu
aWxdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAg
IEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50
ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCA1KSJdIGJvb2xWYWx1ZV0p
OyAvLyBoZWxsbworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5k
OkAiTW92ZURvd24iIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVz
ZW50YXRpb25VcGRhdGVdOworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJr
ZXIoMCwgMSkiXSBib29sVmFsdWVdKTsgLy8gXG4KK30KKworVEVTVChJbnNlcnRUZXh0QWx0ZXJu
YXRpdmVzLCBJbnNlcnRUcmFpbGluZ05vQnJlYWtTcGFjZV9FeHBlY3RlZEZhaWx1cmUpCit7Cisg
ICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2Nv
bmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRo
SW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byB3ZWJWaWV3
ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVj
dCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0
byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0
XSk7CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lI
YW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0
dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJW
aWV3IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVkaXRhYmxlPSd0
cnVlJz48L2JvZHk+Il07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZv
cklucHV0U2Vzc2lvblRvQ2hhbmdlOkAiZG9jdW1lbnQuYm9keS5mb2N1cygpIl07CisgICAgW1t3
ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iIGFsdGVybmF0
aXZlczpAW0AieWVsbG93Il0gc3R5bGU6VUlUZXh0QWx0ZXJuYXRpdmVTdHlsZU5vbmVdOworICAg
IFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDptYWtlTlNTdHJpbmdX
aXRoQ2hhcmFjdGVyKG5vQnJlYWtTcGFjZSldOworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5
RXhlY3V0ZUVkaXRDb21tYW5kOkAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgYXJndW1lbnQ6
bmlsXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAg
ICAvLyBGSVhNRTogQ2hhbmdlIGZpcnN0IEVYUEVDVCB0byBFWFBFQ1RfVFJVRSgpIG9uY2UgdHJh
aWxpbmcgbm8tYnJlYWsgc3BhY2VzIGRvIG5vdCBjYXVzZSByZW1vdmFsIG9mIGFsdGVybmF0aXZl
cy4KKyAgICAvLyBTZWUgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIxMjA5OD4uCisgICAgRVhQRUNU
X0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxz
Lmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCA1KSJdIGJvb2xWYWx1ZV0pOyAvLyBo
ZWxsbworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoNSwgMSkiXSBi
b29sVmFsdWVdKTsgLy8gPG5vLWJyZWFrIHNwYWNlPgorfQorCitURVNUKEluc2VydFRleHRBbHRl
cm5hdGl2ZXMsIEluc2VydFNwYWNlSW5NaWRkbGUpCit7CisgICAgYXV0byAqY29uZmlndXJhdGlv
biA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBs
dWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVK
U0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRv
cHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0RGVsZWdh
dGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcg
KiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5w
dXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRl
OmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRI
VE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVkaXRhYmxlPSd0cnVlJz48L2JvZHk+Il07CisgICAg
W3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdl
OkAiZG9jdW1lbnQuYm9keS5mb2N1cygpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRl
bnRWaWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iIGFsdGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5
bGU6VUlUZXh0QWx0ZXJuYXRpdmVTdHlsZU5vbmVdOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0
UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LmZpcnN0
Q2hpbGQsIDIpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRU
ZXh0OkAiICJdOworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91c2x5RXhlY3V0ZUVkaXRDb21tYW5k
OkAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgYXJndW1lbnQ6bmlsXTsKKyAgICBbd2ViVmll
dyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisKKyAgICBFWFBFQ1RfRkFMU0UoW1t3
ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0
aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDAsIDIpIl0gYm9vbFZhbHVlXSk7IC8vIGhlCisgICAgRVhQ
RUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJu
YWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigyLCAxKSJdIGJvb2xWYWx1ZV0pOyAv
LyA8c3BhY2U+CisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigzLCAz
KSJdIGJvb2xWYWx1ZV0pOyAvLyBsbG8KK30KKworVEVTVChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVz
LCBJbnNlcnROZXdsaW5lSW5NaWRkbGVfRXhwZWN0ZWRGYWlsdXJlKQoreworICAgIGF1dG8gKmNv
bmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9u
V2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIg
Y29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAw
LCAzMDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gaW5wdXREZWxl
Z2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtp
bnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAo
V0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1
c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5w
dXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKworICAgIC8vIFNldCBDU1Mgd2hpdGUt
c3BhY2UgYW5kIHVzZXItbW9kaWZ5IHNvIHRoYXQgXG4gaXMgaW5zZXJ0ZWQgbGl0ZXJhbGx5LiBP
dGhlcndpc2UsIGl0IHdvdWxkIGJlIGNvbnZlcnRlZCBpbnRvIGEgPGJyPiBpZiA8Ym9keT4KKyAg
ICAvLyBvbmx5IGhhZCAiY29udGVudGVkaXRhYmxlPSd0cnVlJyIgYmVjYXVzZSBpdCBpcyBjb25z
aWRlcmVkIHJpY2hseSBlZGl0YWJsZS4KKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8Ym9keSBzdHlsZT0nd2hpdGUtc3BhY2U6IHByZTsgLXdlYmtpdC11c2VyLW1v
ZGlmeTogcmVhZC13cml0ZS1wbGFpbnRleHQtb25seSc+PC9ib2R5PiJdOworICAgIFt3ZWJWaWV3
IGV2YWx1YXRlSmF2YVNjcmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0NoYW5nZTpAImRvY3Vt
ZW50LmJvZHkuZm9jdXMoKSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10g
aW5zZXJ0VGV4dDpAImhlbGxvIiBhbHRlcm5hdGl2ZXM6QFtAInllbGxvdyJdIHN0eWxlOlVJVGV4
dEFsdGVybmF0aXZlU3R5bGVOb25lXTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRh
dGlvblVwZGF0ZV07CisKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keS5maXJzdENoaWxkLCAy
KSJdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAIlxu
Il07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJNb3Zl
VG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpuaWxdOworICAgIFt3ZWJWaWV3IHdhaXRG
b3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIC8vIEZJWE1FOiBUaGVzZSByZXN1bHRz
IGNvaW5jaWRlbnRhbGx5IG1hdGNoIFVJS2l0LCBidXQgdGhleSBqdXN0IGZlZWwgd2VpcmQ6IHRo
ZXkgYXJlIGFzeW1tZXRyaWMgdG8KKyAgICAvLyB3aGF0IGhhcHBlbnMgd2hlbiBhIHNwYWNlIGlz
IGluc2VydGVkIGluIHRoZSBtaWRkbGUuIE1hcmtlciBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIG1h
cmtlciBpcyBzcGxpdC4KKyAgICBFWFBFQ1RfVFJVRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIo
MCwgMikiXSBib29sVmFsdWVdKTsgLy8gaGUKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4
ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVEb3duIiBhcmd1bWVudDpuaWxdOworICAgIEVYUEVDVF9U
UlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhh
c0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCAzKSJdIGJvb2xWYWx1ZV0pOyAvLyBsbG8K
K30KKworVEVTVChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLCBJbnNlcnROb0JyZWFrU3BhY2VJbk1p
ZGRsZSkKK3sKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vz
c1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25d
KTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUg
YWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vz
c2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJ
bmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07
CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisK
KyAgICAvLyBTZXQgQ1NTIHdoaXRlLXNwYWNlIGFuZCB1c2VyLW1vZGlmeSBzbyB0aGF0IFxuIGlz
IGluc2VydGVkIGxpdGVyYWxseS4gT3RoZXJ3aXNlLCBpdCB3b3VsZCBiZSBjb252ZXJ0ZWQgaW50
byBhIDxicj4gaWYgPGJvZHk+CisgICAgLy8gb25seSBoYWQgImNvbnRlbnRlZGl0YWJsZT0ndHJ1
ZSciIGJlY2F1c2UgaXQgaXMgY29uc2lkZXJlZCByaWNobHkgZWRpdGFibGUuCisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgc3R5bGU9J3doaXRlLXNwYWNl
OiBwcmU7IC13ZWJraXQtdXNlci1tb2RpZnk6IHJlYWQtd3JpdGUtcGxhaW50ZXh0LW9ubHknPjwv
Ym9keT4iXTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRT
ZXNzaW9uVG9DaGFuZ2U6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcg
dGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBb
QCJ5ZWxsb3ciXSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07CisgICAgW3dlYlZp
ZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRvY3Vt
ZW50LmJvZHkuZmlyc3RDaGlsZCwgMikiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVu
dFZpZXddIGluc2VydFRleHQ6bWFrZU5TU3RyaW5nV2l0aENoYXJhY3Rlcihub0JyZWFrU3BhY2Up
XTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIk1vdmVU
b0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAgW3dlYlZpZXcgd2FpdEZv
ck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBv
YmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVy
bmF0aXZlc01hcmtlcigwLCAyKSJdIGJvb2xWYWx1ZV0pOyAvLyBoZQorICAgIEVYUEVDVF9GQUxT
RShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNE
aWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMiwgMSkiXSBib29sVmFsdWVdKTsgLy8gPG5vLWJy
ZWFrIHNwYWNlPgorICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMywg
MykiXSBib29sVmFsdWVdKTsgLy8gbGxvCit9CisKK1RFU1QoSW5zZXJ0VGV4dEFsdGVybmF0aXZl
cywgSW5zZXJ0TGVhZGluZ05vbldoaXRlc3BhY2VDaGFyYWN0ZXIpCit7CisgICAgYXV0byAqY29u
ZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25X
aXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBj
b25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAs
IDMwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byBpbnB1dERlbGVn
YXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lu
cHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChX
S1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3Vz
U3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1
dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVkaXRhYmxlPSd0cnVlJz48L2JvZHk+
Il07CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lv
blRvQ2hhbmdlOkAiZG9jdW1lbnQuYm9keS5mb2N1cygpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJ
bnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAiaGVsbG8iIGFsdGVybmF0aXZlczpAW0AieWVs
bG93Il0gc3R5bGU6VUlUZXh0QWx0ZXJuYXRpdmVTdHlsZU5vbmVdOworICAgIFt3ZWJWaWV3IHdh
aXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIFt3ZWJWaWV3IF9zeW5jaHJvbm91
c2x5RXhlY3V0ZUVkaXRDb21tYW5kOkAiTW92ZVRvQmVnaW5uaW5nT2ZEb2N1bWVudCIgYXJndW1l
bnQ6bmlsXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6
QCJhIl07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJN
b3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpuaWxdOworICAgIFt3ZWJWaWV3IHdh
aXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZp
ZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRpb25B
bHRlcm5hdGl2ZXNNYXJrZXIoMCwgMSkiXSBib29sVmFsdWVdKTsgLy8gYQorICAgIEVYUEVDVF9G
QUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5o
YXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoMSwgNSkiXSBib29sVmFsdWVdKTsgLy8gaGVs
bG8KK30KKworVEVTVChJbnNlcnRUZXh0QWx0ZXJuYXRpdmVzLCBJbnNlcnRUcmFpbGluZ05vbldo
aXRlc3BhY2VDaGFyYWN0ZXIpCit7CisgICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFt
ZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5n
OllFU107CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAzMDAsIDMwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJ
bnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNT
dGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0Zv
Y3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9s
aWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdh
dGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAi
PGJvZHkgY29udGVudGVkaXRhYmxlPSd0cnVlJz48L2JvZHk+Il07CisgICAgW3dlYlZpZXcgZXZh
bHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAiZG9jdW1lbnQu
Ym9keS5mb2N1cygpIl07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNl
cnRUZXh0OkAiaGVsbG8iIGFsdGVybmF0aXZlczpAW0AieWVsbG93Il0gc3R5bGU6VUlUZXh0QWx0
ZXJuYXRpdmVTdHlsZU5vbmVdOworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10g
aW5zZXJ0VGV4dDpAImEiXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0
Q29tbWFuZDpAIk1vdmVUb0JlZ2lubmluZ09mRG9jdW1lbnQiIGFyZ3VtZW50Om5pbF07CisgICAg
W3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworCisgICAgRVhQRUNUX0ZB
TFNFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhh
c0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcigwLCA1KSJdIGJvb2xWYWx1ZV0pOyAvLyBoZWxs
bworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImludGVybmFscy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoNSwgMSkiXSBib29s
VmFsdWVdKTsgLy8gYQorfQorCitURVNUKEluc2VydFRleHRBbHRlcm5hdGl2ZXMsIEluc2VydE5v
bldoaXRlc3BhY2VDaGFyYWN0ZXJJbk1pZGRsZSkKK3sKKyAgICBhdXRvICpjb25maWd1cmF0aW9u
ID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1
Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpT
Q0ZvclRlc3Rpbmc6WUVTXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDMwMCwgMzAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9w
dE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0
ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAq
LCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1
dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6
aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCI8Ym9keSBjb250ZW50ZWRpdGFibGU9J3RydWUnPjwvYm9keT4iXTsKKyAgICBb
d2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6
QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVu
dFZpZXddIGluc2VydFRleHQ6QCJoZWxsbyIgYWx0ZXJuYXRpdmVzOkBbQCJ5ZWxsb3ciXSBzdHls
ZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxlTm9uZV07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQ
cmVzZW50YXRpb25VcGRhdGVdOworCisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRvY3VtZW50LmJvZHkuZmlyc3RD
aGlsZCwgMikiXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRl
eHQ6QCJhIl07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6
QCJNb3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpuaWxdOworICAgIFt3ZWJWaWV3
IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9GQUxTRShbW3dl
YlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5oYXNEaWN0YXRp
b25BbHRlcm5hdGl2ZXNNYXJrZXIoMCwgMikiXSBib29sVmFsdWVdKTsgLy8gaGUKKyAgICBFWFBF
Q1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5h
bHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDIsIDEpIl0gYm9vbFZhbHVlXSk7IC8v
IGEKKyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJpbnRlcm5hbHMuaGFzRGljdGF0aW9uQWx0ZXJuYXRpdmVzTWFya2VyKDMsIDMpIl0gYm9v
bFZhbHVlXSk7IC8vIGxsbworfQorCitURVNUKEluc2VydFRleHRBbHRlcm5hdGl2ZXMsIEluc2Vy
dE11bHRpcGxlV29yZHNXaXRoQWx0ZXJuYXRpdmVzKQoreworICAgIGF1dG8gKmNvbmZpZ3VyYXRp
b24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQ
bHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJl
SlNDRm9yVGVzdGluZzpZRVNdOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMzAwLCAzMDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtpbnB1dERlbGVn
YXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3
ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lu
cHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0
ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKworICAgIC8vIFNldCBDU1Mgd2hpdGUtc3BhY2Ugc28g
dGhhdCAnICcgaXMgaW5zZXJ0ZWQgbGl0ZXJhbGx5LiBPdGhlcndpc2UsIGl0IHdvdWxkIGJlIGNv
bnZlcnRlZCBpbnRvIGEgbm8tYnJlYWsgc3BhY2UuCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNs
eUxvYWRIVE1MU3RyaW5nOkAiPGJvZHkgY29udGVudGVkaXRhYmxlPSd0cnVlJyBzdHlsZT0nd2hp
dGUtc3BhY2U6IHByZSc+PC9ib2R5PiJdOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0NoYW5nZTpAImRvY3VtZW50LmJvZHkuZm9jdXMoKSJd
OworICAgIFtbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10gaW5zZXJ0VGV4dDpAImhlbGxv
IiBhbHRlcm5hdGl2ZXM6QFtAInllbGxvdyJdIHN0eWxlOlVJVGV4dEFsdGVybmF0aXZlU3R5bGVO
b25lXTsKKyAgICBbW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddIGluc2VydFRleHQ6QCIg
Il07CisgICAgW1t3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSBpbnNlcnRUZXh0OkAid29y
bGRzIiBhbHRlcm5hdGl2ZXM6QFtAIndvcm0iXSBzdHlsZTpVSVRleHRBbHRlcm5hdGl2ZVN0eWxl
Tm9uZV07CisgICAgW3dlYlZpZXcgX3N5bmNocm9ub3VzbHlFeGVjdXRlRWRpdENvbW1hbmQ6QCJN
b3ZlVG9CZWdpbm5pbmdPZkRvY3VtZW50IiBhcmd1bWVudDpuaWxdOworICAgIFt3ZWJWaWV3IHdh
aXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKworICAgIEVYUEVDVF9UUlVFKFtbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFs
dGVybmF0aXZlc01hcmtlcigwLCA1KSJdIGJvb2xWYWx1ZV0pOyAvLyBoZWxsbworICAgIEVYUEVD
VF9GQUxTRShbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFs
cy5oYXNEaWN0YXRpb25BbHRlcm5hdGl2ZXNNYXJrZXIoNSwgMSkiXSBib29sVmFsdWVdKTsgLy8g
PHNwYWNlPgorICAgIEVYUEVDVF9UUlVFKFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiaW50ZXJuYWxzLmhhc0RpY3RhdGlvbkFsdGVybmF0aXZlc01hcmtlcig2LCA1KSJd
IGJvb2xWYWx1ZV0pOyAvLyB3b3JsZHMKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>