<?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>201549</bug_id>
          
          <creation_ts>2019-09-06 10:57:29 -0700</creation_ts>
          <short_desc>Incorrect selection rect revealed after pasting images in a contenteditable element</short_desc>
          <delta_ts>2019-09-06 20:06:27 -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>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1568582</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-09-06 10:57:29 -0700</bug_when>
    <thetext>&lt;rdar://problem/50956429&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568633</commentid>
    <comment_count>1</comment_count>
      <attachid>378216</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-09-06 12:27:52 -0700</bug_when>
    <thetext>Created attachment 378216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568655</commentid>
    <comment_count>2</comment_count>
      <attachid>378216</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-09-06 13:15:29 -0700</bug_when>
    <thetext>Comment on attachment 378216
Patch

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

&gt; Source/WebCore/editing/Editing.cpp:1313
&gt; +    for (TextIterator iterator(&amp;range); !iterator.atEnd(); iterator.advance()) {

Is TextIterator the most efficient way to find image elements?

&gt; Source/WebCore/editing/Editing.cpp:1319
&gt; +        if (cachedImage &amp;&amp; cachedImage-&gt;image() &amp;&amp; cachedImage-&gt;image()-&gt;isNull())

Does isNull() guarantee that you&apos;ll get a load happening later?

&gt; Source/WebCore/editing/Editor.cpp:1593
&gt; +    document().updateLayout();
&gt; +    revealSelectionAfterEditingOperation();

This is the kind of thing that should be queued and happen at &quot;update rendering&quot; time.

&gt; Source/WebCore/page/FrameView.cpp:2452
&gt; +void FrameView::renderLayerDidScroll(const RenderLayer&amp; layer)
&gt; +{
&gt; +    if (!m_frame-&gt;isWaitingToRevealSelection())
&gt; +        return;
&gt; +
&gt; +    auto startContainer = makeRefPtr(m_frame-&gt;selection().selection().start().containerNode());
&gt; +    if (!startContainer)
&gt; +        return;
&gt; +
&gt; +    auto* startContainerRenderer = startContainer-&gt;renderer();
&gt; +    if (!startContainerRenderer)
&gt; +        return;
&gt; +
&gt; +    // FIXME: Ideally, this would also cancel deferred selection revealing if the selection is inside a subframe and a parent frame is scrolled.
&gt; +    for (auto* enclosingLayer = startContainerRenderer-&gt;enclosingLayer(); enclosingLayer; enclosingLayer = enclosingLayer-&gt;parent()) {
&gt; +        if (enclosingLayer == &amp;layer) {
&gt; +            m_frame-&gt;cancelWaitingToRevealSelection();
&gt; +            break;
&gt; +        }
&gt; +    }

Not sure this is the best place for this. Long term, FrameView needs to not know about RenderLayers. The RenderLayer tree walk here seems like the wrong place for the code too. Why not just tell Editor that the scroll happened?

&gt; Source/WebCore/page/Page.cpp:2987
&gt;  void Page::didFinishLoadingImageForElement(HTMLImageElement&amp; element)

Does this get called for failed loads?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568763</commentid>
    <comment_count>3</comment_count>
      <attachid>378216</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-09-06 16:31:34 -0700</bug_when>
    <thetext>Comment on attachment 378216
Patch

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

Thanks for the review!

&gt;&gt; Source/WebCore/editing/Editing.cpp:1313
&gt;&gt; +    for (TextIterator iterator(&amp;range); !iterator.atEnd(); iterator.advance()) {
&gt; 
&gt; Is TextIterator the most efficient way to find image elements?

It might not be, but it does enable us to:
- only grab image elements that are visible
- iterate only over elements in the given Range (as opposed to all the ancestors of a node)

It’s probably okay for now, since this code is not performance-sensitive.

&gt;&gt; Source/WebCore/editing/Editing.cpp:1319
&gt;&gt; +        if (cachedImage &amp;&amp; cachedImage-&gt;image() &amp;&amp; cachedImage-&gt;image()-&gt;isNull())
&gt; 
&gt; Does isNull() guarantee that you&apos;ll get a load happening later?

Oh, good point — this should’ve been checking cachedImage-&gt;isLoading() instead. I’ve changed it to use that instead.

&gt;&gt; Source/WebCore/editing/Editor.cpp:1593
&gt;&gt; +    revealSelectionAfterEditingOperation();
&gt; 
&gt; This is the kind of thing that should be queued and happen at &quot;update rendering&quot; time.

Yeah :/

I think once that mechanism is introduced, we should remove the layout update, and make either revealSelectionAfterEditingOperation (or FrameSelection::revealSelection) schedule the scrolling for the next rendering update. I added a FIXME for this here.

&gt;&gt; Source/WebCore/page/FrameView.cpp:2452
&gt;&gt; +    }
&gt; 
&gt; Not sure this is the best place for this. Long term, FrameView needs to not know about RenderLayers. The RenderLayer tree walk here seems like the wrong place for the code too. Why not just tell Editor that the scroll happened?

Sounds good — I’ll refactor this to tell Editor that the scroll happened.

&gt;&gt; Source/WebCore/page/Page.cpp:2987
&gt;&gt;  void Page::didFinishLoadingImageForElement(HTMLImageElement&amp; element)
&gt; 
&gt; Does this get called for failed loads?

Yes, it does (as long as we began loading, which should be the case if isLoading() is true).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568776</commentid>
    <comment_count>4</comment_count>
      <attachid>378255</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2019-09-06 17:20:45 -0700</bug_when>
    <thetext>Created attachment 378255
For EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568814</commentid>
    <comment_count>5</comment_count>
      <attachid>378255</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-06 19:58:19 -0700</bug_when>
    <thetext>Comment on attachment 378255
For EWS

Clearing flags on attachment: 378255

Committed r249605: &lt;https://trac.webkit.org/changeset/249605&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378216</attachid>
            <date>2019-09-06 12:27:52 -0700</date>
            <delta_ts>2019-09-06 13:15:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201549-20190906122751.patch</filename>
            <type>text/plain</type>
            <size>31658</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBjNGMwNjI5ZjZkNjdi
YzUyMDUyMzc4ZjlmMmYzYWNjZWI2OWQ5NC4uYzJmZjE3NjU2Mzk3NjE2NWE1ZTg3YzFjNThlZmZi
NmQ4NWVjN2M1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDE5LTA5LTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEluY29ycmVjdCBz
ZWxlY3Rpb24gcmVjdCByZXZlYWxlZCBhZnRlciBwYXN0aW5nIGltYWdlcyBpbiBhIGNvbnRlbnRl
ZGl0YWJsZSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDE1NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUwOTU2NDI5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEVkaXRvcjo6cmVwbGFj
ZVNlbGVjdGlvbldpdGhGcmFnbWVudCBjdXJyZW50bHkgc2Nyb2xscyB0byByZXZlYWwgdGhlIHNl
bGVjdGlvbiBhZnRlciBpbnNlcnRpbmcgdGhlIGdpdmVuCisgICAgICAgIERvY3VtZW50RnJhZ21l
bnQuIEhvd2V2ZXIsIHRoaXMgc2Nyb2xsaW5nIG9jY3VycyBiZWZvcmUgYW55IGluc2VydGVkIGlt
YWdlcyBoYXZlIGxvYWRlZCB5ZXQsIHdoaWNoIGNhdXNlcyB0aGUKKyAgICAgICAgd3JvbmcgY2Fy
ZXQgcmVjdCB0byBiZSByZXZlYWxlZCwgc2luY2UgYWxsIGltYWdlIGVsZW1lbnRzIGluc2VydGVk
IGR1cmluZyBwYXN0ZSB3aWxsIGJlIGVtcHR5LgorCisgICAgICAgIFRvIGZpeCB0aGlzLCB3ZSBk
ZWZlciByZXZlYWxpbmcgdGhlIHNlbGVjdGlvbiBhZnRlciBpbnNlcnRpbmcgdGhlIGZyYWdtZW50
IHVudGlsIGFmdGVyIGFsbCBpbWFnZXMgdGhhdCBoYXZlCisgICAgICAgIGJlZW4gaW5zZXJ0ZWQg
YXJlIGRvbmUgbG9hZGluZy4gV2hpbGUgd2FpdGluZyBmb3IgaW1hZ2VzIHRvIGxvYWQsIGlmIGFu
eSBsYXllcnMgd2hpY2ggbWF5IGJlIHNjcm9sbGVkIGFzIGEKKyAgICAgICAgcmVzdWx0IG9mIHJl
dmVhbGluZyB0aGUgc2VsZWN0aW9uIGFyZSBzY3JvbGxlZCwgd2UgYWRkaXRpb25hbGx5IGNhbmNl
bCB0aGUgZGVmZXJyZWQgc2VsZWN0aW9uIHJldmVhbC4gU2VlCisgICAgICAgIGNvbW1lbnRzIGJl
bG93IGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICBUZXN0czogZWRpdGluZy9wYXN0ZWJvYXJk
L2RvLW5vdC1yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXByb2dyYW1tYXRpYy1zY3JvbGwuaHRtbAor
ICAgICAgICAgICAgICAgZWRpdGluZy9wYXN0ZWJvYXJkL3JldmVhbC1zZWxlY3Rpb24tYWZ0ZXIt
cGFzdGluZy1pbWFnZXMuaHRtbAorICAgICAgICAgICAgICAgUGFzdGVJbWFnZS5SZXZlYWxTZWxl
Y3Rpb25BZnRlclBhc3RpbmdJbWFnZQorCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnZpc2libGVJbWFnZUVsZW1lbnRzSW5SYW5nZVdpdGhOb25Mb2Fk
ZWRJbWFnZXMpOgorCisgICAgICAgIEFkZCBhIG5ldyBoZWxwZXIgdG8gaXRlcmF0ZSB0aHJvdWdo
IGEgcmFuZ2UgYW5kIGNvbGxlY3QgYWxsIGltYWdlIGVsZW1lbnRzIGluIHRoYXQgcmFuZ2UsIHRo
YXQgY29udGFpbiBjYWNoZWQKKyAgICAgICAgaW1hZ2VzIHRoYXQgaGF2ZSBub3QgZmluaXNoZWQg
bG9hZGluZyB5ZXQuCisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRpbmcuaDoKKyAgICAgICAgKiBl
ZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VTZWxl
Y3Rpb25XaXRoRnJhZ21lbnQpOgorCisgICAgICAgIEluc3RlYWQgb2YgYWx3YXlzIGltbWVkaWF0
ZWx5IHJldmVhbGluZyB0aGUgc2VsZWN0aW9uIGFmdGVyIGFwcGx5aW5nIHRoZSBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZCwgY29sbGVjdCB0aGUKKyAgICAgICAgaW1hZ2UgZWxlbWVudHMgdGhhdCB3
ZXJlIGp1c3QgaW5zZXJ0ZWQsIGFuZCBhdm9pZCBpbW1lZGlhdGVseSByZXZlYWxpbmcgdGhlIHNl
bGVjdGlvbiBpZiBhbnkgb2YgdGhlc2UgaW1hZ2VzCisgICAgICAgIGhhdmUgbm9uLW51bGwgY2Fj
aGVkIGltYWdlcywgYnV0IGFyZSBub3QgbG9hZGVkIHlldC4gSW5zdGVhZCwgaG9sZCBvbiB0byB0
aGVzZSBpbWFnZXMgaW4gYSBzZXQsIHJlbW92ZSB0aGVtIG9uY2UKKyAgICAgICAgdGhleSBmaW5p
c2ggbG9hZGluZyB1c2luZyB0aGUgbmV3IG1ldGhvZCBiZWxvdywgYW5kIG9uY2UgYWxsIGltYWdl
cyBhcmUgcmVtb3ZlZCwgcmV2ZWFsIHRoZSBzZWxlY3Rpb24uCisKKyAgICAgICAgKFdlYkNvcmU6
OkVkaXRvcjo6cmV2ZWFsU2VsZWN0aW9uSWZOZWVkZWRBZnRlckxvYWRpbmdJbWFnZUZvckVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppc1dhaXRpbmdUb1JldmVhbFNlbGVjdGlv
biBjb25zdCk6CisKKyAgICAgICAgSGVscGVyIG1ldGhvZHMgdG8gY2hlY2sgd2hldGhlciB3ZSdy
ZSB3YWl0aW5nIGZvciBpbWFnZXMgdG8gbG9hZCBiZWZvcmUgcmV2ZWFsaW5nIHRoZSBzZWxlY3Rp
b24uCisKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2FuY2VsV2FpdGluZ1RvUmV2ZWFsU2Vs
ZWN0aW9uKToKKworICAgICAgICBIZWxwZXIgbWV0aG9kIHRvIHN0b3Agd2FpdGluZyBmb3IgaW1h
Z2VzIHRvIGxvYWQgYmVmb3JlIHJldmVhbGluZyB0aGUgc2VsZWN0aW9uLgorCisgICAgICAgIChX
ZWJDb3JlOjpFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rpb24pOgorCisgICAgICAgIElm
IHRoZSBzZWxlY3Rpb24gY2hhbmdlcyBiZXR3ZWVuIHBhc3RpbmcgYW5kIHdhaXRpbmcgZm9yIHBh
c3RlZCBpbWFnZXMgdG8gbG9hZCwganVzdCBjYW5jZWwgd2FpdGluZyB0byByZXZlYWwKKyAgICAg
ICAgdGhlIHNlbGVjdGlvbiBhZnRlciBwYXN0aW5nLgorCisgICAgICAgICogZWRpdGluZy9FZGl0
b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjppbnNlcnRlZENvbnRlbnRS
YW5nZSBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1ldGhvZCB0byBncmFiIHRoZSBS
YW5nZSBvZiBjb250ZW50IGluc2VydGVkIGFmdGVyIGFwcGx5aW5nIHRoZSBjb21tYW5kLgorCisg
ICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oOgorICAgICAgICAqIHBh
Z2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmlzV2FpdGluZ1RvUmV2ZWFs
U2VsZWN0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpjYW5jZWxXYWl0aW5n
VG9SZXZlYWxTZWxlY3Rpb24pOgorCisgICAgICAgIFBsdW1iIHRoZXNlIHRvIEVkaXRvciB0aHJv
dWdoIEZyYW1lLCBzbyB0aGF0IHRoZSBjYWxsIHNpdGUgKEZyYW1lVmlldykgZG9lc24ndCBuZWVk
IHRvIGJlIGF3YXJlIG9mIEVkaXRvci4KKworICAgICAgICAqIHBhZ2UvRnJhbWUuaDoKKyAgICAg
ICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNj
cm9sbFBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnJlbmRl
ckxheWVyRGlkU2Nyb2xsKToKKworICAgICAgICBDYWxsZWQgd2hlbmV2ZXIgYSBzY3JvbGxhYmxl
IFJlbmRlckxheWVyIGlzIHNjcm9sbGVkIChvciBpbiB0aGUgY2FzZSBvZiBGcmFtZVZpZXcsIHRo
ZSByb290IGxheWVyKS4gSW4gdGhlIGNhc2UKKyAgICAgICAgd2hlcmUgdGhlIEZyYW1lIGlzIGlz
IHdhaXRpbmcgdG8gcmV2ZWFsIHRoZSBzZWxlY3Rpb24sIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUg
c2Nyb2xsZWQgbGF5ZXIgaXMgYW4gYW5jZXN0b3Igb2YKKyAgICAgICAgdGhlIGxheWVyIGVuY2xv
c2luZyB0aGUgc3RhcnQgb2YgdGhlIHNlbGVjdGlvbi4KKworICAgICAgICAqIHBhZ2UvRnJhbWVW
aWV3Lmg6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6
OmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQpOgorCisgICAgICAgIE5vdGlmeSBFZGl0
b3IgYWZ0ZXIgYW4gaW1hZ2UgZmluaXNoZXMgbG9hZGluZy4KKworICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xs
VG8pOgorCiAyMDE5LTA5LTA1ICBKdXN0aW4gRmFuICA8anVzdGluX2ZhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dlYkdQVV0gSW1wbGVtZW50IEdQVVVuY2FwdHVyZWRFcnJvckV2ZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDFmZDhkODljYjM2ZGMyOTY4NzY4NDUzMmQ0N2I2ZTFmYTM1YjZmOWIuLjljZmNkNjg3
ZGMwZWE4OGU2YTRjMTYzYjdjYWU4ZjRlYjBhMWM3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTktMDktMDYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisK
KyAgICAgICAgSW5jb3JyZWN0IHNlbGVjdGlvbiByZWN0IHJldmVhbGVkIGFmdGVyIHBhc3Rpbmcg
aW1hZ2VzIGluIGEgY29udGVudGVkaXRhYmxlIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTU0OQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNTA5NTY0Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVHdlYWsgc29tZSBleGlzdGluZyBsb2dpYyB0byB1c2UgdGhlIG5ldyB2aXNpYmxlSW1h
Z2VFbGVtZW50c0luUmFuZ2VXaXRoTm9uTG9hZGVkSW1hZ2VzIGhlbHBlciBmdW5jdGlvbi4gU2Vl
CisgICAgICAgIFdlYkNvcmUgZm9yIG1vcmUgZGV0YWlscy4KKworICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
ZGlkQ29uY2x1ZGVFZGl0RHJhZyk6CisKIDIwMTktMDktMDUgIFNpaHVpIExpdSAgPHNpaHVpX2xp
dUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFN0b3JhZ2VBcmVhIHBvaW50ZXJzIGluIFN0
b3JhZ2VNYW5hZ2VyU2V0IHdoZW4gcmVtb3ZpbmcgU3RvcmFnZU1hbmFnZXJzIHRoYXQgb3duIHRo
ZW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCmluZGV4IDY5OTk5YzkzMGNkNmE0Mjk2NGZh
NmU5ZmE0Y2EyYWZlMGE4ZWQxYjQuLjk4NmQ3YzU4MjA3OWU4MjlhZTIwZDg4YjMxMWQwNzM1YTcy
N2U3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIkVkaXRpbmcuaCIKIAogI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbmNs
dWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTM0LDYgKzM1LDcgQEAKICNpbmNsdWRlICJI
VE1MRExpc3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTERpdkVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MRWxlbWVudEZhY3RvcnkuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTEludGVyY2hhbmdlLmgiCiAjaW5jbHVkZSAiSFRNTExJRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxOYW1lcy5oIgpAQCAtMTMwNSw0ICsxMzA3LDE5IEBAIEludFJlY3QgYWJz
b2x1dGVCb3VuZHNGb3JMb2NhbENhcmV0UmVjdChSZW5kZXJCbG9jayogcmVuZGVyZXJGb3JDYXJl
dFBhaW50aW5nLCBjCiAgICAgcmV0dXJuIHJlbmRlcmVyRm9yQ2FyZXRQYWludGluZy0+bG9jYWxU
b0Fic29sdXRlUXVhZChGbG9hdFJlY3QobG9jYWxSZWN0KSwgVXNlVHJhbnNmb3JtcywgaW5zaWRl
Rml4ZWQpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CiB9CiAKK0hhc2hTZXQ8UmVmUHRyPEhUTUxJ
bWFnZUVsZW1lbnQ+PiB2aXNpYmxlSW1hZ2VFbGVtZW50c0luUmFuZ2VXaXRoTm9uTG9hZGVkSW1h
Z2VzKGNvbnN0IFJhbmdlJiByYW5nZSkKK3sKKyAgICBIYXNoU2V0PFJlZlB0cjxIVE1MSW1hZ2VF
bGVtZW50Pj4gcmVzdWx0OworICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0ZXJhdG9yKCZyYW5nZSk7
ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKKyAgICAgICAgaWYgKCFp
czxIVE1MSW1hZ2VFbGVtZW50PihpdGVyYXRvci5ub2RlKCkpKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgYXV0byYgaW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEltYWdlRWxl
bWVudD4oKml0ZXJhdG9yLm5vZGUoKSk7CisgICAgICAgIGF1dG8qIGNhY2hlZEltYWdlID0gaW1h
Z2VFbGVtZW50LmNhY2hlZEltYWdlKCk7CisgICAgICAgIGlmIChjYWNoZWRJbWFnZSAmJiBjYWNo
ZWRJbWFnZS0+aW1hZ2UoKSAmJiBjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+aXNOdWxsKCkpCisgICAg
ICAgICAgICByZXN1bHQuYWRkKCZpbWFnZUVsZW1lbnQpOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5o
CmluZGV4IDBiNTgyMDMzZmE4YmY3MTI4ZTkxZWYwNGU3MTM2ZDAzZWQ0NmNjN2MuLjc0NWI3NjM4
MWVlMjA3MzgwNWRlN2ZkNDMyMWI5NDE0MTkzOTNmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdGluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Zy5oCkBAIC0yNywxMiArMjcsMTQgQEAKIAogI2luY2x1ZGUgIlBvc2l0aW9uLmgiCiAjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MRWxlbWVudDsKK2NsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7
CiBjbGFzcyBIVE1MU3BhbkVsZW1lbnQ7CiBjbGFzcyBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dDsKIGNsYXNzIFJlbmRlckJsb2NrOwpAQCAtMTAyLDYgKzEwNCw4IEBAIGJvb2wgYXJlSWRlbnRp
Y2FsRWxlbWVudHMoY29uc3QgTm9kZSYsIGNvbnN0IE5vZGUmKTsKIAogYm9vbCBwb3NpdGlvbkJl
Zm9yZU9yQWZ0ZXJOb2RlSXNDYW5kaWRhdGUoTm9kZSYpOwogCitXRUJDT1JFX0VYUE9SVCBIYXNo
U2V0PFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50Pj4gdmlzaWJsZUltYWdlRWxlbWVudHNJblJhbmdl
V2l0aE5vbkxvYWRlZEltYWdlcyhjb25zdCBSYW5nZSYpOworCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAvLyBQb3NpdGlvbgogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCmluZGV4IDg5MWMxMjg4YzZlMzE0YWNjYWU5YjYyNzE5NzgxODgxZTc0MmRjMjUuLjgyMDUw
ZWFkYmQ1MjVkNzNjYjdiZjA2ZmY1NzQzN2UxMmQ4MTlkNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKQEAgLTY3NCw3ICs2NzQsMTQgQEAgdm9pZCBFZGl0b3I6OnJlcGxhY2VTZWxlY3Rp
b25XaXRoRnJhZ21lbnQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIFNlbGVjdFJlcGwKIAog
ICAgIGF1dG8gY29tbWFuZCA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1l
bnQoKSwgJmZyYWdtZW50LCBvcHRpb25zLCBlZGl0aW5nQWN0aW9uKTsKICAgICBjb21tYW5kLT5h
cHBseSgpOwotICAgIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOworCisg
ICAgY2FuY2VsV2FpdGluZ1RvUmV2ZWFsU2VsZWN0aW9uKCk7CisKKyAgICBpZiAoYXV0byBpbnNl
cnRpb25SYW5nZSA9IGNvbW1hbmQtPmluc2VydGVkQ29udGVudFJhbmdlKCkpCisgICAgICAgIG1f
aW1hZ2VFbGVtZW50c1RvTG9hZEJlZm9yZVJldmVhbGluZ1NlbGVjdGlvbiA9IHZpc2libGVJbWFn
ZUVsZW1lbnRzSW5SYW5nZVdpdGhOb25Mb2FkZWRJbWFnZXMoKmluc2VydGlvblJhbmdlKTsKKwor
ICAgIGlmIChtX2ltYWdlRWxlbWVudHNUb0xvYWRCZWZvcmVSZXZlYWxpbmdTZWxlY3Rpb24uaXNF
bXB0eSgpKQorICAgICAgICByZXZlYWxTZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVyYXRpb24oKTsK
IAogICAgIHNlbGVjdGlvbiA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAg
aWYgKHNlbGVjdGlvbi5pc0luUGFzc3dvcmRGaWVsZCgpKQpAQCAtMTU3MSw2ICsxNTc4LDMxIEBA
IHZvaWQgRWRpdG9yOjpjb3B5SW1hZ2UoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogCiAj
ZW5kaWYKIAordm9pZCBFZGl0b3I6OnJldmVhbFNlbGVjdGlvbklmTmVlZGVkQWZ0ZXJMb2FkaW5n
SW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgaWYgKCFp
c1dhaXRpbmdUb1JldmVhbFNlbGVjdGlvbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IW1faW1hZ2VFbGVtZW50c1RvTG9hZEJlZm9yZVJldmVhbGluZ1NlbGVjdGlvbi5yZW1vdmUoJmVs
ZW1lbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1faW1hZ2VFbGVtZW50c1RvTG9h
ZEJlZm9yZVJldmVhbGluZ1NlbGVjdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CisgICAgcmV2ZWFsU2VsZWN0aW9uQWZ0ZXJF
ZGl0aW5nT3BlcmF0aW9uKCk7Cit9CisKK2Jvb2wgRWRpdG9yOjppc1dhaXRpbmdUb1JldmVhbFNl
bGVjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2ltYWdlRWxlbWVudHNUb0xvYWRCZWZv
cmVSZXZlYWxpbmdTZWxlY3Rpb24uaXNFbXB0eSgpOworfQorCit2b2lkIEVkaXRvcjo6Y2FuY2Vs
V2FpdGluZ1RvUmV2ZWFsU2VsZWN0aW9uKCkKK3sKKyAgICBtX2ltYWdlRWxlbWVudHNUb0xvYWRC
ZWZvcmVSZXZlYWxpbmdTZWxlY3Rpb24uY2xlYXIoKTsKK30KKwogYm9vbCBFZGl0b3I6OmlzQ29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2xpZW50
KCkgJiYgY2xpZW50KCktPmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7CkBAIC0z
NTc1LDYgKzM2MDcsNyBAQCB2b2lkIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgT3B0aW9uU2V0PEZyYW1lUwogI2VuZGlmCiAKICAgICBz
ZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UodHJ1ZSk7CisgICAgY2FuY2VsV2FpdGluZ1RvUmV2
ZWFsU2VsZWN0aW9uKCk7CiAKICAgICBpZiAobV9lZGl0b3JVSVVwZGF0ZVRpbWVyLmlzQWN0aXZl
KCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDlhY2E4ZTcz
NDEwNGY5YmUzMTNhZmI5YzA0NjhhYmNmMjYzOGQ0YzIuLjI0ZWVmYWRjN2FlZjc0MWIyMTM4ZTYw
NTczZDdjOTk2YzM3MGRhNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMTgyLDYgKzE4
Miw5IEBAIHB1YmxpYzoKICNpZiAhUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvcHlJbWFnZShjb25zdCBIaXRUZXN0UmVzdWx0Jik7CiAjZW5kaWYKKyAgICB2
b2lkIHJldmVhbFNlbGVjdGlvbklmTmVlZGVkQWZ0ZXJMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhU
TUxJbWFnZUVsZW1lbnQmKTsKKyAgICBib29sIGlzV2FpdGluZ1RvUmV2ZWFsU2VsZWN0aW9uKCkg
Y29uc3Q7CisgICAgdm9pZCBjYW5jZWxXYWl0aW5nVG9SZXZlYWxTZWxlY3Rpb24oKTsKIAogICAg
IFN0cmluZyByZWFkUGxhaW5UZXh0RnJvbVBhc3RlYm9hcmQoUGFzdGVib2FyZCYpOwogCkBAIC02
MjgsNiArNjMxLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBtX2lzR2V0dGluZ0Rp
Y3Rpb25hcnlQb3B1cEluZm8geyBmYWxzZSB9OworICAgIEhhc2hTZXQ8UmVmUHRyPEhUTUxJbWFn
ZUVsZW1lbnQ+PiBtX2ltYWdlRWxlbWVudHNUb0xvYWRCZWZvcmVSZXZlYWxpbmdTZWxlY3Rpb247
CiB9OwogCiBpbmxpbmUgdm9pZCBFZGl0b3I6OnNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1ZW5jZShi
b29sIGZsYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwCmluZGV4IDlmNTQxZjA4NDYyOTZlN2YxOGFmYzc3Nzg4MmUyZjJiYmYxMDY1
OTkuLjYyYmU0NDcyNmQ2OTc5MmNhZjljZDkwNGIxOGZjNTc4NDhmMDgxNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC0x
NzcxLDQgKzE3NzEsMTIgQEAgYm9vbCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cGVyZm9ybVRy
aXZpYWxSZXBsYWNlKGNvbnN0IFJlcGxhY2VtZW50RnJhZ21lbnQmIGYKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAorUmVmUHRyPFJhbmdlPiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aW5zZXJ0ZWRD
b250ZW50UmFuZ2UoKSBjb25zdAoreworICAgIGlmIChhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0
cihtX3N0YXJ0T2ZJbnNlcnRlZENvbnRlbnQuZG9jdW1lbnQoKSkpCisgICAgICAgIHJldHVybiBS
YW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgbV9zdGFydE9mSW5zZXJ0ZWRDb250ZW50LCBtX2VuZE9m
SW5zZXJ0ZWRDb250ZW50KTsKKworICAgIHJldHVybiBudWxscHRyOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmgKaW5kZXggMjljZWM0M2FiMGJjMTMyMjhlZDM3OTc2YzBkNjNkZjI1YTdhMTE5
NS4uZTk3MzNiZmI5NGIxMjQyNmI3NDc3NzI1ODJlMGUzYWMwODE4MzIwNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaApAQCAtMzEsNiAr
MzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudEZyYWdtZW50Owor
Y2xhc3MgUmFuZ2U7CiBjbGFzcyBSZXBsYWNlbWVudEZyYWdtZW50OwogCiBjbGFzcyBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7CkBAIC01Miw2
ICs1Myw4IEBAIHB1YmxpYzoKIAogICAgIFZpc2libGVTZWxlY3Rpb24gdmlzaWJsZVNlbGVjdGlv
bkZvckluc2VydGVkVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVNlbGVjdGlvbkZvcklu
c2VydGVkVGV4dDsgfQogCisgICAgUmVmUHRyPFJhbmdlPiBpbnNlcnRlZENvbnRlbnRSYW5nZSgp
IGNvbnN0OworCiBwcml2YXRlOgogICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKERvY3VtZW50
JiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYsIE9wdGlvblNldDxDb21tYW5kT3B0aW9uPiwg
RWRpdEFjdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggNDQxYTA0YTI0YTllYjJlNjk0
YzMwN2E5ZTMyMWEzNGQxYjdmNTI0ZC4uMTI5YzY2YmE2YzNkNGIxZDc3MmQ3OGNmNDhkOTY3MmVl
OTVjNjE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTk5MSw2ICs5OTEsMTYgQEAgYm9vbCBG
cmFtZTo6bWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbG9jYWxT
dG9yYWdlUHJld2FybWluZ0NvdW50IDwgbWF4bG9jYWxTdG9yYWdlUHJld2FybWluZ0NvdW50Owog
fQogCitib29sIEZyYW1lOjppc1dhaXRpbmdUb1JldmVhbFNlbGVjdGlvbigpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fZWRpdG9yLT5pc1dhaXRpbmdUb1JldmVhbFNlbGVjdGlvbigpOworfQorCit2
b2lkIEZyYW1lOjpjYW5jZWxXYWl0aW5nVG9SZXZlYWxTZWxlY3Rpb24oKQoreworICAgIG1fZWRp
dG9yLT5jYW5jZWxXYWl0aW5nVG9SZXZlYWxTZWxlY3Rpb24oKTsKK30KKwogdm9pZCBGcmFtZTo6
c2VsZk9ubHlSZWYoKQogewogICAgIEFTU0VSVChpc01haW5GcmFtZSgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUu
aAppbmRleCAzYWRkYzJiOGI1ZWUwMzI2NWNlMzBkMzMzOWFmMzk0ZjdmYTI2ZTFjLi5hNGRlM2I3
MWJmMWRiM2RlM2M2MmQyNTZmMDM2NTFkNzg4MzBiY2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0y
OTYsNiArMjk2LDkgQEAgcHVibGljOgogICAgIHZvaWQgZGlkUHJld2FybUxvY2FsU3RvcmFnZSgp
OwogICAgIGJvb2wgbWF5UHJld2FybUxvY2FsU3RvcmFnZSgpIGNvbnN0OwogCisgICAgYm9vbCBp
c1dhaXRpbmdUb1JldmVhbFNlbGVjdGlvbigpIGNvbnN0OworICAgIHZvaWQgY2FuY2VsV2FpdGlu
Z1RvUmV2ZWFsU2VsZWN0aW9uKCk7CisKIC8vID09PT09PT09CiAKICAgICB2b2lkIHNlbGZPbmx5
UmVmKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggY2I0YjgxYTM1Njg1YzhlYTBl
ZjFkMzFmNzc1MWE5ZTBlMDcwMDk5ZC4uMDU2Njg2NzNhNDFmY2E1NGI1Y2Y2NDBjZGJiZDcyYWEw
OTIxZGVhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtMjQyMyw2ICsyNDIzLDMz
IEBAIHZvaWQgRnJhbWVWaWV3OjpzY3JvbGxQb3NpdGlvbkNoYW5nZWQoY29uc3QgU2Nyb2xsUG9z
aXRpb24mIG9sZFBvc2l0aW9uLCBjb25zdCBTCiAgICAgTE9HX1dJVEhfU1RSRUFNKFNjcm9sbGlu
Zywgc3RyZWFtIDw8ICJGcmFtZVZpZXcgIiA8PCB0aGlzIDw8ICIgc2Nyb2xsUG9zaXRpb25DaGFu
Z2VkIGZyb20gIiA8PCBvbGRQb3NpdGlvbiA8PCAiIHRvICIgPDwgbmV3UG9zaXRpb24gPDwgIiAo
c2NhbGUgIiA8PCBmcmFtZVNjYWxlRmFjdG9yKCkgPDwgIiApIik7CiAgICAgdXBkYXRlTGF5b3V0
Vmlld3BvcnQoKTsKICAgICB2aWV3cG9ydENvbnRlbnRzQ2hhbmdlZCgpOworCisgICAgaWYgKGF1
dG8qIHJlbmRlclZpZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IGxheWVyID0gcmVuZGVyVmlldy0+bGF5ZXIoKSkKKyAgICAgICAgICAgIHJlbmRlckxheWVyRGlk
U2Nyb2xsKCpsYXllcik7CisgICAgfQorfQorCit2b2lkIEZyYW1lVmlldzo6cmVuZGVyTGF5ZXJE
aWRTY3JvbGwoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQoreworICAgIGlmICghbV9mcmFtZS0+
aXNXYWl0aW5nVG9SZXZlYWxTZWxlY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0
byBzdGFydENvbnRhaW5lciA9IG1ha2VSZWZQdHIobV9mcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0
aW9uKCkuc3RhcnQoKS5jb250YWluZXJOb2RlKCkpOworICAgIGlmICghc3RhcnRDb250YWluZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIHN0YXJ0Q29udGFpbmVyUmVuZGVyZXIgPSBz
dGFydENvbnRhaW5lci0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXN0YXJ0Q29udGFpbmVyUmVuZGVy
ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBJZGVhbGx5LCB0aGlzIHdvdWxk
IGFsc28gY2FuY2VsIGRlZmVycmVkIHNlbGVjdGlvbiByZXZlYWxpbmcgaWYgdGhlIHNlbGVjdGlv
biBpcyBpbnNpZGUgYSBzdWJmcmFtZSBhbmQgYSBwYXJlbnQgZnJhbWUgaXMgc2Nyb2xsZWQuCisg
ICAgZm9yIChhdXRvKiBlbmNsb3NpbmdMYXllciA9IHN0YXJ0Q29udGFpbmVyUmVuZGVyZXItPmVu
Y2xvc2luZ0xheWVyKCk7IGVuY2xvc2luZ0xheWVyOyBlbmNsb3NpbmdMYXllciA9IGVuY2xvc2lu
Z0xheWVyLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAoZW5jbG9zaW5nTGF5ZXIgPT0gJmxheWVy
KSB7CisgICAgICAgICAgICBtX2ZyYW1lLT5jYW5jZWxXYWl0aW5nVG9SZXZlYWxTZWxlY3Rpb24o
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQogfQogCiB2b2lkIEZyYW1l
Vmlldzo6YXBwbHlSZWN1cnNpdmVseVdpdGhWaXNpYmxlUmVjdChjb25zdCBXVEY6OkZ1bmN0aW9u
PHZvaWQgKEZyYW1lVmlldyYgZnJhbWVWaWV3LCBjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCk+
JiBhcHBseSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5oCmluZGV4IDdjZDk1ZGZjODIzZDU5NjQwMjA1
MmMyYThmYjkwNTkzMTUyZmU5MDQuLjQwNzhlZWY3ZjgzOGFjY2EzODNjYzFkNWU3N2VkOGI1MDg3
NDM5NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaApAQCAtNjU5LDYgKzY1OSw4IEBAIHB1Ymxp
YzoKICAgICBHcmFwaGljc0xheWVyKiBsYXllckZvckhvcml6b250YWxTY3JvbGxiYXIoKSBjb25z
dCBmaW5hbDsKICAgICBHcmFwaGljc0xheWVyKiBsYXllckZvclZlcnRpY2FsU2Nyb2xsYmFyKCkg
Y29uc3QgZmluYWw7CiAKKyAgICB2b2lkIHJlbmRlckxheWVyRGlkU2Nyb2xsKGNvbnN0IFJlbmRl
ckxheWVyJik7CisKIHByb3RlY3RlZDoKICAgICBib29sIHNjcm9sbENvbnRlbnRzRmFzdFBhdGgo
Y29uc3QgSW50U2l6ZSYgc2Nyb2xsRGVsdGEsIGNvbnN0IEludFJlY3QmIHJlY3RUb1Njcm9sbCwg
Y29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIGZpbmFsOwogICAgIHZvaWQgc2Nyb2xsQ29udGVudHNT
bG93UGF0aChjb25zdCBJbnRSZWN0JiB1cGRhdGVSZWN0KSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
CmluZGV4IDNmNTgxODM5OTUyMjBhMzgzZjNmODc2OGE5YmY4MzRhM2YyZjM4MDAuLmI1MzJiMWQy
MmYzMDVmODlkMzlhYzFmMDc2ZmExNjZkNDAyOWM4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAt
Mjk4Niw2ICsyOTg2LDkgQEAgdm9pZCBQYWdlOjpjb25maWd1cmVMb2dnaW5nQ2hhbm5lbChjb25z
dCBTdHJpbmcmIGNoYW5uZWxOYW1lLCBXVEZMb2dDaGFubmVsU3RhdGUKIAogdm9pZCBQYWdlOjpk
aWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KEhUTUxJbWFnZUVsZW1lbnQmIGVsZW1lbnQp
CiB7CisgICAgYXV0byBwcm90ZWN0ZWRFbGVtZW50ID0gbWFrZVJlZihlbGVtZW50KTsKKyAgICBp
ZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpKQor
ICAgICAgICBmcmFtZS0+ZWRpdG9yKCkucmV2ZWFsU2VsZWN0aW9uSWZOZWVkZWRBZnRlckxvYWRp
bmdJbWFnZUZvckVsZW1lbnQoZWxlbWVudCk7CiAgICAgY2hyb21lKCkuY2xpZW50KCkuZGlkRmlu
aXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChlbGVtZW50KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAKaW5kZXggNWRlYWM0YmI4ZGNiZmE2MDM0ZDdlZjE4ZGU5
ZjIzZjVlYjM0ODM0Zi4uZWQ3NTMzYWY0ZGE3OTIyMjg0NGU0MTMyZWU2YWQwNmUzMzJhODlkYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yNjA5LDYgKzI2
MDksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpzY3JvbGxUbyhjb25zdCBTY3JvbGxQb3NpdGlvbiYg
cG9zaXRpb24pCiAgICAgICAgIHZpZXcuZnJhbWVWaWV3KCkuZGlkQ2hhbmdlU2Nyb2xsT2Zmc2V0
KCk7CiAKICAgICB2aWV3LmZyYW1lVmlldygpLnZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKCk7Cisg
ICAgdmlldy5mcmFtZVZpZXcoKS5yZW5kZXJMYXllckRpZFNjcm9sbCgqdGhpcyk7CiB9CiAKIHN0
YXRpYyBpbmxpbmUgYm9vbCBmcmFtZUVsZW1lbnRBbmRWaWV3UGVybWl0U2Nyb2xsKEhUTUxGcmFt
ZUVsZW1lbnRCYXNlKiBmcmFtZUVsZW1lbnRCYXNlLCBGcmFtZVZpZXcmIGZyYW1lVmlldykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9T
Lm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0K
aW5kZXggNDMyZjc1OTc0NmJlOWM5ZGY2NWQ0MTMzNzZlYjc1Njk1YTZkNmVmNS4uMzhlMWI5NTU3
NTczZDYxZjdmM2MxYjJkYWUwMDA1NjA2ODgwMDk0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTkwOCwyOCArOTA4LDE2
IEBAIHZvaWQgV2ViUGFnZTo6ZGlkQ29uY2x1ZGVFZGl0RHJhZygpCiAKICAgICBtX3BlbmRpbmdJ
bWFnZUVsZW1lbnRzRm9yRHJvcFNuYXBzaG90LmNsZWFyKCk7CiAKLSAgICBib29sIHdhaXRpbmdG
b3JBbnlJbWFnZVRvTG9hZCA9IGZhbHNlOwogICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmKG1fcGFn
ZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkpOwogICAgIGlmIChhdXRv
IHNlbGVjdGlvblJhbmdlID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnRvTm9ybWFs
aXplZFJhbmdlKCkpIHsKLSAgICAgICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3Ioc2VsZWN0
aW9uUmFuZ2UuZ2V0KCkpOyAhaXRlcmF0b3IuYXRFbmQoKTsgaXRlcmF0b3IuYWR2YW5jZSgpKSB7
Ci0gICAgICAgICAgICBhdXRvKiBub2RlID0gaXRlcmF0b3Iubm9kZSgpOwotICAgICAgICAgICAg
aWYgKCFpczxIVE1MSW1hZ2VFbGVtZW50Pihub2RlKSkKLSAgICAgICAgICAgICAgICBjb250aW51
ZTsKLQotICAgICAgICAgICAgYXV0byYgaW1hZ2VFbGVtZW50ID0gZG93bmNhc3Q8SFRNTEltYWdl
RWxlbWVudD4oKm5vZGUpOwotICAgICAgICAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSBpbWFnZUVs
ZW1lbnQuY2FjaGVkSW1hZ2UoKTsKLSAgICAgICAgICAgIGlmIChjYWNoZWRJbWFnZSAmJiBjYWNo
ZWRJbWFnZS0+aW1hZ2UoKSAmJiBjYWNoZWRJbWFnZS0+aW1hZ2UoKS0+aXNOdWxsKCkpIHsKLSAg
ICAgICAgICAgICAgICBtX3BlbmRpbmdJbWFnZUVsZW1lbnRzRm9yRHJvcFNuYXBzaG90LmFkZCgm
aW1hZ2VFbGVtZW50KTsKLSAgICAgICAgICAgICAgICB3YWl0aW5nRm9yQW55SW1hZ2VUb0xvYWQg
PSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIG1fcGVuZGluZ0ltYWdl
RWxlbWVudHNGb3JEcm9wU25hcHNob3QgPSB2aXNpYmxlSW1hZ2VFbGVtZW50c0luUmFuZ2VXaXRo
Tm9uTG9hZGVkSW1hZ2VzKCpzZWxlY3Rpb25SYW5nZSk7CiAgICAgICAgIGF1dG8gY29sbGFwc2Vk
UmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKHNlbGVjdGlvblJhbmdlLT5vd25lckRvY3VtZW50KCksIHNl
bGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigpLCBzZWxlY3Rpb25SYW5nZS0+ZW5kUG9zaXRpb24o
KSk7CiAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKGNvbGxhcHNl
ZFJhbmdlLnB0cigpLCBET1dOU1RSRUFNLCBGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBp
bmc6OlllcywgVXNlclRyaWdnZXJlZCk7CiAKICAgICAgICAgbV9yYW5nZUZvckRyb3BTbmFwc2hv
dCA9IFdURk1vdmUoc2VsZWN0aW9uUmFuZ2UpOwogICAgIH0KIAotICAgIGlmICghd2FpdGluZ0Zv
ckFueUltYWdlVG9Mb2FkKQorICAgIGlmIChtX3BlbmRpbmdJbWFnZUVsZW1lbnRzRm9yRHJvcFNu
YXBzaG90LmlzRW1wdHkoKSkKICAgICAgICAgY29tcHV0ZUFuZFNlbmRFZGl0RHJhZ1NuYXBzaG90
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA4MGMzZGIyN2Q3ZTBmYzVlNzI3M2U3OWFjODI4ZjI5ZjYzY2EyY2FlLi43Zjg3YTNlODI0
MjkwMmI4ODc3NTc3MTdiZDU2ZjkyM2Y5ZGY2MjkxIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDktMDYgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgSW5jb3JyZWN0
IHNlbGVjdGlvbiByZWN0IHJldmVhbGVkIGFmdGVyIHBhc3RpbmcgaW1hZ2VzIGluIGEgY29udGVu
dGVkaXRhYmxlIGVsZW1lbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMTU0OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTA5NTY0Mjk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGFuIEFQSSB0
ZXN0IHRvIGV4ZXJjaXNlIHRoZSBzY2VuYXJpbyB3aGVyZSB3ZSBzY3JvbGwgdG8gcmV2ZWFsIHRo
ZSBzZWxlY3Rpb24gYWZ0ZXIgcGFzdGluZyBhbiBpbWFnZSB0aGF0IHdhcworICAgICAgICBkaXJl
Y3RseSB3cml0dGVuIHRvIHRoZSBwYXN0ZWJvYXJkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tOgorCiAyMDE5LTA5LTA1ICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKGlPUyAxMyk6
IEJ1bGxldGVkIGxpc3QgY29waWVkIGZyb20gTm90ZXMgdG8gTWFpbCByZXN1bHRzIGluIFRpbWVz
IE5ldyBSb21hbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QYXN0ZUltYWdlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9QYXN0ZUltYWdlLm1tCmluZGV4IGIxZDFiNmZmNzEyNWUyMmY3ZTM4ZGYwMGI0OTVjODYyNWFk
ZDA4OGEuLjNhMmZjOTBmMGMyYmNlZmQxMzc5ZTYxOGE4MGVhNzU3ZTY1OTRiOTUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0K
QEAgLTMzLDcgKzMzLDcgQEAKICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlIDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxl
Q29yZVNlcnZpY2VzLmg+CisjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNl
cnZpY2VzLmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEzNyw2ICsxMzcsMjEg
QEAgVEVTVChQYXN0ZUltYWdlLCBQYXN0ZVBOR0ltYWdlKQogICAgIEVYUEVDVF9XS19TVFJFUSgi
MjAwIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImltYWdlRWxlbWVu
dC53aWR0aCJdKTsKIH0KIAorVEVTVChQYXN0ZUltYWdlLCBSZXZlYWxTZWxlY3Rpb25BZnRlclBh
c3RpbmdJbWFnZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmll
dyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxtZXRhIG5hbWU9J3ZpZXdw
b3J0JyBjb250ZW50PSd3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSc+PGJvZHkg
Y29udGVudGVkaXRhYmxlPkhlbGxvIHdvcmxkPC9ib2R5PiJdOworICAgIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBb
d2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIkluc2VydFRleHQiIGFy
Z3VtZW50OkAiSGVsbG8gd29ybGQiXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1
dGVFZGl0Q29tbWFuZDpAIkluc2VydFBhcmFncmFwaCIgYXJndW1lbnQ6bmlsXTsKKworICAgIHdy
aXRlSW1hZ2VEYXRhVG9QYXN0ZWJvYXJkKChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVH
LCBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBw
YXRoRm9yUmVzb3VyY2U6QCJzdW5zZXQtaW4tY3VwZXJ0aW5vLTYwMHB4IiBvZlR5cGU6QCJqcGci
IGluRGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0pOworICAgIFt3ZWJWaWV3
IHBhc3RlOm5pbF07CisKKyAgICB3aGlsZSAoW1t3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCJdIGRvdWJsZVZh
bHVlXSA8PSAwKQorICAgICAgICBbTlNSdW5Mb29wLmN1cnJlbnRSdW5Mb29wIHJ1blVudGlsRGF0
ZTpbTlNEYXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3c6MC4wNV1dOworfQorCiAjaWYg
UExBVEZPUk0oTUFDKQogdm9pZCB3cml0ZUJ1bmRsZUZpbGVUb1Bhc3RlYm9hcmQoaWQgb2JqZWN0
KQogewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDU0OGFkNjA5YjVjYTgwYTZkZWQ5N2ZjN2JlNTRhNzJkNDNiMDE4ZDYuLjI3
Y2Q3NmI5NjhmODU0ZjlhOTk0ZTJjZWViNGMzMjdlNjQ0ZWJmNDIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
NiBAQAorMjAxOS0wOS0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
KworICAgICAgICBJbmNvcnJlY3Qgc2VsZWN0aW9uIHJlY3QgcmV2ZWFsZWQgYWZ0ZXIgcGFzdGlu
ZyBpbWFnZXMgaW4gYSBjb250ZW50ZWRpdGFibGUgZWxlbWVudAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTQ5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81MDk1NjQyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBjb3VwbGUgb2YgbmV3IGxheW91dCB0ZXN0cy4KKworICAgICAgICAqIGVk
aXRpbmcvcGFzdGVib2FyZC9kby1ub3QtcmV2ZWFsLXNlbGVjdGlvbi1hZnRlci1wcm9ncmFtbWF0
aWMtc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJv
YXJkL2RvLW5vdC1yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXByb2dyYW1tYXRpYy1zY3JvbGwuaHRt
bDogQWRkZWQuCisKKyAgICAgICAgVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgZG9uJ3QgdHJ5
IHRvIHNjcm9sbCB0byByZXZlYWwgdGhlIGNhcmV0IGFmdGVyIHBhc3RpbmcsIGlmIHRoZSBzY3Jv
bGwgcG9zaXRpb24gd2FzCisgICAgICAgIGNoYW5nZWQgYmVmb3JlIHRoZSBpbWFnZXMgZmluaXNo
ZWQgbG9hZGluZy4KKworICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9yZXZlYWwtc2VsZWN0
aW9uLWFmdGVyLXBhc3RpbmctaW1hZ2VzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZWRpdGluZy9wYXN0ZWJvYXJkL3JldmVhbC1zZWxlY3Rpb24tYWZ0ZXItcGFzdGluZy1pbWFnZXMu
aHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vaW9zL2VkaXRpbmcvcGFzdGVib2FyZC9y
ZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXBhc3RpbmctaW1hZ2VzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisKKyAgICAgICAgVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgcmV2ZWFsIHRoZSBjYXJldCBh
ZnRlciBsb2FkaW5nIG11bHRpcGxlIHBhc3RlZCBpbWFnZXMgaW4gYSBzZWxlY3Rpb24sIGFuZCBk
aXNwYXRjaCBhCisgICAgICAgIHNjcm9sbCBldmVudCBpbiB0aGUgcHJvY2Vzcy4KKwogMjAxOS0w
OS0wNSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJH
UFVdIEltcGxlbWVudCBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RvLW5vdC1yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXBy
b2dyYW1tYXRpYy1zY3JvbGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RvLW5vdC1yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXByb2dyYW1tYXRpYy1zY3JvbGwt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU1MGM1ZDg3N2MwNGJhNmM0YzFhMDk5ZjY2ZDFjMTQx
YTA5NjYzZDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvZG8tbm90LXJldmVhbC1zZWxlY3Rpb24tYWZ0ZXItcHJvZ3JhbW1hdGljLXNjcm9sbC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwxNyBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgZG8g
bm90IHNjcm9sbCB0byByZXZlYWwgdGhlIHNlbGVjdGlvbiBhZnRlciBwYXN0aW5nIGltYWdlcyBp
biBhbiBlZGl0YWJsZSBhcmVhLCBpZiB0aGUgcGFnZSBwcm9ncmFtbWF0aWNhbGx5IHNjcm9sbHMg
dGhlIGVkaXRvci4gVG8gcnVuIHRoZSB0ZXN0IG1hbnVhbGx5LCBjb3B5IHRoZSBzZWxlY3RlZCBp
bWFnZXMgYW5kIHBhc3RlIGludG8gdGhlIHJlZCBlZGl0YWJsZSBjb250YWluZXIgYWJvdmUuIFRo
ZSBjb250YWluZXIncyBzY3JvbGwgcG9zaXRpb24gc2hvdWxkIHJlbWFpbiBhdCAwLgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBhbGxJbWFnZXNBcmVEb25lTG9hZGluZygp
IGJlY2FtZSB0cnVlCitQQVNTIGVkaXRvci5zY3JvbGxUb3AgaXMgMAorUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCitIZXJlJ3MgdG8gdGhlIGNyYXp5IG9u
ZXMsIHRoZSBtaXNmaXRzLCB0aGUgcmViZWxzLCB0aGUgdHJvdWJsZSBtYWtlcnMsIHRoZSByb3Vu
ZCBwZWdzIGluIHRoZSBzcXVhcmUgaG9sZXMsIHRoZSBvbmVzIHdobyBzZWUgdGhpbmdzIGRpZmZl
cmVudGx5LiBUaGVyZSBub3QgZm9uZCBvZiBydWxlcywgYW5kIHRoZXkgaGF2ZSBubyByZXNwZWN0
IGZvciB0aGUgc3RhdHVzIHF1bywgeW91IGNhbiBxdW90ZSB0aGVuLCBkaXNhZ3JlZSB3aXRoIHRo
ZW0sIGdsb3JpZnkgb3IgdmlsaWZ5IHRoZW0sIGFib3V0IHRoZSBvbmx5IHRoaW5nIHlvdSBjYW4n
dCBkbyBpcyBpZ25vcmUgdGhlbS4gQmVjYXVzZSB0aGV5IGNoYW5nZSB0aGluZ3MuIFRoZXkgcHVz
aCB0aGUgaHVtYW4gcmFjZSBmb3J3YXJkLiBBbmQgd2hpbGUgc29tZSBtYXkgc2VlIHRoZW0gYXMg
dGhlIGNyYXp5IG9uZXMsIHdlIHNlZSBnZW5pdXMuIEJlY2F1c2UgdGhlIHBlb3BsZSB3aG8gYXJl
IGNyYXp5IGVub3VnaCB0byB0aGluayB0aGV5IGNhbiBjaGFuZ2UgdGhlIHdvcmxkIGFyZSB0aGUg
b25lcyB3aG8gZG8uCisKKworCisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvZG8tbm90LXJldmVhbC1zZWxlY3Rpb24tYWZ0ZXItcHJvZ3JhbW1hdGljLXNj
cm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RvLW5vdC1yZXZlYWwt
c2VsZWN0aW9uLWFmdGVyLXByb2dyYW1tYXRpYy1zY3JvbGwuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kZjA2
YzhiN2Y3N2Y4Njg3OGQ3ZjgyNjIyMWQ2ODhkNTU4ZTFlYjVlCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RvLW5vdC1yZXZlYWwtc2VsZWN0aW9uLWFm
dGVyLXByb2dyYW1tYXRpYy1zY3JvbGwuaHRtbApAQCAtMCwwICsxLDYyIEBACis8IURPQ1RZUEUg
aHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL2VkaXRpbmcuanMiPjwv
c2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdD4KKyAgICAgICAganNUZXN0SXNBc3luYyA9IHRydWU7CisgICAg
ICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBkbyBub3Qgc2Nyb2xs
IHRvIHJldmVhbCB0aGUgc2VsZWN0aW9uIGFmdGVyIHBhc3RpbmcgaW1hZ2VzIGluIGFuIGVkaXRh
YmxlIGFyZWEsIGlmIHRoZSBwYWdlIHByb2dyYW1tYXRpY2FsbHkgc2Nyb2xscyB0aGUgZWRpdG9y
LiBUbyBydW4gdGhlIHRlc3QgbWFudWFsbHksIGNvcHkgdGhlIHNlbGVjdGVkIGltYWdlcyBhbmQg
cGFzdGUgaW50byB0aGUgcmVkIGVkaXRhYmxlIGNvbnRhaW5lciBhYm92ZS4gVGhlIGNvbnRhaW5l
cidzIHNjcm9sbCBwb3NpdGlvbiBzaG91bGQgcmVtYWluIGF0IDAuIik7CisKKyAgICAgICAgZnVu
Y3Rpb24gYWxsSW1hZ2VzQXJlRG9uZUxvYWRpbmcoKSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0
IGltYWdlIG9mIEFycmF5LmZyb20oZG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCJpbWci
KSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWltYWdlLmNvbXBsZXRlKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoKSA9
PiB7CisgICAgICAgICAgICBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdG9y
Iik7CisgICAgICAgICAgICBpbWFnZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2Vz
LXRvLWNvcHkiKTsKKyAgICAgICAgICAgIGxhc3RMaW5lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxhc3RMaW5lIik7CisKKyAgICAgICAgICAgIGVkaXRvci5zY3JvbGxUbygwLCAyMDApOwor
ICAgICAgICAgICAgc2V0U2VsZWN0aW9uQ29tbWFuZChpbWFnZXMuZmlyc3RDaGlsZCwgMCwgaW1h
Z2VzLmxhc3RDaGlsZCwgMSk7CisKKyAgICAgICAgICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgICAgICAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcigicGFzdGUiLCAoKSA9
PiBzZXRUaW1lb3V0KCgpID0+IGVkaXRvci5zY3JvbGxUbygwLCAwKSkpOworICAgICAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZXhlY0NvcHlDb21tYW5k
KCk7CisgICAgICAgICAgICBzZXRTZWxlY3Rpb25Db21tYW5kKGxhc3RMaW5lLCAwLCBsYXN0TGlu
ZSwgMCk7CisgICAgICAgICAgICBleGVjUGFzdGVDb21tYW5kKCk7CisgICAgICAgICAgICBlZGl0
b3Iuc2Nyb2xsVG8oMCwgMCk7CisKKyAgICAgICAgICAgIHNob3VsZEJlY29tZUVxdWFsKCJhbGxJ
bWFnZXNBcmVEb25lTG9hZGluZygpIiwgInRydWUiLCAoKSA9PiB7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoImVkaXRvci5zY3JvbGxUb3AiLCAiMCIpOworICAgICAgICAgICAgICAgIGZpbmlz
aEpTVGVzdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgIDwvc2NyaXB0Pgor
ICAgIDxzdHlsZT4KKyAgICAgICAgZGl2I2VkaXRvciB7CisgICAgICAgICAgICB3aWR0aDogMjAw
cHg7CisgICAgICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICAgICAgb3ZlcmZsb3c6IHNj
cm9sbDsKKyAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRvbWF0bzsKKyAgICAgICAgfQor
ICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJlZGl0b3IiIGNvbnRl
bnRlZGl0YWJsZT4KKyAgICAgICAgPHNwYW4+SGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLCB0aGUg
bWlzZml0cywgdGhlIHJlYmVscywgdGhlIHRyb3VibGUgbWFrZXJzLCB0aGUgcm91bmQgcGVncyBp
biB0aGUgc3F1YXJlIGhvbGVzLCB0aGUgb25lcyB3aG8gc2VlIHRoaW5ncyBkaWZmZXJlbnRseS4g
VGhlcmUgbm90IGZvbmQgb2YgcnVsZXMsIGFuZCB0aGV5IGhhdmUgbm8gcmVzcGVjdCBmb3IgdGhl
IHN0YXR1cyBxdW8sIHlvdSBjYW4gcXVvdGUgdGhlbiwgZGlzYWdyZWUgd2l0aCB0aGVtLCBnbG9y
aWZ5IG9yIHZpbGlmeSB0aGVtLCBhYm91dCB0aGUgb25seSB0aGluZyB5b3UgY2FuJ3QgZG8gaXMg
aWdub3JlIHRoZW0uIEJlY2F1c2UgdGhleSBjaGFuZ2UgdGhpbmdzLiBUaGV5IHB1c2ggdGhlIGh1
bWFuIHJhY2UgZm9yd2FyZC4gQW5kIHdoaWxlIHNvbWUgbWF5IHNlZSB0aGVtIGFzIHRoZSBjcmF6
eSBvbmVzLCB3ZSBzZWUgZ2VuaXVzLiBCZWNhdXNlIHRoZSBwZW9wbGUgd2hvIGFyZSBjcmF6eSBl
bm91Z2ggdG8gdGhpbmsgdGhleSBjYW4gY2hhbmdlIHRoZSB3b3JsZCBhcmUgdGhlIG9uZXMgd2hv
IGRvLjwvc3Bhbj4KKyAgICAgICAgPGRpdj48YnIgaWQ9Imxhc3RMaW5lIj48L2Rpdj4KKyAgICA8
L2Rpdj4KKyAgICA8ZGl2IGlkPSJpbWFnZXMtdG8tY29weSI+CisgICAgICAgIDxkaXY+PGltZyBz
cmM9InJlc291cmNlcy9tb3ppbGxhLmdpZiI+PC9pbWc+PC9kaXY+CisgICAgICAgIDxkaXY+PGlt
ZyBzcmM9InJlc291cmNlcy9hcHBsZS5naWYiPjwvaW1nPjwvZGl2PgorICAgICAgICA8ZGl2Pjxp
bWcgc3JjPSIuLi9yZXNvdXJjZXMvYWJlLnBuZyI+PC9pbWc+PC9kaXY+CisgICAgPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvcmV2ZWFsLXNlbGVjdGlvbi1hZnRlci1wYXN0aW5nLWltYWdlcy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcmV2ZWFsLXNlbGVjdGlvbi1hZnRlci1wYXN0
aW5nLWltYWdlcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzA5M2FjNDQ5MGJlMDc0ZTZjNDgx
YWEzMDdmNWQ2YzY4MjViNzI3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXBhc3RpbmctaW1hZ2VzLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBzY3Jv
bGwgdG8gcmV2ZWFsIHRoZSBzZWxlY3Rpb24gYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4gYW4gZWRp
dGFibGUgYXJlYS4gVG8gcnVuIHRoZSB0ZXN0IG1hbnVhbGx5LCBjb3B5IHRoZSBzZWxlY3RlZCBp
bWFnZXMgYW5kIHBhc3RlIGludG8gdGhlIHJlZCBlZGl0YWJsZSBjb250YWluZXIgYWJvdmUuIFRo
ZSBjb250YWluZXIgc2hvdWxkIHNjcm9sbCB0byByZXZlYWwgdGhlIGNhcmV0IGFmdGVyIHRoZSBs
YXN0IGltYWdlLgorCitTY3JvbGxlZCBhZnRlciBwYXN0aW5nOgorfCA8ZGl2PgorfCAgIDxpbWc+
Cit8ICAgICBzcmM9InJlc291cmNlcy9tb3ppbGxhLmdpZiIKK3wgPGRpdj4KK3wgICA8aW1nPgor
fCAgICAgc3JjPSJyZXNvdXJjZXMvYXBwbGUuZ2lmIgorfCA8ZGl2PgorfCAgIDxpbWc+Cit8ICAg
ICBzcmM9Ii4uL3Jlc291cmNlcy9hYmUucG5nIgorfCAgIDwjc2VsZWN0aW9uLWNhcmV0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3JldmVhbC1zZWxlY3Rpb24t
YWZ0ZXItcGFzdGluZy1pbWFnZXMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXBhc3RpbmctaW1hZ2VzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzMxY2NjMTVkN2UwZDc5ZGRkNWEwMjBkNzdkODVmMmE5OGRkMDUyZgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9yZXZlYWwtc2VsZWN0aW9uLWFmdGVy
LXBhc3RpbmctaW1hZ2VzLmh0bWwKQEAgLTAsMCArMSw0NiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAgICBNYXJrdXAud2FpdFVudGlsRG9uZSgpOworICAg
ICAgICBNYXJrdXAuZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIHNjcm9s
bCB0byByZXZlYWwgdGhlIHNlbGVjdGlvbiBhZnRlciBwYXN0aW5nIGltYWdlcyBpbiBhbiBlZGl0
YWJsZSBhcmVhLiBUbyBydW4gdGhlIHRlc3QgbWFudWFsbHksIGNvcHkgdGhlIHNlbGVjdGVkIGlt
YWdlcyBhbmQgcGFzdGUgaW50byB0aGUgcmVkIGVkaXRhYmxlIGNvbnRhaW5lciBhYm92ZS4gVGhl
IGNvbnRhaW5lciBzaG91bGQgc2Nyb2xsIHRvIHJldmVhbCB0aGUgY2FyZXQgYWZ0ZXIgdGhlIGxh
c3QgaW1hZ2UuIik7CisKKyAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICgpID0+IHsK
KyAgICAgICAgICAgIGVkaXRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJlZGl0b3IiKTsK
KyAgICAgICAgICAgIGltYWdlcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZXMtdG8t
Y29weSIpOworCisgICAgICAgICAgICBlZGl0b3IuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIiwg
KCkgPT4geworICAgICAgICAgICAgICAgIE1hcmt1cC5kdW1wKGVkaXRvciwgIlNjcm9sbGVkIGFm
dGVyIHBhc3RpbmciKTsKKyAgICAgICAgICAgICAgICBNYXJrdXAubm90aWZ5RG9uZSgpOworICAg
ICAgICAgICAgfSwgeyBvbmNlOiB0cnVlIH0pOworCisgICAgICAgICAgICBzZXRTZWxlY3Rpb25D
b21tYW5kKGltYWdlcy5maXJzdENoaWxkLCAwLCBpbWFnZXMubGFzdENoaWxkLCAxKTsKKworICAg
ICAgICAgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgIGV4ZWNDb3B5Q29tbWFuZCgpOworICAgICAgICAgICAgZWRpdG9yLmZv
Y3VzKCk7CisgICAgICAgICAgICBleGVjUGFzdGVDb21tYW5kKCk7CisgICAgICAgIH0pOworICAg
IDwvc2NyaXB0PgorICAgIDxzdHlsZT4KKyAgICAgICAgZGl2I2VkaXRvciB7CisgICAgICAgICAg
ICB3aWR0aDogMjAwcHg7CisgICAgICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICAgICAg
b3ZlcmZsb3c6IHNjcm9sbDsKKyAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRvbWF0bzsK
KyAgICAgICAgfQorICAgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8ZGl2IGlkPSJl
ZGl0b3IiIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4KKyAgICA8ZGl2IGlkPSJpbWFnZXMtdG8tY29w
eSI+CisgICAgICAgIDxkaXY+PGltZyBzcmM9InJlc291cmNlcy9tb3ppbGxhLmdpZiI+PC9pbWc+
PC9kaXY+CisgICAgICAgIDxkaXY+PGltZyBzcmM9InJlc291cmNlcy9hcHBsZS5naWYiPjwvaW1n
PjwvZGl2PgorICAgICAgICA8ZGl2PjxpbWcgc3JjPSIuLi9yZXNvdXJjZXMvYWJlLnBuZyI+PC9p
bWc+PC9kaXY+CisgICAgPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9pb3MvZWRpdGluZy9wYXN0ZWJvYXJkL3JldmVhbC1zZWxlY3Rpb24t
YWZ0ZXItcGFzdGluZy1pbWFnZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zL2VkaXRpbmcvcGFzdGVib2FyZC9yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXBhc3RpbmctaW1h
Z2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNDkxY2Q4ZDViODQ3NTYwODg3NjY1ZmI1YzQ3
MzFiNmY2MjNjZGVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9z
L2VkaXRpbmcvcGFzdGVib2FyZC9yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXBhc3RpbmctaW1hZ2Vz
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2IEBACitUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3
ZSBzY3JvbGwgdG8gcmV2ZWFsIHRoZSBzZWxlY3Rpb24gYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4g
YW4gZWRpdGFibGUgYXJlYS4gVG8gcnVuIHRoZSB0ZXN0IG1hbnVhbGx5LCBjb3B5IHRoZSBzZWxl
Y3RlZCBpbWFnZXMgYW5kIHBhc3RlIGludG8gdGhlIHJlZCBlZGl0YWJsZSBjb250YWluZXIgYWJv
dmUuIFRoZSBjb250YWluZXIgc2hvdWxkIHNjcm9sbCB0byByZXZlYWwgdGhlIGNhcmV0IGFmdGVy
IHRoZSBsYXN0IGltYWdlLgorCitTY3JvbGxlZCBhZnRlciBwYXN0aW5nOgorfCA8ZGl2PgorfCAg
IHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IGF1dG87IgorfCAgIDxpbWc+Cit8ICAg
ICBzcmM9InJlc291cmNlcy9tb3ppbGxhLmdpZiIKK3wgPGRpdj4KK3wgICBzdHlsZT0iLXdlYmtp
dC10ZXh0LXNpemUtYWRqdXN0OiBhdXRvOyIKK3wgICA8aW1nPgorfCAgICAgc3JjPSJyZXNvdXJj
ZXMvYXBwbGUuZ2lmIgorfCA8ZGl2PgorfCAgIHN0eWxlPSItd2Via2l0LXRleHQtc2l6ZS1hZGp1
c3Q6IGF1dG87IgorfCAgIDxpbWc+Cit8ICAgICBzcmM9Ii4uL3Jlc291cmNlcy9hYmUucG5nIgor
fCAgIDwjc2VsZWN0aW9uLWNhcmV0Pgo=
</data>
<flag name="review"
          id="393865"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378255</attachid>
            <date>2019-09-06 17:20:45 -0700</date>
            <delta_ts>2019-09-06 19:58:19 -0700</delta_ts>
            <desc>For EWS</desc>
            <filename>bug-201549-20190906172044.patch</filename>
            <type>text/plain</type>
            <size>30624</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBjNGMwNjI5ZjZkNjdi
YzUyMDUyMzc4ZjlmMmYzYWNjZWI2OWQ5NC4uYWYwMTBhM2YzYmRlMzhhYjU1NjkwMWI1ZGNiMWUw
ODI0OGM2NGVjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE5LTA5LTA2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEluY29ycmVjdCBz
ZWxlY3Rpb24gcmVjdCByZXZlYWxlZCBhZnRlciBwYXN0aW5nIGltYWdlcyBpbiBhIGNvbnRlbnRl
ZGl0YWJsZSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDE1NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzUwOTU2NDI5PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAgICBFZGl0b3I6OnJlcGxhY2VT
ZWxlY3Rpb25XaXRoRnJhZ21lbnQgY3VycmVudGx5IHNjcm9sbHMgdG8gcmV2ZWFsIHRoZSBzZWxl
Y3Rpb24gYWZ0ZXIgaW5zZXJ0aW5nIHRoZSBnaXZlbgorICAgICAgICBEb2N1bWVudEZyYWdtZW50
LiBIb3dldmVyLCB0aGlzIHNjcm9sbGluZyBvY2N1cnMgYmVmb3JlIGFueSBpbnNlcnRlZCBpbWFn
ZXMgaGF2ZSBsb2FkZWQgeWV0LCB3aGljaCBjYXVzZXMgdGhlCisgICAgICAgIHdyb25nIGNhcmV0
IHJlY3QgdG8gYmUgcmV2ZWFsZWQsIHNpbmNlIGFsbCBpbWFnZSBlbGVtZW50cyBpbnNlcnRlZCBk
dXJpbmcgcGFzdGUgd2lsbCBiZSBlbXB0eS4KKworICAgICAgICBUbyBmaXggdGhpcywgd2UgZGVm
ZXIgcmV2ZWFsaW5nIHRoZSBzZWxlY3Rpb24gYWZ0ZXIgaW5zZXJ0aW5nIHRoZSBmcmFnbWVudCB1
bnRpbCBhZnRlciBhbGwgaW1hZ2VzIHRoYXQgaGF2ZQorICAgICAgICBiZWVuIGluc2VydGVkIGFy
ZSBkb25lIGxvYWRpbmcuIFdoaWxlIHdhaXRpbmcgZm9yIGltYWdlcyB0byBsb2FkLCBpZiBhbnkg
bGF5ZXJzIHdoaWNoIG1heSBiZSBzY3JvbGxlZCBhcyBhCisgICAgICAgIHJlc3VsdCBvZiByZXZl
YWxpbmcgdGhlIHNlbGVjdGlvbiBhcmUgc2Nyb2xsZWQsIHdlIGFkZGl0aW9uYWxseSBjYW5jZWwg
dGhlIGRlZmVycmVkIHNlbGVjdGlvbiByZXZlYWwuIFNlZQorICAgICAgICBjb21tZW50cyBiZWxv
dyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgVGVzdHM6IGVkaXRpbmcvcGFzdGVib2FyZC9k
by1ub3QtcmV2ZWFsLXNlbGVjdGlvbi1hZnRlci1wcm9ncmFtbWF0aWMtc2Nyb2xsLmh0bWwKKyAg
ICAgICAgICAgICAgIGVkaXRpbmcvcGFzdGVib2FyZC9yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXBh
c3RpbmctaW1hZ2VzLmh0bWwKKyAgICAgICAgICAgICAgIFBhc3RlSW1hZ2UuUmV2ZWFsU2VsZWN0
aW9uQWZ0ZXJQYXN0aW5nSW1hZ2UKKworICAgICAgICAqIGVkaXRpbmcvRWRpdGluZy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp2aXNpYmxlSW1hZ2VFbGVtZW50c0luUmFuZ2VXaXRoTm9uTG9hZGVk
SW1hZ2VzKToKKworICAgICAgICBBZGQgYSBuZXcgaGVscGVyIHRvIGl0ZXJhdGUgdGhyb3VnaCBh
IHJhbmdlIGFuZCBjb2xsZWN0IGFsbCBpbWFnZSBlbGVtZW50cyBpbiB0aGF0IHJhbmdlLCB0aGF0
IGNvbnRhaW4gY2FjaGVkCisgICAgICAgIGltYWdlcyB0aGF0IGhhdmUgbm90IGZpbmlzaGVkIGxv
YWRpbmcgeWV0LgorCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nLmg6CisgICAgICAgICogZWRp
dGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZXBsYWNlU2VsZWN0
aW9uV2l0aEZyYWdtZW50KToKKworICAgICAgICBJbnN0ZWFkIG9mIGFsd2F5cyBpbW1lZGlhdGVs
eSByZXZlYWxpbmcgdGhlIHNlbGVjdGlvbiBhZnRlciBhcHBseWluZyB0aGUgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQsIGNvbGxlY3QgdGhlCisgICAgICAgIGltYWdlIGVsZW1lbnRzIHRoYXQgd2Vy
ZSBqdXN0IGluc2VydGVkLCBhbmQgYXZvaWQgaW1tZWRpYXRlbHkgcmV2ZWFsaW5nIHRoZSBzZWxl
Y3Rpb24gaWYgYW55IG9mIHRoZXNlIGltYWdlcworICAgICAgICBoYXZlIG5vbi1udWxsIGNhY2hl
ZCBpbWFnZXMsIGJ1dCBhcmUgbm90IGxvYWRlZCB5ZXQuIEluc3RlYWQsIGhvbGQgb24gdG8gdGhl
c2UgaW1hZ2VzIGluIGEgc2V0LCByZW1vdmUgdGhlbSBvbmNlCisgICAgICAgIHRoZXkgZmluaXNo
IGxvYWRpbmcgdXNpbmcgdGhlIG5ldyBtZXRob2QgYmVsb3csIGFuZCBvbmNlIGFsbCBpbWFnZXMg
YXJlIHJlbW92ZWQsIHJldmVhbCB0aGUgc2VsZWN0aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OnJldmVhbFNlbGVjdGlvbklmTmVlZGVkQWZ0ZXJMb2FkaW5nSW1hZ2VGb3JFbGVtZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmVuZGVyTGF5ZXJEaWRTY3JvbGwpOgorCisg
ICAgICAgIENhbGxlZCB3aGVuZXZlciBhIHNjcm9sbGFibGUgUmVuZGVyTGF5ZXIgaXMgc2Nyb2xs
ZWQgKG9yIGluIHRoZSBjYXNlIG9mIEZyYW1lVmlldywgdGhlIHJvb3QgbGF5ZXIpLiBJbiB0aGUg
Y2FzZQorICAgICAgICB3aGVyZSBFZGl0b3IgaXMgd2FpdGluZyB0byByZXZlYWwgdGhlIHNlbGVj
dGlvbiwgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSBzY3JvbGxlZCBsYXllciBpcyBhbiBhbmNlc3Rv
ciBvZiB0aGUKKyAgICAgICAgbGF5ZXIgZW5jbG9zaW5nIHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0
aW9uLgorCisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlc3BvbmRUb0NoYW5nZWRTZWxlY3Rp
b24pOgorCisgICAgICAgIElmIHRoZSBzZWxlY3Rpb24gY2hhbmdlcyBiZXR3ZWVuIHBhc3Rpbmcg
YW5kIHdhaXRpbmcgZm9yIHBhc3RlZCBpbWFnZXMgdG8gbG9hZCwganVzdCBjYW5jZWwgd2FpdGlu
ZyB0byByZXZlYWwKKyAgICAgICAgdGhlIHNlbGVjdGlvbiBhZnRlciBwYXN0aW5nLgorCisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjppbnNlcnRlZENvbnRlbnRSYW5nZSBjb25zdCk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIG1l
dGhvZCB0byBncmFiIHRoZSBSYW5nZSBvZiBjb250ZW50IGluc2VydGVkIGFmdGVyIGFwcGx5aW5n
IHRoZSBjb21tYW5kLgorCisgICAgICAgICogZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZC5oOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmll
dy5oOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpk
aWRGaW5pc2hMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KToKKworICAgICAgICBOb3RpZnkgRWRpdG9y
IGFmdGVyIGFuIGltYWdlIGZpbmlzaGVzIGxvYWRpbmcuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnNjcm9sbFRv
KToKKwogMjAxOS0wOS0wNSAgSnVzdGluIEZhbiAgPGp1c3Rpbl9mYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIFtXZWJHUFVdIEltcGxlbWVudCBHUFVVbmNhcHR1cmVkRXJyb3JFdmVudApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpp
bmRleCAxZmQ4ZDg5Y2IzNmRjMjk2ODc2ODQ1MzJkNDdiNmUxZmEzNWI2ZjliLi5hNTI1NDQyZDhm
ZGI5YjYzODAyNzg5MzE5NGUwYTM1YjhhMjA5NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDE5LTA5LTA2ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisg
ICAgICAgIEluY29ycmVjdCBzZWxlY3Rpb24gcmVjdCByZXZlYWxlZCBhZnRlciBwYXN0aW5nIGlt
YWdlcyBpbiBhIGNvbnRlbnRlZGl0YWJsZSBlbGVtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1NDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzUwOTU2NDI5PgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KKworICAgICAg
ICBUd2VhayBzb21lIGV4aXN0aW5nIGxvZ2ljIHRvIHVzZSB0aGUgbmV3IHZpc2libGVJbWFnZUVs
ZW1lbnRzSW5SYW5nZVdpdGhOb25Mb2FkZWRJbWFnZXMgaGVscGVyIGZ1bmN0aW9uLiBTZWUKKyAg
ICAgICAgV2ViQ29yZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRD
b25jbHVkZUVkaXREcmFnKToKKwogMjAxOS0wOS0wNSAgU2lodWkgTGl1ICA8c2lodWlfbGl1QGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgU3RvcmFnZUFyZWEgcG9pbnRlcnMgaW4gU3RvcmFn
ZU1hbmFnZXJTZXQgd2hlbiByZW1vdmluZyBTdG9yYWdlTWFuYWdlcnMgdGhhdCBvd24gdGhlbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5jcHAKaW5kZXggNjk5OTljOTMwY2Q2YTQyOTY0ZmE2ZTlm
YTRjYTJhZmUwYThlZDFiNC4uNGQzNTAzOGFlYzY1Yjc3NjMwZDZkMzhmOWQyZDJhZGMyNTJlYjk2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmcuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiRWRpdGluZy5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUg
IkNhY2hlZEltYWdlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFZGl0b3Iu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgpAQCAtMzQsNiArMzUsNyBAQAogI2luY2x1ZGUgIkhUTUxE
TGlzdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxFbGVtZW50RmFjdG9yeS5oIgorI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MSW50ZXJjaGFuZ2UuaCIKICNpbmNsdWRlICJIVE1MTElFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCkBAIC0xMzA1LDQgKzEzMDcsMTkgQEAgSW50UmVjdCBhYnNvbHV0
ZUJvdW5kc0ZvckxvY2FsQ2FyZXRSZWN0KFJlbmRlckJsb2NrKiByZW5kZXJlckZvckNhcmV0UGFp
bnRpbmcsIGMKICAgICByZXR1cm4gcmVuZGVyZXJGb3JDYXJldFBhaW50aW5nLT5sb2NhbFRvQWJz
b2x1dGVRdWFkKEZsb2F0UmVjdChsb2NhbFJlY3QpLCBVc2VUcmFuc2Zvcm1zLCBpbnNpZGVGaXhl
ZCkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIH0KIAorSGFzaFNldDxSZWZQdHI8SFRNTEltYWdl
RWxlbWVudD4+IHZpc2libGVJbWFnZUVsZW1lbnRzSW5SYW5nZVdpdGhOb25Mb2FkZWRJbWFnZXMo
Y29uc3QgUmFuZ2UmIHJhbmdlKQoreworICAgIEhhc2hTZXQ8UmVmUHRyPEhUTUxJbWFnZUVsZW1l
bnQ+PiByZXN1bHQ7CisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXRlcmF0b3IoJnJhbmdlKTsgIWl0
ZXJhdG9yLmF0RW5kKCk7IGl0ZXJhdG9yLmFkdmFuY2UoKSkgeworICAgICAgICBpZiAoIWlzPEhU
TUxJbWFnZUVsZW1lbnQ+KGl0ZXJhdG9yLm5vZGUoKSkpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBhdXRvJiBpbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVtZW50
PigqaXRlcmF0b3Iubm9kZSgpKTsKKyAgICAgICAgYXV0byogY2FjaGVkSW1hZ2UgPSBpbWFnZUVs
ZW1lbnQuY2FjaGVkSW1hZ2UoKTsKKyAgICAgICAgaWYgKGNhY2hlZEltYWdlICYmIGNhY2hlZElt
YWdlLT5pc0xvYWRpbmcoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoJmltYWdlRWxlbWVudCk7
CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZy5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKaW5kZXggMGI1ODIwMzNmYThiZjcxMjhlOTFlZjA0ZTcx
MzZkMDNlZDQ2Y2M3Yy4uNzQ1Yjc2MzgxZWUyMDczODA1ZGU3ZmQ0MzIxYjk0MTQxOTM5M2Y5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nLmgKQEAgLTI3LDEyICsyNywxNCBAQAogCiAjaW5jbHVk
ZSAiUG9zaXRpb24uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxFbGVtZW50Owor
Y2xhc3MgSFRNTEltYWdlRWxlbWVudDsKIGNsYXNzIEhUTUxTcGFuRWxlbWVudDsKIGNsYXNzIEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OwogY2xhc3MgUmVuZGVyQmxvY2s7CkBAIC0xMDIsNiAr
MTA0LDggQEAgYm9vbCBhcmVJZGVudGljYWxFbGVtZW50cyhjb25zdCBOb2RlJiwgY29uc3QgTm9k
ZSYpOwogCiBib29sIHBvc2l0aW9uQmVmb3JlT3JBZnRlck5vZGVJc0NhbmRpZGF0ZShOb2RlJik7
CiAKK1dFQkNPUkVfRVhQT1JUIEhhc2hTZXQ8UmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+PiB2aXNp
YmxlSW1hZ2VFbGVtZW50c0luUmFuZ2VXaXRoTm9uTG9hZGVkSW1hZ2VzKGNvbnN0IFJhbmdlJik7
CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIFBvc2l0aW9uCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggODkxYzEyODhjNmUzMTRhY2NhZTliNjI3
MTk3ODE4ODFlNzQyZGMyNS4uZThiMjQzNjA1MTUxOGRhMzM4MWQyZjU3NTdmYTYxODZlNjg1M2E3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtODYsNiArODYsNyBAQAogI2luY2x1
ZGUgIlJhbmdlLmgiCiAjaW5jbHVkZSAiUmVtb3ZlRm9ybWF0Q29tbWFuZC5oIgogI2luY2x1ZGUg
IlJlbmRlckJsb2NrLmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5k
ZXJUZXh0Q29udHJvbC5oIgogI2luY2x1ZGUgIlJlbmRlcmVkRG9jdW1lbnRNYXJrZXIuaCIKICNp
bmNsdWRlICJSZW5kZXJlZFBvc2l0aW9uLmgiCkBAIC02NzQsNyArNjc1LDEzIEBAIHZvaWQgRWRp
dG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KERvY3VtZW50RnJhZ21lbnQmIGZyYWdt
ZW50LCBTZWxlY3RSZXBsCiAKICAgICBhdXRvIGNvbW1hbmQgPSBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksICZmcmFnbWVudCwgb3B0aW9ucywgZWRpdGluZ0FjdGlv
bik7CiAgICAgY29tbWFuZC0+YXBwbHkoKTsKLSAgICByZXZlYWxTZWxlY3Rpb25BZnRlckVkaXRp
bmdPcGVyYXRpb24oKTsKKworICAgIG1faW1hZ2VFbGVtZW50c1RvTG9hZEJlZm9yZVJldmVhbGlu
Z1NlbGVjdGlvbi5jbGVhcigpOworICAgIGlmIChhdXRvIGluc2VydGlvblJhbmdlID0gY29tbWFu
ZC0+aW5zZXJ0ZWRDb250ZW50UmFuZ2UoKSkKKyAgICAgICAgbV9pbWFnZUVsZW1lbnRzVG9Mb2Fk
QmVmb3JlUmV2ZWFsaW5nU2VsZWN0aW9uID0gdmlzaWJsZUltYWdlRWxlbWVudHNJblJhbmdlV2l0
aE5vbkxvYWRlZEltYWdlcygqaW5zZXJ0aW9uUmFuZ2UpOworCisgICAgaWYgKG1faW1hZ2VFbGVt
ZW50c1RvTG9hZEJlZm9yZVJldmVhbGluZ1NlbGVjdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIHJl
dmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOwogCiAgICAgc2VsZWN0aW9uID0g
bV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBpZiAoc2VsZWN0aW9uLmlzSW5Q
YXNzd29yZEZpZWxkKCkpCkBAIC0xNTcxLDYgKzE1NzgsNDQgQEAgdm9pZCBFZGl0b3I6OmNvcHlJ
bWFnZShjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpCiAKICNlbmRpZgogCit2b2lkIEVkaXRv
cjo6cmV2ZWFsU2VsZWN0aW9uSWZOZWVkZWRBZnRlckxvYWRpbmdJbWFnZUZvckVsZW1lbnQoSFRN
TEltYWdlRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICBpZiAobV9pbWFnZUVsZW1lbnRzVG9Mb2Fk
QmVmb3JlUmV2ZWFsaW5nU2VsZWN0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFtX2ltYWdlRWxlbWVudHNUb0xvYWRCZWZvcmVSZXZlYWxpbmdTZWxlY3Rpb24ucmVt
b3ZlKCZlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFtX2ltYWdlRWxlbWVu
dHNUb0xvYWRCZWZvcmVSZXZlYWxpbmdTZWxlY3Rpb24uaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgcXVldWVkIGFzIGEgdGFzayBmb3Ig
dGhlIG5leHQgcmVuZGVyaW5nIHVwZGF0ZS4KKyAgICBkb2N1bWVudCgpLnVwZGF0ZUxheW91dCgp
OworICAgIHJldmVhbFNlbGVjdGlvbkFmdGVyRWRpdGluZ09wZXJhdGlvbigpOworfQorCit2b2lk
IEVkaXRvcjo6cmVuZGVyTGF5ZXJEaWRTY3JvbGwoY29uc3QgUmVuZGVyTGF5ZXImIGxheWVyKQor
eworICAgIGlmIChtX2ltYWdlRWxlbWVudHNUb0xvYWRCZWZvcmVSZXZlYWxpbmdTZWxlY3Rpb24u
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHN0YXJ0Q29udGFpbmVyID0g
bWFrZVJlZlB0cihtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkuY29udGFp
bmVyTm9kZSgpKTsKKyAgICBpZiAoIXN0YXJ0Q29udGFpbmVyKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvKiBzdGFydENvbnRhaW5lclJlbmRlcmVyID0gc3RhcnRDb250YWluZXItPnJlbmRl
cmVyKCk7CisgICAgaWYgKCFzdGFydENvbnRhaW5lclJlbmRlcmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICAvLyBGSVhNRTogSWRlYWxseSwgdGhpcyB3b3VsZCBhbHNvIGNhbmNlbCBkZWZlcnJl
ZCBzZWxlY3Rpb24gcmV2ZWFsaW5nIGlmIHRoZSBzZWxlY3Rpb24gaXMgaW5zaWRlIGEgc3ViZnJh
bWUgYW5kIGEgcGFyZW50IGZyYW1lIGlzIHNjcm9sbGVkLgorICAgIGZvciAoYXV0byogZW5jbG9z
aW5nTGF5ZXIgPSBzdGFydENvbnRhaW5lclJlbmRlcmVyLT5lbmNsb3NpbmdMYXllcigpOyBlbmNs
b3NpbmdMYXllcjsgZW5jbG9zaW5nTGF5ZXIgPSBlbmNsb3NpbmdMYXllci0+cGFyZW50KCkpIHsK
KyAgICAgICAgaWYgKGVuY2xvc2luZ0xheWVyID09ICZsYXllcikgeworICAgICAgICAgICAgbV9p
bWFnZUVsZW1lbnRzVG9Mb2FkQmVmb3JlUmV2ZWFsaW5nU2VsZWN0aW9uLmNsZWFyKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKwogYm9vbCBFZGl0b3I6OmlzQ29u
dGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gY2xpZW50
KCkgJiYgY2xpZW50KCktPmlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCk7CkBAIC0z
NTc1LDYgKzM2MjAsNyBAQCB2b2lkIEVkaXRvcjo6cmVzcG9uZFRvQ2hhbmdlZFNlbGVjdGlvbihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgT3B0aW9uU2V0PEZyYW1lUwogI2VuZGlmCiAKICAgICBz
ZXRTdGFydE5ld0tpbGxSaW5nU2VxdWVuY2UodHJ1ZSk7CisgICAgbV9pbWFnZUVsZW1lbnRzVG9M
b2FkQmVmb3JlUmV2ZWFsaW5nU2VsZWN0aW9uLmNsZWFyKCk7CiAKICAgICBpZiAobV9lZGl0b3JV
SVVwZGF0ZVRpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oCmluZGV4IDlhY2E4ZTczNDEwNGY5YmUzMTNhZmI5YzA0NjhhYmNmMjYzOGQ0YzIuLjc3
YTBmMTg3ZjQwZjM4MWU5OThhNjZjMDhiOGI3Y2E0OTNjZTI3NWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuaApAQCAtNzIsNiArNzIsNyBAQCBjbGFzcyBLZXlib2FyZEV2ZW50OwogY2xhc3MgS2ls
bFJpbmc7CiBjbGFzcyBQYXN0ZWJvYXJkOwogY2xhc3MgUGFzdGVib2FyZFdyaXRlckRhdGE7Citj
bGFzcyBSZW5kZXJMYXllcjsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIEZvbnQ7CiBjbGFz
cyBTcGVsbENoZWNrUmVxdWVzdDsKQEAgLTE4Myw2ICsxODQsOSBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBjb3B5SW1hZ2UoY29uc3QgSGl0VGVzdFJlc3VsdCYpOwogI2VuZGlm
CiAKKyAgICB2b2lkIHJlbmRlckxheWVyRGlkU2Nyb2xsKGNvbnN0IFJlbmRlckxheWVyJik7Cisg
ICAgdm9pZCByZXZlYWxTZWxlY3Rpb25JZk5lZWRlZEFmdGVyTG9hZGluZ0ltYWdlRm9yRWxlbWVu
dChIVE1MSW1hZ2VFbGVtZW50Jik7CisKICAgICBTdHJpbmcgcmVhZFBsYWluVGV4dEZyb21QYXN0
ZWJvYXJkKFBhc3RlYm9hcmQmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5kZW50KCk7
CkBAIC02MjgsNiArNjMyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgYm9vbCBtX2lzR2V0
dGluZ0RpY3Rpb25hcnlQb3B1cEluZm8geyBmYWxzZSB9OworICAgIEhhc2hTZXQ8UmVmUHRyPEhU
TUxJbWFnZUVsZW1lbnQ+PiBtX2ltYWdlRWxlbWVudHNUb0xvYWRCZWZvcmVSZXZlYWxpbmdTZWxl
Y3Rpb247CiB9OwogCiBpbmxpbmUgdm9pZCBFZGl0b3I6OnNldFN0YXJ0TmV3S2lsbFJpbmdTZXF1
ZW5jZShib29sIGZsYWcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuY3BwCmluZGV4IDlmNTQxZjA4NDYyOTZlN2YxOGFmYzc3Nzg4MmUyZjJi
YmYxMDY1OTkuLjYyYmU0NDcyNmQ2OTc5MmNhZjljZDkwNGIxOGZjNTc4NDhmMDgxNzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CkBAIC0xNzcxLDQgKzE3NzEsMTIgQEAgYm9vbCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cGVy
Zm9ybVRyaXZpYWxSZXBsYWNlKGNvbnN0IFJlcGxhY2VtZW50RnJhZ21lbnQmIGYKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAorUmVmUHRyPFJhbmdlPiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6aW5z
ZXJ0ZWRDb250ZW50UmFuZ2UoKSBjb25zdAoreworICAgIGlmIChhdXRvIGRvY3VtZW50ID0gbWFr
ZVJlZlB0cihtX3N0YXJ0T2ZJbnNlcnRlZENvbnRlbnQuZG9jdW1lbnQoKSkpCisgICAgICAgIHJl
dHVybiBSYW5nZTo6Y3JlYXRlKCpkb2N1bWVudCwgbV9zdGFydE9mSW5zZXJ0ZWRDb250ZW50LCBt
X2VuZE9mSW5zZXJ0ZWRDb250ZW50KTsKKworICAgIHJldHVybiBudWxscHRyOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmgKaW5kZXggMjljZWM0M2FiMGJjMTMyMjhlZDM3OTc2YzBkNjNkZjI1
YTdhMTE5NS4uZTk3MzNiZmI5NGIxMjQyNmI3NDc3NzI1ODJlMGUzYWMwODE4MzIwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaApAQCAt
MzEsNiArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudEZyYWdt
ZW50OworY2xhc3MgUmFuZ2U7CiBjbGFzcyBSZXBsYWNlbWVudEZyYWdtZW50OwogCiBjbGFzcyBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7CkBA
IC01Miw2ICs1Myw4IEBAIHB1YmxpYzoKIAogICAgIFZpc2libGVTZWxlY3Rpb24gdmlzaWJsZVNl
bGVjdGlvbkZvckluc2VydGVkVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZVNlbGVjdGlv
bkZvckluc2VydGVkVGV4dDsgfQogCisgICAgUmVmUHRyPFJhbmdlPiBpbnNlcnRlZENvbnRlbnRS
YW5nZSgpIGNvbnN0OworCiBwcml2YXRlOgogICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKERv
Y3VtZW50JiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYsIE9wdGlvblNldDxDb21tYW5kT3B0
aW9uPiwgRWRpdEFjdGlvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBjYjRi
ODFhMzU2ODVjOGVhMGVmMWQzMWY3NzUxYTllMGUwNzAwOTlkLi5hMzU2MTUxZjdlMmNmZjFhYmQ3
YWY2OGUxMjNmOWExN2NlYzFjNzExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00
MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXIuaCIKKyNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKICNp
bmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCkBAIC0yNDIzLDYg
KzI0MjQsMTEgQEAgdm9pZCBGcmFtZVZpZXc6OnNjcm9sbFBvc2l0aW9uQ2hhbmdlZChjb25zdCBT
Y3JvbGxQb3NpdGlvbiYgb2xkUG9zaXRpb24sIGNvbnN0IFMKICAgICBMT0dfV0lUSF9TVFJFQU0o
U2Nyb2xsaW5nLCBzdHJlYW0gPDwgIkZyYW1lVmlldyAiIDw8IHRoaXMgPDwgIiBzY3JvbGxQb3Np
dGlvbkNoYW5nZWQgZnJvbSAiIDw8IG9sZFBvc2l0aW9uIDw8ICIgdG8gIiA8PCBuZXdQb3NpdGlv
biA8PCAiIChzY2FsZSAiIDw8IGZyYW1lU2NhbGVGYWN0b3IoKSA8PCAiICkiKTsKICAgICB1cGRh
dGVMYXlvdXRWaWV3cG9ydCgpOwogICAgIHZpZXdwb3J0Q29udGVudHNDaGFuZ2VkKCk7CisKKyAg
ICBpZiAoYXV0byogcmVuZGVyVmlldyA9IHRoaXMtPnJlbmRlclZpZXcoKSkgeworICAgICAgICBp
ZiAoYXV0byogbGF5ZXIgPSByZW5kZXJWaWV3LT5sYXllcigpKQorICAgICAgICAgICAgZnJhbWUo
KS5lZGl0b3IoKS5yZW5kZXJMYXllckRpZFNjcm9sbCgqbGF5ZXIpOworICAgIH0KIH0KIAogdm9p
ZCBGcmFtZVZpZXc6OmFwcGx5UmVjdXJzaXZlbHlXaXRoVmlzaWJsZVJlY3QoY29uc3QgV1RGOjpG
dW5jdGlvbjx2b2lkIChGcmFtZVZpZXcmIGZyYW1lVmlldywgY29uc3QgSW50UmVjdCYgdmlzaWJs
ZVJlY3QpPiYgYXBwbHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaAppbmRleCA3Y2Q5NWRmYzgyM2Q1
OTY0MDIwNTJjMmE4ZmI5MDU5MzE1MmZlOTA0Li40MDc4ZWVmN2Y4MzhhY2NhMzgzY2MxZDVlNzdl
ZDhiNTA4NzQzOTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmgKQEAgLTY1OSw2ICs2NTksOCBA
QCBwdWJsaWM6CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JIb3Jpem9udGFsU2Nyb2xsYmFy
KCkgY29uc3QgZmluYWw7CiAgICAgR3JhcGhpY3NMYXllciogbGF5ZXJGb3JWZXJ0aWNhbFNjcm9s
bGJhcigpIGNvbnN0IGZpbmFsOwogCisgICAgdm9pZCByZW5kZXJMYXllckRpZFNjcm9sbChjb25z
dCBSZW5kZXJMYXllciYpOworCiBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBzY3JvbGxDb250ZW50c0Zh
c3RQYXRoKGNvbnN0IEludFNpemUmIHNjcm9sbERlbHRhLCBjb25zdCBJbnRSZWN0JiByZWN0VG9T
Y3JvbGwsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KSBmaW5hbDsKICAgICB2b2lkIHNjcm9sbENv
bnRlbnRzU2xvd1BhdGgoY29uc3QgSW50UmVjdCYgdXBkYXRlUmVjdCkgZmluYWw7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcAppbmRleCAzZjU4MTgzOTk1MjIwYTM4M2YzZjg3NjhhOWJmODM0YTNmMmYzODAwLi5i
NTMyYjFkMjJmMzA1Zjg5ZDM5YWMxZjA3NmZhMTY2ZDQwMjljODc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKQEAgLTI5ODYsNiArMjk4Niw5IEBAIHZvaWQgUGFnZTo6Y29uZmlndXJlTG9nZ2luZ0NoYW5u
ZWwoY29uc3QgU3RyaW5nJiBjaGFubmVsTmFtZSwgV1RGTG9nQ2hhbm5lbFN0YXRlCiAKIHZvaWQg
UGFnZTo6ZGlkRmluaXNoTG9hZGluZ0ltYWdlRm9yRWxlbWVudChIVE1MSW1hZ2VFbGVtZW50JiBl
bGVtZW50KQogeworICAgIGF1dG8gcHJvdGVjdGVkRWxlbWVudCA9IG1ha2VSZWYoZWxlbWVudCk7
CisgICAgaWYgKGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFt
ZSgpKSkKKyAgICAgICAgZnJhbWUtPmVkaXRvcigpLnJldmVhbFNlbGVjdGlvbklmTmVlZGVkQWZ0
ZXJMb2FkaW5nSW1hZ2VGb3JFbGVtZW50KGVsZW1lbnQpOwogICAgIGNocm9tZSgpLmNsaWVudCgp
LmRpZEZpbmlzaExvYWRpbmdJbWFnZUZvckVsZW1lbnQoZWxlbWVudCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDVkZWFjNGJiOGRjYmZhNjAzNGQ3
ZWYxOGRlOWYyM2Y1ZWIzNDgzNGYuLmFhMWE2Nzc1OWRlZmMxYjdmODA4NDg1ZGJhYzU0MzFmNzA1
ZmNjYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtNTUs
NiArNTUsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50TWFya2VyQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUuaCIK
KyNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRXZl
bnRIYW5kbGVyLmgiCiAjaW5jbHVkZSAiRkVDb2xvck1hdHJpeC5oIgpAQCAtMjYwOSw2ICsyNjEw
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xsVG8oY29uc3QgU2Nyb2xsUG9zaXRpb24mIHBv
c2l0aW9uKQogICAgICAgICB2aWV3LmZyYW1lVmlldygpLmRpZENoYW5nZVNjcm9sbE9mZnNldCgp
OwogCiAgICAgdmlldy5mcmFtZVZpZXcoKS52aWV3cG9ydENvbnRlbnRzQ2hhbmdlZCgpOworICAg
IGZyYW1lLmVkaXRvcigpLnJlbmRlckxheWVyRGlkU2Nyb2xsKCp0aGlzKTsKIH0KIAogc3RhdGlj
IGlubGluZSBib29sIGZyYW1lRWxlbWVudEFuZFZpZXdQZXJtaXRTY3JvbGwoSFRNTEZyYW1lRWxl
bWVudEJhc2UqIGZyYW1lRWxlbWVudEJhc2UsIEZyYW1lVmlldyYgZnJhbWVWaWV3KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCA0MzJmNzU5NzQ2YmU5YzlkZjY1ZDQxMzM3NmViNzU2OTVhNmQ2ZWY1Li4zOGUxYjk1NTc1NzNk
NjFmN2YzYzFiMmRhZTAwMDU2MDY4ODAwOTRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtOTA4LDI4ICs5MDgsMTYgQEAg
dm9pZCBXZWJQYWdlOjpkaWRDb25jbHVkZUVkaXREcmFnKCkKIAogICAgIG1fcGVuZGluZ0ltYWdl
RWxlbWVudHNGb3JEcm9wU25hcHNob3QuY2xlYXIoKTsKIAotICAgIGJvb2wgd2FpdGluZ0ZvckFu
eUltYWdlVG9Mb2FkID0gZmFsc2U7CiAgICAgYXV0byBmcmFtZSA9IG1ha2VSZWYobV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKSk7CiAgICAgaWYgKGF1dG8gc2Vs
ZWN0aW9uUmFuZ2UgPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVk
UmFuZ2UoKSkgewotICAgICAgICBmb3IgKFRleHRJdGVyYXRvciBpdGVyYXRvcihzZWxlY3Rpb25S
YW5nZS5nZXQoKSk7ICFpdGVyYXRvci5hdEVuZCgpOyBpdGVyYXRvci5hZHZhbmNlKCkpIHsKLSAg
ICAgICAgICAgIGF1dG8qIG5vZGUgPSBpdGVyYXRvci5ub2RlKCk7Ci0gICAgICAgICAgICBpZiAo
IWlzPEhUTUxJbWFnZUVsZW1lbnQ+KG5vZGUpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
Ci0gICAgICAgICAgICBhdXRvJiBpbWFnZUVsZW1lbnQgPSBkb3duY2FzdDxIVE1MSW1hZ2VFbGVt
ZW50Pigqbm9kZSk7Ci0gICAgICAgICAgICBhdXRvKiBjYWNoZWRJbWFnZSA9IGltYWdlRWxlbWVu
dC5jYWNoZWRJbWFnZSgpOwotICAgICAgICAgICAgaWYgKGNhY2hlZEltYWdlICYmIGNhY2hlZElt
YWdlLT5pbWFnZSgpICYmIGNhY2hlZEltYWdlLT5pbWFnZSgpLT5pc051bGwoKSkgewotICAgICAg
ICAgICAgICAgIG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNob3QuYWRkKCZpbWFn
ZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgIHdhaXRpbmdGb3JBbnlJbWFnZVRvTG9hZCA9IHRy
dWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgbV9wZW5kaW5nSW1hZ2VFbGVt
ZW50c0ZvckRyb3BTbmFwc2hvdCA9IHZpc2libGVJbWFnZUVsZW1lbnRzSW5SYW5nZVdpdGhOb25M
b2FkZWRJbWFnZXMoKnNlbGVjdGlvblJhbmdlKTsKICAgICAgICAgYXV0byBjb2xsYXBzZWRSYW5n
ZSA9IFJhbmdlOjpjcmVhdGUoc2VsZWN0aW9uUmFuZ2UtPm93bmVyRG9jdW1lbnQoKSwgc2VsZWN0
aW9uUmFuZ2UtPmVuZFBvc2l0aW9uKCksIHNlbGVjdGlvblJhbmdlLT5lbmRQb3NpdGlvbigpKTsK
ICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGVkUmFuZ2UoY29sbGFwc2VkUmFu
Z2UucHRyKCksIERPV05TVFJFQU0sIEZyYW1lU2VsZWN0aW9uOjpTaG91bGRDbG9zZVR5cGluZzo6
WWVzLCBVc2VyVHJpZ2dlcmVkKTsKIAogICAgICAgICBtX3JhbmdlRm9yRHJvcFNuYXBzaG90ID0g
V1RGTW92ZShzZWxlY3Rpb25SYW5nZSk7CiAgICAgfQogCi0gICAgaWYgKCF3YWl0aW5nRm9yQW55
SW1hZ2VUb0xvYWQpCisgICAgaWYgKG1fcGVuZGluZ0ltYWdlRWxlbWVudHNGb3JEcm9wU25hcHNo
b3QuaXNFbXB0eSgpKQogICAgICAgICBjb21wdXRlQW5kU2VuZEVkaXREcmFnU25hcHNob3QoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDgwYzNkYjI3ZDdlMGZjNWU3MjczZTc5YWM4MjhmMjlmNjNjYTJjYWUuLjE0MGM1Y2JmM2U0Njk0
ODE4Zjc3YjczOTViNThhYjlhNjJlZjc1ODIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxOS0wOS0wNiAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBJbmNvcnJlY3Qgc2Vs
ZWN0aW9uIHJlY3QgcmV2ZWFsZWQgYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4gYSBjb250ZW50ZWRp
dGFibGUgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjAxNTQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81MDk1NjQyOT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgQWRkIGFuIEFQSSB0ZXN0IHRv
IGV4ZXJjaXNlIHRoZSBzY2VuYXJpbyB3aGVyZSB3ZSBzY3JvbGwgdG8gcmV2ZWFsIHRoZSBzZWxl
Y3Rpb24gYWZ0ZXIgcGFzdGluZyBhbiBpbWFnZSB0aGF0IHdhcworICAgICAgICBkaXJlY3RseSB3
cml0dGVuIHRvIHRoZSBwYXN0ZWJvYXJkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tOgorCiAyMDE5LTA5LTA1ICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKGlPUyAxMyk6IEJ1bGxl
dGVkIGxpc3QgY29waWVkIGZyb20gTm90ZXMgdG8gTWFpbCByZXN1bHRzIGluIFRpbWVzIE5ldyBS
b21hbgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
YXN0ZUltYWdlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0
ZUltYWdlLm1tCmluZGV4IGIxZDFiNmZmNzEyNWUyMmY3ZTM4ZGYwMGI0OTVjODYyNWFkZDA4OGEu
LjNhMmZjOTBmMGMyYmNlZmQxMzc5ZTYxOGE4MGVhNzU3ZTY1OTRiOTUgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0KQEAgLTMz
LDcgKzMzLDcgQEAKICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKLSNpbmNsdWRlIDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNl
cnZpY2VzLmg+CisjaW1wb3J0IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2Vz
Lmg+CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEzNyw2ICsxMzcsMjEgQEAgVEVT
VChQYXN0ZUltYWdlLCBQYXN0ZVBOR0ltYWdlKQogICAgIEVYUEVDVF9XS19TVFJFUSgiMjAwIiwg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImltYWdlRWxlbWVudC53aWR0
aCJdKTsKIH0KIAorVEVTVChQYXN0ZUltYWdlLCBSZXZlYWxTZWxlY3Rpb25BZnRlclBhc3RpbmdJ
bWFnZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxtZXRhIG5hbWU9J3ZpZXdwb3J0JyBj
b250ZW50PSd3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSc+PGJvZHkgY29udGVu
dGVkaXRhYmxlPkhlbGxvIHdvcmxkPC9ib2R5PiJdOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmZvY3VzKCkiXTsKKyAgICBbd2ViVmll
dyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0Q29tbWFuZDpAIkluc2VydFRleHQiIGFyZ3VtZW50
OkAiSGVsbG8gd29ybGQiXTsKKyAgICBbd2ViVmlldyBfc3luY2hyb25vdXNseUV4ZWN1dGVFZGl0
Q29tbWFuZDpAIkluc2VydFBhcmFncmFwaCIgYXJndW1lbnQ6bmlsXTsKKworICAgIHdyaXRlSW1h
Z2VEYXRhVG9QYXN0ZWJvYXJkKChfX2JyaWRnZSBOU1N0cmluZyAqKWtVVFR5cGVKUEVHLCBbTlNE
YXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBwYXRoRm9y
UmVzb3VyY2U6QCJzdW5zZXQtaW4tY3VwZXJ0aW5vLTYwMHB4IiBvZlR5cGU6QCJqcGciIGluRGly
ZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV0pOworICAgIFt3ZWJWaWV3IHBhc3Rl
Om5pbF07CisKKyAgICB3aGlsZSAoW1t3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJkb2N1bWVudC5zY3JvbGxpbmdFbGVtZW50LnNjcm9sbFRvcCJdIGRvdWJsZVZhbHVlXSA8
PSAwKQorICAgICAgICBbTlNSdW5Mb29wLmN1cnJlbnRSdW5Mb29wIHJ1blVudGlsRGF0ZTpbTlNE
YXRlIGRhdGVXaXRoVGltZUludGVydmFsU2luY2VOb3c6MC4wNV1dOworfQorCiAjaWYgUExBVEZP
Uk0oTUFDKQogdm9pZCB3cml0ZUJ1bmRsZUZpbGVUb1Bhc3RlYm9hcmQoaWQgb2JqZWN0KQogewpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDU0OGFkNjA5YjVjYTgwYTZkZWQ5N2ZjN2JlNTRhNzJkNDNiMDE4ZDYuLmZhZTZmM2M4
NTIwNDJlZjg0MDE2OGMxM2M3YzBlZDIzMjg4MDgxMTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAor
MjAxOS0wOS0wNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBJbmNvcnJlY3Qgc2VsZWN0aW9uIHJlY3QgcmV2ZWFsZWQgYWZ0ZXIgcGFzdGluZyBpbWFn
ZXMgaW4gYSBjb250ZW50ZWRpdGFibGUgZWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTQ5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81
MDk1NjQyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAg
QWRkIGEgY291cGxlIG9mIG5ldyBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZG8tbm90LXJldmVhbC1zZWxlY3Rpb24tYWZ0ZXItcHJvZ3JhbW1hdGljLXNjcm9s
bC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kby1u
b3QtcmV2ZWFsLXNlbGVjdGlvbi1hZnRlci1wcm9ncmFtbWF0aWMtc2Nyb2xsLmh0bWw6IEFkZGVk
LgorCisgICAgICAgIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGRvbid0IHRyeSB0byBzY3Jv
bGwgdG8gcmV2ZWFsIHRoZSBjYXJldCBhZnRlciBwYXN0aW5nLCBpZiB0aGUgc2Nyb2xsIHBvc2l0
aW9uIHdhcworICAgICAgICBjaGFuZ2VkIGJlZm9yZSB0aGUgaW1hZ2VzIGZpbmlzaGVkIGxvYWRp
bmcuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcmV2ZWFsLXNlbGVjdGlvbi1hZnRl
ci1wYXN0aW5nLWltYWdlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
cGFzdGVib2FyZC9yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXBhc3RpbmctaW1hZ2VzLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9lZGl0aW5nL3Bhc3RlYm9hcmQvcmV2ZWFsLXNl
bGVjdGlvbi1hZnRlci1wYXN0aW5nLWltYWdlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorCisgICAg
ICAgIFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIHJldmVhbCB0aGUgY2FyZXQgYWZ0ZXIgbG9h
ZGluZyBtdWx0aXBsZSBwYXN0ZWQgaW1hZ2VzIGluIGEgc2VsZWN0aW9uLCBhbmQgZGlzcGF0Y2gg
YQorICAgICAgICBzY3JvbGwgZXZlbnQgaW4gdGhlIHByb2Nlc3MuCisKIDIwMTktMDktMDUgIEp1
c3RpbiBGYW4gIDxqdXN0aW5fZmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBJbXBs
ZW1lbnQgR1BVVW5jYXB0dXJlZEVycm9yRXZlbnQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9kby1ub3QtcmV2ZWFsLXNlbGVjdGlvbi1hZnRlci1wcm9ncmFtbWF0
aWMtc2Nyb2xsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9k
by1ub3QtcmV2ZWFsLXNlbGVjdGlvbi1hZnRlci1wcm9ncmFtbWF0aWMtc2Nyb2xsLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NTBjNWQ4NzdjMDRiYTZjNGMxYTA5OWY2NmQxYzE0MWEwOTY2M2Qw
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RvLW5v
dC1yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXByb2dyYW1tYXRpYy1zY3JvbGwtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGRvIG5vdCBzY3Jv
bGwgdG8gcmV2ZWFsIHRoZSBzZWxlY3Rpb24gYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4gYW4gZWRp
dGFibGUgYXJlYSwgaWYgdGhlIHBhZ2UgcHJvZ3JhbW1hdGljYWxseSBzY3JvbGxzIHRoZSBlZGl0
b3IuIFRvIHJ1biB0aGUgdGVzdCBtYW51YWxseSwgY29weSB0aGUgc2VsZWN0ZWQgaW1hZ2VzIGFu
ZCBwYXN0ZSBpbnRvIHRoZSByZWQgZWRpdGFibGUgY29udGFpbmVyIGFib3ZlLiBUaGUgY29udGFp
bmVyJ3Mgc2Nyb2xsIHBvc2l0aW9uIHNob3VsZCByZW1haW4gYXQgMC4KKworT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgorCisKK1BBU1MgYWxsSW1hZ2VzQXJlRG9uZUxvYWRpbmcoKSBiZWNhbWUg
dHJ1ZQorUEFTUyBlZGl0b3Iuc2Nyb2xsVG9wIGlzIDAKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorSGVyZSdzIHRvIHRoZSBjcmF6eSBvbmVzLCB0aGUg
bWlzZml0cywgdGhlIHJlYmVscywgdGhlIHRyb3VibGUgbWFrZXJzLCB0aGUgcm91bmQgcGVncyBp
biB0aGUgc3F1YXJlIGhvbGVzLCB0aGUgb25lcyB3aG8gc2VlIHRoaW5ncyBkaWZmZXJlbnRseS4g
VGhlcmUgbm90IGZvbmQgb2YgcnVsZXMsIGFuZCB0aGV5IGhhdmUgbm8gcmVzcGVjdCBmb3IgdGhl
IHN0YXR1cyBxdW8sIHlvdSBjYW4gcXVvdGUgdGhlbiwgZGlzYWdyZWUgd2l0aCB0aGVtLCBnbG9y
aWZ5IG9yIHZpbGlmeSB0aGVtLCBhYm91dCB0aGUgb25seSB0aGluZyB5b3UgY2FuJ3QgZG8gaXMg
aWdub3JlIHRoZW0uIEJlY2F1c2UgdGhleSBjaGFuZ2UgdGhpbmdzLiBUaGV5IHB1c2ggdGhlIGh1
bWFuIHJhY2UgZm9yd2FyZC4gQW5kIHdoaWxlIHNvbWUgbWF5IHNlZSB0aGVtIGFzIHRoZSBjcmF6
eSBvbmVzLCB3ZSBzZWUgZ2VuaXVzLiBCZWNhdXNlIHRoZSBwZW9wbGUgd2hvIGFyZSBjcmF6eSBl
bm91Z2ggdG8gdGhpbmsgdGhleSBjYW4gY2hhbmdlIHRoZSB3b3JsZCBhcmUgdGhlIG9uZXMgd2hv
IGRvLgorCisKKworCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2RvLW5vdC1yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXByb2dyYW1tYXRpYy1zY3JvbGwuaHRt
bCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kby1ub3QtcmV2ZWFsLXNlbGVjdGlv
bi1hZnRlci1wcm9ncmFtbWF0aWMtc2Nyb2xsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGYwNmM4YjdmNzdm
ODY4NzhkN2Y4MjYyMjFkNjg4ZDU1OGUxZWI1ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kby1ub3QtcmV2ZWFsLXNlbGVjdGlvbi1hZnRlci1wcm9n
cmFtbWF0aWMtc2Nyb2xsLmh0bWwKQEAgLTAsMCArMSw2MiBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDxzY3JpcHQgc3JjPSIuLi9lZGl0aW5nLmpzIj48L3NjcmlwdD4K
KyAgICA8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0Pgor
ICAgIDxzY3JpcHQ+CisgICAgICAgIGpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgZG8gbm90IHNjcm9sbCB0byByZXZl
YWwgdGhlIHNlbGVjdGlvbiBhZnRlciBwYXN0aW5nIGltYWdlcyBpbiBhbiBlZGl0YWJsZSBhcmVh
LCBpZiB0aGUgcGFnZSBwcm9ncmFtbWF0aWNhbGx5IHNjcm9sbHMgdGhlIGVkaXRvci4gVG8gcnVu
IHRoZSB0ZXN0IG1hbnVhbGx5LCBjb3B5IHRoZSBzZWxlY3RlZCBpbWFnZXMgYW5kIHBhc3RlIGlu
dG8gdGhlIHJlZCBlZGl0YWJsZSBjb250YWluZXIgYWJvdmUuIFRoZSBjb250YWluZXIncyBzY3Jv
bGwgcG9zaXRpb24gc2hvdWxkIHJlbWFpbiBhdCAwLiIpOworCisgICAgICAgIGZ1bmN0aW9uIGFs
bEltYWdlc0FyZURvbmVMb2FkaW5nKCkgeworICAgICAgICAgICAgZm9yIChjb25zdCBpbWFnZSBv
ZiBBcnJheS5mcm9tKGRvY3VtZW50LmJvZHkucXVlcnlTZWxlY3RvckFsbCgiaW1nIikpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFpbWFnZS5jb21wbGV0ZSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KKworICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgKCkgPT4geworICAg
ICAgICAgICAgZWRpdG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImVkaXRvciIpOworICAg
ICAgICAgICAgaW1hZ2VzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltYWdlcy10by1jb3B5
Iik7CisgICAgICAgICAgICBsYXN0TGluZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsYXN0
TGluZSIpOworCisgICAgICAgICAgICBlZGl0b3Iuc2Nyb2xsVG8oMCwgMjAwKTsKKyAgICAgICAg
ICAgIHNldFNlbGVjdGlvbkNvbW1hbmQoaW1hZ2VzLmZpcnN0Q2hpbGQsIDAsIGltYWdlcy5sYXN0
Q2hpbGQsIDEpOworCisgICAgICAgICAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgICAgICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoInBhc3RlIiwgKCkgPT4gc2V0VGlt
ZW91dCgoKSA9PiBlZGl0b3Iuc2Nyb2xsVG8oMCwgMCkpKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV4ZWNDb3B5Q29tbWFuZCgpOworICAg
ICAgICAgICAgc2V0U2VsZWN0aW9uQ29tbWFuZChsYXN0TGluZSwgMCwgbGFzdExpbmUsIDApOwor
ICAgICAgICAgICAgZXhlY1Bhc3RlQ29tbWFuZCgpOworICAgICAgICAgICAgZWRpdG9yLnNjcm9s
bFRvKDAsIDApOworCisgICAgICAgICAgICBzaG91bGRCZWNvbWVFcXVhbCgiYWxsSW1hZ2VzQXJl
RG9uZUxvYWRpbmcoKSIsICJ0cnVlIiwgKCkgPT4geworICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJlZGl0b3Iuc2Nyb2xsVG9wIiwgIjAiKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3Qo
KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c3R5
bGU+CisgICAgICAgIGRpdiNlZGl0b3IgeworICAgICAgICAgICAgd2lkdGg6IDIwMHB4OworICAg
ICAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgICAgIG92ZXJmbG93OiBzY3JvbGw7Cisg
ICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0b21hdG87CisgICAgICAgIH0KKyAgICA8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZWRpdG9yIiBjb250ZW50ZWRpdGFi
bGU+CisgICAgICAgIDxzcGFuPkhlcmUncyB0byB0aGUgY3Jhenkgb25lcywgdGhlIG1pc2ZpdHMs
IHRoZSByZWJlbHMsIHRoZSB0cm91YmxlIG1ha2VycywgdGhlIHJvdW5kIHBlZ3MgaW4gdGhlIHNx
dWFyZSBob2xlcywgdGhlIG9uZXMgd2hvIHNlZSB0aGluZ3MgZGlmZmVyZW50bHkuIFRoZXJlIG5v
dCBmb25kIG9mIHJ1bGVzLCBhbmQgdGhleSBoYXZlIG5vIHJlc3BlY3QgZm9yIHRoZSBzdGF0dXMg
cXVvLCB5b3UgY2FuIHF1b3RlIHRoZW4sIGRpc2FncmVlIHdpdGggdGhlbSwgZ2xvcmlmeSBvciB2
aWxpZnkgdGhlbSwgYWJvdXQgdGhlIG9ubHkgdGhpbmcgeW91IGNhbid0IGRvIGlzIGlnbm9yZSB0
aGVtLiBCZWNhdXNlIHRoZXkgY2hhbmdlIHRoaW5ncy4gVGhleSBwdXNoIHRoZSBodW1hbiByYWNl
IGZvcndhcmQuIEFuZCB3aGlsZSBzb21lIG1heSBzZWUgdGhlbSBhcyB0aGUgY3Jhenkgb25lcywg
d2Ugc2VlIGdlbml1cy4gQmVjYXVzZSB0aGUgcGVvcGxlIHdobyBhcmUgY3JhenkgZW5vdWdoIHRv
IHRoaW5rIHRoZXkgY2FuIGNoYW5nZSB0aGUgd29ybGQgYXJlIHRoZSBvbmVzIHdobyBkby48L3Nw
YW4+CisgICAgICAgIDxkaXY+PGJyIGlkPSJsYXN0TGluZSI+PC9kaXY+CisgICAgPC9kaXY+Cisg
ICAgPGRpdiBpZD0iaW1hZ2VzLXRvLWNvcHkiPgorICAgICAgICA8ZGl2PjxpbWcgc3JjPSJyZXNv
dXJjZXMvbW96aWxsYS5naWYiPjwvaW1nPjwvZGl2PgorICAgICAgICA8ZGl2PjxpbWcgc3JjPSJy
ZXNvdXJjZXMvYXBwbGUuZ2lmIj48L2ltZz48L2Rpdj4KKyAgICAgICAgPGRpdj48aW1nIHNyYz0i
Li4vcmVzb3VyY2VzL2FiZS5wbmciPjwvaW1nPjwvZGl2PgorICAgIDwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3JldmVh
bC1zZWxlY3Rpb24tYWZ0ZXItcGFzdGluZy1pbWFnZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL3JldmVhbC1zZWxlY3Rpb24tYWZ0ZXItcGFzdGluZy1pbWFn
ZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwOTNhYzQ0OTBiZTA3NGU2YzQ4MWFhMzA3ZjVk
NmM2ODI1YjcyNzUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvcmV2ZWFsLXNlbGVjdGlvbi1hZnRlci1wYXN0aW5nLWltYWdlcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2Ugc2Nyb2xsIHRvIHJl
dmVhbCB0aGUgc2VsZWN0aW9uIGFmdGVyIHBhc3RpbmcgaW1hZ2VzIGluIGFuIGVkaXRhYmxlIGFy
ZWEuIFRvIHJ1biB0aGUgdGVzdCBtYW51YWxseSwgY29weSB0aGUgc2VsZWN0ZWQgaW1hZ2VzIGFu
ZCBwYXN0ZSBpbnRvIHRoZSByZWQgZWRpdGFibGUgY29udGFpbmVyIGFib3ZlLiBUaGUgY29udGFp
bmVyIHNob3VsZCBzY3JvbGwgdG8gcmV2ZWFsIHRoZSBjYXJldCBhZnRlciB0aGUgbGFzdCBpbWFn
ZS4KKworU2Nyb2xsZWQgYWZ0ZXIgcGFzdGluZzoKK3wgPGRpdj4KK3wgICA8aW1nPgorfCAgICAg
c3JjPSJyZXNvdXJjZXMvbW96aWxsYS5naWYiCit8IDxkaXY+Cit8ICAgPGltZz4KK3wgICAgIHNy
Yz0icmVzb3VyY2VzL2FwcGxlLmdpZiIKK3wgPGRpdj4KK3wgICA8aW1nPgorfCAgICAgc3JjPSIu
Li9yZXNvdXJjZXMvYWJlLnBuZyIKK3wgICA8I3NlbGVjdGlvbi1jYXJldD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXBh
c3RpbmctaW1hZ2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcmV2ZWFs
LXNlbGVjdGlvbi1hZnRlci1wYXN0aW5nLWltYWdlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjMzMWNjYzE1
ZDdlMGQ3OWRkZDVhMDIwZDc3ZDg1ZjJhOThkZDA1MmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcmV2ZWFsLXNlbGVjdGlvbi1hZnRlci1wYXN0aW5n
LWltYWdlcy5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vZWRpdGluZy5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD4KKyAgICAgICAgTWFya3VwLndhaXRVbnRpbERvbmUoKTsKKyAgICAgICAgTWFy
a3VwLmRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBzY3JvbGwgdG8gcmV2
ZWFsIHRoZSBzZWxlY3Rpb24gYWZ0ZXIgcGFzdGluZyBpbWFnZXMgaW4gYW4gZWRpdGFibGUgYXJl
YS4gVG8gcnVuIHRoZSB0ZXN0IG1hbnVhbGx5LCBjb3B5IHRoZSBzZWxlY3RlZCBpbWFnZXMgYW5k
IHBhc3RlIGludG8gdGhlIHJlZCBlZGl0YWJsZSBjb250YWluZXIgYWJvdmUuIFRoZSBjb250YWlu
ZXIgc2hvdWxkIHNjcm9sbCB0byByZXZlYWwgdGhlIGNhcmV0IGFmdGVyIHRoZSBsYXN0IGltYWdl
LiIpOworCisgICAgICAgIGFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCAoKSA9PiB7CisgICAgICAg
ICAgICBlZGl0b3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZWRpdG9yIik7CisgICAgICAg
ICAgICBpbWFnZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2VzLXRvLWNvcHkiKTsK
KworICAgICAgICAgICAgZWRpdG9yLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsICgpID0+IHsK
KyAgICAgICAgICAgICAgICBNYXJrdXAuZHVtcChlZGl0b3IsICJTY3JvbGxlZCBhZnRlciBwYXN0
aW5nIik7CisgICAgICAgICAgICAgICAgTWFya3VwLm5vdGlmeURvbmUoKTsKKyAgICAgICAgICAg
IH0sIHsgb25jZTogdHJ1ZSB9KTsKKworICAgICAgICAgICAgc2V0U2VsZWN0aW9uQ29tbWFuZChp
bWFnZXMuZmlyc3RDaGlsZCwgMCwgaW1hZ2VzLmxhc3RDaGlsZCwgMSk7CisKKyAgICAgICAgICAg
IGlmICghd2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgICAgICBleGVjQ29weUNvbW1hbmQoKTsKKyAgICAgICAgICAgIGVkaXRvci5mb2N1cygpOwor
ICAgICAgICAgICAgZXhlY1Bhc3RlQ29tbWFuZCgpOworICAgICAgICB9KTsKKyAgICA8L3Njcmlw
dD4KKyAgICA8c3R5bGU+CisgICAgICAgIGRpdiNlZGl0b3IgeworICAgICAgICAgICAgd2lkdGg6
IDIwMHB4OworICAgICAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgICAgIG92ZXJmbG93
OiBzY3JvbGw7CisgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0b21hdG87CisgICAgICAg
IH0KKyAgICA8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iZWRpdG9yIiBj
b250ZW50ZWRpdGFibGU+PC9kaXY+CisgICAgPGRpdiBpZD0iaW1hZ2VzLXRvLWNvcHkiPgorICAg
ICAgICA8ZGl2PjxpbWcgc3JjPSJyZXNvdXJjZXMvbW96aWxsYS5naWYiPjwvaW1nPjwvZGl2Pgor
ICAgICAgICA8ZGl2PjxpbWcgc3JjPSJyZXNvdXJjZXMvYXBwbGUuZ2lmIj48L2ltZz48L2Rpdj4K
KyAgICAgICAgPGRpdj48aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2FiZS5wbmciPjwvaW1nPjwvZGl2
PgorICAgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zL2VkaXRpbmcvcGFzdGVib2FyZC9yZXZlYWwtc2VsZWN0aW9uLWFmdGVyLXBh
c3RpbmctaW1hZ2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcmV2ZWFsLXNlbGVjdGlvbi1hZnRlci1wYXN0aW5nLWltYWdlcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYzQ5MWNkOGQ1Yjg0NzU2MDg4NzY2NWZiNWM0NzMxYjZmNjIz
Y2RlZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcmV2ZWFsLXNlbGVjdGlvbi1hZnRlci1wYXN0aW5nLWltYWdlcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxNiBAQAorVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2Ugc2Nyb2xs
IHRvIHJldmVhbCB0aGUgc2VsZWN0aW9uIGFmdGVyIHBhc3RpbmcgaW1hZ2VzIGluIGFuIGVkaXRh
YmxlIGFyZWEuIFRvIHJ1biB0aGUgdGVzdCBtYW51YWxseSwgY29weSB0aGUgc2VsZWN0ZWQgaW1h
Z2VzIGFuZCBwYXN0ZSBpbnRvIHRoZSByZWQgZWRpdGFibGUgY29udGFpbmVyIGFib3ZlLiBUaGUg
Y29udGFpbmVyIHNob3VsZCBzY3JvbGwgdG8gcmV2ZWFsIHRoZSBjYXJldCBhZnRlciB0aGUgbGFz
dCBpbWFnZS4KKworU2Nyb2xsZWQgYWZ0ZXIgcGFzdGluZzoKK3wgPGRpdj4KK3wgICBzdHlsZT0i
LXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBhdXRvOyIKK3wgICA8aW1nPgorfCAgICAgc3JjPSJy
ZXNvdXJjZXMvbW96aWxsYS5naWYiCit8IDxkaXY+Cit8ICAgc3R5bGU9Ii13ZWJraXQtdGV4dC1z
aXplLWFkanVzdDogYXV0bzsiCit8ICAgPGltZz4KK3wgICAgIHNyYz0icmVzb3VyY2VzL2FwcGxl
LmdpZiIKK3wgPGRpdj4KK3wgICBzdHlsZT0iLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBhdXRv
OyIKK3wgICA8aW1nPgorfCAgICAgc3JjPSIuLi9yZXNvdXJjZXMvYWJlLnBuZyIKK3wgICA8I3Nl
bGVjdGlvbi1jYXJldD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>