<?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>210697</bug_id>
          
          <creation_ts>2020-04-18 14:04:29 -0700</creation_ts>
          <short_desc>[iOS] -_didFinishTextInteractionInTextInputContext should only zoom to reveal focused element if it changed</short_desc>
          <delta_ts>2020-04-21 15:54:01 -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>WebKit Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 13</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>210704</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>cdumez</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1643043</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-18 14:04:29 -0700</bug_when>
    <thetext>-_didFinishTextInteractionInTextInputContext should only zoom to reveal the focused element if it changed via a call to -_focusTextInputContext.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643044</commentid>
    <comment_count>1</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-18 14:04:44 -0700</bug_when>
    <thetext>&lt;rdar://problem/60997530&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643047</commentid>
    <comment_count>2</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-18 14:11:51 -0700</bug_when>
    <thetext>The effect of this bug can be seen on a google.com using the following steps:

1. Visit google.com and search for &quot;Disneyland&quot; and scroll the page until the search field becomes fixed to the top of the page.
2. Use -_requestTextInputContextsInRect to get the context for the search field at the top of the page.
3. Call -_willBeginTextInteractionInTextInputContext with this context.
4. Call -_focusTextInputContext with this context.
5. Call -_didFinishTextInteractionInTextInputContext with this context.

Then the page will scroll to the top because -_didFinishTextInteractionInTextInputContext marks the view as needing to reveal the focused element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643048</commentid>
    <comment_count>3</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-18 14:13:58 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #2)
&gt; The effect of this bug can be seen on a google.com using the following steps:
&gt; 
&gt; 1. Visit google.com and search for &quot;Disneyland&quot; and scroll the page until
&gt; the search field becomes fixed to the top of the page.

1.5. Tap on the search field

&gt; 2. Use -_requestTextInputContextsInRect to get the context for the search
&gt; field at the top of the page.
&gt; 3. Call -_willBeginTextInteractionInTextInputContext with this context.
&gt; 4. Call -_focusTextInputContext with this context.
&gt; 5. Call -_didFinishTextInteractionInTextInputContext with this context.
&gt; 
&gt; Then the page will scroll to the top because
&gt; -_didFinishTextInteractionInTextInputContext marks the view as needing to
&gt; reveal the focused element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643069</commentid>
    <comment_count>4</comment_count>
      <attachid>396866</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-18 15:29:21 -0700</bug_when>
    <thetext>Created attachment 396866
Patch and tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643076</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-18 16:00:57 -0700</bug_when>
    <thetext>This patch depends on the patch for bug #210624 due to placement of the added tests in the file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643092</commentid>
    <comment_count>6</comment_count>
      <attachid>396872</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-18 16:23:15 -0700</bug_when>
    <thetext>Created attachment 396872
Patch and tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643163</commentid>
    <comment_count>7</comment_count>
      <attachid>396872</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-18 21:58:25 -0700</bug_when>
    <thetext>Comment on attachment 396872
Patch and tests

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

&gt; Source/WebKit/ChangeLog:26
&gt; +        making this a FIXME, but this function is otherwise capable of handling multiple innocations

innocations  =&gt; invocations

&gt; Source/WebKit/ChangeLog:31
&gt; +        do everything we do now except for marking the page as needing reveal the focused element

Needing reveal  =&gt; needing to reveal

&gt; Source/WebKit/ChangeLog:39
&gt; +        element. Passing true to visiblePositionInFocusedNodeForPoint() asserts this to be true.

asserts  =&gt; will ultimately assert</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643492</commentid>
    <comment_count>8</comment_count>
      <attachid>396872</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2020-04-20 10:02:47 -0700</bug_when>
    <thetext>Comment on attachment 396872
Patch and tests

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

&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:5104
&gt; +        _textInteractionDidChangeFocusedElement |= NO;

Was this intended to be `_textInteractionDidChangeFocusedElement = NO;`? If not, can we just remove this line?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:583
&gt; +    // Zoom scale of scroll view should change to reveal the focused element.

I don’t believe this is true for iPad. Maybe we can only do the scale check if we’re on iPhone?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:605
&gt; +    // Zoom scale of scroll view should change to reveal the focused element.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643523</commentid>
    <comment_count>9</comment_count>
      <attachid>396872</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-20 11:00:11 -0700</bug_when>
    <thetext>Comment on attachment 396872
Patch and tests

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

Thanks for the review, Wenson.

&gt;&gt; Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:5104
&gt;&gt; +        _textInteractionDidChangeFocusedElement |= NO;
&gt; 
&gt; Was this intended to be `_textInteractionDidChangeFocusedElement = NO;`? If not, can we just remove this line?

OK I&apos;ll remove this line.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:583
&gt;&gt; +    // Zoom scale of scroll view should change to reveal the focused element.
&gt; 
&gt; I don’t believe this is true for iPad. Maybe we can only do the scale check if we’re on iPhone?

I&apos;ll check on iPad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643981</commentid>
    <comment_count>10</comment_count>
      <attachid>397109</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-21 13:19:25 -0700</bug_when>
    <thetext>Created attachment 397109
To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643984</commentid>
    <comment_count>11</comment_count>
      <attachid>397110</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-21 13:21:19 -0700</bug_when>
    <thetext>Created attachment 397110
To Land</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643986</commentid>
    <comment_count>12</comment_count>
      <attachid>397110</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-21 13:22:15 -0700</bug_when>
    <thetext>Comment on attachment 397110
To Land

Clearing flags on attachment: 397110

Committed r260449: &lt;https://trac.webkit.org/changeset/260449&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1643988</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-21 13:22:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644052</commentid>
    <comment_count>14</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2020-04-21 15:46:09 -0700</bug_when>
    <thetext>(In reply to Daniel Bates from comment #12)
&gt; Comment on attachment 397110 [details]
&gt; To Land
&gt; 
&gt; Clearing flags on attachment: 397110
&gt; 
&gt; Committed r260449: &lt;https://trac.webkit.org/changeset/260449&gt;
This change broke the iOS build:
/Volumes/Data/slave/ios-13-release/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/RequestTextInputContext.mm:550:5: error: unknown type name &apos;IPhoneUserInterfaceSwizzler&apos;; did you mean &apos;TestWebKitAPI::IPhoneUserInterfaceSwizzler&apos;?

https://build.webkit.org/builders/Apple%20iOS%2013%20Release%20%28Build%29/builds/6599/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1644060</commentid>
    <comment_count>15</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2020-04-21 15:54:01 -0700</bug_when>
    <thetext>(In reply to Ryan Haddad from comment #14)
&gt; (In reply to Daniel Bates from comment #12)
&gt; &gt; Comment on attachment 397110 [details]
&gt; &gt; To Land
&gt; &gt; 
&gt; &gt; Clearing flags on attachment: 397110
&gt; &gt; 
&gt; &gt; Committed r260449: &lt;https://trac.webkit.org/changeset/260449&gt;
&gt; This change broke the iOS build:
&gt; /Volumes/Data/slave/ios-13-release/build/Tools/TestWebKitAPI/Tests/
&gt; WebKitCocoa/RequestTextInputContext.mm:550:5: error: unknown type name
&gt; &apos;IPhoneUserInterfaceSwizzler&apos;; did you mean
&gt; &apos;TestWebKitAPI::IPhoneUserInterfaceSwizzler&apos;?
&gt; 
&gt; https://build.webkit.org/builders/Apple%20iOS%2013%20Release%20%28Build%29/
&gt; builds/6599/steps/compile-webkit/logs/stdio

Fixed in &lt;https://trac.webkit.org/changeset/260469&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396866</attachid>
            <date>2020-04-18 15:29:21 -0700</date>
            <delta_ts>2020-04-18 16:23:14 -0700</delta_ts>
            <desc>Patch and tests</desc>
            <filename>bug-210697-20200418152920.patch</filename>
            <type>text/plain</type>
            <size>36722</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU2NzNlZWM1NjQ1NzI5
MjdlNDk2ZTFkMjJkM2U5NzIyNTNhMjI4OS4uZmE1ZGExZTllYWZhMzg2ODc2Mjc1NzMyNmZhZWNi
Yzg5MzljZDY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA0LTE4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSAtX2RpZEZpbmlz
aFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dCBzaG91bGQgb25seSB6b29tIHRvIHJl
dmVhbCBmb2N1c2VkIGVsZW1lbnQgaWYgaXQgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MDk5NzUzMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGb3Igbm93LCBhZGQgYSBjb21tZW50IGFib3V0IHRoZSByZXR1cm4gdmFsdWUgb2Ygc2V0
Rm9jdXNlZEVsZW1lbnQ6IGl0IHJldHVybnMKKyAgICAgICAgd2hldGhlciBmb2N1cyB3YXMgYmxv
Y2tlZC4gSWYgZm9jdXNlZCB3YXNuJ3QgYmxvY2tlZCB0aGVuIGl0IHdpbGwgcmV0dXJuIHRydWUK
KyAgICAgICAgZXZlbiBpZiB0aGUgZWxlbWVudCB3YXNuJ3QgYWN0dWFsbHkgZm9jdXNlZC4gRm9y
IGV4YW1wbGUsIGl0IHdpbGwgcmV0dXJuIHRydWUKKyAgICAgICAgZm9yIG5vbi1mb2N1c2FibGUg
ZWxlbWVudHM6IDxpbnB1dCBkaXNhYmxlZD4uCisKKyAgICAgICAgSSB3YXMgdGVtcHRlZCB0byBm
aXggc2V0Rm9jdXNlZEVsZW1lbnQoKSB0byByZXR1cm4gdHJ1ZSB3aGVuIGl0IGFjdHVhbGx5IGZv
Y3VzZWQKKyAgICAgICAgdGhlIGVsZW1lbnQgb3IgaWYgdGhlIGVsZW1lbnQgd2FzIGFscmVhZHkg
Zm9jdXNlZCwgYnV0IEkgZGVjaWRlZCB0byBkZWZlciB0aGlzCisgICAgICAgIHVudGlsIEkgYXVk
aXQgdGhlIGNhbGxlcnMgYW5kIHJ1biBzb21lIHRlc3RzLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisKIDIwMTktMDktMTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIFN1cHBvcnQgYnVpbGRpbmcgV2ViS2l0IGZvciBNYWMgQ2F0YWx5c3QgZnJvbSBY
Y29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBkYmI1OGFmNzQxMTVjOWRmMTc0OTc1MTc3MWMxYzIyMTBiZDFhOTA4
Li44NTMzNmQwODZmODZjZTNhMzFiNTI5MmI4MGZkZTUzYTQ2OTY1YjgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ1IEBACisyMDIwLTA0LTE4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KKworICAgICAgICBbaU9TXSAtX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0
Q29udGV4dCBzaG91bGQgb25seSB6b29tIHRvIHJldmVhbCBmb2N1c2VkIGVsZW1lbnQgaWYgaXQg
Y2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEwNjk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDk5NzUzMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgc3RhdGUgdmFyaWFi
bGUgdG8gdXNlIHRvIHRyYWNrIHdoZXRoZXIgLV9mb2N1c1RleHRJbnB1dENvbnRleHQgaW52b2tl
ZCBkdXJpbmcgYQorICAgICAgICB0ZXh0IGludGVyYWN0aW9uIGFjdHVhbGx5IGZvY3VzZWQgYW4g
ZWxlbWVudC4gVGhlbiBpbiAtX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29u
dGV4dAorICAgICAgICBjb25kaXRpb24gbWFya2luZyB0aGUgcGFnZSB0byByZXZlYWwgdGhlIGZv
Y3VzZWQgZWxlbWVudCBvbiB0aGlzIHN0YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3dp
bGxCZWdpblRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDpdKTogVHVybiBhcm91bmQg
YW5kIGNhbGwgdGhlIHNhbWUKKyAgICAgICAgZnVuY3Rpb24gb24gdGhlIGNvbnRlbnQgdmlldy4K
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1
dENvbnRleHQ6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xlYW5VcEludGVyYWN0aW9u
XSk6IFJlc2V0IHN0YXRlLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRDb21taXRMb2Fk
Rm9yTWFpbkZyYW1lXSk6IERpdHRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9mb2N1c1Rl
eHRJbnB1dENvbnRleHQ6cGxhY2VDYXJldEF0OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBVcGRhdGUg
c3RhdGUgdG8KKyAgICAgICAgaW5kaWNhdGUgd2hldGhlciB0aGUgZm9jdXNkIGVsZW1lbnQgZGlk
IGNoYW5nZSBvciBub3QuIEkgdXNlIGJpdHdpc2UgT1JpbmcgaW5zdGVhZCBvZiBzdHJpY3QKKyAg
ICAgICAgYXNzaWdubWVudCB0byB1cGRhdGUgaXQgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGNhbiBi
ZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYnkgYW4gaW50ZXJuYWwKKyAgICAgICAgQXBwbGUgY2xp
ZW50IGR1cmluZyBhIHRleHQgaW50ZXJhY3Rpb24gKGUuZy4gPHJkYXI6Ly9wcm9ibGVtLzU5NDMw
ODA2PikuIEkgdGhvdWdodCBhYm91dAorICAgICAgICBtYWtpbmcgdGhpcyBhIEZJWE1FLCBidXQg
dGhpcyBmdW5jdGlvbiBpcyBvdGhlcndpc2UgY2FwYWJsZSBvZiBoYW5kbGluZyBtdWx0aXBsZSBp
bm5vY2F0aW9ucworICAgICAgICBzbyBJIGRpZG4ndC4KKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0Ol0pOiBSZXNldCBh
ZGRlZCBzdGF0ZS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkRmluaXNoVGV4dEludGVy
YWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0Ol0pOiBDaGVjayBpZiBzdGF0ZSB3YXMgc2V0IHRvCisg
ICAgICAgIGluZGljYXRlIHRoYXQgYSBmb2N1cyBjaGFuZ2UgaGFwcGVuZWQuIElmIHNvLCBkbyB3
aGF0IHdlIGRvIG5vdyArIHJlc2V0IHN0YXRlLiBPdGhlcndpc2UsCisgICAgICAgIGRvIGV2ZXJ5
dGhpbmcgd2UgZG8gbm93IGV4Y2VwdCBmb3IgbWFya2luZyB0aGUgcGFnZSBhcyBuZWVkaW5nIHJl
dmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50CisgICAgICAgIG9uIHRoZSBuZXh0IGVkaXRvciBzdGF0
ZSB1cGRhdGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c1RleHRJbnB1dENvbnRleHRBbmRQbGFj
ZUNhcmV0KTogQ2hlY2sgdGhhdCB0aGUgdGFyZ2V0IGlzIGZvY3VzYWJsZQorICAgICAgICBiZWZv
cmUgY2FsbGluZyBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KCkgYmVjYXVzZSBp
dCB1bHRpbWF0ZWx5IGNhbGxzIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudCgpCisgICAgICAg
IHRoYXQgY2FuIHJldHVybiB0cnVlIGZvciBhIG5vbi1mb2N1c2FibGUgZWxlbWVudC4gSSBhZGRl
ZCBhIGNvbW1lbnQgaW4gRG9jdW1lbnQuaCB0byBleHBsYWluCisgICAgICAgIHRoaXMgc3VidGxl
dHkuIEkgYWxzbyBkZWNpZGVkIG5vdCB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIEZvY3Vz
Q29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQoKS4KKyAgICAgICAgSW5zdGVhZCBJIGFtIGNo
ZWNraW5nIHRoZSBtb3JlIGltcG9ydGFudCBjb25kaXRpb24gdGhhdCB0aGUgZm9jdXNlZCBlbGVt
ZW50IGlzIHRoZSB0YXJnZXQKKyAgICAgICAgZWxlbWVudC4gUGFzc2luZyB0cnVlIHRvIHZpc2li
bGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludCgpIGFzc2VydHMgdGhpcyB0byBiZSB0cnVl
LgorICAgICAgICBOb3RlIHRoYXQgc2V0Rm9jdXNlZEVsZW1lbnQoKSBtYXkgbm90IGhhdmUgZG9u
ZSBhbnl0aGluZyBhcyBtX2ZvY3VzZWRFbGVtZW50IGNvdWxkIGhhdmUKKyAgICAgICAgYWxyZWFk
eSBiZWVuIGVxdWFsIHRvIHRoZSB0YXJnZXQgZWxlbWVudC4gVGhpcyBpcyBPSyBhbmQgSSBzdGls
bCB1cGRhdGUgdGhlIGNhcmV0IHBvc2l0aW9uLgorCiAyMDIwLTA0LTE2ICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIC1fZm9jdXNUZXh0
SW5wdXRDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDM0ZmQwMGUxNWI4OGQ3MjJlOTVh
OTliNWNjYmYwYjAwNWI3ZjgyN2UuLjc1NTM1MTJiZDAxZjc0NWFhNjYzZmY3ZTNmYjkzYWRkMDEw
M2I3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03NjEsNiArNzYxLDggQEAgcHVibGljOgog
ICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgcHJlcGFyZU1vdXNlRXZlbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYpOwogCiAgICAgZW51bSBjbGFzcyBGb2N1c1JlbW92YWxFdmVudHNNb2RlIHsgRGlzcGF0
Y2gsIERvTm90RGlzcGF0Y2ggfTsKKyAgICAvLyBSZXR1cm5zIHdoZXRoZXIgZm9jdXMgd2FzIGJs
b2NrZWQuIEEgdHJ1ZSB2YWx1ZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoZSBlbGVtZW50
IHdhcyBmb2N1c2VkLgorICAgIC8vIFRoZSBlbGVtZW50IGNvdWxkIGhhdmUgYWxyZWFkeSBiZWVu
IGZvY3VzZWQgb3IgbWF5IG5vdCBiZSBmb2N1c2FibGUgKGUuZy4gPGlucHV0IGRpc2FibGVkPiku
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiwgRm9j
dXNEaXJlY3Rpb24gPSBGb2N1c0RpcmVjdGlvbk5vbmUsCiAgICAgICAgIEZvY3VzUmVtb3ZhbEV2
ZW50c01vZGUgPSBGb2N1c1JlbW92YWxFdmVudHNNb2RlOjpEaXNwYXRjaCk7CiAgICAgRWxlbWVu
dCogZm9jdXNlZEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvY3VzZWRFbGVtZW50LmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d1ByaXZhdGVGb3JUZXN0aW5nSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKaW5kZXggMWZlZjgyODNkNzdkMWJkNDRk
NzE5MDg4MTMxNmM5OTVhOWFiMmJhMy4uODY1YjcwN2ViNDE5YzFlYTBiOWQxYmU3ZWI2MDhiYTk2
MGJhM2VmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaApAQCAtNTEsNiArNTEsOCBA
QAogLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0
OwogLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+
ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0Oihf
V0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dCBwbGFjZUNhcmV0QXQ6KENHUG9pbnQpcG9pbnQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJUmVzcG9uZGVyPFVJVGV4dElucHV0PiAqKSlj
b21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX3dpbGxCZWdpblRleHRJbnRlcmFjdGlvbkluVGV4
dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQ7CistICh2b2lkKV9k
aWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENv
bnRleHQgKiljb250ZXh0OwogLSAodm9pZClfcmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0Rv
Y3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tE
b2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9hZGp1c3RTZWxl
Y3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVsdGFSYW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQppbmRleCAyZTlhMWI1
ZjljZDIxZmZkNDkwZWJlYTJhMDM1OGU2NmNkOGUwNjlkLi45YzM3YjQ0ZGI0ZmUyNDBlYjcyMmQ1
M2QyZWMxNTMyOGRiOTkzODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCkBAIC02OCw2ICs2OCwxNiBAQCAtICh2
b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0
IHBsYWNlQ2FyZXRBdDooQ0dQbwogICAgIFtfY29udGVudFZpZXcgX2ZvY3VzVGV4dElucHV0Q29u
dGV4dDpjb250ZXh0IHBsYWNlQ2FyZXRBdDphZGp1c3RlZFBvaW50IGNvbXBsZXRpb25IYW5kbGVy
OmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAorLSAodm9pZClfd2lsbEJlZ2luVGV4dEludGVyYWN0
aW9uSW5UZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dAorewor
ICAgIFtfY29udGVudFZpZXcgX3dpbGxCZWdpblRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29u
dGV4dDpjb250ZXh0XTsKK30KKworLSAodm9pZClfZGlkRmluaXNoVGV4dEludGVyYWN0aW9uSW5U
ZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dAoreworICAgIFtf
Y29udGVudFZpZXcgX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDpj
b250ZXh0XTsKK30KKwogLSAodm9pZClfcmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3Vt
ZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1
bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBbX2NvbnRlbnRWaWV3IHJl
cXVlc3REb2N1bWVudENvbnRleHQ6cmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9u
SGFuZGxlcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggZmIyZTBkMGVlZWVmZjA2YmFiMGZjOWNkNjUyMTBk
ZDk3NDI0ZmJiMC4uMDFkMmY0MTY4N2RkMGVkNzIxM2EwY2JkY2FjNmI1MDFmODhmZDhhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaApAQCAtMzUwLDYgKzM1MCw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0
YSB7CiAgICAgQk9PTCBfZGlkQWNjZXNzb3J5VGFiSW5pdGlhdGVGb2N1czsKICAgICBCT09MIF9p
c0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQ7CiAgICAgQk9PTCBfc2hvd0RlYnVnVGFwSGln
aGxpZ2h0c0ZvckZhc3RDbGlja2luZzsKKyAgICBCT09MIF90ZXh0SW50ZXJhY3Rpb25EaWRDaGFu
Z2VGb2N1c2VkRWxlbWVudDsKIAogICAgIFdlYkNvcmU6OlBvaW50ZXJJRCBtX2NvbW1pdFBvdGVu
dGlhbFRhcFBvaW50ZXJJZDsKIApAQCAtNTcxLDExICs1NzIsOCBAQCBGT1JfRUFDSF9QUklWQVRF
X1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dF
Ql9WSUVXKQogCiAtICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVj
dClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PF9XS1RleHRJbnB1dENv
bnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENv
bnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0IHBsYWNlQ2FyZXRBdDooQ0dQb2lu
dClwb2ludCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlSZXNwb25kZXI8VUlUZXh0SW5w
dXQ+ICopKWNvbXBsZXRpb25IYW5kbGVyOwotCi0jaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURE
SVRJT05TKQogLSAodm9pZClfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250
ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dDsKIC0gKHZvaWQpX2RpZEZpbmlzaFRl
eHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNv
bnRleHQ7Ci0jZW5kaWYKIAogLSAodm9pZClfaGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0Oihj
b25zdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYpY29udGV4dDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggMDQwNTAxOGIzNjlmYzNjN2ZkMTJjMDY4YjE3NmQ5ODI4ZWQyMzFlZi4uNzIy
YTY2NTNhYzMyZDhlM2QzOTFiZmQxMDRlYzA0OTVhYTlkMGExNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC05MjMsNiArOTIzLDggQEAgLSAodm9pZCljbGVhblVwSW50ZXJhY3Rpb24KICAgICBfc2Vlbkhh
cmR3YXJlS2V5RG93bkluTm9uRWRpdGFibGVFbGVtZW50ID0gTk87CiAjZW5kaWYKIAorICAgIF90
ZXh0SW50ZXJhY3Rpb25EaWRDaGFuZ2VGb2N1c2VkRWxlbWVudCA9IE5POworCiAgICAgaWYgKF9p
bnRlcmFjdGlvblZpZXdzQ29udGFpbmVyVmlldykgewogICAgICAgICBbc2VsZi5sYXllciByZW1v
dmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJ0cmFuc2Zvcm0iXTsKICAgICAgICAgW19pbnRl
cmFjdGlvblZpZXdzQ29udGFpbmVyVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKQEAgLTQyNTUs
NiArNDI1Nyw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJhbWUKICAgICBbX3Rl
eHRJbnRlcmFjdGlvbkFzc2lzdGFudCBhY3RpdmF0ZVNlbGVjdGlvbl07CiAgICAgW193ZWJWaWV3
IF9kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lXTsKIAorICAgIF90ZXh0SW50ZXJhY3Rpb25EaWRD
aGFuZ2VGb2N1c2VkRWxlbWVudCA9IE5POwogICAgIF9oYXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRp
b24gPSBOTzsKICAgICBfcG9zaXRpb25JbmZvcm1hdGlvbiA9IHsgfTsKIH0KQEAgLTUwOTIsMjUg
KzUwOTUsMjggQEAgLSAoQk9PTClfaXNUZXh0SW5wdXRDb250ZXh0Rm9jdXNlZDooX1dLVGV4dElu
cHV0Q29udGV4dCAqKWNvbnRleHQKIC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dL
VGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQgcGxhY2VDYXJldEF0OihDR1BvaW50KXBvaW50IGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVJlc3BvbmRlcjxVSVRleHRJbnB1dD4gKikpY29t
cGxldGlvbkhhbmRsZXIKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CisgICAgLy8gVGhpcyBmdW5j
dGlvbiBjYW4gYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyBhIHRleHQgaW50ZXJhY3Rp
b24gKGUuZy4gPHJkYXI6Ly9wcm9ibGVtLzU5NDMwODA2PikuCiAgICAgaWYgKCFbc2VsZiBiZWNv
bWVGaXJzdFJlc3BvbmRlcl0pIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoW3NlbGYgX2lzVGV4dElucHV0Q29udGV4dEZv
Y3VzZWQ6Y29udGV4dF0pIHsKKyAgICAgICAgX3RleHRJbnRlcmFjdGlvbkRpZENoYW5nZUZvY3Vz
ZWRFbGVtZW50IHw9IE5POwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihfZm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5pc1JlYWRPbmx5ID8gbmlsIDogc2VsZik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKICAgICBhdXRvIGNo
ZWNrRm9jdXNlZEVsZW1lbnQgPSBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3
PiB7IHNlbGYgfSwgY29udGV4dCA9IFtjb250ZXh0IGNvcHldLCBjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHN1Y2Nlc3MpIHsKICAgICAg
ICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7Ci0gICAgICAgIGlmIChzdHJvbmdT
ZWxmKQotICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9
IE5POwotICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgIXN1Y2Nlc3MpIHsKKyAgICAgICAgaWYg
KCFzdHJvbmdTZWxmKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9jdXNlZEFuZEVkaXRh
YmxlID0gW3N0cm9uZ1NlbGYgX2lzVGV4dElucHV0Q29udGV4dEZvY3VzZWQ6Y29udGV4dF0gJiYg
IXN0cm9uZ1NlbGYtPl9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmlzUmVhZE9ubHk7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZvY3VzZWRBbmRFZGl0YWJsZSA/IHN0cm9uZ1NlbGYuYXV0
b3JlbGVhc2UoKSA6IG5pbCk7CisgICAgICAgIGJvb2wgaXNGb2N1c2VkID0gc3VjY2VzcyAmJiBb
c3Ryb25nU2VsZiBfaXNUZXh0SW5wdXRDb250ZXh0Rm9jdXNlZDpjb250ZXh0XTsKKyAgICAgICAg
Ym9vbCBpc0VkaXRhYmxlID0gc3VjY2VzcyAmJiAhc3Ryb25nU2VsZi0+X2ZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24uaXNSZWFkT25seTsKKyAgICAgICAgc3Ryb25nU2VsZi0+X3RleHRJbnRlcmFj
dGlvbkRpZENoYW5nZUZvY3VzZWRFbGVtZW50IHw9IGlzRm9jdXNlZDsKKyAgICAgICAgc3Ryb25n
U2VsZi0+X3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IE5POworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihpc0ZvY3VzZWQgJiYgaXNFZGl0YWJsZSA/IHN0cm9uZ1NlbGYuZ2V0KCkgOiBuaWwp
OwogICAgIH07CiAgICAgX3BhZ2UtPmZvY3VzVGV4dElucHV0Q29udGV4dEFuZFBsYWNlQ2FyZXQo
Y29udGV4dC5fdGV4dElucHV0Q29udGV4dCwgV2ViQ29yZTo6SW50UG9pbnQgeyBwb2ludCB9LCBX
VEZNb3ZlKGNoZWNrRm9jdXNlZEVsZW1lbnQpKTsKIH0KQEAgLTUxMzUsMTEgKzUxNDEsMTAgQEAg
LSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikKICAgICB9KTsKIH0KIAotI2lmIFVTRShURVhUX0lOVEVS
QUNUSU9OX0FERElUSU9OUykKLQogLSAodm9pZClfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5U
ZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dAogewogICAgIEFT
U0VSVChjb250ZXh0KTsKKyAgICBfdGV4dEludGVyYWN0aW9uRGlkQ2hhbmdlRm9jdXNlZEVsZW1l
bnQgPSBOTzsKICAgICBfcGFnZS0+c2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVy
SW5zZXJ0aW9uKGZhbHNlKTsKICAgICBfcGFnZS0+c2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGNvbnRl
eHQuX3RleHRJbnB1dENvbnRleHQsIGZhbHNlKTsKICAgICBbc2VsZiBfc3RhcnRTdXBwcmVzc2lu
Z1NlbGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6OkludGVyYWN0aW9uSXNIYXBwZW5p
bmddOwpAQCAtNTE1MCwxNyArNTE1NSwxNiBAQCAtICh2b2lkKV9kaWRGaW5pc2hUZXh0SW50ZXJh
Y3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZQogICAg
IEFTU0VSVChjb250ZXh0KTsKICAgICBbc2VsZiBfc3RvcFN1cHByZXNzaW5nU2VsZWN0aW9uQXNz
aXN0YW50Rm9yUmVhc29uOldlYktpdDo6SW50ZXJhY3Rpb25Jc0hhcHBlbmluZ107CiAgICAgX3Bh
Z2UtPnNldENhblNob3dQbGFjZWhvbGRlcihjb250ZXh0Ll90ZXh0SW5wdXRDb250ZXh0LCB0cnVl
KTsKLSAgICAvLyBNYXJrIHRvIHpvb20gdG8gcmV2ZWFsIHRoZSBuZXdseSBmb2N1c2VkIGVsZW1l
bnQgb24gdGhlIG5leHQgZWRpdG9yIHN0YXRlIHVwZGF0ZS4KLSAgICAvLyBUaGVuIHRlbGwgdGhl
IHdlYiBwcm9jZXNzIHRvIHJldmVhbCB0aGUgY3VycmVudCBzZWxlY3Rpb24sIHdoaWNoIHdpbGwg
c2VuZCB1cyAodGhlCi0gICAgLy8gVUkgcHJvY2VzcykgYW4gZWRpdG9yIHN0YXRlIHVwZGF0ZS4K
LSAgICAvLyBGSVhNRTogT25seSBkbyB0aGlzIGlmIGZvY3VzIGNoYW5nZWQgc2luY2UgLXdpbGxC
ZWdpblRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dCB3YXMgY2FsbGVkLgotICAgIC8v
IFNlZSA8cmRhcjovL3Byb2JsZW0vNjA5OTc1MzA+IGZvciBtb3JlIGRldGFpbHMuCi0gICAgX3Bh
Z2UtPnNldFdhaXRpbmdGb3JQb3N0TGF5b3V0RWRpdG9yU3RhdGVVcGRhdGVBZnRlckZvY3VzaW5n
RWxlbWVudCh0cnVlKTsKKyAgICBpZiAoX3RleHRJbnRlcmFjdGlvbkRpZENoYW5nZUZvY3VzZWRF
bGVtZW50KSB7CisgICAgICAgIC8vIE1hcmsgdG8gem9vbSB0byByZXZlYWwgdGhlIG5ld2x5IGZv
Y3VzZWQgZWxlbWVudCBvbiB0aGUgbmV4dCBlZGl0b3Igc3RhdGUgdXBkYXRlLgorICAgICAgICAv
LyBUaGVuIHRlbGwgdGhlIHdlYiBwcm9jZXNzIHRvIHJldmVhbCB0aGUgY3VycmVudCBzZWxlY3Rp
b24sIHdoaWNoIHdpbGwgc2VuZCB1cyAodGhlCisgICAgICAgIC8vIFVJIHByb2Nlc3MpIGFuIGVk
aXRvciBzdGF0ZSB1cGRhdGUuCisgICAgICAgIF9wYWdlLT5zZXRXYWl0aW5nRm9yUG9zdExheW91
dEVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnQodHJ1ZSk7CisgICAgICAgIF90
ZXh0SW50ZXJhY3Rpb25EaWRDaGFuZ2VGb2N1c2VkRWxlbWVudCA9IE5POworICAgIH0KICAgICBf
cGFnZS0+c2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKHRydWUp
OwogfQogCi0jZW5kaWYKLQogI2lmIFVTRShVSUtJVF9LRVlCT0FSRF9BRERJVElPTlMpCiAKIC0g
KHZvaWQpbW9kaWZpZXJGbGFnc0RpZENoYW5nZUZyb206KFVJS2V5TW9kaWZpZXJGbGFncylvbGRG
bGFncyB0bzooVUlLZXlNb2RpZmllckZsYWdzKW5ld0ZsYWdzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDgwODQxMWEwOWIz
ZDA2NmZhZjk3NzkwNmY1ZGExNzBjMTVmZWUzOGYuLjg0OTMyZmY0NzM5NGRjMmZhNzI5OGQxNGUw
MDc3OTI0ZGMxNTY2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00MzAyLDIxICs0MzAyLDIwIEBAIHZvaWQgV2ViUGFn
ZTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0QW5kUGxhY2VDYXJldChjb25zdCBFbGVtZW50Q29udGV4
dCYgZWxlbWVudENvCiAgICAgLy8gUGVyZm9ybWluZyBsYXlvdXQgY291bGQgaGF2ZSBjb3VsZCB0
b3JuIGRvd24gdGhlIGVsZW1lbnQncyByZW5kZXJlci4gQ2hlY2sgdGhhdCB3ZSBzdGlsbAogICAg
IC8vIGhhdmUgb25lLiBPdGhlcndpc2UsIGJhaWwgb3V0IGFzIHRoaXMgZnVuY3Rpb24gb25seSBm
b2N1c2VzIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIHZpc3VhbAogICAgIC8vIHJlcHJlc2VudGF0aW9u
LgotICAgIGlmICghdGFyZ2V0LT5yZW5kZXJlcigpKSB7CisgICAgaWYgKCF0YXJnZXQtPnJlbmRl
cmVyKCkgfHwgIXRhcmdldC0+aXNGb2N1c2FibGUoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yIHsgUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmdGFyZ2V0
LT5kb2N1bWVudCgpIH07CiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gdXNlcklzSW50ZXJhY3RpbmdD
aGFuZ2UgeyBtX3VzZXJJc0ludGVyYWN0aW5nLCB0cnVlIH07Ci0gICAgYm9vbCBkaWRGb2N1cyA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEVsZW1lbnQodGFyZ2V0LmdldCgp
LCB0YXJnZXRGcmFtZSk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2Vk
RWxlbWVudCh0YXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKTsKIAogICAgIC8vIFNldHRpbmcgdGhl
IGZvY3VzZWQgZWxlbWVudCBjb3VsZCB0ZWFyIGRvd24gdGhlIGVsZW1lbnQncyByZW5kZXJlci4g
Q2hlY2sgdGhhdCB3ZSBzdGlsbCBoYXZlIG9uZS4KLSAgICBpZiAoIWRpZEZvY3VzIHx8ICF0YXJn
ZXQtPnJlbmRlcmVyKCkpIHsKKyAgICBpZiAobV9mb2N1c2VkRWxlbWVudCAhPSB0YXJnZXQgfHwg
IXRhcmdldC0+cmVuZGVyZXIoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgQVNTRVJUKG1fZm9jdXNlZEVsZW1lbnQgPT0g
dGFyZ2V0KTsKICAgICAvLyBUaGUgZnVuY3Rpb24gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9k
ZUZvclBvaW50IGNvbnN0cmFpbnMgdGhlIHBvaW50IHRvIGJlIGluc2lkZQogICAgIC8vIHRoZSBi
b3VuZHMgb2YgdGhlIHRhcmdldCBlbGVtZW50LgogICAgIGF1dG8gcG9zaXRpb24gPSB2aXNpYmxl
UG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQodGFyZ2V0RnJhbWUsIHBvaW50LCB0cnVlIC8q
IGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQgKi8pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFmOTgwYmE4NDBkMDQwODNiODgwM2Vj
ZTdhYjVhNjgxZTIwYzkxMzIuLjg4NzRjY2Q1ZmQ1ZTUwOTUwZGZhNGNhOTJjYWI1OThiODFiMDEw
ZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOSBAQAorMjAyMC0wNC0xOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgW2lPU10gLV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1
dENvbnRleHQgc2hvdWxkIG9ubHkgem9vbSB0byByZXZlYWwgZm9jdXNlZCBlbGVtZW50IGlmIGl0
IGNoYW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDY5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA5OTc1MzA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSB1c2UgdGhlIHRlcm0gImFzc2lz
dGVkIiBiZWxvdyBhbmQgaW4gdGhlIHRlc3RzIHRvIGRlc2NyaWJlIGFuIGVsZW1lbnQgdGhhdCBp
cyBib3RoIERPTQorICAgICAgICBmb2N1c2VkIGFuZCB0aGUgVUkgcHJvY2VzcyBpcyBzaG93aW5n
IGFuIGlucHV0IHZpZXcgKGxpa2UgdGhlIHNvZnR3YXJlIGtleWJvYXJkKSBmb3IgaXQuCisgICAg
ICAgIEZvciBtYW55IG9mIHRoZSB0ZXN0cyBJIGNoZWNrIGZvciBhIHpvb20gc2NhbGUgY2hhbmdl
IGFzIGEgd2F5IHRvIGRldGVjdCBpZiB0aGUgcGFnZQorICAgICAgICB6b29tZWQgdG8gcmV2ZWFs
IHRoZSBmb2N1c2VkIGVsZW1lbnQuCisKKyAgICAgICAgQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBm
b2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAgICAxLiBQbGFjZSB0aGUgY2FyZXQgaW4gYSBmb2N1
c2VkIGZpZWxkIHRoYXQgaXNuJ3QgYmVpbmcgYXNzaXN0ZWQuCisgICAgICAgICAgICAyLiBGb2N1
c2luZyBhbiBhc3Npc3RlZCBlbGVtZW50IHNob3VsZCBub3Qgc2Nyb2xsIHRoZSBwYWdlLgorICAg
ICAgICAgICAgMy4gRm9jdXNpbmcgYW4gb2Zmc2NyZWVuIHJlYWQtb25seSBlbGVtZW50IHNob3Vs
ZCBub3QgY2hhbmdlIHpvb20gc2NhbGUuCisgICAgICAgICAgICA0LiBGb2N1c2luZyBhbiBvZmZz
Y3JlZW4gZWxlbWVudCBzaG91bGQgY2hhbmdlIHRoZSB6b29tIHNjYWxlLgorICAgICAgICAgICAg
NS4gQ2FsbGluZyAtX2ZvY3VzVGV4dElucHV0Q29udGV4dCBvbiBhbiBvZmZzY3JlZW4gZWxlbWVu
dCBtdWx0aXBsZSB0aW1lcworICAgICAgICAgICAgZHVyaW5nIGEgdGV4dCBpbnRlcmFjdGlvbiBz
aG91bGQgY2hhbmdlIHRoZSB6b29tIHNjYWxlLiBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgaXMK
KyAgICAgICAgICAgIHRvIGVuc3VyZSB0aGF0IGxhdGVyIGNhbGxzIHRoYXQgZG8gbm90IGZvY3Vz
IHRoZSBlbGVtZW50IChiZWNhdXNlIGl0IGlzIGFscmVhZHkgZm9jdXNlZCkKKyAgICAgICAgICAg
IGRvbid0IHByZXZlbnQgem9vbWluZyBmb3IgdGhlIGZpcnN0IGNhbGwgdGhhdCBkaWQgZm9jdXMg
dGhlIGVsZW1lbnQuCisgICAgICAgICAgICA2LiBGb2N1c2luZyBhbiBvZmZzY3JlZW4gZWxlbWVu
dCwgZGVmb2N1c2luZyBpdCwgZGlzYWJsaW5nIGl0LCBhbmQgZm9jdXNpbmcgaXQKKyAgICAgICAg
ICAgIGFnYWluIGR1cmluZyBhIHRleHQgaW50ZXJhY3Rpb24gc2hvdWxkIG5vdCBjaGFuZ2Ugem9v
bSBzY2FsZS4KKyAgICAgICAgICAgIDcuIEZvY3VzaW5nIGFuIG9mZnNjcmVlbiBlbGVtZW50LCBk
ZWZvY3VzaW5nIGl0LCBhbmQgZm9jdXNpbmcgaXQgYWdhaW4gZHVyaW5nIGEKKyAgICAgICAgICAg
IHRleHQgaW50ZXJhY3Rpb24gc2hvdWxkIGNoYW5nZSB6b29tIHNjYWxlLgorICAgICAgICAgICAg
OC4gRm9jdXNpbmcgYW4gYXNzaXN0ZWQgZWxlbWVudCBkdXJpbmcgYSB0ZXh0IGludGVyYWN0aW9u
IHNob3VsZCBub3QgY2hhbmdlIHpvb20gc2NhbGUuCisgICAgICAgICAgICA5LiBGb2N1c2luZyBh
IG5vbi1hc3Npc3RlZCBmb2N1c2VkIGVsZW1lbnQgZHVyaW5nIGEgdGV4dCBpbnRlcmFjdGlvbiBz
aG91bGQgY2hhbmdlIHpvb20gc2NhbGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tOgorICAgICAgICAoVGV4dElu
dGVyYWN0aW9uRm9yU2NvcGU6OlRleHRJbnRlcmFjdGlvbkZvclNjb3BlKToKKyAgICAgICAgKFRl
eHRJbnRlcmFjdGlvbkZvclNjb3BlOjp+VGV4dEludGVyYWN0aW9uRm9yU2NvcGUpOgorICAgICAg
ICBBZGRlZCBjb252ZW5pZW5jZSBSQUlJIG9iamVjdCB0byBjYWxsIC1fd2lsbEJlZ2luVGV4dElu
dGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0CisgICAgICAgIGFuZCAtX2RpZEZpbmlzaFRleHRJ
bnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dC4KKyAgICAgICAgKFRFU1QpOiBBZGRlZC4KKwog
MjAyMC0wNC0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHNvbWUgbW9yZSB0ZXN0cyBmb3IgLWZvY3VzVGV4dElucHV0Q29udGV4dDpwbGFjZUNhcmV0
QXQ6Y29tcGxldGlvbkhhbmRsZXI6CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQppbmRl
eCBkYjdlMmM2MTEwZTMxOTdlYzhkMTU2MTU4YmE0OTVkZWRjM2U3MzljLi41OTcxYWFmZDA0OWIw
ODMwMjVjMTcxYzY1ZDkxODBhOTk5ZDMwZThiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRl
eHQubW0KQEAgLTM4LDYgKzM4LDI2IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLVGV4dElucHV0Q29u
dGV4dC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCitjbGFzcyBUZXh0SW50ZXJhY3Rp
b25Gb3JTY29wZSB7CitwdWJsaWM6CisgICAgVGV4dEludGVyYWN0aW9uRm9yU2NvcGUoY29uc3Qg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+JiB3ZWJWaWV3LCBjb25zdCBSZXRhaW5QdHI8X1dLVGV4
dElucHV0Q29udGV4dD4mIHRleHRJbnB1dENvbnRleHQpCisgICAgICAgIDogbV93ZWJWaWV3IHsg
d2ViVmlldyB9CisgICAgICAgICwgbV90ZXh0SW5wdXRDb250ZXh0IHsgdGV4dElucHV0Q29udGV4
dCB9CisgICAgeworICAgICAgICBbbV93ZWJWaWV3IF93aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25J
blRleHRJbnB1dENvbnRleHQ6bV90ZXh0SW5wdXRDb250ZXh0LmdldCgpXTsKKyAgICB9CisKKyAg
ICB+VGV4dEludGVyYWN0aW9uRm9yU2NvcGUoKQorICAgIHsKKyAgICAgICAgW21fd2ViVmlldyBf
ZGlkRmluaXNoVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0Om1fdGV4dElucHV0Q29u
dGV4dC5nZXQoKV07CisgICAgICAgIFttX3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25V
cGRhdGVdOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4g
bV93ZWJWaWV3OworICAgIFJldGFpblB0cjxfV0tUZXh0SW5wdXRDb250ZXh0PiBtX3RleHRJbnB1
dENvbnRleHQ7Cit9OworCiBAaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAoU3luY2hyb25v
dXNUZXh0SW5wdXRDb250ZXh0KQogCiAtIChOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4g
KilzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVj
dApAQCAtMzIzLDcgKzM0Myw3IEBAIFRFU1QoUmVxdWVzdFRleHRJbnB1dENvbnRleHQsIENhcmV0
U2hvdWxkTm90TW92ZUluQWxyZWFkeUZvY3VzZWRGaWVsZDIpCiAgICAgRVhQRUNUX0VRKDEsIFtb
d2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxl
bWVudC5zZWxlY3Rpb25TdGFydCJdIGludFZhbHVlXSk7CiAgICAgRVhQRUNUX0VRKDEsIFtbd2Vi
VmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dC5zZWxlY3Rpb25FbmQiXSBpbnRWYWx1ZV0pOwogCi0gICAgLy8gVXNlIC1mb2N1c1RleHRJbnB1
dENvbnRleHQ6IHRvIHBsYWNlIHRoZSBjYXJldCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWVsZDsg
bm8gY2hhbmdlIGJlY2F1c2UgdGhlIGZpZWxkIGlzIGFscmVhZHkgZm9jdXNlZC4KKyAgICAvLyBV
c2UgLWZvY3VzVGV4dElucHV0Q29udGV4dDogdG8gcGxhY2UgdGhlIGNhcmV0IGF0IHRoZSBiZWdp
bm5pbmcgb2YgdGhlIGZpZWxkOyBubyBjaGFuZ2UgYmVjYXVzZSB0aGUgZmllbGQgaXMgYWxyZWFk
eSBmb2N1c2VkLgogICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMg
PSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3
ZWJWaWV3IGJvdW5kc11dOwogICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsKICAg
ICBSZXRhaW5QdHI8X1dLVGV4dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50ID0gY29udGV4dHNb
MF07CkBAIC0zMzMsNiArMzUzLDM0IEBAIFRFU1QoUmVxdWVzdFRleHRJbnB1dENvbnRleHQsIENh
cmV0U2hvdWxkTm90TW92ZUluQWxyZWFkeUZvY3VzZWRGaWVsZDIpCiAgICAgRVhQRUNUX0VRKDEs
IFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZl
RWxlbWVudC5zZWxlY3Rpb25FbmQiXSBpbnRWYWx1ZV0pOwogfQogCitURVNUKFJlcXVlc3RUZXh0
SW5wdXRDb250ZXh0LCBQbGFjZUNhcmV0SW5Ob25Bc3Npc3RlZEZvY3VzZWRGaWVsZCkKK3sKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3
IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFk
b3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IF9z
ZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8aW5wdXQgdHlwZT0ndGV4dCcg
aWQ9J2lucHV0JyB2YWx1ZT0naGVsbG8gd29ybGQnIHN0eWxlPSd3aWR0aDogMTAwcHg7IGhlaWdo
dDogNTBweDsnPiIpXTsKKworICAgIC8vIFVzZSBKYXZhU2NyaXB0IHRvIHBsYWNlIHRoZSBjYXJl
dCBhZnRlciB0aGUgJ2gnIGluIHRoZSBmaWVsZC4KKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1
c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dL
Rm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Q
b2xpY3lEaXNhbGxvdzsgfV07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImlucHV0LmZvY3VzKCkiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIklOUFVUIiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQudGFnTmFtZSJdKTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoMSwgMSkiXTsKKyAgICBFWFBFQ1RfRVEoMSwgW1t3
ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVt
ZW50LnNlbGVjdGlvblN0YXJ0Il0gaW50VmFsdWVdKTsKKyAgICBFWFBFQ1RfRVEoMSwgW1t3ZWJW
aWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50
LnNlbGVjdGlvbkVuZCJdIGludFZhbHVlXSk7CisKKyAgICAvLyBVc2UgLWZvY3VzVGV4dElucHV0
Q29udGV4dDogdG8gcGxhY2UgdGhlIGNhcmV0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpZWxk
OyB0aGUgY2FyZXQgc2hvdWxkIG1vdmUuCisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFy
dHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3Vz
ZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5
QWxsb3c7IH1dOworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMg
PSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3
ZWJWaWV3IGJvdW5kc11dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsKKyAg
ICBSZXRhaW5QdHI8X1dLVGV4dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50ID0gY29udGV4dHNb
MF07CisgICAgRVhQRUNUX0VRKChVSVJlc3BvbmRlcjxVSVRleHRJbnB1dD4gKilbd2ViVmlldyB0
ZXh0SW5wdXRDb250ZW50Vmlld10sIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1
dENvbnRleHQ6aW5wdXRFbGVtZW50LmdldCgpIHBsYWNlQ2FyZXRBdDpbaW5wdXRFbGVtZW50IGJv
dW5kaW5nUmVjdF0ub3JpZ2luXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJJTlBVVCIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50
LnRhZ05hbWUiXSk7CisgICAgRVhQRUNUX0VRKDAsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCJdIGlu
dFZhbHVlXSk7CisgICAgRVhQRUNUX0VRKDAsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQiXSBpbnRWYWx1
ZV0pOworfQorCiBURVNUKFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0LCBGb2N1c1RleHRGaWVsZFRo
ZW5Qcm9ncmFtbWF0aWNhbGx5UmVwbGFjZVdpdGhUZXh0QXJlYUFuZEZvY3VzVGV4dEFyZWEpCiB7
CiAgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKQEAgLTQ3MSw0ICs1MTksMjE1IEBAIFRFU1QoUmVxdWVzdFRleHRJ
bnB1dENvbnRleHQsIFN3aXRjaEZvY3VzQmV0d2VlbkZyYW1lcykKICAgICBFWFBFQ1RfV0tfU1RS
RVEoImlmcmFtZUZpZWxkIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2lmcmFtZScpLmNvbnRlbnREb2N1bWVudC5hY3RpdmVF
bGVtZW50LnZhbHVlIl0pOwogfQogCitURVNUKFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0LCBGb2N1
c2luZ0Fzc2lzdGVkRWxlbWVudFNob3VsZE5vdFNjcm9sbFBhZ2UpCit7CisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVz
dElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1
c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dL
Rm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Q
b2xpY3lBbGxvdzsgfV07CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxl
Z2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFw
cGx5U3R5bGUoQCI8Ym9keSBzdHlsZT0naGVpZ2h0OiA0MDk2cHgnPjxkaXYgaWQ9J2VkaXRhYmxl
JyBzdHlsZT0ncG9zaXRpb246IGZpeGVkOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiA1MHB4OyBiYWNr
Z3JvdW5kLWNvbG9yOiBibHVlJyBjb250ZW50ZWRpdGFibGU9J3RydWUnPjwvZGl2PjwvYm9keT4i
KV07CisKKyAgICBOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRleHRzID0gW3dl
YlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmll
dyBib3VuZHNdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisKKyAgICAv
LyBGb2N1cyB0aGUgZmllbGQgdXNpbmcgSmF2YVNjcmlwdCBhbmQgc2Nyb2xsIHRoZSBwYWdlLgor
ICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0No
YW5nZTpAImVkaXRhYmxlLmZvY3VzKCkiXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkRJViIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVt
ZW50LnRhZ05hbWUiXSk7CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAIndpbmRvdy5zY3JvbGxUbygwLCAyMDAwKSJdOworICAgIEVYUEVDVF9FUSgyMDAwLCBbW3dl
YlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5zY3JvbGxZIl0gaW50
VmFsdWVdKTsKKworICAgIC8vIEZvY3VzIHRoZSBmaWVsZCB1c2luZyAtZm9jdXNUZXh0SW5wdXRD
b250ZXh0OyBwYWdlIHNob3VsZCBub3Qgc2Nyb2xsLgorICAgIFJldGFpblB0cjxfV0tUZXh0SW5w
dXRDb250ZXh0PiBlZGl0YWJsZUVsZW1lbnQgPSBjb250ZXh0c1swXTsKKyAgICBFWFBFQ1RfRVEo
KFVJUmVzcG9uZGVyPFVJVGV4dElucHV0PiAqKVt3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3
XSwgW3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDplZGl0YWJsZUVs
ZW1lbnQuZ2V0KCkgcGxhY2VDYXJldEF0OltlZGl0YWJsZUVsZW1lbnQgYm91bmRpbmdSZWN0XS5v
cmlnaW5dKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkRJViIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7Cisg
ICAgRVhQRUNUX0VRKDIwMDAsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAid2luZG93LnNjcm9sbFkiXSBpbnRWYWx1ZV0pOworfQorCitURVNUKFJlcXVlc3RUZXh0SW5w
dXRDb250ZXh0LCBUZXh0SW50ZXJhY3Rpb25fRm9jdXNpbmdSZWFkT25seUVsZW1lbnRDaGFuZ2Vz
Wm9vbVNjYWxlKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8Ym9keSBzdHlsZT0n
aGVpZ2h0OiA0MDk2cHgnPjxpbnB1dCBpZD0naW5wdXQnPjwvYm9keT4iKV07CisKKyAgICBOU0Fy
cmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25v
dXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBib3VuZHNdXTsKKyAg
ICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAgUmV0YWluUHRyPF9XS1RleHRJ
bnB1dENvbnRleHQ+IGlucHV0RWxlbWVudCA9IGNvbnRleHRzWzBdOworCisgICAgRVhQRUNUX1dL
X1NUUkVRKCJCT0RZIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW5wdXQucmVhZE9ubHkgPSB0cnVlIl07CisgICAgW3dlYlZp
ZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlID0gMjsKKworICAgIC8vIEZvY3VzIHRoZSBmaWVsZCB1
c2luZyAtZm9jdXNUZXh0SW5wdXRDb250ZXh0OyB6b29tIHNjYWxlIG9mIHNjcm9sbCB2aWV3IHNo
b3VsZCBjaGFuZ2UgdG8gcmV2ZWFsIHRoZSBmb2N1c2VkIGVsZW1lbnQuCisgICAgeworICAgICAg
ICBUZXh0SW50ZXJhY3Rpb25Gb3JTY29wZSBzY29wZSB7IHdlYlZpZXcsIGlucHV0RWxlbWVudCB9
OworICAgICAgICBFWFBFQ1RfTlVMTChbd2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5w
dXRDb250ZXh0OmlucHV0RWxlbWVudC5nZXQoKSBwbGFjZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBi
b3VuZGluZ1JlY3RdLm9yaWdpbl0pOworICAgIH0KKyAgICBFWFBFQ1RfV0tfU1RSRVEoIklOUFVU
IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICBFWFBFQ1RfTFQoW3dlYlZpZXcgc2Nyb2xsVmlld10u
em9vbVNjYWxlLCAyKTsKK30KKworVEVTVChSZXF1ZXN0VGV4dElucHV0Q29udGV4dCwgVGV4dElu
dGVyYWN0aW9uX0ZvY3VzaW5nRWxlbWVudENoYW5nZXNab29tU2NhbGUpCit7CisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6YXBwbHlTdHlsZShAIjxib2R5IHN0eWxlPSdoZWlnaHQ6IDQwOTZweCc+PGlucHV0IGlk
PSdpbnB1dCc+PC9ib2R5PiIpXTsKKworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAq
PiAqY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRl
eHRzSW5SZWN0Olt3ZWJWaWV3IGJvdW5kc11dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRz
LmNvdW50KTsKKyAgICBSZXRhaW5QdHI8X1dLVGV4dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50
ID0gY29udGV4dHNbMF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkJPRFkiLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdO
YW1lIl0pOworICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSA9IDI7CisKKyAgICAv
LyBab29tIHNjYWxlIG9mIHNjcm9sbCB2aWV3IHNob3VsZCBjaGFuZ2UgdG8gcmV2ZWFsIHRoZSBm
b2N1c2VkIGVsZW1lbnQuCisgICAgeworICAgICAgICBUZXh0SW50ZXJhY3Rpb25Gb3JTY29wZSBz
Y29wZSB7IHdlYlZpZXcsIGlucHV0RWxlbWVudCB9OworICAgICAgICBFWFBFQ1RfRVEoKFVJUmVz
cG9uZGVyPFVJVGV4dElucHV0PiAqKVt3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSwgW3dl
YlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDppbnB1dEVsZW1lbnQuZ2V0
KCkgcGxhY2VDYXJldEF0OltpbnB1dEVsZW1lbnQgYm91bmRpbmdSZWN0XS5vcmlnaW5dKTsKKyAg
ICB9CisgICAgRVhQRUNUX1dLX1NUUkVRKCJJTlBVVCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAg
RVhQRUNUX0xUKFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSwgMik7Cit9CisKK1RFU1Qo
UmVxdWVzdFRleHRJbnB1dENvbnRleHQsIFRleHRJbnRlcmFjdGlvbl9Gb2N1c2luZ0VsZW1lbnRN
dWx0aXBsZVRpbWVzQ2hhbmdlc1pvb21TY2FsZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0
eWxlKEAiPGJvZHkgc3R5bGU9J2hlaWdodDogNDA5NnB4Jz48aW5wdXQgaWQ9J2lucHV0Jz48L2Jv
ZHk+IildOworCisgICAgTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250ZXh0cyA9
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dl
YlZpZXcgYm91bmRzXV07CisgICAgRVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworICAg
IFJldGFpblB0cjxfV0tUZXh0SW5wdXRDb250ZXh0PiBpbnB1dEVsZW1lbnQgPSBjb250ZXh0c1sw
XTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiQk9EWSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAg
W3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlID0gMjsKKworICAgIC8vIFpvb20gc2NhbGUg
b2Ygc2Nyb2xsIHZpZXcgc2hvdWxkIGNoYW5nZSB0byByZXZlYWwgdGhlIGZvY3VzZWQgZWxlbWVu
dC4KKyAgICB7CisgICAgICAgIFRleHRJbnRlcmFjdGlvbkZvclNjb3BlIHNjb3BlIHsgd2ViVmll
dywgaW5wdXRFbGVtZW50IH07CisgICAgICAgIEVYUEVDVF9FUSgoVUlSZXNwb25kZXI8VUlUZXh0
SW5wdXQ+ICopW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddLCBbd2ViVmlldyBzeW5jaHJv
bm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0OmlucHV0RWxlbWVudC5nZXQoKSBwbGFjZUNhcmV0
QXQ6W2lucHV0RWxlbWVudCBib3VuZGluZ1JlY3RdLm9yaWdpbl0pOworICAgICAgICBFWFBFQ1Rf
V0tfU1RSRVEoIklOUFVUIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICAgICAgRVhQRUNUX0VRKChV
SVJlc3BvbmRlcjxVSVRleHRJbnB1dD4gKilbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10s
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6aW5wdXRFbGVtZW50
LmdldCgpIHBsYWNlQ2FyZXRBdDpbaW5wdXRFbGVtZW50IGJvdW5kaW5nUmVjdF0ub3JpZ2luXSk7
CisgICAgfQorICAgIEVYUEVDVF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOwor
ICAgIEVYUEVDVF9MVChbd2ViVmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUsIDIpOworfQorCitU
RVNUKFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0LCBUZXh0SW50ZXJhY3Rpb25fRm9jdXNEZWZvY3Vz
RGlzYWJsZUZvY3VzQWdhaW5TaG91bGROb3RDaGFuZ2Vab29tU2NhbGUpCit7CisgICAgYXV0byBj
b25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGlu
aXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6YXBwbHlTdHlsZShAIjxib2R5IHN0eWxlPSdoZWlnaHQ6IDQwOTZweCc+PGlucHV0IGlk
PSdpbnB1dCc+PC9ib2R5PiIpXTsKKworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAq
PiAqY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRl
eHRzSW5SZWN0Olt3ZWJWaWV3IGJvdW5kc11dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRz
LmNvdW50KTsKKyAgICBSZXRhaW5QdHI8X1dLVGV4dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50
ID0gY29udGV4dHNbMF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkJPRFkiLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdO
YW1lIl0pOworICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSA9IDI7CisKKyAgICB7
CisgICAgICAgIFRleHRJbnRlcmFjdGlvbkZvclNjb3BlIHNjb3BlIHsgd2ViVmlldywgaW5wdXRF
bGVtZW50IH07CisgICAgICAgIC8vIDEuIEZvY3VzCisgICAgICAgIEVYUEVDVF9FUSgoVUlSZXNw
b25kZXI8VUlUZXh0SW5wdXQ+ICopW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddLCBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0OmlucHV0RWxlbWVudC5nZXQo
KSBwbGFjZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBib3VuZGluZ1JlY3RdLm9yaWdpbl0pOworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoIklOUFVUIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKworICAgICAg
ICAvLyAyLiBEZWZvY3VzCisgICAgICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJpbnB1dC5ibHVyKCkiXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJCT0RZIiwg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQudGFnTmFtZSJdKTsKKworICAgICAgICAvLyAzLiBEaXNhYmxlCisgICAgICAgIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnB1dC5kaXNhYmxlZCA9IHRydWUi
XTsKKworICAgICAgICAvLyA0LiBGb2N1cyBhZ2FpbjsgZm9jdXNlZCBlbGVtZW50IGFuZCB6b29t
IHNjYWxlIG9mIHNjcm9sbCB2aWV3IHNob3VsZCBiZSB1bmNoYW5nZWQuCisgICAgICAgIEVYUEVD
VF9OVUxMKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6aW5wdXRF
bGVtZW50LmdldCgpIHBsYWNlQ2FyZXRBdDpbaW5wdXRFbGVtZW50IGJvdW5kaW5nUmVjdF0ub3Jp
Z2luXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiQk9EWSIsIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7
CisgICAgfQorICAgIEVYUEVDVF9FUSgyLCBbd2ViVmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUp
OworfQorCitURVNUKFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0LCBUZXh0SW50ZXJhY3Rpb25fRm9j
dXNEZWZvY3VzRm9jdXNBZ2FpblNob3VsZENoYW5nZVpvb21TY2FsZSkKK3sKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29u
ZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0
cmluZzphcHBseVN0eWxlKEAiPGJvZHkgc3R5bGU9J2hlaWdodDogNDA5NnB4Jz48aW5wdXQgaWQ9
J2lucHV0Jz48L2JvZHk+IildOworCisgICAgTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+
ICpjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4
dHNJblJlY3Q6W3dlYlZpZXcgYm91bmRzXV07CisgICAgRVhQRUNUX0VRKDFVTCwgY29udGV4dHMu
Y291bnQpOworICAgIFJldGFpblB0cjxfV0tUZXh0SW5wdXRDb250ZXh0PiBpbnB1dEVsZW1lbnQg
PSBjb250ZXh0c1swXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiQk9EWSIsIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05h
bWUiXSk7CisgICAgW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlID0gMjsKKworICAgIHsK
KyAgICAgICAgVGV4dEludGVyYWN0aW9uRm9yU2NvcGUgc2NvcGUgeyB3ZWJWaWV3LCBpbnB1dEVs
ZW1lbnQgfTsKKyAgICAgICAgLy8gMS4gRm9jdXMKKyAgICAgICAgRVhQRUNUX0VRKChVSVJlc3Bv
bmRlcjxVSVRleHRJbnB1dD4gKilbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10sIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6aW5wdXRFbGVtZW50LmdldCgp
IHBsYWNlQ2FyZXRBdDpbaW5wdXRFbGVtZW50IGJvdW5kaW5nUmVjdF0ub3JpZ2luXSk7CisgICAg
ICAgIEVYUEVDVF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworCisgICAgICAg
IC8vIDIuIERlZm9jdXMKKyAgICAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImlucHV0LmJsdXIoKSJdOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIkJPRFkiLCBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxl
bWVudC50YWdOYW1lIl0pOworCisgICAgICAgIC8vIDMuIEZvY3VzIGFnYWluOyBmb2N1c2VkIGVs
ZW1lbnQgYW5kIHpvb20gc2NhbGUgb2Ygc2Nyb2xsIHZpZXcgc2hvdWxkIGNoYW5nZS4KKyAgICAg
ICAgRVhQRUNUX0VRKChVSVJlc3BvbmRlcjxVSVRleHRJbnB1dD4gKilbd2ViVmlldyB0ZXh0SW5w
dXRDb250ZW50Vmlld10sIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRl
eHQ6aW5wdXRFbGVtZW50LmdldCgpIHBsYWNlQ2FyZXRBdDpbaW5wdXRFbGVtZW50IGJvdW5kaW5n
UmVjdF0ub3JpZ2luXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50
YWdOYW1lIl0pOworICAgIH0KKyAgICBFWFBFQ1RfTFQoW3dlYlZpZXcgc2Nyb2xsVmlld10uem9v
bVNjYWxlLCAyKTsKK30KKworVEVTVChSZXF1ZXN0VGV4dElucHV0Q29udGV4dCwgVGV4dEludGVy
YWN0aW9uX0ZvY3VzaW5nQXNzaXN0ZWRFbGVtZW50U2hvdWxkTm90Q2hhbmdlWm9vbVNjYWxlKQor
eworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRl
ID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0
RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dl
YlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3Rh
cnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERl
bGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlM
b2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGJvZHkgc3R5bGU9J2hlaWdodDogNDA5NnB4Jz48
aW5wdXQgaWQ9J2lucHV0Jz48L2JvZHk+IildOworCisgICAgTlNBcnJheTxfV0tUZXh0SW5wdXRD
b250ZXh0ICo+ICpjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgYm91bmRzXV07CisgICAgRVhQRUNUX0VRKDFVTCwg
Y29udGV4dHMuY291bnQpOworICAgIFJldGFpblB0cjxfV0tUZXh0SW5wdXRDb250ZXh0PiBpbnB1
dEVsZW1lbnQgPSBjb250ZXh0c1swXTsKKworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlw
dEFuZFdhaXRGb3JJbnB1dFNlc3Npb25Ub0NoYW5nZTpAImlucHV0LmZvY3VzKCkiXTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoIklOUFVUIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICBbd2ViVmlldyBz
Y3JvbGxWaWV3XS56b29tU2NhbGUgPSAyOworCisgICAgLy8gRm9jdXMgdGhlIGZpZWxkIHVzaW5n
IC1mb2N1c1RleHRJbnB1dENvbnRleHQ7IHpvb20gc2NhbGUgb2Ygc2Nyb2xsIHZpZXcgc2hvdWxk
IGJlIHVuY2hhbmdlZC4KKyAgICB7CisgICAgICAgIFRleHRJbnRlcmFjdGlvbkZvclNjb3BlIHNj
b3BlIHsgd2ViVmlldywgaW5wdXRFbGVtZW50IH07CisgICAgICAgIEVYUEVDVF9FUSgoVUlSZXNw
b25kZXI8VUlUZXh0SW5wdXQ+ICopW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddLCBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0OmlucHV0RWxlbWVudC5nZXQo
KSBwbGFjZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBib3VuZGluZ1JlY3RdLm9yaWdpbl0pOworICAg
IH0KKyAgICBFWFBFQ1RfV0tfU1RSRVEoIklOUFVUIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICBF
WFBFQ1RfRVEoMiwgW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlKTsKK30KKworVEVTVChS
ZXF1ZXN0VGV4dElucHV0Q29udGV4dCwgVGV4dEludGVyYWN0aW9uX0ZvY3VzaW5nTm9uQXNzaXN0
ZWRGb2N1c2VkRWxlbWVudENoYW5nZXNab29tU2NhbGUpCit7CisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTpp
bnB1dERlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6YXBwbHlTdHlsZShAIjxib2R5IHN0eWxlPSdoZWlnaHQ6IDQwOTZweCc+PGlucHV0IGlk
PSdpbnB1dCc+PC9ib2R5PiIpXTsKKworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAq
PiAqY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRl
eHRzSW5SZWN0Olt3ZWJWaWV3IGJvdW5kc11dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRz
LmNvdW50KTsKKyAgICBSZXRhaW5QdHI8X1dLVGV4dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50
ID0gY29udGV4dHNbMF07CisKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0
U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1l
bnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lEaXNhbGxv
dzsgfV07CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlucHV0
LmZvY3VzKCkiXTsgLy8gV2lsbCBub3Qgc3RhcnQgaW5wdXQgYXNzaXN0YW5jZQorICAgIEVYUEVD
VF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIFt3ZWJWaWV3IHNjcm9s
bFZpZXddLnpvb21TY2FsZSA9IDI7CisKKyAgICAvLyBGb2N1cyB0aGUgZmllbGQgdXNpbmcgLWZv
Y3VzVGV4dElucHV0Q29udGV4dDsgem9vbSBzY2FsZSBvZiBzY3JvbGwgdmlldyBzaG91bGQgY2hh
bmdlIHRvIHJldmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50LgorICAgIFtpbnB1dERlbGVnYXRlIHNl
dEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3ICosIGlk
IDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vz
c2lvblBvbGljeUFsbG93OyB9XTsKKyAgICB7CisgICAgICAgIFRleHRJbnRlcmFjdGlvbkZvclNj
b3BlIHNjb3BlIHsgd2ViVmlldywgaW5wdXRFbGVtZW50IH07CisgICAgICAgIC8vIFdpbGwgc3Rh
cnQgaW5wdXQgYXNzaXN0YW5jZQorICAgICAgICBFWFBFQ1RfRVEoKFVJUmVzcG9uZGVyPFVJVGV4
dElucHV0PiAqKVt3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSwgW3dlYlZpZXcgc3luY2hy
b25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDppbnB1dEVsZW1lbnQuZ2V0KCkgcGxhY2VDYXJl
dEF0OltpbnB1dEVsZW1lbnQgYm91bmRpbmdSZWN0XS5vcmlnaW5dKTsKKyAgICB9CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCJJTlBVVCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAgRVhQRUNUX0xUKFt3
ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSwgMik7Cit9CisKICNlbmRpZiAvLyBQTEFURk9S
TShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>396872</attachid>
            <date>2020-04-18 16:23:15 -0700</date>
            <delta_ts>2020-04-21 13:19:23 -0700</delta_ts>
            <desc>Patch and tests</desc>
            <filename>bug-210697-20200418162315.patch</filename>
            <type>text/plain</type>
            <size>35922</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU2NzNlZWM1NjQ1NzI5
MjdlNDk2ZTFkMjJkM2U5NzIyNTNhMjI4OS4uZmE1ZGExZTllYWZhMzg2ODc2Mjc1NzMyNmZhZWNi
Yzg5MzljZDY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA0LTE4ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSAtX2RpZEZpbmlz
aFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dCBzaG91bGQgb25seSB6b29tIHRvIHJl
dmVhbCBmb2N1c2VkIGVsZW1lbnQgaWYgaXQgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MDk5NzUzMD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGb3Igbm93LCBhZGQgYSBjb21tZW50IGFib3V0IHRoZSByZXR1cm4gdmFsdWUgb2Ygc2V0
Rm9jdXNlZEVsZW1lbnQ6IGl0IHJldHVybnMKKyAgICAgICAgd2hldGhlciBmb2N1cyB3YXMgYmxv
Y2tlZC4gSWYgZm9jdXNlZCB3YXNuJ3QgYmxvY2tlZCB0aGVuIGl0IHdpbGwgcmV0dXJuIHRydWUK
KyAgICAgICAgZXZlbiBpZiB0aGUgZWxlbWVudCB3YXNuJ3QgYWN0dWFsbHkgZm9jdXNlZC4gRm9y
IGV4YW1wbGUsIGl0IHdpbGwgcmV0dXJuIHRydWUKKyAgICAgICAgZm9yIG5vbi1mb2N1c2FibGUg
ZWxlbWVudHM6IDxpbnB1dCBkaXNhYmxlZD4uCisKKyAgICAgICAgSSB3YXMgdGVtcHRlZCB0byBm
aXggc2V0Rm9jdXNlZEVsZW1lbnQoKSB0byByZXR1cm4gdHJ1ZSB3aGVuIGl0IGFjdHVhbGx5IGZv
Y3VzZWQKKyAgICAgICAgdGhlIGVsZW1lbnQgb3IgaWYgdGhlIGVsZW1lbnQgd2FzIGFscmVhZHkg
Zm9jdXNlZCwgYnV0IEkgZGVjaWRlZCB0byBkZWZlciB0aGlzCisgICAgICAgIHVudGlsIEkgYXVk
aXQgdGhlIGNhbGxlcnMgYW5kIHJ1biBzb21lIHRlc3RzLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50Lmg6CisKIDIwMTktMDktMTMgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgog
CiAgICAgICAgIFN1cHBvcnQgYnVpbGRpbmcgV2ViS2l0IGZvciBNYWMgQ2F0YWx5c3QgZnJvbSBY
Y29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwppbmRleCBkYmI1OGFmNzQxMTVjOWRmMTc0OTc1MTc3MWMxYzIyMTBiZDFhOTA4
Li44NTMzNmQwODZmODZjZTNhMzFiNTI5MmI4MGZkZTUzYTQ2OTY1YjgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAt
MSwzICsxLDQ1IEBACisyMDIwLTA0LTE4ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KKworICAgICAgICBbaU9TXSAtX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0
Q29udGV4dCBzaG91bGQgb25seSB6b29tIHRvIHJldmVhbCBmb2N1c2VkIGVsZW1lbnQgaWYgaXQg
Y2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjEwNjk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDk5NzUzMD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgc3RhdGUgdmFyaWFi
bGUgdG8gdXNlIHRvIHRyYWNrIHdoZXRoZXIgLV9mb2N1c1RleHRJbnB1dENvbnRleHQgaW52b2tl
ZCBkdXJpbmcgYQorICAgICAgICB0ZXh0IGludGVyYWN0aW9uIGFjdHVhbGx5IGZvY3VzZWQgYW4g
ZWxlbWVudC4gVGhlbiBpbiAtX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29u
dGV4dAorICAgICAgICBjb25kaXRpb24gbWFya2luZyB0aGUgcGFnZSB0byByZXZlYWwgdGhlIGZv
Y3VzZWQgZWxlbWVudCBvbiB0aGlzIHN0YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9p
b3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3dp
bGxCZWdpblRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDpdKTogVHVybiBhcm91bmQg
YW5kIGNhbGwgdGhlIHNhbWUKKyAgICAgICAgZnVuY3Rpb24gb24gdGhlIGNvbnRlbnQgdmlldy4K
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1
dENvbnRleHQ6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmll
d0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xlYW5VcEludGVyYWN0aW9u
XSk6IFJlc2V0IHN0YXRlLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRDb21taXRMb2Fk
Rm9yTWFpbkZyYW1lXSk6IERpdHRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9mb2N1c1Rl
eHRJbnB1dENvbnRleHQ6cGxhY2VDYXJldEF0OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBVcGRhdGUg
c3RhdGUgdG8KKyAgICAgICAgaW5kaWNhdGUgd2hldGhlciB0aGUgZm9jdXNkIGVsZW1lbnQgZGlk
IGNoYW5nZSBvciBub3QuIEkgdXNlIGJpdHdpc2UgT1JpbmcgaW5zdGVhZCBvZiBzdHJpY3QKKyAg
ICAgICAgYXNzaWdubWVudCB0byB1cGRhdGUgaXQgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGNhbiBi
ZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgYnkgYW4gaW50ZXJuYWwKKyAgICAgICAgQXBwbGUgY2xp
ZW50IGR1cmluZyBhIHRleHQgaW50ZXJhY3Rpb24gKGUuZy4gPHJkYXI6Ly9wcm9ibGVtLzU5NDMw
ODA2PikuIEkgdGhvdWdodCBhYm91dAorICAgICAgICBtYWtpbmcgdGhpcyBhIEZJWE1FLCBidXQg
dGhpcyBmdW5jdGlvbiBpcyBvdGhlcndpc2UgY2FwYWJsZSBvZiBoYW5kbGluZyBtdWx0aXBsZSBp
bm5vY2F0aW9ucworICAgICAgICBzbyBJIGRpZG4ndC4KKyAgICAgICAgKC1bV0tDb250ZW50Vmll
dyBfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0Ol0pOiBSZXNldCBh
ZGRlZCBzdGF0ZS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkRmluaXNoVGV4dEludGVy
YWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0Ol0pOiBDaGVjayBpZiBzdGF0ZSB3YXMgc2V0IHRvCisg
ICAgICAgIGluZGljYXRlIHRoYXQgYSBmb2N1cyBjaGFuZ2UgaGFwcGVuZWQuIElmIHNvLCBkbyB3
aGF0IHdlIGRvIG5vdyArIHJlc2V0IHN0YXRlLiBPdGhlcndpc2UsCisgICAgICAgIGRvIGV2ZXJ5
dGhpbmcgd2UgZG8gbm93IGV4Y2VwdCBmb3IgbWFya2luZyB0aGUgcGFnZSBhcyBuZWVkaW5nIHJl
dmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50CisgICAgICAgIG9uIHRoZSBuZXh0IGVkaXRvciBzdGF0
ZSB1cGRhdGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c1RleHRJbnB1dENvbnRleHRBbmRQbGFj
ZUNhcmV0KTogQ2hlY2sgdGhhdCB0aGUgdGFyZ2V0IGlzIGZvY3VzYWJsZQorICAgICAgICBiZWZv
cmUgY2FsbGluZyBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KCkgYmVjYXVzZSBp
dCB1bHRpbWF0ZWx5IGNhbGxzIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudCgpCisgICAgICAg
IHRoYXQgY2FuIHJldHVybiB0cnVlIGZvciBhIG5vbi1mb2N1c2FibGUgZWxlbWVudC4gSSBhZGRl
ZCBhIGNvbW1lbnQgaW4gRG9jdW1lbnQuaCB0byBleHBsYWluCisgICAgICAgIHRoaXMgc3VidGxl
dHkuIEkgYWxzbyBkZWNpZGVkIG5vdCB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIEZvY3Vz
Q29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQoKS4KKyAgICAgICAgSW5zdGVhZCBJIGFtIGNo
ZWNraW5nIHRoZSBtb3JlIGltcG9ydGFudCBjb25kaXRpb24gdGhhdCB0aGUgZm9jdXNlZCBlbGVt
ZW50IGlzIHRoZSB0YXJnZXQKKyAgICAgICAgZWxlbWVudC4gUGFzc2luZyB0cnVlIHRvIHZpc2li
bGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludCgpIGFzc2VydHMgdGhpcyB0byBiZSB0cnVl
LgorICAgICAgICBOb3RlIHRoYXQgc2V0Rm9jdXNlZEVsZW1lbnQoKSBtYXkgbm90IGhhdmUgZG9u
ZSBhbnl0aGluZyBhcyBtX2ZvY3VzZWRFbGVtZW50IGNvdWxkIGhhdmUKKyAgICAgICAgYWxyZWFk
eSBiZWVuIGVxdWFsIHRvIHRoZSB0YXJnZXQgZWxlbWVudC4gVGhpcyBpcyBPSyBhbmQgSSBzdGls
bCB1cGRhdGUgdGhlIGNhcmV0IHBvc2l0aW9uLgorCiAyMDIwLTA0LTE2ICBEYW5pZWwgQmF0ZXMg
IDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdW51c2VkIC1fZm9jdXNUZXh0
SW5wdXRDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IDM0ZmQwMGUxNWI4OGQ3MjJlOTVh
OTliNWNjYmYwYjAwNWI3ZjgyN2UuLjc1NTM1MTJiZDAxZjc0NWFhNjYzZmY3ZTNmYjkzYWRkMDEw
M2I3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03NjEsNiArNzYxLDggQEAgcHVibGljOgog
ICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgcHJlcGFyZU1vdXNlRXZlbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYpOwogCiAgICAgZW51bSBjbGFzcyBGb2N1c1JlbW92YWxFdmVudHNNb2RlIHsgRGlzcGF0
Y2gsIERvTm90RGlzcGF0Y2ggfTsKKyAgICAvLyBSZXR1cm5zIHdoZXRoZXIgZm9jdXMgd2FzIGJs
b2NrZWQuIEEgdHJ1ZSB2YWx1ZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoZSBlbGVtZW50
IHdhcyBmb2N1c2VkLgorICAgIC8vIFRoZSBlbGVtZW50IGNvdWxkIGhhdmUgYWxyZWFkeSBiZWVu
IGZvY3VzZWQgb3IgbWF5IG5vdCBiZSBmb2N1c2FibGUgKGUuZy4gPGlucHV0IGRpc2FibGVkPiku
CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRGb2N1c2VkRWxlbWVudChFbGVtZW50KiwgRm9j
dXNEaXJlY3Rpb24gPSBGb2N1c0RpcmVjdGlvbk5vbmUsCiAgICAgICAgIEZvY3VzUmVtb3ZhbEV2
ZW50c01vZGUgPSBGb2N1c1JlbW92YWxFdmVudHNNb2RlOjpEaXNwYXRjaCk7CiAgICAgRWxlbWVu
dCogZm9jdXNlZEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvY3VzZWRFbGVtZW50LmdldCgp
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmll
d1ByaXZhdGVGb3JUZXN0aW5nSU9TLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9z
L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgKaW5kZXggMWZlZjgyODNkNzdkMWJkNDRk
NzE5MDg4MTMxNmM5OTVhOWFiMmJhMy4uODY1YjcwN2ViNDE5YzFlYTBiOWQxYmU3ZWI2MDhiYTk2
MGJhM2VmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dl
YlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaApAQCAtNTEsNiArNTEsOCBA
QAogLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxlbWVudHNJblJlY3Q6KENHUmVjdClyZWN0
OwogLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+
ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0Oihf
V0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dCBwbGFjZUNhcmV0QXQ6KENHUG9pbnQpcG9pbnQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJUmVzcG9uZGVyPFVJVGV4dElucHV0PiAqKSlj
b21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX3dpbGxCZWdpblRleHRJbnRlcmFjdGlvbkluVGV4
dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQ7CistICh2b2lkKV9k
aWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENv
bnRleHQgKiljb250ZXh0OwogLSAodm9pZClfcmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0Rv
Y3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tE
b2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9hZGp1c3RTZWxl
Y3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVsdGFSYW5nZSBjb21wbGV0aW9uSGFuZGxlcjoodm9p
ZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVzdGluZ0lPUy5tbQppbmRleCAyZTlhMWI1
ZjljZDIxZmZkNDkwZWJlYTJhMDM1OGU2NmNkOGUwNjlkLi45YzM3YjQ0ZGI0ZmUyNDBlYjcyMmQ1
M2QyZWMxNTMyOGRiOTkzODVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tCkBAIC02OCw2ICs2OCwxNiBAQCAtICh2
b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0
IHBsYWNlQ2FyZXRBdDooQ0dQbwogICAgIFtfY29udGVudFZpZXcgX2ZvY3VzVGV4dElucHV0Q29u
dGV4dDpjb250ZXh0IHBsYWNlQ2FyZXRBdDphZGp1c3RlZFBvaW50IGNvbXBsZXRpb25IYW5kbGVy
OmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAorLSAodm9pZClfd2lsbEJlZ2luVGV4dEludGVyYWN0
aW9uSW5UZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dAorewor
ICAgIFtfY29udGVudFZpZXcgX3dpbGxCZWdpblRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29u
dGV4dDpjb250ZXh0XTsKK30KKworLSAodm9pZClfZGlkRmluaXNoVGV4dEludGVyYWN0aW9uSW5U
ZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dAoreworICAgIFtf
Y29udGVudFZpZXcgX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDpj
b250ZXh0XTsKK30KKwogLSAodm9pZClfcmVxdWVzdERvY3VtZW50Q29udGV4dDooVUlXS0RvY3Vt
ZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1
bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKICAgICBbX2NvbnRlbnRWaWV3IHJl
cXVlc3REb2N1bWVudENvbnRleHQ6cmVxdWVzdCBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9u
SGFuZGxlcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggZmIyZTBkMGVlZWVmZjA2YmFiMGZjOWNkNjUyMTBk
ZDk3NDI0ZmJiMC4uMDFkMmY0MTY4N2RkMGVkNzIxM2EwY2JkY2FjNmI1MDFmODhmZDhhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50
ZXJhY3Rpb24uaApAQCAtMzUwLDYgKzM1MCw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0
YSB7CiAgICAgQk9PTCBfZGlkQWNjZXNzb3J5VGFiSW5pdGlhdGVGb2N1czsKICAgICBCT09MIF9p
c0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQ7CiAgICAgQk9PTCBfc2hvd0RlYnVnVGFwSGln
aGxpZ2h0c0ZvckZhc3RDbGlja2luZzsKKyAgICBCT09MIF90ZXh0SW50ZXJhY3Rpb25EaWRDaGFu
Z2VGb2N1c2VkRWxlbWVudDsKIAogICAgIFdlYkNvcmU6OlBvaW50ZXJJRCBtX2NvbW1pdFBvdGVu
dGlhbFRhcFBvaW50ZXJJZDsKIApAQCAtNTcxLDExICs1NzIsOCBAQCBGT1JfRUFDSF9QUklWQVRF
X1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tDT05URU5UVklFV19BQ1RJT05fRk9SX1dF
Ql9WSUVXKQogCiAtICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6KENHUmVj
dClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0FycmF5PF9XS1RleHRJbnB1dENv
bnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXI7CiAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENv
bnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0IHBsYWNlQ2FyZXRBdDooQ0dQb2lu
dClwb2ludCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlSZXNwb25kZXI8VUlUZXh0SW5w
dXQ+ICopKWNvbXBsZXRpb25IYW5kbGVyOwotCi0jaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURE
SVRJT05TKQogLSAodm9pZClfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250
ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dDsKIC0gKHZvaWQpX2RpZEZpbmlzaFRl
eHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4dCAqKWNv
bnRleHQ7Ci0jZW5kaWYKIAogLSAodm9pZClfaGFuZGxlQXV0b2NvcnJlY3Rpb25Db250ZXh0Oihj
b25zdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29udGV4dCYpY29udGV4dDsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24ubW0KaW5kZXggMDQwNTAxOGIzNjlmYzNjN2ZkMTJjMDY4YjE3NmQ5ODI4ZWQyMzFlZi4uNzIy
YTY2NTNhYzMyZDhlM2QzOTFiZmQxMDRlYzA0OTVhYTlkMGExNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC05MjMsNiArOTIzLDggQEAgLSAodm9pZCljbGVhblVwSW50ZXJhY3Rpb24KICAgICBfc2Vlbkhh
cmR3YXJlS2V5RG93bkluTm9uRWRpdGFibGVFbGVtZW50ID0gTk87CiAjZW5kaWYKIAorICAgIF90
ZXh0SW50ZXJhY3Rpb25EaWRDaGFuZ2VGb2N1c2VkRWxlbWVudCA9IE5POworCiAgICAgaWYgKF9p
bnRlcmFjdGlvblZpZXdzQ29udGFpbmVyVmlldykgewogICAgICAgICBbc2VsZi5sYXllciByZW1v
dmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJ0cmFuc2Zvcm0iXTsKICAgICAgICAgW19pbnRl
cmFjdGlvblZpZXdzQ29udGFpbmVyVmlldyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKQEAgLTQyNTUs
NiArNDI1Nyw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExvYWRGb3JNYWluRnJhbWUKICAgICBbX3Rl
eHRJbnRlcmFjdGlvbkFzc2lzdGFudCBhY3RpdmF0ZVNlbGVjdGlvbl07CiAgICAgW193ZWJWaWV3
IF9kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lXTsKIAorICAgIF90ZXh0SW50ZXJhY3Rpb25EaWRD
aGFuZ2VGb2N1c2VkRWxlbWVudCA9IE5POwogICAgIF9oYXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRp
b24gPSBOTzsKICAgICBfcG9zaXRpb25JbmZvcm1hdGlvbiA9IHsgfTsKIH0KQEAgLTUwOTIsMjUg
KzUwOTUsMjggQEAgLSAoQk9PTClfaXNUZXh0SW5wdXRDb250ZXh0Rm9jdXNlZDooX1dLVGV4dElu
cHV0Q29udGV4dCAqKWNvbnRleHQKIC0gKHZvaWQpX2ZvY3VzVGV4dElucHV0Q29udGV4dDooX1dL
VGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQgcGxhY2VDYXJldEF0OihDR1BvaW50KXBvaW50IGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShVSVJlc3BvbmRlcjxVSVRleHRJbnB1dD4gKikpY29t
cGxldGlvbkhhbmRsZXIKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CisgICAgLy8gVGhpcyBmdW5j
dGlvbiBjYW4gYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGR1cmluZyBhIHRleHQgaW50ZXJhY3Rp
b24gKGUuZy4gPHJkYXI6Ly9wcm9ibGVtLzU5NDMwODA2PikuCiAgICAgaWYgKCFbc2VsZiBiZWNv
bWVGaXJzdFJlc3BvbmRlcl0pIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIobmlsKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBpZiAoW3NlbGYgX2lzVGV4dElucHV0Q29udGV4dEZv
Y3VzZWQ6Y29udGV4dF0pIHsKKyAgICAgICAgX3RleHRJbnRlcmFjdGlvbkRpZENoYW5nZUZvY3Vz
ZWRFbGVtZW50IHw9IE5POwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihfZm9jdXNlZEVsZW1l
bnRJbmZvcm1hdGlvbi5pc1JlYWRPbmx5ID8gbmlsIDogc2VsZik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgX3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IFlFUzsKICAgICBhdXRvIGNo
ZWNrRm9jdXNlZEVsZW1lbnQgPSBbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS0NvbnRlbnRWaWV3
PiB7IHNlbGYgfSwgY29udGV4dCA9IFtjb250ZXh0IGNvcHldLCBjb21wbGV0aW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHN1Y2Nlc3MpIHsKICAgICAg
ICAgYXV0byBzdHJvbmdTZWxmID0gd2Vha1NlbGYuZ2V0KCk7Ci0gICAgICAgIGlmIChzdHJvbmdT
ZWxmKQotICAgICAgICAgICAgc3Ryb25nU2VsZi0+X3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9
IE5POwotICAgICAgICBpZiAoIXN0cm9uZ1NlbGYgfHwgIXN1Y2Nlc3MpIHsKKyAgICAgICAgaWYg
KCFzdHJvbmdTZWxmKSB7CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgZm9jdXNlZEFuZEVkaXRh
YmxlID0gW3N0cm9uZ1NlbGYgX2lzVGV4dElucHV0Q29udGV4dEZvY3VzZWQ6Y29udGV4dF0gJiYg
IXN0cm9uZ1NlbGYtPl9mb2N1c2VkRWxlbWVudEluZm9ybWF0aW9uLmlzUmVhZE9ubHk7Ci0gICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKGZvY3VzZWRBbmRFZGl0YWJsZSA/IHN0cm9uZ1NlbGYuYXV0
b3JlbGVhc2UoKSA6IG5pbCk7CisgICAgICAgIGJvb2wgaXNGb2N1c2VkID0gc3VjY2VzcyAmJiBb
c3Ryb25nU2VsZiBfaXNUZXh0SW5wdXRDb250ZXh0Rm9jdXNlZDpjb250ZXh0XTsKKyAgICAgICAg
Ym9vbCBpc0VkaXRhYmxlID0gc3VjY2VzcyAmJiAhc3Ryb25nU2VsZi0+X2ZvY3VzZWRFbGVtZW50
SW5mb3JtYXRpb24uaXNSZWFkT25seTsKKyAgICAgICAgc3Ryb25nU2VsZi0+X3RleHRJbnRlcmFj
dGlvbkRpZENoYW5nZUZvY3VzZWRFbGVtZW50IHw9IGlzRm9jdXNlZDsKKyAgICAgICAgc3Ryb25n
U2VsZi0+X3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbiA9IE5POworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihpc0ZvY3VzZWQgJiYgaXNFZGl0YWJsZSA/IHN0cm9uZ1NlbGYuZ2V0KCkgOiBuaWwp
OwogICAgIH07CiAgICAgX3BhZ2UtPmZvY3VzVGV4dElucHV0Q29udGV4dEFuZFBsYWNlQ2FyZXQo
Y29udGV4dC5fdGV4dElucHV0Q29udGV4dCwgV2ViQ29yZTo6SW50UG9pbnQgeyBwb2ludCB9LCBX
VEZNb3ZlKGNoZWNrRm9jdXNlZEVsZW1lbnQpKTsKIH0KQEAgLTUxMzUsMTEgKzUxNDEsMTAgQEAg
LSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikKICAgICB9KTsKIH0KIAotI2lmIFVTRShURVhUX0lOVEVS
QUNUSU9OX0FERElUSU9OUykKLQogLSAodm9pZClfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5U
ZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dAogewogICAgIEFT
U0VSVChjb250ZXh0KTsKKyAgICBfdGV4dEludGVyYWN0aW9uRGlkQ2hhbmdlRm9jdXNlZEVsZW1l
bnQgPSBOTzsKICAgICBfcGFnZS0+c2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVy
SW5zZXJ0aW9uKGZhbHNlKTsKICAgICBfcGFnZS0+c2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGNvbnRl
eHQuX3RleHRJbnB1dENvbnRleHQsIGZhbHNlKTsKICAgICBbc2VsZiBfc3RhcnRTdXBwcmVzc2lu
Z1NlbGVjdGlvbkFzc2lzdGFudEZvclJlYXNvbjpXZWJLaXQ6OkludGVyYWN0aW9uSXNIYXBwZW5p
bmddOwpAQCAtNTE1MCwxNyArNTE1NSwxNiBAQCAtICh2b2lkKV9kaWRGaW5pc2hUZXh0SW50ZXJh
Y3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZQogICAg
IEFTU0VSVChjb250ZXh0KTsKICAgICBbc2VsZiBfc3RvcFN1cHByZXNzaW5nU2VsZWN0aW9uQXNz
aXN0YW50Rm9yUmVhc29uOldlYktpdDo6SW50ZXJhY3Rpb25Jc0hhcHBlbmluZ107CiAgICAgX3Bh
Z2UtPnNldENhblNob3dQbGFjZWhvbGRlcihjb250ZXh0Ll90ZXh0SW5wdXRDb250ZXh0LCB0cnVl
KTsKLSAgICAvLyBNYXJrIHRvIHpvb20gdG8gcmV2ZWFsIHRoZSBuZXdseSBmb2N1c2VkIGVsZW1l
bnQgb24gdGhlIG5leHQgZWRpdG9yIHN0YXRlIHVwZGF0ZS4KLSAgICAvLyBUaGVuIHRlbGwgdGhl
IHdlYiBwcm9jZXNzIHRvIHJldmVhbCB0aGUgY3VycmVudCBzZWxlY3Rpb24sIHdoaWNoIHdpbGwg
c2VuZCB1cyAodGhlCi0gICAgLy8gVUkgcHJvY2VzcykgYW4gZWRpdG9yIHN0YXRlIHVwZGF0ZS4K
LSAgICAvLyBGSVhNRTogT25seSBkbyB0aGlzIGlmIGZvY3VzIGNoYW5nZWQgc2luY2UgLXdpbGxC
ZWdpblRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dCB3YXMgY2FsbGVkLgotICAgIC8v
IFNlZSA8cmRhcjovL3Byb2JsZW0vNjA5OTc1MzA+IGZvciBtb3JlIGRldGFpbHMuCi0gICAgX3Bh
Z2UtPnNldFdhaXRpbmdGb3JQb3N0TGF5b3V0RWRpdG9yU3RhdGVVcGRhdGVBZnRlckZvY3VzaW5n
RWxlbWVudCh0cnVlKTsKKyAgICBpZiAoX3RleHRJbnRlcmFjdGlvbkRpZENoYW5nZUZvY3VzZWRF
bGVtZW50KSB7CisgICAgICAgIC8vIE1hcmsgdG8gem9vbSB0byByZXZlYWwgdGhlIG5ld2x5IGZv
Y3VzZWQgZWxlbWVudCBvbiB0aGUgbmV4dCBlZGl0b3Igc3RhdGUgdXBkYXRlLgorICAgICAgICAv
LyBUaGVuIHRlbGwgdGhlIHdlYiBwcm9jZXNzIHRvIHJldmVhbCB0aGUgY3VycmVudCBzZWxlY3Rp
b24sIHdoaWNoIHdpbGwgc2VuZCB1cyAodGhlCisgICAgICAgIC8vIFVJIHByb2Nlc3MpIGFuIGVk
aXRvciBzdGF0ZSB1cGRhdGUuCisgICAgICAgIF9wYWdlLT5zZXRXYWl0aW5nRm9yUG9zdExheW91
dEVkaXRvclN0YXRlVXBkYXRlQWZ0ZXJGb2N1c2luZ0VsZW1lbnQodHJ1ZSk7CisgICAgICAgIF90
ZXh0SW50ZXJhY3Rpb25EaWRDaGFuZ2VGb2N1c2VkRWxlbWVudCA9IE5POworICAgIH0KICAgICBf
cGFnZS0+c2V0U2hvdWxkUmV2ZWFsQ3VycmVudFNlbGVjdGlvbkFmdGVySW5zZXJ0aW9uKHRydWUp
OwogfQogCi0jZW5kaWYKLQogI2lmIFVTRShVSUtJVF9LRVlCT0FSRF9BRERJVElPTlMpCiAKIC0g
KHZvaWQpbW9kaWZpZXJGbGFnc0RpZENoYW5nZUZyb206KFVJS2V5TW9kaWZpZXJGbGFncylvbGRG
bGFncyB0bzooVUlLZXlNb2RpZmllckZsYWdzKW5ld0ZsYWdzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDgwODQxMWEwOWIz
ZDA2NmZhZjk3NzkwNmY1ZGExNzBjMTVmZWUzOGYuLjg0OTMyZmY0NzM5NGRjMmZhNzI5OGQxNGUw
MDc3OTI0ZGMxNTY2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00MzAyLDIxICs0MzAyLDIwIEBAIHZvaWQgV2ViUGFn
ZTo6Zm9jdXNUZXh0SW5wdXRDb250ZXh0QW5kUGxhY2VDYXJldChjb25zdCBFbGVtZW50Q29udGV4
dCYgZWxlbWVudENvCiAgICAgLy8gUGVyZm9ybWluZyBsYXlvdXQgY291bGQgaGF2ZSBjb3VsZCB0
b3JuIGRvd24gdGhlIGVsZW1lbnQncyByZW5kZXJlci4gQ2hlY2sgdGhhdCB3ZSBzdGlsbAogICAg
IC8vIGhhdmUgb25lLiBPdGhlcndpc2UsIGJhaWwgb3V0IGFzIHRoaXMgZnVuY3Rpb24gb25seSBm
b2N1c2VzIGVsZW1lbnRzIHRoYXQgaGF2ZSBhIHZpc3VhbAogICAgIC8vIHJlcHJlc2VudGF0aW9u
LgotICAgIGlmICghdGFyZ2V0LT5yZW5kZXJlcigpKSB7CisgICAgaWYgKCF0YXJnZXQtPnJlbmRl
cmVyKCkgfHwgIXRhcmdldC0+aXNGb2N1c2FibGUoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcihmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBVc2VyR2VzdHVyZUlu
ZGljYXRvciBnZXN0dXJlSW5kaWNhdG9yIHsgUHJvY2Vzc2luZ1VzZXJHZXN0dXJlLCAmdGFyZ2V0
LT5kb2N1bWVudCgpIH07CiAgICAgU2V0Rm9yU2NvcGU8Ym9vbD4gdXNlcklzSW50ZXJhY3RpbmdD
aGFuZ2UgeyBtX3VzZXJJc0ludGVyYWN0aW5nLCB0cnVlIH07Ci0gICAgYm9vbCBkaWRGb2N1cyA9
IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEVsZW1lbnQodGFyZ2V0LmdldCgp
LCB0YXJnZXRGcmFtZSk7CisgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2Vk
RWxlbWVudCh0YXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKTsKIAogICAgIC8vIFNldHRpbmcgdGhl
IGZvY3VzZWQgZWxlbWVudCBjb3VsZCB0ZWFyIGRvd24gdGhlIGVsZW1lbnQncyByZW5kZXJlci4g
Q2hlY2sgdGhhdCB3ZSBzdGlsbCBoYXZlIG9uZS4KLSAgICBpZiAoIWRpZEZvY3VzIHx8ICF0YXJn
ZXQtPnJlbmRlcmVyKCkpIHsKKyAgICBpZiAobV9mb2N1c2VkRWxlbWVudCAhPSB0YXJnZXQgfHwg
IXRhcmdldC0+cmVuZGVyZXIoKSkgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihmYWxzZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgQVNTRVJUKG1fZm9jdXNlZEVsZW1lbnQgPT0g
dGFyZ2V0KTsKICAgICAvLyBUaGUgZnVuY3Rpb24gdmlzaWJsZVBvc2l0aW9uSW5Gb2N1c2VkTm9k
ZUZvclBvaW50IGNvbnN0cmFpbnMgdGhlIHBvaW50IHRvIGJlIGluc2lkZQogICAgIC8vIHRoZSBi
b3VuZHMgb2YgdGhlIHRhcmdldCBlbGVtZW50LgogICAgIGF1dG8gcG9zaXRpb24gPSB2aXNpYmxl
UG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQodGFyZ2V0RnJhbWUsIHBvaW50LCB0cnVlIC8q
IGlzSW50ZXJhY3RpbmdXaXRoRm9jdXNlZEVsZW1lbnQgKi8pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGFmOTgwYmE4NDBkMDQwODNiODgwM2Vj
ZTdhYjVhNjgxZTIwYzkxMzIuLjg4NzRjY2Q1ZmQ1ZTUwOTUwZGZhNGNhOTJjYWI1OThiODFiMDEw
ZGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwzOSBAQAorMjAyMC0wNC0xOCAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5j
b20+CisKKyAgICAgICAgW2lPU10gLV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1
dENvbnRleHQgc2hvdWxkIG9ubHkgem9vbSB0byByZXZlYWwgZm9jdXNlZCBlbGVtZW50IGlmIGl0
IGNoYW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxMDY5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA5OTc1MzA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSB1c2UgdGhlIHRlcm0gImFzc2lz
dGVkIiBiZWxvdyBhbmQgaW4gdGhlIHRlc3RzIHRvIGRlc2NyaWJlIGFuIGVsZW1lbnQgdGhhdCBp
cyBib3RoIERPTQorICAgICAgICBmb2N1c2VkIGFuZCB0aGUgVUkgcHJvY2VzcyBpcyBzaG93aW5n
IGFuIGlucHV0IHZpZXcgKGxpa2UgdGhlIHNvZnR3YXJlIGtleWJvYXJkKSBmb3IgaXQuCisgICAg
ICAgIEZvciBtYW55IG9mIHRoZSB0ZXN0cyBJIGNoZWNrIGZvciBhIHpvb20gc2NhbGUgY2hhbmdl
IGFzIGEgd2F5IHRvIGRldGVjdCBpZiB0aGUgcGFnZQorICAgICAgICB6b29tZWQgdG8gcmV2ZWFs
IHRoZSBmb2N1c2VkIGVsZW1lbnQuCisKKyAgICAgICAgQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBm
b2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAgICAxLiBQbGFjZSB0aGUgY2FyZXQgaW4gYSBmb2N1
c2VkIGZpZWxkIHRoYXQgaXNuJ3QgYmVpbmcgYXNzaXN0ZWQuCisgICAgICAgICAgICAyLiBGb2N1
c2luZyBhbiBhc3Npc3RlZCBlbGVtZW50IHNob3VsZCBub3Qgc2Nyb2xsIHRoZSBwYWdlLgorICAg
ICAgICAgICAgMy4gRm9jdXNpbmcgYW4gb2Zmc2NyZWVuIHJlYWQtb25seSBlbGVtZW50IHNob3Vs
ZCBub3QgY2hhbmdlIHpvb20gc2NhbGUuCisgICAgICAgICAgICA0LiBGb2N1c2luZyBhbiBvZmZz
Y3JlZW4gZWxlbWVudCBzaG91bGQgY2hhbmdlIHRoZSB6b29tIHNjYWxlLgorICAgICAgICAgICAg
NS4gQ2FsbGluZyAtX2ZvY3VzVGV4dElucHV0Q29udGV4dCBvbiBhbiBvZmZzY3JlZW4gZWxlbWVu
dCBtdWx0aXBsZSB0aW1lcworICAgICAgICAgICAgZHVyaW5nIGEgdGV4dCBpbnRlcmFjdGlvbiBz
aG91bGQgY2hhbmdlIHRoZSB6b29tIHNjYWxlLiBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgaXMK
KyAgICAgICAgICAgIHRvIGVuc3VyZSB0aGF0IGxhdGVyIGNhbGxzIHRoYXQgZG8gbm90IGZvY3Vz
IHRoZSBlbGVtZW50IChiZWNhdXNlIGl0IGlzIGFscmVhZHkgZm9jdXNlZCkKKyAgICAgICAgICAg
IGRvbid0IHByZXZlbnQgem9vbWluZyBmb3IgdGhlIGZpcnN0IGNhbGwgdGhhdCBkaWQgZm9jdXMg
dGhlIGVsZW1lbnQuCisgICAgICAgICAgICA2LiBGb2N1c2luZyBhbiBvZmZzY3JlZW4gZWxlbWVu
dCwgZGVmb2N1c2luZyBpdCwgZGlzYWJsaW5nIGl0LCBhbmQgZm9jdXNpbmcgaXQKKyAgICAgICAg
ICAgIGFnYWluIGR1cmluZyBhIHRleHQgaW50ZXJhY3Rpb24gc2hvdWxkIG5vdCBjaGFuZ2Ugem9v
bSBzY2FsZS4KKyAgICAgICAgICAgIDcuIEZvY3VzaW5nIGFuIG9mZnNjcmVlbiBlbGVtZW50LCBk
ZWZvY3VzaW5nIGl0LCBhbmQgZm9jdXNpbmcgaXQgYWdhaW4gZHVyaW5nIGEKKyAgICAgICAgICAg
IHRleHQgaW50ZXJhY3Rpb24gc2hvdWxkIGNoYW5nZSB6b29tIHNjYWxlLgorICAgICAgICAgICAg
OC4gRm9jdXNpbmcgYW4gYXNzaXN0ZWQgZWxlbWVudCBkdXJpbmcgYSB0ZXh0IGludGVyYWN0aW9u
IHNob3VsZCBub3QgY2hhbmdlIHpvb20gc2NhbGUuCisgICAgICAgICAgICA5LiBGb2N1c2luZyBh
IG5vbi1hc3Npc3RlZCBmb2N1c2VkIGVsZW1lbnQgZHVyaW5nIGEgdGV4dCBpbnRlcmFjdGlvbiBz
aG91bGQgY2hhbmdlIHpvb20gc2NhbGUuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tOgorICAgICAgICAoVGV4dElu
dGVyYWN0aW9uRm9yU2NvcGU6OlRleHRJbnRlcmFjdGlvbkZvclNjb3BlKToKKyAgICAgICAgKFRl
eHRJbnRlcmFjdGlvbkZvclNjb3BlOjp+VGV4dEludGVyYWN0aW9uRm9yU2NvcGUpOgorICAgICAg
ICBBZGRlZCBjb252ZW5pZW5jZSBSQUlJIG9iamVjdCB0byBjYWxsIC1fd2lsbEJlZ2luVGV4dElu
dGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0CisgICAgICAgIGFuZCAtX2RpZEZpbmlzaFRleHRJ
bnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dC4KKyAgICAgICAgKFRFU1QpOiBBZGRlZC4KKwog
MjAyMC0wNC0xNiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIHNvbWUgbW9yZSB0ZXN0cyBmb3IgLWZvY3VzVGV4dElucHV0Q29udGV4dDpwbGFjZUNhcmV0
QXQ6Y29tcGxldGlvbkhhbmRsZXI6CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQppbmRl
eCBkYjdlMmM2MTEwZTMxOTdlYzhkMTU2MTU4YmE0OTVkZWRjM2U3MzljLi42YzA1YzBlZjhlOGFk
NTNhMmUzN2I3ZDQyOTBiOTllNGY5Zjc4MGYyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRl
eHQubW0KQEAgLTM4LDYgKzM4LDI2IEBACiAjaW1wb3J0IDxXZWJLaXQvX1dLVGV4dElucHV0Q29u
dGV4dC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgogCitjbGFzcyBUZXh0SW50ZXJhY3Rp
b25Gb3JTY29wZSB7CitwdWJsaWM6CisgICAgVGV4dEludGVyYWN0aW9uRm9yU2NvcGUoY29uc3Qg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+JiB3ZWJWaWV3LCBjb25zdCBSZXRhaW5QdHI8X1dLVGV4
dElucHV0Q29udGV4dD4mIHRleHRJbnB1dENvbnRleHQpCisgICAgICAgIDogbV93ZWJWaWV3IHsg
d2ViVmlldyB9CisgICAgICAgICwgbV90ZXh0SW5wdXRDb250ZXh0IHsgdGV4dElucHV0Q29udGV4
dCB9CisgICAgeworICAgICAgICBbbV93ZWJWaWV3IF93aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25J
blRleHRJbnB1dENvbnRleHQ6bV90ZXh0SW5wdXRDb250ZXh0LmdldCgpXTsKKyAgICB9CisKKyAg
ICB+VGV4dEludGVyYWN0aW9uRm9yU2NvcGUoKQorICAgIHsKKyAgICAgICAgW21fd2ViVmlldyBf
ZGlkRmluaXNoVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0Om1fdGV4dElucHV0Q29u
dGV4dC5nZXQoKV07CisgICAgICAgIFttX3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25V
cGRhdGVdOworICAgIH0KKworcHJpdmF0ZToKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4g
bV93ZWJWaWV3OworICAgIFJldGFpblB0cjxfV0tUZXh0SW5wdXRDb250ZXh0PiBtX3RleHRJbnB1
dENvbnRleHQ7Cit9OworCiBAaW1wbGVtZW50YXRpb24gVGVzdFdLV2ViVmlldyAoU3luY2hyb25v
dXNUZXh0SW5wdXRDb250ZXh0KQogCiAtIChOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4g
KilzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVj
dApAQCAtMzMzLDYgKzM1MywzNCBAQCBURVNUKFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0LCBDYXJl
dFNob3VsZE5vdE1vdmVJbkFscmVhZHlGb2N1c2VkRmllbGQyKQogICAgIEVYUEVDVF9FUSgxLCBb
W3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQuc2VsZWN0aW9uRW5kIl0gaW50VmFsdWVdKTsKIH0KIAorVEVTVChSZXF1ZXN0VGV4dElu
cHV0Q29udGV4dCwgUGxhY2VDYXJldEluTm9uQXNzaXN0ZWRGb2N1c2VkRmllbGQpCit7CisgICAg
YXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9w
dE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBfc2V0
SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGlucHV0IHR5cGU9J3RleHQnIGlk
PSdpbnB1dCcgdmFsdWU9J2hlbGxvIHdvcmxkJyBzdHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6
IDUwcHg7Jz4iKV07CisKKyAgICAvLyBVc2UgSmF2YVNjcmlwdCB0byBwbGFjZSB0aGUgY2FyZXQg
YWZ0ZXIgdGhlICdoJyBpbiB0aGUgZmllbGQuCisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNT
dGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0Zv
Y3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9s
aWN5RGlzYWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJpbnB1dC5mb2N1cygpIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJJTlBVVCIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50
LnRhZ05hbWUiXSk7CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImlucHV0LnNldFNlbGVjdGlvblJhbmdlKDEsIDEpIl07CisgICAgRVhQRUNUX0VRKDEsIFtbd2Vi
VmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dC5zZWxlY3Rpb25TdGFydCJdIGludFZhbHVlXSk7CisgICAgRVhQRUNUX0VRKDEsIFtbd2ViVmll
dyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5z
ZWxlY3Rpb25FbmQiXSBpbnRWYWx1ZV0pOworCisgICAgLy8gVXNlIC1mb2N1c1RleHRJbnB1dENv
bnRleHQ6IHRvIHBsYWNlIHRoZSBjYXJldCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWVsZDsg
dGhlIGNhcmV0IHNob3VsZCBtb3ZlLgorICAgIFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRz
SW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2Vk
RWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFs
bG93OyB9XTsKKyAgICBOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRleHRzID0g
W3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2Vi
VmlldyBib3VuZHNdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAg
UmV0YWluUHRyPF9XS1RleHRJbnB1dENvbnRleHQ+IGlucHV0RWxlbWVudCA9IGNvbnRleHRzWzBd
OworICAgIEVYUEVDVF9FUSgoVUlSZXNwb25kZXI8VUlUZXh0SW5wdXQ+ICopW3dlYlZpZXcgdGV4
dElucHV0Q29udGVudFZpZXddLCBbd2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRD
b250ZXh0OmlucHV0RWxlbWVudC5nZXQoKSBwbGFjZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBib3Vu
ZGluZ1JlY3RdLm9yaWdpbl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50
YWdOYW1lIl0pOworICAgIEVYUEVDVF9FUSgwLCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQiXSBpbnRW
YWx1ZV0pOworICAgIEVYUEVDVF9FUSgwLCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kIl0gaW50VmFsdWVd
KTsKK30KKwogVEVTVChSZXF1ZXN0VGV4dElucHV0Q29udGV4dCwgRm9jdXNUZXh0RmllbGRUaGVu
UHJvZ3JhbW1hdGljYWxseVJlcGxhY2VXaXRoVGV4dEFyZWFBbmRGb2N1c1RleHRBcmVhKQogewog
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CkBAIC00NzEsNCArNTE5LDIxNSBAQCBURVNUKFJlcXVlc3RUZXh0SW5w
dXRDb250ZXh0LCBTd2l0Y2hGb2N1c0JldHdlZW5GcmFtZXMpCiAgICAgRVhQRUNUX1dLX1NUUkVR
KCJpZnJhbWVGaWVsZCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpZnJhbWUnKS5jb250ZW50RG9jdW1lbnQuYWN0aXZlRWxl
bWVudC52YWx1ZSJdKTsKIH0KIAorVEVTVChSZXF1ZXN0VGV4dElucHV0Q29udGV4dCwgRm9jdXNp
bmdBc3Npc3RlZEVsZW1lbnRTaG91bGROb3RTY3JvbGxQYWdlKQoreworICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7
CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJ
bnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNT
dGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0Zv
Y3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9s
aWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdh
dGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBs
eVN0eWxlKEAiPGJvZHkgc3R5bGU9J2hlaWdodDogNDA5NnB4Jz48ZGl2IGlkPSdlZGl0YWJsZScg
c3R5bGU9J3Bvc2l0aW9uOiBmaXhlZDsgd2lkdGg6IDEwMCU7IGhlaWdodDogNTBweDsgYmFja2dy
b3VuZC1jb2xvcjogYmx1ZScgY29udGVudGVkaXRhYmxlPSd0cnVlJz48L2Rpdj48L2JvZHk+Iild
OworCisgICAgTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250ZXh0cyA9IFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcg
Ym91bmRzXV07CisgICAgRVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworCisgICAgLy8g
Rm9jdXMgdGhlIGZpZWxkIHVzaW5nIEphdmFTY3JpcHQgYW5kIHNjcm9sbCB0aGUgcGFnZS4KKyAg
ICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFu
Z2U6QCJlZGl0YWJsZS5mb2N1cygpIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJESVYiLCBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dC50YWdOYW1lIl0pOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjAwMCkiXTsKKyAgICBFWFBFQ1RfRVEoMjAwMCwgW1t3ZWJW
aWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cuc2Nyb2xsWSJdIGludFZh
bHVlXSk7CisKKyAgICAvLyBGb2N1cyB0aGUgZmllbGQgdXNpbmcgLWZvY3VzVGV4dElucHV0Q29u
dGV4dDsgcGFnZSBzaG91bGQgbm90IHNjcm9sbC4KKyAgICBSZXRhaW5QdHI8X1dLVGV4dElucHV0
Q29udGV4dD4gZWRpdGFibGVFbGVtZW50ID0gY29udGV4dHNbMF07CisgICAgRVhQRUNUX0VRKChV
SVJlc3BvbmRlcjxVSVRleHRJbnB1dD4gKilbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10s
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6ZWRpdGFibGVFbGVt
ZW50LmdldCgpIHBsYWNlQ2FyZXRBdDpbZWRpdGFibGVFbGVtZW50IGJvdW5kaW5nUmVjdF0ub3Jp
Z2luXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJESVYiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAg
IEVYUEVDVF9FUSgyMDAwLCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
IndpbmRvdy5zY3JvbGxZIl0gaW50VmFsdWVdKTsKK30KKworVEVTVChSZXF1ZXN0VGV4dElucHV0
Q29udGV4dCwgVGV4dEludGVyYWN0aW9uX0ZvY3VzaW5nUmVhZE9ubHlFbGVtZW50Q2hhbmdlc1pv
b21TY2FsZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGJvZHkgc3R5bGU9J2hl
aWdodDogNDA5NnB4Jz48aW5wdXQgaWQ9J2lucHV0Jz48L2JvZHk+IildOworCisgICAgTlNBcnJh
eTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgYm91bmRzXV07CisgICAg
RVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworICAgIFJldGFpblB0cjxfV0tUZXh0SW5w
dXRDb250ZXh0PiBpbnB1dEVsZW1lbnQgPSBjb250ZXh0c1swXTsKKworICAgIEVYUEVDVF9XS19T
VFJFUSgiQk9EWSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1
bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImlucHV0LnJlYWRPbmx5ID0gdHJ1ZSJdOworICAgIFt3ZWJWaWV3
IHNjcm9sbFZpZXddLnpvb21TY2FsZSA9IDI7CisKKyAgICAvLyBGb2N1cyB0aGUgZmllbGQgdXNp
bmcgLWZvY3VzVGV4dElucHV0Q29udGV4dDsgem9vbSBzY2FsZSBvZiBzY3JvbGwgdmlldyBzaG91
bGQgY2hhbmdlIHRvIHJldmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50LgorICAgIHsKKyAgICAgICAg
VGV4dEludGVyYWN0aW9uRm9yU2NvcGUgc2NvcGUgeyB3ZWJWaWV3LCBpbnB1dEVsZW1lbnQgfTsK
KyAgICAgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0
Q29udGV4dDppbnB1dEVsZW1lbnQuZ2V0KCkgcGxhY2VDYXJldEF0OltpbnB1dEVsZW1lbnQgYm91
bmRpbmdSZWN0XS5vcmlnaW5dKTsKKyAgICB9CisgICAgRVhQRUNUX1dLX1NUUkVRKCJJTlBVVCIs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVF
bGVtZW50LnRhZ05hbWUiXSk7CisgICAgRVhQRUNUX0xUKFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpv
b21TY2FsZSwgMik7Cit9CisKK1RFU1QoUmVxdWVzdFRleHRJbnB1dENvbnRleHQsIFRleHRJbnRl
cmFjdGlvbl9Gb2N1c2luZ0VsZW1lbnRDaGFuZ2VzWm9vbVNjYWxlKQoreworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nOmFwcGx5U3R5bGUoQCI8Ym9keSBzdHlsZT0naGVpZ2h0OiA0MDk2cHgnPjxpbnB1dCBpZD0n
aW5wdXQnPjwvYm9keT4iKV07CisKKyAgICBOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4g
KmNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdDpbd2ViVmlldyBib3VuZHNdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5j
b3VudCk7CisgICAgUmV0YWluUHRyPF9XS1RleHRJbnB1dENvbnRleHQ+IGlucHV0RWxlbWVudCA9
IGNvbnRleHRzWzBdOworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJCT0RZIiwgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFt
ZSJdKTsKKyAgICBbd2ViVmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUgPSAyOworCisgICAgLy8g
Wm9vbSBzY2FsZSBvZiBzY3JvbGwgdmlldyBzaG91bGQgY2hhbmdlIHRvIHJldmVhbCB0aGUgZm9j
dXNlZCBlbGVtZW50LgorICAgIHsKKyAgICAgICAgVGV4dEludGVyYWN0aW9uRm9yU2NvcGUgc2Nv
cGUgeyB3ZWJWaWV3LCBpbnB1dEVsZW1lbnQgfTsKKyAgICAgICAgRVhQRUNUX0VRKChVSVJlc3Bv
bmRlcjxVSVRleHRJbnB1dD4gKilbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10sIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6aW5wdXRFbGVtZW50LmdldCgp
IHBsYWNlQ2FyZXRBdDpbaW5wdXRFbGVtZW50IGJvdW5kaW5nUmVjdF0ub3JpZ2luXSk7CisgICAg
fQorICAgIEVYUEVDVF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIEVY
UEVDVF9MVChbd2ViVmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUsIDIpOworfQorCitURVNUKFJl
cXVlc3RUZXh0SW5wdXRDb250ZXh0LCBUZXh0SW50ZXJhY3Rpb25fRm9jdXNpbmdFbGVtZW50TXVs
dGlwbGVUaW1lc0NoYW5nZXNab29tU2NhbGUpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHls
ZShAIjxib2R5IHN0eWxlPSdoZWlnaHQ6IDQwOTZweCc+PGlucHV0IGlkPSdpbnB1dCc+PC9ib2R5
PiIpXTsKKworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMgPSBb
d2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJW
aWV3IGJvdW5kc11dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBS
ZXRhaW5QdHI8X1dLVGV4dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50ID0gY29udGV4dHNbMF07
CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkJPRFkiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIFt3
ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSA9IDI7CisKKyAgICAvLyBab29tIHNjYWxlIG9m
IHNjcm9sbCB2aWV3IHNob3VsZCBjaGFuZ2UgdG8gcmV2ZWFsIHRoZSBmb2N1c2VkIGVsZW1lbnQu
CisgICAgeworICAgICAgICBUZXh0SW50ZXJhY3Rpb25Gb3JTY29wZSBzY29wZSB7IHdlYlZpZXcs
IGlucHV0RWxlbWVudCB9OworICAgICAgICBFWFBFQ1RfRVEoKFVJUmVzcG9uZGVyPFVJVGV4dElu
cHV0PiAqKVt3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSwgW3dlYlZpZXcgc3luY2hyb25v
dXNseUZvY3VzVGV4dElucHV0Q29udGV4dDppbnB1dEVsZW1lbnQuZ2V0KCkgcGxhY2VDYXJldEF0
OltpbnB1dEVsZW1lbnQgYm91bmRpbmdSZWN0XS5vcmlnaW5dKTsKKyAgICAgICAgRVhQRUNUX1dL
X1NUUkVRKCJJTlBVVCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAgICAgIEVYUEVDVF9FUSgoVUlS
ZXNwb25kZXI8VUlUZXh0SW5wdXQ+ICopW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddLCBb
d2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0OmlucHV0RWxlbWVudC5n
ZXQoKSBwbGFjZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBib3VuZGluZ1JlY3RdLm9yaWdpbl0pOwor
ICAgIH0KKyAgICBFWFBFQ1RfV0tfU1RSRVEoIklOUFVUIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAg
ICBFWFBFQ1RfTFQoW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlLCAyKTsKK30KKworVEVT
VChSZXF1ZXN0VGV4dElucHV0Q29udGV4dCwgVGV4dEludGVyYWN0aW9uX0ZvY3VzRGVmb2N1c0Rp
c2FibGVGb2N1c0FnYWluU2hvdWxkTm90Q2hhbmdlWm9vbVNjYWxlKQoreworICAgIGF1dG8gY29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nOmFwcGx5U3R5bGUoQCI8Ym9keSBzdHlsZT0naGVpZ2h0OiA0MDk2cHgnPjxpbnB1dCBpZD0n
aW5wdXQnPjwvYm9keT4iKV07CisKKyAgICBOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4g
KmNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdDpbd2ViVmlldyBib3VuZHNdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5j
b3VudCk7CisgICAgUmV0YWluUHRyPF9XS1RleHRJbnB1dENvbnRleHQ+IGlucHV0RWxlbWVudCA9
IGNvbnRleHRzWzBdOworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJCT0RZIiwgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFt
ZSJdKTsKKyAgICBbd2ViVmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUgPSAyOworCisgICAgewor
ICAgICAgICBUZXh0SW50ZXJhY3Rpb25Gb3JTY29wZSBzY29wZSB7IHdlYlZpZXcsIGlucHV0RWxl
bWVudCB9OworICAgICAgICAvLyAxLiBGb2N1cworICAgICAgICBFWFBFQ1RfRVEoKFVJUmVzcG9u
ZGVyPFVJVGV4dElucHV0PiAqKVt3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSwgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDppbnB1dEVsZW1lbnQuZ2V0KCkg
cGxhY2VDYXJldEF0OltpbnB1dEVsZW1lbnQgYm91bmRpbmdSZWN0XS5vcmlnaW5dKTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKCJJTlBVVCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisKKyAgICAgICAg
Ly8gMi4gRGVmb2N1cworICAgICAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiaW5wdXQuYmx1cigpIl07CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiQk9EWSIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVt
ZW50LnRhZ05hbWUiXSk7CisKKyAgICAgICAgLy8gMy4gRGlzYWJsZQorICAgICAgICBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW5wdXQuZGlzYWJsZWQgPSB0cnVlIl07
CisKKyAgICAgICAgLy8gNC4gRm9jdXMgYWdhaW47IGZvY3VzZWQgZWxlbWVudCBhbmQgem9vbSBz
Y2FsZSBvZiBzY3JvbGwgdmlldyBzaG91bGQgYmUgdW5jaGFuZ2VkLgorICAgICAgICBFWFBFQ1Rf
TlVMTChbd2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0OmlucHV0RWxl
bWVudC5nZXQoKSBwbGFjZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBib3VuZGluZ1JlY3RdLm9yaWdp
bl0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIkJPRFkiLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOwor
ICAgIH0KKyAgICBFWFBFQ1RfRVEoMiwgW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlKTsK
K30KKworVEVTVChSZXF1ZXN0VGV4dElucHV0Q29udGV4dCwgVGV4dEludGVyYWN0aW9uX0ZvY3Vz
RGVmb2N1c0ZvY3VzQWdhaW5TaG91bGRDaGFuZ2Vab29tU2NhbGUpCit7CisgICAgYXV0byBjb25m
aWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
KTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJp
bmc6YXBwbHlTdHlsZShAIjxib2R5IHN0eWxlPSdoZWlnaHQ6IDQwOTZweCc+PGlucHV0IGlkPSdp
bnB1dCc+PC9ib2R5PiIpXTsKKworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAq
Y29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRz
SW5SZWN0Olt3ZWJWaWV3IGJvdW5kc11dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNv
dW50KTsKKyAgICBSZXRhaW5QdHI8X1dLVGV4dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50ID0g
Y29udGV4dHNbMF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkJPRFkiLCBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1l
Il0pOworICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSA9IDI7CisKKyAgICB7Cisg
ICAgICAgIFRleHRJbnRlcmFjdGlvbkZvclNjb3BlIHNjb3BlIHsgd2ViVmlldywgaW5wdXRFbGVt
ZW50IH07CisgICAgICAgIC8vIDEuIEZvY3VzCisgICAgICAgIEVYUEVDVF9FUSgoVUlSZXNwb25k
ZXI8VUlUZXh0SW5wdXQ+ICopW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddLCBbd2ViVmll
dyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0OmlucHV0RWxlbWVudC5nZXQoKSBw
bGFjZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBib3VuZGluZ1JlY3RdLm9yaWdpbl0pOworICAgICAg
ICBFWFBFQ1RfV0tfU1RSRVEoIklOUFVUIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKworICAgICAgICAv
LyAyLiBEZWZvY3VzCisgICAgICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJpbnB1dC5ibHVyKCkiXTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJCT0RZIiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQudGFnTmFtZSJdKTsKKworICAgICAgICAvLyAzLiBGb2N1cyBhZ2FpbjsgZm9jdXNlZCBlbGVt
ZW50IGFuZCB6b29tIHNjYWxlIG9mIHNjcm9sbCB2aWV3IHNob3VsZCBjaGFuZ2UuCisgICAgICAg
IEVYUEVDVF9FUSgoVUlSZXNwb25kZXI8VUlUZXh0SW5wdXQ+ICopW3dlYlZpZXcgdGV4dElucHV0
Q29udGVudFZpZXddLCBbd2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0
OmlucHV0RWxlbWVudC5nZXQoKSBwbGFjZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBib3VuZGluZ1Jl
Y3RdLm9yaWdpbl0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIklOUFVUIiwgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFn
TmFtZSJdKTsKKyAgICB9CisgICAgRVhQRUNUX0xUKFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21T
Y2FsZSwgMik7Cit9CisKK1RFU1QoUmVxdWVzdFRleHRJbnB1dENvbnRleHQsIFRleHRJbnRlcmFj
dGlvbl9Gb2N1c2luZ0Fzc2lzdGVkRWxlbWVudFNob3VsZE5vdENoYW5nZVpvb21TY2FsZSkKK3sK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9
IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtpbnB1dERl
bGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJW
aWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0
c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxl
Z2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShAIjxib2R5IHN0eWxlPSdoZWlnaHQ6IDQwOTZweCc+PGlu
cHV0IGlkPSdpbnB1dCc+PC9ib2R5PiIpXTsKKworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29u
dGV4dCAqPiAqY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1
dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGJvdW5kc11dOworICAgIEVYUEVDVF9FUSgxVUwsIGNv
bnRleHRzLmNvdW50KTsKKyAgICBSZXRhaW5QdHI8X1dLVGV4dElucHV0Q29udGV4dD4gaW5wdXRF
bGVtZW50ID0gY29udGV4dHNbMF07CisKKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRB
bmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJpbnB1dC5mb2N1cygpIl07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCJJTlBVVCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAgW3dlYlZpZXcgc2Ny
b2xsVmlld10uem9vbVNjYWxlID0gMjsKKworICAgIC8vIEZvY3VzIHRoZSBmaWVsZCB1c2luZyAt
Zm9jdXNUZXh0SW5wdXRDb250ZXh0OyB6b29tIHNjYWxlIG9mIHNjcm9sbCB2aWV3IHNob3VsZCBi
ZSB1bmNoYW5nZWQuCisgICAgeworICAgICAgICBUZXh0SW50ZXJhY3Rpb25Gb3JTY29wZSBzY29w
ZSB7IHdlYlZpZXcsIGlucHV0RWxlbWVudCB9OworICAgICAgICBFWFBFQ1RfRVEoKFVJUmVzcG9u
ZGVyPFVJVGV4dElucHV0PiAqKVt3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSwgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDppbnB1dEVsZW1lbnQuZ2V0KCkg
cGxhY2VDYXJldEF0OltpbnB1dEVsZW1lbnQgYm91bmRpbmdSZWN0XS5vcmlnaW5dKTsKKyAgICB9
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJJTlBVVCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAgRVhQ
RUNUX0VRKDIsIFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSk7Cit9CisKK1RFU1QoUmVx
dWVzdFRleHRJbnB1dENvbnRleHQsIFRleHRJbnRlcmFjdGlvbl9Gb2N1c2luZ05vbkFzc2lzdGVk
Rm9jdXNlZEVsZW1lbnRDaGFuZ2VzWm9vbVNjYWxlKQoreworICAgIGF1dG8gY29uZmlndXJhdGlv
biA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpXSk7CisgICAgYXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5w
dXREZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nOmFwcGx5U3R5bGUoQCI8Ym9keSBzdHlsZT0naGVpZ2h0OiA0MDk2cHgnPjxpbnB1dCBpZD0n
aW5wdXQnPjwvYm9keT4iKV07CisKKyAgICBOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4g
KmNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0
c0luUmVjdDpbd2ViVmlldyBib3VuZHNdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5j
b3VudCk7CisgICAgUmV0YWluUHRyPF9XS1RleHRJbnB1dENvbnRleHQ+IGlucHV0RWxlbWVudCA9
IGNvbnRleHRzWzBdOworCisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNl
c3Npb25Qb2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50
SW5mbz4pIHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5RGlzYWxsb3c7
IH1dOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnB1dC5m
b2N1cygpIl07IC8vIFdpbGwgbm90IHN0YXJ0IGlucHV0IGFzc2lzdGFuY2UKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIklOUFVUIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICBbd2ViVmlldyBzY3JvbGxW
aWV3XS56b29tU2NhbGUgPSAyOworCisgICAgLy8gRm9jdXMgdGhlIGZpZWxkIHVzaW5nIC1mb2N1
c1RleHRJbnB1dENvbnRleHQ7IHpvb20gc2NhbGUgb2Ygc2Nyb2xsIHZpZXcgc2hvdWxkIGNoYW5n
ZSB0byByZXZlYWwgdGhlIGZvY3VzZWQgZWxlbWVudC4KKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRG
b2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8
X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Np
b25Qb2xpY3lBbGxvdzsgfV07CisgICAgeworICAgICAgICBUZXh0SW50ZXJhY3Rpb25Gb3JTY29w
ZSBzY29wZSB7IHdlYlZpZXcsIGlucHV0RWxlbWVudCB9OworICAgICAgICAvLyBXaWxsIHN0YXJ0
IGlucHV0IGFzc2lzdGFuY2UKKyAgICAgICAgRVhQRUNUX0VRKChVSVJlc3BvbmRlcjxVSVRleHRJ
bnB1dD4gKilbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10sIFt3ZWJWaWV3IHN5bmNocm9u
b3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6aW5wdXRFbGVtZW50LmdldCgpIHBsYWNlQ2FyZXRB
dDpbaW5wdXRFbGVtZW50IGJvdW5kaW5nUmVjdF0ub3JpZ2luXSk7CisgICAgfQorICAgIEVYUEVD
VF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIEVYUEVDVF9MVChbd2Vi
VmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUsIDIpOworfQorCiAjZW5kaWYgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397109</attachid>
            <date>2020-04-21 13:19:25 -0700</date>
            <delta_ts>2020-04-21 13:21:17 -0700</delta_ts>
            <desc>To Land</desc>
            <filename>bug-210697-20200421131924.patch</filename>
            <type>text/plain</type>
            <size>47992</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU2NzNlZWM1NjQ1NzI5
MjdlNDk2ZTFkMjJkM2U5NzIyNTNhMjI4OS4uY2U0MGMwMTY2MGY4ZTMwNGE3NjI2NTg2OGMxYjM1
YTFkMDhkY2U4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA0LTIxICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSAtX2RpZEZpbmlz
aFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dCBzaG91bGQgb25seSB6b29tIHRvIHJl
dmVhbCBmb2N1c2VkIGVsZW1lbnQgaWYgaXQgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MDk5NzUzMD4KKworICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAg
ICAgRm9yIG5vdywgYWRkIGEgY29tbWVudCBhYm91dCB0aGUgcmV0dXJuIHZhbHVlIG9mIHNldEZv
Y3VzZWRFbGVtZW50OiBpdCByZXR1cm5zCisgICAgICAgIHdoZXRoZXIgZm9jdXMgd2FzIGJsb2Nr
ZWQuIElmIGZvY3VzZWQgd2Fzbid0IGJsb2NrZWQgdGhlbiBpdCB3aWxsIHJldHVybiB0cnVlCisg
ICAgICAgIGV2ZW4gaWYgdGhlIGVsZW1lbnQgd2Fzbid0IGFjdHVhbGx5IGZvY3VzZWQuIEZvciBl
eGFtcGxlLCBpdCB3aWxsIHJldHVybiB0cnVlCisgICAgICAgIGZvciBub24tZm9jdXNhYmxlIGVs
ZW1lbnRzOiA8aW5wdXQgZGlzYWJsZWQ+LgorCisgICAgICAgIEkgd2FzIHRlbXB0ZWQgdG8gZml4
IHNldEZvY3VzZWRFbGVtZW50KCkgdG8gcmV0dXJuIHRydWUgd2hlbiBpdCBhY3R1YWxseSBmb2N1
c2VkCisgICAgICAgIHRoZSBlbGVtZW50IG9yIGlmIHRoZSBlbGVtZW50IHdhcyBhbHJlYWR5IGZv
Y3VzZWQsIGJ1dCBJIGRlY2lkZWQgdG8gZGVmZXIgdGhpcworICAgICAgICB1bnRpbCBJIGF1ZGl0
IHRoZSBjYWxsZXJzIGFuZCBydW4gc29tZSB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorCiAyMDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFseXN0IGZyb20gWGNv
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZGJiNThhZjc0MTE1YzlkZjE3NDk3NTE3NzFjMWMyMjEwYmQxYTkwOC4u
MWRhOGRjY2JjYTc1NWRiYzNiY2RjMTllOTE4ZmIxODA1ZGJjMzRjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAyMC0wNC0yMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW2lPU10gLV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENv
bnRleHQgc2hvdWxkIG9ubHkgem9vbSB0byByZXZlYWwgZm9jdXNlZCBlbGVtZW50IGlmIGl0IGNo
YW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MDY5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA5OTc1MzA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgV2Vuc29uIEhzaWVoLiAKKworICAgICAgICBBZGQgYSBuZXcgc3RhdGUgdmFyaWFibGUg
dG8gdXNlIHRvIHRyYWNrIHdoZXRoZXIgLV9mb2N1c1RleHRJbnB1dENvbnRleHQgaW52b2tlZCBk
dXJpbmcgYQorICAgICAgICB0ZXh0IGludGVyYWN0aW9uIGFjdHVhbGx5IGZvY3VzZWQgYW4gZWxl
bWVudC4gVGhlbiBpbiAtX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4
dAorICAgICAgICBjb25kaXRpb24gbWFya2luZyB0aGUgcGFnZSB0byByZXZlYWwgdGhlIGZvY3Vz
ZWQgZWxlbWVudCBvbiB0aGlzIHN0YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3dpbGxC
ZWdpblRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDpdKTogVHVybiBhcm91bmQgYW5k
IGNhbGwgdGhlIHNhbWUKKyAgICAgICAgZnVuY3Rpb24gb24gdGhlIGNvbnRlbnQgdmlldy4KKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENv
bnRleHQ6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xlYW5VcEludGVyYWN0aW9uXSk6
IFJlc2V0IHN0YXRlLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRDb21taXRMb2FkRm9y
TWFpbkZyYW1lXSk6IERpdHRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9mb2N1c1RleHRJ
bnB1dENvbnRleHQ6cGxhY2VDYXJldEF0OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBVcGRhdGUgc3Rh
dGUgdG8KKyAgICAgICAgaW5kaWNhdGUgd2hldGhlciB0aGUgZm9jdXNkIGVsZW1lbnQgZGlkIGNo
YW5nZSBvciBub3QuIEkgdXNlIGJpdHdpc2UgT1JpbmcgaW5zdGVhZCBvZiBzdHJpY3QKKyAgICAg
ICAgYXNzaWdubWVudCB0byB1cGRhdGUgaXQgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBj
YWxsZWQgbXVsdGlwbGUgdGltZXMgYnkgYW4gaW50ZXJuYWwKKyAgICAgICAgQXBwbGUgY2xpZW50
IGR1cmluZyBhIHRleHQgaW50ZXJhY3Rpb24gKGUuZy4gPHJkYXI6Ly9wcm9ibGVtLzU5NDMwODA2
PikuIEkgdGhvdWdodCBhYm91dAorICAgICAgICBtYWtpbmcgdGhpcyBhIEZJWE1FLCBidXQgdGhp
cyBmdW5jdGlvbiBpcyBvdGhlcndpc2UgY2FwYWJsZSBvZiBoYW5kbGluZyBtdWx0aXBsZSBpbnZv
Y2F0aW9ucworICAgICAgICBzbyBJIGRpZG4ndC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
d2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0Ol0pOiBSZXNldCBhZGRl
ZCBzdGF0ZS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkRmluaXNoVGV4dEludGVyYWN0
aW9uSW5UZXh0SW5wdXRDb250ZXh0Ol0pOiBDaGVjayBpZiBzdGF0ZSB3YXMgc2V0IHRvCisgICAg
ICAgIGluZGljYXRlIHRoYXQgYSBmb2N1cyBjaGFuZ2UgaGFwcGVuZWQuIElmIHNvLCBkbyB3aGF0
IHdlIGRvIG5vdyArIHJlc2V0IHN0YXRlLiBPdGhlcndpc2UsCisgICAgICAgIGRvIGV2ZXJ5dGhp
bmcgd2UgZG8gbm93IGV4Y2VwdCBmb3IgbWFya2luZyB0aGUgcGFnZSBhcyBuZWVkaW5nIHRvIHJl
dmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50CisgICAgICAgIG9uIHRoZSBuZXh0IGVkaXRvciBzdGF0
ZSB1cGRhdGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c1RleHRJbnB1dENvbnRleHRBbmRQbGFj
ZUNhcmV0KTogQ2hlY2sgdGhhdCB0aGUgdGFyZ2V0IGlzIGZvY3VzYWJsZQorICAgICAgICBiZWZv
cmUgY2FsbGluZyBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KCkgYmVjYXVzZSBp
dCB1bHRpbWF0ZWx5IGNhbGxzIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudCgpCisgICAgICAg
IHRoYXQgY2FuIHJldHVybiB0cnVlIGZvciBhIG5vbi1mb2N1c2FibGUgZWxlbWVudC4gSSBhZGRl
ZCBhIGNvbW1lbnQgaW4gRG9jdW1lbnQuaCB0byBleHBsYWluCisgICAgICAgIHRoaXMgc3VidGxl
dHkuIEkgYWxzbyBkZWNpZGVkIG5vdCB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIEZvY3Vz
Q29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQoKS4KKyAgICAgICAgSW5zdGVhZCBJIGFtIGNo
ZWNraW5nIHRoZSBtb3JlIGltcG9ydGFudCBjb25kaXRpb24gdGhhdCB0aGUgZm9jdXNlZCBlbGVt
ZW50IGlzIHRoZSB0YXJnZXQKKyAgICAgICAgZWxlbWVudC4gUGFzc2luZyB0cnVlIHRvIHZpc2li
bGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludCgpIHdpbGwgdWx0aW1hdGVseSBhc3NlcnQg
dGhpcworICAgICAgICB0byBiZSB0cnVlLiBOb3RlIHRoYXQgc2V0Rm9jdXNlZEVsZW1lbnQoKSBt
YXkgbm90IGhhdmUgZG9uZSBhbnl0aGluZyBhcyBtX2ZvY3VzZWRFbGVtZW50CisgICAgICAgIGNv
dWxkIGhhdmUgYWxyZWFkeSBiZWVuIGVxdWFsIHRvIHRoZSB0YXJnZXQgZWxlbWVudC4gVGhpcyBp
cyBPSyBhbmQgSSBzdGlsbCB1cGRhdGUgdGhlCisgICAgICAgIGNhcmV0IHBvc2l0aW9uLgorCiAy
MDIwLTA0LTE2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgdW51c2VkIC1fZm9jdXNUZXh0SW5wdXRDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDM0ZmQwMGUxNWI4OGQ3MjJlOTVhOTliNWNjYmYwYjAwNWI3ZjgyN2UuLjc1NTM1MTJiZDAx
Zjc0NWFhNjYzZmY3ZTNmYjkzYWRkMDEwM2I3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03
NjEsNiArNzYxLDggQEAgcHVibGljOgogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMg
cHJlcGFyZU1vdXNlRXZlbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBMYXlvdXRQb2lu
dCYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCiAgICAgZW51bSBjbGFzcyBGb2N1c1Jl
bW92YWxFdmVudHNNb2RlIHsgRGlzcGF0Y2gsIERvTm90RGlzcGF0Y2ggfTsKKyAgICAvLyBSZXR1
cm5zIHdoZXRoZXIgZm9jdXMgd2FzIGJsb2NrZWQuIEEgdHJ1ZSB2YWx1ZSBkb2VzIG5vdCBuZWNl
c3NhcmlseSBtZWFuIHRoZSBlbGVtZW50IHdhcyBmb2N1c2VkLgorICAgIC8vIFRoZSBlbGVtZW50
IGNvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGZvY3VzZWQgb3IgbWF5IG5vdCBiZSBmb2N1c2FibGUg
KGUuZy4gPGlucHV0IGRpc2FibGVkPikuCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRGb2N1
c2VkRWxlbWVudChFbGVtZW50KiwgRm9jdXNEaXJlY3Rpb24gPSBGb2N1c0RpcmVjdGlvbk5vbmUs
CiAgICAgICAgIEZvY3VzUmVtb3ZhbEV2ZW50c01vZGUgPSBGb2N1c1JlbW92YWxFdmVudHNNb2Rl
OjpEaXNwYXRjaCk7CiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2ZvY3VzZWRFbGVtZW50LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgK
aW5kZXggMWZlZjgyODNkNzdkMWJkNDRkNzE5MDg4MTMxNmM5OTVhOWFiMmJhMy4uODY1YjcwN2Vi
NDE5YzFlYTBiOWQxYmU3ZWI2MDhiYTk2MGJhM2VmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmdJT1MuaApAQCAtNTEsNiArNTEsOCBAQAogLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6KENHUmVjdClyZWN0OwogLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRl
eHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJh
eTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClf
Zm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dCBwbGFj
ZUNhcmV0QXQ6KENHUG9pbnQpcG9pbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJUmVz
cG9uZGVyPFVJVGV4dElucHV0PiAqKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX3dpbGxC
ZWdpblRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4
dCAqKWNvbnRleHQ7CistICh2b2lkKV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1
dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0OwogLSAodm9pZClfcmVxdWVz
dERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRs
ZXI7CiAtICh2b2lkKV9hZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVsdGFSYW5n
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVz
dGluZ0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVz
dGluZ0lPUy5tbQppbmRleCAyZTlhMWI1ZjljZDIxZmZkNDkwZWJlYTJhMDM1OGU2NmNkOGUwNjlk
Li45YzM3YjQ0ZGI0ZmUyNDBlYjcyMmQ1M2QyZWMxNTMyOGRiOTkzODVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1t
CkBAIC02OCw2ICs2OCwxNiBAQCAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1Rl
eHRJbnB1dENvbnRleHQgKiljb250ZXh0IHBsYWNlQ2FyZXRBdDooQ0dQbwogICAgIFtfY29udGVu
dFZpZXcgX2ZvY3VzVGV4dElucHV0Q29udGV4dDpjb250ZXh0IHBsYWNlQ2FyZXRBdDphZGp1c3Rl
ZFBvaW50IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAorLSAodm9p
ZClfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5w
dXRDb250ZXh0ICopY29udGV4dAoreworICAgIFtfY29udGVudFZpZXcgX3dpbGxCZWdpblRleHRJ
bnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDpjb250ZXh0XTsKK30KKworLSAodm9pZClfZGlk
RmluaXNoVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250
ZXh0ICopY29udGV4dAoreworICAgIFtfY29udGVudFZpZXcgX2RpZEZpbmlzaFRleHRJbnRlcmFj
dGlvbkluVGV4dElucHV0Q29udGV4dDpjb250ZXh0XTsKK30KKwogLSAodm9pZClfcmVxdWVzdERv
Y3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXIK
IHsKICAgICBbX2NvbnRlbnRWaWV3IHJlcXVlc3REb2N1bWVudENvbnRleHQ6cmVxdWVzdCBjb21w
bGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggZmIyZTBk
MGVlZWVmZjA2YmFiMGZjOWNkNjUyMTBkZDk3NDI0ZmJiMC4uMDFkMmY0MTY4N2RkMGVkNzIxM2Ew
Y2JkY2FjNmI1MDFmODhmZDhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMzUwLDYgKzM1MCw3IEBAIHN0
cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgQk9PTCBfZGlkQWNjZXNzb3J5VGFiSW5p
dGlhdGVGb2N1czsKICAgICBCT09MIF9pc0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQ7CiAg
ICAgQk9PTCBfc2hvd0RlYnVnVGFwSGlnaGxpZ2h0c0ZvckZhc3RDbGlja2luZzsKKyAgICBCT09M
IF90ZXh0SW50ZXJhY3Rpb25EaWRDaGFuZ2VGb2N1c2VkRWxlbWVudDsKIAogICAgIFdlYkNvcmU6
OlBvaW50ZXJJRCBtX2NvbW1pdFBvdGVudGlhbFRhcFBvaW50ZXJJZDsKIApAQCAtNTcxLDExICs1
NzIsOCBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tD
T05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogCiAtICh2b2lkKV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXI7CiAt
ICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250
ZXh0IHBsYWNlQ2FyZXRBdDooQ0dQb2ludClwb2ludCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoVUlSZXNwb25kZXI8VUlUZXh0SW5wdXQ+ICopKWNvbXBsZXRpb25IYW5kbGVyOwotCi0jaWYg
VVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05TKQogLSAodm9pZClfd2lsbEJlZ2luVGV4dElu
dGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4
dDsKIC0gKHZvaWQpX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDoo
X1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQ7Ci0jZW5kaWYKIAogLSAodm9pZClfaGFuZGxl
QXV0b2NvcnJlY3Rpb25Db250ZXh0Oihjb25zdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29u
dGV4dCYpY29udGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMDQwNTAxOGIzNjlmYzNjN2ZkMTJj
MDY4YjE3NmQ5ODI4ZWQyMzFlZi4uNGEzOGQ2YjIxMDYyZDdhMzIxNDJhYjAwODk5Y2M5ZDcxNGJl
MWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC05MjMsNiArOTIzLDggQEAgLSAodm9pZCljbGVhblVw
SW50ZXJhY3Rpb24KICAgICBfc2VlbkhhcmR3YXJlS2V5RG93bkluTm9uRWRpdGFibGVFbGVtZW50
ID0gTk87CiAjZW5kaWYKIAorICAgIF90ZXh0SW50ZXJhY3Rpb25EaWRDaGFuZ2VGb2N1c2VkRWxl
bWVudCA9IE5POworCiAgICAgaWYgKF9pbnRlcmFjdGlvblZpZXdzQ29udGFpbmVyVmlldykgewog
ICAgICAgICBbc2VsZi5sYXllciByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJ0cmFu
c2Zvcm0iXTsKICAgICAgICAgW19pbnRlcmFjdGlvblZpZXdzQ29udGFpbmVyVmlldyByZW1vdmVG
cm9tU3VwZXJ2aWV3XTsKQEAgLTQyNTUsNiArNDI1Nyw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExv
YWRGb3JNYWluRnJhbWUKICAgICBbX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCBhY3RpdmF0ZVNl
bGVjdGlvbl07CiAgICAgW193ZWJWaWV3IF9kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lXTsKIAor
ICAgIF90ZXh0SW50ZXJhY3Rpb25EaWRDaGFuZ2VGb2N1c2VkRWxlbWVudCA9IE5POwogICAgIF9o
YXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb24gPSBOTzsKICAgICBfcG9zaXRpb25JbmZvcm1hdGlv
biA9IHsgfTsKIH0KQEAgLTUwOTIsNiArNTA5NSw3IEBAIC0gKEJPT0wpX2lzVGV4dElucHV0Q29u
dGV4dEZvY3VzZWQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0CiAtICh2b2lkKV9mb2N1
c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0IHBsYWNlQ2Fy
ZXRBdDooQ0dQb2ludClwb2ludCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlSZXNwb25k
ZXI8VUlUZXh0SW5wdXQ+ICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgQVNTRVJUKGNvbnRl
eHQpOworICAgIC8vIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBk
dXJpbmcgYSB0ZXh0IGludGVyYWN0aW9uIChlLmcuIDxyZGFyOi8vcHJvYmxlbS81OTQzMDgwNj4p
LgogICAgIGlmICghW3NlbGYgYmVjb21lRmlyc3RSZXNwb25kZXJdKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG5pbCk7CiAgICAgICAgIHJldHVybjsKQEAgLTUxMDMsMTQgKzUxMDcsMTUg
QEAgLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICop
Y29udGV4dCBwbGFjZUNhcmV0QXQ6KENHUG8KICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9u
ID0gWUVTOwogICAgIGF1dG8gY2hlY2tGb2N1c2VkRWxlbWVudCA9IFt3ZWFrU2VsZiA9IFdlYWtP
YmpDUHRyPFdLQ29udGVudFZpZXc+IHsgc2VsZiB9LCBjb250ZXh0ID0gW2NvbnRleHQgY29weV0s
IGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJv
b2wgc3VjY2VzcykgewogICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsK
LSAgICAgICAgaWYgKHN0cm9uZ1NlbGYpCi0gICAgICAgICAgICBzdHJvbmdTZWxmLT5fdXNpbmdH
ZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87Ci0gICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCAhc3Vj
Y2VzcykgeworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG5pbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
Ym9vbCBmb2N1c2VkQW5kRWRpdGFibGUgPSBbc3Ryb25nU2VsZiBfaXNUZXh0SW5wdXRDb250ZXh0
Rm9jdXNlZDpjb250ZXh0XSAmJiAhc3Ryb25nU2VsZi0+X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24uaXNSZWFkT25seTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZm9jdXNlZEFuZEVkaXRh
YmxlID8gc3Ryb25nU2VsZi5hdXRvcmVsZWFzZSgpIDogbmlsKTsKKyAgICAgICAgYm9vbCBpc0Zv
Y3VzZWQgPSBzdWNjZXNzICYmIFtzdHJvbmdTZWxmIF9pc1RleHRJbnB1dENvbnRleHRGb2N1c2Vk
OmNvbnRleHRdOworICAgICAgICBib29sIGlzRWRpdGFibGUgPSBzdWNjZXNzICYmICFzdHJvbmdT
ZWxmLT5fZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pc1JlYWRPbmx5OworICAgICAgICBzdHJv
bmdTZWxmLT5fdGV4dEludGVyYWN0aW9uRGlkQ2hhbmdlRm9jdXNlZEVsZW1lbnQgfD0gaXNGb2N1
c2VkOworICAgICAgICBzdHJvbmdTZWxmLT5fdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzRm9jdXNlZCAmJiBpc0VkaXRhYmxlID8gc3Ry
b25nU2VsZi5nZXQoKSA6IG5pbCk7CiAgICAgfTsKICAgICBfcGFnZS0+Zm9jdXNUZXh0SW5wdXRD
b250ZXh0QW5kUGxhY2VDYXJldChjb250ZXh0Ll90ZXh0SW5wdXRDb250ZXh0LCBXZWJDb3JlOjpJ
bnRQb2ludCB7IHBvaW50IH0sIFdURk1vdmUoY2hlY2tGb2N1c2VkRWxlbWVudCkpOwogfQpAQCAt
NTEzNSwxMSArNTE0MCwxMCBAQCAtICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJl
Y3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKQogICAgIH0pOwogfQog
Ci0jaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05TKQotCiAtICh2b2lkKV93aWxsQmVn
aW5UZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQg
Kiljb250ZXh0CiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOworICAgIF90ZXh0SW50ZXJhY3Rpb25E
aWRDaGFuZ2VGb2N1c2VkRWxlbWVudCA9IE5POwogICAgIF9wYWdlLT5zZXRTaG91bGRSZXZlYWxD
dXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oZmFsc2UpOwogICAgIF9wYWdlLT5zZXRDYW5T
aG93UGxhY2Vob2xkZXIoY29udGV4dC5fdGV4dElucHV0Q29udGV4dCwgZmFsc2UpOwogICAgIFtz
ZWxmIF9zdGFydFN1cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6
SW50ZXJhY3Rpb25Jc0hhcHBlbmluZ107CkBAIC01MTUwLDE3ICs1MTU0LDE2IEBAIC0gKHZvaWQp
X2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0
Q29udGV4dCAqKWNvbnRlCiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIFtzZWxmIF9zdG9wU3Vw
cHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246V2ViS2l0OjpJbnRlcmFjdGlvbklz
SGFwcGVuaW5nXTsKICAgICBfcGFnZS0+c2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGNvbnRleHQuX3Rl
eHRJbnB1dENvbnRleHQsIHRydWUpOwotICAgIC8vIE1hcmsgdG8gem9vbSB0byByZXZlYWwgdGhl
IG5ld2x5IGZvY3VzZWQgZWxlbWVudCBvbiB0aGUgbmV4dCBlZGl0b3Igc3RhdGUgdXBkYXRlLgot
ICAgIC8vIFRoZW4gdGVsbCB0aGUgd2ViIHByb2Nlc3MgdG8gcmV2ZWFsIHRoZSBjdXJyZW50IHNl
bGVjdGlvbiwgd2hpY2ggd2lsbCBzZW5kIHVzICh0aGUKLSAgICAvLyBVSSBwcm9jZXNzKSBhbiBl
ZGl0b3Igc3RhdGUgdXBkYXRlLgotICAgIC8vIEZJWE1FOiBPbmx5IGRvIHRoaXMgaWYgZm9jdXMg
Y2hhbmdlZCBzaW5jZSAtd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0
IHdhcyBjYWxsZWQuCi0gICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS82MDk5NzUzMD4gZm9yIG1v
cmUgZGV0YWlscy4KLSAgICBfcGFnZS0+c2V0V2FpdGluZ0ZvclBvc3RMYXlvdXRFZGl0b3JTdGF0
ZVVwZGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50KHRydWUpOworICAgIGlmIChfdGV4dEludGVyYWN0
aW9uRGlkQ2hhbmdlRm9jdXNlZEVsZW1lbnQpIHsKKyAgICAgICAgLy8gTWFyayB0byB6b29tIHRv
IHJldmVhbCB0aGUgbmV3bHkgZm9jdXNlZCBlbGVtZW50IG9uIHRoZSBuZXh0IGVkaXRvciBzdGF0
ZSB1cGRhdGUuCisgICAgICAgIC8vIFRoZW4gdGVsbCB0aGUgd2ViIHByb2Nlc3MgdG8gcmV2ZWFs
IHRoZSBjdXJyZW50IHNlbGVjdGlvbiwgd2hpY2ggd2lsbCBzZW5kIHVzICh0aGUKKyAgICAgICAg
Ly8gVUkgcHJvY2VzcykgYW4gZWRpdG9yIHN0YXRlIHVwZGF0ZS4KKyAgICAgICAgX3BhZ2UtPnNl
dFdhaXRpbmdGb3JQb3N0TGF5b3V0RWRpdG9yU3RhdGVVcGRhdGVBZnRlckZvY3VzaW5nRWxlbWVu
dCh0cnVlKTsKKyAgICAgICAgX3RleHRJbnRlcmFjdGlvbkRpZENoYW5nZUZvY3VzZWRFbGVtZW50
ID0gTk87CisgICAgfQogICAgIF9wYWdlLT5zZXRTaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9u
QWZ0ZXJJbnNlcnRpb24odHJ1ZSk7CiB9CiAKLSNlbmRpZgotCiAjaWYgVVNFKFVJS0lUX0tFWUJP
QVJEX0FERElUSU9OUykKIAogLSAodm9pZCltb2RpZmllckZsYWdzRGlkQ2hhbmdlRnJvbTooVUlL
ZXlNb2RpZmllckZsYWdzKW9sZEZsYWdzIHRvOihVSUtleU1vZGlmaWVyRmxhZ3MpbmV3RmxhZ3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggODA4NDExYTA5YjNkMDY2ZmFmOTc3OTA2ZjVkYTE3MGMxNWZlZTM4Zi4uODQ5MzJm
ZjQ3Mzk0ZGMyZmE3Mjk4ZDE0ZTAwNzc5MjRkYzE1NjY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQzMDIsMjEgKzQz
MDIsMjAgQEAgdm9pZCBXZWJQYWdlOjpmb2N1c1RleHRJbnB1dENvbnRleHRBbmRQbGFjZUNhcmV0
KGNvbnN0IEVsZW1lbnRDb250ZXh0JiBlbGVtZW50Q28KICAgICAvLyBQZXJmb3JtaW5nIGxheW91
dCBjb3VsZCBoYXZlIGNvdWxkIHRvcm4gZG93biB0aGUgZWxlbWVudCdzIHJlbmRlcmVyLiBDaGVj
ayB0aGF0IHdlIHN0aWxsCiAgICAgLy8gaGF2ZSBvbmUuIE90aGVyd2lzZSwgYmFpbCBvdXQgYXMg
dGhpcyBmdW5jdGlvbiBvbmx5IGZvY3VzZXMgZWxlbWVudHMgdGhhdCBoYXZlIGEgdmlzdWFsCiAg
ICAgLy8gcmVwcmVzZW50YXRpb24uCi0gICAgaWYgKCF0YXJnZXQtPnJlbmRlcmVyKCkpIHsKKyAg
ICBpZiAoIXRhcmdldC0+cmVuZGVyZXIoKSB8fCAhdGFyZ2V0LT5pc0ZvY3VzYWJsZSgpKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IgeyBQcm9jZXNzaW5n
VXNlckdlc3R1cmUsICZ0YXJnZXQtPmRvY3VtZW50KCkgfTsKICAgICBTZXRGb3JTY29wZTxib29s
PiB1c2VySXNJbnRlcmFjdGluZ0NoYW5nZSB7IG1fdXNlcklzSW50ZXJhY3RpbmcsIHRydWUgfTsK
LSAgICBib29sIGRpZEZvY3VzID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2Vk
RWxlbWVudCh0YXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KHRhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpOwog
CiAgICAgLy8gU2V0dGluZyB0aGUgZm9jdXNlZCBlbGVtZW50IGNvdWxkIHRlYXIgZG93biB0aGUg
ZWxlbWVudCdzIHJlbmRlcmVyLiBDaGVjayB0aGF0IHdlIHN0aWxsIGhhdmUgb25lLgotICAgIGlm
ICghZGlkRm9jdXMgfHwgIXRhcmdldC0+cmVuZGVyZXIoKSkgeworICAgIGlmIChtX2ZvY3VzZWRF
bGVtZW50ICE9IHRhcmdldCB8fCAhdGFyZ2V0LT5yZW5kZXJlcigpKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBBU1NFUlQo
bV9mb2N1c2VkRWxlbWVudCA9PSB0YXJnZXQpOwogICAgIC8vIFRoZSBmdW5jdGlvbiB2aXNpYmxl
UG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQgY29uc3RyYWlucyB0aGUgcG9pbnQgdG8gYmUg
aW5zaWRlCiAgICAgLy8gdGhlIGJvdW5kcyBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQuCiAgICAgYXV0
byBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludCh0YXJnZXRG
cmFtZSwgcG9pbnQsIHRydWUgLyogaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCAqLyk7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWY5
ODBiYTg0MGQwNDA4M2I4ODAzZWNlN2FiNWE2ODFlMjBjOTEzMi4uODQ4MDU2OWFiMzlmZGIwZWRi
MTRmOTcxYWQ5MDdlYjA4NDc5NTllNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIwLTA0LTIxICBEYW5pZWwgQmF0
ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSAtX2RpZEZpbmlzaFRleHRJ
bnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dCBzaG91bGQgb25seSB6b29tIHRvIHJldmVhbCBm
b2N1c2VkIGVsZW1lbnQgaWYgaXQgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDk5
NzUzMD4KKworICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgSSB1
c2UgdGhlIHRlcm0gImFzc2lzdGVkIiBiZWxvdyBhbmQgaW4gdGhlIHRlc3RzIHRvIGRlc2NyaWJl
IGFuIGVsZW1lbnQgdGhhdCBpcyBib3RoIERPTQorICAgICAgICBmb2N1c2VkIGFuZCB0aGUgVUkg
cHJvY2VzcyBpcyBzaG93aW5nIGFuIGlucHV0IHZpZXcgKGxpa2UgdGhlIHNvZnR3YXJlIGtleWJv
YXJkKSBmb3IgaXQuCisgICAgICAgIEZvciBtYW55IG9mIHRoZSB0ZXN0cyBJIGNoZWNrIGZvciBh
IHpvb20gc2NhbGUgY2hhbmdlIGFzIGEgd2F5IHRvIGRldGVjdCBpZiB0aGUgcGFnZQorICAgICAg
ICB6b29tZWQgdG8gcmV2ZWFsIHRoZSBmb2N1c2VkIGVsZW1lbnQuCisKKyAgICAgICAgQWRkIHNv
bWUgdGVzdHMgZm9yIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAgICAxLiBQbGFjZSB0
aGUgY2FyZXQgaW4gYSBmb2N1c2VkIGZpZWxkIHRoYXQgaXNuJ3QgYmVpbmcgYXNzaXN0ZWQuCisg
ICAgICAgICAgICAyLiBGb2N1c2luZyBhbiBhc3Npc3RlZCBlbGVtZW50IHNob3VsZCBub3Qgc2Ny
b2xsIHRoZSBwYWdlLgorICAgICAgICAgICAgMy4gRm9jdXNpbmcgYW4gb2Zmc2NyZWVuIHJlYWQt
b25seSBlbGVtZW50IHNob3VsZCBub3QgY2hhbmdlIHpvb20gc2NhbGUuCisgICAgICAgICAgICA0
LiBGb2N1c2luZyBhbiBvZmZzY3JlZW4gZWxlbWVudCBzaG91bGQgY2hhbmdlIHRoZSB6b29tIHNj
YWxlLgorICAgICAgICAgICAgNS4gQ2FsbGluZyAtX2ZvY3VzVGV4dElucHV0Q29udGV4dCBvbiBh
biBvZmZzY3JlZW4gZWxlbWVudCBtdWx0aXBsZSB0aW1lcworICAgICAgICAgICAgZHVyaW5nIGEg
dGV4dCBpbnRlcmFjdGlvbiBzaG91bGQgY2hhbmdlIHRoZSB6b29tIHNjYWxlLiBUaGUgcHVycG9z
ZSBvZiB0aGlzIHRlc3QgaXMKKyAgICAgICAgICAgIHRvIGVuc3VyZSB0aGF0IGxhdGVyIGNhbGxz
IHRoYXQgZG8gbm90IGZvY3VzIHRoZSBlbGVtZW50IChiZWNhdXNlIGl0IGlzIGFscmVhZHkgZm9j
dXNlZCkKKyAgICAgICAgICAgIGRvbid0IHByZXZlbnQgem9vbWluZyBmb3IgdGhlIGZpcnN0IGNh
bGwgdGhhdCBkaWQgZm9jdXMgdGhlIGVsZW1lbnQuCisgICAgICAgICAgICA2LiBGb2N1c2luZyBh
biBvZmZzY3JlZW4gZWxlbWVudCwgZGVmb2N1c2luZyBpdCwgZGlzYWJsaW5nIGl0LCBhbmQgZm9j
dXNpbmcgaXQKKyAgICAgICAgICAgIGFnYWluIGR1cmluZyBhIHRleHQgaW50ZXJhY3Rpb24gc2hv
dWxkIG5vdCBjaGFuZ2Ugem9vbSBzY2FsZS4KKyAgICAgICAgICAgIDcuIEZvY3VzaW5nIGFuIG9m
ZnNjcmVlbiBlbGVtZW50LCBkZWZvY3VzaW5nIGl0LCBhbmQgZm9jdXNpbmcgaXQgYWdhaW4gZHVy
aW5nIGEKKyAgICAgICAgICAgIHRleHQgaW50ZXJhY3Rpb24gc2hvdWxkIGNoYW5nZSB6b29tIHNj
YWxlLgorICAgICAgICAgICAgOC4gRm9jdXNpbmcgYW4gYXNzaXN0ZWQgZWxlbWVudCBkdXJpbmcg
YSB0ZXh0IGludGVyYWN0aW9uIHNob3VsZCBub3QgY2hhbmdlIHpvb20gc2NhbGUuCisgICAgICAg
ICAgICA5LiBGb2N1c2luZyBhIG5vbi1hc3Npc3RlZCBmb2N1c2VkIGVsZW1lbnQgZHVyaW5nIGEg
dGV4dCBpbnRlcmFjdGlvbiBzaG91bGQgY2hhbmdlIHpvb20gc2NhbGUuCisKKyAgICAgICAgV2hp
bGUgSSBhbSBoZXJlLCBJIGNvbnNvbGlkYXRlZCB0aGUgUkFJSSBoZWxwZXIgY2xhc3NlcyBJUGhv
bmVVc2VySW50ZXJmYWNlU3dpenpsZXIgYW5kCisgICAgICAgIElQYWRVc2VySW50ZXJmYWNlU3dp
enpsZXIgaW50byBhIHNpbmdsZSBVc2VySW50ZXJmYWNlU3dpenpsZXIgdGVtcGxhdGVkIGNsYXNz
IGFuZCBkZWZpbmVkCisgICAgICAgIHRoZSBmb3JtZXIgdHdvIGFzIHRlbXBsYXRlIGluc3RhbmNl
cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRl
eHRJbnB1dENvbnRleHQubW06CisgICAgICAgIChUZXh0SW50ZXJhY3Rpb25Gb3JTY29wZTo6VGV4
dEludGVyYWN0aW9uRm9yU2NvcGUpOgorICAgICAgICAoVGV4dEludGVyYWN0aW9uRm9yU2NvcGU6
On5UZXh0SW50ZXJhY3Rpb25Gb3JTY29wZSk6CisgICAgICAgIEFkZGVkIGNvbnZlbmllbmNlIFJB
SUkgb2JqZWN0IHRvIGNhbGwgLV93aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENv
bnRleHQKKyAgICAgICAgYW5kIC1fZGlkRmluaXNoVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRD
b250ZXh0LgorICAgICAgICAoVEVTVCk6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9pb3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvaW9zL0lQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbToKKyAgICAgICAgKElQaG9u
ZVVzZXJJbnRlcmZhY2VTd2l6emxlcjo6SVBob25lVXNlckludGVyZmFjZVN3aXp6bGVyKTogRGVs
ZXRlZDsgbW92ZWRpbnRvIFVzZXJJbnRlcmZhY2VTd2l6emxlci5oLgorICAgICAgICAoSVBob25l
VXNlckludGVyZmFjZVN3aXp6bGVyOjpwaG9uZVVzZXJJbnRlcmZhY2VJZGlvbSk6IERlbGV0ZWQ7
IG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVXNlckludGVy
ZmFjZVN3aXp6bGVyLmg6IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9JUGFk
VXNlckludGVyZmFjZVN3aXp6bGVyLmguCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVc2VySW50
ZXJmYWNlU3dpenpsZXI6OlVzZXJJbnRlcmZhY2VTd2l6emxlcik6IEZvcm1lcmx5IG5hbWVkIElQ
YWRVc2VySW50ZXJmYWNlU3dpenpsZXI7CisgICAgICAgIHJlcHVycG9zZWQgaW50byBnZW5lcmFs
IHB1cnBvc2UgdGVtcGxhdGUgY2xhc3MsIGNvbnNvbGlkYXRpbmcgY29kZSBmcm9tIFByZWZlcnJl
ZENvbnRlbnRNb2RlLm1tLgorICAgICAgICBQcml2YXRlbHkgaW5oZXJpdHMgZnJvbSBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIGluc3RlYWQgb2YgdXNpbmcgY29tcG9zaXRpb24gYXMgdGhhdCBzaW1w
bGlmaWVzCisgICAgICAgIHRoZSBzb3VyY2UgY29kZSBhIHRpbnkgYml0LgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VXNlckludGVyZmFjZVN3aXp6bGVyOjplZmZlY3RpdmVVc2VySW50ZXJmYWNl
SWRpb20pOiBSZW5hbWVkOyBmb3JtZXJseSBwYWRVc2VySW50ZXJmYWNlSWRpb20uCisKIDIwMjAt
MDQtMTYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBz
b21lIG1vcmUgdGVzdHMgZm9yIC1mb2N1c1RleHRJbnB1dENvbnRleHQ6cGxhY2VDYXJldEF0OmNv
bXBsZXRpb25IYW5kbGVyOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NjlkYzkwNGRiMTdm
MjNkNjIwODU1MjVhYzY2YzZkMTdlZmFhNTZlLi5lZTVmYjJkZmNiYTJhMDlhM2RjMzhkZDU4MzI3
MDdlNTIyNmFiZTBkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjczNyw3ICsyNzM3LDcg
QEAKIAkJRjRDRDc0QzUyMEZEQUNGNTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3luYy1zY3JpcHQu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNENENzRDNzIwRkRCNDk2MDBE
RTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdFVSTFNj
aGVtZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDRDc0QzgyMEZE
QjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVGVzdFVSTFNjaGVtZUhhbmRsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUY0Q0RBQjMzMjI0ODlGRTEwMDU3QTJEOSAvKiBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRDREFCMzMyMjQ4OUZFMTAwNTdBMkQ5IC8qIFVzZXJJbnRl
cmZhY2VTd2l6emxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlU3dpenpsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDRjMyN0YyMzY2NTUyMjAwRDNBRDA3IC8q
IEVudGVyS2V5SGludFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRW50ZXJLZXlIaW50
VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDI5ODZEMjBGRUU3Mzcw
MDkyRDYzNiAvKiBSdW5TY3JpcHRBZnRlckRvY3VtZW50TG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJ1blNjcmlwdEFmdGVyRG9jdW1lbnRMb2FkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNEQ0RjNCNDFFNEUyQkNCMDBCQjI3NjcgLyogRHJhZ0FuZERyb3BTaW11bGF0
b3JJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQW5k
RHJvcFNpbXVsYXRvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyMjks
NyArMzIyOSw3IEBACiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAogCQkJCUY0
RDRGM0I0MUU0RTJCQ0IwMEJCMjc2NyAvKiBEcmFnQW5kRHJvcFNpbXVsYXRvcklPUy5tbSAqLywK
LQkJCQlGNENEQUIzMzIyNDg5RkUxMDA1N0EyRDkgLyogSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxl
ci5oICovLAorCQkJCUY0Q0RBQjMzMjI0ODlGRTEwMDU3QTJEOSAvKiBVc2VySW50ZXJmYWNlU3dp
enpsZXIuaCAqLywKIAkJCQkyRTc3NjVDQzE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSAq
LywKIAkJCQkyRDYxRUMzMDIxQjBCNzVDMDBBN0QxQ0IgLyogUGVuY2lsS2l0VGVzdFNQSS5oICov
LAogCQkJCUY0OEQ2QzBGMjI0QjM3NzAwMEUzRTJGQiAvKiBQcmVmZXJyZWRDb250ZW50TW9kZS5t
bSAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tCmluZGV4IGRiN2UyYzYxMTBlMzE5
N2VjOGQxNTYxNThiYTQ5NWRlZGMzZTczOWMuLjU3ZmViMmJiNmY1Mzc2Yjc0MjEyNzY0NmEyNjg5
NTljN2M5MGJiOTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQpAQCAtMzIsMTIg
KzMyLDUwIEBACiAjaW1wb3J0ICJUZXN0SW5wdXREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdE5h
dmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAi
VXNlckludGVyZmFjZVN3aXp6bGVyLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1w
b3J0IDxXZWJLaXQvX1dLVGV4dElucHV0Q29udGV4dC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCitjbGFzcyBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIgeworcHVibGljOgorICAg
IElQaG9uZVVzZXJJbnRlcmZhY2VTd2l6emxlcigpCisgICAgICAgIDogbV9zd2l6emxlcihVSURl
dmljZS5jbGFzcywgQHNlbGVjdG9yKHVzZXJJbnRlcmZhY2VJZGlvbSksIHJlaW50ZXJwcmV0X2Nh
c3Q8SU1QPihwaG9uZVVzZXJJbnRlcmZhY2VJZGlvbSkpCisgICAgeworICAgIH0KKworcHJpdmF0
ZToKKyAgICBzdGF0aWMgVUlVc2VySW50ZXJmYWNlSWRpb20gcGhvbmVVc2VySW50ZXJmYWNlSWRp
b20oaWQsIFNFTCkKKyAgICB7CisgICAgICAgIHJldHVybiBVSVVzZXJJbnRlcmZhY2VJZGlvbVBo
b25lOworICAgIH0KKworICAgIEluc3RhbmNlTWV0aG9kU3dpenpsZXIgbV9zd2l6emxlcjsKK307
CisKKworY2xhc3MgVGV4dEludGVyYWN0aW9uRm9yU2NvcGUgeworcHVibGljOgorICAgIFRleHRJ
bnRlcmFjdGlvbkZvclNjb3BlKGNvbnN0IFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiYgd2ViVmll
dywgY29uc3QgUmV0YWluUHRyPF9XS1RleHRJbnB1dENvbnRleHQ+JiB0ZXh0SW5wdXRDb250ZXh0
KQorICAgICAgICA6IG1fd2ViVmlldyB7IHdlYlZpZXcgfQorICAgICAgICAsIG1fdGV4dElucHV0
Q29udGV4dCB7IHRleHRJbnB1dENvbnRleHQgfQorICAgIHsKKyAgICAgICAgW21fd2ViVmlldyBf
d2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0Om1fdGV4dElucHV0Q29u
dGV4dC5nZXQoKV07CisgICAgfQorCisgICAgflRleHRJbnRlcmFjdGlvbkZvclNjb3BlKCkKKyAg
ICB7CisgICAgICAgIFttX3dlYlZpZXcgX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElu
cHV0Q29udGV4dDptX3RleHRJbnB1dENvbnRleHQuZ2V0KCldOworICAgICAgICBbbV93ZWJWaWV3
IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
UmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IG1fd2ViVmlldzsKKyAgICBSZXRhaW5QdHI8X1dLVGV4
dElucHV0Q29udGV4dD4gbV90ZXh0SW5wdXRDb250ZXh0OworfTsKKwogQGltcGxlbWVudGF0aW9u
IFRlc3RXS1dlYlZpZXcgKFN5bmNocm9ub3VzVGV4dElucHV0Q29udGV4dCkKIAogLSAoTlNBcnJh
eTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRD
b250ZXh0c0luUmVjdDooQ0dSZWN0KXJlY3QKQEAgLTMzMyw2ICszNzEsMzQgQEAgVEVTVChSZXF1
ZXN0VGV4dElucHV0Q29udGV4dCwgQ2FyZXRTaG91bGROb3RNb3ZlSW5BbHJlYWR5Rm9jdXNlZEZp
ZWxkMikKICAgICBFWFBFQ1RfRVEoMSwgW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCJdIGludFZhbHVlXSk7
CiB9CiAKK1RFU1QoUmVxdWVzdFRleHRJbnB1dENvbnRleHQsIFBsYWNlQ2FyZXRJbk5vbkFzc2lz
dGVkRm9jdXNlZEZpZWxkKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
YXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBp
bml0XSk7CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQo
KV07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHls
ZShAIjxpbnB1dCB0eXBlPSd0ZXh0JyBpZD0naW5wdXQnIHZhbHVlPSdoZWxsbyB3b3JsZCcgc3R5
bGU9J3dpZHRoOiAxMDBweDsgaGVpZ2h0OiA1MHB4Oyc+IildOworCisgICAgLy8gVXNlIEphdmFT
Y3JpcHQgdG8gcGxhY2UgdGhlIGNhcmV0IGFmdGVyIHRoZSAnaCcgaW4gdGhlIGZpZWxkLgorICAg
IFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpb
XSAoV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tG
b2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeURpc2FsbG93OyB9XTsKKyAgICBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW5wdXQuZm9jdXMoKSJdOworICAgIEVYUEVD
VF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZSgxLCAxKSJd
OworICAgIEVYUEVDVF9FUSgxLCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQiXSBpbnRWYWx1ZV0pOwor
ICAgIEVYUEVDVF9FUSgxLCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kIl0gaW50VmFsdWVdKTsKKworICAg
IC8vIFVzZSAtZm9jdXNUZXh0SW5wdXRDb250ZXh0OiB0byBwbGFjZSB0aGUgY2FyZXQgYXQgdGhl
IGJlZ2lubmluZyBvZiB0aGUgZmllbGQ7IHRoZSBjYXJldCBzaG91bGQgbW92ZS4KKyAgICBbaW5w
dXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdL
V2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNT
dGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsgfV07CisgICAgTlNBcnJheTxfV0tUZXh0SW5w
dXRDb250ZXh0ICo+ICpjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4
dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgYm91bmRzXV07CisgICAgRVhQRUNUX0VRKDFV
TCwgY29udGV4dHMuY291bnQpOworICAgIFJldGFpblB0cjxfV0tUZXh0SW5wdXRDb250ZXh0PiBp
bnB1dEVsZW1lbnQgPSBjb250ZXh0c1swXTsKKyAgICBFWFBFQ1RfRVEoKFVJUmVzcG9uZGVyPFVJ
VGV4dElucHV0PiAqKVt3ZWJWaWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSwgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDppbnB1dEVsZW1lbnQuZ2V0KCkgcGxhY2VD
YXJldEF0OltpbnB1dEVsZW1lbnQgYm91bmRpbmdSZWN0XS5vcmlnaW5dKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIklOUFVUIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICBFWFBFQ1RfRVEoMCwgW1t3
ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVt
ZW50LnNlbGVjdGlvblN0YXJ0Il0gaW50VmFsdWVdKTsKKyAgICBFWFBFQ1RfRVEoMCwgW1t3ZWJW
aWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50
LnNlbGVjdGlvbkVuZCJdIGludFZhbHVlXSk7Cit9CisKIFRFU1QoUmVxdWVzdFRleHRJbnB1dENv
bnRleHQsIEZvY3VzVGV4dEZpZWxkVGhlblByb2dyYW1tYXRpY2FsbHlSZXBsYWNlV2l0aFRleHRB
cmVhQW5kRm9jdXNUZXh0QXJlYSkKIHsKICAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOwpAQCAtNDcxLDQgKzUzNywy
MjkgQEAgVEVTVChSZXF1ZXN0VGV4dElucHV0Q29udGV4dCwgU3dpdGNoRm9jdXNCZXR3ZWVuRnJh
bWVzKQogICAgIEVYUEVDVF9XS19TVFJFUSgiaWZyYW1lRmllbGQiLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaWZyYW1lJyku
Y29udGVudERvY3VtZW50LmFjdGl2ZUVsZW1lbnQudmFsdWUiXSk7CiB9CiAKK1RFU1QoUmVxdWVz
dFRleHRJbnB1dENvbnRleHQsIEZvY3VzaW5nQXNzaXN0ZWRFbGVtZW50U2hvdWxkTm90U2Nyb2xs
UGFnZSkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gaW5wdXRE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAg
IFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpb
XSAoV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tG
b2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0
SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShAIjxib2R5IHN0eWxlPSdoZWlnaHQ6IDQw
OTZweCc+PGRpdiBpZD0nZWRpdGFibGUnIHN0eWxlPSdwb3NpdGlvbjogZml4ZWQ7IHdpZHRoOiAx
MDAlOyBoZWlnaHQ6IDUwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsdWUnIGNvbnRlbnRlZGl0YWJs
ZT0ndHJ1ZSc+PC9kaXY+PC9ib2R5PiIpXTsKKworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29u
dGV4dCAqPiAqY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1
dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGJvdW5kc11dOworICAgIEVYUEVDVF9FUSgxVUwsIGNv
bnRleHRzLmNvdW50KTsKKworICAgIC8vIEZvY3VzIHRoZSBmaWVsZCB1c2luZyBKYXZhU2NyaXB0
IGFuZCBzY3JvbGwgdGhlIHBhZ2UuCisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5k
V2FpdEZvcklucHV0U2Vzc2lvblRvQ2hhbmdlOkAiZWRpdGFibGUuZm9jdXMoKSJdOworICAgIEVY
UEVDVF9XS19TVFJFUSgiRElWIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LnNjcm9sbFRvKDAsIDIwMDApIl07Cisg
ICAgRVhQRUNUX0VRKDIwMDAsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAid2luZG93LnNjcm9sbFkiXSBpbnRWYWx1ZV0pOworCisgICAgLy8gRm9jdXMgdGhlIGZpZWxk
IHVzaW5nIC1mb2N1c1RleHRJbnB1dENvbnRleHQ7IHBhZ2Ugc2hvdWxkIG5vdCBzY3JvbGwuCisg
ICAgUmV0YWluUHRyPF9XS1RleHRJbnB1dENvbnRleHQ+IGVkaXRhYmxlRWxlbWVudCA9IGNvbnRl
eHRzWzBdOworICAgIEVYUEVDVF9FUSgoVUlSZXNwb25kZXI8VUlUZXh0SW5wdXQ+ICopW3dlYlZp
ZXcgdGV4dElucHV0Q29udGVudFZpZXddLCBbd2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0
SW5wdXRDb250ZXh0OmVkaXRhYmxlRWxlbWVudC5nZXQoKSBwbGFjZUNhcmV0QXQ6W2VkaXRhYmxl
RWxlbWVudCBib3VuZGluZ1JlY3RdLm9yaWdpbl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiRElW
IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICBFWFBFQ1RfRVEoMjAwMCwgW1t3ZWJWaWV3IG9iamVj
dEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cuc2Nyb2xsWSJdIGludFZhbHVlXSk7Cit9
CisKK1RFU1QoUmVxdWVzdFRleHRJbnB1dENvbnRleHQsIFRleHRJbnRlcmFjdGlvbl9Gb2N1c2lu
Z1JlYWRPbmx5RWxlbWVudENoYW5nZXNab29tU2NhbGUpCit7CisgICAgSVBob25lVXNlckludGVy
ZmFjZVN3aXp6bGVyIHVzZXJJbnRlcmZhY2VTd2l6emxlcjsKKworICAgIGF1dG8gY29uZmlndXJh
dGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFw
cGx5U3R5bGUoQCI8Ym9keSBzdHlsZT0naGVpZ2h0OiA0MDk2cHgnPjxpbnB1dCBpZD0naW5wdXQn
PjwvYm9keT4iKV07CisKKyAgICBOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRl
eHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVj
dDpbd2ViVmlldyBib3VuZHNdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7
CisgICAgUmV0YWluUHRyPF9XS1RleHRJbnB1dENvbnRleHQ+IGlucHV0RWxlbWVudCA9IGNvbnRl
eHRzWzBdOworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJCT0RZIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsK
KyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW5wdXQucmVhZE9u
bHkgPSB0cnVlIl07CisgICAgW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlID0gMjsKKwor
ICAgIC8vIEZvY3VzIHRoZSBmaWVsZCB1c2luZyAtZm9jdXNUZXh0SW5wdXRDb250ZXh0OyB6b29t
IHNjYWxlIG9mIHNjcm9sbCB2aWV3IHNob3VsZCBjaGFuZ2UgdG8gcmV2ZWFsIHRoZSBmb2N1c2Vk
IGVsZW1lbnQuCisgICAgeworICAgICAgICBUZXh0SW50ZXJhY3Rpb25Gb3JTY29wZSBzY29wZSB7
IHdlYlZpZXcsIGlucHV0RWxlbWVudCB9OworICAgICAgICBFWFBFQ1RfTlVMTChbd2ViVmlldyBz
eW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0OmlucHV0RWxlbWVudC5nZXQoKSBwbGFj
ZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBib3VuZGluZ1JlY3RdLm9yaWdpbl0pOworICAgIH0KKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoIklOUFVUIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICBFWFBFQ1Rf
TFQoW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlLCAyKTsKK30KKworVEVTVChSZXF1ZXN0
VGV4dElucHV0Q29udGV4dCwgVGV4dEludGVyYWN0aW9uX0ZvY3VzaW5nRWxlbWVudENoYW5nZXNa
b29tU2NhbGUpCit7CisgICAgSVBob25lVXNlckludGVyZmFjZVN3aXp6bGVyIHVzZXJJbnRlcmZh
Y2VTd2l6emxlcjsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHRO
UyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4
MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZp
ZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8Ym9keSBzdHlsZT0n
aGVpZ2h0OiA0MDk2cHgnPjxpbnB1dCBpZD0naW5wdXQnPjwvYm9keT4iKV07CisKKyAgICBOU0Fy
cmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25v
dXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBib3VuZHNdXTsKKyAg
ICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAgUmV0YWluUHRyPF9XS1RleHRJ
bnB1dENvbnRleHQ+IGlucHV0RWxlbWVudCA9IGNvbnRleHRzWzBdOworCisgICAgRVhQRUNUX1dL
X1NUUkVRKCJCT0RZIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRv
Y3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICBbd2ViVmlldyBzY3JvbGxWaWV3
XS56b29tU2NhbGUgPSAyOworCisgICAgLy8gWm9vbSBzY2FsZSBvZiBzY3JvbGwgdmlldyBzaG91
bGQgY2hhbmdlIHRvIHJldmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50LgorICAgIHsKKyAgICAgICAg
VGV4dEludGVyYWN0aW9uRm9yU2NvcGUgc2NvcGUgeyB3ZWJWaWV3LCBpbnB1dEVsZW1lbnQgfTsK
KyAgICAgICAgRVhQRUNUX0VRKChVSVJlc3BvbmRlcjxVSVRleHRJbnB1dD4gKilbd2ViVmlldyB0
ZXh0SW5wdXRDb250ZW50Vmlld10sIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1
dENvbnRleHQ6aW5wdXRFbGVtZW50LmdldCgpIHBsYWNlQ2FyZXRBdDpbaW5wdXRFbGVtZW50IGJv
dW5kaW5nUmVjdF0ub3JpZ2luXSk7CisgICAgfQorICAgIEVYUEVDVF9XS19TVFJFUSgiSU5QVVQi
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZl
RWxlbWVudC50YWdOYW1lIl0pOworICAgIEVYUEVDVF9MVChbd2ViVmlldyBzY3JvbGxWaWV3XS56
b29tU2NhbGUsIDIpOworfQorCitURVNUKFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0LCBUZXh0SW50
ZXJhY3Rpb25fRm9jdXNpbmdFbGVtZW50TXVsdGlwbGVUaW1lc0NoYW5nZXNab29tU2NhbGUpCit7
CisgICAgSVBob25lVXNlckludGVyZmFjZVN3aXp6bGVyIHVzZXJJbnRlcmZhY2VTd2l6emxlcjsK
KworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8Ym9keSBzdHlsZT0naGVpZ2h0OiA0MDk2
cHgnPjxpbnB1dCBpZD0naW5wdXQnPjwvYm9keT4iKV07CisKKyAgICBOU0FycmF5PF9XS1RleHRJ
bnB1dENvbnRleHQgKj4gKmNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RU
ZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBib3VuZHNdXTsKKyAgICBFWFBFQ1RfRVEo
MVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAgUmV0YWluUHRyPF9XS1RleHRJbnB1dENvbnRleHQ+
IGlucHV0RWxlbWVudCA9IGNvbnRleHRzWzBdOworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJCT0RZ
IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICBbd2ViVmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUg
PSAyOworCisgICAgLy8gWm9vbSBzY2FsZSBvZiBzY3JvbGwgdmlldyBzaG91bGQgY2hhbmdlIHRv
IHJldmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50LgorICAgIHsKKyAgICAgICAgVGV4dEludGVyYWN0
aW9uRm9yU2NvcGUgc2NvcGUgeyB3ZWJWaWV3LCBpbnB1dEVsZW1lbnQgfTsKKyAgICAgICAgRVhQ
RUNUX0VRKChVSVJlc3BvbmRlcjxVSVRleHRJbnB1dD4gKilbd2ViVmlldyB0ZXh0SW5wdXRDb250
ZW50Vmlld10sIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6aW5w
dXRFbGVtZW50LmdldCgpIHBsYWNlQ2FyZXRBdDpbaW5wdXRFbGVtZW50IGJvdW5kaW5nUmVjdF0u
b3JpZ2luXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1l
Il0pOworICAgICAgICBFWFBFQ1RfRVEoKFVJUmVzcG9uZGVyPFVJVGV4dElucHV0PiAqKVt3ZWJW
aWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSwgW3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4
dElucHV0Q29udGV4dDppbnB1dEVsZW1lbnQuZ2V0KCkgcGxhY2VDYXJldEF0OltpbnB1dEVsZW1l
bnQgYm91bmRpbmdSZWN0XS5vcmlnaW5dKTsKKyAgICB9CisgICAgRVhQRUNUX1dLX1NUUkVRKCJJ
TlBVVCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5h
Y3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAgRVhQRUNUX0xUKFt3ZWJWaWV3IHNjcm9sbFZp
ZXddLnpvb21TY2FsZSwgMik7Cit9CisKK1RFU1QoUmVxdWVzdFRleHRJbnB1dENvbnRleHQsIFRl
eHRJbnRlcmFjdGlvbl9Gb2N1c0RlZm9jdXNEaXNhYmxlRm9jdXNBZ2FpblNob3VsZE5vdENoYW5n
ZVpvb21TY2FsZSkKK3sKKyAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIgdXNlckludGVy
ZmFjZVN3aXp6bGVyOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShAIjxib2R5IHN0eWxl
PSdoZWlnaHQ6IDQwOTZweCc+PGlucHV0IGlkPSdpbnB1dCc+PC9ib2R5PiIpXTsKKworICAgIE5T
QXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJv
bm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGJvdW5kc11dOwor
ICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBSZXRhaW5QdHI8X1dLVGV4
dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50ID0gY29udGV4dHNbMF07CisKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIkJPRFkiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIFt3ZWJWaWV3IHNjcm9sbFZp
ZXddLnpvb21TY2FsZSA9IDI7CisKKyAgICB7CisgICAgICAgIFRleHRJbnRlcmFjdGlvbkZvclNj
b3BlIHNjb3BlIHsgd2ViVmlldywgaW5wdXRFbGVtZW50IH07CisgICAgICAgIC8vIDEuIEZvY3Vz
CisgICAgICAgIEVYUEVDVF9FUSgoVUlSZXNwb25kZXI8VUlUZXh0SW5wdXQ+ICopW3dlYlZpZXcg
dGV4dElucHV0Q29udGVudFZpZXddLCBbd2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5w
dXRDb250ZXh0OmlucHV0RWxlbWVudC5nZXQoKSBwbGFjZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBi
b3VuZGluZ1JlY3RdLm9yaWdpbl0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIklOUFVUIiwg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQudGFnTmFtZSJdKTsKKworICAgICAgICAvLyAyLiBEZWZvY3VzCisgICAgICAgIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnB1dC5ibHVyKCkiXTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKCJCT0RZIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKworICAgICAgICAv
LyAzLiBEaXNhYmxlCisgICAgICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJpbnB1dC5kaXNhYmxlZCA9IHRydWUiXTsKKworICAgICAgICAvLyA0LiBGb2N1cyBhZ2Fp
bjsgZm9jdXNlZCBlbGVtZW50IGFuZCB6b29tIHNjYWxlIG9mIHNjcm9sbCB2aWV3IHNob3VsZCBi
ZSB1bmNoYW5nZWQuCisgICAgICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlG
b2N1c1RleHRJbnB1dENvbnRleHQ6aW5wdXRFbGVtZW50LmdldCgpIHBsYWNlQ2FyZXRBdDpbaW5w
dXRFbGVtZW50IGJvdW5kaW5nUmVjdF0ub3JpZ2luXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJF
USgiQk9EWSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVu
dC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAgfQorICAgIEVYUEVDVF9FUSgyLCBbd2Vi
VmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUpOworfQorCitURVNUKFJlcXVlc3RUZXh0SW5wdXRD
b250ZXh0LCBUZXh0SW50ZXJhY3Rpb25fRm9jdXNEZWZvY3VzRm9jdXNBZ2FpblNob3VsZENoYW5n
ZVpvb21TY2FsZSkKK3sKKyAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIgdXNlckludGVy
ZmFjZVN3aXp6bGVyOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShAIjxib2R5IHN0eWxl
PSdoZWlnaHQ6IDQwOTZweCc+PGlucHV0IGlkPSdpbnB1dCc+PC9ib2R5PiIpXTsKKworICAgIE5T
QXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJv
bm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGJvdW5kc11dOwor
ICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBSZXRhaW5QdHI8X1dLVGV4
dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50ID0gY29udGV4dHNbMF07CisKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIkJPRFkiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIFt3ZWJWaWV3IHNjcm9sbFZp
ZXddLnpvb21TY2FsZSA9IDI7CisKKyAgICB7CisgICAgICAgIFRleHRJbnRlcmFjdGlvbkZvclNj
b3BlIHNjb3BlIHsgd2ViVmlldywgaW5wdXRFbGVtZW50IH07CisgICAgICAgIC8vIDEuIEZvY3Vz
CisgICAgICAgIEVYUEVDVF9FUSgoVUlSZXNwb25kZXI8VUlUZXh0SW5wdXQ+ICopW3dlYlZpZXcg
dGV4dElucHV0Q29udGVudFZpZXddLCBbd2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5w
dXRDb250ZXh0OmlucHV0RWxlbWVudC5nZXQoKSBwbGFjZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBi
b3VuZGluZ1JlY3RdLm9yaWdpbl0pOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoIklOUFVUIiwg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQudGFnTmFtZSJdKTsKKworICAgICAgICAvLyAyLiBEZWZvY3VzCisgICAgICAgIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnB1dC5ibHVyKCkiXTsKKyAgICAg
ICAgRVhQRUNUX1dLX1NUUkVRKCJCT0RZIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKworICAgICAgICAv
LyAzLiBGb2N1cyBhZ2FpbjsgZm9jdXNlZCBlbGVtZW50IGFuZCB6b29tIHNjYWxlIG9mIHNjcm9s
bCB2aWV3IHNob3VsZCBjaGFuZ2UuCisgICAgICAgIEVYUEVDVF9FUSgoVUlSZXNwb25kZXI8VUlU
ZXh0SW5wdXQ+ICopW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddLCBbd2ViVmlldyBzeW5j
aHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0OmlucHV0RWxlbWVudC5nZXQoKSBwbGFjZUNh
cmV0QXQ6W2lucHV0RWxlbWVudCBib3VuZGluZ1JlY3RdLm9yaWdpbl0pOworICAgICAgICBFWFBF
Q1RfV0tfU1RSRVEoIklOUFVUIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICB9CisgICAgRVhQRUNU
X0xUKFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSwgMik7Cit9CisKK1RFU1QoUmVxdWVz
dFRleHRJbnB1dENvbnRleHQsIFRleHRJbnRlcmFjdGlvbl9Gb2N1c2luZ0Fzc2lzdGVkRWxlbWVu
dFNob3VsZE5vdENoYW5nZVpvb21TY2FsZSkKK3sKKyAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dp
enpsZXIgdXNlckludGVyZmFjZVN3aXp6bGVyOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRv
IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpO
U01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKKyAgICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdh
dGUgYWxsb2NdIGluaXRdKTsKKyAgICBbaW5wdXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0
U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdLV2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1l
bnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lBbGxvdzsg
fV07CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6aW5wdXREZWxlZ2F0ZS5nZXQoKV07
CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOmFwcGx5U3R5bGUoQCI8
Ym9keSBzdHlsZT0naGVpZ2h0OiA0MDk2cHgnPjxpbnB1dCBpZD0naW5wdXQnPjwvYm9keT4iKV07
CisKKyAgICBOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKmNvbnRleHRzID0gW3dlYlZp
ZXcgc3luY2hyb25vdXNseVJlcXVlc3RUZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBi
b3VuZHNdXTsKKyAgICBFWFBFQ1RfRVEoMVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAgUmV0YWlu
UHRyPF9XS1RleHRJbnB1dENvbnRleHQ+IGlucHV0RWxlbWVudCA9IGNvbnRleHRzWzBdOworCisg
ICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0QW5kV2FpdEZvcklucHV0U2Vzc2lvblRvQ2hh
bmdlOkAiaW5wdXQuZm9jdXMoKSJdOworICAgIEVYUEVDVF9XS19TVFJFUSgiSU5QVVQiLCBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dC50YWdOYW1lIl0pOworICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSA9IDI7CisK
KyAgICAvLyBGb2N1cyB0aGUgZmllbGQgdXNpbmcgLWZvY3VzVGV4dElucHV0Q29udGV4dDsgem9v
bSBzY2FsZSBvZiBzY3JvbGwgdmlldyBzaG91bGQgYmUgdW5jaGFuZ2VkLgorICAgIHsKKyAgICAg
ICAgVGV4dEludGVyYWN0aW9uRm9yU2NvcGUgc2NvcGUgeyB3ZWJWaWV3LCBpbnB1dEVsZW1lbnQg
fTsKKyAgICAgICAgRVhQRUNUX0VRKChVSVJlc3BvbmRlcjxVSVRleHRJbnB1dD4gKilbd2ViVmll
dyB0ZXh0SW5wdXRDb250ZW50Vmlld10sIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJ
bnB1dENvbnRleHQ6aW5wdXRFbGVtZW50LmdldCgpIHBsYWNlQ2FyZXRBdDpbaW5wdXRFbGVtZW50
IGJvdW5kaW5nUmVjdF0ub3JpZ2luXSk7CisgICAgfQorICAgIEVYUEVDVF9XS19TVFJFUSgiSU5Q
VVQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0
aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIEVYUEVDVF9FUSgyLCBbd2ViVmlldyBzY3JvbGxW
aWV3XS56b29tU2NhbGUpOworfQorCitURVNUKFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0LCBUZXh0
SW50ZXJhY3Rpb25fRm9jdXNpbmdOb25Bc3Npc3RlZEZvY3VzZWRFbGVtZW50Q2hhbmdlc1pvb21T
Y2FsZSkKK3sKKyAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIgdXNlckludGVyZmFjZVN3
aXp6bGVyOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
VGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwg
NjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBhdXRvIGlucHV0
RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAg
ICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShAIjxib2R5IHN0
eWxlPSdoZWlnaHQ6IDQwOTZweCc+PGlucHV0IGlkPSdpbnB1dCc+PC9ib2R5PiIpXTsKKworICAg
IE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMgPSBbd2ViVmlldyBzeW5j
aHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGJvdW5kc11d
OworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBSZXRhaW5QdHI8X1dL
VGV4dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50ID0gY29udGV4dHNbMF07CisKKyAgICBbaW5w
dXREZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6W10gKFdL
V2ViVmlldyAqLCBpZCA8X1dLRm9jdXNlZEVsZW1lbnRJbmZvPikgeyByZXR1cm4gX1dLRm9jdXNT
dGFydHNJbnB1dFNlc3Npb25Qb2xpY3lEaXNhbGxvdzsgfV07CisgICAgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlucHV0LmZvY3VzKCkiXTsgLy8gV2lsbCBub3Qgc3Rh
cnQgaW5wdXQgYXNzaXN0YW5jZQorICAgIEVYUEVDVF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50
YWdOYW1lIl0pOworICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSA9IDI7CisKKyAg
ICAvLyBGb2N1cyB0aGUgZmllbGQgdXNpbmcgLWZvY3VzVGV4dElucHV0Q29udGV4dDsgem9vbSBz
Y2FsZSBvZiBzY3JvbGwgdmlldyBzaG91bGQgY2hhbmdlIHRvIHJldmVhbCB0aGUgZm9jdXNlZCBl
bGVtZW50LgorICAgIFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9s
aWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7
IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICB7
CisgICAgICAgIFRleHRJbnRlcmFjdGlvbkZvclNjb3BlIHNjb3BlIHsgd2ViVmlldywgaW5wdXRF
bGVtZW50IH07CisgICAgICAgIC8vIFdpbGwgc3RhcnQgaW5wdXQgYXNzaXN0YW5jZQorICAgICAg
ICBFWFBFQ1RfRVEoKFVJUmVzcG9uZGVyPFVJVGV4dElucHV0PiAqKVt3ZWJWaWV3IHRleHRJbnB1
dENvbnRlbnRWaWV3XSwgW3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4
dDppbnB1dEVsZW1lbnQuZ2V0KCkgcGxhY2VDYXJldEF0OltpbnB1dEVsZW1lbnQgYm91bmRpbmdS
ZWN0XS5vcmlnaW5dKTsKKyAgICB9CisgICAgRVhQRUNUX1dLX1NUUkVRKCJJTlBVVCIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50
LnRhZ05hbWUiXSk7CisgICAgRVhQRUNUX0xUKFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2Fs
ZSwgMik7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0KaW5kZXggMGIyMTg4
ZDFmMjhhNjNlNDgzMDY5ZGE2MTJkYzJmNzRkNDM1OTk5YS4uZWNjZWVjNjExMTVmMDA0YWJkNTIz
YjA0YzFhYzQ0NjViYjA2ZDQ2ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tCkBAIC0yOSwxMiArMjksMTIgQEAKICNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCiAKICNpbXBvcnQgIkNsYXNz
TWV0aG9kU3dpenpsZXIuaCIKLSNpbXBvcnQgIklQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIuaCIK
ICNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3Q29udHJvbGxlci5oIgogI2ltcG9ydCAiVUlLaXRTUEkuaCIKKyNpbXBvcnQgIlVzZXJJbnRl
cmZhY2VTd2l6emxlci5oIgogI2ltcG9ydCA8TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVT
ZXJ2aWNlcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dLVUlEZWxlZ2F0ZVByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZy5oPgpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCmluZGV4
IDMwOTUyNzkyNzAxMzFmNzU4ZTZhYzEwYjlmYThkNjE0MGVmNjhiYTAuLmMzOWRlYzViOTUwMDU1
MmU1MDFhMjdlMzBiMWFmOGJmZTkzYmM5OGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVzdHNJT1MubW0KQEAgLTI3LDEzICsyNywx
MiBAQAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAotI2ltcG9ydCAiSVBhZFVzZXJJbnRl
cmZhY2VTd2l6emxlci5oIgotI2ltcG9ydCAiSW5zdGFuY2VNZXRob2RTd2l6emxlci5oIgogI2lt
cG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3RDb2NvYS5oIgogI2ltcG9y
dCAiVGVzdElucHV0RGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBv
cnQgIlVJS2l0U1BJLmgiCisjaW1wb3J0ICJVc2VySW50ZXJmYWNlU3dpenpsZXIuaCIKICNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXRMZWdhY3kvV2Vi
RXZlbnQuaD4KICNpbXBvcnQgPGNtYXRoPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9pb3MvSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9p
b3MvSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBiMDI1MTkzNGIwNWZmOWI3MDhkNmM2OWQ4MjZlZTA3YWQ4NmFhMWZlLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
aW9zL0lQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0KLSNpbXBvcnQgIkluc3RhbmNlTWV0aG9kU3dpenpsZXIuaCIKLSNpbXBvcnQgPFVJS2l0
L1VJS2l0Lmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotY2xhc3MgSVBhZFVzZXJJ
bnRlcmZhY2VTd2l6emxlciB7Ci1wdWJsaWM6Ci0gICAgSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxl
cigpCi0gICAgICAgIDogbV9zd2l6emxlcihbVUlEZXZpY2UgY2xhc3NdLCBAc2VsZWN0b3IodXNl
ckludGVyZmFjZUlkaW9tKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHBhZFVzZXJJbnRlcmZhY2VJ
ZGlvbSkpCi0gICAgewotICAgIH0KLXByaXZhdGU6Ci0gICAgc3RhdGljIFVJVXNlckludGVyZmFj
ZUlkaW9tIHBhZFVzZXJJbnRlcmZhY2VJZGlvbShpZCwgU0VMKQotICAgIHsKLSAgICAgICAgcmV0
dXJuIFVJVXNlckludGVyZmFjZUlkaW9tUGFkOwotICAgIH0KLSAgICBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyIG1fc3dpenpsZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCi0K
LSNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9pb3MvUHJlZmVycmVkQ29udGVudE1vZGUubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbQppbmRleCA3MGEzZjM4ZThlYTNiM2ZlMzJmMjk1
ODc2NzQwZTk5ZGM4MGZlZGM5Li5mYjYwYTZhZWIwM2JmMzU4ZGYyNmQ2YzZiYjg1NmM5ZjIxZTll
MzEzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50
TW9kZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9k
ZS5tbQpAQCAtMjcsMTAgKzI3LDEwIEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0j
aW1wb3J0ICJJUGFkVXNlckludGVyZmFjZVN3aXp6bGVyLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAi
VGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiVXNlckludGVyZmFjZVN3aXp6bGVyLmgiCiAjaW1w
b3J0IDxXZWJLaXQvV0tXZWJwYWdlUHJlZmVyZW5jZXMuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dl
YnBhZ2VQcmVmZXJlbmNlc1ByaXZhdGUuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgpAQCAt
MTY2LDIyICsxNjYsNiBAQCAtICh2b2lkKXNob3VsZENvbnRhaW5TdHJpbmdzOihOU1N0cmluZyAq
KWZpcnN0U3RyaW5nLCAuLi4KIAogQGVuZAogCi1jbGFzcyBJUGhvbmVVc2VySW50ZXJmYWNlU3dp
enpsZXIgewotcHVibGljOgotICAgIElQaG9uZVVzZXJJbnRlcmZhY2VTd2l6emxlcigpCi0gICAg
ICAgIDogbV9zd2l6emxlcihVSURldmljZS5jbGFzcywgQHNlbGVjdG9yKHVzZXJJbnRlcmZhY2VJ
ZGlvbSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihwaG9uZVVzZXJJbnRlcmZhY2VJZGlvbSkpCi0g
ICAgewotICAgIH0KLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgVUlVc2VySW50ZXJmYWNlSWRpb20g
cGhvbmVVc2VySW50ZXJmYWNlSWRpb20oaWQsIFNFTCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBV
SVVzZXJJbnRlcmZhY2VJZGlvbVBob25lOwotICAgIH0KLQotICAgIEluc3RhbmNlTWV0aG9kU3dp
enpsZXIgbV9zd2l6emxlcjsKLX07Ci0KIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAogdGVt
cGxhdGUgPHR5cGVuYW1lIFZpZXdDbGFzcz4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1VzZXJJbnRlcmZhY2VTd2l6emxlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9pb3Mv
VXNlckludGVyZmFjZVN3aXp6bGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGFkZjgxNGNiYWIwZDk3NGY0ZTAy
OGUzN2FhNzZjYzVhZjIxOGE0ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1VzZXJJbnRlcmZhY2VTd2l6emxlci5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTktMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKworI2lt
cG9ydCAiSW5zdGFuY2VNZXRob2RTd2l6emxlci5oIgorI2ltcG9ydCA8VUlLaXQvVUlLaXQuaD4K
KworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCit0ZW1wbGF0ZTxVSVVzZXJJbnRlcmZhY2VJ
ZGlvbSBpZGlvbT4KK2NsYXNzIFVzZXJJbnRlcmZhY2VTd2l6emxlciA6IHByaXZhdGUgSW5zdGFu
Y2VNZXRob2RTd2l6emxlciB7CitwdWJsaWM6CisgICAgVXNlckludGVyZmFjZVN3aXp6bGVyKCkK
KyAgICAgICAgOiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyIHsgVUlEZXZpY2UuY2xhc3MsIEBzZWxl
Y3Rvcih1c2VySW50ZXJmYWNlSWRpb20pLCByZWludGVycHJldF9jYXN0PElNUD4oZWZmZWN0aXZl
VXNlckludGVyZmFjZUlkaW9tKSB9CisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGF0
aWMgVUlVc2VySW50ZXJmYWNlSWRpb20gZWZmZWN0aXZlVXNlckludGVyZmFjZUlkaW9tKGlkLCBT
RUwpCisgICAgeworICAgICAgICByZXR1cm4gaWRpb207CisgICAgfQorfTsKKwordXNpbmcgSVBh
ZFVzZXJJbnRlcmZhY2VTd2l6emxlciA9IFVzZXJJbnRlcmZhY2VTd2l6emxlcjxVSVVzZXJJbnRl
cmZhY2VJZGlvbVBhZD47Cit1c2luZyBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIgPSBVc2Vy
SW50ZXJmYWNlU3dpenpsZXI8VUlVc2VySW50ZXJmYWNlSWRpb21QaG9uZT47CisKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397110</attachid>
            <date>2020-04-21 13:21:19 -0700</date>
            <delta_ts>2020-04-21 13:21:19 -0700</delta_ts>
            <desc>To Land</desc>
            <filename>bug-210697-20200421132118.patch</filename>
            <type>text/plain</type>
            <size>47823</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYwMDc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDU2NzNlZWM1NjQ1NzI5
MjdlNDk2ZTFkMjJkM2U5NzIyNTNhMjI4OS4uY2U0MGMwMTY2MGY4ZTMwNGE3NjI2NTg2OGMxYjM1
YTFkMDhkY2U4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIwLTA0LTIxICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSAtX2RpZEZpbmlz
aFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dCBzaG91bGQgb25seSB6b29tIHRvIHJl
dmVhbCBmb2N1c2VkIGVsZW1lbnQgaWYgaXQgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS82MDk5NzUzMD4KKworICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAg
ICAgRm9yIG5vdywgYWRkIGEgY29tbWVudCBhYm91dCB0aGUgcmV0dXJuIHZhbHVlIG9mIHNldEZv
Y3VzZWRFbGVtZW50OiBpdCByZXR1cm5zCisgICAgICAgIHdoZXRoZXIgZm9jdXMgd2FzIGJsb2Nr
ZWQuIElmIGZvY3VzZWQgd2Fzbid0IGJsb2NrZWQgdGhlbiBpdCB3aWxsIHJldHVybiB0cnVlCisg
ICAgICAgIGV2ZW4gaWYgdGhlIGVsZW1lbnQgd2Fzbid0IGFjdHVhbGx5IGZvY3VzZWQuIEZvciBl
eGFtcGxlLCBpdCB3aWxsIHJldHVybiB0cnVlCisgICAgICAgIGZvciBub24tZm9jdXNhYmxlIGVs
ZW1lbnRzOiA8aW5wdXQgZGlzYWJsZWQ+LgorCisgICAgICAgIEkgd2FzIHRlbXB0ZWQgdG8gZml4
IHNldEZvY3VzZWRFbGVtZW50KCkgdG8gcmV0dXJuIHRydWUgd2hlbiBpdCBhY3R1YWxseSBmb2N1
c2VkCisgICAgICAgIHRoZSBlbGVtZW50IG9yIGlmIHRoZSBlbGVtZW50IHdhcyBhbHJlYWR5IGZv
Y3VzZWQsIGJ1dCBJIGRlY2lkZWQgdG8gZGVmZXIgdGhpcworICAgICAgICB1bnRpbCBJIGF1ZGl0
IHRoZSBjYWxsZXJzIGFuZCBydW4gc29tZSB0ZXN0cy4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorCiAyMDE5LTA5LTEzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTdXBwb3J0IGJ1aWxkaW5nIFdlYktpdCBmb3IgTWFjIENhdGFseXN0IGZyb20gWGNv
ZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggZGJiNThhZjc0MTE1YzlkZjE3NDk3NTE3NzFjMWMyMjEwYmQxYTkwOC4u
MWRhOGRjY2JjYTc1NWRiYzNiY2RjMTllOTE4ZmIxODA1ZGJjMzRjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NiBAQAorMjAyMC0wNC0yMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+
CisKKyAgICAgICAgW2lPU10gLV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENv
bnRleHQgc2hvdWxkIG9ubHkgem9vbSB0byByZXZlYWwgZm9jdXNlZCBlbGVtZW50IGlmIGl0IGNo
YW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
MDY5NworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjA5OTc1MzA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgV2Vuc29uIEhzaWVoLiAKKworICAgICAgICBBZGQgYSBuZXcgc3RhdGUgdmFyaWFibGUg
dG8gdXNlIHRvIHRyYWNrIHdoZXRoZXIgLV9mb2N1c1RleHRJbnB1dENvbnRleHQgaW52b2tlZCBk
dXJpbmcgYQorICAgICAgICB0ZXh0IGludGVyYWN0aW9uIGFjdHVhbGx5IGZvY3VzZWQgYW4gZWxl
bWVudC4gVGhlbiBpbiAtX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4
dAorICAgICAgICBjb25kaXRpb24gbWFya2luZyB0aGUgcGFnZSB0byByZXZlYWwgdGhlIGZvY3Vz
ZWQgZWxlbWVudCBvbiB0aGlzIHN0YXRlLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9pb3Mv
V0tXZWJWaWV3UHJpdmF0ZUZvclRlc3RpbmdJT1MuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3dpbGxC
ZWdpblRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDpdKTogVHVybiBhcm91bmQgYW5k
IGNhbGwgdGhlIHNhbWUKKyAgICAgICAgZnVuY3Rpb24gb24gdGhlIGNvbnRlbnQgdmlldy4KKyAg
ICAgICAgKC1bV0tXZWJWaWV3IF9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENv
bnRleHQ6XSk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xlYW5VcEludGVyYWN0aW9uXSk6
IFJlc2V0IHN0YXRlLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaWRDb21taXRMb2FkRm9y
TWFpbkZyYW1lXSk6IERpdHRvLgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9mb2N1c1RleHRJ
bnB1dENvbnRleHQ6cGxhY2VDYXJldEF0OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBVcGRhdGUgc3Rh
dGUgdG8KKyAgICAgICAgaW5kaWNhdGUgd2hldGhlciB0aGUgZm9jdXNkIGVsZW1lbnQgZGlkIGNo
YW5nZSBvciBub3QuIEkgdXNlIGJpdHdpc2UgT1JpbmcgaW5zdGVhZCBvZiBzdHJpY3QKKyAgICAg
ICAgYXNzaWdubWVudCB0byB1cGRhdGUgaXQgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBj
YWxsZWQgbXVsdGlwbGUgdGltZXMgYnkgYW4gaW50ZXJuYWwKKyAgICAgICAgQXBwbGUgY2xpZW50
IGR1cmluZyBhIHRleHQgaW50ZXJhY3Rpb24gKGUuZy4gPHJkYXI6Ly9wcm9ibGVtLzU5NDMwODA2
PikuIEkgdGhvdWdodCBhYm91dAorICAgICAgICBtYWtpbmcgdGhpcyBhIEZJWE1FLCBidXQgdGhp
cyBmdW5jdGlvbiBpcyBvdGhlcndpc2UgY2FwYWJsZSBvZiBoYW5kbGluZyBtdWx0aXBsZSBpbnZv
Y2F0aW9ucworICAgICAgICBzbyBJIGRpZG4ndC4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
d2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0Ol0pOiBSZXNldCBhZGRl
ZCBzdGF0ZS4KKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZGlkRmluaXNoVGV4dEludGVyYWN0
aW9uSW5UZXh0SW5wdXRDb250ZXh0Ol0pOiBDaGVjayBpZiBzdGF0ZSB3YXMgc2V0IHRvCisgICAg
ICAgIGluZGljYXRlIHRoYXQgYSBmb2N1cyBjaGFuZ2UgaGFwcGVuZWQuIElmIHNvLCBkbyB3aGF0
IHdlIGRvIG5vdyArIHJlc2V0IHN0YXRlLiBPdGhlcndpc2UsCisgICAgICAgIGRvIGV2ZXJ5dGhp
bmcgd2UgZG8gbm93IGV4Y2VwdCBmb3IgbWFya2luZyB0aGUgcGFnZSBhcyBuZWVkaW5nIHRvIHJl
dmVhbCB0aGUgZm9jdXNlZCBlbGVtZW50CisgICAgICAgIG9uIHRoZSBuZXh0IGVkaXRvciBzdGF0
ZSB1cGRhdGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpmb2N1c1RleHRJbnB1dENvbnRleHRBbmRQbGFj
ZUNhcmV0KTogQ2hlY2sgdGhhdCB0aGUgdGFyZ2V0IGlzIGZvY3VzYWJsZQorICAgICAgICBiZWZv
cmUgY2FsbGluZyBGb2N1c0NvbnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KCkgYmVjYXVzZSBp
dCB1bHRpbWF0ZWx5IGNhbGxzIERvY3VtZW50OjpzZXRGb2N1c2VkRWxlbWVudCgpCisgICAgICAg
IHRoYXQgY2FuIHJldHVybiB0cnVlIGZvciBhIG5vbi1mb2N1c2FibGUgZWxlbWVudC4gSSBhZGRl
ZCBhIGNvbW1lbnQgaW4gRG9jdW1lbnQuaCB0byBleHBsYWluCisgICAgICAgIHRoaXMgc3VidGxl
dHkuIEkgYWxzbyBkZWNpZGVkIG5vdCB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIEZvY3Vz
Q29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1lbnQoKS4KKyAgICAgICAgSW5zdGVhZCBJIGFtIGNo
ZWNraW5nIHRoZSBtb3JlIGltcG9ydGFudCBjb25kaXRpb24gdGhhdCB0aGUgZm9jdXNlZCBlbGVt
ZW50IGlzIHRoZSB0YXJnZXQKKyAgICAgICAgZWxlbWVudC4gUGFzc2luZyB0cnVlIHRvIHZpc2li
bGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludCgpIHdpbGwgdWx0aW1hdGVseSBhc3NlcnQg
dGhpcworICAgICAgICB0byBiZSB0cnVlLiBOb3RlIHRoYXQgc2V0Rm9jdXNlZEVsZW1lbnQoKSBt
YXkgbm90IGhhdmUgZG9uZSBhbnl0aGluZyBhcyBtX2ZvY3VzZWRFbGVtZW50CisgICAgICAgIGNv
dWxkIGhhdmUgYWxyZWFkeSBiZWVuIGVxdWFsIHRvIHRoZSB0YXJnZXQgZWxlbWVudC4gVGhpcyBp
cyBPSyBhbmQgSSBzdGlsbCB1cGRhdGUgdGhlCisgICAgICAgIGNhcmV0IHBvc2l0aW9uLgorCiAy
MDIwLTA0LTE2ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZW1vdmUgdW51c2VkIC1fZm9jdXNUZXh0SW5wdXRDb250ZXh0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDM0ZmQwMGUxNWI4OGQ3MjJlOTVhOTliNWNjYmYwYjAwNWI3ZjgyN2UuLjc1NTM1MTJiZDAx
Zjc0NWFhNjYzZmY3ZTNmYjkzYWRkMDEwM2I3OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC03
NjEsNiArNzYxLDggQEAgcHVibGljOgogICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMg
cHJlcGFyZU1vdXNlRXZlbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBjb25zdCBMYXlvdXRQb2lu
dCYsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCiAgICAgZW51bSBjbGFzcyBGb2N1c1Jl
bW92YWxFdmVudHNNb2RlIHsgRGlzcGF0Y2gsIERvTm90RGlzcGF0Y2ggfTsKKyAgICAvLyBSZXR1
cm5zIHdoZXRoZXIgZm9jdXMgd2FzIGJsb2NrZWQuIEEgdHJ1ZSB2YWx1ZSBkb2VzIG5vdCBuZWNl
c3NhcmlseSBtZWFuIHRoZSBlbGVtZW50IHdhcyBmb2N1c2VkLgorICAgIC8vIFRoZSBlbGVtZW50
IGNvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGZvY3VzZWQgb3IgbWF5IG5vdCBiZSBmb2N1c2FibGUg
KGUuZy4gPGlucHV0IGRpc2FibGVkPikuCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZXRGb2N1
c2VkRWxlbWVudChFbGVtZW50KiwgRm9jdXNEaXJlY3Rpb24gPSBGb2N1c0RpcmVjdGlvbk5vbmUs
CiAgICAgICAgIEZvY3VzUmVtb3ZhbEV2ZW50c01vZGUgPSBGb2N1c1JlbW92YWxFdmVudHNNb2Rl
OjpEaXNwYXRjaCk7CiAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2ZvY3VzZWRFbGVtZW50LmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nSU9TLmgK
aW5kZXggMWZlZjgyODNkNzdkMWJkNDRkNzE5MDg4MTMxNmM5OTVhOWFiMmJhMy4uODY1YjcwN2Vi
NDE5YzFlYTBiOWQxYmU3ZWI2MDhiYTk2MGJhM2VmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdQcml2YXRlRm9yVGVzdGluZ0lPUy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3UHJpdmF0ZUZvclRlc3Rp
bmdJT1MuaApAQCAtNTEsNiArNTEsOCBAQAogLSAoQk9PTClfbWF5Q29udGFpbkVkaXRhYmxlRWxl
bWVudHNJblJlY3Q6KENHUmVjdClyZWN0OwogLSAodm9pZClfcmVxdWVzdFRleHRJbnB1dENvbnRl
eHRzSW5SZWN0OihDR1JlY3QpcmVjdCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNBcnJh
eTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICopKWNvbXBsZXRpb25IYW5kbGVyOwogLSAodm9pZClf
Zm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4dCBwbGFj
ZUNhcmV0QXQ6KENHUG9pbnQpcG9pbnQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFVJUmVz
cG9uZGVyPFVJVGV4dElucHV0PiAqKSljb21wbGV0aW9uSGFuZGxlcjsKKy0gKHZvaWQpX3dpbGxC
ZWdpblRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0Q29udGV4
dCAqKWNvbnRleHQ7CistICh2b2lkKV9kaWRGaW5pc2hUZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1
dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0OwogLSAodm9pZClfcmVxdWVz
dERvY3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRs
ZXI7CiAtICh2b2lkKV9hZGp1c3RTZWxlY3Rpb25XaXRoRGVsdGE6KE5TUmFuZ2UpZGVsdGFSYW5n
ZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVz
dGluZ0lPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9pb3MvV0tXZWJWaWV3VGVz
dGluZ0lPUy5tbQppbmRleCAyZTlhMWI1ZjljZDIxZmZkNDkwZWJlYTJhMDM1OGU2NmNkOGUwNjlk
Li45YzM3YjQ0ZGI0ZmUyNDBlYjcyMmQ1M2QyZWMxNTMyOGRiOTkzODVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvaW9zL1dLV2ViVmlld1Rlc3RpbmdJT1MubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2lvcy9XS1dlYlZpZXdUZXN0aW5nSU9TLm1t
CkBAIC02OCw2ICs2OCwxNiBAQCAtICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1Rl
eHRJbnB1dENvbnRleHQgKiljb250ZXh0IHBsYWNlQ2FyZXRBdDooQ0dQbwogICAgIFtfY29udGVu
dFZpZXcgX2ZvY3VzVGV4dElucHV0Q29udGV4dDpjb250ZXh0IHBsYWNlQ2FyZXRBdDphZGp1c3Rl
ZFBvaW50IGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAorLSAodm9p
ZClfd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5w
dXRDb250ZXh0ICopY29udGV4dAoreworICAgIFtfY29udGVudFZpZXcgX3dpbGxCZWdpblRleHRJ
bnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDpjb250ZXh0XTsKK30KKworLSAodm9pZClfZGlk
RmluaXNoVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250
ZXh0ICopY29udGV4dAoreworICAgIFtfY29udGVudFZpZXcgX2RpZEZpbmlzaFRleHRJbnRlcmFj
dGlvbkluVGV4dElucHV0Q29udGV4dDpjb250ZXh0XTsKK30KKwogLSAodm9pZClfcmVxdWVzdERv
Y3VtZW50Q29udGV4dDooVUlXS0RvY3VtZW50UmVxdWVzdCAqKXJlcXVlc3QgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKFVJV0tEb2N1bWVudENvbnRleHQgKikpY29tcGxldGlvbkhhbmRsZXIK
IHsKICAgICBbX2NvbnRlbnRWaWV3IHJlcXVlc3REb2N1bWVudENvbnRleHQ6cmVxdWVzdCBjb21w
bGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggZmIyZTBk
MGVlZWVmZjA2YmFiMGZjOWNkNjUyMTBkZDk3NDI0ZmJiMC4uMDFkMmY0MTY4N2RkMGVkNzIxM2Ew
Y2JkY2FjNmI1MDFmODhmZDhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApAQCAtMzUwLDYgKzM1MCw3IEBAIHN0
cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgQk9PTCBfZGlkQWNjZXNzb3J5VGFiSW5p
dGlhdGVGb2N1czsKICAgICBCT09MIF9pc0V4cGVjdGluZ0Zhc3RTaW5nbGVUYXBDb21taXQ7CiAg
ICAgQk9PTCBfc2hvd0RlYnVnVGFwSGlnaGxpZ2h0c0ZvckZhc3RDbGlja2luZzsKKyAgICBCT09M
IF90ZXh0SW50ZXJhY3Rpb25EaWRDaGFuZ2VGb2N1c2VkRWxlbWVudDsKIAogICAgIFdlYkNvcmU6
OlBvaW50ZXJJRCBtX2NvbW1pdFBvdGVudGlhbFRhcFBvaW50ZXJJZDsKIApAQCAtNTcxLDExICs1
NzIsOCBAQCBGT1JfRUFDSF9QUklWQVRFX1dLQ09OVEVOVFZJRVdfQUNUSU9OKERFQ0xBUkVfV0tD
T05URU5UVklFV19BQ1RJT05fRk9SX1dFQl9WSUVXKQogCiAtICh2b2lkKV9yZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkIChe
KShOU0FycmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKikpY29tcGxldGlvbkhhbmRsZXI7CiAt
ICh2b2lkKV9mb2N1c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250
ZXh0IHBsYWNlQ2FyZXRBdDooQ0dQb2ludClwb2ludCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoVUlSZXNwb25kZXI8VUlUZXh0SW5wdXQ+ICopKWNvbXBsZXRpb25IYW5kbGVyOwotCi0jaWYg
VVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05TKQogLSAodm9pZClfd2lsbEJlZ2luVGV4dElu
dGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICopY29udGV4
dDsKIC0gKHZvaWQpX2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDoo
X1dLVGV4dElucHV0Q29udGV4dCAqKWNvbnRleHQ7Ci0jZW5kaWYKIAogLSAodm9pZClfaGFuZGxl
QXV0b2NvcnJlY3Rpb25Db250ZXh0Oihjb25zdCBXZWJLaXQ6OldlYkF1dG9jb3JyZWN0aW9uQ29u
dGV4dCYpY29udGV4dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggMDQwNTAxOGIzNjlmYzNjN2ZkMTJj
MDY4YjE3NmQ5ODI4ZWQyMzFlZi4uNGEzOGQ2YjIxMDYyZDdhMzIxNDJhYjAwODk5Y2M5ZDcxNGJl
MWFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC05MjMsNiArOTIzLDggQEAgLSAodm9pZCljbGVhblVw
SW50ZXJhY3Rpb24KICAgICBfc2VlbkhhcmR3YXJlS2V5RG93bkluTm9uRWRpdGFibGVFbGVtZW50
ID0gTk87CiAjZW5kaWYKIAorICAgIF90ZXh0SW50ZXJhY3Rpb25EaWRDaGFuZ2VGb2N1c2VkRWxl
bWVudCA9IE5POworCiAgICAgaWYgKF9pbnRlcmFjdGlvblZpZXdzQ29udGFpbmVyVmlldykgewog
ICAgICAgICBbc2VsZi5sYXllciByZW1vdmVPYnNlcnZlcjpzZWxmIGZvcktleVBhdGg6QCJ0cmFu
c2Zvcm0iXTsKICAgICAgICAgW19pbnRlcmFjdGlvblZpZXdzQ29udGFpbmVyVmlldyByZW1vdmVG
cm9tU3VwZXJ2aWV3XTsKQEAgLTQyNTUsNiArNDI1Nyw3IEBAIC0gKHZvaWQpX2RpZENvbW1pdExv
YWRGb3JNYWluRnJhbWUKICAgICBbX3RleHRJbnRlcmFjdGlvbkFzc2lzdGFudCBhY3RpdmF0ZVNl
bGVjdGlvbl07CiAgICAgW193ZWJWaWV3IF9kaWRDb21taXRMb2FkRm9yTWFpbkZyYW1lXTsKIAor
ICAgIF90ZXh0SW50ZXJhY3Rpb25EaWRDaGFuZ2VGb2N1c2VkRWxlbWVudCA9IE5POwogICAgIF9o
YXNWYWxpZFBvc2l0aW9uSW5mb3JtYXRpb24gPSBOTzsKICAgICBfcG9zaXRpb25JbmZvcm1hdGlv
biA9IHsgfTsKIH0KQEAgLTUwOTIsNiArNTA5NSw3IEBAIC0gKEJPT0wpX2lzVGV4dElucHV0Q29u
dGV4dEZvY3VzZWQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0CiAtICh2b2lkKV9mb2N1
c1RleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQgKiljb250ZXh0IHBsYWNlQ2Fy
ZXRBdDooQ0dQb2ludClwb2ludCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoVUlSZXNwb25k
ZXI8VUlUZXh0SW5wdXQ+ICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgQVNTRVJUKGNvbnRl
eHQpOworICAgIC8vIFRoaXMgZnVuY3Rpb24gY2FuIGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBk
dXJpbmcgYSB0ZXh0IGludGVyYWN0aW9uIChlLmcuIDxyZGFyOi8vcHJvYmxlbS81OTQzMDgwNj4p
LgogICAgIGlmICghW3NlbGYgYmVjb21lRmlyc3RSZXNwb25kZXJdKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKG5pbCk7CiAgICAgICAgIHJldHVybjsKQEAgLTUxMDMsMTQgKzUxMDcsMTUg
QEAgLSAodm9pZClfZm9jdXNUZXh0SW5wdXRDb250ZXh0OihfV0tUZXh0SW5wdXRDb250ZXh0ICop
Y29udGV4dCBwbGFjZUNhcmV0QXQ6KENHUG8KICAgICBfdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9u
ID0gWUVTOwogICAgIGF1dG8gY2hlY2tGb2N1c2VkRWxlbWVudCA9IFt3ZWFrU2VsZiA9IFdlYWtP
YmpDUHRyPFdLQ29udGVudFZpZXc+IHsgc2VsZiB9LCBjb250ZXh0ID0gW2NvbnRleHQgY29weV0s
IGNvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJv
b2wgc3VjY2VzcykgewogICAgICAgICBhdXRvIHN0cm9uZ1NlbGYgPSB3ZWFrU2VsZi5nZXQoKTsK
LSAgICAgICAgaWYgKHN0cm9uZ1NlbGYpCi0gICAgICAgICAgICBzdHJvbmdTZWxmLT5fdXNpbmdH
ZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87Ci0gICAgICAgIGlmICghc3Ryb25nU2VsZiB8fCAhc3Vj
Y2VzcykgeworICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpIHsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKG5pbCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAg
Ym9vbCBmb2N1c2VkQW5kRWRpdGFibGUgPSBbc3Ryb25nU2VsZiBfaXNUZXh0SW5wdXRDb250ZXh0
Rm9jdXNlZDpjb250ZXh0XSAmJiAhc3Ryb25nU2VsZi0+X2ZvY3VzZWRFbGVtZW50SW5mb3JtYXRp
b24uaXNSZWFkT25seTsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZm9jdXNlZEFuZEVkaXRh
YmxlID8gc3Ryb25nU2VsZi5hdXRvcmVsZWFzZSgpIDogbmlsKTsKKyAgICAgICAgYm9vbCBpc0Zv
Y3VzZWQgPSBzdWNjZXNzICYmIFtzdHJvbmdTZWxmIF9pc1RleHRJbnB1dENvbnRleHRGb2N1c2Vk
OmNvbnRleHRdOworICAgICAgICBib29sIGlzRWRpdGFibGUgPSBzdWNjZXNzICYmICFzdHJvbmdT
ZWxmLT5fZm9jdXNlZEVsZW1lbnRJbmZvcm1hdGlvbi5pc1JlYWRPbmx5OworICAgICAgICBzdHJv
bmdTZWxmLT5fdGV4dEludGVyYWN0aW9uRGlkQ2hhbmdlRm9jdXNlZEVsZW1lbnQgfD0gaXNGb2N1
c2VkOworICAgICAgICBzdHJvbmdTZWxmLT5fdXNpbmdHZXN0dXJlRm9yU2VsZWN0aW9uID0gTk87
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGlzRm9jdXNlZCAmJiBpc0VkaXRhYmxlID8gc3Ry
b25nU2VsZi5nZXQoKSA6IG5pbCk7CiAgICAgfTsKICAgICBfcGFnZS0+Zm9jdXNUZXh0SW5wdXRD
b250ZXh0QW5kUGxhY2VDYXJldChjb250ZXh0Ll90ZXh0SW5wdXRDb250ZXh0LCBXZWJDb3JlOjpJ
bnRQb2ludCB7IHBvaW50IH0sIFdURk1vdmUoY2hlY2tGb2N1c2VkRWxlbWVudCkpOwogfQpAQCAt
NTEzNSwxMSArNTE0MCwxMCBAQCAtICh2b2lkKV9yZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJl
Y3Q6KENHUmVjdClyZWN0IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKQogICAgIH0pOwogfQog
Ci0jaWYgVVNFKFRFWFRfSU5URVJBQ1RJT05fQURESVRJT05TKQotCiAtICh2b2lkKV93aWxsQmVn
aW5UZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6KF9XS1RleHRJbnB1dENvbnRleHQg
Kiljb250ZXh0CiB7CiAgICAgQVNTRVJUKGNvbnRleHQpOworICAgIF90ZXh0SW50ZXJhY3Rpb25E
aWRDaGFuZ2VGb2N1c2VkRWxlbWVudCA9IE5POwogICAgIF9wYWdlLT5zZXRTaG91bGRSZXZlYWxD
dXJyZW50U2VsZWN0aW9uQWZ0ZXJJbnNlcnRpb24oZmFsc2UpOwogICAgIF9wYWdlLT5zZXRDYW5T
aG93UGxhY2Vob2xkZXIoY29udGV4dC5fdGV4dElucHV0Q29udGV4dCwgZmFsc2UpOwogICAgIFtz
ZWxmIF9zdGFydFN1cHByZXNzaW5nU2VsZWN0aW9uQXNzaXN0YW50Rm9yUmVhc29uOldlYktpdDo6
SW50ZXJhY3Rpb25Jc0hhcHBlbmluZ107CkBAIC01MTUwLDE3ICs1MTU0LDE2IEBAIC0gKHZvaWQp
X2RpZEZpbmlzaFRleHRJbnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dDooX1dLVGV4dElucHV0
Q29udGV4dCAqKWNvbnRlCiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIFtzZWxmIF9zdG9wU3Vw
cHJlc3NpbmdTZWxlY3Rpb25Bc3Npc3RhbnRGb3JSZWFzb246V2ViS2l0OjpJbnRlcmFjdGlvbklz
SGFwcGVuaW5nXTsKICAgICBfcGFnZS0+c2V0Q2FuU2hvd1BsYWNlaG9sZGVyKGNvbnRleHQuX3Rl
eHRJbnB1dENvbnRleHQsIHRydWUpOwotICAgIC8vIE1hcmsgdG8gem9vbSB0byByZXZlYWwgdGhl
IG5ld2x5IGZvY3VzZWQgZWxlbWVudCBvbiB0aGUgbmV4dCBlZGl0b3Igc3RhdGUgdXBkYXRlLgot
ICAgIC8vIFRoZW4gdGVsbCB0aGUgd2ViIHByb2Nlc3MgdG8gcmV2ZWFsIHRoZSBjdXJyZW50IHNl
bGVjdGlvbiwgd2hpY2ggd2lsbCBzZW5kIHVzICh0aGUKLSAgICAvLyBVSSBwcm9jZXNzKSBhbiBl
ZGl0b3Igc3RhdGUgdXBkYXRlLgotICAgIC8vIEZJWE1FOiBPbmx5IGRvIHRoaXMgaWYgZm9jdXMg
Y2hhbmdlZCBzaW5jZSAtd2lsbEJlZ2luVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRDb250ZXh0
IHdhcyBjYWxsZWQuCi0gICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS82MDk5NzUzMD4gZm9yIG1v
cmUgZGV0YWlscy4KLSAgICBfcGFnZS0+c2V0V2FpdGluZ0ZvclBvc3RMYXlvdXRFZGl0b3JTdGF0
ZVVwZGF0ZUFmdGVyRm9jdXNpbmdFbGVtZW50KHRydWUpOworICAgIGlmIChfdGV4dEludGVyYWN0
aW9uRGlkQ2hhbmdlRm9jdXNlZEVsZW1lbnQpIHsKKyAgICAgICAgLy8gTWFyayB0byB6b29tIHRv
IHJldmVhbCB0aGUgbmV3bHkgZm9jdXNlZCBlbGVtZW50IG9uIHRoZSBuZXh0IGVkaXRvciBzdGF0
ZSB1cGRhdGUuCisgICAgICAgIC8vIFRoZW4gdGVsbCB0aGUgd2ViIHByb2Nlc3MgdG8gcmV2ZWFs
IHRoZSBjdXJyZW50IHNlbGVjdGlvbiwgd2hpY2ggd2lsbCBzZW5kIHVzICh0aGUKKyAgICAgICAg
Ly8gVUkgcHJvY2VzcykgYW4gZWRpdG9yIHN0YXRlIHVwZGF0ZS4KKyAgICAgICAgX3BhZ2UtPnNl
dFdhaXRpbmdGb3JQb3N0TGF5b3V0RWRpdG9yU3RhdGVVcGRhdGVBZnRlckZvY3VzaW5nRWxlbWVu
dCh0cnVlKTsKKyAgICAgICAgX3RleHRJbnRlcmFjdGlvbkRpZENoYW5nZUZvY3VzZWRFbGVtZW50
ID0gTk87CisgICAgfQogICAgIF9wYWdlLT5zZXRTaG91bGRSZXZlYWxDdXJyZW50U2VsZWN0aW9u
QWZ0ZXJJbnNlcnRpb24odHJ1ZSk7CiB9CiAKLSNlbmRpZgotCiAjaWYgVVNFKFVJS0lUX0tFWUJP
QVJEX0FERElUSU9OUykKIAogLSAodm9pZCltb2RpZmllckZsYWdzRGlkQ2hhbmdlRnJvbTooVUlL
ZXlNb2RpZmllckZsYWdzKW9sZEZsYWdzIHRvOihVSUtleU1vZGlmaWVyRmxhZ3MpbmV3RmxhZ3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdl
SU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KaW5kZXggODA4NDExYTA5YjNkMDY2ZmFmOTc3OTA2ZjVkYTE3MGMxNWZlZTM4Zi4uODQ5MzJm
ZjQ3Mzk0ZGMyZmE3Mjk4ZDE0ZTAwNzc5MjRkYzE1NjY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQzMDIsMjEgKzQz
MDIsMjAgQEAgdm9pZCBXZWJQYWdlOjpmb2N1c1RleHRJbnB1dENvbnRleHRBbmRQbGFjZUNhcmV0
KGNvbnN0IEVsZW1lbnRDb250ZXh0JiBlbGVtZW50Q28KICAgICAvLyBQZXJmb3JtaW5nIGxheW91
dCBjb3VsZCBoYXZlIGNvdWxkIHRvcm4gZG93biB0aGUgZWxlbWVudCdzIHJlbmRlcmVyLiBDaGVj
ayB0aGF0IHdlIHN0aWxsCiAgICAgLy8gaGF2ZSBvbmUuIE90aGVyd2lzZSwgYmFpbCBvdXQgYXMg
dGhpcyBmdW5jdGlvbiBvbmx5IGZvY3VzZXMgZWxlbWVudHMgdGhhdCBoYXZlIGEgdmlzdWFsCiAg
ICAgLy8gcmVwcmVzZW50YXRpb24uCi0gICAgaWYgKCF0YXJnZXQtPnJlbmRlcmVyKCkpIHsKKyAg
ICBpZiAoIXRhcmdldC0+cmVuZGVyZXIoKSB8fCAhdGFyZ2V0LT5pc0ZvY3VzYWJsZSgpKSB7CiAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IgeyBQcm9jZXNzaW5n
VXNlckdlc3R1cmUsICZ0YXJnZXQtPmRvY3VtZW50KCkgfTsKICAgICBTZXRGb3JTY29wZTxib29s
PiB1c2VySXNJbnRlcmFjdGluZ0NoYW5nZSB7IG1fdXNlcklzSW50ZXJhY3RpbmcsIHRydWUgfTsK
LSAgICBib29sIGRpZEZvY3VzID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2Vk
RWxlbWVudCh0YXJnZXQuZ2V0KCksIHRhcmdldEZyYW1lKTsKKyAgICBtX3BhZ2UtPmZvY3VzQ29u
dHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KHRhcmdldC5nZXQoKSwgdGFyZ2V0RnJhbWUpOwog
CiAgICAgLy8gU2V0dGluZyB0aGUgZm9jdXNlZCBlbGVtZW50IGNvdWxkIHRlYXIgZG93biB0aGUg
ZWxlbWVudCdzIHJlbmRlcmVyLiBDaGVjayB0aGF0IHdlIHN0aWxsIGhhdmUgb25lLgotICAgIGlm
ICghZGlkRm9jdXMgfHwgIXRhcmdldC0+cmVuZGVyZXIoKSkgeworICAgIGlmIChtX2ZvY3VzZWRF
bGVtZW50ICE9IHRhcmdldCB8fCAhdGFyZ2V0LT5yZW5kZXJlcigpKSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBBU1NFUlQo
bV9mb2N1c2VkRWxlbWVudCA9PSB0YXJnZXQpOwogICAgIC8vIFRoZSBmdW5jdGlvbiB2aXNpYmxl
UG9zaXRpb25JbkZvY3VzZWROb2RlRm9yUG9pbnQgY29uc3RyYWlucyB0aGUgcG9pbnQgdG8gYmUg
aW5zaWRlCiAgICAgLy8gdGhlIGJvdW5kcyBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQuCiAgICAgYXV0
byBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkluRm9jdXNlZE5vZGVGb3JQb2ludCh0YXJnZXRG
cmFtZSwgcG9pbnQsIHRydWUgLyogaXNJbnRlcmFjdGluZ1dpdGhGb2N1c2VkRWxlbWVudCAqLyk7
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWY5
ODBiYTg0MGQwNDA4M2I4ODAzZWNlN2FiNWE2ODFlMjBjOTEzMi4uODQ4MDU2OWFiMzlmZGIwZWRi
MTRmOTcxYWQ5MDdlYjA4NDc5NTllNiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDIwLTA0LTIxICBEYW5pZWwgQmF0
ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSAtX2RpZEZpbmlzaFRleHRJ
bnRlcmFjdGlvbkluVGV4dElucHV0Q29udGV4dCBzaG91bGQgb25seSB6b29tIHRvIHJldmVhbCBm
b2N1c2VkIGVsZW1lbnQgaWYgaXQgY2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEwNjk3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDk5
NzUzMD4KKworICAgICAgICBSZXZpZXdlZCBieSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgSSB1
c2UgdGhlIHRlcm0gImFzc2lzdGVkIiBiZWxvdyBhbmQgaW4gdGhlIHRlc3RzIHRvIGRlc2NyaWJl
IGFuIGVsZW1lbnQgdGhhdCBpcyBib3RoIERPTQorICAgICAgICBmb2N1c2VkIGFuZCB0aGUgVUkg
cHJvY2VzcyBpcyBzaG93aW5nIGFuIGlucHV0IHZpZXcgKGxpa2UgdGhlIHNvZnR3YXJlIGtleWJv
YXJkKSBmb3IgaXQuCisgICAgICAgIEZvciBtYW55IG9mIHRoZSB0ZXN0cyBJIGNoZWNrIGZvciBh
IHpvb20gc2NhbGUgY2hhbmdlIGFzIGEgd2F5IHRvIGRldGVjdCBpZiB0aGUgcGFnZQorICAgICAg
ICB6b29tZWQgdG8gcmV2ZWFsIHRoZSBmb2N1c2VkIGVsZW1lbnQuCisKKyAgICAgICAgQWRkIHNv
bWUgdGVzdHMgZm9yIHRoZSBmb2xsb3dpbmcgY2FzZXM6CisgICAgICAgICAgICAxLiBQbGFjZSB0
aGUgY2FyZXQgaW4gYSBmb2N1c2VkIGZpZWxkIHRoYXQgaXNuJ3QgYmVpbmcgYXNzaXN0ZWQuCisg
ICAgICAgICAgICAyLiBGb2N1c2luZyBhbiBhc3Npc3RlZCBlbGVtZW50IHNob3VsZCBub3Qgc2Ny
b2xsIHRoZSBwYWdlLgorICAgICAgICAgICAgMy4gRm9jdXNpbmcgYW4gb2Zmc2NyZWVuIHJlYWQt
b25seSBlbGVtZW50IHNob3VsZCBub3QgY2hhbmdlIHpvb20gc2NhbGUuCisgICAgICAgICAgICA0
LiBGb2N1c2luZyBhbiBvZmZzY3JlZW4gZWxlbWVudCBzaG91bGQgY2hhbmdlIHRoZSB6b29tIHNj
YWxlLgorICAgICAgICAgICAgNS4gQ2FsbGluZyAtX2ZvY3VzVGV4dElucHV0Q29udGV4dCBvbiBh
biBvZmZzY3JlZW4gZWxlbWVudCBtdWx0aXBsZSB0aW1lcworICAgICAgICAgICAgZHVyaW5nIGEg
dGV4dCBpbnRlcmFjdGlvbiBzaG91bGQgY2hhbmdlIHRoZSB6b29tIHNjYWxlLiBUaGUgcHVycG9z
ZSBvZiB0aGlzIHRlc3QgaXMKKyAgICAgICAgICAgIHRvIGVuc3VyZSB0aGF0IGxhdGVyIGNhbGxz
IHRoYXQgZG8gbm90IGZvY3VzIHRoZSBlbGVtZW50IChiZWNhdXNlIGl0IGlzIGFscmVhZHkgZm9j
dXNlZCkKKyAgICAgICAgICAgIGRvbid0IHByZXZlbnQgem9vbWluZyBmb3IgdGhlIGZpcnN0IGNh
bGwgdGhhdCBkaWQgZm9jdXMgdGhlIGVsZW1lbnQuCisgICAgICAgICAgICA2LiBGb2N1c2luZyBh
biBvZmZzY3JlZW4gZWxlbWVudCwgZGVmb2N1c2luZyBpdCwgZGlzYWJsaW5nIGl0LCBhbmQgZm9j
dXNpbmcgaXQKKyAgICAgICAgICAgIGFnYWluIGR1cmluZyBhIHRleHQgaW50ZXJhY3Rpb24gc2hv
dWxkIG5vdCBjaGFuZ2Ugem9vbSBzY2FsZS4KKyAgICAgICAgICAgIDcuIEZvY3VzaW5nIGFuIG9m
ZnNjcmVlbiBlbGVtZW50LCBkZWZvY3VzaW5nIGl0LCBhbmQgZm9jdXNpbmcgaXQgYWdhaW4gZHVy
aW5nIGEKKyAgICAgICAgICAgIHRleHQgaW50ZXJhY3Rpb24gc2hvdWxkIGNoYW5nZSB6b29tIHNj
YWxlLgorICAgICAgICAgICAgOC4gRm9jdXNpbmcgYW4gYXNzaXN0ZWQgZWxlbWVudCBkdXJpbmcg
YSB0ZXh0IGludGVyYWN0aW9uIHNob3VsZCBub3QgY2hhbmdlIHpvb20gc2NhbGUuCisgICAgICAg
ICAgICA5LiBGb2N1c2luZyBhIG5vbi1hc3Npc3RlZCBmb2N1c2VkIGVsZW1lbnQgZHVyaW5nIGEg
dGV4dCBpbnRlcmFjdGlvbiBzaG91bGQgY2hhbmdlIHpvb20gc2NhbGUuCisKKyAgICAgICAgV2hp
bGUgSSBhbSBoZXJlLCBJIGNvbnNvbGlkYXRlZCB0aGUgUkFJSSBoZWxwZXIgY2xhc3NlcyBJUGhv
bmVVc2VySW50ZXJmYWNlU3dpenpsZXIgYW5kCisgICAgICAgIElQYWRVc2VySW50ZXJmYWNlU3dp
enpsZXIgaW50byBhIHNpbmdsZSBVc2VySW50ZXJmYWNlU3dpenpsZXIgdGVtcGxhdGVkIGNsYXNz
IGFuZCBkZWZpbmVkCisgICAgICAgIHRoZSBmb3JtZXIgdHdvIGFzIHRlbXBsYXRlIGluc3RhbmNl
cy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUmVxdWVzdFRl
eHRJbnB1dENvbnRleHQubW06CisgICAgICAgIChUZXh0SW50ZXJhY3Rpb25Gb3JTY29wZTo6VGV4
dEludGVyYWN0aW9uRm9yU2NvcGUpOgorICAgICAgICAoVGV4dEludGVyYWN0aW9uRm9yU2NvcGU6
On5UZXh0SW50ZXJhY3Rpb25Gb3JTY29wZSk6CisgICAgICAgIEFkZGVkIGNvbnZlbmllbmNlIFJB
SUkgb2JqZWN0IHRvIGNhbGwgLV93aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENv
bnRleHQKKyAgICAgICAgYW5kIC1fZGlkRmluaXNoVGV4dEludGVyYWN0aW9uSW5UZXh0SW5wdXRD
b250ZXh0LgorICAgICAgICAoVEVTVCk6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW06CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9pb3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvaW9zL0lQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbToKKyAgICAgICAgKElQaG9u
ZVVzZXJJbnRlcmZhY2VTd2l6emxlcjo6SVBob25lVXNlckludGVyZmFjZVN3aXp6bGVyKTogRGVs
ZXRlZDsgbW92ZWRpbnRvIFVzZXJJbnRlcmZhY2VTd2l6emxlci5oLgorICAgICAgICAoSVBob25l
VXNlckludGVyZmFjZVN3aXp6bGVyOjpwaG9uZVVzZXJJbnRlcmZhY2VJZGlvbSk6IERlbGV0ZWQ7
IG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9pb3MvVXNlckludGVy
ZmFjZVN3aXp6bGVyLmg6IFJlbmFtZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL2lvcy9JUGFk
VXNlckludGVyZmFjZVN3aXp6bGVyLmguCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpVc2VySW50
ZXJmYWNlU3dpenpsZXI6OlVzZXJJbnRlcmZhY2VTd2l6emxlcik6IEZvcm1lcmx5IG5hbWVkIElQ
YWRVc2VySW50ZXJmYWNlU3dpenpsZXI7CisgICAgICAgIHJlcHVycG9zZWQgaW50byBnZW5lcmFs
IHB1cnBvc2UgdGVtcGxhdGUgY2xhc3MsIGNvbnNvbGlkYXRpbmcgY29kZSBmcm9tIFByZWZlcnJl
ZENvbnRlbnRNb2RlLm1tLgorICAgICAgICBQcml2YXRlbHkgaW5oZXJpdHMgZnJvbSBJbnN0YW5j
ZU1ldGhvZFN3aXp6bGVyIGluc3RlYWQgb2YgdXNpbmcgY29tcG9zaXRpb24gYXMgdGhhdCBzaW1w
bGlmaWVzCisgICAgICAgIHRoZSBzb3VyY2UgY29kZSBhIHRpbnkgYml0LgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6VXNlckludGVyZmFjZVN3aXp6bGVyOjplZmZlY3RpdmVVc2VySW50ZXJmYWNl
SWRpb20pOiBSZW5hbWVkOyBmb3JtZXJseSBwYWRVc2VySW50ZXJmYWNlSWRpb20uCisKIDIwMjAt
MDQtMTYgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBz
b21lIG1vcmUgdGVzdHMgZm9yIC1mb2N1c1RleHRJbnB1dENvbnRleHQ6cGxhY2VDYXJldEF0OmNv
bXBsZXRpb25IYW5kbGVyOgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NjlkYzkwNGRiMTdm
MjNkNjIwODU1MjVhYzY2YzZkMTdlZmFhNTZlLi5lZDk2OGM1MWExY2NkOWJiZDA1ZDA1ZTA1MmJh
ZjU2ZDU4NTFkY2JmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjczNyw3ICsyNzM3LDcg
QEAKIAkJRjRDRDc0QzUyMEZEQUNGNTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3luYy1zY3JpcHQu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0
Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNENENzRDNzIwRkRCNDk2MDBE
RTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVzdFVSTFNj
aGVtZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDRDc0QzgyMEZE
QjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gVGVzdFVSTFNjaGVtZUhhbmRsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
Ci0JCUY0Q0RBQjMzMjI0ODlGRTEwMDU3QTJEOSAvKiBJUGFkVXNlckludGVyZmFjZVN3aXp6bGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IElQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRDREFCMzMyMjQ4OUZFMTAwNTdBMkQ5IC8qIFVzZXJJbnRl
cmZhY2VTd2l6emxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVc2VySW50ZXJmYWNlU3dpenpsZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDRjMyN0YyMzY2NTUyMjAwRDNBRDA3IC8q
IEVudGVyS2V5SGludFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRW50ZXJLZXlIaW50
VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDI5ODZEMjBGRUU3Mzcw
MDkyRDYzNiAvKiBSdW5TY3JpcHRBZnRlckRvY3VtZW50TG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFJ1blNjcmlwdEFmdGVyRG9jdW1lbnRMb2FkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNEQ0RjNCNDFFNEUyQkNCMDBCQjI3NjcgLyogRHJhZ0FuZERyb3BTaW11bGF0
b3JJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQW5k
RHJvcFNpbXVsYXRvcklPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTMyMjks
MTMgKzMyMjksMTMgQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJ
RjRENEYzQjQxRTRFMkJDQjAwQkIyNzY3IC8qIERyYWdBbmREcm9wU2ltdWxhdG9ySU9TLm1tICov
LAotCQkJCUY0Q0RBQjMzMjI0ODlGRTEwMDU3QTJEOSAvKiBJUGFkVXNlckludGVyZmFjZVN3aXp6
bGVyLmggKi8sCiAJCQkJMkU3NzY1Q0MxNkM0RDgwQTAwQkEyQkIxIC8qIG1haW5JT1MubW0gKi8s
CiAJCQkJMkQ2MUVDMzAyMUIwQjc1QzAwQTdEMUNCIC8qIFBlbmNpbEtpdFRlc3RTUEkuaCAqLywK
IAkJCQlGNDhENkMwRjIyNEIzNzcwMDBFM0UyRkIgLyogUHJlZmVycmVkQ29udGVudE1vZGUubW0g
Ki8sCiAJCQkJRjQ1MTdCNjUyMDU0QzQ5NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdDb250cm9s
bGVyLmggKi8sCiAJCQkJRjQ1MTdCNjYyMDU0QzQ5NTAwQzI2NzIxIC8qIFRlc3RXS1dlYlZpZXdD
b250cm9sbGVyLm1tICovLAogCQkJCUY0OTMyNDdDMUY0NERGOEQwMDZGNDMzNiAvKiBVSUtpdFNQ
SS5oICovLAorCQkJCUY0Q0RBQjMzMjI0ODlGRTEwMDU3QTJEOSAvKiBVc2VySW50ZXJmYWNlU3dp
enpsZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW9zOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1JlcXVlc3RUZXh0SW5wdXRDb250ZXh0Lm1tCmluZGV4IGRiN2UyYzYxMTBlMzE5
N2VjOGQxNTYxNThiYTQ5NWRlZGMzZTczOWMuLmNjZTAzZDk3MjU3NTM3OTRkMGZmMjBiYWFlMGEw
ZDNhZTdhMzNkYzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvUmVxdWVzdFRleHRJbnB1dENvbnRleHQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9SZXF1ZXN0VGV4dElucHV0Q29udGV4dC5tbQpAQCAtMzIsMTIg
KzMyLDMzIEBACiAjaW1wb3J0ICJUZXN0SW5wdXREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdE5h
dmlnYXRpb25EZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAi
VXNlckludGVyZmFjZVN3aXp6bGVyLmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1Jl
ZlByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CiAjaW1w
b3J0IDxXZWJLaXQvX1dLVGV4dElucHV0Q29udGV4dC5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgogCitjbGFzcyBUZXh0SW50ZXJhY3Rpb25Gb3JTY29wZSB7CitwdWJsaWM6CisgICAgVGV4
dEludGVyYWN0aW9uRm9yU2NvcGUoY29uc3QgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+JiB3ZWJW
aWV3LCBjb25zdCBSZXRhaW5QdHI8X1dLVGV4dElucHV0Q29udGV4dD4mIHRleHRJbnB1dENvbnRl
eHQpCisgICAgICAgIDogbV93ZWJWaWV3IHsgd2ViVmlldyB9CisgICAgICAgICwgbV90ZXh0SW5w
dXRDb250ZXh0IHsgdGV4dElucHV0Q29udGV4dCB9CisgICAgeworICAgICAgICBbbV93ZWJWaWV3
IF93aWxsQmVnaW5UZXh0SW50ZXJhY3Rpb25JblRleHRJbnB1dENvbnRleHQ6bV90ZXh0SW5wdXRD
b250ZXh0LmdldCgpXTsKKyAgICB9CisKKyAgICB+VGV4dEludGVyYWN0aW9uRm9yU2NvcGUoKQor
ICAgIHsKKyAgICAgICAgW21fd2ViVmlldyBfZGlkRmluaXNoVGV4dEludGVyYWN0aW9uSW5UZXh0
SW5wdXRDb250ZXh0Om1fdGV4dElucHV0Q29udGV4dC5nZXQoKV07CisgICAgICAgIFttX3dlYlZp
ZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIH0KKworcHJpdmF0ZToKKyAg
ICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gbV93ZWJWaWV3OworICAgIFJldGFpblB0cjxfV0tU
ZXh0SW5wdXRDb250ZXh0PiBtX3RleHRJbnB1dENvbnRleHQ7Cit9OworCiBAaW1wbGVtZW50YXRp
b24gVGVzdFdLV2ViVmlldyAoU3luY2hyb25vdXNUZXh0SW5wdXRDb250ZXh0KQogCiAtIChOU0Fy
cmF5PF9XS1RleHRJbnB1dENvbnRleHQgKj4gKilzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1
dENvbnRleHRzSW5SZWN0OihDR1JlY3QpcmVjdApAQCAtMzMzLDYgKzM1NCwzNCBAQCBURVNUKFJl
cXVlc3RUZXh0SW5wdXRDb250ZXh0LCBDYXJldFNob3VsZE5vdE1vdmVJbkFscmVhZHlGb2N1c2Vk
RmllbGQyKQogICAgIEVYUEVDVF9FUSgxLCBbW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kIl0gaW50VmFsdWVd
KTsKIH0KIAorVEVTVChSZXF1ZXN0VGV4dElucHV0Q29udGV4dCwgUGxhY2VDYXJldEluTm9uQXNz
aXN0ZWRGb2N1c2VkRmllbGQpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAg
ICBhdXRvIGlucHV0RGVsZWdhdGUgPSBhZG9wdE5TKFtbVGVzdElucHV0RGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdl
dCgpXTsKKworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0
eWxlKEAiPGlucHV0IHR5cGU9J3RleHQnIGlkPSdpbnB1dCcgdmFsdWU9J2hlbGxvIHdvcmxkJyBz
dHlsZT0nd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDUwcHg7Jz4iKV07CisKKyAgICAvLyBVc2UgSmF2
YVNjcmlwdCB0byBwbGFjZSB0aGUgY2FyZXQgYWZ0ZXIgdGhlICdoJyBpbiB0aGUgZmllbGQuCisg
ICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVy
OltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9X
S0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5RGlzYWxsb3c7IH1dOworICAgIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnB1dC5mb2N1cygpIl07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCJJTlBVVCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlucHV0LnNldFNlbGVjdGlvblJhbmdlKDEsIDEp
Il07CisgICAgRVhQRUNUX0VRKDEsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCJdIGludFZhbHVlXSk7
CisgICAgRVhQRUNUX0VRKDEsIFtbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQiXSBpbnRWYWx1ZV0pOworCisg
ICAgLy8gVXNlIC1mb2N1c1RleHRJbnB1dENvbnRleHQ6IHRvIHBsYWNlIHRoZSBjYXJldCBhdCB0
aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWVsZDsgdGhlIGNhcmV0IHNob3VsZCBtb3ZlLgorICAgIFtp
bnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAo
V0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1
c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93OyB9XTsKKyAgICBOU0FycmF5PF9XS1RleHRJ
bnB1dENvbnRleHQgKj4gKmNvbnRleHRzID0gW3dlYlZpZXcgc3luY2hyb25vdXNseVJlcXVlc3RU
ZXh0SW5wdXRDb250ZXh0c0luUmVjdDpbd2ViVmlldyBib3VuZHNdXTsKKyAgICBFWFBFQ1RfRVEo
MVVMLCBjb250ZXh0cy5jb3VudCk7CisgICAgUmV0YWluUHRyPF9XS1RleHRJbnB1dENvbnRleHQ+
IGlucHV0RWxlbWVudCA9IGNvbnRleHRzWzBdOworICAgIEVYUEVDVF9FUSgoVUlSZXNwb25kZXI8
VUlUZXh0SW5wdXQ+ICopW3dlYlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddLCBbd2ViVmlldyBz
eW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250ZXh0OmlucHV0RWxlbWVudC5nZXQoKSBwbGFj
ZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBib3VuZGluZ1JlY3RdLm9yaWdpbl0pOworICAgIEVYUEVD
VF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIEVYUEVDVF9FUSgwLCBb
W3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQuc2VsZWN0aW9uU3RhcnQiXSBpbnRWYWx1ZV0pOworICAgIEVYUEVDVF9FUSgwLCBbW3dl
YlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQuc2VsZWN0aW9uRW5kIl0gaW50VmFsdWVdKTsKK30KKwogVEVTVChSZXF1ZXN0VGV4dElucHV0
Q29udGV4dCwgRm9jdXNUZXh0RmllbGRUaGVuUHJvZ3JhbW1hdGljYWxseVJlcGxhY2VXaXRoVGV4
dEFyZWFBbmRGb2N1c1RleHRBcmVhKQogewogICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CkBAIC00NzEsNCArNTIw
LDIyOSBAQCBURVNUKFJlcXVlc3RUZXh0SW5wdXRDb250ZXh0LCBTd2l0Y2hGb2N1c0JldHdlZW5G
cmFtZXMpCiAgICAgRVhQRUNUX1dLX1NUUkVRKCJpZnJhbWVGaWVsZCIsIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpZnJhbWUn
KS5jb250ZW50RG9jdW1lbnQuYWN0aXZlRWxlbWVudC52YWx1ZSJdKTsKIH0KIAorVEVTVChSZXF1
ZXN0VGV4dElucHV0Q29udGV4dCwgRm9jdXNpbmdBc3Npc3RlZEVsZW1lbnRTaG91bGROb3RTY3Jv
bGxQYWdlKQoreworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdD
b25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAs
IDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgYXV0byBpbnB1
dERlbGVnYXRlID0gYWRvcHROUyhbW1Rlc3RJbnB1dERlbGVnYXRlIGFsbG9jXSBpbml0XSk7Cisg
ICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVy
OltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIHsgcmV0dXJuIF9X
S0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAgIFt3ZWJWaWV3IF9z
ZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGJvZHkgc3R5bGU9J2hlaWdodDog
NDA5NnB4Jz48ZGl2IGlkPSdlZGl0YWJsZScgc3R5bGU9J3Bvc2l0aW9uOiBmaXhlZDsgd2lkdGg6
IDEwMCU7IGhlaWdodDogNTBweDsgYmFja2dyb3VuZC1jb2xvcjogYmx1ZScgY29udGVudGVkaXRh
YmxlPSd0cnVlJz48L2Rpdj48L2JvZHk+IildOworCisgICAgTlNBcnJheTxfV0tUZXh0SW5wdXRD
b250ZXh0ICo+ICpjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElu
cHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgYm91bmRzXV07CisgICAgRVhQRUNUX0VRKDFVTCwg
Y29udGV4dHMuY291bnQpOworCisgICAgLy8gRm9jdXMgdGhlIGZpZWxkIHVzaW5nIEphdmFTY3Jp
cHQgYW5kIHNjcm9sbCB0aGUgcGFnZS4KKyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRB
bmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9DaGFuZ2U6QCJlZGl0YWJsZS5mb2N1cygpIl07CisgICAg
RVhQRUNUX1dLX1NUUkVRKCJESVYiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cuc2Nyb2xsVG8oMCwgMjAwMCkiXTsK
KyAgICBFWFBFQ1RfRVEoMjAwMCwgW1t3ZWJWaWV3IG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJ3aW5kb3cuc2Nyb2xsWSJdIGludFZhbHVlXSk7CisKKyAgICAvLyBGb2N1cyB0aGUgZmll
bGQgdXNpbmcgLWZvY3VzVGV4dElucHV0Q29udGV4dDsgcGFnZSBzaG91bGQgbm90IHNjcm9sbC4K
KyAgICBSZXRhaW5QdHI8X1dLVGV4dElucHV0Q29udGV4dD4gZWRpdGFibGVFbGVtZW50ID0gY29u
dGV4dHNbMF07CisgICAgRVhQRUNUX0VRKChVSVJlc3BvbmRlcjxVSVRleHRJbnB1dD4gKilbd2Vi
VmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10sIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1Rl
eHRJbnB1dENvbnRleHQ6ZWRpdGFibGVFbGVtZW50LmdldCgpIHBsYWNlQ2FyZXRBdDpbZWRpdGFi
bGVFbGVtZW50IGJvdW5kaW5nUmVjdF0ub3JpZ2luXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJE
SVYiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0
aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIEVYUEVDVF9FUSgyMDAwLCBbW3dlYlZpZXcgb2Jq
ZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIndpbmRvdy5zY3JvbGxZIl0gaW50VmFsdWVdKTsK
K30KKworVEVTVChSZXF1ZXN0VGV4dElucHV0Q29udGV4dCwgVGV4dEludGVyYWN0aW9uX0ZvY3Vz
aW5nUmVhZE9ubHlFbGVtZW50Q2hhbmdlc1pvb21TY2FsZSkKK3sKKyAgICBJUGhvbmVVc2VySW50
ZXJmYWNlU3dpenpsZXIgdXNlckludGVyZmFjZVN3aXp6bGVyOworCisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
YXBwbHlTdHlsZShAIjxib2R5IHN0eWxlPSdoZWlnaHQ6IDQwOTZweCc+PGlucHV0IGlkPSdpbnB1
dCc+PC9ib2R5PiIpXTsKKworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29u
dGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5S
ZWN0Olt3ZWJWaWV3IGJvdW5kc11dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50
KTsKKyAgICBSZXRhaW5QdHI8X1dLVGV4dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50ID0gY29u
dGV4dHNbMF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkJPRFkiLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0p
OworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnB1dC5yZWFk
T25seSA9IHRydWUiXTsKKyAgICBbd2ViVmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUgPSAyOwor
CisgICAgLy8gRm9jdXMgdGhlIGZpZWxkIHVzaW5nIC1mb2N1c1RleHRJbnB1dENvbnRleHQ7IHpv
b20gc2NhbGUgb2Ygc2Nyb2xsIHZpZXcgc2hvdWxkIGNoYW5nZSB0byByZXZlYWwgdGhlIGZvY3Vz
ZWQgZWxlbWVudC4KKyAgICB7CisgICAgICAgIFRleHRJbnRlcmFjdGlvbkZvclNjb3BlIHNjb3Bl
IHsgd2ViVmlldywgaW5wdXRFbGVtZW50IH07CisgICAgICAgIEVYUEVDVF9OVUxMKFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6aW5wdXRFbGVtZW50LmdldCgpIHBs
YWNlQ2FyZXRBdDpbaW5wdXRFbGVtZW50IGJvdW5kaW5nUmVjdF0ub3JpZ2luXSk7CisgICAgfQor
ICAgIEVYUEVDVF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIEVYUEVD
VF9MVChbd2ViVmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUsIDIpOworfQorCitURVNUKFJlcXVl
c3RUZXh0SW5wdXRDb250ZXh0LCBUZXh0SW50ZXJhY3Rpb25fRm9jdXNpbmdFbGVtZW50Q2hhbmdl
c1pvb21TY2FsZSkKK3sKKyAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIgdXNlckludGVy
ZmFjZVN3aXp6bGVyOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2Vi
Vmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAs
IDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShAIjxib2R5IHN0eWxl
PSdoZWlnaHQ6IDQwOTZweCc+PGlucHV0IGlkPSdpbnB1dCc+PC9ib2R5PiIpXTsKKworICAgIE5T
QXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJv
bm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGJvdW5kc11dOwor
ICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBSZXRhaW5QdHI8X1dLVGV4
dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50ID0gY29udGV4dHNbMF07CisKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIkJPRFkiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIFt3ZWJWaWV3IHNjcm9sbFZp
ZXddLnpvb21TY2FsZSA9IDI7CisKKyAgICAvLyBab29tIHNjYWxlIG9mIHNjcm9sbCB2aWV3IHNo
b3VsZCBjaGFuZ2UgdG8gcmV2ZWFsIHRoZSBmb2N1c2VkIGVsZW1lbnQuCisgICAgeworICAgICAg
ICBUZXh0SW50ZXJhY3Rpb25Gb3JTY29wZSBzY29wZSB7IHdlYlZpZXcsIGlucHV0RWxlbWVudCB9
OworICAgICAgICBFWFBFQ1RfRVEoKFVJUmVzcG9uZGVyPFVJVGV4dElucHV0PiAqKVt3ZWJWaWV3
IHRleHRJbnB1dENvbnRlbnRWaWV3XSwgW3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElu
cHV0Q29udGV4dDppbnB1dEVsZW1lbnQuZ2V0KCkgcGxhY2VDYXJldEF0OltpbnB1dEVsZW1lbnQg
Ym91bmRpbmdSZWN0XS5vcmlnaW5dKTsKKyAgICB9CisgICAgRVhQRUNUX1dLX1NUUkVRKCJJTlBV
VCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3Rp
dmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAgRVhQRUNUX0xUKFt3ZWJWaWV3IHNjcm9sbFZpZXdd
Lnpvb21TY2FsZSwgMik7Cit9CisKK1RFU1QoUmVxdWVzdFRleHRJbnB1dENvbnRleHQsIFRleHRJ
bnRlcmFjdGlvbl9Gb2N1c2luZ0VsZW1lbnRNdWx0aXBsZVRpbWVzQ2hhbmdlc1pvb21TY2FsZSkK
K3sKKyAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenpsZXIgdXNlckludGVyZmFjZVN3aXp6bGVy
OworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBj
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShAIjxib2R5IHN0eWxlPSdoZWlnaHQ6IDQw
OTZweCc+PGlucHV0IGlkPSdpbnB1dCc+PC9ib2R5PiIpXTsKKworICAgIE5TQXJyYXk8X1dLVGV4
dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMgPSBbd2ViVmlldyBzeW5jaHJvbm91c2x5UmVxdWVz
dFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3IGJvdW5kc11dOworICAgIEVYUEVDVF9F
USgxVUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBSZXRhaW5QdHI8X1dLVGV4dElucHV0Q29udGV4
dD4gaW5wdXRFbGVtZW50ID0gY29udGV4dHNbMF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkJP
RFkiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0
aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2Fs
ZSA9IDI7CisKKyAgICAvLyBab29tIHNjYWxlIG9mIHNjcm9sbCB2aWV3IHNob3VsZCBjaGFuZ2Ug
dG8gcmV2ZWFsIHRoZSBmb2N1c2VkIGVsZW1lbnQuCisgICAgeworICAgICAgICBUZXh0SW50ZXJh
Y3Rpb25Gb3JTY29wZSBzY29wZSB7IHdlYlZpZXcsIGlucHV0RWxlbWVudCB9OworICAgICAgICBF
WFBFQ1RfRVEoKFVJUmVzcG9uZGVyPFVJVGV4dElucHV0PiAqKVt3ZWJWaWV3IHRleHRJbnB1dENv
bnRlbnRWaWV3XSwgW3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4dElucHV0Q29udGV4dDpp
bnB1dEVsZW1lbnQuZ2V0KCkgcGxhY2VDYXJldEF0OltpbnB1dEVsZW1lbnQgYm91bmRpbmdSZWN0
XS5vcmlnaW5dKTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKCJJTlBVVCIsIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05h
bWUiXSk7CisgICAgICAgIEVYUEVDVF9FUSgoVUlSZXNwb25kZXI8VUlUZXh0SW5wdXQ+ICopW3dl
YlZpZXcgdGV4dElucHV0Q29udGVudFZpZXddLCBbd2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNU
ZXh0SW5wdXRDb250ZXh0OmlucHV0RWxlbWVudC5nZXQoKSBwbGFjZUNhcmV0QXQ6W2lucHV0RWxl
bWVudCBib3VuZGluZ1JlY3RdLm9yaWdpbl0pOworICAgIH0KKyAgICBFWFBFQ1RfV0tfU1RSRVEo
IklOUFVUIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICBFWFBFQ1RfTFQoW3dlYlZpZXcgc2Nyb2xs
Vmlld10uem9vbVNjYWxlLCAyKTsKK30KKworVEVTVChSZXF1ZXN0VGV4dElucHV0Q29udGV4dCwg
VGV4dEludGVyYWN0aW9uX0ZvY3VzRGVmb2N1c0Rpc2FibGVGb2N1c0FnYWluU2hvdWxkTm90Q2hh
bmdlWm9vbVNjYWxlKQoreworICAgIElQaG9uZVVzZXJJbnRlcmZhY2VTd2l6emxlciB1c2VySW50
ZXJmYWNlU3dpenpsZXI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGJvZHkgc3R5
bGU9J2hlaWdodDogNDA5NnB4Jz48aW5wdXQgaWQ9J2lucHV0Jz48L2JvZHk+IildOworCisgICAg
TlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgYm91bmRzXV07
CisgICAgRVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworICAgIFJldGFpblB0cjxfV0tU
ZXh0SW5wdXRDb250ZXh0PiBpbnB1dEVsZW1lbnQgPSBjb250ZXh0c1swXTsKKworICAgIEVYUEVD
VF9XS19TVFJFUSgiQk9EWSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAgW3dlYlZpZXcgc2Nyb2xs
Vmlld10uem9vbVNjYWxlID0gMjsKKworICAgIHsKKyAgICAgICAgVGV4dEludGVyYWN0aW9uRm9y
U2NvcGUgc2NvcGUgeyB3ZWJWaWV3LCBpbnB1dEVsZW1lbnQgfTsKKyAgICAgICAgLy8gMS4gRm9j
dXMKKyAgICAgICAgRVhQRUNUX0VRKChVSVJlc3BvbmRlcjxVSVRleHRJbnB1dD4gKilbd2ViVmll
dyB0ZXh0SW5wdXRDb250ZW50Vmlld10sIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJ
bnB1dENvbnRleHQ6aW5wdXRFbGVtZW50LmdldCgpIHBsYWNlQ2FyZXRBdDpbaW5wdXRFbGVtZW50
IGJvdW5kaW5nUmVjdF0ub3JpZ2luXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiSU5QVVQi
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZl
RWxlbWVudC50YWdOYW1lIl0pOworCisgICAgICAgIC8vIDIuIERlZm9jdXMKKyAgICAgICAgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlucHV0LmJsdXIoKSJdOworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoIkJPRFkiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworCisgICAgICAg
IC8vIDMuIERpc2FibGUKKyAgICAgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImlucHV0LmRpc2FibGVkID0gdHJ1ZSJdOworCisgICAgICAgIC8vIDQuIEZvY3VzIGFn
YWluOyBmb2N1c2VkIGVsZW1lbnQgYW5kIHpvb20gc2NhbGUgb2Ygc2Nyb2xsIHZpZXcgc2hvdWxk
IGJlIHVuY2hhbmdlZC4KKyAgICAgICAgRVhQRUNUX05VTEwoW3dlYlZpZXcgc3luY2hyb25vdXNs
eUZvY3VzVGV4dElucHV0Q29udGV4dDppbnB1dEVsZW1lbnQuZ2V0KCkgcGxhY2VDYXJldEF0Oltp
bnB1dEVsZW1lbnQgYm91bmRpbmdSZWN0XS5vcmlnaW5dKTsKKyAgICAgICAgRVhQRUNUX1dLX1NU
UkVRKCJCT0RZIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3Vt
ZW50LmFjdGl2ZUVsZW1lbnQudGFnTmFtZSJdKTsKKyAgICB9CisgICAgRVhQRUNUX0VRKDIsIFt3
ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSk7Cit9CisKK1RFU1QoUmVxdWVzdFRleHRJbnB1
dENvbnRleHQsIFRleHRJbnRlcmFjdGlvbl9Gb2N1c0RlZm9jdXNGb2N1c0FnYWluU2hvdWxkQ2hh
bmdlWm9vbVNjYWxlKQoreworICAgIElQaG9uZVVzZXJJbnRlcmZhY2VTd2l6emxlciB1c2VySW50
ZXJmYWNlU3dpenpsZXI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwg
MCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3
ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGJvZHkgc3R5
bGU9J2hlaWdodDogNDA5NnB4Jz48aW5wdXQgaWQ9J2lucHV0Jz48L2JvZHk+IildOworCisgICAg
TlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250ZXh0cyA9IFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgYm91bmRzXV07
CisgICAgRVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworICAgIFJldGFpblB0cjxfV0tU
ZXh0SW5wdXRDb250ZXh0PiBpbnB1dEVsZW1lbnQgPSBjb250ZXh0c1swXTsKKworICAgIEVYUEVD
VF9XS19TVFJFUSgiQk9EWSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAgW3dlYlZpZXcgc2Nyb2xs
Vmlld10uem9vbVNjYWxlID0gMjsKKworICAgIHsKKyAgICAgICAgVGV4dEludGVyYWN0aW9uRm9y
U2NvcGUgc2NvcGUgeyB3ZWJWaWV3LCBpbnB1dEVsZW1lbnQgfTsKKyAgICAgICAgLy8gMS4gRm9j
dXMKKyAgICAgICAgRVhQRUNUX0VRKChVSVJlc3BvbmRlcjxVSVRleHRJbnB1dD4gKilbd2ViVmll
dyB0ZXh0SW5wdXRDb250ZW50Vmlld10sIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlGb2N1c1RleHRJ
bnB1dENvbnRleHQ6aW5wdXRFbGVtZW50LmdldCgpIHBsYWNlQ2FyZXRBdDpbaW5wdXRFbGVtZW50
IGJvdW5kaW5nUmVjdF0ub3JpZ2luXSk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUSgiSU5QVVQi
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZl
RWxlbWVudC50YWdOYW1lIl0pOworCisgICAgICAgIC8vIDIuIERlZm9jdXMKKyAgICAgICAgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlucHV0LmJsdXIoKSJdOworICAg
ICAgICBFWFBFQ1RfV0tfU1RSRVEoIkJPRFkiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworCisgICAgICAg
IC8vIDMuIEZvY3VzIGFnYWluOyBmb2N1c2VkIGVsZW1lbnQgYW5kIHpvb20gc2NhbGUgb2Ygc2Ny
b2xsIHZpZXcgc2hvdWxkIGNoYW5nZS4KKyAgICAgICAgRVhQRUNUX0VRKChVSVJlc3BvbmRlcjxV
SVRleHRJbnB1dD4gKilbd2ViVmlldyB0ZXh0SW5wdXRDb250ZW50Vmlld10sIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlGb2N1c1RleHRJbnB1dENvbnRleHQ6aW5wdXRFbGVtZW50LmdldCgpIHBsYWNl
Q2FyZXRBdDpbaW5wdXRFbGVtZW50IGJvdW5kaW5nUmVjdF0ub3JpZ2luXSk7CisgICAgICAgIEVY
UEVDVF9XS19TVFJFUSgiSU5QVVQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZG9jdW1lbnQuYWN0aXZlRWxlbWVudC50YWdOYW1lIl0pOworICAgIH0KKyAgICBFWFBF
Q1RfTFQoW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlLCAyKTsKK30KKworVEVTVChSZXF1
ZXN0VGV4dElucHV0Q29udGV4dCwgVGV4dEludGVyYWN0aW9uX0ZvY3VzaW5nQXNzaXN0ZWRFbGVt
ZW50U2hvdWxkTm90Q2hhbmdlWm9vbVNjYWxlKQoreworICAgIElQaG9uZVVzZXJJbnRlcmZhY2VT
d2l6emxlciB1c2VySW50ZXJmYWNlU3dpenpsZXI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24g
PSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKV0pOworICAgIGF1dG8gaW5wdXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxl
Z2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFtpbnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5w
dXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAoV0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxl
bWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFsbG93
OyB9XTsKKyAgICBbd2ViVmlldyBfc2V0SW5wdXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgp
XTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6YXBwbHlTdHlsZShA
Ijxib2R5IHN0eWxlPSdoZWlnaHQ6IDQwOTZweCc+PGlucHV0IGlkPSdpbnB1dCc+PC9ib2R5PiIp
XTsKKworICAgIE5TQXJyYXk8X1dLVGV4dElucHV0Q29udGV4dCAqPiAqY29udGV4dHMgPSBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5UmVxdWVzdFRleHRJbnB1dENvbnRleHRzSW5SZWN0Olt3ZWJWaWV3
IGJvdW5kc11dOworICAgIEVYUEVDVF9FUSgxVUwsIGNvbnRleHRzLmNvdW50KTsKKyAgICBSZXRh
aW5QdHI8X1dLVGV4dElucHV0Q29udGV4dD4gaW5wdXRFbGVtZW50ID0gY29udGV4dHNbMF07CisK
KyAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHRBbmRXYWl0Rm9ySW5wdXRTZXNzaW9uVG9D
aGFuZ2U6QCJpbnB1dC5mb2N1cygpIl07CisgICAgRVhQRUNUX1dLX1NUUkVRKCJJTlBVVCIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVt
ZW50LnRhZ05hbWUiXSk7CisgICAgW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlID0gMjsK
KworICAgIC8vIEZvY3VzIHRoZSBmaWVsZCB1c2luZyAtZm9jdXNUZXh0SW5wdXRDb250ZXh0OyB6
b29tIHNjYWxlIG9mIHNjcm9sbCB2aWV3IHNob3VsZCBiZSB1bmNoYW5nZWQuCisgICAgeworICAg
ICAgICBUZXh0SW50ZXJhY3Rpb25Gb3JTY29wZSBzY29wZSB7IHdlYlZpZXcsIGlucHV0RWxlbWVu
dCB9OworICAgICAgICBFWFBFQ1RfRVEoKFVJUmVzcG9uZGVyPFVJVGV4dElucHV0PiAqKVt3ZWJW
aWV3IHRleHRJbnB1dENvbnRlbnRWaWV3XSwgW3dlYlZpZXcgc3luY2hyb25vdXNseUZvY3VzVGV4
dElucHV0Q29udGV4dDppbnB1dEVsZW1lbnQuZ2V0KCkgcGxhY2VDYXJldEF0OltpbnB1dEVsZW1l
bnQgYm91bmRpbmdSZWN0XS5vcmlnaW5dKTsKKyAgICB9CisgICAgRVhQRUNUX1dLX1NUUkVRKCJJ
TlBVVCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5h
Y3RpdmVFbGVtZW50LnRhZ05hbWUiXSk7CisgICAgRVhQRUNUX0VRKDIsIFt3ZWJWaWV3IHNjcm9s
bFZpZXddLnpvb21TY2FsZSk7Cit9CisKK1RFU1QoUmVxdWVzdFRleHRJbnB1dENvbnRleHQsIFRl
eHRJbnRlcmFjdGlvbl9Gb2N1c2luZ05vbkFzc2lzdGVkRm9jdXNlZEVsZW1lbnRDaGFuZ2VzWm9v
bVNjYWxlKQoreworICAgIElQaG9uZVVzZXJJbnRlcmZhY2VTd2l6emxlciB1c2VySW50ZXJmYWNl
U3dpenpsZXI7CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGF1dG8gaW5w
dXREZWxlZ2F0ZSA9IGFkb3B0TlMoW1tUZXN0SW5wdXREZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOwor
ICAgIFt3ZWJWaWV3IF9zZXRJbnB1dERlbGVnYXRlOmlucHV0RGVsZWdhdGUuZ2V0KCldOworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzphcHBseVN0eWxlKEAiPGJvZHkg
c3R5bGU9J2hlaWdodDogNDA5NnB4Jz48aW5wdXQgaWQ9J2lucHV0Jz48L2JvZHk+IildOworCisg
ICAgTlNBcnJheTxfV0tUZXh0SW5wdXRDb250ZXh0ICo+ICpjb250ZXh0cyA9IFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlSZXF1ZXN0VGV4dElucHV0Q29udGV4dHNJblJlY3Q6W3dlYlZpZXcgYm91bmRz
XV07CisgICAgRVhQRUNUX0VRKDFVTCwgY29udGV4dHMuY291bnQpOworICAgIFJldGFpblB0cjxf
V0tUZXh0SW5wdXRDb250ZXh0PiBpbnB1dEVsZW1lbnQgPSBjb250ZXh0c1swXTsKKworICAgIFtp
bnB1dERlbGVnYXRlIHNldEZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5SGFuZGxlcjpbXSAo
V0tXZWJWaWV3ICosIGlkIDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSB7IHJldHVybiBfV0tGb2N1
c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeURpc2FsbG93OyB9XTsKKyAgICBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaW5wdXQuZm9jdXMoKSJdOyAvLyBXaWxsIG5vdCBz
dGFydCBpbnB1dCBhc3Npc3RhbmNlCisgICAgRVhQRUNUX1dLX1NUUkVRKCJJTlBVVCIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5hY3RpdmVFbGVtZW50
LnRhZ05hbWUiXSk7CisgICAgW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlID0gMjsKKwor
ICAgIC8vIEZvY3VzIHRoZSBmaWVsZCB1c2luZyAtZm9jdXNUZXh0SW5wdXRDb250ZXh0OyB6b29t
IHNjYWxlIG9mIHNjcm9sbCB2aWV3IHNob3VsZCBjaGFuZ2UgdG8gcmV2ZWFsIHRoZSBmb2N1c2Vk
IGVsZW1lbnQuCisgICAgW2lucHV0RGVsZWdhdGUgc2V0Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Q
b2xpY3lIYW5kbGVyOltdIChXS1dlYlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4p
IHsgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNzaW9uUG9saWN5QWxsb3c7IH1dOworICAg
IHsKKyAgICAgICAgVGV4dEludGVyYWN0aW9uRm9yU2NvcGUgc2NvcGUgeyB3ZWJWaWV3LCBpbnB1
dEVsZW1lbnQgfTsKKyAgICAgICAgLy8gV2lsbCBzdGFydCBpbnB1dCBhc3Npc3RhbmNlCisgICAg
ICAgIEVYUEVDVF9FUSgoVUlSZXNwb25kZXI8VUlUZXh0SW5wdXQ+ICopW3dlYlZpZXcgdGV4dElu
cHV0Q29udGVudFZpZXddLCBbd2ViVmlldyBzeW5jaHJvbm91c2x5Rm9jdXNUZXh0SW5wdXRDb250
ZXh0OmlucHV0RWxlbWVudC5nZXQoKSBwbGFjZUNhcmV0QXQ6W2lucHV0RWxlbWVudCBib3VuZGlu
Z1JlY3RdLm9yaWdpbl0pOworICAgIH0KKyAgICBFWFBFQ1RfV0tfU1RSRVEoIklOUFVUIiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQudGFnTmFtZSJdKTsKKyAgICBFWFBFQ1RfTFQoW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNj
YWxlLCAyKTsKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvQWN0aW9uU2hlZXRUZXN0cy5tbQppbmRleCAwYjIx
ODhkMWYyOGE2M2U0ODMwNjlkYTYxMmRjMmY3NGQ0MzU5OTlhLi5lY2NlZWM2MTExNWYwMDRhYmQ1
MjNiMDRjMWFjNDQ2NWJiMDZkNDZkIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9BY3Rpb25TaGVldFRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0FjdGlvblNoZWV0VGVzdHMubW0KQEAgLTI5LDEyICsyOSwxMiBAQAogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKIAogI2ltcG9ydCAiQ2xh
c3NNZXRob2RTd2l6emxlci5oIgotI2ltcG9ydCAiSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlci5o
IgogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgIlRlc3RXS1dl
YlZpZXdDb250cm9sbGVyLmgiCiAjaW1wb3J0ICJVSUtpdFNQSS5oIgorI2ltcG9ydCAiVXNlcklu
dGVyZmFjZVN3aXp6bGVyLmgiCiAjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29y
ZVNlcnZpY2VzLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tVSURlbGVnYXRlUHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGVGb3JUZXN0aW5nLmg+CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVzdHNJT1MubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9LZXlib2FyZElucHV0VGVzdHNJT1MubW0KaW5k
ZXggMzA5NTI3OTI3MDEzMWY3NThlNmFjMTBiOWZhOGQ2MTQwZWY2OGJhMC4uYzM5ZGVjNWI5NTAw
NTUyZTUwMWEyN2UzMGIxYWY4YmZlOTNiYzk4YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9pb3MvS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL0tleWJvYXJkSW5wdXRUZXN0c0lPUy5tbQpAQCAtMjcsMTMgKzI3
LDEyIEBACiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogCi0jaW1wb3J0ICJJUGFkVXNlcklu
dGVyZmFjZVN3aXp6bGVyLmgiCi0jaW1wb3J0ICJJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmgiCiAj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAiVGVzdENvY29hLmgiCiAjaW1w
b3J0ICJUZXN0SW5wdXREZWxlZ2F0ZS5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2lt
cG9ydCAiVUlLaXRTUEkuaCIKKyNpbXBvcnQgIlVzZXJJbnRlcmZhY2VTd2l6emxlci5oIgogI2lt
cG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdExlZ2FjeS9X
ZWJFdmVudC5oPgogI2ltcG9ydCA8Y21hdGg+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2lvcy9JUGFkVXNlckludGVyZmFjZVN3aXp6bGVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2lvcy9JUGFkVXNlckludGVyZmFjZVN3aXp6bGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGIwMjUxOTM0YjA1ZmY5YjcwOGQ2YzY5ZDgyNmVlMDdhZDg2YWExZmUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9pb3MvSVBhZFVzZXJJbnRlcmZhY2VTd2l6emxlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTEg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKLQotI2ltcG9ydCAiSW5zdGFuY2VNZXRob2RTd2l6emxlci5oIgotI2ltcG9ydCA8VUlL
aXQvVUlLaXQuaD4KLQotbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewotCi1jbGFzcyBJUGFkVXNl
ckludGVyZmFjZVN3aXp6bGVyIHsKLXB1YmxpYzoKLSAgICBJUGFkVXNlckludGVyZmFjZVN3aXp6
bGVyKCkKLSAgICAgICAgOiBtX3N3aXp6bGVyKFtVSURldmljZSBjbGFzc10sIEBzZWxlY3Rvcih1
c2VySW50ZXJmYWNlSWRpb20pLCByZWludGVycHJldF9jYXN0PElNUD4ocGFkVXNlckludGVyZmFj
ZUlkaW9tKSkKLSAgICB7Ci0gICAgfQotcHJpdmF0ZToKLSAgICBzdGF0aWMgVUlVc2VySW50ZXJm
YWNlSWRpb20gcGFkVXNlckludGVyZmFjZUlkaW9tKGlkLCBTRUwpCi0gICAgewotICAgICAgICBy
ZXR1cm4gVUlVc2VySW50ZXJmYWNlSWRpb21QYWQ7Ci0gICAgfQotICAgIEluc3RhbmNlTWV0aG9k
U3dpenpsZXIgbV9zd2l6emxlcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
LQotI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2lvcy9QcmVmZXJyZWRDb250ZW50TW9kZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvaW9zL1ByZWZlcnJlZENvbnRlbnRNb2RlLm1tCmluZGV4IDcwYTNmMzhlOGVhM2IzZmUzMmYy
OTU4NzY3NDBlOTlkYzgwZmVkYzkuLmZiNjBhNmFlYjAzYmYzNThkZjI2ZDZjNmJiODU2YzlmMjFl
OWUzMTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRl
bnRNb2RlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvaW9zL1ByZWZlcnJlZENvbnRlbnRN
b2RlLm1tCkBAIC0yNywxMCArMjcsMTAgQEAKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAK
LSNpbXBvcnQgIklQYWRVc2VySW50ZXJmYWNlU3dpenpsZXIuaCIKICNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCiAjaW1wb3J0
ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJVc2VySW50ZXJmYWNlU3dpenpsZXIuaCIKICNp
bXBvcnQgPFdlYktpdC9XS1dlYnBhZ2VQcmVmZXJlbmNlcy5oPgogI2ltcG9ydCA8V2ViS2l0L1dL
V2VicGFnZVByZWZlcmVuY2VzUHJpdmF0ZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CkBA
IC0xNjYsMjIgKzE2Niw2IEBAIC0gKHZvaWQpc2hvdWxkQ29udGFpblN0cmluZ3M6KE5TU3RyaW5n
ICopZmlyc3RTdHJpbmcsIC4uLgogCiBAZW5kCiAKLWNsYXNzIElQaG9uZVVzZXJJbnRlcmZhY2VT
d2l6emxlciB7Ci1wdWJsaWM6Ci0gICAgSVBob25lVXNlckludGVyZmFjZVN3aXp6bGVyKCkKLSAg
ICAgICAgOiBtX3N3aXp6bGVyKFVJRGV2aWNlLmNsYXNzLCBAc2VsZWN0b3IodXNlckludGVyZmFj
ZUlkaW9tKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KHBob25lVXNlckludGVyZmFjZUlkaW9tKSkK
LSAgICB7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHN0YXRpYyBVSVVzZXJJbnRlcmZhY2VJZGlv
bSBwaG9uZVVzZXJJbnRlcmZhY2VJZGlvbShpZCwgU0VMKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IFVJVXNlckludGVyZmFjZUlkaW9tUGhvbmU7Ci0gICAgfQotCi0gICAgSW5zdGFuY2VNZXRob2RT
d2l6emxlciBtX3N3aXp6bGVyOwotfTsKLQogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVmlld0NsYXNzPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvVXNlckludGVyZmFjZVN3aXp6bGVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2lv
cy9Vc2VySW50ZXJmYWNlU3dpenpsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YWRmODE0Y2JhYjBkOTc0ZjRl
MDI4ZTM3YWE3NmNjNWFmMjE4YTRmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9pb3MvVXNlckludGVyZmFjZVN3aXp6bGVyLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxOS0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisj
aW1wb3J0ICJJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmgiCisjaW1wb3J0IDxVSUtpdC9VSUtpdC5o
PgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3RlbXBsYXRlPFVJVXNlckludGVyZmFj
ZUlkaW9tIGlkaW9tPgorY2xhc3MgVXNlckludGVyZmFjZVN3aXp6bGVyIDogcHJpdmF0ZSBJbnN0
YW5jZU1ldGhvZFN3aXp6bGVyIHsKK3B1YmxpYzoKKyAgICBVc2VySW50ZXJmYWNlU3dpenpsZXIo
KQorICAgICAgICA6IEluc3RhbmNlTWV0aG9kU3dpenpsZXIgeyBVSURldmljZS5jbGFzcywgQHNl
bGVjdG9yKHVzZXJJbnRlcmZhY2VJZGlvbSksIHJlaW50ZXJwcmV0X2Nhc3Q8SU1QPihlZmZlY3Rp
dmVVc2VySW50ZXJmYWNlSWRpb20pIH0KKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIHN0
YXRpYyBVSVVzZXJJbnRlcmZhY2VJZGlvbSBlZmZlY3RpdmVVc2VySW50ZXJmYWNlSWRpb20oaWQs
IFNFTCkKKyAgICB7CisgICAgICAgIHJldHVybiBpZGlvbTsKKyAgICB9Cit9OworCit1c2luZyBJ
UGFkVXNlckludGVyZmFjZVN3aXp6bGVyID0gVXNlckludGVyZmFjZVN3aXp6bGVyPFVJVXNlcklu
dGVyZmFjZUlkaW9tUGFkPjsKK3VzaW5nIElQaG9uZVVzZXJJbnRlcmZhY2VTd2l6emxlciA9IFVz
ZXJJbnRlcmZhY2VTd2l6emxlcjxVSVVzZXJJbnRlcmZhY2VJZGlvbVBob25lPjsKKworfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>