<?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>191937</bug_id>
          
          <creation_ts>2018-11-24 01:30:07 -0800</creation_ts>
          <short_desc>Make it possible to insert editable images with a gesture</short_desc>
          <delta_ts>2018-11-25 04:12:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>bdakin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1481275</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-24 01:30:07 -0800</bug_when>
    <thetext>Make it possible to insert editable images with a gesture</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481276</commentid>
    <comment_count>1</comment_count>
      <attachid>355557</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-24 01:32:41 -0800</bug_when>
    <thetext>Created attachment 355557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481282</commentid>
    <comment_count>2</comment_count>
      <attachid>355557</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-24 01:51:48 -0800</bug_when>
    <thetext>Comment on attachment 355557
Patch

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

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm:657
&gt; +    case EditAction::ConvertToUnorderedList: return UI_STRING_KEY_INTERNAL(&quot;Convert to Unordered List&quot;, &quot;Convert to Unordered List (Undo action name)&quot;, &quot;Undo action name&quot;);

I didn&apos;t mean to change this one in this patch (if I did, I would have done them both)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481285</commentid>
    <comment_count>3</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-24 01:56:32 -0800</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=355557&amp;action=review

&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm:657
&gt; +    case EditAction::ConvertToUnorderedList: return UI_STRING_KEY_INTERNAL(&quot;Convert to Unordered List&quot;, &quot;Convert to Unordered List (Undo action name)&quot;, &quot;Undo action name&quot;);

I didn&apos;t mean to change this one in this patch (if I did, I would have done them both)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481307</commentid>
    <comment_count>4</comment_count>
      <attachid>355557</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-24 10:20:53 -0800</bug_when>
    <thetext>Comment on attachment 355557
Patch

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

&gt; Source/WebCore/editing/VisibleSelection.cpp:34
&gt; +#include &quot;ShadowRoot.h&quot;

Nit - is this needed?

&gt; Source/WebKit/UIProcess/WebEditCommandProxy.cpp:-79
&gt; -        return String();

Was this change intended?

&gt;&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm:657
&gt;&gt; +    case EditAction::ConvertToUnorderedList: return UI_STRING_KEY_INTERNAL(&quot;Convert to Unordered List&quot;, &quot;Convert to Unordered List (Undo action name)&quot;, &quot;Undo action name&quot;);
&gt; 
&gt; I didn&apos;t mean to change this one in this patch (if I did, I would have done them both)

Oops. I think I&apos;ll clean these four up in a separate patch (it looks like WebEditCommandProxy.cpp is also affected).

&gt; LayoutTests/editing/images/basic-editable-image-from-execCommand.html:11
&gt; +    window.getSelection().setBaseAndExtent(document.body, 0, document.body, 0);

Nit - setPosition(document.body, 0) would be cleaner here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481331</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-24 18:45:34 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #4)
&gt; Comment on attachment 355557 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355557&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/VisibleSelection.cpp:34
&gt; &gt; +#include &quot;ShadowRoot.h&quot;
&gt; 
&gt; Nit - is this needed?

I think whenever you see something like this in a patch that touches Sources*.txt, assume it&apos;s a unified sources build fix :P

&gt; &gt; Source/WebKit/UIProcess/WebEditCommandProxy.cpp:-79
&gt; &gt; -        return String();
&gt; 
&gt; Was this change intended?

Definitely not.

&gt; &gt;&gt; Source/WebKitLegacy/mac/WebCoreSupport/WebEditorClient.mm:657
&gt; &gt;&gt; +    case EditAction::ConvertToUnorderedList: return UI_STRING_KEY_INTERNAL(&quot;Convert to Unordered List&quot;, &quot;Convert to Unordered List (Undo action name)&quot;, &quot;Undo action name&quot;);
&gt; &gt; 
&gt; &gt; I didn&apos;t mean to change this one in this patch (if I did, I would have done them both)
&gt; 
&gt; Oops. I think I&apos;ll clean these four up in a separate patch (it looks like
&gt; WebEditCommandProxy.cpp is also affected).

Thank you!

&gt; &gt; LayoutTests/editing/images/basic-editable-image-from-execCommand.html:11
&gt; &gt; +    window.getSelection().setBaseAndExtent(document.body, 0, document.body, 0);
&gt; 
&gt; Nit - setPosition(document.body, 0) would be cleaner here.

Ooh, somehow I didn&apos;t know that was a thing (really the whole DOM selection API feels very oddly named/designed to me).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481335</commentid>
    <comment_count>6</comment_count>
      <attachid>355557</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-11-24 19:41:14 -0800</bug_when>
    <thetext>Comment on attachment 355557
Patch

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

&gt; Source/WebCore/editing/InsertEditableImageCommand.cpp:34
&gt; +InsertEditableImageCommand::InsertEditableImageCommand(Document&amp; document)

One could imagine moving the selection to the pencil position and using ReplaceSelectionCommand with EditAction::InsertEditableImage as an alternative to introducing a new edit command.

However, it seems like this may be followed up with more complex logic for inserting editable images, such as paragraph splitting, in which case we would eventually want to add a new edit command

&gt; Source/WebCore/editing/InsertEditableImageCommand.cpp:50
&gt; +    insertNodeAt(imgElement.copyRef(), endingSelection().start());

Nit - We can WTFMove(imgElement) here instead of creating a new Ref.

&gt; Source/WebCore/editing/InsertEditableImageCommand.cpp:51
&gt; +}

I think you also probably want to set the ending selection to either encompass the new image, or place it right after the new image?

&gt; Source/WebCore/editing/InsertEditableImageCommand.h:43
&gt; +    EditAction editingAction() const override { return EditAction::InsertEditableImage; }

Nit - override =&gt; final?

&gt; LayoutTests/editing/images/basic-editable-image-from-execCommand.html:10
&gt; +addEventListener(&quot;load&quot;, async () =&gt; {

It might also be good to also test undo-redoing, and then check to see where the selection ends up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481339</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-24 20:40:07 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #6)
&gt; Comment on attachment 355557 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=355557&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/editing/InsertEditableImageCommand.cpp:34
&gt; &gt; +InsertEditableImageCommand::InsertEditableImageCommand(Document&amp; document)
&gt; 
&gt; One could imagine moving the selection to the pencil position and using
&gt; ReplaceSelectionCommand with EditAction::InsertEditableImage as an
&gt; alternative to introducing a new edit command.
&gt; 
&gt; However, it seems like this may be followed up with more complex logic for
&gt; inserting editable images, such as paragraph splitting, in which case we
&gt; would eventually want to add a new edit command

Right, that&apos;s what I&apos;m envisioning. We&apos;ll need to break out of blockquotes, containers, indentation, etc. But in a future patch - this is just setting us up for that.

&gt; 
&gt; &gt; Source/WebCore/editing/InsertEditableImageCommand.cpp:50
&gt; &gt; +    insertNodeAt(imgElement.copyRef(), endingSelection().start());
&gt; 
&gt; Nit - We can WTFMove(imgElement) here instead of creating a new Ref.
&gt; 
&gt; &gt; Source/WebCore/editing/InsertEditableImageCommand.cpp:51
&gt; &gt; +}
&gt; 
&gt; I think you also probably want to set the ending selection to either
&gt; encompass the new image, or place it right after the new image?

Yeah, that&apos;s in the WebPageIOS code but I should move it here instead.

&gt; &gt; Source/WebCore/editing/InsertEditableImageCommand.h:43
&gt; &gt; +    EditAction editingAction() const override { return EditAction::InsertEditableImage; }
&gt; 
&gt; Nit - override =&gt; final?
&gt; 
&gt; &gt; LayoutTests/editing/images/basic-editable-image-from-execCommand.html:10
&gt; &gt; +addEventListener(&quot;load&quot;, async () =&gt; {
&gt; 
&gt; It might also be good to also test undo-redoing, and then check to see where
&gt; the selection ends up.

Sure!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481365</commentid>
    <comment_count>8</comment_count>
      <attachid>355587</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-25 02:50:42 -0800</bug_when>
    <thetext>Created attachment 355587
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481366</commentid>
    <comment_count>9</comment_count>
      <attachid>355588</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2018-11-25 02:55:11 -0800</bug_when>
    <thetext>Created attachment 355588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481373</commentid>
    <comment_count>10</comment_count>
      <attachid>355588</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-25 04:11:25 -0800</bug_when>
    <thetext>Comment on attachment 355588
Patch

Clearing flags on attachment: 355588

Committed r238475: &lt;https://trac.webkit.org/changeset/238475&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481374</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-25 04:11:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1481375</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-25 04:12:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/46230916&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355557</attachid>
            <date>2018-11-24 01:32:41 -0800</date>
            <delta_ts>2018-11-25 02:50:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191937-20181124013240.patch</filename>
            <type>text/plain</type>
            <size>35772</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4MzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWU1MzE0ZWE5ZTkzYTFl
YWYwOWViYjU4YTExNjY5NGNmMmJjYjJmMS4uOTNjMDMwNTZhOGU3NWIwMzQ3MThmODFlYTRiMzFi
ODJjODM2Y2E2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE4LTExLTIzICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gaW5zZXJ0IGVkaXRhYmxlIGltYWdlcyB3aXRoIGEgZ2VzdHVyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxOTM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcDoKKyAgICAgICAgKiBTb3VyY2Uv
V2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzOgorICAgICAgICAqIGVkaXRpbmcv
RWRpdEFjdGlvbi5oOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6aW5zZXJ0RWRpdGFibGVJbWFnZSk6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZDo6
SW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zZXJ0RWRp
dGFibGVJbWFnZUNvbW1hbmQ6OmRvQXBwbHkpOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0RWRp
dGFibGVJbWFnZUNvbW1hbmQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRFZGl0
YWJsZUltYWdlQ29tbWFuZDo6Y3JlYXRlKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVTZWxl
Y3Rpb24uY3BwOgorICAgICAgICBBZGQgYW4gZWRpdG9yIGNvbW1hbmQgdGhhdCBpbnNlcnRzIGFu
IGVkaXRhYmxlIGltYWdlLgorICAgICAgICBJdCB3aWxsIGxpa2VseSBnZXQgYSBiaXQgbW9yZSBj
b21wbGljYXRlZCwgYnV0IGZvciBub3cgaXQganVzdCBpbnNlcnRzCisgICAgICAgIGEgMTAwJSBi
eSAzMDBweCBlZGl0YWJsZSBpbWFnZS4KKwogMjAxOC0xMS0yMiAgVGltIEhvcnRvbiAgPHRpbW90
aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbnNlcnQgPGF0dGFjaG1lbnQ+IGVsZW1l
bnRzIHVuZGVyIGVkaXRhYmxlIGltYWdlcyB0byBtYWtlIHRoZWlyIGJhY2tpbmcgZGF0YSBhY2Nl
c3NpYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IGEyYjNiMDkwNDg1OWE0ZThjNDg1MzFmNWMxZmNhYmNhZGRlMWJl
M2IuLmRjN2RiODU1OTk2NzhmODFjOGY5MjBmNzEyZWY3YWQzNWNmMTBmMjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTgtMTEtMjMgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgTWFrZSBpdCBwb3NzaWJsZSB0byBpbnNlcnQgZWRpdGFibGUg
aW1hZ2VzIHdpdGggYSBnZXN0dXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTE5MzcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXS1dlYlZpZXcgX3N0eWx1c1RhcEdlc3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdl
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgor
ICAgICAgICBBZGQgYSBpbnRlcm5hbCBnZXR0ZXIgZm9yIGEgV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBwcm9wZXJ0eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWRpdENvbW1hbmRQcm94eTo6bmFtZUZvckVkaXRBY3Rp
b24pOgorICAgICAgICBBZGQgYSB1bmRvIG5hbWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlv
bi5tbToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgY2xlYW51cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dL
Q29udGVudFZpZXcgX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfYWRkRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAg
ICBBZGQgYSBzaW5nbGUtc3R5bHVzLXRhcCBnZXN0dXJlIHJlY29nbml6ZXIuCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfc3R5bHVzU2luZ2xlVGFwUmVjb2duaXplZDpdKToKKyAgICAgICAg
SWYgYWxsb3dlZCwgcmVxdWVzdCB0byBpbnNlcnQgYW4gZWRpdGFibGUgaW1hZ2Ugd2hlbiBhIHN0
eWx1cyB0YXAgb2NjdXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlU3R5bHVzU2luZ2xl
VGFwQXRQb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQpOgorICAgICAgICBEbyBhIGhp
dCB0ZXN0LCBzZWxlY3QgdGhlIGhpdCBwb3NpdGlvbiwgaW5zZXJ0IGFuIGVkaXRhYmxlIGltYWdl
LCBhbmQKKyAgICAgICAgdGhlbiBkZS1hc3Npc3QgYW55IGFzc2lzdGVkIG5vZGUgKHRvIG1ha2Ug
dGhlIGtleWJvYXJkIGdvIGF3YXkpLgorICAgICAgICBGb3Igbm93LCB3ZSdsbCBvbmx5IGluc2Vy
dCBpZiB3ZSBoaXQgbm9uLXJlcGxhY2VkIGVsZW1lbnRzLAorICAgICAgICB0aG91Z2ggdGhpcyBo
ZXVyaXN0aWMgd2lsbCBuZWVkIHRvIGJlIGVuaGFuY2VkIHNpZ25pZmljYW50bHkgb25jZSB3ZQor
ICAgICAgICBkZWNpZGUgb24gYSBkZXNpZ24uCisKIDIwMTgtMTEtMjAgIFRpbSBIb3J0b24gIDx0
aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5zZXJ0IDxhdHRhY2htZW50PiBl
bGVtZW50cyB1bmRlciBlZGl0YWJsZSBpbWFnZXMgdG8gbWFrZSB0aGVpciBiYWNraW5nIGRhdGEg
YWNjZXNzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDVhMTg1MDM4NWRkYjg1
NmVhMWIyMDhkODY3MGIyMjI5NmFlMTZmYmUuLjgzM2M5MGM0ODMyNTY3YmE2Y2UxOTg3MGFlMmYx
YzM1ZjM2NWZmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBA
QAorMjAxOC0xMS0yMyAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGluc2VydCBlZGl0YWJsZSBpbWFnZXMgd2l0aCBh
IGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5MTkzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tOgorICAgICAgICAodW5kb05hbWVG
b3JFZGl0QWN0aW9uKToKKyAgICAgICAgQWRkIGEgdW5kbyBuYW1lLgorCiAyMDE4LTExLTE3ICBE
ZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBOZXR3b3JrOiBhZGQgYnV0dG9uIHRvIHNob3cgc3lzdGVtIGNlcnRpZmljYXRlIGRpYWxvZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAppbmRleCAwMjExMWYxNTZhYzNiMTgyY2ZiZTdmNjU3ZTBlNzY3MzdkNWZiYWVl
Li4zMjhhZThhYTY0Y2JhNzNkYmNmMTg4YjNkZmUwOTBjYzhlY2QzYTBiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dApAQCAtOTEyLDYgKzkxMiw3IEBAIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCiBlZGl0aW5n
L0hUTUxJbnRlcmNoYW5nZS5jcHAKIGVkaXRpbmcvSW5zZXJ0TmVzdGVkTGlzdENvbW1hbmQuY3Bw
CiBlZGl0aW5nL0luZGVudE91dGRlbnRDb21tYW5kLmNwcAorZWRpdGluZy9JbnNlcnRFZGl0YWJs
ZUltYWdlQ29tbWFuZC5jcHAKIGVkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAK
IGVkaXRpbmcvSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5jcHAKIGVkaXRpbmcvSW5zZXJ0TGlzdENv
bW1hbmQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMTEzYjAzNmNlODNjMjFlMTgxYjkzN2E1MmNjNGNiY2Y1NWYzYzYzZC4u
ZjEyZjllMzE1Y2ExMDNkZmNlNjhkMDNhYWExZDFmMGI5ZTdlYjYyNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzU1LDYgKzc1
NSw3IEBACiAJCTJENzBCQTEzMTgwNzREREYwMDAxOTA4QSAvKiBQbGF0Zm9ybUNBTGF5ZXJDb2Nv
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ3MEJB
MTIxODA3NERERjAwMDE5MDhBIC8qIFBsYXRmb3JtQ0FMYXllckNvY29hLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMkQ3NkJCODIxOTQ1NjMyNDAw
Q0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkQ3NkJCODAxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNl
cnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTJEN0VEMEFCMUJBRTk5MTcwMDQzQjNFNSAvKiBUaW1lckV2ZW50QmFzZWRNb2NrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDdFRDBBOTFCQUU5OTE3
MDA0M0IzRTUgLyogVGltZXJFdmVudEJhc2VkTW9jay5oICovOyB9OworCQkyRDgxRTFDRjIxQTc4
Q0MyMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEODFFMUNEMjFBNzhDQzIwMEEzMkNG
NCAvKiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5oICovOyB9OwogCQkyRDgyODdGNzE2RTRB
MDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDgyODdGNTE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVz
dExvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMkQ4QjkyQ0UyMDNEMTNFMTAwOUM4NjhGIC8qIFVuaWZpZWRTb3VyY2U0ODEuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREU1Rjg0QUQxRkEx
QTQ4QjAwNkRCNjNCIC8qIFVuaWZpZWRTb3VyY2U0ODEuY3BwICovOyB9OwogCQkyRDhCOTJDRjIw
M0QxM0UxMDA5Qzg2OEYgLyogVW5pZmllZFNvdXJjZTQ4Mi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVGODRDODFGQTFBNEE0MDA2REI2M0IgLyog
VW5pZmllZFNvdXJjZTQ4Mi5jcHAgKi87IH07CkBAIC02NjQyLDYgKzY2NDMsOCBAQAogCQkyRDc2
QkI4MDE5NDU2MzI0MDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJ1bkxvb3BPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkyRDc2QkI4MzE5NDU2RjgxMDBDRkQyOUEgLyogUnVuTG9vcE9ic2VydmVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bkxvb3BPYnNlcnZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEN0VEMEE5MUJBRTk5MTcwMDQzQjNF
NSAvKiBUaW1lckV2ZW50QmFzZWRNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRpbWVyRXZlbnRCYXNlZE1vY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MkQ4MUUxQ0IyMUE3OENDMTAwQTMyQ0Y0IC8qIEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc2VydEVkaXRhYmxlSW1h
Z2VDb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ4MUUxQ0QyMUE3
OENDMjAwQTMyQ0Y0IC8qIEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODI4N0Y0MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRU
ZXN0TG9jYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSGl0
VGVzdExvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4Mjg3RjUx
NkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIaXRUZXN0TG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkQ4RkVCREExNDNFM0VGNzAwNzI1MDJCIC8qIENTU0Nyb3NzZmFkZVZhbHVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0Nyb3NzZmFkZVZhbHVlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwNzQ0LDYgKzIwNzQ3LDggQEAKIAkJ
CQk5MzMwOUQ5NzA5OUU2NDkxMDA1NkU1ODEgLyogSFRNTEludGVyY2hhbmdlLmggKi8sCiAJCQkJ
REIyM0MyQzkwQTUwOEQyOTAwMjQ4OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmNwcCAqLywK
IAkJCQlEQjIzQzJDQTBBNTA4RDI5MDAyNDg5RUIgLyogSW5kZW50T3V0ZGVudENvbW1hbmQuaCAq
LywKKwkJCQkyRDgxRTFDQjIxQTc4Q0MxMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNv
bW1hbmQuY3BwICovLAorCQkJCTJEODFFMUNEMjFBNzhDQzIwMEEzMkNGNCAvKiBJbnNlcnRFZGl0
YWJsZUltYWdlQ29tbWFuZC5oICovLAogCQkJCTkzMzA5RDlBMDk5RTY0OTEwMDU2RTU4MSAvKiBJ
bnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcCAqLywKIAkJCQk5MzMwOUQ5QjA5OUU2NDkxMDA1
NkU1ODEgLyogSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oICovLAogCQkJCTkzMzA5RDlDMDk5
RTY0OTEwMDU2RTU4MSAvKiBJbnNlcnRMaW5lQnJlYWtDb21tYW5kLmNwcCAqLywKQEAgLTI5MDk3
LDYgKzI5MTAyLDcgQEAKIAkJCQlFNTJFRkRGNDIxMTI4NzVBMDBBRDI4MkEgLyogSW5wdXRNb2Rl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0UzNTI0RDEyNDUwQzY2MDBCQUY1RDkgLyogSW5wdXRU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMzQ4NjEyNDE1RkRFMjFFMDA3QTFDQzkgLyogSW5w
dXRUeXBlTmFtZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTJEODFFMUNGMjFBNzhDQzIwMEEzMkNG
NCAvKiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMz
MDlERUEwOTlFNjQ5MjAwNTZFNTgxIC8qIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTkzMzA5REVDMDk5RTY0OTIwMDU2RTU4MSAvKiBJbnNlcnRMaW5lQnJl
YWtDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMDdERUFCQTBBMzY1NTRBMDBDQTMwRjgg
LyogSW5zZXJ0TGlzdENvbW1hbmQuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRBY3Rpb24uaAppbmRleCBmZWI3Nzg2ZTliNzdiZTI1ZTc2ZWNmNGEwNTUxYjAyMGNmNzdmZTI3
Li40MjQ2NGUyNmU2MzMwNzgwNWZkM2Q2NTVkMWQxZGI4MTI4YTU2MGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRBY3Rpb24uaApAQCAtODcsNyArODcsOCBAQCBlbnVtIGNsYXNzIEVkaXRBY3Rp
b24gOiB1aW50OF90IHsKICAgICBDb252ZXJ0VG9PcmRlcmVkTGlzdCwKICAgICBDb252ZXJ0VG9V
bm9yZGVyZWRMaXN0LAogICAgIEluZGVudCwKLSAgICBPdXRkZW50CisgICAgT3V0ZGVudCwKKyAg
ICBJbnNlcnRFZGl0YWJsZUltYWdlCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMDIzZWQxOWU3ZTM0MzBiZTJhYTgwNTE4NWVkNTc1
OTBiMDE4MmM0OC4uZmMxNTBjZWU2N2IxYzYyNjljZjI0YTAyYjhiYmFhYzM1ZjYwYjUyOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtNjgsNiArNjgsNyBAQAogI2luY2x1ZGUgIkhp
dFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJJbmRlbnRPdXRkZW50Q29tbWFuZC5oIgogI2luY2x1
ZGUgIklucHV0RXZlbnQuaCIKKyNpbmNsdWRlICJJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5o
IgogI2luY2x1ZGUgIkluc2VydExpc3RDb21tYW5kLmgiCiAjaW5jbHVkZSAiSW5zZXJ0VGV4dENv
bW1hbmQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCkBAIC00MjQyLDQgKzQyNDMsOSBA
QCBTdHJpbmcgRWRpdG9yOjpjbGllbnRSZXBsYWNlbWVudFVSTEZvclJlc291cmNlKFJlZjxTaGFy
ZWRCdWZmZXI+JiYgcmVzb3VyY2VEYXRhLAogICAgIHJldHVybiB7IH07CiB9CiAKK3ZvaWQgRWRp
dG9yOjppbnNlcnRFZGl0YWJsZUltYWdlKCkKK3sKKyAgICBJbnNlcnRFZGl0YWJsZUltYWdlQ29t
bWFuZDo6Y3JlYXRlKGRvY3VtZW50KCkpLT5hcHBseSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCAwZGRlYTgyNzk0MjM0OGQ2MDhkYWVh
YTZiMmRhYjg4YWFjZTY2ZDVhLi44YmYzOGI0NjE3MDY4YzVjODNhMGU1ZTkxZGZkY2VlOTE2MjNm
YWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTUyNyw2ICs1MjcsOCBAQCBwdWJsaWM6
CiAjZW5kaWYKICNlbmRpZgogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBpbnNlcnRFZGl0YWJs
ZUltYWdlKCk7CisKIHByaXZhdGU6CiAgICAgRG9jdW1lbnQmIGRvY3VtZW50KCkgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCmluZGV4IDg2ZjljY2M0ZjYy
NzQyZTY0OWQ3MmI5YTRhYTgxOTI0OGYwNDRiYWQuLjY2NzE1OTk5NGMwNGMwY2E4ZTg0MGFjZGI4
ODBiOWVmZDQzYjQwNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJJbmRlbnRPdXRkZW50Q29tbWFuZC5oIgorI2lu
Y2x1ZGUgIkluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmgiCiAjaW5jbHVkZSAiSW5zZXJ0TGlz
dENvbW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnROZXN0ZWRMaXN0Q29tbWFuZC5oIgogI2luY2x1
ZGUgIlBhZ2UuaCIKQEAgLTQ3OCw2ICs0NzksMTMgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2Vy
dEltYWdlKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdAog
ICAgIHJldHVybiBleGVjdXRlSW5zZXJ0Tm9kZShmcmFtZSwgV1RGTW92ZShpbWFnZSkpOwogfQog
CitzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0RWRpdGFibGVJbWFnZShGcmFtZSYgZnJhbWUsIEV2
ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKK3sKKyAgICBBU1NFUlQo
ZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6OmNyZWF0
ZSgqZnJhbWUuZG9jdW1lbnQoKSktPmFwcGx5KCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIHN0
YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRMaW5lQnJlYWsoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZl
bnQsIEVkaXRvckNvbW1hbmRTb3VyY2Ugc291cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIHN3
aXRjaCAoc291cmNlKSB7CkBAIC0xMzcxLDYgKzEzNzksMTMgQEAgc3RhdGljIGJvb2wgZW5hYmxl
ZFVuZG8oRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UpCiAgICAgcmV0
dXJuIGZyYW1lLmVkaXRvcigpLmNhblVuZG8oKTsKIH0KIAorc3RhdGljIGJvb2wgZW5hYmxlZElu
UmljaGx5RWRpdGFibGVUZXh0V2l0aEVkaXRhYmxlSW1hZ2VzRW5hYmxlZChGcmFtZSYgZnJhbWUs
IEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UpCit7CisgICAgaWYgKCFm
cmFtZS5zZXR0aW5ncygpLmVkaXRhYmxlSW1hZ2VzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgcmV0dXJuIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dChmcmFtZSwgZXZl
bnQsIHNvdXJjZSk7Cit9CisKIC8vIFN0YXRlIGZ1bmN0aW9ucwogCiBzdGF0aWMgVHJpU3RhdGUg
c3RhdGVOb25lKEZyYW1lJiwgRXZlbnQqKQpAQCAtMTU5MCw2ICsxNjA1LDcgQEAgc3RhdGljIGNv
bnN0IENvbW1hbmRNYXAmIGNyZWF0ZUNvbW1hbmRNYXAoKQogICAgICAgICB7ICJJZ25vcmVTcGVs
bGluZyIsIHsgZXhlY3V0ZUlnbm9yZVNwZWxsaW5nLCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5Qmlu
ZGluZywgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4
dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAg
IHsgIkluZGVudCIsIHsgZXhlY3V0ZUluZGVudCwgc3VwcG9ydGVkLCBlbmFibGVkSW5SaWNobHlF
ZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9uLCBkb05v
dEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiSW5zZXJ0QmFja3Rh
YiIsIHsgZXhlY3V0ZUluc2VydEJhY2t0YWIsIHN1cHBvcnRlZEZyb21NZW51T3JLZXlCaW5kaW5n
LCBlbmFibGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBpc1RleHRJbnNl
cnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAorICAgICAgICB7ICJJ
bnNlcnRFZGl0YWJsZUltYWdlIiwgeyBleGVjdXRlSW5zZXJ0RWRpdGFibGVJbWFnZSwgc3VwcG9y
dGVkLCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHRXaXRoRWRpdGFibGVJbWFnZXNFbmFibGVk
LCBzdGF0ZU5vbmUsIHZhbHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1
dGlvbldoZW5EaXNhYmxlZCB9IH0sCiAgICAgICAgIHsgIkluc2VydEhUTUwiLCB7IGV4ZWN1dGVJ
bnNlcnRIVE1MLCBzdXBwb3J0ZWQsIGVuYWJsZWRJbkVkaXRhYmxlVGV4dCwgc3RhdGVOb25lLCB2
YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJs
ZWQgfSB9LAogICAgICAgICB7ICJJbnNlcnRIb3Jpem9udGFsUnVsZSIsIHsgZXhlY3V0ZUluc2Vy
dEhvcml6b250YWxSdWxlLCBzdXBwb3J0ZWQsIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dCwg
c3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRp
b25XaGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJJbnNlcnRJbWFnZSIsIHsgZXhlY3V0ZUlu
c2VydEltYWdlLCBzdXBwb3J0ZWQsIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dCwgc3RhdGVO
b25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVu
RGlzYWJsZWQgfSB9LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRF
ZGl0YWJsZUltYWdlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVk
aXRhYmxlSW1hZ2VDb21tYW5kLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDY5ZTRiYWRjNzc1YTE3ZTk3M2Nm
MmJjZTY3MWJiZjEyYTA2ZDhkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5jcHAKQEAgLTAsMCArMSw1MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaCIKKworI2luY2x1
ZGUgIkVkaXRpbmcuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6Okluc2VydEVkaXRhYmxl
SW1hZ2VDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IENvbXBvc2l0ZUVkaXRDb21t
YW5kKGRvY3VtZW50KQoreworfQorCit2b2lkIEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kOjpk
b0FwcGx5KCkKK3sKKyAgICBpZiAoZW5kaW5nU2VsZWN0aW9uKCkuaXNOb25lKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8gaW1nRWxlbWVudCA9IEhUTUxJbWFnZUVsZW1lbnQ6OmNyZWF0
ZShkb2N1bWVudCgpKTsKKyAgICBpbWdFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hy
b25pemF0aW9uKHhfYXBwbGVfZWRpdGFibGVfaW1hZ2VBdHRyLCBlbXB0eUF0b20oKSk7CisgICAg
aW1nRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih3aWR0aEF0dHIs
IEF0b21pY1N0cmluZygiMTAwJSIsIEF0b21pY1N0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
KTsKKyAgICBpbWdFbGVtZW50LT5zZXRBdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uKGhl
aWdodEF0dHIsIEF0b21pY1N0cmluZygiMzAwcHgiLCBBdG9taWNTdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSk7CisgICAgaW1nRWxlbWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9u
aXphdGlvbihzdHlsZUF0dHIsIEF0b21pY1N0cmluZygiZGlzcGxheTogYmxvY2siLCBBdG9taWNT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisKKyAgICBpbnNlcnROb2RlQXQoaW1nRWxl
bWVudC5jb3B5UmVmKCksIGVuZGluZ1NlbGVjdGlvbigpLnN0YXJ0KCkpOworfQorCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5k
LmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMDdmM2M0NGM5ZTdhMzQ2NDcwZWJkYTk2ZjZmODEyYjhlY2Y0ZmFmYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFn
ZUNvbW1hbmQuaApAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29tcG9zaXRlRWRp
dENvbW1hbmQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJbnNlcnRFZGl0YWJs
ZUltYWdlQ29tbWFuZCA6IHB1YmxpYyBDb21wb3NpdGVFZGl0Q29tbWFuZCB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50
JiBkb2N1bWVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEluc2VydEVk
aXRhYmxlSW1hZ2VDb21tYW5kKGRvY3VtZW50KSk7CisgICAgfQorCitwcml2YXRlOgorICAgIElu
c2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kKERvY3VtZW50Jik7CisKKyAgICB2b2lkIGRvQXBwbHko
KSBvdmVycmlkZTsKKyAgICBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBFZGl0QWN0aW9uOjpJbnNlcnRFZGl0YWJsZUltYWdlOyB9Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zp
c2libGVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0
aW9uLmNwcAppbmRleCAzZjhmZjJiMmE5NDIzMWM4OWI5YjI0MmM2MzE3NTJmMmQ1MDgzYTRkLi40
NTRjY2ViNWZlMjgxNjM5NmQ0MjVlODNjZGUwYjZkZDJjY2VmZjYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCisjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlRleHRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzIGIv
U291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwppbmRleCBhNDNmZGQ0
NWU5NDk2OTA5YjdmYzY3ZGY1Yzc0NjRkMzBkMTRkOWU5Li41ODk0OTBkZTg3YzhjZmNmOTkwMzFj
ZWE2MGZiNDgxMzlhMWNlYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9M
b2NhbGl6YWJsZS5zdHJpbmdzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXph
YmxlLnN0cmluZ3MKQEAgLTE5Myw2ICsxOTMsOSBAQAogLyogQ29udmVydCB0byB1bm9yZGVyZWQg
bGlzdCBhY3Rpb24gbmFtZSAqLwogIkNvbnZlcnQgdG8gVW5vcmRlcmVkIExpc3QgKFVuZG8gYWN0
aW9uIG5hbWUpIiA9ICJDb252ZXJ0IHRvIFVub3JkZXJlZCBMaXN0IjsKIAorLyogSW5zZXJ0IGRy
YXdpbmcgYWN0aW9uIG5hbWUgKi8KKyJJbnNlcnQgRHJhd2luZyAoVW5kbyBhY3Rpb24gbmFtZSki
ID0gIkluc2VydCBEcmF3aW5nIjsKKwogLyogQ29weSBjb250ZXh0IG1lbnUgaXRlbSAqLwogIkNv
cHkiID0gIkNvcHkiOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCAyNzhlZjFiNmE5ZGIyNzQ1ZTI5M2JjZWVmZWFhYjIyNDI4NDhkMjA2
Li5lZWI1NDM0ZjUwNDM0ZThhNmZiZmE5MGViY2U3ZmQzNmRlZGI5ZjA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTI0MzcsNiArMjQz
NywxMSBAQCAtIChCT09MKV9hbGxvd3NEb3VibGVUYXBHZXN0dXJlcwogICAgIHJldHVybiAhYXJl
RXNzZW50aWFsbHlFcXVhbEFzRmxvYXQoY29udGVudFpvb21TY2FsZShzZWxmKSwgMSk7CiB9CiAK
Ky0gKEJPT0wpX3N0eWx1c1RhcEdlc3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdlCit7Cisg
ICAgcmV0dXJuIFtfY29uZmlndXJhdGlvbiBfZWRpdGFibGVJbWFnZXNFbmFibGVkXTsKK30KKwog
I3ByYWdtYSBtYXJrIC0gVUlTY3JvbGxWaWV3RGVsZWdhdGUKIAogLSAoQk9PTCl1c2VzU3RhbmRh
cmRDb250ZW50VmlldwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCBjMjY2ZDZlZDQ1NjIxNjc1YjNmMmEyZjUwOWQ4
MzRkMTM2NmFhNDQ5Li43MWUyOTFmMzAwODAxYTU2M2JjNDcyOTg5ZTliODBjNWYyNDNmZTA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50
ZXJuYWwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaApAQCAtMTY3LDYgKzE2Nyw3IEBAIGNsYXNzIFVSTDsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgV0tTZWxlY3Rpb25HcmFudWxhcml0eSBfc2VsZWN0aW9uR3JhbnVs
YXJpdHk7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBfYWxsb3dzRG91
YmxlVGFwR2VzdHVyZXM7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX3N0
eWx1c1RhcEdlc3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdlOwogQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIF9oYXZlU2V0T2JzY3VyZWRJbnNldHM7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIFVJRWRnZUluc2V0cyBfY29tcHV0ZWRPYnNjdXJlZEluc2V0
OwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBVSUVkZ2VJbnNldHMgX2NvbXB1dGVk
VW5vYnNjdXJlZFNhZmVBcmVhSW5zZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YkVkaXRDb21tYW5kUHJveHkuY3BwCmluZGV4IGNkYjU2MmY1OTdmY2I4OTk0NzkyMTkwNjFjM2Nk
YTI4ZDJjNGVhZDAuLjhiMjNmZTJjZjcxZGI2NzYyZGFhMjVjZGI4ZWYxZjNhMmI3MDhiYjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCkBA
IC03Niw3ICs3Niw2IEBAIFN0cmluZyBXZWJFZGl0Q29tbWFuZFByb3h5OjpuYW1lRm9yRWRpdEFj
dGlvbihFZGl0QWN0aW9uIGVkaXRBY3Rpb24pCiAgICAgY2FzZSBFZGl0QWN0aW9uOjpJbnNlcnQ6
CiAgICAgY2FzZSBFZGl0QWN0aW9uOjpJbnNlcnRSZXBsYWNlbWVudDoKICAgICBjYXNlIEVkaXRB
Y3Rpb246Okluc2VydEZyb21Ecm9wOgotICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgY2Fz
ZSBFZGl0QWN0aW9uOjpTZXRDb2xvcjoKICAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdfS0VZ
KCJTZXQgQ29sb3IiLCAiU2V0IENvbG9yIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlv
biBuYW1lIik7CiAgICAgY2FzZSBFZGl0QWN0aW9uOjpTZXRCYWNrZ3JvdW5kQ29sb3I6CkBAIC0x
NzcsNiArMTc2LDggQEAgU3RyaW5nIFdlYkVkaXRDb21tYW5kUHJveHk6Om5hbWVGb3JFZGl0QWN0
aW9uKEVkaXRBY3Rpb24gZWRpdEFjdGlvbikKICAgICAgICAgcmV0dXJuIFdFQl9VSV9TVFJJTkdf
S0VZKCJDb252ZXJ0IHRvIE9yZGVyZWQgTGlzdCIsICJDb252ZXJ0IHRvIE9yZGVyZWQgTGlzdCAo
VW5kbyBhY3Rpb24gbmFtZSkiLCAiQ29udmVydCB0byBvcmRlcmVkIGxpc3QgYWN0aW9uIG5hbWUi
KTsKICAgICBjYXNlIEVkaXRBY3Rpb246OkNvbnZlcnRUb1Vub3JkZXJlZExpc3Q6CiAgICAgICAg
IHJldHVybiBXRUJfVUlfU1RSSU5HX0tFWSgiQ29udmVydCB0byBVbm9yZGVyZWQgTGlzdCIsICJD
b252ZXJ0IHRvIFVub3JkZXJlZCBMaXN0IChVbmRvIGFjdGlvbiBuYW1lKSIsICJDb252ZXJ0IHRv
IHVub3JkZXJlZCBsaXN0IGFjdGlvbiBuYW1lIik7CisgICAgY2FzZSBFZGl0QWN0aW9uOjpJbnNl
cnRFZGl0YWJsZUltYWdlOgorICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIkluc2Vy
dCBEcmF3aW5nIiwgIkluc2VydCBEcmF3aW5nIChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFj
dGlvbiBuYW1lIik7CiAgICAgfQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMTNiMTVhNzlmMGUwNWZkY2Q3OTY1MjQ1NTJh
ZDNlYzNjOTI3NjQ5My4uZGQ0OGRlZjAxYmMyNmMyOWE3NTc1Mzg3MjM3NmFhNzgwNTVkZDMyMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTY1MSw2ICs2NTEsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0
cmluZyYgY29udGVudFNpemVDYXRlZ29yeSk7CiAgICAgdm9pZCBnZXRTZWxlY3Rpb25Db250ZXh0
KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBoYW5kbGVUd29GaW5n
ZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0X3QgcmVxdWVzdElE
KTsKKyAgICB2b2lkIGhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZvaWQgc2V0Rm9yY2VBbHdheXNV
c2VyU2NhbGFibGUoYm9vbCk7CiAgICAgYm9vbCBmb3JjZUFsd2F5c1VzZXJTY2FsYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGU7IH0KICAgICBkb3VibGUgbGF5
b3V0U2l6ZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydENvbmZpZ3VyYXRp
b25MYXlvdXRTaXplU2NhbGVGYWN0b3I7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAppbmRleCBjNDhjMzlkNjZkYzEz
OTY0MjA1NjU0YjlkNTQwZjBmNjg3ODg0MjBhLi5hODA3Y2NkMmZhY2ZlNzhjZjkxNGJkZjQzZWQy
NDk3YWRjYzhmYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0yMTAsNiArMjEwLDcgQEAgc3RydWN0IFdL
QXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2duaXpl
cj4gX25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRy
PFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2du
aXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX3R3b0ZpbmdlclNp
bmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyOworICAgIFJldGFpblB0cjxVSVRhcEdlc3R1cmVSZWNv
Z25pemVyPiBfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXI7CiAgICAgUmV0YWluUHRy
PFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyPiBfaW5zcGVjdG9yTm9kZVNl
YXJjaEdlc3R1cmVSZWNvZ25pemVyOwogCiAjaWYgUExBVEZPUk0oSU9TTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
bW0KaW5kZXggZDliNDc4ZThhODgxNzQzNWY0ZTZhMjVhZWQwYjFhM2FlZmUwZTBkNi4uYThiZTEy
ZTc2MjVlMjBiYjM2YjRiZDJiOTAyMWVhZTk4OGE1MGYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC02
OTEsNiArNjkxLDEyIEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlvbgogICAgIFtfdHdvRmluZ2Vy
U2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6c2VsZl07CiAgICAgW3NlbGYg
YWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVy
LmdldCgpXTsKIAorICAgIF9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplciA9IGFkb3B0
TlMoW1tVSVRhcEdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0V2l0aFRhcmdldDpzZWxmIGFj
dGlvbjpAc2VsZWN0b3IoX3N0eWx1c1NpbmdsZVRhcFJlY29nbml6ZWQ6KV0pOworICAgIFtfc3R5
bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0TnVtYmVyT2ZUYXBzUmVxdWlyZWQ6MV07
CisgICAgW19zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpzZWxm
XTsKKyAgICBbX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldEFsbG93ZWRUb3Vj
aFR5cGVzOkBbIEAoVUlUb3VjaFR5cGVQZW5jaWwpIF1dOworICAgIFtzZWxmIGFkZEdlc3R1cmVS
ZWNvZ25pemVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisKICNp
ZiBIQVZFKExJTktfUFJFVklFVykKICAgICBbc2VsZiBfcmVnaXN0ZXJQcmV2aWV3XTsKICNlbmRp
ZgpAQCAtNzc4LDYgKzc4NCw5IEBAIC0gKHZvaWQpY2xlYW51cEludGVyYWN0aW9uCiAgICAgW190
d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXREZWxlZ2F0ZTpuaWxdOwogICAg
IFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplci5nZXQoKV07CiAKKyAgICBbX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25p
emVyIHNldERlbGVnYXRlOm5pbF07CisgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6
X3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKwogICAgIF9sYXllclRy
ZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCA9IDA7CiAKICNpZiBFTkFCTEUoREFUQV9J
TlRFUkFDVElPTikKQEAgLTgzNCw2ICs4NDMsNyBAQCAtICh2b2lkKV9yZW1vdmVEZWZhdWx0R2Vz
dHVyZVJlY29nbml6ZXJzCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X25vbkJs
b2NraW5nRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIHJlbW92
ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5n
ZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmds
ZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVj
b2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwogI2lmIFBM
QVRGT1JNKElPU01BQykKICAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfaG92ZXJH
ZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjZW5kaWYKQEAgLTg0OCw2ICs4NTgsNyBAQCAtICh2
b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiAgICAgW3NlbGYgYWRkR2VzdHVyZVJl
Y29nbml6ZXI6X25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwog
ICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJEb3VibGVUYXBHZXN0dXJl
UmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0Zp
bmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBbc2VsZiBhZGRHZXN0
dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOwog
I2lmIFBMQVRGT1JNKElPU01BQykKICAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfaG92
ZXJHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjZW5kaWYKQEAgLTE4OTYsNiArMTkwNywxNSBA
QCAtICh2b2lkKV90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplZDooVUlUYXBHZXN0
dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZQogICAgIF9wYWdlLT5oYW5kbGVUd29GaW5nZXJUYXBB
dFBvaW50KHJvdW5kZWRJbnRQb2ludChnZXN0dXJlUmVjb2duaXplci5jZW50cm9pZCksICsrX2xh
dGVzdFRhcElEKTsKIH0KIAorLSAodm9pZClfc3R5bHVzU2luZ2xlVGFwUmVjb2duaXplZDooVUlU
YXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCit7CisgICAgaWYgKCFfd2Vi
Vmlldy5fc3R5bHVzVGFwR2VzdHVyZVNob3VsZENyZWF0ZUVkaXRhYmxlSW1hZ2UpCisgICAgICAg
IHJldHVybjsKKworICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXplciA9PSBfc3R5bHVzU2luZ2xl
VGFwR2VzdHVyZVJlY29nbml6ZXIpOworICAgIF9wYWdlLT5oYW5kbGVTdHlsdXNTaW5nbGVUYXBB
dFBvaW50KHJvdW5kZWRJbnRQb2ludChnZXN0dXJlUmVjb2duaXplci5sb2NhdGlvbiksICsrX2xh
dGVzdFRhcElEKTsKK30KKwogLSAodm9pZClfbG9uZ1ByZXNzUmVjb2duaXplZDooVUlMb25nUHJl
c3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVyCiB7CiAgICAgQVNTRVJUKGdl
c3R1cmVSZWNvZ25pemVyID09IF9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBkYzgwMjgz
NmRkNjBlODQyZGFhMTNhZjQ0NGIyZjc5NzkyMjIwNDkwLi4yZjRiYWFkOTFkNzliN2I5M2QzY2M3
YjQ4MmRlYjNhNjA3YzU1YTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTU5Nyw2ICs1OTcsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50
LCB1aW4KICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlVHdvRmlu
Z2VyVGFwQXRQb2ludChwb2ludCwgcmVxdWVzdElEKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdl
YlBhZ2VQcm94eTo6aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBwcm9jZXNzKCkuc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChwb2ludCwg
cmVxdWVzdElEKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2VsZWN0V2l0
aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJvbSwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUs
IFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCwg
dWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYTJkYTRhYWJiZmRiZDUxYjljNmNkOWM4YzM2MGMzNTZm
YjI3MGFhNi4uOWY1ZjEzOGJjYjJkZWI5NDBlY2VhZGZhNTA2ZTQ1ZTZmZmE5MjA4YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNjQ3LDYgKzY0Nyw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbkFwcGVhcmFuY2UoKTsKICAgICB2
b2lkIGdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBoYW5kbGVUd29G
aW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDY0X3QgcmVxdWVz
dElEKTsKKyAgICB2b2lkIGhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZvaWQgZ2V0UmVjdHNGb3JH
cmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QsIGludDMyX3QsIENhbGxiYWNr
SUQpOwogICAgIHZvaWQgZ2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNldFdpdGhUZXh0KGludDMyX3Qs
IGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgc3RvcmVTZWxlY3Rpb25Gb3JB
Y2Nlc3NpYmlsaXR5KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZmU0NzlmNTJiN2ZiODk1ODY5NGNjYTg1
NDc2NzEyOTIyMzUwZGZmYy4uYzVkNzYzOWJhNzUyMWJiNmVhZjgxZjFhMWQ1NWFiMTdjNTdhMzE3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC05OSw2ICs5OSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5
UmVjZWl2ZXIgewogICAgIEdldFNlbGVjdGlvbkNvbnRleHQoV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAgICAgU2V0QWxsb3dzTWVkaWFEb2N1bWVudElubGluZVBsYXliYWNrKGJvb2wg
YWxsb3dzKQogICAgIEhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoV2ViQ29yZTo6SW50UG9pbnQg
cG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKKyAgICBIYW5kbGVTdHlsdXNTaW5nbGVUYXBBdFBv
aW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCByZXF1ZXN0SUQpCiAgICAgU2V0
Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCB1c2VyU2NhbGFibGUpCiAgICAgR2V0UmVjdHNG
b3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3QgZ3JhbnVsYXJpdHksIGlu
dDMyX3Qgb2Zmc2V0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRSZWN0
c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZzZXQsIFN0cmluZyB0ZXh0LCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXggZWUwODJjNGE5ZjRhNDQzZTMw
YjI2ZGU2ZmQwNjRiMmZhYmQxZTU2Ny4uMmIwYzJiOTE3MmJiZDljM2Y2MTBkOWJlNTdkODFjNzZi
Yzc3ODUzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KQEAgLTc1NCw2ICs3NTQsMzYgQEAgdm9pZCBXZWJQYWdlOjpoYW5kbGVU
d29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDY0
X3QKICAgICAgICAgY29tcGxldGVTeW50aGV0aWNDbGljayhub2RlUmVzcG9uZGluZ1RvQ2xpY2ss
IGFkanVzdGVkUG9pbnQsIFdlYkNvcmU6OlR3b0ZpbmdlclRhcCk7CiB9CiAKK3ZvaWQgV2ViUGFn
ZTo6aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYg
cG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBhdXRvJiBmcmFtZSA9IG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisKKyAgICBhdXRvIHBvaW50
SW5Eb2N1bWVudCA9IGZyYW1lLnZpZXcoKS0+cm9vdFZpZXdUb0NvbnRlbnRzKHBvaW50KTsKKyAg
ICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBmcmFtZS5ldmVudEhhbmRsZXIoKS5oaXRUZXN0UmVz
dWx0QXRQb2ludChwb2ludEluRG9jdW1lbnQsIEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSB8IEhp
dFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworCisgICAgTm9kZSogbm9kZSA9IGhpdFRlc3QuaW5uZXJO
b25TaGFyZWROb2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisgICAgYXV0
byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFyZW5kZXJlci0+aXNCb2R5KCkgJiYgIXJlbmRlcmVyLT5p
c1JlbmRlckJsb2NrKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZpc2libGVQb3NpdGlvbiBw
b3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGhpdFRlc3QubG9jYWxQb2ludCgp
LCBudWxscHRyKTsKKyAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHBvc2l0aW9u
ID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOworCisgICAgaWYgKHBvc2l0aW9u
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNy
ZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9uKTsKKyAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLnB0cigpLCBwb3NpdGlvbi5hZmZpbml0
eSgpLCB0cnVlLCBVc2VyVHJpZ2dlcmVkKTsKKyAgICBmcmFtZS5lZGl0b3IoKS5pbnNlcnRFZGl0
YWJsZUltYWdlKCk7CisgICAgcmVzZXRBc3Npc3RlZE5vZGVGb3JGcmFtZShtX21haW5GcmFtZS5n
ZXQoKSk7Cit9CisKIHZvaWQgV2ViUGFnZTo6cG90ZW50aWFsVGFwQXRQb3NpdGlvbih1aW50NjRf
dCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKQogewogICAg
IG1fcG90ZW50aWFsVGFwTm9kZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCkubm9kZVJlc3BvbmRpbmdU
b0NsaWNrRXZlbnRzKHBvc2l0aW9uLCBtX3BvdGVudGlhbFRhcExvY2F0aW9uLCBtX3BvdGVudGlh
bFRhcFNlY3VyaXR5T3JpZ2luLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCAyZWIyMGIy
MzQzMTM2NjFhNmM0NWUwN2NjZmFiMGM4ZWY5ZDIzMDMyLi5lZTAzNThhMjZjNTQyNmJjZTA3MTI0
YzBmYTE4YWE0ZjBkNWUyYWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCkBAIC02NTQsNyArNjU0LDgg
QEAgc3RhdGljIE5TU3RyaW5nKiB1bmRvTmFtZUZvckVkaXRBY3Rpb24oRWRpdEFjdGlvbiBlZGl0
QWN0aW9uKQogICAgIGNhc2UgRWRpdEFjdGlvbjo6RGVsZXRlOiByZXR1cm4gVUlfU1RSSU5HX0tF
WV9JTlRFUk5BTCgiRGVsZXRlIiwgIkRlbGV0ZSAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBh
Y3Rpb24gbmFtZSIpOwogICAgIGNhc2UgRWRpdEFjdGlvbjo6RGljdGF0aW9uOiByZXR1cm4gVUlf
U1RSSU5HX0tFWV9JTlRFUk5BTCgiRGljdGF0aW9uIiwgIkRpY3RhdGlvbiAoVW5kbyBhY3Rpb24g
bmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAgIGNhc2UgRWRpdEFjdGlvbjo6Q29udmVy
dFRvT3JkZXJlZExpc3Q6IHJldHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJDb252ZXJ0IHRv
IE9yZGVyZWQgTGlzdCIsICJDb252ZXJ0IHRvIE9yZGVyZWQgTGlzdCAoVW5kbyBhY3Rpb24gbmFt
ZSkiLCAiQ29udmVydCB0byBvcmRlcmVkIGxpc3QgYWN0aW9uIG5hbWUiKTsKLSAgICBjYXNlIEVk
aXRBY3Rpb246OkNvbnZlcnRUb1Vub3JkZXJlZExpc3Q6IHJldHVybiBVSV9TVFJJTkdfS0VZX0lO
VEVSTkFMKCJDb252ZXJ0IHRvIFVub3JkZXJlZCBMaXN0IiwgIkNvbnZlcnQgdG8gVW5vcmRlcmVk
IExpc3QgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIkNvbnZlcnQgdG8gdW5vcmRlcmVkIGxpc3QgYWN0
aW9uIG5hbWUiKTsKKyAgICBjYXNlIEVkaXRBY3Rpb246OkNvbnZlcnRUb1Vub3JkZXJlZExpc3Q6
IHJldHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJDb252ZXJ0IHRvIFVub3JkZXJlZCBMaXN0
IiwgIkNvbnZlcnQgdG8gVW5vcmRlcmVkIExpc3QgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8g
YWN0aW9uIG5hbWUiKTsKKyAgICBjYXNlIEVkaXRBY3Rpb246Okluc2VydEVkaXRhYmxlSW1hZ2U6
IHJldHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJJbnNlcnQgRHJhd2luZyIsICJJbnNlcnQg
RHJhd2luZyAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAgIH0K
ICAgICByZXR1cm4gbmlsOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDU2NmIwODIzMzY5NjZlMGUzMGFkMzdiY2IyNzgy
OGRjODk0ZDkxOTQuLjU3ZTExYWJkODFjYTc4NGQ2YTJmN2YxYjI1ODhlNGZiNzljNDBhZDMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0xMS0yNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9y
dG9uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGluc2VydCBlZGl0
YWJsZSBpbWFnZXMgd2l0aCBhIGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE5MTkzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2Ut
ZnJvbS1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcv
aW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQuaHRtbDogQWRkZWQu
CisgICAgICAgIEFkZCBhIHRlc3QgdGhhdCBlbnN1cmVzIHRoYXQgZWRpdGFibGUgaW1hZ2VzIGFs
c28gd29yayB3aGVuCisgICAgICAgIGluc2VydGVkIHZpYSB0aGUgZWRpdG9yIGNvbW1hbmQuCisK
IDIwMTgtMTEtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW5zZXJ0IDxhdHRhY2htZW50PiBlbGVtZW50cyB1bmRlciBlZGl0YWJsZSBpbWFnZXMg
dG8gbWFrZSB0aGVpciBiYWNraW5nIGRhdGEgYWNjZXNzaWJsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZnJvbS1leGVjQ29tbWFu
ZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJs
ZS1pbWFnZS1mcm9tLWV4ZWNDb21tYW5kLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MTAxMTU5
YWQwYmY5ZDdkMTYzMWIzMjNhZjViOThhZWE1YjQ0NjY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZnJvbS1leGVjQ29t
bWFuZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisKK0hhZCAwIHN0cm9rZXMgaW4gZWRp
dGFibGUgaW1hZ2UgYmVmb3JlIGRyYXdpbmcuCitIYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1h
Z2UgYWZ0ZXIgZHJhd2luZy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2Vz
L2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQuaHRtbCBiL0xheW91dFRlc3Rz
L2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xMWM1MGU5MTVlYTQ1OGJlNGY5YjZiYTUxODMyY2VhMzI3NDJkNTJjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFi
bGUtaW1hZ2UtZnJvbS1leGVjQ29tbWFuZC5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzwhRE9DVFlQ
RSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1
ZSBdIC0tPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3VpLWhlbHBlci5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cit9
CisKK2FkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBhc3luYyAoKSA9PiB7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoZG9jdW1lbnQuYm9keSwgMCwgZG9jdW1lbnQu
Ym9keSwgMCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEVkaXRhYmxlSW1hZ2Ui
KTsKKyAgICBjb25zdCBpbml0aWFsTnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlID0gKGF3
YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKKyAgICBhd2Fp
dCBVSUhlbHBlci5kcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKCk7CisgICAgY29uc3QgbnVtYmVy
T2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJEcmF3aW5nID0gKGF3YWl0IFVJSGVscGVyLm51
bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgibG9nIikuaW5uZXJIVE1MID0gYEhhZCAke2luaXRpYWxOdW1iZXJPZlN0cm9rZXNJbkVk
aXRhYmxlSW1hZ2V9IHN0cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2UgYmVmb3JlIGRyYXdpbmcuPGJy
Lz5IYWQgJHtudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlckRyYXdpbmd9IHN0cm9r
ZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nLmA7CisgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Cit9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgY29udGVudGVkaXRhYmxl
PgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355587</attachid>
            <date>2018-11-25 02:50:42 -0800</date>
            <delta_ts>2018-11-25 02:55:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191937-20181125025041.patch</filename>
            <type>text/plain</type>
            <size>42625</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM0MWJjZDYxZDM5Yzky
NjgyNTEyNThmNWRmNTFhM2IxNGE3NjU1Ni4uYTNiZWQ5OTRiOThiN2ViZGQzNmMwYWRiMTM4NDNk
ZGMwMTczNDNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTExLTI0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gaW5zZXJ0IGVkaXRhYmxlIGltYWdlcyB3aXRoIGEgZ2VzdHVyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxOTM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIFRlc3RzOgorICAgICAgICAgICAg
ZWRpdGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9r
ZXMuaHRtbCwKKyAgICAgICAgICAgIGVkaXRpbmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxl
LWltYWdlLmh0bWwsCisgICAgICAgICAgICBlZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1p
bWFnZS1mcm9tLWV4ZWNDb21tYW5kLmh0bWwKKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAqIFNvdXJjZS9X
ZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogZWRpdGluZy9F
ZGl0QWN0aW9uLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjppbnNlcnRFZGl0YWJsZUltYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kOjpJ
bnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRFZGl0
YWJsZUltYWdlQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRFZGl0
YWJsZUltYWdlQ29tbWFuZC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydEVkaXRh
YmxlSW1hZ2VDb21tYW5kOjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHA6CisgICAgICAgIEFkZCBhbiBlZGl0b3IgY29tbWFuZCB0aGF0IGluc2VydHMgYW4g
ZWRpdGFibGUgaW1hZ2UuCisgICAgICAgIEl0IHdpbGwgbGlrZWx5IGdldCBhIGJpdCBtb3JlIGNv
bXBsaWNhdGVkLCBidXQgZm9yIG5vdyBpdCBqdXN0IGluc2VydHMKKyAgICAgICAgYSAxMDAlIGJ5
IDMwMHB4IGVkaXRhYmxlIGltYWdlLgorCiAyMDE4LTExLTIyICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEluc2VydCA8YXR0YWNobWVudD4gZWxlbWVu
dHMgdW5kZXIgZWRpdGFibGUgaW1hZ2VzIHRvIG1ha2UgdGhlaXIgYmFja2luZyBkYXRhIGFjY2Vz
c2libGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNGRmYzdhMmU2ZjY0M2UyNTM4ODRkYzI2NTRjZjA1YTg1N2Q4MDQy
Zi4uYzk0ZTc4OGVkYzhkZjljYjIwN2EyMGVhY2IwMmYwYzU4NDFlMjNjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0MyBAQAorMjAxOC0xMS0yNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGluc2VydCBlZGl0YWJsZSBp
bWFnZXMgd2l0aCBhIGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MTkzNworCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX3N0eWx1c1RhcEdlc3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdlXSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICBBZGQgYSBpbnRlcm5hbCBnZXR0ZXIgZm9yIGEgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBw
cm9wZXJ0eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRWRpdENvbW1hbmRQcm94eTo6bmFtZUZvckVkaXRBY3Rpb24p
OgorICAgICAgICBBZGQgYSB1bmRvIG5hbWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgY2xlYW51cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfYWRkRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICBB
ZGQgYSBzaW5nbGUtc3R5bHVzLXRhcCBnZXN0dXJlIHJlY29nbml6ZXIuCisKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfc3R5bHVzU2luZ2xlVGFwUmVjb2duaXplZDpdKToKKyAgICAgICAgSWYg
YWxsb3dlZCwgcmVxdWVzdCB0byBpbnNlcnQgYW4gZWRpdGFibGUgaW1hZ2Ugd2hlbiBhIHN0eWx1
cyB0YXAgb2NjdXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlU3R5bHVzU2luZ2xlVGFw
QXRQb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQpOgorICAgICAgICBEbyBhIGhpdCB0
ZXN0LCBzZWxlY3QgdGhlIGhpdCBwb3NpdGlvbiwgaW5zZXJ0IGFuIGVkaXRhYmxlIGltYWdlLCBh
bmQKKyAgICAgICAgdGhlbiBkZS1hc3Npc3QgYW55IGFzc2lzdGVkIG5vZGUgKHRvIG1ha2UgdGhl
IGtleWJvYXJkIGdvIGF3YXkpLgorICAgICAgICBGb3Igbm93LCB3ZSdsbCBvbmx5IGluc2VydCBp
ZiB3ZSBoaXQgbm9uLXJlcGxhY2VkIGVsZW1lbnRzLAorICAgICAgICB0aG91Z2ggdGhpcyBoZXVy
aXN0aWMgd2lsbCBuZWVkIHRvIGJlIGVuaGFuY2VkIHNpZ25pZmljYW50bHkgb25jZSB3ZQorICAg
ICAgICBkZWNpZGUgb24gYSBkZXNpZ24uCisKIDIwMTgtMTEtMjAgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5zZXJ0IDxhdHRhY2htZW50PiBlbGVt
ZW50cyB1bmRlciBlZGl0YWJsZSBpbWFnZXMgdG8gbWFrZSB0aGVpciBiYWNraW5nIGRhdGEgYWNj
ZXNzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjMyZmY2ZTA1MzMyZThl
YjUxNWMwNzA3NzgyYzJkNDk3NjYwNjkuLmVjZjZiMWYyN2I4ODU1NGE1N2M0MmU1MTExOWYxZTVk
YTlkMWYzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOC0xMS0yNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAg
ICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGluc2VydCBlZGl0YWJsZSBpbWFnZXMgd2l0aCBhIGdl
c3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTkzNworCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKHVuZG9OYW1lRm9yRWRp
dEFjdGlvbik6CisgICAgICAgIEFkZCBhIHVuZG8gbmFtZS4KKwogMjAxOC0xMS0yNCAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEZpeCBh
IGZldyBsb2NhbGl6YWJsZSBzdHJpbmcgZGVzY3JpcHRpb25zIGluIFdlYkVkaXRDb21tYW5kUHJv
eHkuY3BwIGFuZCBXZWJFZGl0b3JDbGllbnQubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNWUwN2QzY2Rk
ODk1ZDNkMWUxMWQ2NDgzNTBlMjY5Mzg2OTkwNzZiZS4uNzZkZWQ4ZWY2MzY3ZTQ2MGVkMGI4MzZm
MzFiZmE5YzYxNzI5MzVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTkxNCw2ICs5MTQsNyBAQCBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAogZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwCiBlZGl0
aW5nL0luc2VydE5lc3RlZExpc3RDb21tYW5kLmNwcAogZWRpdGluZy9JbmRlbnRPdXRkZW50Q29t
bWFuZC5jcHAKK2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3BwCiBlZGl0aW5n
L0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCiBlZGl0aW5nL0luc2VydExpbmVCcmVha0Nv
bW1hbmQuY3BwCiBlZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEyNGYwN2MxMmE2
ZWVkMmQ4ZDc2Y2NiZGQ0YmZhYzNjNTdlMmI1MzguLjc4NDUzYzljY2Q5YmY4OGM1ODAxYWRmNGFm
NDgzNGIwNDYxNTc5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTc1NSw2ICs3NTUsNyBAQAogCQkyRDcwQkExMzE4MDc0RERG
MDAwMTkwOEEgLyogUGxhdGZvcm1DQUxheWVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENzBCQTEyMTgwNzREREYwMDAxOTA4QSAvKiBQbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTJENzZCQjgyMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENzZCQjgw
MTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDdFRDBBQjFCQUU5OTE3MDA0M0IzRTUg
LyogVGltZXJFdmVudEJhc2VkTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQ3RUQwQTkxQkFFOTkxNzAwNDNCM0U1IC8qIFRpbWVyRXZlbnRCYXNl
ZE1vY2suaCAqLzsgfTsKKwkJMkQ4MUUxQ0YyMUE3OENDMjAwQTMyQ0Y0IC8qIEluc2VydEVkaXRh
YmxlSW1hZ2VDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDgxRTFDRDIxQTc4Q0MyMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNv
bW1hbmQuaCAqLzsgfTsKIAkJMkQ4Mjg3RjcxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2Nh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4
Mjg3RjUxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEOEI5MkNFMjAzRDEzRTEwMDlD
ODY4RiAvKiBVbmlmaWVkU291cmNlNDgxLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NEFEMUZBMUE0OEIwMDZEQjYzQiAvKiBVbmlmaWVkU291
cmNlNDgxLmNwcCAqLzsgfTsKIAkJMkQ4QjkyQ0YyMDNEMTNFMTAwOUM4NjhGIC8qIFVuaWZpZWRT
b3VyY2U0ODIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREU1Rjg0QzgxRkExQTRBNDAwNkRCNjNCIC8qIFVuaWZpZWRTb3VyY2U0ODIuY3BwICovOyB9
OwpAQCAtNjY1Miw2ICs2NjUzLDggQEAKIAkJMkQ3NkJCODAxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1
bkxvb3BPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5Mb29w
T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ3NkJCODMxOTQ1NkY4
MTAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSdW5Mb29wT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDdFRDBBOTFCQUU5OTE3MDA0M0IzRTUgLyogVGltZXJFdmVudEJhc2VkTW9jay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lckV2ZW50QmFzZWRNb2NrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEODFFMUNCMjFBNzhDQzEwMEEzMkNGNCAv
KiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJEODFFMUNEMjFBNzhDQzIwMEEzMkNGNCAvKiBJbnNlcnRFZGl0
YWJsZUltYWdlQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNl
cnRFZGl0YWJsZUltYWdlQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RDgyODdGNDE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpdFRlc3RMb2NhdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODI4N0Y1MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0
TG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGl0VGVzdExvY2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEOEZFQkRBMTQzRTNFRjcwMDcy
NTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMDg1OCw2ICsyMDg2MSw4IEBACiAJCQkJOTMzMDlEOTcwOTlFNjQ5MTAwNTZFNTgx
IC8qIEhUTUxJbnRlcmNoYW5nZS5oICovLAogCQkJCURCMjNDMkM5MEE1MDhEMjkwMDI0ODlFQiAv
KiBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgKi8sCiAJCQkJREIyM0MyQ0EwQTUwOEQyOTAwMjQ4
OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmggKi8sCisJCQkJMkQ4MUUxQ0IyMUE3OENDMTAw
QTMyQ0Y0IC8qIEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmNwcCAqLywKKwkJCQkyRDgxRTFD
RDIxQTc4Q0MyMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaCAqLywKIAkJ
CQk5MzMwOUQ5QTA5OUU2NDkxMDA1NkU1ODEgLyogSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5j
cHAgKi8sCiAJCQkJOTMzMDlEOUIwOTlFNjQ5MTAwNTZFNTgxIC8qIEluc2VydEludG9UZXh0Tm9k
ZUNvbW1hbmQuaCAqLywKIAkJCQk5MzMwOUQ5QzA5OUU2NDkxMDA1NkU1ODEgLyogSW5zZXJ0TGlu
ZUJyZWFrQ29tbWFuZC5jcHAgKi8sCkBAIC0yOTIxMSw2ICsyOTIxNiw3IEBACiAJCQkJRTUyRUZE
RjQyMTEyODc1QTAwQUQyODJBIC8qIElucHV0TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdF
MzUyNEQxMjQ1MEM2NjAwQkFGNUQ5IC8qIElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzM0ODYxMjQxNUZERTIxRTAwN0ExQ0M5IC8qIElucHV0VHlwZU5hbWVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQkyRDgxRTFDRjIxQTc4Q0MyMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNv
bW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REVBMDk5RTY0OTIwMDU2RTU4MSAvKiBJ
bnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFQzA5
OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDA3REVBQkEwQTM2NTU0QTAwQ0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmgKaW5kZXggZmViNzc4NmU5
Yjc3YmUyNWU3NmVjZjRhMDU1MWIwMjBjZjc3ZmUyNy4uNDI0NjRlMjZlNjMzMDc4MDVmZDNkNjU1
ZDFkMWRiODEyOGE1NjBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
QWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmgKQEAgLTg3
LDcgKzg3LDggQEAgZW51bSBjbGFzcyBFZGl0QWN0aW9uIDogdWludDhfdCB7CiAgICAgQ29udmVy
dFRvT3JkZXJlZExpc3QsCiAgICAgQ29udmVydFRvVW5vcmRlcmVkTGlzdCwKICAgICBJbmRlbnQs
Ci0gICAgT3V0ZGVudAorICAgIE91dGRlbnQsCisgICAgSW5zZXJ0RWRpdGFibGVJbWFnZQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDBiMGNkYWY2YjAyNzRkZGEwM2E4MGQ4YjAyZGI2MmM5YmQ1OTljOGEuLmFiYWQxYjMyYWQyYjRh
MTJmYTFhNWNiYzNmMjNhMTMxYzgzNzFhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
SW5kZW50T3V0ZGVudENvbW1hbmQuaCIKICNpbmNsdWRlICJJbnB1dEV2ZW50LmgiCisjaW5jbHVk
ZSAiSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnRMaXN0Q29t
bWFuZC5oIgogI2luY2x1ZGUgIkluc2VydFRleHRDb21tYW5kLmgiCiAjaW5jbHVkZSAiS2V5Ym9h
cmRFdmVudC5oIgpAQCAtNDI1MCw0ICs0MjUxLDkgQEAgU3RyaW5nIEVkaXRvcjo6Y2xpZW50UmVw
bGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0YSwK
ICAgICByZXR1cm4geyB9OwogfQogCit2b2lkIEVkaXRvcjo6aW5zZXJ0RWRpdGFibGVJbWFnZSgp
Cit7CisgICAgSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpKS0+
YXBwbHkoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKaW5kZXggN2ExNGVkYzBjMTQxOTcxOGQ1NjE0NzNkMGJiOTUzMzM0YWY0YWNhYi4uMjI4Zjkx
N2Q1Yzc3OWVhN2RkOTU5MmM3NDI0NzkzOGZjMDdhYzgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCkBAIC01MzIsNiArNTMyLDggQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0RWRpdGFibGVJbWFnZSgpOworCiBwcml2YXRlOgogICAg
IERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcAppbmRleCBjYTZkZjEwOWE4OWNlZDJiZWM3ZmFjYjY0YjJiODcxOTZkMmVk
MTY5Li44Y2Q2NmZlZTc1NzhiZGY5N2EwMTdiMGE1NjI0ZjFiYTdhNmY3MzNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNs
dWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSW5kZW50T3V0ZGVudENvbW1hbmQuaCIKKyNpbmNsdWRlICJJbnNlcnRFZGl0YWJsZUltYWdl
Q29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpc3RDb21tYW5kLmgiCiAjaW5jbHVkZSAiSW5z
ZXJ0TmVzdGVkTGlzdENvbW1hbmQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC00NzgsNiArNDc5
LDEzIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRJbWFnZShGcmFtZSYgZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QKICAgICByZXR1cm4gZXhlY3V0ZUluc2VydE5v
ZGUoZnJhbWUsIFdURk1vdmUoaW1hZ2UpKTsKIH0KIAorc3RhdGljIGJvb2wgZXhlY3V0ZUluc2Vy
dEVkaXRhYmxlSW1hZ2UoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCit7CisgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOworICAgIElu
c2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCkpLT5hcHBs
eSgpOworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0TGlu
ZUJyZWFrKEZyYW1lJiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewpAQCAtMTM3MSw2
ICsxMzc5LDEzIEBAIHN0YXRpYyBib29sIGVuYWJsZWRVbmRvKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlKQogICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jYW5VbmRv
KCk7CiB9CiAKK3N0YXRpYyBib29sIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dFdpdGhFZGl0
YWJsZUltYWdlc0VuYWJsZWQoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1h
bmRTb3VyY2Ugc291cmNlKQoreworICAgIGlmICghZnJhbWUuc2V0dGluZ3MoKS5lZGl0YWJsZUlt
YWdlc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBlbmFibGVk
SW5SaWNobHlFZGl0YWJsZVRleHQoZnJhbWUsIGV2ZW50LCBzb3VyY2UpOworfQorCiAvLyBTdGF0
ZSBmdW5jdGlvbnMKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlTm9uZShGcmFtZSYsIEV2ZW50KikK
QEAgLTE1OTAsNiArMTYwNSw3IEBAIHN0YXRpYyBjb25zdCBDb21tYW5kTWFwJiBjcmVhdGVDb21t
YW5kTWFwKCkKICAgICAgICAgeyAiSWdub3JlU3BlbGxpbmciLCB7IGV4ZWN1dGVJZ25vcmVTcGVs
bGluZywgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4
dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVj
dXRpb25XaGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJJbmRlbnQiLCB7IGV4ZWN1dGVJbmRl
bnQsIHN1cHBvcnRlZCwgZW5hYmxlZEluUmljaGx5RWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZh
bHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxl
ZCB9IH0sCiAgICAgICAgIHsgIkluc2VydEJhY2t0YWIiLCB7IGV4ZWN1dGVJbnNlcnRCYWNrdGFi
LCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBz
dGF0ZU5vbmUsIHZhbHVlTnVsbCwgaXNUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9u
V2hlbkRpc2FibGVkIH0gfSwKKyAgICAgICAgeyAiSW5zZXJ0RWRpdGFibGVJbWFnZSIsIHsgZXhl
Y3V0ZUluc2VydEVkaXRhYmxlSW1hZ2UsIHN1cHBvcnRlZCwgZW5hYmxlZEluUmljaGx5RWRpdGFi
bGVUZXh0V2l0aEVkaXRhYmxlSW1hZ2VzRW5hYmxlZCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5v
dFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogICAg
ICAgICB7ICJJbnNlcnRIVE1MIiwgeyBleGVjdXRlSW5zZXJ0SFRNTCwgc3VwcG9ydGVkLCBlbmFi
bGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9u
LCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiSW5zZXJ0
SG9yaXpvbnRhbFJ1bGUiLCB7IGV4ZWN1dGVJbnNlcnRIb3Jpem9udGFsUnVsZSwgc3VwcG9ydGVk
LCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RU
ZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAg
ICAgeyAiSW5zZXJ0SW1hZ2UiLCB7IGV4ZWN1dGVJbnNlcnRJbWFnZSwgc3VwcG9ydGVkLCBlbmFi
bGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5z
ZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2RmMjExMjViODgzMTk1OTQ5N2QyMzdjNTY0ZWI1ZGI3Nzg0NThkMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNv
bW1hbmQuY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc2VydEVk
aXRhYmxlSW1hZ2VDb21tYW5kLmgiCisKKyNpbmNsdWRlICJFZGl0aW5nLmgiCisjaW5jbHVkZSAi
SFRNTEltYWdlRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0luc2VydEVkaXRh
YmxlSW1hZ2VDb21tYW5kOjpJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZChEb2N1bWVudCYgZG9j
dW1lbnQpCisgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCkKK3sKK30KKwordm9p
ZCBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZDo6ZG9BcHBseSgpCit7CisgICAgaWYgKGVuZGlu
Z1NlbGVjdGlvbigpLmlzTm9uZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGltZ0Vs
ZW1lbnQgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgaW1nRWxl
bWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2VkaXRhYmxl
X2ltYWdlQXR0ciwgZW1wdHlBdG9tKCkpOworICAgIGltZ0VsZW1lbnQtPnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyLCBBdG9taWNTdHJpbmcoIjEwMCUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgaW1nRWxlbWVudC0+c2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyLCBBdG9taWNTdHJpbmcoIjMw
MHB4IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIGltZ0VsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3R5bGVBdHRyLCBBdG9taWNT
dHJpbmcoImRpc3BsYXk6IGJsb2NrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworCisgICAgaW5zZXJ0Tm9kZUF0KGltZ0VsZW1lbnQuY29weVJlZigpLCBlbmRpbmdTZWxl
Y3Rpb24oKS5zdGFydCgpKTsKKyAgICBzZXRFbmRpbmdTZWxlY3Rpb24odmlzaWJsZVBvc2l0aW9u
QWZ0ZXJOb2RlKGltZ0VsZW1lbnQuZ2V0KCkpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0
ZmM2N2Q4N2E4NmEyOTUxZGNlNmFkNGRkOTE2ZTZhYjRkNjY2OTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmgKQEAg
LTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbXBvc2l0ZUVkaXRDb21tYW5kLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQg
OiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
SW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNlcnRFZGl0YWJsZUltYWdlQ29t
bWFuZChkb2N1bWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBJbnNlcnRFZGl0YWJsZUlt
YWdlQ29tbWFuZChEb2N1bWVudCYpOworCisgICAgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7Cisg
ICAgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gRWRpdEFj
dGlvbjo6SW5zZXJ0RWRpdGFibGVJbWFnZTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggM2Y4
ZmYyYjJhOTQyMzFjODliOWIyNDJjNjMxNzUyZjJkNTA4M2E0ZC4uNDU0Y2NlYjVmZTI4MTYzOTZk
NDI1ZTgzY2RlMGI2ZGQyY2NlZmY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJDb3JlL2Vu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5kZXggNWYxYjU4OWQyMTNmOWI3M2RmYjFmZDVm
MTdkZGEyMTgwZDJjNTg2Ny4uMWVkNzhjZTA1OTdiZDMwZmZjNDVjMTMxMmI1MTY1NjcwMDgwNzZk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC0z
NTUsNiArMzU1LDkgQEAKIC8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KICJJbmRlbnQgKFVuZG8gYWN0
aW9uIG5hbWUpIiA9ICJJbmRlbnQiOwogCisvKiBVbmRvIGFjdGlvbiBuYW1lICovCisiSW5zZXJ0
IERyYXdpbmcgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJJbnNlcnQgRHJhd2luZyI7CisKIC8qIFVu
ZG8gYWN0aW9uIG5hbWUgKi8KICJJbnNlcnQgTGlzdCAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIklu
c2VydCBMaXN0IjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggYmMzMDIyZWI3YjBkYjA4ZWY1YTgyZjcxMjdjNGExOGE3YjM2NzQ0Ni4u
MGE3MzMyZjNiNjAxZTYwNTg3MWE5ODA2MGFkMGEzZGRmZDgwZGYzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yNDM3LDYgKzI0Mzcs
MTEgQEAgLSAoQk9PTClfYWxsb3dzRG91YmxlVGFwR2VzdHVyZXMKICAgICByZXR1cm4gIWFyZUVz
c2VudGlhbGx5RXF1YWxBc0Zsb2F0KGNvbnRlbnRab29tU2NhbGUoc2VsZiksIDEpOwogfQogCist
IChCT09MKV9zdHlsdXNUYXBHZXN0dXJlU2hvdWxkQ3JlYXRlRWRpdGFibGVJbWFnZQoreworICAg
IHJldHVybiBbX2NvbmZpZ3VyYXRpb24gX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZF07Cit9CisKICNw
cmFnbWEgbWFyayAtIFVJU2Nyb2xsVmlld0RlbGVnYXRlCiAKIC0gKEJPT0wpdXNlc1N0YW5kYXJk
Q29udGVudFZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggYzI2NmQ2ZWQ0NTYyMTY3NWIzZjJhMmY1MDlkODM0
ZDEzNjZhYTQ0OS4uNzFlMjkxZjMwMDgwMWE1NjNiYzQ3Mjk4OWU5YjgwYzVmMjQzZmUwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVy
bmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0lu
dGVybmFsLmgKQEAgLTE2Nyw2ICsxNjcsNyBAQCBjbGFzcyBVUkw7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIFdLU2VsZWN0aW9uR3JhbnVsYXJpdHkgX3NlbGVjdGlvbkdyYW51bGFy
aXR5OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX2FsbG93c0RvdWJs
ZVRhcEdlc3R1cmVzOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9zdHls
dXNUYXBHZXN0dXJlU2hvdWxkQ3JlYXRlRWRpdGFibGVJbWFnZTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgQk9PTCBfaGF2ZVNldE9ic2N1cmVkSW5zZXRzOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBVSUVkZ2VJbnNldHMgX2NvbXB1dGVkT2JzY3VyZWRJbnNldDsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRzIF9jb21wdXRlZFVu
b2JzY3VyZWRTYWZlQXJlYUluc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJF
ZGl0Q29tbWFuZFByb3h5LmNwcAppbmRleCBjZDU3YzYyZmI0ZGI3NWVlZmE3MGQ4ZWU5ZTQyMTdl
ZmI0MWE3MGM2Li5hNTI2NDc3Njg3YzJmNmZhNTMxMzEyM2JiODlmMWFhMTQzNmMzY2ZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcApAQCAt
MTc3LDYgKzE3Nyw4IEBAIFN0cmluZyBXZWJFZGl0Q29tbWFuZFByb3h5OjpuYW1lRm9yRWRpdEFj
dGlvbihFZGl0QWN0aW9uIGVkaXRBY3Rpb24pCiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
X0tFWSgiQ29udmVydCB0byBPcmRlcmVkIExpc3QiLCAiQ29udmVydCB0byBPcmRlcmVkIExpc3Qg
KFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAgICBjYXNlIEVkaXRB
Y3Rpb246OkNvbnZlcnRUb1Vub3JkZXJlZExpc3Q6CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RS
SU5HX0tFWSgiQ29udmVydCB0byBVbm9yZGVyZWQgTGlzdCIsICJDb252ZXJ0IHRvIFVub3JkZXJl
ZCBMaXN0IChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CisgICAgY2Fz
ZSBFZGl0QWN0aW9uOjpJbnNlcnRFZGl0YWJsZUltYWdlOgorICAgICAgICByZXR1cm4gV0VCX1VJ
X1NUUklOR19LRVkoIkluc2VydCBEcmF3aW5nIiwgIkluc2VydCBEcmF3aW5nIChVbmRvIGFjdGlv
biBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CiAgICAgfQogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzY4YzlkYTAx
MWMzNWE2YjllOGZiMjkxZDAyMDYwMTkyYzI5NDA4ZC4uYzEyMmFmNTNmNTAzMmZhMTVhYTFjYjU3
YzQ3MGZhOTM3MTQyN2NiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTY1Myw2ICs2NTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb250ZW50U2l6ZUNhdGVnb3J5
RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSk7CiAgICAgdm9pZCBn
ZXRTZWxlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAg
dm9pZCBoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
dWludDY0X3QgcmVxdWVzdElEKTsKKyAgICB2b2lkIGhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZv
aWQgc2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCk7CiAgICAgYm9vbCBmb3JjZUFsd2F5
c1VzZXJTY2FsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGU7
IH0KICAgICBkb3VibGUgbGF5b3V0U2l6ZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92
aWV3cG9ydENvbmZpZ3VyYXRpb25MYXlvdXRTaXplU2NhbGVGYWN0b3I7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApp
bmRleCBjNDhjMzlkNjZkYzEzOTY0MjA1NjU0YjlkNTQwZjBmNjg3ODg0MjBhLi5hODA3Y2NkMmZh
Y2ZlNzhjZjkxNGJkZjQzZWQyNDk3YWRjYzhmYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0yMTAsNiAr
MjEwLDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBSZXRhaW5QdHI8VUlU
YXBHZXN0dXJlUmVjb2duaXplcj4gX25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJlY29nbml6
ZXI7CiAgICAgUmV0YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF90d29GaW5nZXJEb3Vi
bGVUYXBHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2du
aXplcj4gX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyOworICAgIFJldGFpblB0
cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6
ZXI7CiAgICAgUmV0YWluUHRyPFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVy
PiBfaW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyOwogCiAjaWYgUExBVEZPUk0o
SU9TTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZDliNDc4ZThhODgxNzQzNWY0ZTZhMjVhZWQwYjFh
M2FlZmUwZTBkNi4uYThiZTEyZTc2MjVlMjBiYjM2YjRiZDJiOTAyMWVhZTk4OGE1MGYwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCkBAIC02OTEsNiArNjkxLDEyIEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlv
bgogICAgIFtfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6
c2VsZl07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRh
cEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAorICAgIF9zdHlsdXNTaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplciA9IGFkb3B0TlMoW1tVSVRhcEdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0
V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX3N0eWx1c1NpbmdsZVRhcFJlY29nbml6
ZWQ6KV0pOworICAgIFtfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0TnVtYmVy
T2ZUYXBzUmVxdWlyZWQ6MV07CisgICAgW19zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXpl
ciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25p
emVyIHNldEFsbG93ZWRUb3VjaFR5cGVzOkBbIEAoVUlUb3VjaFR5cGVQZW5jaWwpIF1dOworICAg
IFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CisKICNpZiBIQVZFKExJTktfUFJFVklFVykKICAgICBbc2VsZiBfcmVnaXN0
ZXJQcmV2aWV3XTsKICNlbmRpZgpAQCAtNzc4LDYgKzc4NCw5IEBAIC0gKHZvaWQpY2xlYW51cElu
dGVyYWN0aW9uCiAgICAgW190d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXRE
ZWxlZ2F0ZTpuaWxdOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5n
ZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAKKyAgICBbX3N0eWx1c1Npbmds
ZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CisgICAgW3NlbGYgcmVtb3Zl
R2VzdHVyZVJlY29nbml6ZXI6X3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgp
XTsKKwogICAgIF9sYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCA9IDA7CiAK
ICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKQEAgLTgzNCw2ICs4NDMsNyBAQCAtICh2b2lk
KV9yZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVy
ZVJlY29nbml6ZXI6X25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCld
OwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJEb3VibGVUYXBH
ZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6
ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBbc2Vs
ZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6
ZXIuZ2V0KCldOwogI2lmIFBMQVRGT1JNKElPU01BQykKICAgICBbc2VsZiByZW1vdmVHZXN0dXJl
UmVjb2duaXplcjpfaG92ZXJHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjZW5kaWYKQEAgLTg0
OCw2ICs4NTgsNyBAQCAtICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiAgICAg
W3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJl
Y29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5n
ZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgYWRkR2VzdHVy
ZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsK
KyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJl
Y29nbml6ZXIuZ2V0KCldOwogI2lmIFBMQVRGT1JNKElPU01BQykKICAgICBbc2VsZiBhZGRHZXN0
dXJlUmVjb2duaXplcjpfaG92ZXJHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjZW5kaWYKQEAg
LTE4OTYsNiArMTkwNywxNSBAQCAtICh2b2lkKV90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVj
b2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZQogICAgIF9wYWdlLT5o
YW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KHJvdW5kZWRJbnRQb2ludChnZXN0dXJlUmVjb2duaXpl
ci5jZW50cm9pZCksICsrX2xhdGVzdFRhcElEKTsKIH0KIAorLSAodm9pZClfc3R5bHVzU2luZ2xl
VGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVy
Cit7CisgICAgaWYgKCFfd2ViVmlldy5fc3R5bHVzVGFwR2VzdHVyZVNob3VsZENyZWF0ZUVkaXRh
YmxlSW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXpl
ciA9PSBfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIpOworICAgIF9wYWdlLT5oYW5k
bGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KHJvdW5kZWRJbnRQb2ludChnZXN0dXJlUmVjb2duaXpl
ci5sb2NhdGlvbiksICsrX2xhdGVzdFRhcElEKTsKK30KKwogLSAodm9pZClfbG9uZ1ByZXNzUmVj
b2duaXplZDooVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVy
CiB7CiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25pemVyID09IF9sb25nUHJlc3NHZXN0dXJlUmVj
b2duaXplcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQppbmRleCBlZmE4M2NhYTc0OGM0ZDU0NTkxZTNlZjY0ZWRkZGQ2NGVkNWFhNzc1Li43MmQ4
YmQ1ZWFmMjg0ZTU1MzE0OGVlODQ0OWEyMjBmODlkOWY0NDM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTU5Nyw2ICs1OTcsMTEgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCB1aW4KICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6SGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChwb2ludCwgcmVxdWVzdElEKSwgbV9wYWdl
SUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sK
KyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlU3R5bHVzU2luZ2xl
VGFwQXRQb2ludChwb2ludCwgcmVxdWVzdElEKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJv
bSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50
MzJfdCBnZXN0dXJlU3RhdGUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMzgyZDFmNGFhMzFmN2Qy
ODJkMmU4NzBkNjk4NWJlYTliY2Q3Y2M3OC4uZDFhODJkNmE5ZDkyOWJiNzEwZTBlYWIyYjk3M2Jh
ZGVjNzdlN2IzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtNjUzLDYgKzY1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbkFw
cGVhcmFuY2UoKTsKICAgICB2b2lkIGdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgdWludDY0X3QgcmVxdWVzdElEKTsKKyAgICB2b2lkIGhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogICAg
IHZvaWQgZ2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3Qs
IGludDMyX3QsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KGludDMyX3QsIGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
c3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMThiMDUx
MGMxODA3NTY4OWFiZDQ3YWFiZTQyOTc2YjdjNDAwZjQ3Yi4uOGFiODQzNzc2OTYxNjZjZDVkYzVh
M2FiNTEzZDBkMjM2ZDRkMDAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC05OSw2ICs5OSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEdldFNlbGVjdGlvbkNvbnRleHQoV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0QWxsb3dzTWVkaWFEb2N1bWVudElu
bGluZVBsYXliYWNrKGJvb2wgYWxsb3dzKQogICAgIEhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQo
V2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKKyAgICBIYW5kbGVT
dHlsdXNTaW5nbGVUYXBBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCBy
ZXF1ZXN0SUQpCiAgICAgU2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCB1c2VyU2NhbGFi
bGUpCiAgICAgR2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMy
X3QgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZz
ZXQsIFN0cmluZyB0ZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
ZTUzNmQ3ZDllODc2ZTVkOGZlZThhMmRhNWE4NDBkNDA1Mzk0N2M3Ny4uNGU3MjU0MmZjMGEyNzJh
OWYzOWRjOGZlZjVkY2E2NWQyMjU5MGY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTc1OCw2ICs3NTgsMzYgQEAgdm9p
ZCBXZWJQYWdlOjpoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgdWludDY0X3QKICAgICAgICAgY29tcGxldGVTeW50aGV0aWNDbGljayhub2Rl
UmVzcG9uZGluZ1RvQ2xpY2ssIGFkanVzdGVkUG9pbnQsIFdlYkNvcmU6OlR3b0ZpbmdlclRhcCk7
CiB9CiAKK3ZvaWQgV2ViUGFnZTo6aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBhdXRv
JiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7
CisKKyAgICBhdXRvIHBvaW50SW5Eb2N1bWVudCA9IGZyYW1lLnZpZXcoKS0+cm9vdFZpZXdUb0Nv
bnRlbnRzKHBvaW50KTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBmcmFtZS5ldmVudEhh
bmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludEluRG9jdW1lbnQsIEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworCisgICAgTm9kZSogbm9k
ZSA9IGhpdFRlc3QuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYg
KCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFyZW5kZXJlci0+aXNCb2R5
KCkgJiYgIXJlbmRlcmVyLT5pc1JlbmRlckJsb2NrKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGhp
dFRlc3QubG9jYWxQb2ludCgpLCBudWxscHRyKTsKKyAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkp
CisgICAgICAgIHBvc2l0aW9uID0gZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOwor
CisgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRv
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0
aW9uKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLnB0cigp
LCBwb3NpdGlvbi5hZmZpbml0eSgpLCBXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xv
c2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJlZCk7CisgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0
RWRpdGFibGVJbWFnZSgpOworICAgIHJlc2V0QXNzaXN0ZWROb2RlRm9yRnJhbWUobV9tYWluRnJh
bWUuZ2V0KCkpOworfQorCiB2b2lkIFdlYlBhZ2U6OnBvdGVudGlhbFRhcEF0UG9zaXRpb24odWlu
dDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbikKIHsK
ICAgICBtX3BvdGVudGlhbFRhcE5vZGUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLm5vZGVSZXNwb25k
aW5nVG9DbGlja0V2ZW50cyhwb3NpdGlvbiwgbV9wb3RlbnRpYWxUYXBMb2NhdGlvbiwgbV9wb3Rl
bnRpYWxUYXBTZWN1cml0eU9yaWdpbi5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggOWZk
MGMxMjI2ZjJiYzg0OWNhNjUwOTA1NjZhYTIyNDczZjlkMjg4ZS4uMDg5ZjAzOWU3YzUzODU3NmFl
Yjc3NjU3N2M5NzEyMDc0MzBiOTE5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRM
ZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbQpAQCAtNjU1LDYgKzY1
NSw3IEBAIHN0YXRpYyBOU1N0cmluZyogdW5kb05hbWVGb3JFZGl0QWN0aW9uKEVkaXRBY3Rpb24g
ZWRpdEFjdGlvbikKICAgICBjYXNlIEVkaXRBY3Rpb246OkRpY3RhdGlvbjogcmV0dXJuIFVJX1NU
UklOR19LRVlfSU5URVJOQUwoIkRpY3RhdGlvbiIsICJEaWN0YXRpb24gKFVuZG8gYWN0aW9uIG5h
bWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAgICBjYXNlIEVkaXRBY3Rpb246OkNvbnZlcnRU
b09yZGVyZWRMaXN0OiByZXR1cm4gVUlfU1RSSU5HX0tFWV9JTlRFUk5BTCgiQ29udmVydCB0byBP
cmRlcmVkIExpc3QiLCAiQ29udmVydCB0byBPcmRlcmVkIExpc3QgKFVuZG8gYWN0aW9uIG5hbWUp
IiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAgICBjYXNlIEVkaXRBY3Rpb246OkNvbnZlcnRUb1Vu
b3JkZXJlZExpc3Q6IHJldHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJDb252ZXJ0IHRvIFVu
b3JkZXJlZCBMaXN0IiwgIkNvbnZlcnQgdG8gVW5vcmRlcmVkIExpc3QgKFVuZG8gYWN0aW9uIG5h
bWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKKyAgICBjYXNlIEVkaXRBY3Rpb246Okluc2VydEVk
aXRhYmxlSW1hZ2U6IHJldHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJJbnNlcnQgRHJhd2lu
ZyIsICJJbnNlcnQgRHJhd2luZyAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFt
ZSIpOwogICAgIH0KICAgICByZXR1cm4gbmlsOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDU3N2ZiYTU2OTQxYjkzNjk3ZjU4M2FlMDFmZTQ0
YzQwNTZhNTlmYTAuLjFhYTMxY2VhMDRmNTZmOWM3ZDc4ZjRmYWU1MzA5OWMwMTY3NTczYWUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNSBAQAorMjAxOC0xMS0yNSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNv
bT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGluc2VydCBlZGl0YWJsZSBpbWFnZXMg
d2l0aCBhIGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MTkzNworCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAg
ICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9sbGVyOjpkcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdl
KToKKyAgICAgICAgSWYgdGhlIGNhbnZhcyBhbHJlYWR5IGhhcyBhIGRyYXdpbmcsIGRyYXcgYSBu
ZXcgc3Ryb2tlIG9uIHRvcCBvZiBpdAorICAgICAgICBpbnN0ZWFkIG9mIHJlbW92aW5nIHRoZSBl
eGlzdGluZyBzdHJva2UuCisKIDIwMTgtMTEtMjAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5zZXJ0IDxhdHRhY2htZW50PiBlbGVtZW50cyB1bmRl
ciBlZGl0YWJsZSBpbWFnZXMgdG8gbWFrZSB0aGVpciBiYWNraW5nIGRhdGEgYWNjZXNzaWJsZQpk
aWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVy
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9T
Lm1tCmluZGV4IDliYmRiNjhjYjVlNjliMDg2NTUzOTVjZmUyZjAwNTcwMzdkYjBmNjMuLjgxNDFj
NjQ3ZjEzMDgwNjRmMjQ2ODUyNzViNmYxMDI0NTIyOGYwMzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlwdENvbnRyb2xsZXJJT1MubW0KQEAgLTg5MCw3ICs4
OTAsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJvbGxlcjo6ZHJhd1NxdWFyZUluRWRpdGFibGVJbWFn
ZSgpCiAgICAgQ2xhc3MgcGtTdHJva2VDbGFzcyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiUEtTdHJv
a2UiKTsKIAogICAgIFBLQ2FudmFzVmlldyAqY2FudmFzVmlldyA9IGZpbmRFZGl0YWJsZUltYWdl
Q2FudmFzKCk7Ci0gICAgUmV0YWluUHRyPFBLRHJhd2luZz4gZHJhd2luZyA9IGFkb3B0TlMoW1tw
a0RyYXdpbmdDbGFzcyBhbGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxQS0RyYXdpbmc+IGRy
YXdpbmcgPSBjYW52YXNWaWV3LmRyYXdpbmcgPzogYWRvcHROUyhbW3BrRHJhd2luZ0NsYXNzIGFs
bG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRyPENHUGF0aFJlZj4gcGF0aCA9IGFkb3B0Q0YoQ0dQ
YXRoQ3JlYXRlV2l0aFJlY3QoQ0dSZWN0TWFrZSgwLCAwLCA1MCwgNTApLCBOVUxMKSk7CiAgICAg
UmV0YWluUHRyPFBLSW5rPiBpbmsgPSBbcGtJbmtDbGFzcyBpbmtXaXRoVHlwZTowIGNvbG9yOlVJ
Q29sb3IuZ3JlZW5Db2xvciB3ZWlnaHQ6MTAwLjBdOwogICAgIFJldGFpblB0cjxQS1N0cm9rZT4g
c3Ryb2tlID0gYWRvcHROUyhbW3BrU3Ryb2tlQ2xhc3MgYWxsb2NdIF9pbml0V2l0aFBhdGg6cGF0
aC5nZXQoKSBpbms6aW5rLmdldCgpIGlucHV0U2NhbGU6MV0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDdkZmI4OGJmZTdj
ODYyOTFkYzFhZjI1OGI1ZmM4ODIzZjA5NmI2ZWEuLjkwZTJiZDYzNzM5NGZjNTMxNDdiMDU0MmNj
MmQyOWQ4N2FlMzZmZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0xMS0yNCAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3Np
YmxlIHRvIGluc2VydCBlZGl0YWJsZSBpbWFnZXMgd2l0aCBhIGdlc3R1cmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTkzNworCisgICAgICAgIFJl
dmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICAqIGVkaXRpbmcvaW1hZ2VzL2Jhc2lj
LWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBlZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS1mcm9tLWV4ZWNDb21t
YW5kLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgZW5zdXJlcyB0aGF0IGVk
aXRhYmxlIGltYWdlcyBhbHNvIHdvcmsgd2hlbgorICAgICAgICBpbnNlcnRlZCB2aWEgdGhlIGVk
aXRvciBjb21tYW5kLgorCisgICAgICAgICogZWRpdGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRp
dGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL2ltYWdlcy9yZWRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMt
c3Ryb2tlcy5odG1sOiBBZGRlZC4KKyAgICAgICAgQWRkIGEgdGVzdCB0aGF0IGVuc3VyZXMgdGhh
dCBzdHJva2VzIGFyZSBtYWludGFpbmVkIHdoZW4gcmUtZG9pbmcgYW4KKyAgICAgICAgdW4tZG9u
ZSBlZGl0YWJsZSBpbWFnZSBpbnNlcnRpb24uCisKKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy91
bmRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLmh0bWw6IEFkZGVkLgor
ICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgZW5zdXJlcyB0aGF0IHRoZSBzZWxlY3Rpb24gc3RheXMg
aW4gYSBzZW5zaWJsZSBwbGFjZQorICAgICAgICB3aGVuIHVuZG9pbmcgYW5kIHJlZG9pbmcgZWRp
dGFibGUgaW1hZ2UgaW5zZXJ0aW9uLgorCiAyMDE4LTExLTIyICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEluc2VydCA8YXR0YWNobWVudD4gZWxlbWVu
dHMgdW5kZXIgZWRpdGFibGUgaW1hZ2VzIHRvIG1ha2UgdGhlaXIgYmFja2luZyBkYXRhIGFjY2Vz
c2libGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRh
YmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUtaW1hZ2UtZnJvbS1leGVjQ29tbWFuZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uOTEwMTE1OWFkMGJmOWQ3ZDE2MzFiMzIzYWY1Yjk4YWVhNWI0NDY2
NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVk
aXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBA
QAorCitIYWQgMCBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGJlZm9yZSBkcmF3aW5nLgorSGFk
IDEgc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS1mcm9tLWV4ZWND
b21tYW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1p
bWFnZS1mcm9tLWV4ZWNDb21tYW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDBlYWFjODk1NTg5MTI1ZWEw
MmYyMmMzMjIxODM1MjJkMTQzZDAyZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQuaHRtbApA
QCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUgaHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBb
IGVuYWJsZUVkaXRhYmxlSW1hZ2VzPXRydWUgXSAtLT4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5k
b3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RS
dW5uZXIud2FpdFVudGlsRG9uZSgpOworfQorCithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5
bmMgKCkgPT4geworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVu
dC5ib2R5LCAwKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgiSW5zZXJ0RWRpdGFibGVJbWFn
ZSIpOworICAgIGNvbnN0IGluaXRpYWxOdW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UgPSAo
YXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOworICAgIGF3
YWl0IFVJSGVscGVyLmRyYXdTcXVhcmVJbkVkaXRhYmxlSW1hZ2UoKTsKKyAgICBjb25zdCBudW1i
ZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlckRyYXdpbmcgPSAoYXdhaXQgVUlIZWxwZXIu
bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgPSBgSGFkICR7aW5pdGlhbE51bWJlck9mU3Ryb2tlc0lu
RWRpdGFibGVJbWFnZX0gc3Ryb2tlcyBpbiBlZGl0YWJsZSBpbWFnZSBiZWZvcmUgZHJhd2luZy48
YnIvPkhhZCAke251bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZ30gc3Ry
b2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVyIGRyYXdpbmcuYDsKKyAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKK30pOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBjb250ZW50ZWRpdGFi
bGU+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZWRpdGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0
cm9rZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVkby1pbnNl
cnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZhNzM4NjJjNjExMzY2NGZkOWVlYzQ0N2Y0NzRjYjVmMWNjZWM0MjIKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9yZWRvLWluc2VydC1lZGl0YWJsZS1p
bWFnZS1tYWludGFpbnMtc3Ryb2tlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK0hh
ZCAwIHN0cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2UgYmVmb3JlIGRyYXdpbmcuCitIYWQgMSBzdHJv
a2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy4KK0hhZCAwIHN0cm9rZXMgaW4gZWRp
dGFibGUgaW1hZ2UgYWZ0ZXIgdW5kby4KK0hhZCAxIHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBh
ZnRlciByZWRvLgorSGFkIDIgc3Ryb2tlcyBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5n
IGFnYWluLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVkby1pbnNl
cnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMuaHRtbCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvaW1hZ2VzL3JlZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2Vz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNjY5YWRjNDgyMzc4OTkyZGQ0YWMyZTVmZGMyMGI5OTBhYjdiYWRj
NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlZG8taW5z
ZXJ0LWVkaXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLmh0bWwKQEAgLTAsMCArMSwyOSBA
QAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVFZGl0YWJs
ZUltYWdlcz10cnVlIF0gLS0+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
dWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRp
bERvbmUoKTsKK30KKworYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKKyAg
ICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgMCk7Cisg
ICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEVkaXRhYmxlSW1hZ2UiKTsKKyAgICBjb25z
dCBpbml0aWFsTnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlID0gKGF3YWl0IFVJSGVscGVy
Lm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKKyAgICBhd2FpdCBVSUhlbHBlci5k
cmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKCk7CisgICAgY29uc3QgbnVtYmVyT2ZTdHJva2VzSW5F
ZGl0YWJsZUltYWdlQWZ0ZXJEcmF3aW5nID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tl
c0luRWRpdGFibGVJbWFnZSgpKTsKKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgndW5kbycsIGZh
bHNlLCBudWxsKTsKKyAgICBjb25zdCBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRl
clVuZG8gPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkp
OworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdyZWRvJywgZmFsc2UsIG51bGwpOworICAgIGNv
bnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyUmVkbyA9IChhd2FpdCBVSUhl
bHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7CisgICAgYXdhaXQgVUlIZWxw
ZXIuZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpOworICAgIGNvbnN0IG51bWJlck9mU3Ryb2tl
c0luRWRpdGFibGVJbWFnZUFmdGVyU2Vjb25kRHJhd2luZyA9IChhd2FpdCBVSUhlbHBlci5udW1i
ZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UoKSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImxvZyIpLmlubmVySFRNTCA9IGBIYWQgJHtpbml0aWFsTnVtYmVyT2ZTdHJva2VzSW5FZGl0
YWJsZUltYWdlfSBzdHJva2VzIGluIGVkaXRhYmxlIGltYWdlIGJlZm9yZSBkcmF3aW5nLjxici8+
SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJEcmF3aW5nfSBzdHJva2Ug
aW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJhd2luZy48YnIvPkhhZCAke251bWJlck9mU3Ryb2tl
c0luRWRpdGFibGVJbWFnZUFmdGVyVW5kb30gc3Ryb2tlcyBpbiBlZGl0YWJsZSBpbWFnZSBhZnRl
ciB1bmRvLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJSZWRv
fSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgcmVkby48YnIvPkhhZCAke251bWJlck9m
U3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyU2Vjb25kRHJhd2luZ30gc3Ryb2tlcyBpbiBlZGl0
YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nIGFnYWluLmA7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Cit9KTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgY29udGVudGVkaXRhYmxlPgor
PGRpdiBpZD0ibG9nIj48L2Rpdj4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Vk
aXRpbmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lZDI3MDhlMmJmZGNjZjA5ZmQ0NDczNzI5MDIyOTJlY2NkY2U3
OWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvdW5kby1p
bnNlcnQtZWRpdGFibGUtaW1hZ2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjggQEAKK1RoaXMg
dGVzdCBpbnNlcnRzIGEgZWRpdGFibGUgaW1hZ2UsIHBlcmZvcm1zIGFuIHVuZG8sIHRoZW4gYSBy
ZWRvLCBlbnN1cmluZyB0aGF0IHRoZSBzZWxlY3Rpb24gcmVtYWlucyBhZnRlciB0aGUgaW1hZ2Ug
d2hlbiByZS1kb25lLgorCitiZWZvcmUgdW5kbzoKK3wgIkhlbGxvLCB3b3JsZCEiCit8IDxpbWc+
Cit8ICAgaGVpZ2h0PSIzMDBweCIKK3wgICBzdHlsZT0iZGlzcGxheTogYmxvY2siCit8ICAgd2lk
dGg9IjEwMCUiCit8ICAgeC1hcHBsZS1lZGl0YWJsZS1pbWFnZT0iIgorfCAgIDxzaGFkb3c6cm9v
dD4KK3wgICAgIDxhdHRhY2htZW50PgorfCAgICAgICBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1w
b3J0YW50OyIKK3wgPCNzZWxlY3Rpb24tY2FyZXQ+CisKK2FmdGVyIHVuZG86Cit8ICJIZWxsbywg
d29ybGQhPCNzZWxlY3Rpb24tY2FyZXQ+IgorCithZnRlciByZWRvOgorfCAiSGVsbG8sIHdvcmxk
ISIKK3wgPGltZz4KK3wgICBoZWlnaHQ9IjMwMHB4IgorfCAgIHN0eWxlPSJkaXNwbGF5OiBibG9j
ayIKK3wgICB3aWR0aD0iMTAwJSIKK3wgICB4LWFwcGxlLWVkaXRhYmxlLWltYWdlPSIiCit8ICAg
PHNoYWRvdzpyb290PgorfCAgICAgPGF0dGFjaG1lbnQ+Cit8ICAgICAgIHN0eWxlPSJkaXNwbGF5
OiBub25lICFpbXBvcnRhbnQ7IgorfCA8I3NlbGVjdGlvbi1jYXJldD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy91bmRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJiZjE2NTUxYzE0ZDU3ZWRiMTNmMzYzZmQyYzZiNGRhNjFiMmU3Y2MK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy91bmRvLWluc2Vy
dC1lZGl0YWJsZS1pbWFnZS5odG1sCkBAIC0wLDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPjwh
LS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5hYmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBdIC0tPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIiB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgY29udGVudGVk
aXRhYmxlPgorPGRpdiBpZD0idGVzdCI+SGVsbG8sIHdvcmxkITwvZGl2PgorPHNjcmlwdD4KK2Nv
bnN0IGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisKK3dpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkaXYsIDEzKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJ
bnNlcnRFZGl0YWJsZUltYWdlIik7CisKK01hcmt1cC5kZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGlu
c2VydHMgYSBlZGl0YWJsZSBpbWFnZSwgcGVyZm9ybXMgYW4gdW5kbywgdGhlbiBhIHJlZG8sIGVu
c3VyaW5nIHRoYXQgdGhlIHNlbGVjdGlvbiByZW1haW5zIGFmdGVyIHRoZSBpbWFnZSB3aGVuIHJl
LWRvbmUuIikKK01hcmt1cC5kdW1wKGRpdiwgImJlZm9yZSB1bmRvIik7Citkb2N1bWVudC5leGVj
Q29tbWFuZCgndW5kbycsIGZhbHNlLCBudWxsKTsKK01hcmt1cC5kdW1wKGRpdiwgImFmdGVyIHVu
ZG8iKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCdyZWRvJywgZmFsc2UsIG51bGwpOworTWFya3Vw
LmR1bXAoZGl2LCAiYWZ0ZXIgcmVkbyIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355588</attachid>
            <date>2018-11-25 02:55:11 -0800</date>
            <delta_ts>2018-11-25 04:11:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191937-20181125025509.patch</filename>
            <type>text/plain</type>
            <size>42598</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTM0MWJjZDYxZDM5Yzky
NjgyNTEyNThmNWRmNTFhM2IxNGE3NjU1Ni4uYTNiZWQ5OTRiOThiN2ViZGQzNmMwYWRiMTM4NDNk
ZGMwMTczNDNlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTExLTI0ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgaXQgcG9z
c2libGUgdG8gaW5zZXJ0IGVkaXRhYmxlIGltYWdlcyB3aXRoIGEgZ2VzdHVyZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxOTM3CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgorCisgICAgICAgIFRlc3RzOgorICAgICAgICAgICAg
ZWRpdGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9r
ZXMuaHRtbCwKKyAgICAgICAgICAgIGVkaXRpbmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVkaXRhYmxl
LWltYWdlLmh0bWwsCisgICAgICAgICAgICBlZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1p
bWFnZS1mcm9tLWV4ZWNDb21tYW5kLmh0bWwKKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwOgorICAgICAgICAqIFNvdXJjZS9X
ZWJDb3JlL2VuLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisgICAgICAgICogZWRpdGluZy9F
ZGl0QWN0aW9uLmg6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjppbnNlcnRFZGl0YWJsZUltYWdlKToKKyAgICAgICAgKiBlZGl0aW5nL0Vk
aXRvci5oOgorICAgICAgICAqIGVkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kOjpJ
bnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNlcnRFZGl0
YWJsZUltYWdlQ29tbWFuZDo6ZG9BcHBseSk6CisgICAgICAgICogZWRpdGluZy9JbnNlcnRFZGl0
YWJsZUltYWdlQ29tbWFuZC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc2VydEVkaXRh
YmxlSW1hZ2VDb21tYW5kOjpjcmVhdGUpOgorICAgICAgICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVj
dGlvbi5jcHA6CisgICAgICAgIEFkZCBhbiBlZGl0b3IgY29tbWFuZCB0aGF0IGluc2VydHMgYW4g
ZWRpdGFibGUgaW1hZ2UuCisgICAgICAgIEl0IHdpbGwgbGlrZWx5IGdldCBhIGJpdCBtb3JlIGNv
bXBsaWNhdGVkLCBidXQgZm9yIG5vdyBpdCBqdXN0IGluc2VydHMKKyAgICAgICAgYSAxMDAlIGJ5
IDMwMHB4IGVkaXRhYmxlIGltYWdlLgorCiAyMDE4LTExLTIyICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEluc2VydCA8YXR0YWNobWVudD4gZWxlbWVu
dHMgdW5kZXIgZWRpdGFibGUgaW1hZ2VzIHRvIG1ha2UgdGhlaXIgYmFja2luZyBkYXRhIGFjY2Vz
c2libGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKaW5kZXggNGRmYzdhMmU2ZjY0M2UyNTM4ODRkYzI2NTRjZjA1YTg1N2Q4MDQy
Zi4uYzk0ZTc4OGVkYzhkZjljYjIwN2EyMGVhY2IwMmYwYzU4NDFlMjNjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw0MyBAQAorMjAxOC0xMS0yNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGluc2VydCBlZGl0YWJsZSBp
bWFnZXMgd2l0aCBhIGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MTkzNworCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX3N0eWx1c1RhcEdlc3R1cmVTaG91bGRDcmVhdGVFZGl0YWJsZUltYWdlXSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICBBZGQgYSBpbnRlcm5hbCBnZXR0ZXIgZm9yIGEgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBw
cm9wZXJ0eS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRWRpdENvbW1hbmRQcm94eTo6bmFtZUZvckVkaXRBY3Rpb24p
OgorICAgICAgICBBZGQgYSB1bmRvIG5hbWUuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rp
b24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5t
bToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzZXR1cEludGVyYWN0aW9uXSk6CisgICAgICAg
ICgtW1dLQ29udGVudFZpZXcgY2xlYW51cEludGVyYWN0aW9uXSk6CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdKToKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfYWRkRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICBB
ZGQgYSBzaW5nbGUtc3R5bHVzLXRhcCBnZXN0dXJlIHJlY29nbml6ZXIuCisKKyAgICAgICAgKC1b
V0tDb250ZW50VmlldyBfc3R5bHVzU2luZ2xlVGFwUmVjb2duaXplZDpdKToKKyAgICAgICAgSWYg
YWxsb3dlZCwgcmVxdWVzdCB0byBpbnNlcnQgYW4gZWRpdGFibGUgaW1hZ2Ugd2hlbiBhIHN0eWx1
cyB0YXAgb2NjdXJzLgorCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFuZGxlU3R5bHVzU2luZ2xlVGFw
QXRQb2ludCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9pbnQpOgorICAgICAgICBEbyBhIGhpdCB0
ZXN0LCBzZWxlY3QgdGhlIGhpdCBwb3NpdGlvbiwgaW5zZXJ0IGFuIGVkaXRhYmxlIGltYWdlLCBh
bmQKKyAgICAgICAgdGhlbiBkZS1hc3Npc3QgYW55IGFzc2lzdGVkIG5vZGUgKHRvIG1ha2UgdGhl
IGtleWJvYXJkIGdvIGF3YXkpLgorICAgICAgICBGb3Igbm93LCB3ZSdsbCBvbmx5IGluc2VydCBp
ZiB3ZSBoaXQgbm9uLXJlcGxhY2VkIGVsZW1lbnRzLAorICAgICAgICB0aG91Z2ggdGhpcyBoZXVy
aXN0aWMgd2lsbCBuZWVkIHRvIGJlIGVuaGFuY2VkIHNpZ25pZmljYW50bHkgb25jZSB3ZQorICAg
ICAgICBkZWNpZGUgb24gYSBkZXNpZ24uCisKIDIwMTgtMTEtMjAgIFRpbSBIb3J0b24gIDx0aW1v
dGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5zZXJ0IDxhdHRhY2htZW50PiBlbGVt
ZW50cyB1bmRlciBlZGl0YWJsZSBpbWFnZXMgdG8gbWFrZSB0aGVpciBiYWNraW5nIGRhdGEgYWNj
ZXNzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDc1MjMyZmY2ZTA1MzMyZThl
YjUxNWMwNzA3NzgyYzJkNDk3NjYwNjkuLmVjZjZiMWYyN2I4ODU1NGE1N2M0MmU1MTExOWYxZTVk
YTlkMWYzNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOC0xMS0yNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAg
ICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGluc2VydCBlZGl0YWJsZSBpbWFnZXMgd2l0aCBhIGdl
c3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
MTkzNworCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbToKKyAgICAgICAgKHVuZG9OYW1lRm9yRWRp
dEFjdGlvbik6CisgICAgICAgIEFkZCBhIHVuZG8gbmFtZS4KKwogMjAxOC0xMS0yNCAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEZpeCBh
IGZldyBsb2NhbGl6YWJsZSBzdHJpbmcgZGVzY3JpcHRpb25zIGluIFdlYkVkaXRDb21tYW5kUHJv
eHkuY3BwIGFuZCBXZWJFZGl0b3JDbGllbnQubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNWUwN2QzY2Rk
ODk1ZDNkMWUxMWQ2NDgzNTBlMjY5Mzg2OTkwNzZiZS4uNzZkZWQ4ZWY2MzY3ZTQ2MGVkMGI4MzZm
MzFiZmE5YzYxNzI5MzVhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
KysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTkxNCw2ICs5MTQsNyBAQCBlZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAogZWRpdGluZy9IVE1MSW50ZXJjaGFuZ2UuY3BwCiBlZGl0
aW5nL0luc2VydE5lc3RlZExpc3RDb21tYW5kLmNwcAogZWRpdGluZy9JbmRlbnRPdXRkZW50Q29t
bWFuZC5jcHAKK2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3BwCiBlZGl0aW5n
L0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCiBlZGl0aW5nL0luc2VydExpbmVCcmVha0Nv
bW1hbmQuY3BwCiBlZGl0aW5nL0luc2VydExpc3RDb21tYW5kLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDEyNGYwN2MxMmE2
ZWVkMmQ4ZDc2Y2NiZGQ0YmZhYzNjNTdlMmI1MzguLjc4NDUzYzljY2Q5YmY4OGM1ODAxYWRmNGFm
NDgzNGIwNDYxNTc5MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTc1NSw2ICs3NTUsNyBAQAogCQkyRDcwQkExMzE4MDc0RERG
MDAwMTkwOEEgLyogUGxhdGZvcm1DQUxheWVyQ29jb2EuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENzBCQTEyMTgwNzREREYwMDAxOTA4QSAvKiBQbGF0
Zm9ybUNBTGF5ZXJDb2NvYS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTJENzZCQjgyMTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENzZCQjgw
MTk0NTYzMjQwMENGRDI5QSAvKiBSdW5Mb29wT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDdFRDBBQjFCQUU5OTE3MDA0M0IzRTUg
LyogVGltZXJFdmVudEJhc2VkTW9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkQ3RUQwQTkxQkFFOTkxNzAwNDNCM0U1IC8qIFRpbWVyRXZlbnRCYXNl
ZE1vY2suaCAqLzsgfTsKKwkJMkQ4MUUxQ0YyMUE3OENDMjAwQTMyQ0Y0IC8qIEluc2VydEVkaXRh
YmxlSW1hZ2VDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDgxRTFDRDIxQTc4Q0MyMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNv
bW1hbmQuaCAqLzsgfTsKIAkJMkQ4Mjg3RjcxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2Nh
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4
Mjg3RjUxNkU0QTAzODAwODZCRDAwIC8qIEhpdFRlc3RMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJEOEI5MkNFMjAzRDEzRTEwMDlD
ODY4RiAvKiBVbmlmaWVkU291cmNlNDgxLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERFNUY4NEFEMUZBMUE0OEIwMDZEQjYzQiAvKiBVbmlmaWVkU291
cmNlNDgxLmNwcCAqLzsgfTsKIAkJMkQ4QjkyQ0YyMDNEMTNFMTAwOUM4NjhGIC8qIFVuaWZpZWRT
b3VyY2U0ODIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gREU1Rjg0QzgxRkExQTRBNDAwNkRCNjNCIC8qIFVuaWZpZWRTb3VyY2U0ODIuY3BwICovOyB9
OwpAQCAtNjY1Miw2ICs2NjUzLDggQEAKIAkJMkQ3NkJCODAxOTQ1NjMyNDAwQ0ZEMjlBIC8qIFJ1
bkxvb3BPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSdW5Mb29w
T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ3NkJCODMxOTQ1NkY4
MTAwQ0ZEMjlBIC8qIFJ1bkxvb3BPYnNlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBSdW5Mb29wT2JzZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkyRDdFRDBBOTFCQUU5OTE3MDA0M0IzRTUgLyogVGltZXJFdmVudEJhc2VkTW9jay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaW1lckV2ZW50QmFzZWRNb2NrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEODFFMUNCMjFBNzhDQzEwMEEzMkNGNCAv
KiBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTJEODFFMUNEMjFBNzhDQzIwMEEzMkNGNCAvKiBJbnNlcnRFZGl0
YWJsZUltYWdlQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNl
cnRFZGl0YWJsZUltYWdlQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RDgyODdGNDE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhpdFRlc3RMb2NhdGlvbi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODI4N0Y1MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0
TG9jYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGl0VGVzdExvY2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEOEZFQkRBMTQzRTNFRjcwMDcy
NTAyQiAvKiBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBDU1NDcm9zc2ZhZGVWYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMDg1OCw2ICsyMDg2MSw4IEBACiAJCQkJOTMzMDlEOTcwOTlFNjQ5MTAwNTZFNTgx
IC8qIEhUTUxJbnRlcmNoYW5nZS5oICovLAogCQkJCURCMjNDMkM5MEE1MDhEMjkwMDI0ODlFQiAv
KiBJbmRlbnRPdXRkZW50Q29tbWFuZC5jcHAgKi8sCiAJCQkJREIyM0MyQ0EwQTUwOEQyOTAwMjQ4
OUVCIC8qIEluZGVudE91dGRlbnRDb21tYW5kLmggKi8sCisJCQkJMkQ4MUUxQ0IyMUE3OENDMTAw
QTMyQ0Y0IC8qIEluc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmNwcCAqLywKKwkJCQkyRDgxRTFD
RDIxQTc4Q0MyMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaCAqLywKIAkJ
CQk5MzMwOUQ5QTA5OUU2NDkxMDA1NkU1ODEgLyogSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5j
cHAgKi8sCiAJCQkJOTMzMDlEOUIwOTlFNjQ5MTAwNTZFNTgxIC8qIEluc2VydEludG9UZXh0Tm9k
ZUNvbW1hbmQuaCAqLywKIAkJCQk5MzMwOUQ5QzA5OUU2NDkxMDA1NkU1ODEgLyogSW5zZXJ0TGlu
ZUJyZWFrQ29tbWFuZC5jcHAgKi8sCkBAIC0yOTIxMSw2ICsyOTIxNiw3IEBACiAJCQkJRTUyRUZE
RjQyMTEyODc1QTAwQUQyODJBIC8qIElucHV0TW9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdF
MzUyNEQxMjQ1MEM2NjAwQkFGNUQ5IC8qIElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzM0ODYxMjQxNUZERTIxRTAwN0ExQ0M5IC8qIElucHV0VHlwZU5hbWVzLmggaW4gSGVhZGVycyAq
LywKKwkJCQkyRDgxRTFDRjIxQTc4Q0MyMDBBMzJDRjQgLyogSW5zZXJ0RWRpdGFibGVJbWFnZUNv
bW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REVBMDk5RTY0OTIwMDU2RTU4MSAvKiBJ
bnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFQzA5
OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0TGluZUJyZWFrQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJRDA3REVBQkEwQTM2NTU0QTAwQ0EzMEY4IC8qIEluc2VydExpc3RDb21tYW5kLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdEFjdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmgKaW5kZXggZmViNzc4NmU5
Yjc3YmUyNWU3NmVjZjRhMDU1MWIwMjBjZjc3ZmUyNy4uNDI0NjRlMjZlNjMzMDc4MDVmZDNkNjU1
ZDFkMWRiODEyOGE1NjBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
QWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0QWN0aW9uLmgKQEAgLTg3
LDcgKzg3LDggQEAgZW51bSBjbGFzcyBFZGl0QWN0aW9uIDogdWludDhfdCB7CiAgICAgQ29udmVy
dFRvT3JkZXJlZExpc3QsCiAgICAgQ29udmVydFRvVW5vcmRlcmVkTGlzdCwKICAgICBJbmRlbnQs
Ci0gICAgT3V0ZGVudAorICAgIE91dGRlbnQsCisgICAgSW5zZXJ0RWRpdGFibGVJbWFnZQogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4
IDBiMGNkYWY2YjAyNzRkZGEwM2E4MGQ4YjAyZGI2MmM5YmQ1OTljOGEuLmFiYWQxYjMyYWQyYjRh
MTJmYTFhNWNiYzNmMjNhMTMxYzgzNzFhODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAK
QEAgLTY4LDYgKzY4LDcgQEAKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAi
SW5kZW50T3V0ZGVudENvbW1hbmQuaCIKICNpbmNsdWRlICJJbnB1dEV2ZW50LmgiCisjaW5jbHVk
ZSAiSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuaCIKICNpbmNsdWRlICJJbnNlcnRMaXN0Q29t
bWFuZC5oIgogI2luY2x1ZGUgIkluc2VydFRleHRDb21tYW5kLmgiCiAjaW5jbHVkZSAiS2V5Ym9h
cmRFdmVudC5oIgpAQCAtNDI1MCw0ICs0MjUxLDkgQEAgU3RyaW5nIEVkaXRvcjo6Y2xpZW50UmVw
bGFjZW1lbnRVUkxGb3JSZXNvdXJjZShSZWY8U2hhcmVkQnVmZmVyPiYmIHJlc291cmNlRGF0YSwK
ICAgICByZXR1cm4geyB9OwogfQogCit2b2lkIEVkaXRvcjo6aW5zZXJ0RWRpdGFibGVJbWFnZSgp
Cit7CisgICAgSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpKS0+
YXBwbHkoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmgKaW5kZXggN2ExNGVkYzBjMTQxOTcxOGQ1NjE0NzNkMGJiOTUzMzM0YWY0YWNhYi4uMjI4Zjkx
N2Q1Yzc3OWVhN2RkOTU5MmM3NDI0NzkzOGZjMDdhYzgzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCkBAIC01MzIsNiArNTMyLDggQEAgcHVibGljOgogI2VuZGlmCiAjZW5kaWYKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgaW5zZXJ0RWRpdGFibGVJbWFnZSgpOworCiBwcml2YXRlOgogICAg
IERvY3VtZW50JiBkb2N1bWVudCgpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
b3JDb21tYW5kLmNwcAppbmRleCBjYTZkZjEwOWE4OWNlZDJiZWM3ZmFjYjY0YjJiODcxOTZkMmVk
MTY5Li44Y2Q2NmZlZTc1NzhiZGY5N2EwMTdiMGE1NjI0ZjFiYTdhNmY3MzNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNs
dWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSW5kZW50T3V0ZGVudENvbW1hbmQuaCIKKyNpbmNsdWRlICJJbnNlcnRFZGl0YWJsZUltYWdl
Q29tbWFuZC5oIgogI2luY2x1ZGUgIkluc2VydExpc3RDb21tYW5kLmgiCiAjaW5jbHVkZSAiSW5z
ZXJ0TmVzdGVkTGlzdENvbW1hbmQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC00NzgsNiArNDc5
LDEzIEBAIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnRJbWFnZShGcmFtZSYgZnJhbWUsIEV2ZW50
KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QKICAgICByZXR1cm4gZXhlY3V0ZUluc2VydE5v
ZGUoZnJhbWUsIFdURk1vdmUoaW1hZ2UpKTsKIH0KIAorc3RhdGljIGJvb2wgZXhlY3V0ZUluc2Vy
dEVkaXRhYmxlSW1hZ2UoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2Us
IGNvbnN0IFN0cmluZyYpCit7CisgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOworICAgIElu
c2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCkpLT5hcHBs
eSgpOworICAgIHJldHVybiB0cnVlOworfQorCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0TGlu
ZUJyZWFrKEZyYW1lJiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5kU291cmNlIHNv
dXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBzd2l0Y2ggKHNvdXJjZSkgewpAQCAtMTM3MSw2
ICsxMzc5LDEzIEBAIHN0YXRpYyBib29sIGVuYWJsZWRVbmRvKEZyYW1lJiBmcmFtZSwgRXZlbnQq
LCBFZGl0b3JDb21tYW5kU291cmNlKQogICAgIHJldHVybiBmcmFtZS5lZGl0b3IoKS5jYW5VbmRv
KCk7CiB9CiAKK3N0YXRpYyBib29sIGVuYWJsZWRJblJpY2hseUVkaXRhYmxlVGV4dFdpdGhFZGl0
YWJsZUltYWdlc0VuYWJsZWQoRnJhbWUmIGZyYW1lLCBFdmVudCogZXZlbnQsIEVkaXRvckNvbW1h
bmRTb3VyY2Ugc291cmNlKQoreworICAgIGlmICghZnJhbWUuc2V0dGluZ3MoKS5lZGl0YWJsZUlt
YWdlc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBlbmFibGVk
SW5SaWNobHlFZGl0YWJsZVRleHQoZnJhbWUsIGV2ZW50LCBzb3VyY2UpOworfQorCiAvLyBTdGF0
ZSBmdW5jdGlvbnMKIAogc3RhdGljIFRyaVN0YXRlIHN0YXRlTm9uZShGcmFtZSYsIEV2ZW50KikK
QEAgLTE1OTAsNiArMTYwNSw3IEBAIHN0YXRpYyBjb25zdCBDb21tYW5kTWFwJiBjcmVhdGVDb21t
YW5kTWFwKCkKICAgICAgICAgeyAiSWdub3JlU3BlbGxpbmciLCB7IGV4ZWN1dGVJZ25vcmVTcGVs
bGluZywgc3VwcG9ydGVkRnJvbU1lbnVPcktleUJpbmRpbmcsIGVuYWJsZWRJbkVkaXRhYmxlVGV4
dCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5vdFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVj
dXRpb25XaGVuRGlzYWJsZWQgfSB9LAogICAgICAgICB7ICJJbmRlbnQiLCB7IGV4ZWN1dGVJbmRl
bnQsIHN1cHBvcnRlZCwgZW5hYmxlZEluUmljaGx5RWRpdGFibGVUZXh0LCBzdGF0ZU5vbmUsIHZh
bHVlTnVsbCwgbm90VGV4dEluc2VydGlvbiwgZG9Ob3RBbGxvd0V4ZWN1dGlvbldoZW5EaXNhYmxl
ZCB9IH0sCiAgICAgICAgIHsgIkluc2VydEJhY2t0YWIiLCB7IGV4ZWN1dGVJbnNlcnRCYWNrdGFi
LCBzdXBwb3J0ZWRGcm9tTWVudU9yS2V5QmluZGluZywgZW5hYmxlZEluRWRpdGFibGVUZXh0LCBz
dGF0ZU5vbmUsIHZhbHVlTnVsbCwgaXNUZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9u
V2hlbkRpc2FibGVkIH0gfSwKKyAgICAgICAgeyAiSW5zZXJ0RWRpdGFibGVJbWFnZSIsIHsgZXhl
Y3V0ZUluc2VydEVkaXRhYmxlSW1hZ2UsIHN1cHBvcnRlZCwgZW5hYmxlZEluUmljaGx5RWRpdGFi
bGVUZXh0V2l0aEVkaXRhYmxlSW1hZ2VzRW5hYmxlZCwgc3RhdGVOb25lLCB2YWx1ZU51bGwsIG5v
dFRleHRJbnNlcnRpb24sIGRvTm90QWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQgfSB9LAogICAg
ICAgICB7ICJJbnNlcnRIVE1MIiwgeyBleGVjdXRlSW5zZXJ0SFRNTCwgc3VwcG9ydGVkLCBlbmFi
bGVkSW5FZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5zZXJ0aW9u
LCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAgICAgeyAiSW5zZXJ0
SG9yaXpvbnRhbFJ1bGUiLCB7IGV4ZWN1dGVJbnNlcnRIb3Jpem9udGFsUnVsZSwgc3VwcG9ydGVk
LCBlbmFibGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RU
ZXh0SW5zZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKICAgICAg
ICAgeyAiSW5zZXJ0SW1hZ2UiLCB7IGV4ZWN1dGVJbnNlcnRJbWFnZSwgc3VwcG9ydGVkLCBlbmFi
bGVkSW5SaWNobHlFZGl0YWJsZVRleHQsIHN0YXRlTm9uZSwgdmFsdWVOdWxsLCBub3RUZXh0SW5z
ZXJ0aW9uLCBkb05vdEFsbG93RXhlY3V0aW9uV2hlbkRpc2FibGVkIH0gfSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uM2RmMjExMjViODgzMTk1OTQ5N2QyMzdjNTY0ZWI1ZGI3Nzg0NThkMQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0RWRpdGFibGVJbWFnZUNv
bW1hbmQuY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc2VydEVk
aXRhYmxlSW1hZ2VDb21tYW5kLmgiCisKKyNpbmNsdWRlICJFZGl0aW5nLmgiCisjaW5jbHVkZSAi
SFRNTEltYWdlRWxlbWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0luc2VydEVkaXRh
YmxlSW1hZ2VDb21tYW5kOjpJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZChEb2N1bWVudCYgZG9j
dW1lbnQpCisgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCkKK3sKK30KKwordm9p
ZCBJbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZDo6ZG9BcHBseSgpCit7CisgICAgaWYgKGVuZGlu
Z1NlbGVjdGlvbigpLmlzTm9uZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGltZ0Vs
ZW1lbnQgPSBIVE1MSW1hZ2VFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CisgICAgaW1nRWxl
bWVudC0+c2V0QXR0cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbih4X2FwcGxlX2VkaXRhYmxl
X2ltYWdlQXR0ciwgZW1wdHlBdG9tKCkpOworICAgIGltZ0VsZW1lbnQtPnNldEF0dHJpYnV0ZVdp
dGhvdXRTeW5jaHJvbml6YXRpb24od2lkdGhBdHRyLCBBdG9taWNTdHJpbmcoIjEwMCUiLCBBdG9t
aWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgaW1nRWxlbWVudC0+c2V0QXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihoZWlnaHRBdHRyLCBBdG9taWNTdHJpbmcoIjMw
MHB4IiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkpOworICAgIGltZ0VsZW1l
bnQtPnNldEF0dHJpYnV0ZVdpdGhvdXRTeW5jaHJvbml6YXRpb24oc3R5bGVBdHRyLCBBdG9taWNT
dHJpbmcoImRpc3BsYXk6IGJsb2NrIiwgQXRvbWljU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworCisgICAgaW5zZXJ0Tm9kZUF0KGltZ0VsZW1lbnQuY29weVJlZigpLCBlbmRpbmdTZWxl
Y3Rpb24oKS5zdGFydCgpKTsKKyAgICBzZXRFbmRpbmdTZWxlY3Rpb24odmlzaWJsZVBvc2l0aW9u
QWZ0ZXJOb2RlKGltZ0VsZW1lbnQuZ2V0KCkpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9JbnNlcnRFZGl0YWJsZUltYWdlQ29tbWFuZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM0
ZmM2N2Q4N2E4NmEyOTUxZGNlNmFkNGRkOTE2ZTZhYjRkNjY2OTYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEVkaXRhYmxlSW1hZ2VDb21tYW5kLmgKQEAg
LTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNvbXBvc2l0ZUVkaXRDb21tYW5kLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQg
OiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgeworcHVibGljOgorICAgIHN0YXRpYyBSZWY8
SW5zZXJ0RWRpdGFibGVJbWFnZUNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNlcnRFZGl0YWJsZUltYWdlQ29t
bWFuZChkb2N1bWVudCkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBJbnNlcnRFZGl0YWJsZUlt
YWdlQ29tbWFuZChEb2N1bWVudCYpOworCisgICAgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7Cisg
ICAgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gRWRpdEFj
dGlvbjo6SW5zZXJ0RWRpdGFibGVJbWFnZTsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5kZXggM2Y4
ZmYyYjJhOTQyMzFjODliOWIyNDJjNjMxNzUyZjJkNTA4M2E0ZC4uNDU0Y2NlYjVmZTI4MTYzOTZk
NDI1ZTgzY2RlMGI2ZGQyY2NlZmY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9WaXNpYmxlU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgorI2lu
Y2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJWaXNpYmxlVW5pdHMuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncyBiL1NvdXJjZS9XZWJDb3JlL2Vu
Lmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKaW5kZXggNWYxYjU4OWQyMTNmOWI3M2RmYjFmZDVm
MTdkZGEyMTgwZDJjNTg2Ny4uMWVkNzhjZTA1OTdiZDMwZmZjNDVjMTMxMmI1MTY1NjcwMDgwNzZk
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZW4ubHByb2ovTG9jYWxpemFibGUuc3RyaW5n
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9lbi5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC0z
NTUsNiArMzU1LDkgQEAKIC8qIFVuZG8gYWN0aW9uIG5hbWUgKi8KICJJbmRlbnQgKFVuZG8gYWN0
aW9uIG5hbWUpIiA9ICJJbmRlbnQiOwogCisvKiBVbmRvIGFjdGlvbiBuYW1lICovCisiSW5zZXJ0
IERyYXdpbmcgKFVuZG8gYWN0aW9uIG5hbWUpIiA9ICJJbnNlcnQgRHJhd2luZyI7CisKIC8qIFVu
ZG8gYWN0aW9uIG5hbWUgKi8KICJJbnNlcnQgTGlzdCAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIklu
c2VydCBMaXN0IjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KaW5kZXggYmMzMDIyZWI3YjBkYjA4ZWY1YTgyZjcxMjdjNGExOGE3YjM2NzQ0Ni4u
MGE3MzMyZjNiNjAxZTYwNTg3MWE5ODA2MGFkMGEzZGRmZDgwZGYzYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yNDM3LDYgKzI0Mzcs
MTEgQEAgLSAoQk9PTClfYWxsb3dzRG91YmxlVGFwR2VzdHVyZXMKICAgICByZXR1cm4gIWFyZUVz
c2VudGlhbGx5RXF1YWxBc0Zsb2F0KGNvbnRlbnRab29tU2NhbGUoc2VsZiksIDEpOwogfQogCist
IChCT09MKV9zdHlsdXNUYXBHZXN0dXJlU2hvdWxkQ3JlYXRlRWRpdGFibGVJbWFnZQoreworICAg
IHJldHVybiBbX2NvbmZpZ3VyYXRpb24gX2VkaXRhYmxlSW1hZ2VzRW5hYmxlZF07Cit9CisKICNw
cmFnbWEgbWFyayAtIFVJU2Nyb2xsVmlld0RlbGVnYXRlCiAKIC0gKEJPT0wpdXNlc1N0YW5kYXJk
Q29udGVudFZpZXcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0ludGVybmFsLmgKaW5kZXggYzI2NmQ2ZWQ0NTYyMTY3NWIzZjJhMmY1MDlkODM0
ZDEzNjZhYTQ0OS4uNzFlMjkxZjMwMDgwMWE1NjNiYzQ3Mjk4OWU5YjgwYzVmMjQzZmUwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVy
bmFsLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0lu
dGVybmFsLmgKQEAgLTE2Nyw2ICsxNjcsNyBAQCBjbGFzcyBVUkw7CiBAcHJvcGVydHkgKG5vbmF0
b21pYywgcmVhZG9ubHkpIFdLU2VsZWN0aW9uR3JhbnVsYXJpdHkgX3NlbGVjdGlvbkdyYW51bGFy
aXR5OwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgX2FsbG93c0RvdWJs
ZVRhcEdlc3R1cmVzOworQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIF9zdHls
dXNUYXBHZXN0dXJlU2hvdWxkQ3JlYXRlRWRpdGFibGVJbWFnZTsKIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZWFkb25seSkgQk9PTCBfaGF2ZVNldE9ic2N1cmVkSW5zZXRzOwogQHByb3BlcnR5IChu
b25hdG9taWMsIHJlYWRvbmx5KSBVSUVkZ2VJbnNldHMgX2NvbXB1dGVkT2JzY3VyZWRJbnNldDsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRzIF9jb21wdXRlZFVu
b2JzY3VyZWRTYWZlQXJlYUluc2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJF
ZGl0Q29tbWFuZFByb3h5LmNwcAppbmRleCBjZDU3YzYyZmI0ZGI3NWVlZmE3MGQ4ZWU5ZTQyMTdl
ZmI0MWE3MGM2Li5hNTI2NDc3Njg3YzJmNmZhNTMxMzEyM2JiODlmMWFhMTQzNmMzY2ZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcApAQCAt
MTc3LDYgKzE3Nyw4IEBAIFN0cmluZyBXZWJFZGl0Q29tbWFuZFByb3h5OjpuYW1lRm9yRWRpdEFj
dGlvbihFZGl0QWN0aW9uIGVkaXRBY3Rpb24pCiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RSSU5H
X0tFWSgiQ29udmVydCB0byBPcmRlcmVkIExpc3QiLCAiQ29udmVydCB0byBPcmRlcmVkIExpc3Qg
KFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAgICBjYXNlIEVkaXRB
Y3Rpb246OkNvbnZlcnRUb1Vub3JkZXJlZExpc3Q6CiAgICAgICAgIHJldHVybiBXRUJfVUlfU1RS
SU5HX0tFWSgiQ29udmVydCB0byBVbm9yZGVyZWQgTGlzdCIsICJDb252ZXJ0IHRvIFVub3JkZXJl
ZCBMaXN0IChVbmRvIGFjdGlvbiBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CisgICAgY2Fz
ZSBFZGl0QWN0aW9uOjpJbnNlcnRFZGl0YWJsZUltYWdlOgorICAgICAgICByZXR1cm4gV0VCX1VJ
X1NUUklOR19LRVkoIkluc2VydCBEcmF3aW5nIiwgIkluc2VydCBEcmF3aW5nIChVbmRvIGFjdGlv
biBuYW1lKSIsICJVbmRvIGFjdGlvbiBuYW1lIik7CiAgICAgfQogICAgIHJldHVybiBTdHJpbmco
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzY4YzlkYTAx
MWMzNWE2YjllOGZiMjkxZDAyMDYwMTkyYzI5NDA4ZC4uYzEyMmFmNTNmNTAzMmZhMTVhYTFjYjU3
YzQ3MGZhOTM3MTQyN2NiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
QEAgLTY1Myw2ICs2NTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb250ZW50U2l6ZUNhdGVnb3J5
RGlkQ2hhbmdlKGNvbnN0IFN0cmluZyYgY29udGVudFNpemVDYXRlZ29yeSk7CiAgICAgdm9pZCBn
ZXRTZWxlY3Rpb25Db250ZXh0KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAg
dm9pZCBoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
dWludDY0X3QgcmVxdWVzdElEKTsKKyAgICB2b2lkIGhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0UG9p
bnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogICAgIHZv
aWQgc2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCk7CiAgICAgYm9vbCBmb3JjZUFsd2F5
c1VzZXJTY2FsYWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9yY2VBbHdheXNVc2VyU2NhbGFibGU7
IH0KICAgICBkb3VibGUgbGF5b3V0U2l6ZVNjYWxlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV92
aWV3cG9ydENvbmZpZ3VyYXRpb25MYXlvdXRTaXplU2NhbGVGYWN0b3I7IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaApp
bmRleCBjNDhjMzlkNjZkYzEzOTY0MjA1NjU0YjlkNTQwZjBmNjg3ODg0MjBhLi5hODA3Y2NkMmZh
Y2ZlNzhjZjkxNGJkZjQzZWQyNDk3YWRjYzhmYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0yMTAsNiAr
MjEwLDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBSZXRhaW5QdHI8VUlU
YXBHZXN0dXJlUmVjb2duaXplcj4gX25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJlY29nbml6
ZXI7CiAgICAgUmV0YWluUHRyPFVJVGFwR2VzdHVyZVJlY29nbml6ZXI+IF90d29GaW5nZXJEb3Vi
bGVUYXBHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2du
aXplcj4gX3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyOworICAgIFJldGFpblB0
cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6
ZXI7CiAgICAgUmV0YWluUHRyPFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVy
PiBfaW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyOwogCiAjaWYgUExBVEZPUk0o
SU9TTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVu
dFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW0KaW5kZXggZDliNDc4ZThhODgxNzQzNWY0ZTZhMjVhZWQwYjFh
M2FlZmUwZTBkNi4uYThiZTEyZTc2MjVlMjBiYjM2YjRiZDJiOTAyMWVhZTk4OGE1MGYwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCkBAIC02OTEsNiArNjkxLDEyIEBAIC0gKHZvaWQpc2V0dXBJbnRlcmFjdGlv
bgogICAgIFtfdHdvRmluZ2VyU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0RGVsZWdhdGU6
c2VsZl07CiAgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRh
cEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAorICAgIF9zdHlsdXNTaW5nbGVUYXBHZXN0dXJl
UmVjb2duaXplciA9IGFkb3B0TlMoW1tVSVRhcEdlc3R1cmVSZWNvZ25pemVyIGFsbG9jXSBpbml0
V2l0aFRhcmdldDpzZWxmIGFjdGlvbjpAc2VsZWN0b3IoX3N0eWx1c1NpbmdsZVRhcFJlY29nbml6
ZWQ6KV0pOworICAgIFtfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIgc2V0TnVtYmVy
T2ZUYXBzUmVxdWlyZWQ6MV07CisgICAgW19zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXpl
ciBzZXREZWxlZ2F0ZTpzZWxmXTsKKyAgICBbX3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25p
emVyIHNldEFsbG93ZWRUb3VjaFR5cGVzOkBbIEAoVUlUb3VjaFR5cGVQZW5jaWwpIF1dOworICAg
IFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9zdHlsdXNTaW5nbGVUYXBHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CisKICNpZiBIQVZFKExJTktfUFJFVklFVykKICAgICBbc2VsZiBfcmVnaXN0
ZXJQcmV2aWV3XTsKICNlbmRpZgpAQCAtNzc4LDYgKzc4NCw5IEBAIC0gKHZvaWQpY2xlYW51cElu
dGVyYWN0aW9uCiAgICAgW190d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplciBzZXRE
ZWxlZ2F0ZTpuaWxdOwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5n
ZXJTaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAKKyAgICBbX3N0eWx1c1Npbmds
ZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CisgICAgW3NlbGYgcmVtb3Zl
R2VzdHVyZVJlY29nbml6ZXI6X3N0eWx1c1NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgp
XTsKKwogICAgIF9sYXllclRyZWVUcmFuc2FjdGlvbklkQXRMYXN0VG91Y2hTdGFydCA9IDA7CiAK
ICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKQEAgLTgzNCw2ICs4NDMsNyBAQCAtICh2b2lk
KV9yZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVy
ZVJlY29nbml6ZXI6X25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCld
OwogICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5nZXJEb3VibGVUYXBH
ZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6
ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBbc2Vs
ZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6
ZXIuZ2V0KCldOwogI2lmIFBMQVRGT1JNKElPU01BQykKICAgICBbc2VsZiByZW1vdmVHZXN0dXJl
UmVjb2duaXplcjpfaG92ZXJHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjZW5kaWYKQEAgLTg0
OCw2ICs4NTgsNyBAQCAtICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCiAgICAg
W3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X25vbkJsb2NraW5nRG91YmxlVGFwR2VzdHVyZVJl
Y29nbml6ZXIuZ2V0KCldOwogICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl90d29GaW5n
ZXJEb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAgICAgW3NlbGYgYWRkR2VzdHVy
ZVJlY29nbml6ZXI6X3R3b0ZpbmdlclNpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsK
KyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJl
Y29nbml6ZXIuZ2V0KCldOwogI2lmIFBMQVRGT1JNKElPU01BQykKICAgICBbc2VsZiBhZGRHZXN0
dXJlUmVjb2duaXplcjpfaG92ZXJHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CiAjZW5kaWYKQEAg
LTE4OTYsNiArMTkwNywxNSBAQCAtICh2b2lkKV90d29GaW5nZXJTaW5nbGVUYXBHZXN0dXJlUmVj
b2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZQogICAgIF9wYWdlLT5o
YW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KHJvdW5kZWRJbnRQb2ludChnZXN0dXJlUmVjb2duaXpl
ci5jZW50cm9pZCksICsrX2xhdGVzdFRhcElEKTsKIH0KIAorLSAodm9pZClfc3R5bHVzU2luZ2xl
VGFwUmVjb2duaXplZDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVy
Cit7CisgICAgaWYgKCFfd2ViVmlldy5fc3R5bHVzVGFwR2VzdHVyZVNob3VsZENyZWF0ZUVkaXRh
YmxlSW1hZ2UpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChnZXN0dXJlUmVjb2duaXpl
ciA9PSBfc3R5bHVzU2luZ2xlVGFwR2VzdHVyZVJlY29nbml6ZXIpOworICAgIF9wYWdlLT5oYW5k
bGVTdHlsdXNTaW5nbGVUYXBBdFBvaW50KHJvdW5kZWRJbnRQb2ludChnZXN0dXJlUmVjb2duaXpl
ci5sb2NhdGlvbiksICsrX2xhdGVzdFRhcElEKTsKK30KKwogLSAodm9pZClfbG9uZ1ByZXNzUmVj
b2duaXplZDooVUlMb25nUHJlc3NHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVSZWNvZ25pemVy
CiB7CiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25pemVyID09IF9sb25nUHJlc3NHZXN0dXJlUmVj
b2duaXplcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQppbmRleCBlZmE4M2NhYTc0OGM0ZDU0NTkxZTNlZjY0ZWRkZGQ2NGVkNWFhNzc1Li43MmQ4
YmQ1ZWFmMjg0ZTU1MzE0OGVlODQ0OWEyMjBmODlkOWY0NDM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTU5Nyw2ICs1OTcsMTEgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCB1aW4KICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6SGFuZGxlVHdvRmluZ2VyVGFwQXRQb2ludChwb2ludCwgcmVxdWVzdElEKSwgbV9wYWdl
SUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2lu
dChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sK
KyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SGFuZGxlU3R5bHVzU2luZ2xl
VGFwQXRQb2ludChwb2ludCwgcmVxdWVzdElEKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBh
Z2VQcm94eTo6c2VsZWN0V2l0aFR3b1RvdWNoZXMoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgZnJv
bSwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQgdG8sIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50
MzJfdCBnZXN0dXJlU3RhdGUsIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCB1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90LCBDYWxsYmFja0Jhc2U6OkVycm9y
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGlmICghaXNWYWxpZCgpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggMzgyZDFmNGFhMzFmN2Qy
ODJkMmU4NzBkNjk4NWJlYTliY2Q3Y2M3OC4uZDFhODJkNmE5ZDkyOWJiNzEwZTBlYWIyYjk3M2Jh
ZGVjNzdlN2IzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtNjUzLDYgKzY1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbkFw
cGVhcmFuY2UoKTsKICAgICB2b2lkIGdldFNlbGVjdGlvbkNvbnRleHQoQ2FsbGJhY2tJRCk7CiAg
ICAgdm9pZCBoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiwgdWludDY0X3QgcmVxdWVzdElEKTsKKyAgICB2b2lkIGhhbmRsZVN0eWx1c1NpbmdsZVRhcEF0
UG9pbnQoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50NjRfdCByZXF1ZXN0SUQpOwogICAg
IHZvaWQgZ2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMyX3Qs
IGludDMyX3QsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0UmVjdHNBdFNlbGVjdGlvbk9mZnNl
dFdpdGhUZXh0KGludDMyX3QsIGNvbnN0IFN0cmluZyYsIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
c3RvcmVTZWxlY3Rpb25Gb3JBY2Nlc3NpYmlsaXR5KGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMThiMDUx
MGMxODA3NTY4OWFiZDQ3YWFiZTQyOTc2YjdjNDAwZjQ3Yi4uOGFiODQzNzc2OTYxNjZjZDVkYzVh
M2FiNTEzZDBkMjM2ZDRkMDAxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC05OSw2ICs5OSw3IEBAIG1lc3NhZ2Vz
IC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIEdldFNlbGVjdGlvbkNvbnRleHQoV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgU2V0QWxsb3dzTWVkaWFEb2N1bWVudElu
bGluZVBsYXliYWNrKGJvb2wgYWxsb3dzKQogICAgIEhhbmRsZVR3b0ZpbmdlclRhcEF0UG9pbnQo
V2ViQ29yZTo6SW50UG9pbnQgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKKyAgICBIYW5kbGVT
dHlsdXNTaW5nbGVUYXBBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCBy
ZXF1ZXN0SUQpCiAgICAgU2V0Rm9yY2VBbHdheXNVc2VyU2NhbGFibGUoYm9vbCB1c2VyU2NhbGFi
bGUpCiAgICAgR2V0UmVjdHNGb3JHcmFudWxhcml0eVdpdGhTZWxlY3Rpb25PZmZzZXQodWludDMy
X3QgZ3JhbnVsYXJpdHksIGludDMyX3Qgb2Zmc2V0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJh
Y2tJRCkKICAgICBHZXRSZWN0c0F0U2VsZWN0aW9uT2Zmc2V0V2l0aFRleHQoaW50MzJfdCBvZmZz
ZXQsIFN0cmluZyB0ZXh0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KaW5kZXgg
ZTUzNmQ3ZDllODc2ZTVkOGZlZThhMmRhNWE4NDBkNDA1Mzk0N2M3Ny4uZmIxYzBjNjkxYjNiZTY4
YmQyMzFjY2Q3NTBiNjkwZTk2ZDc0MWZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTc1OCw2ICs3NTgsMzYgQEAgdm9p
ZCBXZWJQYWdlOjpoYW5kbGVUd29GaW5nZXJUYXBBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiBwb2ludCwgdWludDY0X3QKICAgICAgICAgY29tcGxldGVTeW50aGV0aWNDbGljayhub2Rl
UmVzcG9uZGluZ1RvQ2xpY2ssIGFkanVzdGVkUG9pbnQsIFdlYkNvcmU6OlR3b0ZpbmdlclRhcCk7
CiB9CiAKK3ZvaWQgV2ViUGFnZTo6aGFuZGxlU3R5bHVzU2luZ2xlVGFwQXRQb2ludChjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQ2NF90IHJlcXVlc3RJRCkKK3sKKyAgICBhdXRv
JiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7
CisKKyAgICBhdXRvIHBvaW50SW5Eb2N1bWVudCA9IGZyYW1lLnZpZXcoKS0+cm9vdFZpZXdUb0Nv
bnRlbnRzKHBvaW50KTsKKyAgICBIaXRUZXN0UmVzdWx0IGhpdFRlc3QgPSBmcmFtZS5ldmVudEhh
bmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludChwb2ludEluRG9jdW1lbnQsIEhpdFRlc3RSZXF1
ZXN0OjpSZWFkT25seSB8IEhpdFRlc3RSZXF1ZXN0OjpBY3RpdmUpOworCisgICAgTm9kZSogbm9k
ZSA9IGhpdFRlc3QuaW5uZXJOb25TaGFyZWROb2RlKCk7CisgICAgaWYgKCFub2RlKQorICAgICAg
ICByZXR1cm47CisgICAgYXV0byByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYg
KCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHJlbmRlcmVyLT5pc1JlcGxh
Y2VkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbiA9
IHJlbmRlcmVyLT5wb3NpdGlvbkZvclBvaW50KGhpdFRlc3QubG9jYWxQb2ludCgpLCBudWxscHRy
KTsKKyAgICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHBvc2l0aW9uID0gZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKG5vZGUpOworCisgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJh
bWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIHBvc2l0aW9uKTsKKyAgICBmcmFtZS5zZWxlY3Rpb24o
KS5zZXRTZWxlY3RlZFJhbmdlKHJhbmdlLnB0cigpLCBwb3NpdGlvbi5hZmZpbml0eSgpLCBXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6U2hvdWxkQ2xvc2VUeXBpbmc6OlllcywgVXNlclRyaWdnZXJl
ZCk7CisgICAgZnJhbWUuZWRpdG9yKCkuaW5zZXJ0RWRpdGFibGVJbWFnZSgpOworICAgIHJlc2V0
QXNzaXN0ZWROb2RlRm9yRnJhbWUobV9tYWluRnJhbWUuZ2V0KCkpOworfQorCiB2b2lkIFdlYlBh
Z2U6OnBvdGVudGlhbFRhcEF0UG9zaXRpb24odWludDY0X3QgcmVxdWVzdElELCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbikKIHsKICAgICBtX3BvdGVudGlhbFRhcE5vZGUgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpLm5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cyhwb3NpdGlvbiwg
bV9wb3RlbnRpYWxUYXBMb2NhdGlvbiwgbV9wb3RlbnRpYWxUYXBTZWN1cml0eU9yaWdpbi5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0KaW5kZXggOWZkMGMxMjI2ZjJiYzg0OWNhNjUwOTA1NjZhYTIy
NDczZjlkMjg4ZS4uMDg5ZjAzOWU3YzUzODU3NmFlYjc3NjU3N2M5NzEyMDc0MzBiOTE5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbQpAQCAtNjU1LDYgKzY1NSw3IEBAIHN0YXRpYyBOU1N0cmluZyogdW5k
b05hbWVGb3JFZGl0QWN0aW9uKEVkaXRBY3Rpb24gZWRpdEFjdGlvbikKICAgICBjYXNlIEVkaXRB
Y3Rpb246OkRpY3RhdGlvbjogcmV0dXJuIFVJX1NUUklOR19LRVlfSU5URVJOQUwoIkRpY3RhdGlv
biIsICJEaWN0YXRpb24gKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsK
ICAgICBjYXNlIEVkaXRBY3Rpb246OkNvbnZlcnRUb09yZGVyZWRMaXN0OiByZXR1cm4gVUlfU1RS
SU5HX0tFWV9JTlRFUk5BTCgiQ29udmVydCB0byBPcmRlcmVkIExpc3QiLCAiQ29udmVydCB0byBP
cmRlcmVkIExpc3QgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAg
ICBjYXNlIEVkaXRBY3Rpb246OkNvbnZlcnRUb1Vub3JkZXJlZExpc3Q6IHJldHVybiBVSV9TVFJJ
TkdfS0VZX0lOVEVSTkFMKCJDb252ZXJ0IHRvIFVub3JkZXJlZCBMaXN0IiwgIkNvbnZlcnQgdG8g
VW5vcmRlcmVkIExpc3QgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsK
KyAgICBjYXNlIEVkaXRBY3Rpb246Okluc2VydEVkaXRhYmxlSW1hZ2U6IHJldHVybiBVSV9TVFJJ
TkdfS0VZX0lOVEVSTkFMKCJJbnNlcnQgRHJhd2luZyIsICJJbnNlcnQgRHJhd2luZyAoVW5kbyBh
Y3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAgIH0KICAgICByZXR1cm4gbmls
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDU3N2ZiYTU2OTQxYjkzNjk3ZjU4M2FlMDFmZTQ0YzQwNTZhNTlmYTAuLjFhYTMxY2VhMDRmNTZm
OWM3ZDc4ZjRmYWU1MzA5OWMwMTY3NTczYWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOC0xMS0yNSAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3Np
YmxlIHRvIGluc2VydCBlZGl0YWJsZSBpbWFnZXMgd2l0aCBhIGdlc3R1cmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTkzNworCisgICAgICAgIFJl
dmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvaW9z
L1VJU2NyaXB0Q29udHJvbGxlcklPUy5tbToKKyAgICAgICAgKFdUUjo6VUlTY3JpcHRDb250cm9s
bGVyOjpkcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKToKKyAgICAgICAgSWYgdGhlIGNhbnZhcyBh
bHJlYWR5IGhhcyBhIGRyYXdpbmcsIGRyYXcgYSBuZXcgc3Ryb2tlIG9uIHRvcCBvZiBpdAorICAg
ICAgICBpbnN0ZWFkIG9mIHJlbW92aW5nIHRoZSBleGlzdGluZyBzdHJva2UuCisKIDIwMTgtMTEt
MjAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgSW5z
ZXJ0IDxhdHRhY2htZW50PiBlbGVtZW50cyB1bmRlciBlZGl0YWJsZSBpbWFnZXMgdG8gbWFrZSB0
aGVpciBiYWNraW5nIGRhdGEgYWNjZXNzaWJsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9pb3MvVUlTY3JpcHRDb250cm9sbGVySU9TLm1tCmluZGV4IDliYmRiNjhjYjVlNjliMDg2
NTUzOTVjZmUyZjAwNTcwMzdkYjBmNjMuLjgxNDFjNjQ3ZjEzMDgwNjRmMjQ2ODUyNzViNmYxMDI0
NTIyOGYwMzEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvaW9zL1VJU2NyaXB0
Q29udHJvbGxlcklPUy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL2lvcy9VSVNjcmlw
dENvbnRyb2xsZXJJT1MubW0KQEAgLTg5MCw3ICs4OTAsNyBAQCB2b2lkIFVJU2NyaXB0Q29udHJv
bGxlcjo6ZHJhd1NxdWFyZUluRWRpdGFibGVJbWFnZSgpCiAgICAgQ2xhc3MgcGtTdHJva2VDbGFz
cyA9IE5TQ2xhc3NGcm9tU3RyaW5nKEAiUEtTdHJva2UiKTsKIAogICAgIFBLQ2FudmFzVmlldyAq
Y2FudmFzVmlldyA9IGZpbmRFZGl0YWJsZUltYWdlQ2FudmFzKCk7Ci0gICAgUmV0YWluUHRyPFBL
RHJhd2luZz4gZHJhd2luZyA9IGFkb3B0TlMoW1twa0RyYXdpbmdDbGFzcyBhbGxvY10gaW5pdF0p
OworICAgIFJldGFpblB0cjxQS0RyYXdpbmc+IGRyYXdpbmcgPSBjYW52YXNWaWV3LmRyYXdpbmcg
PzogYWRvcHROUyhbW3BrRHJhd2luZ0NsYXNzIGFsbG9jXSBpbml0XSk7CiAgICAgUmV0YWluUHRy
PENHUGF0aFJlZj4gcGF0aCA9IGFkb3B0Q0YoQ0dQYXRoQ3JlYXRlV2l0aFJlY3QoQ0dSZWN0TWFr
ZSgwLCAwLCA1MCwgNTApLCBOVUxMKSk7CiAgICAgUmV0YWluUHRyPFBLSW5rPiBpbmsgPSBbcGtJ
bmtDbGFzcyBpbmtXaXRoVHlwZTowIGNvbG9yOlVJQ29sb3IuZ3JlZW5Db2xvciB3ZWlnaHQ6MTAw
LjBdOwogICAgIFJldGFpblB0cjxQS1N0cm9rZT4gc3Ryb2tlID0gYWRvcHROUyhbW3BrU3Ryb2tl
Q2xhc3MgYWxsb2NdIF9pbml0V2l0aFBhdGg6cGF0aC5nZXQoKSBpbms6aW5rLmdldCgpIGlucHV0
U2NhbGU6MV0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDdkZmI4OGJmZTdjODYyOTFkYzFhZjI1OGI1ZmM4ODIzZjA5NmI2
ZWEuLjkwZTJiZDYzNzM5NGZjNTMxNDdiMDU0MmNjMmQyOWQ4N2FlMzZmZjMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOC0xMS0yNCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KKworICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGluc2VydCBlZGl0YWJsZSBpbWFn
ZXMgd2l0aCBhIGdlc3R1cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MTkzNworCisgICAgICAgIFJldmlld2VkIGJ5IFdlbnNvbiBIc2llaC4KKwor
ICAgICAgICAqIGVkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0Nv
bW1hbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9iYXNp
Yy1lZGl0YWJsZS1pbWFnZS1mcm9tLWV4ZWNDb21tYW5kLmh0bWw6IEFkZGVkLgorICAgICAgICBB
ZGQgYSB0ZXN0IHRoYXQgZW5zdXJlcyB0aGF0IGVkaXRhYmxlIGltYWdlcyBhbHNvIHdvcmsgd2hl
bgorICAgICAgICBpbnNlcnRlZCB2aWEgdGhlIGVkaXRvciBjb21tYW5kLgorCisgICAgICAgICog
ZWRpdGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9r
ZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy9yZWRvLWlu
c2VydC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMtc3Ryb2tlcy5odG1sOiBBZGRlZC4KKyAgICAg
ICAgQWRkIGEgdGVzdCB0aGF0IGVuc3VyZXMgdGhhdCBzdHJva2VzIGFyZSBtYWludGFpbmVkIHdo
ZW4gcmUtZG9pbmcgYW4KKyAgICAgICAgdW4tZG9uZSBlZGl0YWJsZSBpbWFnZSBpbnNlcnRpb24u
CisKKyAgICAgICAgKiBlZGl0aW5nL2ltYWdlcy91bmRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvaW1hZ2VzL3VuZG8taW5zZXJ0
LWVkaXRhYmxlLWltYWdlLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGQgYSB0ZXN0IHRoYXQgZW5z
dXJlcyB0aGF0IHRoZSBzZWxlY3Rpb24gc3RheXMgaW4gYSBzZW5zaWJsZSBwbGFjZQorICAgICAg
ICB3aGVuIHVuZG9pbmcgYW5kIHJlZG9pbmcgZWRpdGFibGUgaW1hZ2UgaW5zZXJ0aW9uLgorCiAy
MDE4LTExLTIyICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAg
ICAgIEluc2VydCA8YXR0YWNobWVudD4gZWxlbWVudHMgdW5kZXIgZWRpdGFibGUgaW1hZ2VzIHRv
IG1ha2UgdGhlaXIgYmFja2luZyBkYXRhIGFjY2Vzc2libGUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1hbmQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvYmFzaWMtZWRpdGFibGUt
aW1hZ2UtZnJvbS1leGVjQ29tbWFuZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTEwMTE1OWFk
MGJmOWQ3ZDE2MzFiMzIzYWY1Yjk4YWVhNWI0NDY2NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxlLWltYWdlLWZyb20tZXhlY0NvbW1h
bmQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorCitIYWQgMCBzdHJva2VzIGluIGVkaXRh
YmxlIGltYWdlIGJlZm9yZSBkcmF3aW5nLgorSGFkIDEgc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdl
IGFmdGVyIGRyYXdpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdlcy9i
YXNpYy1lZGl0YWJsZS1pbWFnZS1mcm9tLWV4ZWNDb21tYW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL2ltYWdlcy9iYXNpYy1lZGl0YWJsZS1pbWFnZS1mcm9tLWV4ZWNDb21tYW5kLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDBlYWFjODk1NTg5MTI1ZWEwMmYyMmMzMjIxODM1MjJkMTQzZDAyZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL2Jhc2ljLWVkaXRhYmxl
LWltYWdlLWZyb20tZXhlY0NvbW1hbmQuaHRtbApAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZUEUg
aHRtbD48IS0tIHdlYmtpdC10ZXN0LXJ1bm5lciBbIGVuYWJsZUVkaXRhYmxlSW1hZ2VzPXRydWUg
XSAtLT4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy91aS1oZWxwZXIuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworfQor
CithZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgYXN5bmMgKCkgPT4geworICAgIHdpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkb2N1bWVudC5ib2R5LCAwKTsKKyAgICBkb2N1bWVudC5l
eGVjQ29tbWFuZCgiSW5zZXJ0RWRpdGFibGVJbWFnZSIpOworICAgIGNvbnN0IGluaXRpYWxOdW1i
ZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2UgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJv
a2VzSW5FZGl0YWJsZUltYWdlKCkpOworICAgIGF3YWl0IFVJSGVscGVyLmRyYXdTcXVhcmVJbkVk
aXRhYmxlSW1hZ2UoKTsKKyAgICBjb25zdCBudW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VB
ZnRlckRyYXdpbmcgPSAoYXdhaXQgVUlIZWxwZXIubnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUlt
YWdlKCkpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2ciKS5pbm5lckhUTUwgPSBg
SGFkICR7aW5pdGlhbE51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZX0gc3Ryb2tlcyBpbiBl
ZGl0YWJsZSBpbWFnZSBiZWZvcmUgZHJhd2luZy48YnIvPkhhZCAke251bWJlck9mU3Ryb2tlc0lu
RWRpdGFibGVJbWFnZUFmdGVyRHJhd2luZ30gc3Ryb2tlIGluIGVkaXRhYmxlIGltYWdlIGFmdGVy
IGRyYXdpbmcuYDsKKyAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30pOworPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBjb250ZW50ZWRpdGFibGU+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2Pgor
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVkby1pbnNl
cnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5zLXN0cm9rZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5z
LXN0cm9rZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZhNzM4NjJjNjExMzY2NGZkOWVlYzQ0
N2Y0NzRjYjVmMWNjZWM0MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5n
L2ltYWdlcy9yZWRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS1tYWludGFpbnMtc3Ryb2tlcy1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw2IEBACisKK0hhZCAwIHN0cm9rZXMgaW4gZWRpdGFibGUgaW1h
Z2UgYmVmb3JlIGRyYXdpbmcuCitIYWQgMSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIg
ZHJhd2luZy4KK0hhZCAwIHN0cm9rZXMgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgdW5kby4KK0hh
ZCAxIHN0cm9rZSBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciByZWRvLgorSGFkIDIgc3Ryb2tlcyBp
biBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nIGFnYWluLgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9pbWFnZXMvcmVkby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtbWFpbnRhaW5z
LXN0cm9rZXMuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlZG8taW5zZXJ0LWVk
aXRhYmxlLWltYWdlLW1haW50YWlucy1zdHJva2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjY5YWRjNDgy
Mzc4OTkyZGQ0YWMyZTVmZGMyMGI5OTBhYjdiYWRjNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3JlZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLW1haW50YWlu
cy1zdHJva2VzLmh0bWwKQEAgLTAsMCArMSwyOSBAQAorPCFET0NUWVBFIGh0bWw+PCEtLSB3ZWJr
aXQtdGVzdC1ydW5uZXIgWyBlbmFibGVFZGl0YWJsZUltYWdlcz10cnVlIF0gLS0+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvdWktaGVscGVyLmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworYWRkRXZlbnRMaXN0
ZW5lcigibG9hZCIsIGFzeW5jICgpID0+IHsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0
UG9zaXRpb24oZG9jdW1lbnQuYm9keSwgMCk7CisgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIklu
c2VydEVkaXRhYmxlSW1hZ2UiKTsKKyAgICBjb25zdCBpbml0aWFsTnVtYmVyT2ZTdHJva2VzSW5F
ZGl0YWJsZUltYWdlID0gKGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJ
bWFnZSgpKTsKKyAgICBhd2FpdCBVSUhlbHBlci5kcmF3U3F1YXJlSW5FZGl0YWJsZUltYWdlKCk7
CisgICAgY29uc3QgbnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJEcmF3aW5nID0g
KGF3YWl0IFVJSGVscGVyLm51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZSgpKTsKKyAgICBk
b2N1bWVudC5leGVjQ29tbWFuZCgndW5kbycsIGZhbHNlLCBudWxsKTsKKyAgICBjb25zdCBudW1i
ZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2VBZnRlclVuZG8gPSAoYXdhaXQgVUlIZWxwZXIubnVt
YmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlKCkpOworICAgIGRvY3VtZW50LmV4ZWNDb21tYW5k
KCdyZWRvJywgZmFsc2UsIG51bGwpOworICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFi
bGVJbWFnZUFmdGVyUmVkbyA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRh
YmxlSW1hZ2UoKSk7CisgICAgYXdhaXQgVUlIZWxwZXIuZHJhd1NxdWFyZUluRWRpdGFibGVJbWFn
ZSgpOworICAgIGNvbnN0IG51bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyU2Vjb25k
RHJhd2luZyA9IChhd2FpdCBVSUhlbHBlci5udW1iZXJPZlN0cm9rZXNJbkVkaXRhYmxlSW1hZ2Uo
KSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpLmlubmVySFRNTCA9IGBIYWQg
JHtpbml0aWFsTnVtYmVyT2ZTdHJva2VzSW5FZGl0YWJsZUltYWdlfSBzdHJva2VzIGluIGVkaXRh
YmxlIGltYWdlIGJlZm9yZSBkcmF3aW5nLjxici8+SGFkICR7bnVtYmVyT2ZTdHJva2VzSW5FZGl0
YWJsZUltYWdlQWZ0ZXJEcmF3aW5nfSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2UgYWZ0ZXIgZHJh
d2luZy48YnIvPkhhZCAke251bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVyVW5kb30g
c3Ryb2tlcyBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciB1bmRvLjxici8+SGFkICR7bnVtYmVyT2ZT
dHJva2VzSW5FZGl0YWJsZUltYWdlQWZ0ZXJSZWRvfSBzdHJva2UgaW4gZWRpdGFibGUgaW1hZ2Ug
YWZ0ZXIgcmVkby48YnIvPkhhZCAke251bWJlck9mU3Ryb2tlc0luRWRpdGFibGVJbWFnZUFmdGVy
U2Vjb25kRHJhd2luZ30gc3Ryb2tlcyBpbiBlZGl0YWJsZSBpbWFnZSBhZnRlciBkcmF3aW5nIGFn
YWluLmA7CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9KTsKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgY29udGVudGVkaXRhYmxlPgorPGRpdiBpZD0ibG9nIj48L2Rpdj4KKzwvYm9k
eT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3VuZG8taW5zZXJ0LWVk
aXRhYmxlLWltYWdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3Vu
ZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZDI3MDhl
MmJmZGNjZjA5ZmQ0NDczNzI5MDIyOTJlY2NkY2U3OWJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9pbWFnZXMvdW5kby1pbnNlcnQtZWRpdGFibGUtaW1hZ2UtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMjggQEAKK1RoaXMgdGVzdCBpbnNlcnRzIGEgZWRpdGFibGUgaW1h
Z2UsIHBlcmZvcm1zIGFuIHVuZG8sIHRoZW4gYSByZWRvLCBlbnN1cmluZyB0aGF0IHRoZSBzZWxl
Y3Rpb24gcmVtYWlucyBhZnRlciB0aGUgaW1hZ2Ugd2hlbiByZS1kb25lLgorCitiZWZvcmUgdW5k
bzoKK3wgIkhlbGxvLCB3b3JsZCEiCit8IDxpbWc+Cit8ICAgaGVpZ2h0PSIzMDBweCIKK3wgICBz
dHlsZT0iZGlzcGxheTogYmxvY2siCit8ICAgd2lkdGg9IjEwMCUiCit8ICAgeC1hcHBsZS1lZGl0
YWJsZS1pbWFnZT0iIgorfCAgIDxzaGFkb3c6cm9vdD4KK3wgICAgIDxhdHRhY2htZW50PgorfCAg
ICAgICBzdHlsZT0iZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyIKK3wgPCNzZWxlY3Rpb24tY2Fy
ZXQ+CisKK2FmdGVyIHVuZG86Cit8ICJIZWxsbywgd29ybGQhPCNzZWxlY3Rpb24tY2FyZXQ+Igor
CithZnRlciByZWRvOgorfCAiSGVsbG8sIHdvcmxkISIKK3wgPGltZz4KK3wgICBoZWlnaHQ9IjMw
MHB4IgorfCAgIHN0eWxlPSJkaXNwbGF5OiBibG9jayIKK3wgICB3aWR0aD0iMTAwJSIKK3wgICB4
LWFwcGxlLWVkaXRhYmxlLWltYWdlPSIiCit8ICAgPHNoYWRvdzpyb290PgorfCAgICAgPGF0dGFj
aG1lbnQ+Cit8ICAgICAgIHN0eWxlPSJkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IgorfCA8I3Nl
bGVjdGlvbi1jYXJldD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvaW1hZ2VzL3Vu
ZG8taW5zZXJ0LWVkaXRhYmxlLWltYWdlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2ltYWdl
cy91bmRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiZjE2NTUxYzE0
ZDU3ZWRiMTNmMzYzZmQyYzZiNGRhNjFiMmU3Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL2ltYWdlcy91bmRvLWluc2VydC1lZGl0YWJsZS1pbWFnZS5odG1sCkBAIC0w
LDAgKzEsMjAgQEAKKzwhRE9DVFlQRSBodG1sPjwhLS0gd2Via2l0LXRlc3QtcnVubmVyIFsgZW5h
YmxlRWRpdGFibGVJbWFnZXM9dHJ1ZSBdIC0tPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHkgY29udGVudGVkaXRhYmxlPgorPGRpdiBpZD0idGVzdCI+SGVs
bG8sIHdvcmxkITwvZGl2PgorPHNjcmlwdD4KK2NvbnN0IGRpdiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0Iik7CisKK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkaXYs
IDEzKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRFZGl0YWJsZUltYWdlIik7CisKK01h
cmt1cC5kZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGluc2VydHMgYSBlZGl0YWJsZSBpbWFnZSwgcGVy
Zm9ybXMgYW4gdW5kbywgdGhlbiBhIHJlZG8sIGVuc3VyaW5nIHRoYXQgdGhlIHNlbGVjdGlvbiBy
ZW1haW5zIGFmdGVyIHRoZSBpbWFnZSB3aGVuIHJlLWRvbmUuIikKK01hcmt1cC5kdW1wKGRpdiwg
ImJlZm9yZSB1bmRvIik7Citkb2N1bWVudC5leGVjQ29tbWFuZCgndW5kbycsIGZhbHNlLCBudWxs
KTsKK01hcmt1cC5kdW1wKGRpdiwgImFmdGVyIHVuZG8iKTsKK2RvY3VtZW50LmV4ZWNDb21tYW5k
KCdyZWRvJywgZmFsc2UsIG51bGwpOworTWFya3VwLmR1bXAoZGl2LCAiYWZ0ZXIgcmVkbyIpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>