<?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>234254</bug_id>
          
          <creation_ts>2021-12-13 11:10:57 -0800</creation_ts>
          <short_desc>Automatically generate event handler content attribute maps so they are easier to maintain</short_desc>
          <delta_ts>2021-12-15 13:04:24 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>megan_gardner</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1823638</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-13 11:10:57 -0800</bug_when>
    <thetext>Automatically generate event handler content attribute maps so they are easier to maintain</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823739</commentid>
    <comment_count>1</comment_count>
      <attachid>447061</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-13 13:59:09 -0800</bug_when>
    <thetext>Created attachment 447061
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823770</commentid>
    <comment_count>2</comment_count>
      <attachid>447067</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-13 14:33:37 -0800</bug_when>
    <thetext>Created attachment 447067
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823784</commentid>
    <comment_count>3</comment_count>
      <attachid>447061</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-13 14:41:25 -0800</bug_when>
    <thetext>Comment on attachment 447061
Patch

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

Thank you for addressing this issue, Darin!

&gt; Source/WebCore/html/HTMLElement.cpp:64
&gt; +#include &quot;JSHTMLElement.h&quot;

Currently, we have event handler name map on HTMLElement, which is not quite right. GlobalEventHandlers are shared beyond HTML, like for example `SVGElement includes GlobalEventHandlers`. Moving the handlers down to JSHTMLElement.h doesn&apos;t seem like a direction I would prefer. It doesn&apos;t feel right to store them on any wrapper.

Do you think generating them into a separate file in preprocess-idls.pl would be more preferred approach? It would also let us avoid adding extended attributes like GenerateForEachEventHandlerContentAttribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823791</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-13 14:57:02 -0800</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #3)
&gt; Currently, we have event handler name map on HTMLElement, which is not quite
&gt; right. GlobalEventHandlers are shared beyond HTML, like for example
&gt; `SVGElement includes GlobalEventHandlers`. Moving the handlers down to
&gt; JSHTMLElement.h doesn&apos;t seem like a direction I would prefer. It doesn&apos;t
&gt; feel right to store them on any wrapper.
&gt; 
&gt; Do you think generating them into a separate file in preprocess-idls.pl
&gt; would be more preferred approach?

Sure, I suppose it would be OK, but adding more generated files will be more complex. We might even need to change the IDL parser around.

I think you, or someone else, should feel free to move this later, but I chose what I thought would be expedient, and I feel good about my choice. My patch is much smaller because I took advantage of what we already have.

I have a hard time finding any practical problem with this solution, or advantage to a more correct one. But if there is one I would welcome the improvement.

&gt; It would also let us avoid adding extended
&gt; attributes like GenerateForEachEventHandlerContentAttribute.

But it would do that by requiring that we hard code the name GlobalEventHandlers somewhere?

One of the good things in practice about what I did is how easy it was to reuse for HTMLBodyElement and the window event handlers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823808</commentid>
    <comment_count>5</comment_count>
      <attachid>447067</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2021-12-13 15:43:37 -0800</bug_when>
    <thetext>Comment on attachment 447067
Patch

(In reply to Darin Adler from comment #4)
&gt; (In reply to Alexey Shvayka from comment #3)
&gt; &gt; It would also let us avoid adding extended
&gt; &gt; attributes like GenerateForEachEventHandlerContentAttribute.
&gt; 
&gt; But it would do that by requiring that we hard code the name
&gt; GlobalEventHandlers somewhere?

Yes, and I would argue that is a good thing. Currently, GenerateForEachEventHandlerContentAttribute considers all EventHandlers to be of GlobalEventHandlers &amp; DocumentAndElementEventHandlers. In practice that&apos;s fine because SVGElement / MathMLElement are consistent.

&gt; One of the good things in practice about what I did is how easy it was to
&gt; reuse for HTMLBodyElement and the window event handlers.

preprocess-idls.pl solution would just gather all [WindowEventHandler] handlers when looping through interfaces, avoiding a bit weird call stacks like HTMLFrameSetElement::parseAttribute() =&gt; HTMLBodyElement::eventNameForWindowEventHandlerAttribute() =&gt; JSHTMLBodyElement::forEachEventHandlerContentAttribute().

&gt; (In reply to Alexey Shvayka from comment #3)
&gt; &gt; Currently, we have event handler name map on HTMLElement, which is not quite
&gt; &gt; right. GlobalEventHandlers are shared beyond HTML, like for example
&gt; &gt; `SVGElement includes GlobalEventHandlers`. Moving the handlers down to
&gt; &gt; JSHTMLElement.h doesn&apos;t seem like a direction I would prefer. It doesn&apos;t
&gt; &gt; feel right to store them on any wrapper.
&gt; &gt; 
&gt; &gt; Do you think generating them into a separate file in preprocess-idls.pl
&gt; &gt; would be more preferred approach?
&gt; 
&gt; Sure, I suppose it would be OK, but adding more generated files will be more
&gt; complex. We might even need to change the IDL parser around.
&gt; 
&gt; I think you, or someone else, should feel free to move this later, but I
&gt; chose what I thought would be expedient, and I feel good about my choice. My
&gt; patch is much smaller because I took advantage of what we already have.
&gt; 
&gt; I have a hard time finding any practical problem with this solution, or
&gt; advantage to a more correct one. But if there is one I would welcome the
&gt; improvement.

All true points, preprocess-idls.pl solution is a different time contribution w/o added practical benefit, only slightly improving visual similarity of our code with the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823848</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-13 17:16:46 -0800</bug_when>
    <thetext>Oops, not passing tests. I need to check!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823864</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-13 18:08:54 -0800</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #5)
&gt; &gt; But it would do that by requiring that we hard code the name
&gt; &gt; GlobalEventHandlers somewhere?
&gt; 
&gt; Yes, and I would argue that is a good thing. Currently,
&gt; GenerateForEachEventHandlerContentAttribute considers all EventHandlers to
&gt; be of GlobalEventHandlers &amp; DocumentAndElementEventHandlers. In practice
&gt; that&apos;s fine because SVGElement / MathMLElement are consistent.

Sure, that sounds fine. I suppose GlobalEventHandlers can be in a list just like all the element classes are in a list, in the build system, but sad that we already have to have so many special lists like that.

&gt; preprocess-idls.pl solution would just gather all [WindowEventHandler]
&gt; handlers when looping through interfaces, avoiding a bit weird call stacks
&gt; like HTMLFrameSetElement::parseAttribute() =&gt;
&gt; HTMLBodyElement::eventNameForWindowEventHandlerAttribute() =&gt;
&gt; JSHTMLBodyElement::forEachEventHandlerContentAttribute().

Sure, avoiding the strange call stacks is good. But collecting all [WindowEventHandler] from all IDL files sounds very strange. If this doesn’t come from a particular named interface, like GlobalEventHandlers, then it seems like we’d want some logic about which interfaces we’d look at, and why. Doesn’t make sense that if we labeled something with [WindowEventHandler] in another interface that HTMLBodyElement and HTMLFrameSetElement would just both sprout content event handlers for those automatically.

&gt; All true points, preprocess-idls.pl solution is a different time
&gt; contribution w/o added practical benefit, only slightly improving visual
&gt; similarity of our code with the spec.

I think it’s fine to improve later. Glad you are OK with me landing this now (once I debug it and figure out why it’s doing the wrong thing). I could even write a FIXME about how this is slightly illogical but expedient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823868</commentid>
    <comment_count>8</comment_count>
      <attachid>447092</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-12-13 18:22:45 -0800</bug_when>
    <thetext>Created attachment 447092
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823944</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-14 02:30:38 -0800</bug_when>
    <thetext>Committed r287019 (245224@main): &lt;https://commits.webkit.org/245224@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 447092.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1823945</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-14 02:31:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/86458873&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1824508</commentid>
    <comment_count>11</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-12-15 13:04:24 -0800</bug_when>
    <thetext>Very nice.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447061</attachid>
            <date>2021-12-13 13:59:09 -0800</date>
            <delta_ts>2021-12-13 14:54:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234254-20211213135908.patch</filename>
            <type>text/plain</type>
            <size>31899</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2ZTY3MzZjZTE5YjUwOTI2NDIyOTg1
ODBhYjFjZjE0YWZlYzZhZDcuLjE1NTBlNGYzNGQ1NWI2NmY5YzEzOTFmNGJkNzNhMTU5MDkxN2Mw
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMTMgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgZXZlbnQgaGFuZGxl
ciBjb250ZW50IGF0dHJpYnV0ZSBtYXBzIHNvIHRoZXkgYXJlIGVhc2llciB0byBtYWludGFpbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MjU0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvTmV2
ZXJEZXN0cm95ZWQuaDogQWRkIGEgZGVkdWN0aW9uIGd1aWRlIGZvciBOZXZlckRlc3Ryb3llZC4K
KyAgICAgICAgSW4gdGhlIGZ1dHVyZSB3ZSBjYW4gdXNlIHRoaXMgaW5zdGVhZCBvZiBtYWtlTmV2
ZXJEZXN0cm95ZWQgb3Igd3JpdGluZworICAgICAgICBvdXQgdGhlIGVudGlyZSB0ZW1wbGF0ZSBj
bGFzcyB0eXBlIGluY2x1ZGluZyB0ZW1wbGF0ZSBhcmd1bWVudHMuCisKIDIwMjEtMTItMTMgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyODM1
NjUpIFVuYWJsZSB0byByZXBvcnQgcHJpdmF0ZSBtZXNzYWdlcyBhcyBTcGFtIGluIFR3aXR0ZXIg
YXBwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMDEwM2VlNjBjNmM2YzNiYWQyMDkzOWI1Zjg2ZTkxNzc3Yjk1NWI2
NC4uYThlNWYxN2NjMmE4M2M3M2FlYmFjZDVjMWNjZjY0ZTcwMTQ0MmQ3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU2IEBACisyMDIxLTEyLTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGV2ZW50IGhhbmRsZXIgY29udGVu
dCBhdHRyaWJ1dGUgbWFwcyBzbyB0aGV5IGFyZSBlYXNpZXIgdG8gbWFpbnRhaW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDI1NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6IERlY2xhcmUg
Zm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUKKyAgICAgICAgYW5kIGZvckVhY2hX
aW5kb3dFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRlIGFzIG5lZWRlZC4KKyAgICAgICAgKEdl
bmVyYXRlSW1wbGVtZW50YXRpb24pOiBDYWxsIEdlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNv
bnRlbnRBdHRyaWJ1dGUKKyAgICAgICAgYXMgbmVlZGVkLgorICAgICAgICAoR2VuZXJhdGVGb3JF
YWNoRXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZSk6IERlZmluZQorICAgICAgICBmb3JFYWNo
RXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZSBvciBmb3JFYWNoV2luZG93RXZlbnRIYW5kbGVy
Q29udGVudEF0dHJpYnV0ZS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy5qc29uOiBBZGRlZAorICAgICAgICBHZW5lcmF0ZUZvckVhY2hFdmVudEhhbmRsZXJDb250
ZW50QXR0cmlidXRlIGFuZAorICAgICAgICBHZW5lcmF0ZUZvckVhY2hXaW5kb3dFdmVudEhhbmRs
ZXJDb250ZW50QXR0cmlidXRlLiBFdmVuIHRob3VnaCBlYWNoCisgICAgICAgIGlzIHVzZWQgaW4g
b25seSBvbmUgY2xhc3MsIGl0J3Mgc3RpbGwgYmV0dGVyIHRvIG5vdCBoYXJkLWNvZGUgdGhlIGNs
YXNzIG5hbWVzLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46IEFkZGVk
IG9uY3VlY2hhbmdlLCBvbnJlamVjdGlvbmhhbmRsZWQsIGFuZAorICAgICAgICBvbnVuaGFuZGxl
ZHJlamVjdGlvbiBldmVuIHRob3VnaCB3ZSBhcmUgbm90IHlldCBpbXBsZW1lbnRpbmcgYW55IG9m
IHRoZW0gaW4KKyAgICAgICAgdGhpcyBiZWhhdmlvci1wcmVzZXJ2aW5nIHBhdGNoLiBUaGV5IG5l
ZWQgdG8gYmUgcHJlc2VudCBzbyB0aGUgYXV0b21hdGljYWxseQorICAgICAgICBnZW5lcmF0ZWQg
Y29kZSBjb21waWxlcy4gQnV0IGFkZGVkIGV4cGxpY2l0IGV4Y2VwdGlvbnMgYXMgbWVudGlvbmVk
IGJlbG93IHRvCisgICAgICAgIG1ha2Ugc3VyZSBubyBjaGFuZ2VzIGFyZSBpbXBsZW1lbnRlZCBp
biB0aGlzIHBhdGNoLCBhbmQgd2lsbCB0YWtlIHRob3NlIGV4Y2VwdGlvbnMKKyAgICAgICAgb3V0
IGxhdGVyIGluIGEgcGF0Y2ggaW50ZW5kZWQgdG8gcHJvZHVjZSBhIHByb2dyZXNzaW9uLCBsaWtl
bHkgd2l0aCBuZXcgdGVzdCBjYXNlcy4KKyAgICAgICAgUmUtc29ydGVkIGFscGhhYmV0aWNhbGx5
LCByYXRoZXIgYW4gYXJiaXRyYXJ5IHNlbWktc29ydGVkIG9yZGVyLgorCisgICAgICAgICogaHRt
bC9IVE1MQm9keUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50
OjpjcmVhdGVXaW5kb3dFdmVudEhhbmRsZXJOYW1lTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6ZXZlbnROYW1lRm9yV2luZG93RXZlbnRIYW5kbGVyQXR0
cmlidXRlKTogVXNlCisgICAgICAgIEpTSFRNTEJvZHlFbGVtZW50Ojpmb3JFYWNoRXZlbnRIYW5k
bGVyQ29udGVudEF0dHJpYnV0ZSB0byBjcmVhdGUgdGhlIG1hcC4KKyAgICAgICAgVXNlIGEgbGFt
YmRhIGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBmdW5jdGlvbiBhbmQgdGFrZSBhZHZhbnRhZ2Ugb2Yg
dGhlCisgICAgICAgIGRlZHVjdGlvbiBndWlkZSBmb3IgTmV2ZXJEZXN0cm95ZWQuIEFkZGVkIGV4
Y2VwdGlvbnMgZm9yIG9ucmVqZWN0aW9uaGFuZGxlZAorICAgICAgICBhbmQgb251bmhhbmRsZWRy
ZWplY3Rpb24sIHdoaWNoIGFyZSBib3RoIGluIHRoZSBJREwgZmlsZSBidXQgd2VyZSBub3QgaGFu
ZGxlZAorICAgICAgICBoZXJlLCBhbG9uZyB3aXRoIGEgRklYTUUgc3VnZ2VzdGluZyB3ZSByZW1v
dmUgdGhlIGV4Y2VwdGlvbnMuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOiBSZW1vdmVk
IGNyZWF0ZVdpbmRvd0V2ZW50SGFuZGxlck5hbWVNYXAuCisgICAgICAgICogaHRtbC9IVE1MQm9k
eUVsZW1lbnQuaWRsOiBBZGRlZCBHZW5lcmF0ZUZvckVhY2hXaW5kb3dFdmVudEhhbmRsZXJDb250
ZW50QXR0cmlidXRlLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y3JlYXRlRXZlbnRIYW5kbGVyTmFtZU1hcCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cG9wdWxhdGVFdmVudEhhbmRsZXJO
YW1lTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpldmVudE5h
bWVGb3JFdmVudEhhbmRsZXJBdHRyaWJ1dGUpOiBVc2UKKyAgICAgICAgSlNIVE1MRWxlbWVudDo6
Zm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUgdG8gY3JlYXRlIHRoZSBtYXAuCisg
ICAgICAgIFVzZSBhIGxhbWJkYSBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgZnVuY3Rpb24gYW5kIHRh
a2UgYWR2YW50YWdlIG9mIHRoZQorICAgICAgICBkZWR1Y3Rpb24gZ3VpZGUgZm9yIE5ldmVyRGVz
dHJveWVkLiBBZGRlZCBleGNlcHRpb24gZm9yIG9uY3VlY2hhbmdlLAorICAgICAgICB3aGljaCBp
cyBpbiB0aGUgSURMIGZpbGUgYnV0IHdhcyBub3QgaGFuZGxlZCBoZXJlLCBhbmQgZm9yIDE5IG90
aGVyIGF0dHJpYnV0ZXMsCisgICAgICAgIHdoaWNoIGFyZSBub3QgaW4gdGhlIElETCBmaWxlIGJ1
dCB3ZXJlIGhhbmRsZWQgaGVyZSwgYWxvbmcgd2l0aCB0d28gRklYTUVzCisgICAgICAgIHN1Z2dl
c3Rpbmcgd2UgcmVtb3ZlIHRoZSBleGNlcHRpb25zLgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1l
bnQuaDogUmVtb3ZlZCBwb3B1bGF0ZUV2ZW50SGFuZGxlck5hbWVNYXAgYW5kCisgICAgICAgIGNy
ZWF0ZUV2ZW50SGFuZGxlck5hbWVNYXAuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5pZGw6
IEFkZGVkIEdlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUuCisKIDIw
MjEtMTItMTMgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gRml4IEFOR0xFIGNvbXBpbGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9OZXZlckRlc3Ryb3llZC5oIGIvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaAppbmRl
eCBmYTA1ZTkzZGYxM2UwYTg2ZTJmOTZmZDAzYzYwNmJhYTZlM2FiNmYyLi5iZWYzN2RmMTAxZWRi
Nzk5ZWQ3NzI0YmJiMDZkYTlmMThkNTBkZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9O
ZXZlckRlc3Ryb3llZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKQEAg
LTE3OSw2ICsxNzksOSBAQCBwcml2YXRlOgogICAgIHR5cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9y
YWdlPHNpemVvZihUKSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlwZSBtX3N0b3Jh
Z2U7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBOZXZlckRlc3Ryb3llZChUKSAtPiBOZXZl
ckRlc3Ryb3llZDxUPjsKKworLy8gRklYTUU6IFJlbW92ZSB0aGlzIGZ1bmN0aW9uLCByZWx5aW5n
IGluc3RlYWQgb24gdGhlIGRlZHVjdGlvbiBndWlkZSBmb3IgTmV2ZXJEZXN0cm95ZWQgYWJvdmUu
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBY2Nlc3NUcmFpdHM+IGlubGluZSBOZXZl
ckRlc3Ryb3llZDxULCBBY2Nlc3NUcmFpdHM+IG1ha2VOZXZlckRlc3Ryb3llZChUJiYgYXJndW1l
bnQpCiB7CiAgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxUPihhcmd1bWVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDI0
YjM1YTMwOGIyYzM4NTY4NjQwM2RhOTcyYzM4MTFkODEzNDllMmYuLjBiZTM4ZTFkNWFhZDNiNDlk
MWVkNGE4N2ViNDM5OWUyNWIzYThkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00ODcsNyArNDg3LDcgQEAgc3ViIEFk
ZFN0cmluZ2lmaWVyT3BlcmF0aW9uSWZOZWVkZWQKICAgICB9CiB9CiAKLXN1YiBFdmVudEhhbmRs
ZXJBdHRyaWJ1dGVFdmVudE5hbWUKK3N1YiBFdmVudEhhbmRsZXJBdHRyaWJ1dGVTaG9ydEV2ZW50
TmFtZQogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkZXZlbnRUeXBlID0g
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJGF0dHJp
YnV0ZS0+bmFtZTsKQEAgLTQ5NSw3ICs0OTUsMTMgQEAgc3ViIEV2ZW50SGFuZGxlckF0dHJpYnV0
ZUV2ZW50TmFtZQogICAgICMgUmVtb3ZlIHRoZSAib24iIHByZWZpeC4KICAgICAkZXZlbnRUeXBl
ID0gc3Vic3RyKCRldmVudFR5cGUsIDIpOwogCi0gICAgcmV0dXJuICJldmVudE5hbWVzKCkuJHtl
dmVudFR5cGV9RXZlbnQiOworICAgIHJldHVybiAiJHtldmVudFR5cGV9RXZlbnQiOworfQorCitz
dWIgRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZlbnROYW1lCit7CisgICAgbXkgJGF0dHJpYnV0ZSA9
IHNoaWZ0OworICAgIHJldHVybiAiZXZlbnROYW1lcygpLiIgLiBFdmVudEhhbmRsZXJBdHRyaWJ1
dGVTaG9ydEV2ZW50TmFtZSgkYXR0cmlidXRlKTsKIH0KIAogc3ViIEdldFBhcmVudENsYXNzTmFt
ZQpAQCAtMzAyNywxMyArMzAzMywyMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBpZiAoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHVzaEV2ZW50SGFuZGxlclNjb3Bl
fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEpTQzo6SlNTY29wZSogcHVz
aEV2ZW50SGFuZGxlclNjb3BlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTU2NvcGUqKSBj
b25zdDtcblxuIik7CiAgICAgfQotICAgIAorCiAgICAgIyBDb25zdHJ1Y3RvciBvYmplY3QgZ2V0
dGVyCiAgICAgdW5sZXNzICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lO
b0ludGVyZmFjZU9iamVjdH0pIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldExlZ2FjeUZhY3RvcnlGdW5jdGlvbihKU0M6OlZNJiwgSlND
OjpKU0dsb2JhbE9iamVjdCopO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9ufTsKICAgICB9CiAKKyAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57R2VuZXJhdGVGb3JFYWNoRXZlbnRIYW5kbGVyQ29udGVudEF0
dHJpYnV0ZX0pIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9p
ZCBmb3JFYWNoRXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZShjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
TmFtZSk+Jik7XG5cbiIpOworICAgIH0KKyAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57R2VuZXJhdGVGb3JFYWNoV2luZG93RXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0
ZX0pIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBmb3JF
YWNoV2luZG93RXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZShjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
TmFtZSk+Jik7XG5cbiIpOworICAgIH0KKwogICAgIG15ICRudW1DdXN0b21PcGVyYXRpb25zID0g
MDsKICAgICBteSAkbnVtQ3VzdG9tQXR0cmlidXRlcyA9IDA7CiAKQEAgLTQ5NDQsNiArNDk1Nywx
MyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7CiAgICAgfQogCisgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0dlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGV9KSB7Cisg
ICAgICAgIEdlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUoXEBpbXBs
Q29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgImZvckVhY2hFdmVudEhhbmRsZXJDb250
ZW50QXR0cmlidXRlIik7CisgICAgfQorICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntHZW5lcmF0ZUZvckVhY2hXaW5kb3dFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRl
fSkgeworICAgICAgICBHZW5lcmF0ZUZvckVhY2hFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRl
KFxAaW1wbENvbnRlbnQsICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICJmb3JFYWNoV2luZG93RXZl
bnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZSIsICJXaW5kb3dFdmVudEhhbmRsZXIiKTsKKyAgICB9
CisKICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24pIHsKICAgICAgICAgJGltcGxJbmNs
dWRlc3siPHd0Zi9VUkwuaD4ifSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPnR5cGUt
Pm5hbWUgZXEgIkRPTVN0cmluZyI7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhU
TUxcdypDb2xsZWN0aW9uJC8gb3IgJGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxpc3QiKSB7
CkBAIC01MTg0LDYgKzUyMDQsMjYgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQW5kU2V0
dGVyRGVjbGFyYXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjZW5kaWZcbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKIH0KIAorc3ViIEdlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNv
bnRlbnRBdHRyaWJ1dGUKK3sKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xh
c3NOYW1lLCAkZnVuY3Rpb25OYW1lLCAkZXZlbnRIYW5kbGVyRXh0ZW5kZWRBdHRyaWJ1dGVOYW1l
KSA9IEBfOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJIVE1MTmFtZXMuaCIpOworICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgInZvaWQgJHtjbGFzc05hbWV9Ojoke2Z1bmN0aW9uTmFtZX0oY29uc3Qg
RnVuY3Rpb248dm9pZChjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiBldmVudE5hbWUpPiYgZnVuY3Rpb24pXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OnBhaXI8TGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+KiwgY29u
c3QgQXRvbVN0cmluZyBFdmVudE5hbWVzOjoqPiB0YWJsZVtdID0ge1xuIik7CisgICAgZm9yZWFj
aCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAgIGlm
ICgkYXR0cmlidXRlLT50eXBlLT5uYW1lIGVxICJFdmVudEhhbmRsZXIiICYmICghZGVmaW5lZCAk
ZXZlbnRIYW5kbGVyRXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIHx8ICRhdHRyaWJ1dGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyRldmVudEhhbmRsZXJFeHRlbmRlZEF0dHJpYnV0ZU5hbWV9KSkgeworICAg
ICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOworICAgICAgICAg
ICAgbXkgJGV2ZW50TmFtZSA9IEV2ZW50SGFuZGxlckF0dHJpYnV0ZVNob3J0RXZlbnROYW1lKCRh
dHRyaWJ1dGUpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB7ICZI
VE1MTmFtZXM6OiR7YXR0cmlidXRlTmFtZX1BdHRyLCAmRXZlbnROYW1lczo6JHtldmVudE5hbWV9
IH0sXG4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
fTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBmb3IgKGF1dG8mIG5hbWVzIDog
dGFibGUpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHRlc3QobmFtZXMu
Zmlyc3QtPmdldCgpLmxvY2FsTmFtZSgpLCBldmVudE5hbWVzKCkuKm5hbWVzLnNlY29uZCk7XG4i
KTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOworfQorCiBzdWIgR2VuZXJhdGVB
dHRyaWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvbgogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRp
bnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1dGUsICRhdHRyaWJ1dGVHZXR0ZXJCb2R5TmFt
ZSwgJGNvbmRpdGlvbmFsKSA9IEBfOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgppbmRleCA0MzA4ZGVmOTc4ZDFkMmNlOGNhY2VkN2Yw
MzZjZWEwZjc0Y2Q4NmQxLi42ZWVhZWZiMTU1M2UyZDJjYmNiYWE4OTVmODhhZDNkZDBjYTlkNzQ5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0
ZXMuanNvbgpAQCAtMjI3LDE0ICsyMjcsMjIgQEAKICAgICAgICAgICAgICAgICAidXJsIjogImh0
dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8jRXhwb3NlZCIKICAgICAgICAgICAgIH0KICAg
ICAgICAgfSwKLSAgICAgICAgIkdlbmVyYXRlSXNSZWFjaGFibGUiOiB7CisgICAgICAgICJHZW5l
cmF0ZUFkZE9wYXF1ZVJvb3QiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJp
bnRlcmZhY2UiXSwKLSAgICAgICAgICAgICJ2YWx1ZXMiOiBbIiIsICJJbXBsIiwgIkltcGxXZWJH
TFJlbmRlcmluZ0NvbnRleHQiLCAiSW1wbENhbnZhc0Jhc2UiLCAiSW1wbERvY3VtZW50IiwgIklt
cGxFbGVtZW50Um9vdCIsICJJbXBsT3duZXJOb2RlUm9vdCIsICJJbXBsU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCIsICJSZWFjaGFibGVGcm9tRE9NV2luZG93IiwgIlJlYWNoYWJsZUZyb21OYXZpZ2F0
b3IiXQorICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCiAgICAgICAgIH0sCi0gICAgICAgICJH
ZW5lcmF0ZUFkZE9wYXF1ZVJvb3QiOiB7CisgICAgICAgICJHZW5lcmF0ZUZvckVhY2hFdmVudEhh
bmRsZXJDb250ZW50QXR0cmlidXRlIjogeworICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6
IFsiaW50ZXJmYWNlIl0sCisgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0KKyAgICAgICAgfSwK
KyAgICAgICAgIkdlbmVyYXRlRm9yRWFjaFdpbmRvd0V2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1
dGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKICAg
ICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQogICAgICAgICB9LAorICAgICAgICAiR2VuZXJhdGVJ
c1JlYWNoYWJsZSI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFj
ZSJdLAorICAgICAgICAgICAgInZhbHVlcyI6IFsiIiwgIkltcGwiLCAiSW1wbFdlYkdMUmVuZGVy
aW5nQ29udGV4dCIsICJJbXBsQ2FudmFzQmFzZSIsICJJbXBsRG9jdW1lbnQiLCAiSW1wbEVsZW1l
bnRSb290IiwgIkltcGxPd25lck5vZGVSb290IiwgIkltcGxTY3JpcHRFeGVjdXRpb25Db250ZXh0
IiwgIlJlYWNoYWJsZUZyb21ET01XaW5kb3ciLCAiUmVhY2hhYmxlRnJvbU5hdmlnYXRvciJdCisg
ICAgICAgIH0sCiAgICAgICAgICJHbG9iYWwiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJpbnRlcmZhY2UiXSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KaW5kZXggNmRlYTM4ZWYwOTQ2ZTNl
ZWQ4M2VmZDBhZTYxNGVlOWQzMzE0NmE2Ni4uYTY5MjUwMTExOWM4MDY4OWQ4ZGY4YTUwY2JhMmU2
NmEyNjgyNjU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4K
QEAgLTQsOCArNCw4IEBAIG5hbWVzcGFjZVVSST0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRt
bCIKIGF0dHJzTnVsbE5hbWVzcGFjZQogCiBhYmJyCi1hY2NlcHRfY2hhcnNldAogYWNjZXB0Cith
Y2NlcHRfY2hhcnNldAogYWNjZXNza2V5CiBhY3Rpb24KIGFsaWduCkBAIC03MSw3ICs3MSw5IEBA
IGFzeW5jCiBhdHRyaWJ1dGlvbmRlc3RpbmF0aW9uCiBhdHRyaWJ1dGlvbnNvdXJjZWlkCiBhdHRy
aWJ1dGlvbnNvdXJjZW5vbmNlCithdXRvY2FwaXRhbGl6ZQogYXV0b2NvbXBsZXRlCithdXRvY29y
cmVjdAogYXV0b2ZvY3VzCiBhdXRvcGljdHVyZWlucGljdHVyZQogYXV0b3BsYXkKQEAgLTg0LDE0
ICs4NiwxNCBAQCBiZ3Byb3BlcnRpZXMKIGJvcmRlcgogYm9yZGVyY29sb3IKIGNhcHR1cmUKK2Nl
bGxib3JkZXIKIGNlbGxwYWRkaW5nCiBjZWxsc3BhY2luZwotY2hhcgogY2hhbGxlbmdlCitjaGFy
CiBjaGFyb2ZmCiBjaGFyc2V0CiBjaGVja2VkCi1jZWxsYm9yZGVyCiBjaXRlCiBjbGFzcwogY2xh
c3NpZApAQCAtMTI1LDcgKzEyNyw2IEBAIGRpc3Bvc2l0aW9uCiBkb3dubG9hZAogZHJhZ2dhYmxl
CiBkcm9wem9uZQotd2Via2l0ZHJvcHpvbmUKIGVuY3R5cGUKIGVuZAogZW50ZXJrZXloaW50CkBA
IC0xNzgsMjIgKzE3OSwyMSBAQCBsaXN0CiBsb2FkaW5nCiBsb25nZGVzYwogbG9vcAotbG93Ci1w
bGF5Y291bnQKIGxvb3BlbmQKIGxvb3BzdGFydAorbG93CiBsb3dzcmMKIG1hbmlmZXN0CiBtYXJn
aW5oZWlnaHQKIG1hcmdpbndpZHRoCiBtYXgKIG1heGxlbmd0aAotbWlubGVuZ3RoCiBtYXlzY3Jp
cHQKIG1lZGlhCiBtZWRpYWdyb3VwCiBtZXRob2QKIG1pbgorbWlubGVuZ3RoCiBtdWx0aXBsZQog
bXV0ZWQKIG5hbWUKQEAgLTIwNywxMCArMjA3LDEwIEBAIG5vd3JhcAogb2JqZWN0CiBvbmFib3J0
CiBvbmFmdGVycHJpbnQKLW9uYW5pbWF0aW9uc3RhcnQKLW9uYW5pbWF0aW9uaXRlcmF0aW9uCi1v
bmFuaW1hdGlvbmVuZAogb25hbmltYXRpb25jYW5jZWwKK29uYW5pbWF0aW9uZW5kCitvbmFuaW1h
dGlvbml0ZXJhdGlvbgorb25hbmltYXRpb25zdGFydAogb25hdXRvY29tcGxldGUKIG9uYXV0b2Nv
bXBsZXRlZXJyb3IKIG9uYmVmb3JlY29weQpAQCAtMjI5LDYgKzIyOSw3IEBAIG9uY2xpY2sKIG9u
Y2xvc2UKIG9uY29udGV4dG1lbnUKIG9uY29weQorb25jdWVjaGFuZ2UKIG9uY3V0CiBvbmRibGNs
aWNrCiBvbmRldmljZWNoYW5nZQpAQCAtMjQ3LDE2ICsyNDgsMTYgQEAgb25mb2N1cwogb25mb2N1
c2luCiBvbmZvY3Vzb3V0CiBvbmZvcm1kYXRhCitvbmdlc3R1cmVjaGFuZ2UKK29uZ2VzdHVyZWVu
ZAorb25nZXN0dXJlc3RhcnQKK29uZ290cG9pbnRlcmNhcHR1cmUKIG9uaGFzaGNoYW5nZQogb25p
bnB1dAogb25pbnZhbGlkCiBvbmtleWRvd24KIG9ua2V5cHJlc3MKIG9ua2V5dXAKLW9uZ2VzdHVy
ZXN0YXJ0Ci1vbmdlc3R1cmVjaGFuZ2UKLW9uZ2VzdHVyZWVuZAotb25nb3Rwb2ludGVyY2FwdHVy
ZQogb25sYW5ndWFnZWNoYW5nZQogb25sb2FkCiBvbmxvYWRlZGRhdGEKQEAgLTI3Miw4ICsyNzMs
OCBAQCBvbm1vdXNlb3V0CiBvbm1vdXNlb3Zlcgogb25tb3VzZXVwCiBvbm1vdXNld2hlZWwKLW9u
b25saW5lCiBvbm9mZmxpbmUKK29ub25saW5lCiBvbm9yaWVudGF0aW9uY2hhbmdlCiBvbnBhZ2Vo
aWRlCiBvbnBhZ2VzaG93CkBAIC0yODEsMTcgKzI4MiwxOCBAQCBvbnBhc3RlCiBvbnBhdXNlCiBv
bnBsYXkKIG9ucGxheWluZwotb25wb2ludGVyZG93bgotb25wb2ludGVybW92ZQotb25wb2ludGVy
dXAKIG9ucG9pbnRlcmNhbmNlbAotb25wb2ludGVyb3Zlcgotb25wb2ludGVyb3V0CitvbnBvaW50
ZXJkb3duCiBvbnBvaW50ZXJlbnRlcgogb25wb2ludGVybGVhdmUKK29ucG9pbnRlcm1vdmUKK29u
cG9pbnRlcm91dAorb25wb2ludGVyb3Zlcgorb25wb2ludGVydXAKIG9ucG9wc3RhdGUKIG9ucHJv
Z3Jlc3MKIG9ucmF0ZWNoYW5nZQorb25yZWplY3Rpb25oYW5kbGVkCiBvbnJlc2V0CiBvbnJlc2l6
ZQogb25zY3JvbGwKQEAgLTMwMCwzMiArMzAyLDMzIEBAIG9uc2VjdXJpdHlwb2xpY3l2aW9sYXRp
b24KIG9uc2Vla2VkCiBvbnNlZWtpbmcKIG9uc2VsZWN0Ci1vbnNlbGVjdHN0YXJ0CiBvbnNlbGVj
dGlvbmNoYW5nZQorb25zZWxlY3RzdGFydAogb25zbG90Y2hhbmdlCi1vbndoZWVsCiBvbnN0YWxs
ZWQKIG9uc3RvcmFnZQotb25zdXNwZW5kCiBvbnN1Ym1pdAorb25zdXNwZW5kCiBvbnRpbWV1cGRh
dGUKIG9udG9nZ2xlCitvbnRvdWNoY2FuY2VsCitvbnRvdWNoZW5kCiBvbnRvdWNoZm9yY2VjaGFu
Z2UKLW9udG91Y2hzdGFydAogb250b3VjaG1vdmUKLW9udG91Y2hlbmQKLW9udG91Y2hjYW5jZWwK
K29udG91Y2hzdGFydAogb250cmFuc2l0aW9uY2FuY2VsCiBvbnRyYW5zaXRpb25lbmQKIG9udHJh
bnNpdGlvbnJ1bgogb250cmFuc2l0aW9uc3RhcnQKK29udW5oYW5kbGVkcmVqZWN0aW9uCiBvbnVu
bG9hZAogb252b2x1bWVjaGFuZ2UKIG9ud2FpdGluZwotb253ZWJraXRhbmltYXRpb25zdGFydAot
b253ZWJraXRhbmltYXRpb25pdGVyYXRpb24KIG9ud2Via2l0YW5pbWF0aW9uZW5kCitvbndlYmtp
dGFuaW1hdGlvbml0ZXJhdGlvbgorb253ZWJraXRhbmltYXRpb25zdGFydAogb253ZWJraXRiZWdp
bmZ1bGxzY3JlZW4KK29ud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5n
ZWQKIG9ud2Via2l0ZW5kZnVsbHNjcmVlbgogb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlCiBvbndl
YmtpdGZ1bGxzY3JlZW5lcnJvcgpAQCAtMzM3LDE5ICszNDAsMjMgQEAgb253ZWJraXRtb3VzZWZv
cmNlZG93bgogb253ZWJraXRtb3VzZWZvcmNldXAKIG9ud2Via2l0bW91c2Vmb3JjZXdpbGxiZWdp
bgogb253ZWJraXRuZWVka2V5CitvbndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hh
bmdlZAorb253ZWJraXRwcmVzZW50YXRpb25tb2RlY2hhbmdlZAogb253ZWJraXRzb3VyY2VjbG9z
ZQogb253ZWJraXRzb3VyY2VlbmRlZAogb253ZWJraXRzb3VyY2VvcGVuCiBvbndlYmtpdHRyYW5z
aXRpb25lbmQKK29ud2hlZWwKIG9wZW4KIG9wdGltdW0KIHBhcnQKIHBhdHRlcm4KK3BpbmcKIHBs
YWNlaG9sZGVyCitwbGF5Y291bnQKIHBsYXlzaW5saW5lCiBwbHVnaW5zcGFnZQogcGx1Z2ludXJs
Ci1waW5nCiBwb3N0ZXIKIHByZWNpc2lvbgogcHJlbG9hZApAQCAtMzg1LDEzICszOTIsMTEgQEAg
c2xvdAogc29ydGFibGUKIHNvcnRkaXJlY3Rpb24KIHNwYW4KLXgtd2Via2l0LXNwZWVjaAoteC13
ZWJraXQtZ3JhbW1hcgogc3BlbGxjaGVjawogc3JjCi1zcmNzZXQKIHNyY2RvYwogc3JjbGFuZwor
c3Jjc2V0CiBzdGFuZGJ5CiBzdGFydAogc3RlcApAQCAtNDE2LDI3ICs0MjEsMjIgQEAgdmFsdWV0
eXBlCiB2ZXJzaW9uCiB2bGluawogdnNwYWNlCit3ZWJraXQtcGxheXNpbmxpbmUKIHdlYmtpdGFs
bG93ZnVsbHNjcmVlbgord2Via2l0YXR0YWNobWVudGJsb2J1cmwKIHdlYmtpdGF0dGFjaG1lbnRp
ZAogd2Via2l0YXR0YWNobWVudHBhdGgKLXdlYmtpdGF0dGFjaG1lbnRibG9idXJsCiB3ZWJraXRk
aXJlY3RvcnkKK3dlYmtpdGRyb3B6b25lCiB3aWR0aAogd3JhcAotCi1hdXRvY29ycmVjdAotYXV0
b2NhcGl0YWxpemUKLW9ud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5n
ZWQKLW9ud2Via2l0cGxheWJhY2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkCi1vbndlYmtpdHBy
ZXNlbnRhdGlvbm1vZGVjaGFuZ2VkCi14LXdlYmtpdC1pbWFnZW1lbnUKLXdlYmtpdC1wbGF5c2lu
bGluZQoteC13ZWJraXQtYWlycGxheQoteC13ZWJraXQtd2lyZWxlc3N2aWRlb3BsYXliYWNrZGlz
YWJsZWQKLXgtaXR1bmVzLWluaGVyaXQtdXJpLXF1ZXJ5LWNvbXBvbmVudAotCiB4LWFwcGxlLWRh
dGEtZGV0ZWN0b3JzCi14LWFwcGxlLWRhdGEtZGV0ZWN0b3JzLXR5cGUKIHgtYXBwbGUtZGF0YS1k
ZXRlY3RvcnMtcmVzdWx0Ci0KK3gtYXBwbGUtZGF0YS1kZXRlY3RvcnMtdHlwZQogeC1hcHBsZS1w
ZGYtYW5ub3RhdGlvbgoreC1pdHVuZXMtaW5oZXJpdC11cmktcXVlcnktY29tcG9uZW50Cit4LXdl
YmtpdC1haXJwbGF5Cit4LXdlYmtpdC1ncmFtbWFyCit4LXdlYmtpdC1pbWFnZW1lbnUKK3gtd2Vi
a2l0LXNwZWVjaAoreC13ZWJraXQtd2lyZWxlc3N2aWRlb3BsYXliYWNrZGlzYWJsZWQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcAppbmRleCBlZmYzYzYwNzQ1OTgwMWEwZmFj
ZTY3ZmRhMWE2ZjE3M2JhODUxMTk1Li43ZTdlMmZkZTAzODNlODJkMjI5ZDkxNWNmYzEyMmRkNzU1
NzE5ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCkBAIC0zLDcg
KzMsNyBAQAogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0Br
ZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAwIFNpbW9uIEhhdXNtYW5uIChoYXVzbWFubkBr
ZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUu
b3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiSlNIVE1MQm9keUVsZW1lbnQuaCIKICNp
bmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5l
cy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpAQCAtOTYsNDYgKzk3LDE5IEBA
IHZvaWQgSFRNTEJvZHlFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lCiAgICAgICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0UHJl
c2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi1I
VE1MRWxlbWVudDo6RXZlbnRIYW5kbGVyTmFtZU1hcCBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZVdp
bmRvd0V2ZW50SGFuZGxlck5hbWVNYXAoKQotewotICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWRO
YW1lKiBjb25zdCB0YWJsZVtdID0gewotICAgICAgICAmb25hZnRlcnByaW50QXR0ci5nZXQoKSwK
LSAgICAgICAgJm9uYmVmb3JlcHJpbnRBdHRyLmdldCgpLAotICAgICAgICAmb25iZWZvcmV1bmxv
YWRBdHRyLmdldCgpLAotICAgICAgICAmb25ibHVyQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZXJy
b3JBdHRyLmdldCgpLAotICAgICAgICAmb25mb2N1c0F0dHIuZ2V0KCksCi0gICAgICAgICZvbmZv
Y3VzaW5BdHRyLmdldCgpLAotICAgICAgICAmb25mb2N1c291dEF0dHIuZ2V0KCksCi0gICAgICAg
ICZvbmhhc2hjaGFuZ2VBdHRyLmdldCgpLAotICAgICAgICAmb25sYW5ndWFnZWNoYW5nZUF0dHIu
Z2V0KCksCi0gICAgICAgICZvbmxvYWRBdHRyLmdldCgpLAotICAgICAgICAmb25tZXNzYWdlQXR0
ci5nZXQoKSwKLSAgICAgICAgJm9ub2ZmbGluZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbm9ubGlu
ZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbm9yaWVudGF0aW9uY2hhbmdlQXR0ci5nZXQoKSwKLSAg
ICAgICAgJm9ucGFnZWhpZGVBdHRyLmdldCgpLAotICAgICAgICAmb25wYWdlc2hvd0F0dHIuZ2V0
KCksCi0gICAgICAgICZvbnBvcHN0YXRlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ucmVzaXplQXR0
ci5nZXQoKSwKLSAgICAgICAgJm9uc2Nyb2xsQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uc3RvcmFn
ZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnVubG9hZEF0dHIuZ2V0KCksCi0gICAgICAgICZvbndl
YmtpdG1vdXNlZm9yY2VjaGFuZ2VkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ud2Via2l0bW91c2Vm
b3JjZWRvd25BdHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRtb3VzZWZvcmNldXBBdHRyLmdl
dCgpLAotICAgICAgICAmb253ZWJraXRtb3VzZWZvcmNld2lsbGJlZ2luQXR0ci5nZXQoKSwKLSAg
ICB9OwotCi0gICAgRXZlbnRIYW5kbGVyTmFtZU1hcCBtYXA7Ci0gICAgcG9wdWxhdGVFdmVudEhh
bmRsZXJOYW1lTWFwKG1hcCwgdGFibGUpOwotICAgIHJldHVybiBtYXA7Ci19Ci0KIGNvbnN0IEF0
b21TdHJpbmcmIEhUTUxCb2R5RWxlbWVudDo6ZXZlbnROYW1lRm9yV2luZG93RXZlbnRIYW5kbGVy
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEV2ZW50SGFuZGxlck5hbWVNYXA+IG1hcCA9IGNyZWF0ZVdpbmRv
d0V2ZW50SGFuZGxlck5hbWVNYXAoKTsKLSAgICByZXR1cm4gZXZlbnROYW1lRm9yRXZlbnRIYW5k
bGVyQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG1hcC5nZXQoKSk7CisgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkIG1hcCA9IFtdIHsKKyAgICAgICAgRXZlbnRIYW5kbGVyTmFtZU1hcCBtYXA7Cisg
ICAgICAgIEpTSFRNTEJvZHlFbGVtZW50Ojpmb3JFYWNoRXZlbnRIYW5kbGVyQ29udGVudEF0dHJp
YnV0ZShbJl0gKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJp
bmcmIGV2ZW50TmFtZSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBzcGVj
aWFsIGNhc2VzLiBUaGVzZSBoYXZlIGhhcyBhbiBbV2luZG93RXZlbnRIYW5kbGVyXSBsaW5lIGlu
IHRoZSBJREwgYnV0IHdlcmUgbm90IGluIHRoaXMgbWFwIGJlZm9yZSwgc28gdGhpcyBwcmVzZXJ2
ZXMgYmVoYXZpb3IuCisgICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBvbnJlamVjdGlv
bmhhbmRsZWRBdHRyLmdldCgpLmxvY2FsTmFtZSgpIHx8IGF0dHJpYnV0ZU5hbWUgPT0gb251bmhh
bmRsZWRyZWplY3Rpb25BdHRyLmdldCgpLmxvY2FsTmFtZSgpKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIG1hcC5hZGQoYXR0cmlidXRlTmFtZS5pbXBsKCksIGV2ZW50TmFt
ZSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gbWFwOworICAgIH0oKTsKKyAgICByZXR1
cm4gZXZlbnROYW1lRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG1hcCk7
CiB9CiAKIHZvaWQgSFRNTEJvZHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxCb2R5RWxlbWVudC5oCmluZGV4IGVhNzg5ODI5ZjE0NjI3NjljMGQyOWIyMWRhZjYyZTBmNzQ0
NTJhM2YuLjM1ZjExMzZmN2I5ZGI1MDczYzU1OTEwNWVjNjNjZmNjNzUxZmU1NTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaApAQCAtNTEsOCArNTEsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgc3VwcG9ydHNGb2N1cygpIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBhZGRTdWJy
ZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8VVJMPiYpIGNvbnN0IGZpbmFsOwotCi0g
ICAgc3RhdGljIEV2ZW50SGFuZGxlck5hbWVNYXAgY3JlYXRlV2luZG93RXZlbnRIYW5kbGVyTmFt
ZU1hcCgpOwogfTsKIAogfSAvL25hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQm9keUVsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVs
ZW1lbnQuaWRsCmluZGV4IDRlOTgxYTY0ZjhhYjJhOWVlMjhlNzNiODI1NWYzY2M4NWQ0ZjUxYjAu
LjliZWI4NTUwOTZiMmIzMjAyNjgwM2E1ZDY3MTAyYWNkYTJmODQ1MTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxCb2R5RWxlbWVudC5pZGwKQEAgLTE5LDcgKzE5LDggQEAKICAqLwogCiBbCi0g
ICAgRXhwb3NlZD1XaW5kb3cKKyAgICBFeHBvc2VkPVdpbmRvdywKKyAgICBHZW5lcmF0ZUZvckVh
Y2hXaW5kb3dFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRlLAogXSBpbnRlcmZhY2UgSFRNTEJv
ZHlFbGVtZW50IDogSFRNTEVsZW1lbnQgewogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJl
ZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBhTGlu
azsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGJhY2tncm91bmQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGY1MDcy
MzU0NDEzYjBjMmUxNjk1NWRhZmMxMmUxZDI5NDg3ZDY5ZWYuLmNmNjdkYzU0MzQ0M2YxNGQ5YjU3
MzkzZjRlM2Y2OTU2ODAyYTgzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBA
IC0xLDcgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9s
bEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0
b0BrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMjEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgTW90b3JvbGEgTW9iaWxpdHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgpAQCAtNjEsNiArNjEsNyBAQAogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIK
ICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdl
T3ZlcmxheS5oIgorI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYUNv
bnRyb2xzSG9zdC5oIgogI2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5k
ZXJFbGVtZW50LmgiCkBAIC0yNDAsMTY3ICsyNDEsNiBAQCB2b2lkIEhUTUxFbGVtZW50Ojpjb2xs
ZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YQogICAgICAgICBTdHlsZWRFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0
dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi1IVE1MRWxlbWVudDo6RXZlbnRIYW5k
bGVyTmFtZU1hcCBIVE1MRWxlbWVudDo6Y3JlYXRlRXZlbnRIYW5kbGVyTmFtZU1hcCgpCi17Ci0g
ICAgRXZlbnRIYW5kbGVyTmFtZU1hcCBtYXA7Ci0KLSAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVk
TmFtZSogY29uc3QgdGFibGVbXSA9IHsKLSAgICAgICAgJm9uYWJvcnRBdHRyLmdldCgpLAotICAg
ICAgICAmb25hbmltYXRpb25lbmRBdHRyLmdldCgpLAotICAgICAgICAmb25hbmltYXRpb25pdGVy
YXRpb25BdHRyLmdldCgpLAotICAgICAgICAmb25hbmltYXRpb25zdGFydEF0dHIuZ2V0KCksCi0g
ICAgICAgICZvbmFuaW1hdGlvbmNhbmNlbEF0dHIuZ2V0KCksCi0gICAgICAgICZvbmF1dG9jb21w
bGV0ZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbmF1dG9jb21wbGV0ZWVycm9yQXR0ci5nZXQoKSwK
LSAgICAgICAgJm9uYmVmb3JlY29weUF0dHIuZ2V0KCksCi0gICAgICAgICZvbmJlZm9yZWN1dEF0
dHIuZ2V0KCksCi0gICAgICAgICZvbmJlZm9yZWlucHV0QXR0ci5nZXQoKSwKLSAgICAgICAgJm9u
YmVmb3JlbG9hZEF0dHIuZ2V0KCksCi0gICAgICAgICZvbmJlZm9yZXBhc3RlQXR0ci5nZXQoKSwK
LSAgICAgICAgJm9uYmx1ckF0dHIuZ2V0KCksCi0gICAgICAgICZvbmNhbmNlbEF0dHIuZ2V0KCks
Ci0gICAgICAgICZvbmNhbnBsYXlBdHRyLmdldCgpLAotICAgICAgICAmb25jYW5wbGF5dGhyb3Vn
aEF0dHIuZ2V0KCksCi0gICAgICAgICZvbmNoYW5nZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbmNs
aWNrQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uY2xvc2VBdHRyLmdldCgpLAotICAgICAgICAmb25j
b250ZXh0bWVudUF0dHIuZ2V0KCksCi0gICAgICAgICZvbmNvcHlBdHRyLmdldCgpLAotICAgICAg
ICAmb25jdXRBdHRyLmdldCgpLAotICAgICAgICAmb25kYmxjbGlja0F0dHIuZ2V0KCksCi0gICAg
ICAgICZvbmRyYWdBdHRyLmdldCgpLAotICAgICAgICAmb25kcmFnZW5kQXR0ci5nZXQoKSwKLSAg
ICAgICAgJm9uZHJhZ2VudGVyQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZHJhZ2xlYXZlQXR0ci5n
ZXQoKSwKLSAgICAgICAgJm9uZHJhZ292ZXJBdHRyLmdldCgpLAotICAgICAgICAmb25kcmFnc3Rh
cnRBdHRyLmdldCgpLAotICAgICAgICAmb25kcm9wQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZHVy
YXRpb25jaGFuZ2VBdHRyLmdldCgpLAotICAgICAgICAmb25lbXB0aWVkQXR0ci5nZXQoKSwKLSAg
ICAgICAgJm9uZW5kZWRBdHRyLmdldCgpLAotICAgICAgICAmb25lcnJvckF0dHIuZ2V0KCksCi0g
ICAgICAgICZvbmZvY3VzQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZm9jdXNpbkF0dHIuZ2V0KCks
Ci0gICAgICAgICZvbmZvY3Vzb3V0QXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZm9ybWRhdGFBdHRy
LmdldCgpLAotICAgICAgICAmb25nZXN0dXJlY2hhbmdlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9u
Z2VzdHVyZWVuZEF0dHIuZ2V0KCksCi0gICAgICAgICZvbmdlc3R1cmVzdGFydEF0dHIuZ2V0KCks
Ci0gICAgICAgICZvbmdvdHBvaW50ZXJjYXB0dXJlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uaW5w
dXRBdHRyLmdldCgpLAotICAgICAgICAmb25pbnZhbGlkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9u
a2V5ZG93bkF0dHIuZ2V0KCksCi0gICAgICAgICZvbmtleXByZXNzQXR0ci5nZXQoKSwKLSAgICAg
ICAgJm9ua2V5dXBBdHRyLmdldCgpLAotICAgICAgICAmb25sb2FkQXR0ci5nZXQoKSwKLSAgICAg
ICAgJm9ubG9hZGVkZGF0YUF0dHIuZ2V0KCksCi0gICAgICAgICZvbmxvYWRlZG1ldGFkYXRhQXR0
ci5nZXQoKSwKLSAgICAgICAgJm9ubG9hZHN0YXJ0QXR0ci5nZXQoKSwKLSAgICAgICAgJm9ubG9z
dHBvaW50ZXJjYXB0dXJlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ubW91c2Vkb3duQXR0ci5nZXQo
KSwKLSAgICAgICAgJm9ubW91c2VlbnRlckF0dHIuZ2V0KCksCi0gICAgICAgICZvbm1vdXNlbGVh
dmVBdHRyLmdldCgpLAotICAgICAgICAmb25tb3VzZW1vdmVBdHRyLmdldCgpLAotICAgICAgICAm
b25tb3VzZW91dEF0dHIuZ2V0KCksCi0gICAgICAgICZvbm1vdXNlb3ZlckF0dHIuZ2V0KCksCi0g
ICAgICAgICZvbm1vdXNldXBBdHRyLmdldCgpLAotICAgICAgICAmb25tb3VzZXdoZWVsQXR0ci5n
ZXQoKSwKLSAgICAgICAgJm9ucGFzdGVBdHRyLmdldCgpLAotICAgICAgICAmb25wYXVzZUF0dHIu
Z2V0KCksCi0gICAgICAgICZvbnBsYXlBdHRyLmdldCgpLAotICAgICAgICAmb25wbGF5aW5nQXR0
ci5nZXQoKSwKLSAgICAgICAgJm9ucG9pbnRlcmRvd25BdHRyLmdldCgpLAotICAgICAgICAmb25w
b2ludGVybW92ZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnBvaW50ZXJ1cEF0dHIuZ2V0KCksCi0g
ICAgICAgICZvbnBvaW50ZXJjYW5jZWxBdHRyLmdldCgpLAotICAgICAgICAmb25wb2ludGVyb3Zl
ckF0dHIuZ2V0KCksCi0gICAgICAgICZvbnBvaW50ZXJvdXRBdHRyLmdldCgpLAotICAgICAgICAm
b25wb2ludGVyZW50ZXJBdHRyLmdldCgpLAotICAgICAgICAmb25wb2ludGVybGVhdmVBdHRyLmdl
dCgpLAotICAgICAgICAmb25wcm9ncmVzc0F0dHIuZ2V0KCksCi0gICAgICAgICZvbnJhdGVjaGFu
Z2VBdHRyLmdldCgpLAotICAgICAgICAmb25yZXNldEF0dHIuZ2V0KCksCi0gICAgICAgICZvbnJl
c2l6ZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnNjcm9sbEF0dHIuZ2V0KCksCi0gICAgICAgICZv
bnNlYXJjaEF0dHIuZ2V0KCksCi0gICAgICAgICZvbnNlY3VyaXR5cG9saWN5dmlvbGF0aW9uQXR0
ci5nZXQoKSwKLSAgICAgICAgJm9uc2Vla2VkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uc2Vla2lu
Z0F0dHIuZ2V0KCksCi0gICAgICAgICZvbnNlbGVjdEF0dHIuZ2V0KCksCi0gICAgICAgICZvbnNl
bGVjdGlvbmNoYW5nZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnNlbGVjdHN0YXJ0QXR0ci5nZXQo
KSwKLSAgICAgICAgJm9uc2xvdGNoYW5nZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnN0YWxsZWRB
dHRyLmdldCgpLAotICAgICAgICAmb25zdWJtaXRBdHRyLmdldCgpLAotICAgICAgICAmb25zdXNw
ZW5kQXR0ci5nZXQoKSwKLSAgICAgICAgJm9udGltZXVwZGF0ZUF0dHIuZ2V0KCksCi0gICAgICAg
ICZvbnRvZ2dsZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnRvdWNoY2FuY2VsQXR0ci5nZXQoKSwK
LSAgICAgICAgJm9udG91Y2hlbmRBdHRyLmdldCgpLAotICAgICAgICAmb250b3VjaGZvcmNlY2hh
bmdlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9udG91Y2htb3ZlQXR0ci5nZXQoKSwKLSAgICAgICAg
Jm9udG91Y2hzdGFydEF0dHIuZ2V0KCksCi0gICAgICAgICZvbnRyYW5zaXRpb25jYW5jZWxBdHRy
LmdldCgpLAotICAgICAgICAmb250cmFuc2l0aW9uZW5kQXR0ci5nZXQoKSwKLSAgICAgICAgJm9u
dHJhbnNpdGlvbnJ1bkF0dHIuZ2V0KCksCi0gICAgICAgICZvbnRyYW5zaXRpb25zdGFydEF0dHIu
Z2V0KCksCi0gICAgICAgICZvbnZvbHVtZWNoYW5nZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbndh
aXRpbmdBdHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRiZWdpbmZ1bGxzY3JlZW5BdHRyLmdl
dCgpLAotICAgICAgICAmb253ZWJraXRjdXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hh
bmdlZEF0dHIuZ2V0KCksCi0gICAgICAgICZvbndlYmtpdGVuZGZ1bGxzY3JlZW5BdHRyLmdldCgp
LAotICAgICAgICAmb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlQXR0ci5nZXQoKSwKLSAgICAgICAg
Jm9ud2Via2l0ZnVsbHNjcmVlbmVycm9yQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ud2Via2l0a2V5
YWRkZWRBdHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRrZXllcnJvckF0dHIuZ2V0KCksCi0g
ICAgICAgICZvbndlYmtpdGtleW1lc3NhZ2VBdHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRt
b3VzZWZvcmNlY2hhbmdlZEF0dHIuZ2V0KCksCi0gICAgICAgICZvbndlYmtpdG1vdXNlZm9yY2Vk
b3duQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ud2Via2l0bW91c2Vmb3JjZXdpbGxiZWdpbkF0dHIu
Z2V0KCksCi0gICAgICAgICZvbndlYmtpdG1vdXNlZm9yY2V1cEF0dHIuZ2V0KCksCi0gICAgICAg
ICZvbndlYmtpdG5lZWRrZXlBdHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRwbGF5YmFja3Rh
cmdldGF2YWlsYWJpbGl0eWNoYW5nZWRBdHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRwcmVz
ZW50YXRpb25tb2RlY2hhbmdlZEF0dHIuZ2V0KCksCi0gICAgICAgICZvbndoZWVsQXR0ci5nZXQo
KSwKLSAgICB9OwotCi0gICAgcG9wdWxhdGVFdmVudEhhbmRsZXJOYW1lTWFwKG1hcCwgdGFibGUp
OwotCi0gICAgc3RydWN0IFVudXN1YWxNYXBwaW5nIHsKLSAgICAgICAgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZTsKLSAgICAgICAgY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1l
OwotICAgIH07Ci0KLSAgICBjb25zdCBVbnVzdWFsTWFwcGluZyB1bnVzdWFsUGFpcnNUYWJsZVtd
ID0gewotICAgICAgICB7IG9ud2Via2l0YW5pbWF0aW9uZW5kQXR0ciwgZXZlbnROYW1lcygpLndl
YmtpdEFuaW1hdGlvbkVuZEV2ZW50IH0sCi0gICAgICAgIHsgb253ZWJraXRhbmltYXRpb25pdGVy
YXRpb25BdHRyLCBldmVudE5hbWVzKCkud2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uRXZlbnQgfSwK
LSAgICAgICAgeyBvbndlYmtpdGFuaW1hdGlvbnN0YXJ0QXR0ciwgZXZlbnROYW1lcygpLndlYmtp
dEFuaW1hdGlvblN0YXJ0RXZlbnQgfSwKLSAgICAgICAgeyBvbndlYmtpdHRyYW5zaXRpb25lbmRB
dHRyLCBldmVudE5hbWVzKCkud2Via2l0VHJhbnNpdGlvbkVuZEV2ZW50IH0sCi0gICAgfTsKLQot
ICAgIGZvciAoYXV0byYgZW50cnkgOiB1bnVzdWFsUGFpcnNUYWJsZSkKLSAgICAgICAgbWFwLmFk
ZChlbnRyeS5hdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpLmltcGwoKSwgZW50cnkuZXZlbnROYW1l
KTsKLQotICAgIHJldHVybiBtYXA7Ci19Ci0KLXZvaWQgSFRNTEVsZW1lbnQ6OnBvcHVsYXRlRXZl
bnRIYW5kbGVyTmFtZU1hcChFdmVudEhhbmRsZXJOYW1lTWFwJiBtYXAsIGNvbnN0IFF1YWxpZmll
ZE5hbWUqIGNvbnN0IHRhYmxlW10sIHNpemVfdCB0YWJsZVNpemUpCi17Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCB0YWJsZVNpemU7ICsraSkgewotICAgICAgICBhdXRvKiBlbnRyeSA9IHRh
YmxlW2ldOwotCi0gICAgICAgIC8vIEZJWE1FOiBXb3VsZCBiZSBuaWNlIHRvIGNoZWNrIHRoZXNl
IGFnYWluc3QgdGhlIGFjdHVhbCBldmVudCBuYW1lcyBpbiBldmVudE5hbWVzKCkuCi0gICAgICAg
IC8vIE5vdCBvYnZpb3VzIGhvdyB0byBkbyB0aGF0IHNpbXBseSwgdGhvdWdoLgotICAgICAgICBh
dXRvJiBhdHRyaWJ1dGVOYW1lID0gZW50cnktPmxvY2FsTmFtZSgpOwotCi0gICAgICAgIC8vIFJl
bW92ZSB0aGUgIm9uIiBwcmVmaXguIFJlcXVpcmVzIHNvbWUgbWVtb3J5IGFsbG9jYXRpb24gYW5k
IGNvbXB1dGluZyBhIGhhc2gsIGJ1dCBieSBub3QKLSAgICAgICAgLy8gdXNpbmcgcG9pbnRlcnMg
ZnJvbSBldmVudE5hbWVzKCksIHRoZSBwYXNzZWQtaW4gdGFibGUgY2FuIGJlIGluaXRpYWxpemVk
IGF0IGNvbXBpbGUgdGltZS4KLSAgICAgICAgQXRvbVN0cmluZyBldmVudE5hbWUgPSBhdHRyaWJ1
dGVOYW1lLnN0cmluZygpLnN1YnN0cmluZygyKTsKLQotICAgICAgICBtYXAuYWRkKGF0dHJpYnV0
ZU5hbWUuaW1wbCgpLCBXVEZNb3ZlKGV2ZW50TmFtZSkpOwotICAgIH0KLX0KLQogY29uc3QgQXRv
bVN0cmluZyYgSFRNTEVsZW1lbnQ6OmV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBFdmVudEhhbmRsZXJOYW1l
TWFwJiBtYXApCiB7CiAgICAgQVNTRVJUKCFhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpLmlzTnVs
bCgpKTsKQEAgLTQyMCw4ICsyNjAsNDMgQEAgY29uc3QgQXRvbVN0cmluZyYgSFRNTEVsZW1lbnQ6
OmV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWQKIAogY29u
c3QgQXRvbVN0cmluZyYgSFRNTEVsZW1lbnQ6OmV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogewotICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxFdmVudEhhbmRsZXJOYW1lTWFwPiBtYXAgPSBjcmVhdGVFdmVudEhhbmRs
ZXJOYW1lTWFwKCk7Ci0gICAgcmV0dXJuIGV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lLCBtYXAuZ2V0KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBt
YXAgPSBbXSB7CisgICAgICAgIEV2ZW50SGFuZGxlck5hbWVNYXAgbWFwOworICAgICAgICBKU0hU
TUxFbGVtZW50Ojpmb3JFYWNoRXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZShbJl0gKGNvbnN0
IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSkg
eworICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIHNwZWNpYWwgY2FzZS4gVGhpcyBo
YXMgYW4gW0V2ZW50SGFuZGxlcl0gbGluZSBpbiB0aGUgSURMIGJ1dCB3YXMgbm90IGhpc3Rvcmlj
YWxseSBpbiB0aGlzIG1hcC4KKyAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IG9uY3Vl
Y2hhbmdlQXR0ci5nZXQoKS5sb2NhbE5hbWUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICBtYXAuYWRkKGF0dHJpYnV0ZU5hbWUuaW1wbCgpLCBldmVudE5hbWUpOworICAg
ICAgICB9KTsKKyAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBzcGVjaWFsIGNhc2VzLiBU
aGVzZSBhcmUgbm90IGluIElETCB3aXRoIFtFdmVudEhhbmRsZXJdIGJ1dCB3ZXJlIGhpc3Rvcmlj
YWxseSBpbiB0aGlzIG1hcC4KKyAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBMYXp5TmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4qIHRhYmxlW10gPSB7CisgICAgICAgICAg
ICAmb25hdXRvY29tcGxldGVBdHRyLAorICAgICAgICAgICAgJm9uYXV0b2NvbXBsZXRlZXJyb3JB
dHRyLAorICAgICAgICAgICAgJm9uYmVmb3JlbG9hZEF0dHIsCisgICAgICAgICAgICAmb25mb2N1
c2luQXR0ciwKKyAgICAgICAgICAgICZvbmZvY3Vzb3V0QXR0ciwKKyAgICAgICAgICAgICZvbmdl
c3R1cmVjaGFuZ2VBdHRyLAorICAgICAgICAgICAgJm9uZ2VzdHVyZWVuZEF0dHIsCisgICAgICAg
ICAgICAmb25nZXN0dXJlc3RhcnRBdHRyLAorICAgICAgICAgICAgJm9ud2Via2l0YmVnaW5mdWxs
c2NyZWVuQXR0ciwKKyAgICAgICAgICAgICZvbndlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlz
d2lyZWxlc3NjaGFuZ2VkQXR0ciwKKyAgICAgICAgICAgICZvbndlYmtpdGVuZGZ1bGxzY3JlZW5B
dHRyLAorICAgICAgICAgICAgJm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUF0dHIsCisgICAgICAg
ICAgICAmb253ZWJraXRmdWxsc2NyZWVuZXJyb3JBdHRyLAorICAgICAgICAgICAgJm9ud2Via2l0
a2V5YWRkZWRBdHRyLAorICAgICAgICAgICAgJm9ud2Via2l0a2V5ZXJyb3JBdHRyLAorICAgICAg
ICAgICAgJm9ud2Via2l0a2V5bWVzc2FnZUF0dHIsCisgICAgICAgICAgICAmb253ZWJraXRuZWVk
a2V5QXR0ciwKKyAgICAgICAgICAgICZvbndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5
Y2hhbmdlZEF0dHIsCisgICAgICAgICAgICAmb253ZWJraXRwcmVzZW50YXRpb25tb2RlY2hhbmdl
ZEF0dHIsCisgICAgICAgIH07CisgICAgICAgIGZvciAoYXV0byYgZW50cnkgOiB0YWJsZSkgewor
ICAgICAgICAgICAgYXV0byogbmFtZSA9IGVudHJ5LT5nZXQoKS5sb2NhbE5hbWUoKS5pbXBsKCk7
CisgICAgICAgICAgICBtYXAuYWRkKG5hbWUsIEF0b21TdHJpbmcgeyBuYW1lLCAyLCBTdHJpbmc6
Ok1heExlbmd0aCB9KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbWFwOworICAgIH0oKTsK
KyAgICByZXR1cm4gZXZlbnROYW1lRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUsIG1hcCk7CiB9CiAKIE5vZGU6OkVkaXRhYmlsaXR5IEhUTUxFbGVtZW50OjplZGl0YWJpbGl0
eUZyb21Db250ZW50RWRpdGFibGVBdHRyKGNvbnN0IE5vZGUmIG5vZGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50LmgKaW5kZXggMjg2OTQyODFjMThmNTlhNjg2ZWNmNTEyZDY2ZjdkZjhiOThjNTcx
Yi4uMmIzYTdlYmYwMTg0YTVjNzZmYTM1Yjk2ZGU4YWNlMDQ1N2ZjOGI3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuaApAQCAtMTYxLDggKzE2MSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lk
IGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
Y2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0aW9uYWxpdHkoKTsKIAotICAgIHR5cGVkZWYgSGFzaE1h
cDxBdG9tU3RyaW5nSW1wbCosIEF0b21TdHJpbmc+IEV2ZW50SGFuZGxlck5hbWVNYXA7Ci0gICAg
dGVtcGxhdGU8c2l6ZV90IHRhYmxlU2l6ZT4gc3RhdGljIHZvaWQgcG9wdWxhdGVFdmVudEhhbmRs
ZXJOYW1lTWFwKEV2ZW50SGFuZGxlck5hbWVNYXAmLCBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25z
dCAoJnRhYmxlKVt0YWJsZVNpemVdKTsKKyAgICB1c2luZyBFdmVudEhhbmRsZXJOYW1lTWFwID0g
SGFzaE1hcDxBdG9tU3RyaW5nSW1wbCosIEF0b21TdHJpbmc+OwogICAgIHN0YXRpYyBjb25zdCBB
dG9tU3RyaW5nJiBldmVudE5hbWVGb3JFdmVudEhhbmRsZXJBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgRXZlbnRIYW5kbGVyTmFtZU1hcCYpOwogCiBw
cml2YXRlOgpAQCAtMTc1LDkgKzE3NCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGp1c3REaXJl
Y3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJDaGlsZHJlbkNoYW5nZWQoRWxlbWVudCogYmVmb3JlQ2hh
bmdlLCBDaGlsZENoYW5nZTo6VHlwZSk7CiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb25hbGl0
eShOb2RlKiogc3Ryb25nRGlyZWN0aW9uYWxpdHlUZXh0Tm9kZT0gMCkgY29uc3Q7CiAKLSAgICBz
dGF0aWMgdm9pZCBwb3B1bGF0ZUV2ZW50SGFuZGxlck5hbWVNYXAoRXZlbnRIYW5kbGVyTmFtZU1h
cCYsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0IHRhYmxlW10sIHNpemVfdCB0YWJsZVNpemUp
OwotICAgIHN0YXRpYyBFdmVudEhhbmRsZXJOYW1lTWFwIGNyZWF0ZUV2ZW50SGFuZGxlck5hbWVN
YXAoKTsKLQogICAgIGVudW0gY2xhc3MgQWxsb3dQZXJjZW50YWdlIDogYm9vbCB7IE5vLCBZZXMg
fTsKICAgICBlbnVtIGNsYXNzIFVzZUNTU1BYQXNVbml0VHlwZSA6IGJvb2wgeyBObywgWWVzIH07
CiAgICAgZW51bSBjbGFzcyBJc011bHRpTGVuZ3RoIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTE5
MCwxMSArMTg2LDYgQEAgaW5saW5lIEhUTUxFbGVtZW50OjpIVE1MRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQKICAgICBBU1NFUlQodGFnTmFt
ZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwogfQogCi10ZW1wbGF0ZTxzaXplX3QgdGFibGVTaXplPiBp
bmxpbmUgdm9pZCBIVE1MRWxlbWVudDo6cG9wdWxhdGVFdmVudEhhbmRsZXJOYW1lTWFwKEV2ZW50
SGFuZGxlck5hbWVNYXAmIG1hcCwgY29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgKCZ0YWJsZSlb
dGFibGVTaXplXSkKLXsKLSAgICBwb3B1bGF0ZUV2ZW50SGFuZGxlck5hbWVNYXAobWFwLCB0YWJs
ZSwgdGFibGVTaXplKTsKLX0KLQogaW5saW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25zdCBI
VE1MUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3QKIHsKICAgICByZXR1cm4gaXM8SFRNTEVsZW1l
bnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxIVE1MRWxlbWVudD4oKnRoaXMpLmhhc1RhZ05hbWUobmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCmluZGV4IDM1MGY1NTNiYTEyZTdlOWRj
MzZmYzI3YWFkZDk1ZjQyNDQ4OTZhNjUuLjJkZjlmYmZkZWRkZTMxZGM4ZmE0MWJmYmVmZTYzMjUw
MTljYjk4MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCkBAIC0yMSw4ICsyMSw5
IEBACiBbCiAgICAgQ3VzdG9tUHVzaEV2ZW50SGFuZGxlclNjb3BlLAogICAgIEV4cG9ydE1hY3Jv
PVdFQkNPUkVfRVhQT1JULAorICAgIEV4cG9zZWQ9V2luZG93LAorICAgIEdlbmVyYXRlRm9yRWFj
aEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2Jq
ZWN0LAotICAgIEV4cG9zZWQ9V2luZG93CiBdIGludGVyZmFjZSBIVE1MRWxlbWVudCA6IEVsZW1l
bnQgewogICAgIFtDdXN0b21dIGNvbnN0cnVjdG9yKCk7CiAK
</data>
<flag name="commit-queue"
          id="472609"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447067</attachid>
            <date>2021-12-13 14:33:37 -0800</date>
            <delta_ts>2021-12-13 16:41:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234254-20211213143336.patch</filename>
            <type>text/plain</type>
            <size>31903</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2OTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY2ZTY3MzZjZTE5YjUwOTI2NDIyOTg1
ODBhYjFjZjE0YWZlYzZhZDcuLjE1NTBlNGYzNGQ1NWI2NmY5YzEzOTFmNGJkNzNhMTU5MDkxN2Mw
OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMTMgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgZXZlbnQgaGFuZGxl
ciBjb250ZW50IGF0dHJpYnV0ZSBtYXBzIHNvIHRoZXkgYXJlIGVhc2llciB0byBtYWludGFpbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MjU0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvTmV2
ZXJEZXN0cm95ZWQuaDogQWRkIGEgZGVkdWN0aW9uIGd1aWRlIGZvciBOZXZlckRlc3Ryb3llZC4K
KyAgICAgICAgSW4gdGhlIGZ1dHVyZSB3ZSBjYW4gdXNlIHRoaXMgaW5zdGVhZCBvZiBtYWtlTmV2
ZXJEZXN0cm95ZWQgb3Igd3JpdGluZworICAgICAgICBvdXQgdGhlIGVudGlyZSB0ZW1wbGF0ZSBj
bGFzcyB0eXBlIGluY2x1ZGluZyB0ZW1wbGF0ZSBhcmd1bWVudHMuCisKIDIwMjEtMTItMTMgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdyZXNzaW9uKHIyODM1
NjUpIFVuYWJsZSB0byByZXBvcnQgcHJpdmF0ZSBtZXNzYWdlcyBhcyBTcGFtIGluIFR3aXR0ZXIg
YXBwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKaW5kZXggMDEwM2VlNjBjNmM2YzNiYWQyMDkzOWI1Zjg2ZTkxNzc3Yjk1NWI2
NC4uYThlNWYxN2NjMmE4M2M3M2FlYmFjZDVjMWNjZjY0ZTcwMTQ0MmQ3NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDU2IEBACisyMDIxLTEyLTEzICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGV2ZW50IGhhbmRsZXIgY29udGVu
dCBhdHRyaWJ1dGUgbWFwcyBzbyB0aGV5IGFyZSBlYXNpZXIgdG8gbWFpbnRhaW4KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNDI1NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6IERlY2xhcmUg
Zm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUKKyAgICAgICAgYW5kIGZvckVhY2hX
aW5kb3dFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRlIGFzIG5lZWRlZC4KKyAgICAgICAgKEdl
bmVyYXRlSW1wbGVtZW50YXRpb24pOiBDYWxsIEdlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNv
bnRlbnRBdHRyaWJ1dGUKKyAgICAgICAgYXMgbmVlZGVkLgorICAgICAgICAoR2VuZXJhdGVGb3JF
YWNoRXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZSk6IERlZmluZQorICAgICAgICBmb3JFYWNo
RXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZSBvciBmb3JFYWNoV2luZG93RXZlbnRIYW5kbGVy
Q29udGVudEF0dHJpYnV0ZS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmli
dXRlcy5qc29uOiBBZGRlZAorICAgICAgICBHZW5lcmF0ZUZvckVhY2hFdmVudEhhbmRsZXJDb250
ZW50QXR0cmlidXRlIGFuZAorICAgICAgICBHZW5lcmF0ZUZvckVhY2hXaW5kb3dFdmVudEhhbmRs
ZXJDb250ZW50QXR0cmlidXRlLiBFdmVuIHRob3VnaCBlYWNoCisgICAgICAgIGlzIHVzZWQgaW4g
b25seSBvbmUgY2xhc3MsIGl0J3Mgc3RpbGwgYmV0dGVyIHRvIG5vdCBoYXJkLWNvZGUgdGhlIGNs
YXNzIG5hbWVzLgorCisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46IEFkZGVk
IG9uY3VlY2hhbmdlLCBvbnJlamVjdGlvbmhhbmRsZWQsIGFuZAorICAgICAgICBvbnVuaGFuZGxl
ZHJlamVjdGlvbiBldmVuIHRob3VnaCB3ZSBhcmUgbm90IHlldCBpbXBsZW1lbnRpbmcgYW55IG9m
IHRoZW0gaW4KKyAgICAgICAgdGhpcyBiZWhhdmlvci1wcmVzZXJ2aW5nIHBhdGNoLiBUaGV5IG5l
ZWQgdG8gYmUgcHJlc2VudCBzbyB0aGUgYXV0b21hdGljYWxseQorICAgICAgICBnZW5lcmF0ZWQg
Y29kZSBjb21waWxlcy4gQnV0IGFkZGVkIGV4cGxpY2l0IGV4Y2VwdGlvbnMgYXMgbWVudGlvbmVk
IGJlbG93IHRvCisgICAgICAgIG1ha2Ugc3VyZSBubyBjaGFuZ2VzIGFyZSBpbXBsZW1lbnRlZCBp
biB0aGlzIHBhdGNoLCBhbmQgd2lsbCB0YWtlIHRob3NlIGV4Y2VwdGlvbnMKKyAgICAgICAgb3V0
IGxhdGVyIGluIGEgcGF0Y2ggaW50ZW5kZWQgdG8gcHJvZHVjZSBhIHByb2dyZXNzaW9uLCBsaWtl
bHkgd2l0aCBuZXcgdGVzdCBjYXNlcy4KKyAgICAgICAgUmUtc29ydGVkIGFscGhhYmV0aWNhbGx5
LCByYXRoZXIgYW4gYXJiaXRyYXJ5IHNlbWktc29ydGVkIG9yZGVyLgorCisgICAgICAgICogaHRt
bC9IVE1MQm9keUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50
OjpjcmVhdGVXaW5kb3dFdmVudEhhbmRsZXJOYW1lTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6ZXZlbnROYW1lRm9yV2luZG93RXZlbnRIYW5kbGVyQXR0
cmlidXRlKTogVXNlCisgICAgICAgIEpTSFRNTEJvZHlFbGVtZW50Ojpmb3JFYWNoRXZlbnRIYW5k
bGVyQ29udGVudEF0dHJpYnV0ZSB0byBjcmVhdGUgdGhlIG1hcC4KKyAgICAgICAgVXNlIGEgbGFt
YmRhIGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBmdW5jdGlvbiBhbmQgdGFrZSBhZHZhbnRhZ2Ugb2Yg
dGhlCisgICAgICAgIGRlZHVjdGlvbiBndWlkZSBmb3IgTmV2ZXJEZXN0cm95ZWQuIEFkZGVkIGV4
Y2VwdGlvbnMgZm9yIG9ucmVqZWN0aW9uaGFuZGxlZAorICAgICAgICBhbmQgb251bmhhbmRsZWRy
ZWplY3Rpb24sIHdoaWNoIGFyZSBib3RoIGluIHRoZSBJREwgZmlsZSBidXQgd2VyZSBub3QgaGFu
ZGxlZAorICAgICAgICBoZXJlLCBhbG9uZyB3aXRoIGEgRklYTUUgc3VnZ2VzdGluZyB3ZSByZW1v
dmUgdGhlIGV4Y2VwdGlvbnMuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOiBSZW1vdmVk
IGNyZWF0ZVdpbmRvd0V2ZW50SGFuZGxlck5hbWVNYXAuCisgICAgICAgICogaHRtbC9IVE1MQm9k
eUVsZW1lbnQuaWRsOiBBZGRlZCBHZW5lcmF0ZUZvckVhY2hXaW5kb3dFdmVudEhhbmRsZXJDb250
ZW50QXR0cmlidXRlLgorCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRWxlbWVudDo6Y3JlYXRlRXZlbnRIYW5kbGVyTmFtZU1hcCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cG9wdWxhdGVFdmVudEhhbmRsZXJO
YW1lTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpldmVudE5h
bWVGb3JFdmVudEhhbmRsZXJBdHRyaWJ1dGUpOiBVc2UKKyAgICAgICAgSlNIVE1MRWxlbWVudDo6
Zm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUgdG8gY3JlYXRlIHRoZSBtYXAuCisg
ICAgICAgIFVzZSBhIGxhbWJkYSBpbnN0ZWFkIG9mIGEgc2VwYXJhdGUgZnVuY3Rpb24gYW5kIHRh
a2UgYWR2YW50YWdlIG9mIHRoZQorICAgICAgICBkZWR1Y3Rpb24gZ3VpZGUgZm9yIE5ldmVyRGVz
dHJveWVkLiBBZGRlZCBleGNlcHRpb24gZm9yIG9uY3VlY2hhbmdlLAorICAgICAgICB3aGljaCBp
cyBpbiB0aGUgSURMIGZpbGUgYnV0IHdhcyBub3QgaGFuZGxlZCBoZXJlLCBhbmQgZm9yIDE5IG90
aGVyIGF0dHJpYnV0ZXMsCisgICAgICAgIHdoaWNoIGFyZSBub3QgaW4gdGhlIElETCBmaWxlIGJ1
dCB3ZXJlIGhhbmRsZWQgaGVyZSwgYWxvbmcgd2l0aCB0d28gRklYTUVzCisgICAgICAgIHN1Z2dl
c3Rpbmcgd2UgcmVtb3ZlIHRoZSBleGNlcHRpb25zLgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1l
bnQuaDogUmVtb3ZlZCBwb3B1bGF0ZUV2ZW50SGFuZGxlck5hbWVNYXAgYW5kCisgICAgICAgIGNy
ZWF0ZUV2ZW50SGFuZGxlck5hbWVNYXAuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5pZGw6
IEFkZGVkIEdlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUuCisKIDIw
MjEtMTItMTMgIEFsZWphbmRybyBHLiBDYXN0cm8gIDxhbGV4QGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW0dUS10gRml4IEFOR0xFIGNvbXBpbGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9OZXZlckRlc3Ryb3llZC5oIGIvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQuaAppbmRl
eCBmYTA1ZTkzZGYxM2UwYTg2ZTJmOTZmZDAzYzYwNmJhYTZlM2FiNmYyLi5iZWYzN2RmMTAxZWRi
Nzk5ZWQ3NzI0YmJiMDZkYTlmMThkNTBkZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9O
ZXZlckRlc3Ryb3llZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL05ldmVyRGVzdHJveWVkLmgKQEAg
LTE3OSw2ICsxNzksOSBAQCBwcml2YXRlOgogICAgIHR5cGVuYW1lIHN0ZDo6YWxpZ25lZF9zdG9y
YWdlPHNpemVvZihUKSwgc3RkOjphbGlnbm1lbnRfb2Y8VD46OnZhbHVlPjo6dHlwZSBtX3N0b3Jh
Z2U7CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBOZXZlckRlc3Ryb3llZChUKSAtPiBOZXZl
ckRlc3Ryb3llZDxUPjsKKworLy8gRklYTUU6IFJlbW92ZSB0aGlzIGZ1bmN0aW9uLCByZWx5aW5n
IGluc3RlYWQgb24gdGhlIGRlZHVjdGlvbiBndWlkZSBmb3IgTmV2ZXJEZXN0cm95ZWQgYWJvdmUu
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBBY2Nlc3NUcmFpdHM+IGlubGluZSBOZXZl
ckRlc3Ryb3llZDxULCBBY2Nlc3NUcmFpdHM+IG1ha2VOZXZlckRlc3Ryb3llZChUJiYgYXJndW1l
bnQpCiB7CiAgICAgcmV0dXJuIHN0ZDo6Zm9yd2FyZDxUPihhcmd1bWVudCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDI0
YjM1YTMwOGIyYzM4NTY4NjQwM2RhOTcyYzM4MTFkODEzNDllMmYuLmEzNzZlY2E1ZTYwMzJjY2Qz
ODlkNmMyZTc2M2Y0ODRlMDA3MDgxNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00ODcsNyArNDg3LDcgQEAgc3ViIEFk
ZFN0cmluZ2lmaWVyT3BlcmF0aW9uSWZOZWVkZWQKICAgICB9CiB9CiAKLXN1YiBFdmVudEhhbmRs
ZXJBdHRyaWJ1dGVFdmVudE5hbWUKK3N1YiBFdmVudEhhbmRsZXJBdHRyaWJ1dGVTaG9ydEV2ZW50
TmFtZQogewogICAgIG15ICRhdHRyaWJ1dGUgPSBzaGlmdDsKICAgICBteSAkZXZlbnRUeXBlID0g
JGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57SW1wbGVtZW50ZWRBc30gfHwgJGF0dHJp
YnV0ZS0+bmFtZTsKQEAgLTQ5NSw3ICs0OTUsMTMgQEAgc3ViIEV2ZW50SGFuZGxlckF0dHJpYnV0
ZUV2ZW50TmFtZQogICAgICMgUmVtb3ZlIHRoZSAib24iIHByZWZpeC4KICAgICAkZXZlbnRUeXBl
ID0gc3Vic3RyKCRldmVudFR5cGUsIDIpOwogCi0gICAgcmV0dXJuICJldmVudE5hbWVzKCkuJHtl
dmVudFR5cGV9RXZlbnQiOworICAgIHJldHVybiAiJHtldmVudFR5cGV9RXZlbnQiOworfQorCitz
dWIgRXZlbnRIYW5kbGVyQXR0cmlidXRlRXZlbnROYW1lCit7CisgICAgbXkgJGF0dHJpYnV0ZSA9
IHNoaWZ0OworICAgIHJldHVybiAiZXZlbnROYW1lcygpLiIgLiBFdmVudEhhbmRsZXJBdHRyaWJ1
dGVTaG9ydEV2ZW50TmFtZSgkYXR0cmlidXRlKTsKIH0KIAogc3ViIEdldFBhcmVudENsYXNzTmFt
ZQpAQCAtMzAyNywxMyArMzAzMywyMCBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICBpZiAoJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q3VzdG9tUHVzaEV2ZW50SGFuZGxlclNjb3Bl
fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIEpTQzo6SlNTY29wZSogcHVz
aEV2ZW50SGFuZGxlclNjb3BlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTU2NvcGUqKSBj
b25zdDtcblxuIik7CiAgICAgfQotICAgIAorCiAgICAgIyBDb25zdHJ1Y3RvciBvYmplY3QgZ2V0
dGVyCiAgICAgdW5sZXNzICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntMZWdhY3lO
b0ludGVyZmFjZU9iamVjdH0pIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6Vk0mLCBjb25zdCBKU0M6OkpT
R2xvYmFsT2JqZWN0Kik7XG4iKTsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldExlZ2FjeUZhY3RvcnlGdW5jdGlvbihKU0M6OlZNJiwgSlND
OjpKU0dsb2JhbE9iamVjdCopO1xuIikgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57TGVnYWN5RmFjdG9yeUZ1bmN0aW9ufTsKICAgICB9CiAKKyAgICBpZiAoJGludGVyZmFjZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57R2VuZXJhdGVGb3JFYWNoRXZlbnRIYW5kbGVyQ29udGVudEF0
dHJpYnV0ZX0pIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9p
ZCBmb3JFYWNoRXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZShjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
TmFtZSk+Jik7XG5cbiIpOworICAgIH0KKyAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57R2VuZXJhdGVGb3JFYWNoV2luZG93RXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0
ZX0pIHsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAgICBzdGF0aWMgdm9pZCBmb3JF
YWNoV2luZG93RXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZShjb25zdCBGdW5jdGlvbjx2b2lk
KGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
TmFtZSk+Jik7XG5cbiIpOworICAgIH0KKwogICAgIG15ICRudW1DdXN0b21PcGVyYXRpb25zID0g
MDsKICAgICBteSAkbnVtQ3VzdG9tQXR0cmlidXRlcyA9IDA7CiAKQEAgLTQ5NDQsNiArNDk1Nywx
MyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIn1cblxuIik7CiAgICAgfQogCisgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0dlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGV9KSB7Cisg
ICAgICAgIEdlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUoXEBpbXBs
Q29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgImZvckVhY2hFdmVudEhhbmRsZXJDb250
ZW50QXR0cmlidXRlIik7CisgICAgfQorICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntHZW5lcmF0ZUZvckVhY2hXaW5kb3dFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRl
fSkgeworICAgICAgICBHZW5lcmF0ZUZvckVhY2hFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRl
KFxAaW1wbENvbnRlbnQsICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICJmb3JFYWNoV2luZG93RXZl
bnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZSIsICJXaW5kb3dFdmVudEhhbmRsZXIiKTsKKyAgICB9
CisKICAgICBpZiAoJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24pIHsKICAgICAgICAgJGltcGxJbmNs
dWRlc3siPHd0Zi9VUkwuaD4ifSA9IDEgaWYgJGluZGV4ZWRHZXR0ZXJPcGVyYXRpb24tPnR5cGUt
Pm5hbWUgZXEgIkRPTVN0cmluZyI7CiAgICAgICAgIGlmICgkaW50ZXJmYWNlTmFtZSA9fiAvXkhU
TUxcdypDb2xsZWN0aW9uJC8gb3IgJGludGVyZmFjZU5hbWUgZXEgIlJhZGlvTm9kZUxpc3QiKSB7
CkBAIC01MTg0LDYgKzUyMDQsMjYgQEAgc3ViIEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQW5kU2V0
dGVyRGVjbGFyYXRpb24KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIjZW5kaWZcbiIpIGlmICRj
b25kaXRpb25hbFN0cmluZzsKIH0KIAorc3ViIEdlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNv
bnRlbnRBdHRyaWJ1dGUKK3sKKyAgICBteSAoJG91dHB1dEFycmF5LCAkaW50ZXJmYWNlLCAkY2xh
c3NOYW1lLCAkZnVuY3Rpb25OYW1lLCAkZXZlbnRIYW5kbGVyRXh0ZW5kZWRBdHRyaWJ1dGVOYW1l
KSA9IEBfOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJIVE1MTmFtZXMuaCIpOworICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgInZvaWQgJHtjbGFzc05hbWV9Ojoke2Z1bmN0aW9uTmFtZX0oY29uc3Qg
RnVuY3Rpb248dm9pZChjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiBldmVudE5hbWUpPiYgZnVuY3Rpb24pXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICJ7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgc3RhdGljIGNvbnN0ZXhw
ciBzdGQ6OnBhaXI8TGF6eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+KiwgY29u
c3QgQXRvbVN0cmluZyBFdmVudE5hbWVzOjoqPiB0YWJsZVtdID0ge1xuIik7CisgICAgZm9yZWFj
aCBteSAkYXR0cmlidXRlIChAeyRpbnRlcmZhY2UtPmF0dHJpYnV0ZXN9KSB7CisgICAgICAgIGlm
ICgkYXR0cmlidXRlLT50eXBlLT5uYW1lIGVxICJFdmVudEhhbmRsZXIiICYmICghZGVmaW5lZCAk
ZXZlbnRIYW5kbGVyRXh0ZW5kZWRBdHRyaWJ1dGVOYW1lIHx8ICRhdHRyaWJ1dGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyRldmVudEhhbmRsZXJFeHRlbmRlZEF0dHJpYnV0ZU5hbWV9KSkgeworICAg
ICAgICAgICAgbXkgJGF0dHJpYnV0ZU5hbWUgPSAkYXR0cmlidXRlLT5uYW1lOworICAgICAgICAg
ICAgbXkgJGV2ZW50TmFtZSA9IEV2ZW50SGFuZGxlckF0dHJpYnV0ZVNob3J0RXZlbnROYW1lKCRh
dHRyaWJ1dGUpOworICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB7ICZI
VE1MTmFtZXM6OiR7YXR0cmlidXRlTmFtZX1BdHRyLCAmRXZlbnROYW1lczo6JHtldmVudE5hbWV9
IH0sXG4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
fTtcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBmb3IgKGF1dG8mIG5hbWVzIDog
dGFibGUpXG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGZ1bmN0aW9uKG5h
bWVzLmZpcnN0LT5nZXQoKS5sb2NhbE5hbWUoKSwgZXZlbnROYW1lcygpLipuYW1lcy5zZWNvbmQp
O1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAifVxuXG4iKTsKK30KKwogc3ViIEdlbmVy
YXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRpb24KIHsKICAgICBteSAoJG91dHB1dEFycmF5
LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAkYXR0cmlidXRlLCAkYXR0cmlidXRlR2V0dGVyQm9k
eU5hbWUsICRjb25kaXRpb25hbCkgPSBAXzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24KaW5kZXggNDMwOGRlZjk3OGQxZDJjZThjYWNl
ZDdmMDM2Y2VhMGY3NGNkODZkMS4uNmVlYWVmYjE1NTNlMmQyY2JjYmFhODk1Zjg4YWQzZGQwY2E5
ZDc0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRy
aWJ1dGVzLmpzb24KQEAgLTIyNywxNCArMjI3LDIyIEBACiAgICAgICAgICAgICAgICAgInVybCI6
ICJodHRwczovL3dlYmlkbC5zcGVjLndoYXR3Zy5vcmcvI0V4cG9zZWQiCiAgICAgICAgICAgICB9
CiAgICAgICAgIH0sCi0gICAgICAgICJHZW5lcmF0ZUlzUmVhY2hhYmxlIjogeworICAgICAgICAi
R2VuZXJhdGVBZGRPcGFxdWVSb290IjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6
IFsiaW50ZXJmYWNlIl0sCi0gICAgICAgICAgICAidmFsdWVzIjogWyIiLCAiSW1wbCIsICJJbXBs
V2ViR0xSZW5kZXJpbmdDb250ZXh0IiwgIkltcGxDYW52YXNCYXNlIiwgIkltcGxEb2N1bWVudCIs
ICJJbXBsRWxlbWVudFJvb3QiLCAiSW1wbE93bmVyTm9kZVJvb3QiLCAiSW1wbFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQiLCAiUmVhY2hhYmxlRnJvbURPTVdpbmRvdyIsICJSZWFjaGFibGVGcm9tTmF2
aWdhdG9yIl0KKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQogICAgICAgICB9LAotICAgICAg
ICAiR2VuZXJhdGVBZGRPcGFxdWVSb290IjogeworICAgICAgICAiR2VuZXJhdGVGb3JFYWNoRXZl
bnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZSI6IHsKKyAgICAgICAgICAgICJjb250ZXh0c0FsbG93
ZWQiOiBbImludGVyZmFjZSJdLAorICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCisgICAgICAg
IH0sCisgICAgICAgICJHZW5lcmF0ZUZvckVhY2hXaW5kb3dFdmVudEhhbmRsZXJDb250ZW50QXR0
cmlidXRlIjogewogICAgICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0s
CiAgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0KICAgICAgICAgfSwKKyAgICAgICAgIkdlbmVy
YXRlSXNSZWFjaGFibGUiOiB7CisgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRl
cmZhY2UiXSwKKyAgICAgICAgICAgICJ2YWx1ZXMiOiBbIiIsICJJbXBsIiwgIkltcGxXZWJHTFJl
bmRlcmluZ0NvbnRleHQiLCAiSW1wbENhbnZhc0Jhc2UiLCAiSW1wbERvY3VtZW50IiwgIkltcGxF
bGVtZW50Um9vdCIsICJJbXBsT3duZXJOb2RlUm9vdCIsICJJbXBsU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCIsICJSZWFjaGFibGVGcm9tRE9NV2luZG93IiwgIlJlYWNoYWJsZUZyb21OYXZpZ2F0b3Ii
XQorICAgICAgICB9LAogICAgICAgICAiR2xvYmFsIjogewogICAgICAgICAgICAgImNvbnRleHRz
QWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCiAgICAgICAgICAgICAidmFsdWVzIjogWyIqIl0sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbiBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCmluZGV4IDZkZWEzOGVmMDk0
NmUzZWVkODNlZmQwYWU2MTRlZTlkMzMxNDZhNjYuLmE2OTI1MDExMTljODA2ODlkOGRmOGE1MGNi
YTJlNjZhMjY4MjY1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJp
YnV0ZU5hbWVzLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVz
LmluCkBAIC00LDggKzQsOCBAQCBuYW1lc3BhY2VVUkk9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwiCiBhdHRyc051bGxOYW1lc3BhY2UKIAogYWJicgotYWNjZXB0X2NoYXJzZXQKIGFjY2Vw
dAorYWNjZXB0X2NoYXJzZXQKIGFjY2Vzc2tleQogYWN0aW9uCiBhbGlnbgpAQCAtNzEsNyArNzEs
OSBAQCBhc3luYwogYXR0cmlidXRpb25kZXN0aW5hdGlvbgogYXR0cmlidXRpb25zb3VyY2VpZAog
YXR0cmlidXRpb25zb3VyY2Vub25jZQorYXV0b2NhcGl0YWxpemUKIGF1dG9jb21wbGV0ZQorYXV0
b2NvcnJlY3QKIGF1dG9mb2N1cwogYXV0b3BpY3R1cmVpbnBpY3R1cmUKIGF1dG9wbGF5CkBAIC04
NCwxNCArODYsMTQgQEAgYmdwcm9wZXJ0aWVzCiBib3JkZXIKIGJvcmRlcmNvbG9yCiBjYXB0dXJl
CitjZWxsYm9yZGVyCiBjZWxscGFkZGluZwogY2VsbHNwYWNpbmcKLWNoYXIKIGNoYWxsZW5nZQor
Y2hhcgogY2hhcm9mZgogY2hhcnNldAogY2hlY2tlZAotY2VsbGJvcmRlcgogY2l0ZQogY2xhc3MK
IGNsYXNzaWQKQEAgLTEyNSw3ICsxMjcsNiBAQCBkaXNwb3NpdGlvbgogZG93bmxvYWQKIGRyYWdn
YWJsZQogZHJvcHpvbmUKLXdlYmtpdGRyb3B6b25lCiBlbmN0eXBlCiBlbmQKIGVudGVya2V5aGlu
dApAQCAtMTc4LDIyICsxNzksMjEgQEAgbGlzdAogbG9hZGluZwogbG9uZ2Rlc2MKIGxvb3AKLWxv
dwotcGxheWNvdW50CiBsb29wZW5kCiBsb29wc3RhcnQKK2xvdwogbG93c3JjCiBtYW5pZmVzdAog
bWFyZ2luaGVpZ2h0CiBtYXJnaW53aWR0aAogbWF4CiBtYXhsZW5ndGgKLW1pbmxlbmd0aAogbWF5
c2NyaXB0CiBtZWRpYQogbWVkaWFncm91cAogbWV0aG9kCiBtaW4KK21pbmxlbmd0aAogbXVsdGlw
bGUKIG11dGVkCiBuYW1lCkBAIC0yMDcsMTAgKzIwNywxMCBAQCBub3dyYXAKIG9iamVjdAogb25h
Ym9ydAogb25hZnRlcnByaW50Ci1vbmFuaW1hdGlvbnN0YXJ0Ci1vbmFuaW1hdGlvbml0ZXJhdGlv
bgotb25hbmltYXRpb25lbmQKIG9uYW5pbWF0aW9uY2FuY2VsCitvbmFuaW1hdGlvbmVuZAorb25h
bmltYXRpb25pdGVyYXRpb24KK29uYW5pbWF0aW9uc3RhcnQKIG9uYXV0b2NvbXBsZXRlCiBvbmF1
dG9jb21wbGV0ZWVycm9yCiBvbmJlZm9yZWNvcHkKQEAgLTIyOSw2ICsyMjksNyBAQCBvbmNsaWNr
CiBvbmNsb3NlCiBvbmNvbnRleHRtZW51CiBvbmNvcHkKK29uY3VlY2hhbmdlCiBvbmN1dAogb25k
YmxjbGljawogb25kZXZpY2VjaGFuZ2UKQEAgLTI0NywxNiArMjQ4LDE2IEBAIG9uZm9jdXMKIG9u
Zm9jdXNpbgogb25mb2N1c291dAogb25mb3JtZGF0YQorb25nZXN0dXJlY2hhbmdlCitvbmdlc3R1
cmVlbmQKK29uZ2VzdHVyZXN0YXJ0CitvbmdvdHBvaW50ZXJjYXB0dXJlCiBvbmhhc2hjaGFuZ2UK
IG9uaW5wdXQKIG9uaW52YWxpZAogb25rZXlkb3duCiBvbmtleXByZXNzCiBvbmtleXVwCi1vbmdl
c3R1cmVzdGFydAotb25nZXN0dXJlY2hhbmdlCi1vbmdlc3R1cmVlbmQKLW9uZ290cG9pbnRlcmNh
cHR1cmUKIG9ubGFuZ3VhZ2VjaGFuZ2UKIG9ubG9hZAogb25sb2FkZWRkYXRhCkBAIC0yNzIsOCAr
MjczLDggQEAgb25tb3VzZW91dAogb25tb3VzZW92ZXIKIG9ubW91c2V1cAogb25tb3VzZXdoZWVs
Ci1vbm9ubGluZQogb25vZmZsaW5lCitvbm9ubGluZQogb25vcmllbnRhdGlvbmNoYW5nZQogb25w
YWdlaGlkZQogb25wYWdlc2hvdwpAQCAtMjgxLDE3ICsyODIsMTggQEAgb25wYXN0ZQogb25wYXVz
ZQogb25wbGF5CiBvbnBsYXlpbmcKLW9ucG9pbnRlcmRvd24KLW9ucG9pbnRlcm1vdmUKLW9ucG9p
bnRlcnVwCiBvbnBvaW50ZXJjYW5jZWwKLW9ucG9pbnRlcm92ZXIKLW9ucG9pbnRlcm91dAorb25w
b2ludGVyZG93bgogb25wb2ludGVyZW50ZXIKIG9ucG9pbnRlcmxlYXZlCitvbnBvaW50ZXJtb3Zl
CitvbnBvaW50ZXJvdXQKK29ucG9pbnRlcm92ZXIKK29ucG9pbnRlcnVwCiBvbnBvcHN0YXRlCiBv
bnByb2dyZXNzCiBvbnJhdGVjaGFuZ2UKK29ucmVqZWN0aW9uaGFuZGxlZAogb25yZXNldAogb25y
ZXNpemUKIG9uc2Nyb2xsCkBAIC0zMDAsMzIgKzMwMiwzMyBAQCBvbnNlY3VyaXR5cG9saWN5dmlv
bGF0aW9uCiBvbnNlZWtlZAogb25zZWVraW5nCiBvbnNlbGVjdAotb25zZWxlY3RzdGFydAogb25z
ZWxlY3Rpb25jaGFuZ2UKK29uc2VsZWN0c3RhcnQKIG9uc2xvdGNoYW5nZQotb253aGVlbAogb25z
dGFsbGVkCiBvbnN0b3JhZ2UKLW9uc3VzcGVuZAogb25zdWJtaXQKK29uc3VzcGVuZAogb250aW1l
dXBkYXRlCiBvbnRvZ2dsZQorb250b3VjaGNhbmNlbAorb250b3VjaGVuZAogb250b3VjaGZvcmNl
Y2hhbmdlCi1vbnRvdWNoc3RhcnQKIG9udG91Y2htb3ZlCi1vbnRvdWNoZW5kCi1vbnRvdWNoY2Fu
Y2VsCitvbnRvdWNoc3RhcnQKIG9udHJhbnNpdGlvbmNhbmNlbAogb250cmFuc2l0aW9uZW5kCiBv
bnRyYW5zaXRpb25ydW4KIG9udHJhbnNpdGlvbnN0YXJ0CitvbnVuaGFuZGxlZHJlamVjdGlvbgog
b251bmxvYWQKIG9udm9sdW1lY2hhbmdlCiBvbndhaXRpbmcKLW9ud2Via2l0YW5pbWF0aW9uc3Rh
cnQKLW9ud2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uCiBvbndlYmtpdGFuaW1hdGlvbmVuZAorb253
ZWJraXRhbmltYXRpb25pdGVyYXRpb24KK29ud2Via2l0YW5pbWF0aW9uc3RhcnQKIG9ud2Via2l0
YmVnaW5mdWxsc2NyZWVuCitvbndlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3Nj
aGFuZ2VkCiBvbndlYmtpdGVuZGZ1bGxzY3JlZW4KIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZQog
b253ZWJraXRmdWxsc2NyZWVuZXJyb3IKQEAgLTMzNywxOSArMzQwLDIzIEBAIG9ud2Via2l0bW91
c2Vmb3JjZWRvd24KIG9ud2Via2l0bW91c2Vmb3JjZXVwCiBvbndlYmtpdG1vdXNlZm9yY2V3aWxs
YmVnaW4KIG9ud2Via2l0bmVlZGtleQorb253ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0
eWNoYW5nZWQKK29ud2Via2l0cHJlc2VudGF0aW9ubW9kZWNoYW5nZWQKIG9ud2Via2l0c291cmNl
Y2xvc2UKIG9ud2Via2l0c291cmNlZW5kZWQKIG9ud2Via2l0c291cmNlb3Blbgogb253ZWJraXR0
cmFuc2l0aW9uZW5kCitvbndoZWVsCiBvcGVuCiBvcHRpbXVtCiBwYXJ0CiBwYXR0ZXJuCitwaW5n
CiBwbGFjZWhvbGRlcgorcGxheWNvdW50CiBwbGF5c2lubGluZQogcGx1Z2luc3BhZ2UKIHBsdWdp
bnVybAotcGluZwogcG9zdGVyCiBwcmVjaXNpb24KIHByZWxvYWQKQEAgLTM4NSwxMyArMzkyLDEx
IEBAIHNsb3QKIHNvcnRhYmxlCiBzb3J0ZGlyZWN0aW9uCiBzcGFuCi14LXdlYmtpdC1zcGVlY2gK
LXgtd2Via2l0LWdyYW1tYXIKIHNwZWxsY2hlY2sKIHNyYwotc3Jjc2V0CiBzcmNkb2MKIHNyY2xh
bmcKK3NyY3NldAogc3RhbmRieQogc3RhcnQKIHN0ZXAKQEAgLTQxNiwyNyArNDIxLDIyIEBAIHZh
bHVldHlwZQogdmVyc2lvbgogdmxpbmsKIHZzcGFjZQord2Via2l0LXBsYXlzaW5saW5lCiB3ZWJr
aXRhbGxvd2Z1bGxzY3JlZW4KK3dlYmtpdGF0dGFjaG1lbnRibG9idXJsCiB3ZWJraXRhdHRhY2ht
ZW50aWQKIHdlYmtpdGF0dGFjaG1lbnRwYXRoCi13ZWJraXRhdHRhY2htZW50YmxvYnVybAogd2Vi
a2l0ZGlyZWN0b3J5Cit3ZWJraXRkcm9wem9uZQogd2lkdGgKIHdyYXAKLQotYXV0b2NvcnJlY3QK
LWF1dG9jYXBpdGFsaXplCi1vbndlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3Nj
aGFuZ2VkCi1vbndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZAotb253ZWJr
aXRwcmVzZW50YXRpb25tb2RlY2hhbmdlZAoteC13ZWJraXQtaW1hZ2VtZW51Ci13ZWJraXQtcGxh
eXNpbmxpbmUKLXgtd2Via2l0LWFpcnBsYXkKLXgtd2Via2l0LXdpcmVsZXNzdmlkZW9wbGF5YmFj
a2Rpc2FibGVkCi14LWl0dW5lcy1pbmhlcml0LXVyaS1xdWVyeS1jb21wb25lbnQKLQogeC1hcHBs
ZS1kYXRhLWRldGVjdG9ycwoteC1hcHBsZS1kYXRhLWRldGVjdG9ycy10eXBlCiB4LWFwcGxlLWRh
dGEtZGV0ZWN0b3JzLXJlc3VsdAotCit4LWFwcGxlLWRhdGEtZGV0ZWN0b3JzLXR5cGUKIHgtYXBw
bGUtcGRmLWFubm90YXRpb24KK3gtaXR1bmVzLWluaGVyaXQtdXJpLXF1ZXJ5LWNvbXBvbmVudAor
eC13ZWJraXQtYWlycGxheQoreC13ZWJraXQtZ3JhbW1hcgoreC13ZWJraXQtaW1hZ2VtZW51Cit4
LXdlYmtpdC1zcGVlY2gKK3gtd2Via2l0LXdpcmVsZXNzdmlkZW9wbGF5YmFja2Rpc2FibGVkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKaW5kZXggZWZmM2M2MDc0NTk4MDFh
MGZhY2U2N2ZkYTFhNmYxNzNiYTg1MTE5NS4uN2U3ZTJmZGUwMzgzZTgyZDIyOWQ5MTVjZmMxMjJk
ZDc1NTcxOTg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNwcApAQCAt
Myw3ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlz
dG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMCBTaW1vbiBIYXVzbWFubiAoaGF1c21h
bm5Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJA
a2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzUsNiArMzUsNyBAQAogI2lu
Y2x1ZGUgIkhUTUxJRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIkpTSFRNTEJvZHlFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvY0lu
bGluZXMuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KQEAgLTk2LDQ2ICs5Nywx
OSBAQCB2b2lkIEhUTUxCb2R5RWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZQogICAgICAgICBIVE1MRWxlbWVudDo6Y29sbGVj
dFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0K
IAotSFRNTEVsZW1lbnQ6OkV2ZW50SGFuZGxlck5hbWVNYXAgSFRNTEJvZHlFbGVtZW50OjpjcmVh
dGVXaW5kb3dFdmVudEhhbmRsZXJOYW1lTWFwKCkKLXsKLSAgICBzdGF0aWMgY29uc3QgUXVhbGlm
aWVkTmFtZSogY29uc3QgdGFibGVbXSA9IHsKLSAgICAgICAgJm9uYWZ0ZXJwcmludEF0dHIuZ2V0
KCksCi0gICAgICAgICZvbmJlZm9yZXByaW50QXR0ci5nZXQoKSwKLSAgICAgICAgJm9uYmVmb3Jl
dW5sb2FkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uYmx1ckF0dHIuZ2V0KCksCi0gICAgICAgICZv
bmVycm9yQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZm9jdXNBdHRyLmdldCgpLAotICAgICAgICAm
b25mb2N1c2luQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZm9jdXNvdXRBdHRyLmdldCgpLAotICAg
ICAgICAmb25oYXNoY2hhbmdlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ubGFuZ3VhZ2VjaGFuZ2VB
dHRyLmdldCgpLAotICAgICAgICAmb25sb2FkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ubWVzc2Fn
ZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbm9mZmxpbmVBdHRyLmdldCgpLAotICAgICAgICAmb25v
bmxpbmVBdHRyLmdldCgpLAotICAgICAgICAmb25vcmllbnRhdGlvbmNoYW5nZUF0dHIuZ2V0KCks
Ci0gICAgICAgICZvbnBhZ2VoaWRlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ucGFnZXNob3dBdHRy
LmdldCgpLAotICAgICAgICAmb25wb3BzdGF0ZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnJlc2l6
ZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnNjcm9sbEF0dHIuZ2V0KCksCi0gICAgICAgICZvbnN0
b3JhZ2VBdHRyLmdldCgpLAotICAgICAgICAmb251bmxvYWRBdHRyLmdldCgpLAotICAgICAgICAm
b253ZWJraXRtb3VzZWZvcmNlY2hhbmdlZEF0dHIuZ2V0KCksCi0gICAgICAgICZvbndlYmtpdG1v
dXNlZm9yY2Vkb3duQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ud2Via2l0bW91c2Vmb3JjZXVwQXR0
ci5nZXQoKSwKLSAgICAgICAgJm9ud2Via2l0bW91c2Vmb3JjZXdpbGxiZWdpbkF0dHIuZ2V0KCks
Ci0gICAgfTsKLQotICAgIEV2ZW50SGFuZGxlck5hbWVNYXAgbWFwOwotICAgIHBvcHVsYXRlRXZl
bnRIYW5kbGVyTmFtZU1hcChtYXAsIHRhYmxlKTsKLSAgICByZXR1cm4gbWFwOwotfQotCiBjb25z
dCBBdG9tU3RyaW5nJiBIVE1MQm9keUVsZW1lbnQ6OmV2ZW50TmFtZUZvcldpbmRvd0V2ZW50SGFu
ZGxlckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQogewotICAg
IHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFdmVudEhhbmRsZXJOYW1lTWFwPiBtYXAgPSBjcmVhdGVX
aW5kb3dFdmVudEhhbmRsZXJOYW1lTWFwKCk7Ci0gICAgcmV0dXJuIGV2ZW50TmFtZUZvckV2ZW50
SGFuZGxlckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBtYXAuZ2V0KCkpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZCBtYXAgPSBbXSB7CisgICAgICAgIEV2ZW50SGFuZGxlck5hbWVNYXAgbWFw
OworICAgICAgICBKU0hUTUxCb2R5RWxlbWVudDo6Zm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRB
dHRyaWJ1dGUoWyZdIChjb25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiBldmVudE5hbWUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2Ug
c3BlY2lhbCBjYXNlcy4gVGhlc2UgaGF2ZSBoYXMgYW4gW1dpbmRvd0V2ZW50SGFuZGxlcl0gbGlu
ZSBpbiB0aGUgSURMIGJ1dCB3ZXJlIG5vdCBpbiB0aGlzIG1hcCBiZWZvcmUsIHNvIHRoaXMgcHJl
c2VydmVzIGJlaGF2aW9yLgorICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0gb25yZWpl
Y3Rpb25oYW5kbGVkQXR0ci5nZXQoKS5sb2NhbE5hbWUoKSB8fCBhdHRyaWJ1dGVOYW1lID09IG9u
dW5oYW5kbGVkcmVqZWN0aW9uQXR0ci5nZXQoKS5sb2NhbE5hbWUoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBtYXAuYWRkKGF0dHJpYnV0ZU5hbWUuaW1wbCgpLCBldmVu
dE5hbWUpOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIG1hcDsKKyAgICB9KCk7CisgICAg
cmV0dXJuIGV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBt
YXApOwogfQogCiB2b2lkIEhUTUxCb2R5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MQm9keUVsZW1lbnQuaAppbmRleCBlYTc4OTgyOWYxNDYyNzY5YzBkMjliMjFkYWY2MmUw
Zjc0NDUyYTNmLi4zNWYxMTM2ZjdiOWRiNTA3M2M1NTkxMDVlYzYzY2ZjYzc1MWZlNTU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmgKQEAgLTUxLDggKzUxLDYgQEAgcHJpdmF0
ZToKICAgICBib29sIHN1cHBvcnRzRm9jdXMoKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgYWRk
U3VicmVzb3VyY2VBdHRyaWJ1dGVVUkxzKExpc3RIYXNoU2V0PFVSTD4mKSBjb25zdCBmaW5hbDsK
LQotICAgIHN0YXRpYyBFdmVudEhhbmRsZXJOYW1lTWFwIGNyZWF0ZVdpbmRvd0V2ZW50SGFuZGxl
ck5hbWVNYXAoKTsKIH07CiAKIH0gLy9uYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJv
ZHlFbGVtZW50LmlkbAppbmRleCA0ZTk4MWE2NGY4YWIyYTllZTI4ZTczYjgyNTVmM2NjODVkNGY1
MWIwLi45YmViODU1MDk2YjJiMzIwMjY4MDNhNWQ2NzEwMmFjZGEyZjg0NTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaWRsCkBAIC0xOSw3ICsxOSw4IEBACiAgKi8KIAog
WwotICAgIEV4cG9zZWQ9V2luZG93CisgICAgRXhwb3NlZD1XaW5kb3csCisgICAgR2VuZXJhdGVG
b3JFYWNoV2luZG93RXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZSwKIF0gaW50ZXJmYWNlIEhU
TUxCb2R5RWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVk
LCBSZWZsZWN0XSBhdHRyaWJ1dGUgW0xlZ2FjeU51bGxUb0VtcHR5U3RyaW5nXSBET01TdHJpbmcg
YUxpbms7CiAgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgUmVmbGVjdF0gYXR0cmlidXRlIERP
TVN0cmluZyBiYWNrZ3JvdW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCBm
NTA3MjM1NDQxM2IwYzJlMTY5NTVkYWZjMTJlMWQyOTQ4N2Q2OWVmLi5jZjY3ZGM1NDM0NDNmMTRk
OWI1NzM5M2Y0ZTNmNjk1NjgwMmE4M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAo
a25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQog
ICogQ29weXJpZ2h0IChDKSAyMDExIE1vdG9yb2xhIE1vYmlsaXR5LiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJJ
bWFnZU92ZXJsYXkuaCIKKyNpbmNsdWRlICJKU0hUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAiTWVk
aWFDb250cm9sc0hvc3QuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAi
UmVuZGVyRWxlbWVudC5oIgpAQCAtMjQwLDE2NyArMjQxLDYgQEAgdm9pZCBIVE1MRWxlbWVudDo6
Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmEKICAgICAgICAgU3R5bGVkRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNG
b3JBdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0KIAotSFRNTEVsZW1lbnQ6OkV2ZW50
SGFuZGxlck5hbWVNYXAgSFRNTEVsZW1lbnQ6OmNyZWF0ZUV2ZW50SGFuZGxlck5hbWVNYXAoKQot
ewotICAgIEV2ZW50SGFuZGxlck5hbWVNYXAgbWFwOwotCi0gICAgc3RhdGljIGNvbnN0IFF1YWxp
ZmllZE5hbWUqIGNvbnN0IHRhYmxlW10gPSB7Ci0gICAgICAgICZvbmFib3J0QXR0ci5nZXQoKSwK
LSAgICAgICAgJm9uYW5pbWF0aW9uZW5kQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uYW5pbWF0aW9u
aXRlcmF0aW9uQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uYW5pbWF0aW9uc3RhcnRBdHRyLmdldCgp
LAotICAgICAgICAmb25hbmltYXRpb25jYW5jZWxBdHRyLmdldCgpLAotICAgICAgICAmb25hdXRv
Y29tcGxldGVBdHRyLmdldCgpLAotICAgICAgICAmb25hdXRvY29tcGxldGVlcnJvckF0dHIuZ2V0
KCksCi0gICAgICAgICZvbmJlZm9yZWNvcHlBdHRyLmdldCgpLAotICAgICAgICAmb25iZWZvcmVj
dXRBdHRyLmdldCgpLAotICAgICAgICAmb25iZWZvcmVpbnB1dEF0dHIuZ2V0KCksCi0gICAgICAg
ICZvbmJlZm9yZWxvYWRBdHRyLmdldCgpLAotICAgICAgICAmb25iZWZvcmVwYXN0ZUF0dHIuZ2V0
KCksCi0gICAgICAgICZvbmJsdXJBdHRyLmdldCgpLAotICAgICAgICAmb25jYW5jZWxBdHRyLmdl
dCgpLAotICAgICAgICAmb25jYW5wbGF5QXR0ci5nZXQoKSwKLSAgICAgICAgJm9uY2FucGxheXRo
cm91Z2hBdHRyLmdldCgpLAotICAgICAgICAmb25jaGFuZ2VBdHRyLmdldCgpLAotICAgICAgICAm
b25jbGlja0F0dHIuZ2V0KCksCi0gICAgICAgICZvbmNsb3NlQXR0ci5nZXQoKSwKLSAgICAgICAg
Jm9uY29udGV4dG1lbnVBdHRyLmdldCgpLAotICAgICAgICAmb25jb3B5QXR0ci5nZXQoKSwKLSAg
ICAgICAgJm9uY3V0QXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZGJsY2xpY2tBdHRyLmdldCgpLAot
ICAgICAgICAmb25kcmFnQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZHJhZ2VuZEF0dHIuZ2V0KCks
Ci0gICAgICAgICZvbmRyYWdlbnRlckF0dHIuZ2V0KCksCi0gICAgICAgICZvbmRyYWdsZWF2ZUF0
dHIuZ2V0KCksCi0gICAgICAgICZvbmRyYWdvdmVyQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZHJh
Z3N0YXJ0QXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZHJvcEF0dHIuZ2V0KCksCi0gICAgICAgICZv
bmR1cmF0aW9uY2hhbmdlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZW1wdGllZEF0dHIuZ2V0KCks
Ci0gICAgICAgICZvbmVuZGVkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZXJyb3JBdHRyLmdldCgp
LAotICAgICAgICAmb25mb2N1c0F0dHIuZ2V0KCksCi0gICAgICAgICZvbmZvY3VzaW5BdHRyLmdl
dCgpLAotICAgICAgICAmb25mb2N1c291dEF0dHIuZ2V0KCksCi0gICAgICAgICZvbmZvcm1kYXRh
QXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZ2VzdHVyZWNoYW5nZUF0dHIuZ2V0KCksCi0gICAgICAg
ICZvbmdlc3R1cmVlbmRBdHRyLmdldCgpLAotICAgICAgICAmb25nZXN0dXJlc3RhcnRBdHRyLmdl
dCgpLAotICAgICAgICAmb25nb3Rwb2ludGVyY2FwdHVyZUF0dHIuZ2V0KCksCi0gICAgICAgICZv
bmlucHV0QXR0ci5nZXQoKSwKLSAgICAgICAgJm9uaW52YWxpZEF0dHIuZ2V0KCksCi0gICAgICAg
ICZvbmtleWRvd25BdHRyLmdldCgpLAotICAgICAgICAmb25rZXlwcmVzc0F0dHIuZ2V0KCksCi0g
ICAgICAgICZvbmtleXVwQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ubG9hZEF0dHIuZ2V0KCksCi0g
ICAgICAgICZvbmxvYWRlZGRhdGFBdHRyLmdldCgpLAotICAgICAgICAmb25sb2FkZWRtZXRhZGF0
YUF0dHIuZ2V0KCksCi0gICAgICAgICZvbmxvYWRzdGFydEF0dHIuZ2V0KCksCi0gICAgICAgICZv
bmxvc3Rwb2ludGVyY2FwdHVyZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbm1vdXNlZG93bkF0dHIu
Z2V0KCksCi0gICAgICAgICZvbm1vdXNlZW50ZXJBdHRyLmdldCgpLAotICAgICAgICAmb25tb3Vz
ZWxlYXZlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ubW91c2Vtb3ZlQXR0ci5nZXQoKSwKLSAgICAg
ICAgJm9ubW91c2VvdXRBdHRyLmdldCgpLAotICAgICAgICAmb25tb3VzZW92ZXJBdHRyLmdldCgp
LAotICAgICAgICAmb25tb3VzZXVwQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ubW91c2V3aGVlbEF0
dHIuZ2V0KCksCi0gICAgICAgICZvbnBhc3RlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ucGF1c2VB
dHRyLmdldCgpLAotICAgICAgICAmb25wbGF5QXR0ci5nZXQoKSwKLSAgICAgICAgJm9ucGxheWlu
Z0F0dHIuZ2V0KCksCi0gICAgICAgICZvbnBvaW50ZXJkb3duQXR0ci5nZXQoKSwKLSAgICAgICAg
Jm9ucG9pbnRlcm1vdmVBdHRyLmdldCgpLAotICAgICAgICAmb25wb2ludGVydXBBdHRyLmdldCgp
LAotICAgICAgICAmb25wb2ludGVyY2FuY2VsQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ucG9pbnRl
cm92ZXJBdHRyLmdldCgpLAotICAgICAgICAmb25wb2ludGVyb3V0QXR0ci5nZXQoKSwKLSAgICAg
ICAgJm9ucG9pbnRlcmVudGVyQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ucG9pbnRlcmxlYXZlQXR0
ci5nZXQoKSwKLSAgICAgICAgJm9ucHJvZ3Jlc3NBdHRyLmdldCgpLAotICAgICAgICAmb25yYXRl
Y2hhbmdlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ucmVzZXRBdHRyLmdldCgpLAotICAgICAgICAm
b25yZXNpemVBdHRyLmdldCgpLAotICAgICAgICAmb25zY3JvbGxBdHRyLmdldCgpLAotICAgICAg
ICAmb25zZWFyY2hBdHRyLmdldCgpLAotICAgICAgICAmb25zZWN1cml0eXBvbGljeXZpb2xhdGlv
bkF0dHIuZ2V0KCksCi0gICAgICAgICZvbnNlZWtlZEF0dHIuZ2V0KCksCi0gICAgICAgICZvbnNl
ZWtpbmdBdHRyLmdldCgpLAotICAgICAgICAmb25zZWxlY3RBdHRyLmdldCgpLAotICAgICAgICAm
b25zZWxlY3Rpb25jaGFuZ2VBdHRyLmdldCgpLAotICAgICAgICAmb25zZWxlY3RzdGFydEF0dHIu
Z2V0KCksCi0gICAgICAgICZvbnNsb3RjaGFuZ2VBdHRyLmdldCgpLAotICAgICAgICAmb25zdGFs
bGVkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uc3VibWl0QXR0ci5nZXQoKSwKLSAgICAgICAgJm9u
c3VzcGVuZEF0dHIuZ2V0KCksCi0gICAgICAgICZvbnRpbWV1cGRhdGVBdHRyLmdldCgpLAotICAg
ICAgICAmb250b2dnbGVBdHRyLmdldCgpLAotICAgICAgICAmb250b3VjaGNhbmNlbEF0dHIuZ2V0
KCksCi0gICAgICAgICZvbnRvdWNoZW5kQXR0ci5nZXQoKSwKLSAgICAgICAgJm9udG91Y2hmb3Jj
ZWNoYW5nZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnRvdWNobW92ZUF0dHIuZ2V0KCksCi0gICAg
ICAgICZvbnRvdWNoc3RhcnRBdHRyLmdldCgpLAotICAgICAgICAmb250cmFuc2l0aW9uY2FuY2Vs
QXR0ci5nZXQoKSwKLSAgICAgICAgJm9udHJhbnNpdGlvbmVuZEF0dHIuZ2V0KCksCi0gICAgICAg
ICZvbnRyYW5zaXRpb25ydW5BdHRyLmdldCgpLAotICAgICAgICAmb250cmFuc2l0aW9uc3RhcnRB
dHRyLmdldCgpLAotICAgICAgICAmb252b2x1bWVjaGFuZ2VBdHRyLmdldCgpLAotICAgICAgICAm
b253YWl0aW5nQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ud2Via2l0YmVnaW5mdWxsc2NyZWVuQXR0
ci5nZXQoKSwKLSAgICAgICAgJm9ud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3aXJlbGVz
c2NoYW5nZWRBdHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRlbmRmdWxsc2NyZWVuQXR0ci5n
ZXQoKSwKLSAgICAgICAgJm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUF0dHIuZ2V0KCksCi0gICAg
ICAgICZvbndlYmtpdGZ1bGxzY3JlZW5lcnJvckF0dHIuZ2V0KCksCi0gICAgICAgICZvbndlYmtp
dGtleWFkZGVkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ud2Via2l0a2V5ZXJyb3JBdHRyLmdldCgp
LAotICAgICAgICAmb253ZWJraXRrZXltZXNzYWdlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ud2Vi
a2l0bW91c2Vmb3JjZWNoYW5nZWRBdHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRtb3VzZWZv
cmNlZG93bkF0dHIuZ2V0KCksCi0gICAgICAgICZvbndlYmtpdG1vdXNlZm9yY2V3aWxsYmVnaW5B
dHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRtb3VzZWZvcmNldXBBdHRyLmdldCgpLAotICAg
ICAgICAmb253ZWJraXRuZWVka2V5QXR0ci5nZXQoKSwKLSAgICAgICAgJm9ud2Via2l0cGxheWJh
Y2t0YXJnZXRhdmFpbGFiaWxpdHljaGFuZ2VkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ud2Via2l0
cHJlc2VudGF0aW9ubW9kZWNoYW5nZWRBdHRyLmdldCgpLAotICAgICAgICAmb253aGVlbEF0dHIu
Z2V0KCksCi0gICAgfTsKLQotICAgIHBvcHVsYXRlRXZlbnRIYW5kbGVyTmFtZU1hcChtYXAsIHRh
YmxlKTsKLQotICAgIHN0cnVjdCBVbnVzdWFsTWFwcGluZyB7Ci0gICAgICAgIGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWU7Ci0gICAgICAgIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
TmFtZTsKLSAgICB9OwotCi0gICAgY29uc3QgVW51c3VhbE1hcHBpbmcgdW51c3VhbFBhaXJzVGFi
bGVbXSA9IHsKLSAgICAgICAgeyBvbndlYmtpdGFuaW1hdGlvbmVuZEF0dHIsIGV2ZW50TmFtZXMo
KS53ZWJraXRBbmltYXRpb25FbmRFdmVudCB9LAotICAgICAgICB7IG9ud2Via2l0YW5pbWF0aW9u
aXRlcmF0aW9uQXR0ciwgZXZlbnROYW1lcygpLndlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkV2ZW50
IH0sCi0gICAgICAgIHsgb253ZWJraXRhbmltYXRpb25zdGFydEF0dHIsIGV2ZW50TmFtZXMoKS53
ZWJraXRBbmltYXRpb25TdGFydEV2ZW50IH0sCi0gICAgICAgIHsgb253ZWJraXR0cmFuc2l0aW9u
ZW5kQXR0ciwgZXZlbnROYW1lcygpLndlYmtpdFRyYW5zaXRpb25FbmRFdmVudCB9LAotICAgIH07
Ci0KLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogdW51c3VhbFBhaXJzVGFibGUpCi0gICAgICAgIG1h
cC5hZGQoZW50cnkuYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCksIGVudHJ5LmV2ZW50
TmFtZSk7Ci0KLSAgICByZXR1cm4gbWFwOwotfQotCi12b2lkIEhUTUxFbGVtZW50Ojpwb3B1bGF0
ZUV2ZW50SGFuZGxlck5hbWVNYXAoRXZlbnRIYW5kbGVyTmFtZU1hcCYgbWFwLCBjb25zdCBRdWFs
aWZpZWROYW1lKiBjb25zdCB0YWJsZVtdLCBzaXplX3QgdGFibGVTaXplKQotewotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgdGFibGVTaXplOyArK2kpIHsKLSAgICAgICAgYXV0byogZW50cnkg
PSB0YWJsZVtpXTsKLQotICAgICAgICAvLyBGSVhNRTogV291bGQgYmUgbmljZSB0byBjaGVjayB0
aGVzZSBhZ2FpbnN0IHRoZSBhY3R1YWwgZXZlbnQgbmFtZXMgaW4gZXZlbnROYW1lcygpLgotICAg
ICAgICAvLyBOb3Qgb2J2aW91cyBob3cgdG8gZG8gdGhhdCBzaW1wbHksIHRob3VnaC4KLSAgICAg
ICAgYXV0byYgYXR0cmlidXRlTmFtZSA9IGVudHJ5LT5sb2NhbE5hbWUoKTsKLQotICAgICAgICAv
LyBSZW1vdmUgdGhlICJvbiIgcHJlZml4LiBSZXF1aXJlcyBzb21lIG1lbW9yeSBhbGxvY2F0aW9u
IGFuZCBjb21wdXRpbmcgYSBoYXNoLCBidXQgYnkgbm90Ci0gICAgICAgIC8vIHVzaW5nIHBvaW50
ZXJzIGZyb20gZXZlbnROYW1lcygpLCB0aGUgcGFzc2VkLWluIHRhYmxlIGNhbiBiZSBpbml0aWFs
aXplZCBhdCBjb21waWxlIHRpbWUuCi0gICAgICAgIEF0b21TdHJpbmcgZXZlbnROYW1lID0gYXR0
cmlidXRlTmFtZS5zdHJpbmcoKS5zdWJzdHJpbmcoMik7Ci0KLSAgICAgICAgbWFwLmFkZChhdHRy
aWJ1dGVOYW1lLmltcGwoKSwgV1RGTW92ZShldmVudE5hbWUpKTsKLSAgICB9Ci19Ci0KIGNvbnN0
IEF0b21TdHJpbmcmIEhUTUxFbGVtZW50OjpldmVudE5hbWVGb3JFdmVudEhhbmRsZXJBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwgY29uc3QgRXZlbnRIYW5kbGVy
TmFtZU1hcCYgbWFwKQogewogICAgIEFTU0VSVCghYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKS5p
c051bGwoKSk7CkBAIC00MjAsOCArMjYwLDQzIEBAIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxFbGVt
ZW50OjpldmVudE5hbWVGb3JFdmVudEhhbmRsZXJBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkCiAK
IGNvbnN0IEF0b21TdHJpbmcmIEhUTUxFbGVtZW50OjpldmVudE5hbWVGb3JFdmVudEhhbmRsZXJB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKLSAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8RXZlbnRIYW5kbGVyTmFtZU1hcD4gbWFwID0gY3JlYXRlRXZlbnRI
YW5kbGVyTmFtZU1hcCgpOwotICAgIHJldHVybiBldmVudE5hbWVGb3JFdmVudEhhbmRsZXJBdHRy
aWJ1dGUoYXR0cmlidXRlTmFtZSwgbWFwLmdldCgpKTsKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQgbWFwID0gW10geworICAgICAgICBFdmVudEhhbmRsZXJOYW1lTWFwIG1hcDsKKyAgICAgICAg
SlNIVE1MRWxlbWVudDo6Zm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUoWyZdIChj
b25zdCBBdG9tU3RyaW5nJiBhdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudE5h
bWUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBzcGVjaWFsIGNhc2UuIFRo
aXMgaGFzIGFuIFtFdmVudEhhbmRsZXJdIGxpbmUgaW4gdGhlIElETCBidXQgd2FzIG5vdCBoaXN0
b3JpY2FsbHkgaW4gdGhpcyBtYXAuCisgICAgICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBv
bmN1ZWNoYW5nZUF0dHIuZ2V0KCkubG9jYWxOYW1lKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAgICAgbWFwLmFkZChhdHRyaWJ1dGVOYW1lLmltcGwoKSwgZXZlbnROYW1lKTsK
KyAgICAgICAgfSk7CisgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhlc2Ugc3BlY2lhbCBjYXNl
cy4gVGhlc2UgYXJlIG5vdCBpbiBJREwgd2l0aCBbRXZlbnRIYW5kbGVyXSBidXQgd2VyZSBoaXN0
b3JpY2FsbHkgaW4gdGhpcyBtYXAuCisgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY29uc3QgTGF6
eU5ldmVyRGVzdHJveWVkPGNvbnN0IFF1YWxpZmllZE5hbWU+KiB0YWJsZVtdID0geworICAgICAg
ICAgICAgJm9uYXV0b2NvbXBsZXRlQXR0ciwKKyAgICAgICAgICAgICZvbmF1dG9jb21wbGV0ZWVy
cm9yQXR0ciwKKyAgICAgICAgICAgICZvbmJlZm9yZWxvYWRBdHRyLAorICAgICAgICAgICAgJm9u
Zm9jdXNpbkF0dHIsCisgICAgICAgICAgICAmb25mb2N1c291dEF0dHIsCisgICAgICAgICAgICAm
b25nZXN0dXJlY2hhbmdlQXR0ciwKKyAgICAgICAgICAgICZvbmdlc3R1cmVlbmRBdHRyLAorICAg
ICAgICAgICAgJm9uZ2VzdHVyZXN0YXJ0QXR0ciwKKyAgICAgICAgICAgICZvbndlYmtpdGJlZ2lu
ZnVsbHNjcmVlbkF0dHIsCisgICAgICAgICAgICAmb253ZWJraXRjdXJyZW50cGxheWJhY2t0YXJn
ZXRpc3dpcmVsZXNzY2hhbmdlZEF0dHIsCisgICAgICAgICAgICAmb253ZWJraXRlbmRmdWxsc2Ny
ZWVuQXR0ciwKKyAgICAgICAgICAgICZvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VBdHRyLAorICAg
ICAgICAgICAgJm9ud2Via2l0ZnVsbHNjcmVlbmVycm9yQXR0ciwKKyAgICAgICAgICAgICZvbndl
YmtpdGtleWFkZGVkQXR0ciwKKyAgICAgICAgICAgICZvbndlYmtpdGtleWVycm9yQXR0ciwKKyAg
ICAgICAgICAgICZvbndlYmtpdGtleW1lc3NhZ2VBdHRyLAorICAgICAgICAgICAgJm9ud2Via2l0
bmVlZGtleUF0dHIsCisgICAgICAgICAgICAmb253ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJp
bGl0eWNoYW5nZWRBdHRyLAorICAgICAgICAgICAgJm9ud2Via2l0cHJlc2VudGF0aW9ubW9kZWNo
YW5nZWRBdHRyLAorICAgICAgICB9OworICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDogdGFibGUp
IHsKKyAgICAgICAgICAgIGF1dG8qIG5hbWUgPSBlbnRyeS0+Z2V0KCkubG9jYWxOYW1lKCkuaW1w
bCgpOworICAgICAgICAgICAgbWFwLmFkZChuYW1lLCBBdG9tU3RyaW5nIHsgbmFtZSwgMiwgU3Ry
aW5nOjpNYXhMZW5ndGggfSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1hcDsKKyAgICB9
KCk7CisgICAgcmV0dXJuIGV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShhdHRyaWJ1
dGVOYW1lLCBtYXApOwogfQogCiBOb2RlOjpFZGl0YWJpbGl0eSBIVE1MRWxlbWVudDo6ZWRpdGFi
aWxpdHlGcm9tQ29udGVudEVkaXRhYmxlQXR0cihjb25zdCBOb2RlJiBub2RlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oCmluZGV4IDI4Njk0MjgxYzE4ZjU5YTY4NmVjZjUxMmQ2NmY3ZGY4Yjk4
YzU3MWIuLjJiM2E3ZWJmMDE4NGE1Yzc2ZmEzNWI5NmRlOGFjZTA0NTdmYzhiNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmgKQEAgLTE2MSw4ICsxNjEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKICAgICB2
b2lkIGNhbGN1bGF0ZUFuZEFkanVzdERpcmVjdGlvbmFsaXR5KCk7CiAKLSAgICB0eXBlZGVmIEhh
c2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBBdG9tU3RyaW5nPiBFdmVudEhhbmRsZXJOYW1lTWFwOwot
ICAgIHRlbXBsYXRlPHNpemVfdCB0YWJsZVNpemU+IHN0YXRpYyB2b2lkIHBvcHVsYXRlRXZlbnRI
YW5kbGVyTmFtZU1hcChFdmVudEhhbmRsZXJOYW1lTWFwJiwgY29uc3QgUXVhbGlmaWVkTmFtZSog
Y29uc3QgKCZ0YWJsZSlbdGFibGVTaXplXSk7CisgICAgdXNpbmcgRXZlbnRIYW5kbGVyTmFtZU1h
cCA9IEhhc2hNYXA8QXRvbVN0cmluZ0ltcGwqLCBBdG9tU3RyaW5nPjsKICAgICBzdGF0aWMgY29u
c3QgQXRvbVN0cmluZyYgZXZlbnROYW1lRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEV2ZW50SGFuZGxlck5hbWVNYXAmKTsK
IAogcHJpdmF0ZToKQEAgLTE3NSw5ICsxNzQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRqdXN0
RGlyZWN0aW9uYWxpdHlJZk5lZWRlZEFmdGVyQ2hpbGRyZW5DaGFuZ2VkKEVsZW1lbnQqIGJlZm9y
ZUNoYW5nZSwgQ2hpbGRDaGFuZ2U6OlR5cGUpOwogICAgIFRleHREaXJlY3Rpb24gZGlyZWN0aW9u
YWxpdHkoTm9kZSoqIHN0cm9uZ0RpcmVjdGlvbmFsaXR5VGV4dE5vZGU9IDApIGNvbnN0OwogCi0g
ICAgc3RhdGljIHZvaWQgcG9wdWxhdGVFdmVudEhhbmRsZXJOYW1lTWFwKEV2ZW50SGFuZGxlck5h
bWVNYXAmLCBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCB0YWJsZVtdLCBzaXplX3QgdGFibGVT
aXplKTsKLSAgICBzdGF0aWMgRXZlbnRIYW5kbGVyTmFtZU1hcCBjcmVhdGVFdmVudEhhbmRsZXJO
YW1lTWFwKCk7Ci0KICAgICBlbnVtIGNsYXNzIEFsbG93UGVyY2VudGFnZSA6IGJvb2wgeyBObywg
WWVzIH07CiAgICAgZW51bSBjbGFzcyBVc2VDU1NQWEFzVW5pdFR5cGUgOiBib29sIHsgTm8sIFll
cyB9OwogICAgIGVudW0gY2xhc3MgSXNNdWx0aUxlbmd0aCA6IGJvb2wgeyBObywgWWVzIH07CkBA
IC0xOTAsMTEgKzE4Niw2IEBAIGlubGluZSBIVE1MRWxlbWVudDo6SFRNTEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50CiAgICAgQVNTRVJUKHRh
Z05hbWUubG9jYWxOYW1lKCkuaW1wbCgpKTsKIH0KIAotdGVtcGxhdGU8c2l6ZV90IHRhYmxlU2l6
ZT4gaW5saW5lIHZvaWQgSFRNTEVsZW1lbnQ6OnBvcHVsYXRlRXZlbnRIYW5kbGVyTmFtZU1hcChF
dmVudEhhbmRsZXJOYW1lTWFwJiBtYXAsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0ICgmdGFi
bGUpW3RhYmxlU2l6ZV0pCi17Ci0gICAgcG9wdWxhdGVFdmVudEhhbmRsZXJOYW1lTWFwKG1hcCwg
dGFibGUsIHRhYmxlU2l6ZSk7Ci19Ci0KIGlubGluZSBib29sIE5vZGU6Omhhc1RhZ05hbWUoY29u
c3QgSFRNTFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGlzPEhUTUxF
bGVtZW50PigqdGhpcykgJiYgZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KCp0aGlzKS5oYXNUYWdOYW1l
KG5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAppbmRleCAzNTBmNTUzYmExMmU3
ZTlkYzM2ZmMyN2FhZGQ5NWY0MjQ0ODk2YTY1Li4yZGY5ZmJmZGVkZGUzMWRjOGZhNDFiZmJlZmU2
MzI1MDE5Y2I5ODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbApAQCAtMjEsOCAr
MjEsOSBAQAogWwogICAgIEN1c3RvbVB1c2hFdmVudEhhbmRsZXJTY29wZSwKICAgICBFeHBvcnRN
YWNybz1XRUJDT1JFX0VYUE9SVCwKKyAgICBFeHBvc2VkPVdpbmRvdywKKyAgICBHZW5lcmF0ZUZv
ckVhY2hFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRlLAogICAgIEpTR2VuZXJhdGVUb05hdGl2
ZU9iamVjdCwKLSAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgSFRNTEVsZW1lbnQgOiBF
bGVtZW50IHsKICAgICBbQ3VzdG9tXSBjb25zdHJ1Y3RvcigpOwogCg==
</data>
<flag name="review"
          id="472603"
          type_id="1"
          status="+"
          setter="ashvayka"
    />
    <flag name="commit-queue"
          id="472626"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>447092</attachid>
            <date>2021-12-13 18:22:45 -0800</date>
            <delta_ts>2021-12-14 02:30:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234254-20211213182244.patch</filename>
            <type>text/plain</type>
            <size>31989</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3MDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGRlOTc3YTUxYWJjZmUyMjUwZjFkYTRl
M2FkMjU0MmI0NDM3YzZhYzAuLjY4NDdhYWY1MWQyNDlhNjY2MmE5YjZmNThkOTk2ZGZiZTc3M2Ux
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjEtMTItMTMgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgorCisgICAgICAgIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgZXZlbnQgaGFuZGxl
ciBjb250ZW50IGF0dHJpYnV0ZSBtYXBzIHNvIHRoZXkgYXJlIGVhc2llciB0byBtYWludGFpbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MjU0CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFNodmF5a2EuCisKKyAgICAgICAgKiB3dGYvTmV2
ZXJEZXN0cm95ZWQuaDogQWRkIGEgZGVkdWN0aW9uIGd1aWRlIGZvciBOZXZlckRlc3Ryb3llZC4K
KyAgICAgICAgSW4gdGhlIGZ1dHVyZSB3ZSBjYW4gdXNlIHRoaXMgaW5zdGVhZCBvZiBtYWtlTmV2
ZXJEZXN0cm95ZWQgb3Igd3JpdGluZworICAgICAgICBvdXQgdGhlIGVudGlyZSB0ZW1wbGF0ZSBj
bGFzcyB0eXBlIGluY2x1ZGluZyB0ZW1wbGF0ZSBhcmd1bWVudHMuCisKIDIwMjEtMTItMTMgIFNh
YW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgUm9sbCBiYWNrIHIyODYz
NDUsIHIyODYzODcsIHIyODY0NzEsIHIyODY2NjcsIHIyODY4NDkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNjRh
NzU3ZmYyZTZlOGYzMjg5NjQ4OTdiNWI5N2I5MWE4MjI3Y2MyLi5hYWRhYjNjMzBiYTdjODhhZDU3
ZmM1Y2Y0ZDUzODU0MDU2YWFlMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMjEt
MTItMTMgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIEF1dG9tYXRp
Y2FsbHkgZ2VuZXJhdGUgZXZlbnQgaGFuZGxlciBjb250ZW50IGF0dHJpYnV0ZSBtYXBzIHNvIHRo
ZXkgYXJlIGVhc2llciB0byBtYWludGFpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM0MjU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFNo
dmF5a2EuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKTogRGVjbGFyZSBmb3JFYWNoRXZlbnRIYW5kbGVyQ29u
dGVudEF0dHJpYnV0ZQorICAgICAgICBhbmQgZm9yRWFjaFdpbmRvd0V2ZW50SGFuZGxlckNvbnRl
bnRBdHRyaWJ1dGUgYXMgbmVlZGVkLgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6
IENhbGwgR2VuZXJhdGVGb3JFYWNoRXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZQorICAgICAg
ICBhcyBuZWVkZWQuCisgICAgICAgIChHZW5lcmF0ZUZvckVhY2hFdmVudEhhbmRsZXJDb250ZW50
QXR0cmlidXRlKTogRGVmaW5lCisgICAgICAgIGZvckVhY2hFdmVudEhhbmRsZXJDb250ZW50QXR0
cmlidXRlIG9yIGZvckVhY2hXaW5kb3dFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRlLgorCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246IEFkZGVkCisgICAg
ICAgIEdlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUgYW5kCisgICAg
ICAgIEdlbmVyYXRlRm9yRWFjaFdpbmRvd0V2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUuIEV2
ZW4gdGhvdWdoIGVhY2gKKyAgICAgICAgaXMgdXNlZCBpbiBvbmx5IG9uZSBjbGFzcywgaXQncyBz
dGlsbCBiZXR0ZXIgdG8gbm90IGhhcmQtY29kZSB0aGUgY2xhc3MgbmFtZXMuCisKKyAgICAgICAg
KiBodG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbjogQWRkZWQgb25jdWVjaGFuZ2UsIG9ucmVqZWN0
aW9uaGFuZGxlZCwgYW5kCisgICAgICAgIG9udW5oYW5kbGVkcmVqZWN0aW9uIGV2ZW4gdGhvdWdo
IHdlIGFyZSBub3QgeWV0IGltcGxlbWVudGluZyBhbnkgb2YgdGhlbSBpbgorICAgICAgICB0aGlz
IGJlaGF2aW9yLXByZXNlcnZpbmcgcGF0Y2guIFRoZXkgbmVlZCB0byBiZSBwcmVzZW50IHNvIHRo
ZSBhdXRvbWF0aWNhbGx5CisgICAgICAgIGdlbmVyYXRlZCBjb2RlIGNvbXBpbGVzLiBCdXQgYWRk
ZWQgZXhwbGljaXQgZXhjZXB0aW9ucyBhcyBtZW50aW9uZWQgYmVsb3cgdG8KKyAgICAgICAgbWFr
ZSBzdXJlIG5vIGNoYW5nZXMgYXJlIGltcGxlbWVudGVkIGluIHRoaXMgcGF0Y2gsIGFuZCB3aWxs
IHRha2UgdGhvc2UgZXhjZXB0aW9ucworICAgICAgICBvdXQgbGF0ZXIgaW4gYSBwYXRjaCBpbnRl
bmRlZCB0byBwcm9kdWNlIGEgcHJvZ3Jlc3Npb24sIGxpa2VseSB3aXRoIG5ldyB0ZXN0IGNhc2Vz
LgorICAgICAgICBSZS1zb3J0ZWQgYWxwaGFiZXRpY2FsbHksIHJhdGhlciBhbiBhcmJpdHJhcnkg
c2VtaS1zb3J0ZWQgb3JkZXIuCisKKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZVdpbmRvd0V2ZW50SGFu
ZGxlck5hbWVNYXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEJvZHlFbGVtZW50
OjpldmVudE5hbWVGb3JXaW5kb3dFdmVudEhhbmRsZXJBdHRyaWJ1dGUpOiBVc2UKKyAgICAgICAg
SlNIVE1MQm9keUVsZW1lbnQ6OmZvckVhY2hXaW5kb3dFdmVudEhhbmRsZXJDb250ZW50QXR0cmli
dXRlIHRvIGNyZWF0ZSB0aGUgbWFwLgorICAgICAgICBVc2UgYSBsYW1iZGEgaW5zdGVhZCBvZiBh
IHNlcGFyYXRlIGZ1bmN0aW9uIGFuZCB0YWtlIGFkdmFudGFnZSBvZiB0aGUKKyAgICAgICAgZGVk
dWN0aW9uIGd1aWRlIGZvciBOZXZlckRlc3Ryb3llZC4gQWRkZWQgZXhjZXB0aW9ucyBmb3Igb25y
ZWplY3Rpb25oYW5kbGVkCisgICAgICAgIGFuZCBvbnVuaGFuZGxlZHJlamVjdGlvbiwgd2hpY2gg
YXJlIGJvdGggaW4gdGhlIElETCBmaWxlIGJ1dCB3ZXJlIG5vdCBoYW5kbGVkCisgICAgICAgIGhl
cmUsIGFsb25nIHdpdGggYSBGSVhNRSBzdWdnZXN0aW5nIHdlIHJlbW92ZSB0aGUgZXhjZXB0aW9u
cy4KKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6IFJlbW92ZWQgY3JlYXRlV2luZG93RXZl
bnRIYW5kbGVyTmFtZU1hcC4KKyAgICAgICAgKiBodG1sL0hUTUxCb2R5RWxlbWVudC5pZGw6IEFk
ZGVkIEdlbmVyYXRlRm9yRWFjaFdpbmRvd0V2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUuCisK
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxF
bGVtZW50OjpjcmVhdGVFdmVudEhhbmRsZXJOYW1lTWFwKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbGVtZW50Ojpwb3B1bGF0ZUV2ZW50SGFuZGxlck5hbWVNYXApOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmV2ZW50TmFtZUZvckV2ZW50SGFuZGxl
ckF0dHJpYnV0ZSk6IFVzZQorICAgICAgICBKU0hUTUxFbGVtZW50Ojpmb3JFYWNoRXZlbnRIYW5k
bGVyQ29udGVudEF0dHJpYnV0ZSB0byBjcmVhdGUgdGhlIG1hcC4KKyAgICAgICAgVXNlIGEgbGFt
YmRhIGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBmdW5jdGlvbiBhbmQgdGFrZSBhZHZhbnRhZ2Ugb2Yg
dGhlCisgICAgICAgIGRlZHVjdGlvbiBndWlkZSBmb3IgTmV2ZXJEZXN0cm95ZWQuIEFkZGVkIGV4
Y2VwdGlvbiBmb3Igb25jdWVjaGFuZ2UsCisgICAgICAgIHdoaWNoIGlzIGluIHRoZSBJREwgZmls
ZSBidXQgd2FzIG5vdCBoYW5kbGVkIGhlcmUsIGFuZCBmb3IgMTkgb3RoZXIgYXR0cmlidXRlcywK
KyAgICAgICAgd2hpY2ggYXJlIG5vdCBpbiB0aGUgSURMIGZpbGUgYnV0IHdlcmUgaGFuZGxlZCBo
ZXJlLCBhbG9uZyB3aXRoIHR3byBGSVhNRXMKKyAgICAgICAgc3VnZ2VzdGluZyB3ZSByZW1vdmUg
dGhlIGV4Y2VwdGlvbnMuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOiBSZW1vdmVkIHBv
cHVsYXRlRXZlbnRIYW5kbGVyTmFtZU1hcCBhbmQKKyAgICAgICAgY3JlYXRlRXZlbnRIYW5kbGVy
TmFtZU1hcC4KKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmlkbDogQWRkZWQgR2VuZXJhdGVG
b3JFYWNoRXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZS4KKwogMjAyMS0xMi0xMyAgQ2hyaXN0
b3BoZXIgUmVpZCAgPGNocmlzLnJlaWRAc29ueS5jb20+CiAKICAgICAgICAgW0N1cmxdIEltcHJv
dmUgY3VybCdzIGNvb2tpZSBjb25mb3JtYW5jZSBpbiBXUFQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
VEYvd3RmL05ldmVyRGVzdHJveWVkLmggYi9Tb3VyY2UvV1RGL3d0Zi9OZXZlckRlc3Ryb3llZC5o
CmluZGV4IGZhMDVlOTNkZjEzZTBhODZlMmY5NmZkMDNjNjA2YmFhNmUzYWI2ZjIuLmJlZjM3ZGYx
MDFlZGI3OTllZDc3MjRiYmIwNmRhOWYxOGQ1MGRkMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL05ldmVyRGVzdHJveWVkLmgKKysrIGIvU291cmNlL1dURi93dGYvTmV2ZXJEZXN0cm95ZWQu
aApAQCAtMTc5LDYgKzE3OSw5IEBAIHByaXZhdGU6CiAgICAgdHlwZW5hbWUgc3RkOjphbGlnbmVk
X3N0b3JhZ2U8c2l6ZW9mKFQpLCBzdGQ6OmFsaWdubWVudF9vZjxUPjo6dmFsdWU+Ojp0eXBlIG1f
c3RvcmFnZTsKIH07CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IE5ldmVyRGVzdHJveWVkKFQpIC0+
IE5ldmVyRGVzdHJveWVkPFQ+OworCisvLyBGSVhNRTogUmVtb3ZlIHRoaXMgZnVuY3Rpb24sIHJl
bHlpbmcgaW5zdGVhZCBvbiB0aGUgZGVkdWN0aW9uIGd1aWRlIGZvciBOZXZlckRlc3Ryb3llZCBh
Ym92ZS4KIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEFjY2Vzc1RyYWl0cz4gaW5saW5l
IE5ldmVyRGVzdHJveWVkPFQsIEFjY2Vzc1RyYWl0cz4gbWFrZU5ldmVyRGVzdHJveWVkKFQmJiBh
cmd1bWVudCkKIHsKICAgICByZXR1cm4gc3RkOjpmb3J3YXJkPFQ+KGFyZ3VtZW50KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBt
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5k
ZXggMjRiMzVhMzA4YjJjMzg1Njg2NDAzZGE5NzJjMzgxMWQ4MTM0OWUyZi4uY2FlZDE0MmU2M2Jm
ZGY1NjM1NGE1NTAxM2U3ZTQyODFjMTVjYTNlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTQ4Nyw3ICs0ODcsNyBAQCBz
dWIgQWRkU3RyaW5naWZpZXJPcGVyYXRpb25JZk5lZWRlZAogICAgIH0KIH0KIAotc3ViIEV2ZW50
SGFuZGxlckF0dHJpYnV0ZUV2ZW50TmFtZQorc3ViIEV2ZW50SGFuZGxlckF0dHJpYnV0ZVNob3J0
RXZlbnROYW1lCiB7CiAgICAgbXkgJGF0dHJpYnV0ZSA9IHNoaWZ0OwogICAgIG15ICRldmVudFR5
cGUgPSAkYXR0cmlidXRlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntJbXBsZW1lbnRlZEFzfSB8fCAk
YXR0cmlidXRlLT5uYW1lOwpAQCAtNDk1LDcgKzQ5NSwxMyBAQCBzdWIgRXZlbnRIYW5kbGVyQXR0
cmlidXRlRXZlbnROYW1lCiAgICAgIyBSZW1vdmUgdGhlICJvbiIgcHJlZml4LgogICAgICRldmVu
dFR5cGUgPSBzdWJzdHIoJGV2ZW50VHlwZSwgMik7CiAKLSAgICByZXR1cm4gImV2ZW50TmFtZXMo
KS4ke2V2ZW50VHlwZX1FdmVudCI7CisgICAgcmV0dXJuICIke2V2ZW50VHlwZX1FdmVudCI7Cit9
CisKK3N1YiBFdmVudEhhbmRsZXJBdHRyaWJ1dGVFdmVudE5hbWUKK3sKKyAgICBteSAkYXR0cmli
dXRlID0gc2hpZnQ7CisgICAgcmV0dXJuICJldmVudE5hbWVzKCkuIiAuIEV2ZW50SGFuZGxlckF0
dHJpYnV0ZVNob3J0RXZlbnROYW1lKCRhdHRyaWJ1dGUpOwogfQogCiBzdWIgR2V0UGFyZW50Q2xh
c3NOYW1lCkBAIC0zMDI3LDEzICszMDMzLDIwIEBAIHN1YiBHZW5lcmF0ZUhlYWRlcgogICAgIGlm
ICgkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDdXN0b21QdXNoRXZlbnRIYW5kbGVy
U2NvcGV9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgSlNDOjpKU1Njb3Bl
KiBwdXNoRXZlbnRIYW5kbGVyU2NvcGUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNTY29w
ZSopIGNvbnN0O1xuXG4iKTsKICAgICB9Ci0gICAgCisKICAgICAjIENvbnN0cnVjdG9yIG9iamVj
dCBnZXR0ZXIKICAgICB1bmxlc3MgKCRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0xl
Z2FjeU5vSW50ZXJmYWNlT2JqZWN0fSkgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0Q29uc3RydWN0b3IoSlNDOjpWTSYsIGNvbnN0IEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTtcbiIpOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAi
ICAgIHN0YXRpYyBKU0M6OkpTVmFsdWUgZ2V0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uKEpTQzo6Vk0m
LCBKU0M6OkpTR2xvYmFsT2JqZWN0Kik7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPntMZWdhY3lGYWN0b3J5RnVuY3Rpb259OwogICAgIH0KIAorICAgIGlmICgkaW50ZXJm
YWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntHZW5lcmF0ZUZvckVhY2hFdmVudEhhbmRsZXJDb250
ZW50QXR0cmlidXRlfSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRp
YyB2b2lkIGZvckVhY2hFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRlKGNvbnN0IEZ1bmN0aW9u
PHZvaWQoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbVN0cmluZyYg
ZXZlbnROYW1lKT4mKTtcblxuIik7CisgICAgfQorICAgIGlmICgkaW50ZXJmYWNlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPntHZW5lcmF0ZUZvckVhY2hXaW5kb3dFdmVudEhhbmRsZXJDb250ZW50QXR0
cmlidXRlfSkgeworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIHN0YXRpYyB2b2lk
IGZvckVhY2hXaW5kb3dFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRlKGNvbnN0IEZ1bmN0aW9u
PHZvaWQoY29uc3QgQXRvbVN0cmluZyYgYXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbVN0cmluZyYg
ZXZlbnROYW1lKT4mKTtcblxuIik7CisgICAgfQorCiAgICAgbXkgJG51bUN1c3RvbU9wZXJhdGlv
bnMgPSAwOwogICAgIG15ICRudW1DdXN0b21BdHRyaWJ1dGVzID0gMDsKIApAQCAtNDk0NCw2ICs0
OTU3LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAifVxuXG4iKTsKICAgICB9CiAKKyAgICBpZiAoJGludGVyZmFjZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57R2VuZXJhdGVGb3JFYWNoRXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZX0p
IHsKKyAgICAgICAgR2VuZXJhdGVGb3JFYWNoRXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZShc
QGltcGxDb250ZW50LCAkaW50ZXJmYWNlLCAkY2xhc3NOYW1lLCAiZm9yRWFjaEV2ZW50SGFuZGxl
ckNvbnRlbnRBdHRyaWJ1dGUiKTsKKyAgICB9CisgICAgaWYgKCRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0dlbmVyYXRlRm9yRWFjaFdpbmRvd0V2ZW50SGFuZGxlckNvbnRlbnRBdHRy
aWJ1dGV9KSB7CisgICAgICAgIEdlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRy
aWJ1dGUoXEBpbXBsQ29udGVudCwgJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgImZvckVhY2hXaW5k
b3dFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRlIiwgIldpbmRvd0V2ZW50SGFuZGxlciIpOwor
ICAgIH0KKwogICAgIGlmICgkaW5kZXhlZEdldHRlck9wZXJhdGlvbikgewogICAgICAgICAkaW1w
bEluY2x1ZGVzeyI8d3RmL1VSTC5oPiJ9ID0gMSBpZiAkaW5kZXhlZEdldHRlck9wZXJhdGlvbi0+
dHlwZS0+bmFtZSBlcSAiRE9NU3RyaW5nIjsKICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1lID1+
IC9eSFRNTFx3KkNvbGxlY3Rpb24kLyBvciAkaW50ZXJmYWNlTmFtZSBlcSAiUmFkaW9Ob2RlTGlz
dCIpIHsKQEAgLTUxODQsNiArNTIwNCwyNyBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJB
bmRTZXR0ZXJEZWNsYXJhdGlvbgogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNlbmRpZlxuIikg
aWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogfQogCitzdWIgR2VuZXJhdGVGb3JFYWNoRXZlbnRIYW5k
bGVyQ29udGVudEF0dHJpYnV0ZQoreworICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2Us
ICRjbGFzc05hbWUsICRmdW5jdGlvbk5hbWUsICRldmVudEhhbmRsZXJFeHRlbmRlZEF0dHJpYnV0
ZU5hbWUpID0gQF87CisgICAgQWRkVG9JbXBsSW5jbHVkZXMoIkhUTUxOYW1lcy5oIik7CisgICAg
cHVzaChAJG91dHB1dEFycmF5LCAidm9pZCAke2NsYXNzTmFtZX06OiR7ZnVuY3Rpb25OYW1lfShj
b25zdCBGdW5jdGlvbjx2b2lkKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50TmFtZSk+JiBmdW5jdGlvbilcbiIpOworICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIntcbiIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBzdGF0aWMgY29u
c3RleHByIHN0ZDo6cGFpcjxMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlmaWVkTmFtZT4q
LCBjb25zdCBBdG9tU3RyaW5nIEV2ZW50TmFtZXM6Oio+IHRhYmxlW10gPSB7XG4iKTsKKyAgICBm
b3JlYWNoIG15ICRhdHRyaWJ1dGUgKEB7JGludGVyZmFjZS0+YXR0cmlidXRlc30pIHsKKyAgICAg
ICAgaWYgKCRhdHRyaWJ1dGUtPnR5cGUtPm5hbWUgZXEgIkV2ZW50SGFuZGxlciIgJiYgKCFkZWZp
bmVkICRldmVudEhhbmRsZXJFeHRlbmRlZEF0dHJpYnV0ZU5hbWUgfHwgJGF0dHJpYnV0ZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57JGV2ZW50SGFuZGxlckV4dGVuZGVkQXR0cmlidXRlTmFtZX0pKSB7
CisgICAgICAgICAgICBteSAkYXR0cmlidXRlTmFtZSA9ICRhdHRyaWJ1dGUtPm5hbWU7CisgICAg
ICAgICAgICBteSAkZXZlbnROYW1lID0gRXZlbnRIYW5kbGVyQXR0cmlidXRlU2hvcnRFdmVudE5h
bWUoJGF0dHJpYnV0ZSk7CisgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IHsgJkhUTUxOYW1lczo6JHthdHRyaWJ1dGVOYW1lfUF0dHIsICZFdmVudE5hbWVzOjoke2V2ZW50
TmFtZX0gfSxcbiIpOworICAgICAgICB9CisgICAgfQorICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICB9O1xuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGF1dG8mIGV2ZW50TmFt
ZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgZm9yIChhdXRvJiBuYW1lcyA6IHRhYmxlKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgICAgICBmdW5jdGlvbihuYW1lcy5maXJzdC0+Z2V0KCkubG9jYWxOYW1lKCksIGV2
ZW50TmFtZXMuKm5hbWVzLnNlY29uZCk7XG4iKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9
XG5cbiIpOworfQorCiBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvbgog
ewogICAgIG15ICgkb3V0cHV0QXJyYXksICRpbnRlcmZhY2UsICRjbGFzc05hbWUsICRhdHRyaWJ1
dGUsICRhdHRyaWJ1dGVHZXR0ZXJCb2R5TmFtZSwgJGNvbmRpdGlvbmFsKSA9IEBfOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb24g
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgppbmRl
eCA0MzA4ZGVmOTc4ZDFkMmNlOGNhY2VkN2YwMzZjZWEwZjc0Y2Q4NmQxLi42ZWVhZWZiMTU1M2Uy
ZDJjYmNiYWE4OTVmODhhZDNkZDBjYTlkNzQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbgpAQCAtMjI3LDE0ICsyMjcsMjIgQEAK
ICAgICAgICAgICAgICAgICAidXJsIjogImh0dHBzOi8vd2ViaWRsLnNwZWMud2hhdHdnLm9yZy8j
RXhwb3NlZCIKICAgICAgICAgICAgIH0KICAgICAgICAgfSwKLSAgICAgICAgIkdlbmVyYXRlSXNS
ZWFjaGFibGUiOiB7CisgICAgICAgICJHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QiOiB7CiAgICAgICAg
ICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKLSAgICAgICAgICAgICJ2YWx1
ZXMiOiBbIiIsICJJbXBsIiwgIkltcGxXZWJHTFJlbmRlcmluZ0NvbnRleHQiLCAiSW1wbENhbnZh
c0Jhc2UiLCAiSW1wbERvY3VtZW50IiwgIkltcGxFbGVtZW50Um9vdCIsICJJbXBsT3duZXJOb2Rl
Um9vdCIsICJJbXBsU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIsICJSZWFjaGFibGVGcm9tRE9NV2lu
ZG93IiwgIlJlYWNoYWJsZUZyb21OYXZpZ2F0b3IiXQorICAgICAgICAgICAgInZhbHVlcyI6IFsi
KiJdCiAgICAgICAgIH0sCi0gICAgICAgICJHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QiOiB7CisgICAg
ICAgICJHZW5lcmF0ZUZvckVhY2hFdmVudEhhbmRsZXJDb250ZW50QXR0cmlidXRlIjogeworICAg
ICAgICAgICAgImNvbnRleHRzQWxsb3dlZCI6IFsiaW50ZXJmYWNlIl0sCisgICAgICAgICAgICAi
dmFsdWVzIjogWyIqIl0KKyAgICAgICAgfSwKKyAgICAgICAgIkdlbmVyYXRlRm9yRWFjaFdpbmRv
d0V2ZW50SGFuZGxlckNvbnRlbnRBdHRyaWJ1dGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKICAgICAgICAgICAgICJ2YWx1ZXMiOiBbIioiXQogICAg
ICAgICB9LAorICAgICAgICAiR2VuZXJhdGVJc1JlYWNoYWJsZSI6IHsKKyAgICAgICAgICAgICJj
b250ZXh0c0FsbG93ZWQiOiBbImludGVyZmFjZSJdLAorICAgICAgICAgICAgInZhbHVlcyI6IFsi
IiwgIkltcGwiLCAiSW1wbFdlYkdMUmVuZGVyaW5nQ29udGV4dCIsICJJbXBsQ2FudmFzQmFzZSIs
ICJJbXBsRG9jdW1lbnQiLCAiSW1wbEVsZW1lbnRSb290IiwgIkltcGxPd25lck5vZGVSb290Iiwg
IkltcGxTY3JpcHRFeGVjdXRpb25Db250ZXh0IiwgIlJlYWNoYWJsZUZyb21ET01XaW5kb3ciLCAi
UmVhY2hhYmxlRnJvbU5hdmlnYXRvciJdCisgICAgICAgIH0sCiAgICAgICAgICJHbG9iYWwiOiB7
CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiXSwKICAgICAgICAg
ICAgICJ2YWx1ZXMiOiBbIioiXSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFt
ZXMuaW4KaW5kZXggNmRlYTM4ZWYwOTQ2ZTNlZWQ4M2VmZDBhZTYxNGVlOWQzMzE0NmE2Ni4uYTY5
MjUwMTExOWM4MDY4OWQ4ZGY4YTUwY2JhMmU2NmEyNjgyNjU3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTQsOCArNCw4IEBAIG5hbWVzcGFjZVVSST0i
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIKIGF0dHJzTnVsbE5hbWVzcGFjZQogCiBhYmJy
Ci1hY2NlcHRfY2hhcnNldAogYWNjZXB0CithY2NlcHRfY2hhcnNldAogYWNjZXNza2V5CiBhY3Rp
b24KIGFsaWduCkBAIC03MSw3ICs3MSw5IEBAIGFzeW5jCiBhdHRyaWJ1dGlvbmRlc3RpbmF0aW9u
CiBhdHRyaWJ1dGlvbnNvdXJjZWlkCiBhdHRyaWJ1dGlvbnNvdXJjZW5vbmNlCithdXRvY2FwaXRh
bGl6ZQogYXV0b2NvbXBsZXRlCithdXRvY29ycmVjdAogYXV0b2ZvY3VzCiBhdXRvcGljdHVyZWlu
cGljdHVyZQogYXV0b3BsYXkKQEAgLTg0LDE0ICs4NiwxNCBAQCBiZ3Byb3BlcnRpZXMKIGJvcmRl
cgogYm9yZGVyY29sb3IKIGNhcHR1cmUKK2NlbGxib3JkZXIKIGNlbGxwYWRkaW5nCiBjZWxsc3Bh
Y2luZwotY2hhcgogY2hhbGxlbmdlCitjaGFyCiBjaGFyb2ZmCiBjaGFyc2V0CiBjaGVja2VkCi1j
ZWxsYm9yZGVyCiBjaXRlCiBjbGFzcwogY2xhc3NpZApAQCAtMTI1LDcgKzEyNyw2IEBAIGRpc3Bv
c2l0aW9uCiBkb3dubG9hZAogZHJhZ2dhYmxlCiBkcm9wem9uZQotd2Via2l0ZHJvcHpvbmUKIGVu
Y3R5cGUKIGVuZAogZW50ZXJrZXloaW50CkBAIC0xNzgsMjIgKzE3OSwyMSBAQCBsaXN0CiBsb2Fk
aW5nCiBsb25nZGVzYwogbG9vcAotbG93Ci1wbGF5Y291bnQKIGxvb3BlbmQKIGxvb3BzdGFydAor
bG93CiBsb3dzcmMKIG1hbmlmZXN0CiBtYXJnaW5oZWlnaHQKIG1hcmdpbndpZHRoCiBtYXgKIG1h
eGxlbmd0aAotbWlubGVuZ3RoCiBtYXlzY3JpcHQKIG1lZGlhCiBtZWRpYWdyb3VwCiBtZXRob2QK
IG1pbgorbWlubGVuZ3RoCiBtdWx0aXBsZQogbXV0ZWQKIG5hbWUKQEAgLTIwNywxMCArMjA3LDEw
IEBAIG5vd3JhcAogb2JqZWN0CiBvbmFib3J0CiBvbmFmdGVycHJpbnQKLW9uYW5pbWF0aW9uc3Rh
cnQKLW9uYW5pbWF0aW9uaXRlcmF0aW9uCi1vbmFuaW1hdGlvbmVuZAogb25hbmltYXRpb25jYW5j
ZWwKK29uYW5pbWF0aW9uZW5kCitvbmFuaW1hdGlvbml0ZXJhdGlvbgorb25hbmltYXRpb25zdGFy
dAogb25hdXRvY29tcGxldGUKIG9uYXV0b2NvbXBsZXRlZXJyb3IKIG9uYmVmb3JlY29weQpAQCAt
MjI5LDYgKzIyOSw3IEBAIG9uY2xpY2sKIG9uY2xvc2UKIG9uY29udGV4dG1lbnUKIG9uY29weQor
b25jdWVjaGFuZ2UKIG9uY3V0CiBvbmRibGNsaWNrCiBvbmRldmljZWNoYW5nZQpAQCAtMjQ3LDE2
ICsyNDgsMTYgQEAgb25mb2N1cwogb25mb2N1c2luCiBvbmZvY3Vzb3V0CiBvbmZvcm1kYXRhCitv
bmdlc3R1cmVjaGFuZ2UKK29uZ2VzdHVyZWVuZAorb25nZXN0dXJlc3RhcnQKK29uZ290cG9pbnRl
cmNhcHR1cmUKIG9uaGFzaGNoYW5nZQogb25pbnB1dAogb25pbnZhbGlkCiBvbmtleWRvd24KIG9u
a2V5cHJlc3MKIG9ua2V5dXAKLW9uZ2VzdHVyZXN0YXJ0Ci1vbmdlc3R1cmVjaGFuZ2UKLW9uZ2Vz
dHVyZWVuZAotb25nb3Rwb2ludGVyY2FwdHVyZQogb25sYW5ndWFnZWNoYW5nZQogb25sb2FkCiBv
bmxvYWRlZGRhdGEKQEAgLTI3Miw4ICsyNzMsOCBAQCBvbm1vdXNlb3V0CiBvbm1vdXNlb3Zlcgog
b25tb3VzZXVwCiBvbm1vdXNld2hlZWwKLW9ub25saW5lCiBvbm9mZmxpbmUKK29ub25saW5lCiBv
bm9yaWVudGF0aW9uY2hhbmdlCiBvbnBhZ2VoaWRlCiBvbnBhZ2VzaG93CkBAIC0yODEsMTcgKzI4
MiwxOCBAQCBvbnBhc3RlCiBvbnBhdXNlCiBvbnBsYXkKIG9ucGxheWluZwotb25wb2ludGVyZG93
bgotb25wb2ludGVybW92ZQotb25wb2ludGVydXAKIG9ucG9pbnRlcmNhbmNlbAotb25wb2ludGVy
b3Zlcgotb25wb2ludGVyb3V0CitvbnBvaW50ZXJkb3duCiBvbnBvaW50ZXJlbnRlcgogb25wb2lu
dGVybGVhdmUKK29ucG9pbnRlcm1vdmUKK29ucG9pbnRlcm91dAorb25wb2ludGVyb3Zlcgorb25w
b2ludGVydXAKIG9ucG9wc3RhdGUKIG9ucHJvZ3Jlc3MKIG9ucmF0ZWNoYW5nZQorb25yZWplY3Rp
b25oYW5kbGVkCiBvbnJlc2V0CiBvbnJlc2l6ZQogb25zY3JvbGwKQEAgLTMwMCwzMiArMzAyLDMz
IEBAIG9uc2VjdXJpdHlwb2xpY3l2aW9sYXRpb24KIG9uc2Vla2VkCiBvbnNlZWtpbmcKIG9uc2Vs
ZWN0Ci1vbnNlbGVjdHN0YXJ0CiBvbnNlbGVjdGlvbmNoYW5nZQorb25zZWxlY3RzdGFydAogb25z
bG90Y2hhbmdlCi1vbndoZWVsCiBvbnN0YWxsZWQKIG9uc3RvcmFnZQotb25zdXNwZW5kCiBvbnN1
Ym1pdAorb25zdXNwZW5kCiBvbnRpbWV1cGRhdGUKIG9udG9nZ2xlCitvbnRvdWNoY2FuY2VsCitv
bnRvdWNoZW5kCiBvbnRvdWNoZm9yY2VjaGFuZ2UKLW9udG91Y2hzdGFydAogb250b3VjaG1vdmUK
LW9udG91Y2hlbmQKLW9udG91Y2hjYW5jZWwKK29udG91Y2hzdGFydAogb250cmFuc2l0aW9uY2Fu
Y2VsCiBvbnRyYW5zaXRpb25lbmQKIG9udHJhbnNpdGlvbnJ1bgogb250cmFuc2l0aW9uc3RhcnQK
K29udW5oYW5kbGVkcmVqZWN0aW9uCiBvbnVubG9hZAogb252b2x1bWVjaGFuZ2UKIG9ud2FpdGlu
Zwotb253ZWJraXRhbmltYXRpb25zdGFydAotb253ZWJraXRhbmltYXRpb25pdGVyYXRpb24KIG9u
d2Via2l0YW5pbWF0aW9uZW5kCitvbndlYmtpdGFuaW1hdGlvbml0ZXJhdGlvbgorb253ZWJraXRh
bmltYXRpb25zdGFydAogb253ZWJraXRiZWdpbmZ1bGxzY3JlZW4KK29ud2Via2l0Y3VycmVudHBs
YXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWQKIG9ud2Via2l0ZW5kZnVsbHNjcmVlbgogb253
ZWJraXRmdWxsc2NyZWVuY2hhbmdlCiBvbndlYmtpdGZ1bGxzY3JlZW5lcnJvcgpAQCAtMzM3LDE5
ICszNDAsMjMgQEAgb253ZWJraXRtb3VzZWZvcmNlZG93bgogb253ZWJraXRtb3VzZWZvcmNldXAK
IG9ud2Via2l0bW91c2Vmb3JjZXdpbGxiZWdpbgogb253ZWJraXRuZWVka2V5CitvbndlYmtpdHBs
YXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZAorb253ZWJraXRwcmVzZW50YXRpb25tb2Rl
Y2hhbmdlZAogb253ZWJraXRzb3VyY2VjbG9zZQogb253ZWJraXRzb3VyY2VlbmRlZAogb253ZWJr
aXRzb3VyY2VvcGVuCiBvbndlYmtpdHRyYW5zaXRpb25lbmQKK29ud2hlZWwKIG9wZW4KIG9wdGlt
dW0KIHBhcnQKIHBhdHRlcm4KK3BpbmcKIHBsYWNlaG9sZGVyCitwbGF5Y291bnQKIHBsYXlzaW5s
aW5lCiBwbHVnaW5zcGFnZQogcGx1Z2ludXJsCi1waW5nCiBwb3N0ZXIKIHByZWNpc2lvbgogcHJl
bG9hZApAQCAtMzg1LDEzICszOTIsMTEgQEAgc2xvdAogc29ydGFibGUKIHNvcnRkaXJlY3Rpb24K
IHNwYW4KLXgtd2Via2l0LXNwZWVjaAoteC13ZWJraXQtZ3JhbW1hcgogc3BlbGxjaGVjawogc3Jj
Ci1zcmNzZXQKIHNyY2RvYwogc3JjbGFuZworc3Jjc2V0CiBzdGFuZGJ5CiBzdGFydAogc3RlcApA
QCAtNDE2LDI3ICs0MjEsMjIgQEAgdmFsdWV0eXBlCiB2ZXJzaW9uCiB2bGluawogdnNwYWNlCit3
ZWJraXQtcGxheXNpbmxpbmUKIHdlYmtpdGFsbG93ZnVsbHNjcmVlbgord2Via2l0YXR0YWNobWVu
dGJsb2J1cmwKIHdlYmtpdGF0dGFjaG1lbnRpZAogd2Via2l0YXR0YWNobWVudHBhdGgKLXdlYmtp
dGF0dGFjaG1lbnRibG9idXJsCiB3ZWJraXRkaXJlY3RvcnkKK3dlYmtpdGRyb3B6b25lCiB3aWR0
aAogd3JhcAotCi1hdXRvY29ycmVjdAotYXV0b2NhcGl0YWxpemUKLW9ud2Via2l0Y3VycmVudHBs
YXliYWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWQKLW9ud2Via2l0cGxheWJhY2t0YXJnZXRhdmFp
bGFiaWxpdHljaGFuZ2VkCi1vbndlYmtpdHByZXNlbnRhdGlvbm1vZGVjaGFuZ2VkCi14LXdlYmtp
dC1pbWFnZW1lbnUKLXdlYmtpdC1wbGF5c2lubGluZQoteC13ZWJraXQtYWlycGxheQoteC13ZWJr
aXQtd2lyZWxlc3N2aWRlb3BsYXliYWNrZGlzYWJsZWQKLXgtaXR1bmVzLWluaGVyaXQtdXJpLXF1
ZXJ5LWNvbXBvbmVudAotCiB4LWFwcGxlLWRhdGEtZGV0ZWN0b3JzCi14LWFwcGxlLWRhdGEtZGV0
ZWN0b3JzLXR5cGUKIHgtYXBwbGUtZGF0YS1kZXRlY3RvcnMtcmVzdWx0Ci0KK3gtYXBwbGUtZGF0
YS1kZXRlY3RvcnMtdHlwZQogeC1hcHBsZS1wZGYtYW5ub3RhdGlvbgoreC1pdHVuZXMtaW5oZXJp
dC11cmktcXVlcnktY29tcG9uZW50Cit4LXdlYmtpdC1haXJwbGF5Cit4LXdlYmtpdC1ncmFtbWFy
Cit4LXdlYmtpdC1pbWFnZW1lbnUKK3gtd2Via2l0LXNwZWVjaAoreC13ZWJraXQtd2lyZWxlc3N2
aWRlb3BsYXliYWNrZGlzYWJsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEJvZHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlFbGVtZW50LmNw
cAppbmRleCBlZmYzYzYwNzQ1OTgwMWEwZmFjZTY3ZmRhMWE2ZjE3M2JhODUxMTk1Li5kYmY2OTA0
MjJlNjkwMzg4ODk0OTQwNTUxMjdiZjUyODA1MmY0MjdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQm9keUVsZW1lbnQuY3BwCkBAIC0zLDcgKzMsNyBAQAogICogICAgICAgICAgIChDKSAxOTk5
IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAw
IFNpbW9uIEhhdXNtYW5uIChoYXVzbWFubkBrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAx
IERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAyMDA0LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0
LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCisjaW5jbHVk
ZSAiSlNIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKICNp
bmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgpAQCAtOTYsNDYgKzk3LDE5IEBAIHZvaWQgSFRNTEJvZHlFbGVtZW50Ojpjb2xsZWN0
UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lCiAgICAg
ICAgIEhUTUxFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShu
YW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCi1IVE1MRWxlbWVudDo6RXZlbnRIYW5kbGVyTmFtZU1h
cCBIVE1MQm9keUVsZW1lbnQ6OmNyZWF0ZVdpbmRvd0V2ZW50SGFuZGxlck5hbWVNYXAoKQotewot
ICAgIHN0YXRpYyBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCB0YWJsZVtdID0gewotICAgICAg
ICAmb25hZnRlcnByaW50QXR0ci5nZXQoKSwKLSAgICAgICAgJm9uYmVmb3JlcHJpbnRBdHRyLmdl
dCgpLAotICAgICAgICAmb25iZWZvcmV1bmxvYWRBdHRyLmdldCgpLAotICAgICAgICAmb25ibHVy
QXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZXJyb3JBdHRyLmdldCgpLAotICAgICAgICAmb25mb2N1
c0F0dHIuZ2V0KCksCi0gICAgICAgICZvbmZvY3VzaW5BdHRyLmdldCgpLAotICAgICAgICAmb25m
b2N1c291dEF0dHIuZ2V0KCksCi0gICAgICAgICZvbmhhc2hjaGFuZ2VBdHRyLmdldCgpLAotICAg
ICAgICAmb25sYW5ndWFnZWNoYW5nZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbmxvYWRBdHRyLmdl
dCgpLAotICAgICAgICAmb25tZXNzYWdlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ub2ZmbGluZUF0
dHIuZ2V0KCksCi0gICAgICAgICZvbm9ubGluZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbm9yaWVu
dGF0aW9uY2hhbmdlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ucGFnZWhpZGVBdHRyLmdldCgpLAot
ICAgICAgICAmb25wYWdlc2hvd0F0dHIuZ2V0KCksCi0gICAgICAgICZvbnBvcHN0YXRlQXR0ci5n
ZXQoKSwKLSAgICAgICAgJm9ucmVzaXplQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uc2Nyb2xsQXR0
ci5nZXQoKSwKLSAgICAgICAgJm9uc3RvcmFnZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnVubG9h
ZEF0dHIuZ2V0KCksCi0gICAgICAgICZvbndlYmtpdG1vdXNlZm9yY2VjaGFuZ2VkQXR0ci5nZXQo
KSwKLSAgICAgICAgJm9ud2Via2l0bW91c2Vmb3JjZWRvd25BdHRyLmdldCgpLAotICAgICAgICAm
b253ZWJraXRtb3VzZWZvcmNldXBBdHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRtb3VzZWZv
cmNld2lsbGJlZ2luQXR0ci5nZXQoKSwKLSAgICB9OwotCi0gICAgRXZlbnRIYW5kbGVyTmFtZU1h
cCBtYXA7Ci0gICAgcG9wdWxhdGVFdmVudEhhbmRsZXJOYW1lTWFwKG1hcCwgdGFibGUpOwotICAg
IHJldHVybiBtYXA7Ci19Ci0KIGNvbnN0IEF0b21TdHJpbmcmIEhUTUxCb2R5RWxlbWVudDo6ZXZl
bnROYW1lRm9yV2luZG93RXZlbnRIYW5kbGVyQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEV2ZW50SGFuZGxl
ck5hbWVNYXA+IG1hcCA9IGNyZWF0ZVdpbmRvd0V2ZW50SGFuZGxlck5hbWVNYXAoKTsKLSAgICBy
ZXR1cm4gZXZlbnROYW1lRm9yRXZlbnRIYW5kbGVyQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG1h
cC5nZXQoKSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkIG1hcCA9IFtdIHsKKyAgICAgICAg
RXZlbnRIYW5kbGVyTmFtZU1hcCBtYXA7CisgICAgICAgIEpTSFRNTEJvZHlFbGVtZW50Ojpmb3JF
YWNoV2luZG93RXZlbnRIYW5kbGVyQ29udGVudEF0dHJpYnV0ZShbJl0gKGNvbnN0IEF0b21TdHJp
bmcmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSkgeworICAgICAg
ICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBzcGVjaWFsIGNhc2VzLiBUaGVzZSBoYXZlIGhh
cyBhbiBbV2luZG93RXZlbnRIYW5kbGVyXSBsaW5lIGluIHRoZSBJREwgYnV0IHdlcmUgbm90IGlu
IHRoaXMgbWFwIGJlZm9yZSwgc28gdGhpcyBwcmVzZXJ2ZXMgYmVoYXZpb3IuCisgICAgICAgICAg
ICBpZiAoYXR0cmlidXRlTmFtZSA9PSBvbnJlamVjdGlvbmhhbmRsZWRBdHRyLmdldCgpLmxvY2Fs
TmFtZSgpIHx8IGF0dHJpYnV0ZU5hbWUgPT0gb251bmhhbmRsZWRyZWplY3Rpb25BdHRyLmdldCgp
LmxvY2FsTmFtZSgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1hcC5h
ZGQoYXR0cmlidXRlTmFtZS5pbXBsKCksIGV2ZW50TmFtZSk7CisgICAgICAgIH0pOworICAgICAg
ICByZXR1cm4gbWFwOworICAgIH0oKTsKKyAgICByZXR1cm4gZXZlbnROYW1lRm9yRXZlbnRIYW5k
bGVyQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG1hcCk7CiB9CiAKIHZvaWQgSFRNTEJvZHlFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
U3RyaW5nJiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJvZHlF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5oCmluZGV4IGVh
Nzg5ODI5ZjE0NjI3NjljMGQyOWIyMWRhZjYyZTBmNzQ0NTJhM2YuLjM1ZjExMzZmN2I5ZGI1MDcz
YzU1OTEwNWVjNjNjZmNjNzUxZmU1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEJvZHlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1l
bnQuaApAQCAtNTEsOCArNTEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgc3VwcG9ydHNGb2N1cygp
IGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlz
dEhhc2hTZXQ8VVJMPiYpIGNvbnN0IGZpbmFsOwotCi0gICAgc3RhdGljIEV2ZW50SGFuZGxlck5h
bWVNYXAgY3JlYXRlV2luZG93RXZlbnRIYW5kbGVyTmFtZU1hcCgpOwogfTsKIAogfSAvL25hbWVz
cGFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaWRs
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuaWRsCmluZGV4IDRlOTgxYTY0
ZjhhYjJhOWVlMjhlNzNiODI1NWYzY2M4NWQ0ZjUxYjAuLjliZWI4NTUwOTZiMmIzMjAyNjgwM2E1
ZDY3MTAyYWNkYTJmODQ1MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJv
ZHlFbGVtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5p
ZGwKQEAgLTE5LDcgKzE5LDggQEAKICAqLwogCiBbCi0gICAgRXhwb3NlZD1XaW5kb3cKKyAgICBF
eHBvc2VkPVdpbmRvdywKKyAgICBHZW5lcmF0ZUZvckVhY2hXaW5kb3dFdmVudEhhbmRsZXJDb250
ZW50QXR0cmlidXRlLAogXSBpbnRlcmZhY2UgSFRNTEJvZHlFbGVtZW50IDogSFRNTEVsZW1lbnQg
ewogICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIFJlZmxlY3RdIGF0dHJpYnV0ZSBbTGVnYWN5
TnVsbFRvRW1wdHlTdHJpbmddIERPTVN0cmluZyBhTGluazsKICAgICBbQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkLCBSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGJhY2tncm91bmQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuY3BwCmluZGV4IGY1MDcyMzU0NDEzYjBjMmUxNjk1NWRhZmMxMmUx
ZDI5NDg3ZDY5ZWYuLmNmNjdkYzU0MzQ0M2YxNGQ5YjU3MzkzZjRlM2Y2OTU2ODAyYTgzZWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAg
IChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogQ29weXJpZ2h0
IChDKSAyMDA0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA0LTIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29w
eXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuICho
dHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTW90b3Jv
bGEgTW9iaWxpdHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgpAQCAtNjEsNiArNjEsNyBAQAog
I2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlT3ZlcmxheS5oIgorI2luY2x1ZGUgIkpT
SFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJNZWRpYUNvbnRyb2xzSG9zdC5oIgogI2luY2x1ZGUg
Ik5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBAIC0yNDAsMTY3
ICsyNDEsNiBAQCB2b2lkIEhUTUxFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0Zv
ckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYQogICAgICAgICBTdHlsZWRFbGVtZW50
Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5
bGUpOwogfQogCi1IVE1MRWxlbWVudDo6RXZlbnRIYW5kbGVyTmFtZU1hcCBIVE1MRWxlbWVudDo6
Y3JlYXRlRXZlbnRIYW5kbGVyTmFtZU1hcCgpCi17Ci0gICAgRXZlbnRIYW5kbGVyTmFtZU1hcCBt
YXA7Ci0KLSAgICBzdGF0aWMgY29uc3QgUXVhbGlmaWVkTmFtZSogY29uc3QgdGFibGVbXSA9IHsK
LSAgICAgICAgJm9uYWJvcnRBdHRyLmdldCgpLAotICAgICAgICAmb25hbmltYXRpb25lbmRBdHRy
LmdldCgpLAotICAgICAgICAmb25hbmltYXRpb25pdGVyYXRpb25BdHRyLmdldCgpLAotICAgICAg
ICAmb25hbmltYXRpb25zdGFydEF0dHIuZ2V0KCksCi0gICAgICAgICZvbmFuaW1hdGlvbmNhbmNl
bEF0dHIuZ2V0KCksCi0gICAgICAgICZvbmF1dG9jb21wbGV0ZUF0dHIuZ2V0KCksCi0gICAgICAg
ICZvbmF1dG9jb21wbGV0ZWVycm9yQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uYmVmb3JlY29weUF0
dHIuZ2V0KCksCi0gICAgICAgICZvbmJlZm9yZWN1dEF0dHIuZ2V0KCksCi0gICAgICAgICZvbmJl
Zm9yZWlucHV0QXR0ci5nZXQoKSwKLSAgICAgICAgJm9uYmVmb3JlbG9hZEF0dHIuZ2V0KCksCi0g
ICAgICAgICZvbmJlZm9yZXBhc3RlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uYmx1ckF0dHIuZ2V0
KCksCi0gICAgICAgICZvbmNhbmNlbEF0dHIuZ2V0KCksCi0gICAgICAgICZvbmNhbnBsYXlBdHRy
LmdldCgpLAotICAgICAgICAmb25jYW5wbGF5dGhyb3VnaEF0dHIuZ2V0KCksCi0gICAgICAgICZv
bmNoYW5nZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbmNsaWNrQXR0ci5nZXQoKSwKLSAgICAgICAg
Jm9uY2xvc2VBdHRyLmdldCgpLAotICAgICAgICAmb25jb250ZXh0bWVudUF0dHIuZ2V0KCksCi0g
ICAgICAgICZvbmNvcHlBdHRyLmdldCgpLAotICAgICAgICAmb25jdXRBdHRyLmdldCgpLAotICAg
ICAgICAmb25kYmxjbGlja0F0dHIuZ2V0KCksCi0gICAgICAgICZvbmRyYWdBdHRyLmdldCgpLAot
ICAgICAgICAmb25kcmFnZW5kQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZHJhZ2VudGVyQXR0ci5n
ZXQoKSwKLSAgICAgICAgJm9uZHJhZ2xlYXZlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZHJhZ292
ZXJBdHRyLmdldCgpLAotICAgICAgICAmb25kcmFnc3RhcnRBdHRyLmdldCgpLAotICAgICAgICAm
b25kcm9wQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZHVyYXRpb25jaGFuZ2VBdHRyLmdldCgpLAot
ICAgICAgICAmb25lbXB0aWVkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZW5kZWRBdHRyLmdldCgp
LAotICAgICAgICAmb25lcnJvckF0dHIuZ2V0KCksCi0gICAgICAgICZvbmZvY3VzQXR0ci5nZXQo
KSwKLSAgICAgICAgJm9uZm9jdXNpbkF0dHIuZ2V0KCksCi0gICAgICAgICZvbmZvY3Vzb3V0QXR0
ci5nZXQoKSwKLSAgICAgICAgJm9uZm9ybWRhdGFBdHRyLmdldCgpLAotICAgICAgICAmb25nZXN0
dXJlY2hhbmdlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uZ2VzdHVyZWVuZEF0dHIuZ2V0KCksCi0g
ICAgICAgICZvbmdlc3R1cmVzdGFydEF0dHIuZ2V0KCksCi0gICAgICAgICZvbmdvdHBvaW50ZXJj
YXB0dXJlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uaW5wdXRBdHRyLmdldCgpLAotICAgICAgICAm
b25pbnZhbGlkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ua2V5ZG93bkF0dHIuZ2V0KCksCi0gICAg
ICAgICZvbmtleXByZXNzQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ua2V5dXBBdHRyLmdldCgpLAot
ICAgICAgICAmb25sb2FkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ubG9hZGVkZGF0YUF0dHIuZ2V0
KCksCi0gICAgICAgICZvbmxvYWRlZG1ldGFkYXRhQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ubG9h
ZHN0YXJ0QXR0ci5nZXQoKSwKLSAgICAgICAgJm9ubG9zdHBvaW50ZXJjYXB0dXJlQXR0ci5nZXQo
KSwKLSAgICAgICAgJm9ubW91c2Vkb3duQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ubW91c2VlbnRl
ckF0dHIuZ2V0KCksCi0gICAgICAgICZvbm1vdXNlbGVhdmVBdHRyLmdldCgpLAotICAgICAgICAm
b25tb3VzZW1vdmVBdHRyLmdldCgpLAotICAgICAgICAmb25tb3VzZW91dEF0dHIuZ2V0KCksCi0g
ICAgICAgICZvbm1vdXNlb3ZlckF0dHIuZ2V0KCksCi0gICAgICAgICZvbm1vdXNldXBBdHRyLmdl
dCgpLAotICAgICAgICAmb25tb3VzZXdoZWVsQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ucGFzdGVB
dHRyLmdldCgpLAotICAgICAgICAmb25wYXVzZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnBsYXlB
dHRyLmdldCgpLAotICAgICAgICAmb25wbGF5aW5nQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ucG9p
bnRlcmRvd25BdHRyLmdldCgpLAotICAgICAgICAmb25wb2ludGVybW92ZUF0dHIuZ2V0KCksCi0g
ICAgICAgICZvbnBvaW50ZXJ1cEF0dHIuZ2V0KCksCi0gICAgICAgICZvbnBvaW50ZXJjYW5jZWxB
dHRyLmdldCgpLAotICAgICAgICAmb25wb2ludGVyb3ZlckF0dHIuZ2V0KCksCi0gICAgICAgICZv
bnBvaW50ZXJvdXRBdHRyLmdldCgpLAotICAgICAgICAmb25wb2ludGVyZW50ZXJBdHRyLmdldCgp
LAotICAgICAgICAmb25wb2ludGVybGVhdmVBdHRyLmdldCgpLAotICAgICAgICAmb25wcm9ncmVz
c0F0dHIuZ2V0KCksCi0gICAgICAgICZvbnJhdGVjaGFuZ2VBdHRyLmdldCgpLAotICAgICAgICAm
b25yZXNldEF0dHIuZ2V0KCksCi0gICAgICAgICZvbnJlc2l6ZUF0dHIuZ2V0KCksCi0gICAgICAg
ICZvbnNjcm9sbEF0dHIuZ2V0KCksCi0gICAgICAgICZvbnNlYXJjaEF0dHIuZ2V0KCksCi0gICAg
ICAgICZvbnNlY3VyaXR5cG9saWN5dmlvbGF0aW9uQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uc2Vl
a2VkQXR0ci5nZXQoKSwKLSAgICAgICAgJm9uc2Vla2luZ0F0dHIuZ2V0KCksCi0gICAgICAgICZv
bnNlbGVjdEF0dHIuZ2V0KCksCi0gICAgICAgICZvbnNlbGVjdGlvbmNoYW5nZUF0dHIuZ2V0KCks
Ci0gICAgICAgICZvbnNlbGVjdHN0YXJ0QXR0ci5nZXQoKSwKLSAgICAgICAgJm9uc2xvdGNoYW5n
ZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnN0YWxsZWRBdHRyLmdldCgpLAotICAgICAgICAmb25z
dWJtaXRBdHRyLmdldCgpLAotICAgICAgICAmb25zdXNwZW5kQXR0ci5nZXQoKSwKLSAgICAgICAg
Jm9udGltZXVwZGF0ZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbnRvZ2dsZUF0dHIuZ2V0KCksCi0g
ICAgICAgICZvbnRvdWNoY2FuY2VsQXR0ci5nZXQoKSwKLSAgICAgICAgJm9udG91Y2hlbmRBdHRy
LmdldCgpLAotICAgICAgICAmb250b3VjaGZvcmNlY2hhbmdlQXR0ci5nZXQoKSwKLSAgICAgICAg
Jm9udG91Y2htb3ZlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9udG91Y2hzdGFydEF0dHIuZ2V0KCks
Ci0gICAgICAgICZvbnRyYW5zaXRpb25jYW5jZWxBdHRyLmdldCgpLAotICAgICAgICAmb250cmFu
c2l0aW9uZW5kQXR0ci5nZXQoKSwKLSAgICAgICAgJm9udHJhbnNpdGlvbnJ1bkF0dHIuZ2V0KCks
Ci0gICAgICAgICZvbnRyYW5zaXRpb25zdGFydEF0dHIuZ2V0KCksCi0gICAgICAgICZvbnZvbHVt
ZWNoYW5nZUF0dHIuZ2V0KCksCi0gICAgICAgICZvbndhaXRpbmdBdHRyLmdldCgpLAotICAgICAg
ICAmb253ZWJraXRiZWdpbmZ1bGxzY3JlZW5BdHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRj
dXJyZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZEF0dHIuZ2V0KCksCi0gICAgICAg
ICZvbndlYmtpdGVuZGZ1bGxzY3JlZW5BdHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRmdWxs
c2NyZWVuY2hhbmdlQXR0ci5nZXQoKSwKLSAgICAgICAgJm9ud2Via2l0ZnVsbHNjcmVlbmVycm9y
QXR0ci5nZXQoKSwKLSAgICAgICAgJm9ud2Via2l0a2V5YWRkZWRBdHRyLmdldCgpLAotICAgICAg
ICAmb253ZWJraXRrZXllcnJvckF0dHIuZ2V0KCksCi0gICAgICAgICZvbndlYmtpdGtleW1lc3Nh
Z2VBdHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRtb3VzZWZvcmNlY2hhbmdlZEF0dHIuZ2V0
KCksCi0gICAgICAgICZvbndlYmtpdG1vdXNlZm9yY2Vkb3duQXR0ci5nZXQoKSwKLSAgICAgICAg
Jm9ud2Via2l0bW91c2Vmb3JjZXdpbGxiZWdpbkF0dHIuZ2V0KCksCi0gICAgICAgICZvbndlYmtp
dG1vdXNlZm9yY2V1cEF0dHIuZ2V0KCksCi0gICAgICAgICZvbndlYmtpdG5lZWRrZXlBdHRyLmdl
dCgpLAotICAgICAgICAmb253ZWJraXRwbGF5YmFja3RhcmdldGF2YWlsYWJpbGl0eWNoYW5nZWRB
dHRyLmdldCgpLAotICAgICAgICAmb253ZWJraXRwcmVzZW50YXRpb25tb2RlY2hhbmdlZEF0dHIu
Z2V0KCksCi0gICAgICAgICZvbndoZWVsQXR0ci5nZXQoKSwKLSAgICB9OwotCi0gICAgcG9wdWxh
dGVFdmVudEhhbmRsZXJOYW1lTWFwKG1hcCwgdGFibGUpOwotCi0gICAgc3RydWN0IFVudXN1YWxN
YXBwaW5nIHsKLSAgICAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZTsKLSAg
ICAgICAgY29uc3QgQXRvbVN0cmluZyYgZXZlbnROYW1lOwotICAgIH07Ci0KLSAgICBjb25zdCBV
bnVzdWFsTWFwcGluZyB1bnVzdWFsUGFpcnNUYWJsZVtdID0gewotICAgICAgICB7IG9ud2Via2l0
YW5pbWF0aW9uZW5kQXR0ciwgZXZlbnROYW1lcygpLndlYmtpdEFuaW1hdGlvbkVuZEV2ZW50IH0s
Ci0gICAgICAgIHsgb253ZWJraXRhbmltYXRpb25pdGVyYXRpb25BdHRyLCBldmVudE5hbWVzKCku
d2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uRXZlbnQgfSwKLSAgICAgICAgeyBvbndlYmtpdGFuaW1h
dGlvbnN0YXJ0QXR0ciwgZXZlbnROYW1lcygpLndlYmtpdEFuaW1hdGlvblN0YXJ0RXZlbnQgfSwK
LSAgICAgICAgeyBvbndlYmtpdHRyYW5zaXRpb25lbmRBdHRyLCBldmVudE5hbWVzKCkud2Via2l0
VHJhbnNpdGlvbkVuZEV2ZW50IH0sCi0gICAgfTsKLQotICAgIGZvciAoYXV0byYgZW50cnkgOiB1
bnVzdWFsUGFpcnNUYWJsZSkKLSAgICAgICAgbWFwLmFkZChlbnRyeS5hdHRyaWJ1dGVOYW1lLmxv
Y2FsTmFtZSgpLmltcGwoKSwgZW50cnkuZXZlbnROYW1lKTsKLQotICAgIHJldHVybiBtYXA7Ci19
Ci0KLXZvaWQgSFRNTEVsZW1lbnQ6OnBvcHVsYXRlRXZlbnRIYW5kbGVyTmFtZU1hcChFdmVudEhh
bmRsZXJOYW1lTWFwJiBtYXAsIGNvbnN0IFF1YWxpZmllZE5hbWUqIGNvbnN0IHRhYmxlW10sIHNp
emVfdCB0YWJsZVNpemUpCi17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0YWJsZVNpemU7
ICsraSkgewotICAgICAgICBhdXRvKiBlbnRyeSA9IHRhYmxlW2ldOwotCi0gICAgICAgIC8vIEZJ
WE1FOiBXb3VsZCBiZSBuaWNlIHRvIGNoZWNrIHRoZXNlIGFnYWluc3QgdGhlIGFjdHVhbCBldmVu
dCBuYW1lcyBpbiBldmVudE5hbWVzKCkuCi0gICAgICAgIC8vIE5vdCBvYnZpb3VzIGhvdyB0byBk
byB0aGF0IHNpbXBseSwgdGhvdWdoLgotICAgICAgICBhdXRvJiBhdHRyaWJ1dGVOYW1lID0gZW50
cnktPmxvY2FsTmFtZSgpOwotCi0gICAgICAgIC8vIFJlbW92ZSB0aGUgIm9uIiBwcmVmaXguIFJl
cXVpcmVzIHNvbWUgbWVtb3J5IGFsbG9jYXRpb24gYW5kIGNvbXB1dGluZyBhIGhhc2gsIGJ1dCBi
eSBub3QKLSAgICAgICAgLy8gdXNpbmcgcG9pbnRlcnMgZnJvbSBldmVudE5hbWVzKCksIHRoZSBw
YXNzZWQtaW4gdGFibGUgY2FuIGJlIGluaXRpYWxpemVkIGF0IGNvbXBpbGUgdGltZS4KLSAgICAg
ICAgQXRvbVN0cmluZyBldmVudE5hbWUgPSBhdHRyaWJ1dGVOYW1lLnN0cmluZygpLnN1YnN0cmlu
ZygyKTsKLQotICAgICAgICBtYXAuYWRkKGF0dHJpYnV0ZU5hbWUuaW1wbCgpLCBXVEZNb3ZlKGV2
ZW50TmFtZSkpOwotICAgIH0KLX0KLQogY29uc3QgQXRvbVN0cmluZyYgSFRNTEVsZW1lbnQ6OmV2
ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lLCBjb25zdCBFdmVudEhhbmRsZXJOYW1lTWFwJiBtYXApCiB7CiAgICAgQVNTRVJU
KCFhdHRyaWJ1dGVOYW1lLmxvY2FsTmFtZSgpLmlzTnVsbCgpKTsKQEAgLTQyMCw4ICsyNjAsNDMg
QEAgY29uc3QgQXRvbVN0cmluZyYgSFRNTEVsZW1lbnQ6OmV2ZW50TmFtZUZvckV2ZW50SGFuZGxl
ckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWQKIAogY29uc3QgQXRvbVN0cmluZyYgSFRNTEVsZW1l
bnQ6OmV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxFdmVudEhhbmRs
ZXJOYW1lTWFwPiBtYXAgPSBjcmVhdGVFdmVudEhhbmRsZXJOYW1lTWFwKCk7Ci0gICAgcmV0dXJu
IGV2ZW50TmFtZUZvckV2ZW50SGFuZGxlckF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCBtYXAuZ2V0
KCkpOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZCBtYXAgPSBbXSB7CisgICAgICAgIEV2ZW50
SGFuZGxlck5hbWVNYXAgbWFwOworICAgICAgICBKU0hUTUxFbGVtZW50Ojpmb3JFYWNoRXZlbnRI
YW5kbGVyQ29udGVudEF0dHJpYnV0ZShbJl0gKGNvbnN0IEF0b21TdHJpbmcmIGF0dHJpYnV0ZU5h
bWUsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50TmFtZSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IFJlbW92ZSB0aGlzIHNwZWNpYWwgY2FzZS4gVGhpcyBoYXMgYW4gW0V2ZW50SGFuZGxlcl0gbGlu
ZSBpbiB0aGUgSURMIGJ1dCB3YXMgbm90IGhpc3RvcmljYWxseSBpbiB0aGlzIG1hcC4KKyAgICAg
ICAgICAgIGlmIChhdHRyaWJ1dGVOYW1lID09IG9uY3VlY2hhbmdlQXR0ci5nZXQoKS5sb2NhbE5h
bWUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtYXAuYWRkKGF0dHJp
YnV0ZU5hbWUuaW1wbCgpLCBldmVudE5hbWUpOworICAgICAgICB9KTsKKyAgICAgICAgLy8gRklY
TUU6IFJlbW92ZSB0aGVzZSBzcGVjaWFsIGNhc2VzLiBUaGVzZSBhcmUgbm90IGluIElETCB3aXRo
IFtFdmVudEhhbmRsZXJdIGJ1dCB3ZXJlIGhpc3RvcmljYWxseSBpbiB0aGlzIG1hcC4KKyAgICAg
ICAgc3RhdGljIGNvbnN0ZXhwciBjb25zdCBMYXp5TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgUXVhbGlm
aWVkTmFtZT4qIHRhYmxlW10gPSB7CisgICAgICAgICAgICAmb25hdXRvY29tcGxldGVBdHRyLAor
ICAgICAgICAgICAgJm9uYXV0b2NvbXBsZXRlZXJyb3JBdHRyLAorICAgICAgICAgICAgJm9uYmVm
b3JlbG9hZEF0dHIsCisgICAgICAgICAgICAmb25mb2N1c2luQXR0ciwKKyAgICAgICAgICAgICZv
bmZvY3Vzb3V0QXR0ciwKKyAgICAgICAgICAgICZvbmdlc3R1cmVjaGFuZ2VBdHRyLAorICAgICAg
ICAgICAgJm9uZ2VzdHVyZWVuZEF0dHIsCisgICAgICAgICAgICAmb25nZXN0dXJlc3RhcnRBdHRy
LAorICAgICAgICAgICAgJm9ud2Via2l0YmVnaW5mdWxsc2NyZWVuQXR0ciwKKyAgICAgICAgICAg
ICZvbndlYmtpdGN1cnJlbnRwbGF5YmFja3RhcmdldGlzd2lyZWxlc3NjaGFuZ2VkQXR0ciwKKyAg
ICAgICAgICAgICZvbndlYmtpdGVuZGZ1bGxzY3JlZW5BdHRyLAorICAgICAgICAgICAgJm9ud2Vi
a2l0ZnVsbHNjcmVlbmNoYW5nZUF0dHIsCisgICAgICAgICAgICAmb253ZWJraXRmdWxsc2NyZWVu
ZXJyb3JBdHRyLAorICAgICAgICAgICAgJm9ud2Via2l0a2V5YWRkZWRBdHRyLAorICAgICAgICAg
ICAgJm9ud2Via2l0a2V5ZXJyb3JBdHRyLAorICAgICAgICAgICAgJm9ud2Via2l0a2V5bWVzc2Fn
ZUF0dHIsCisgICAgICAgICAgICAmb253ZWJraXRuZWVka2V5QXR0ciwKKyAgICAgICAgICAgICZv
bndlYmtpdHBsYXliYWNrdGFyZ2V0YXZhaWxhYmlsaXR5Y2hhbmdlZEF0dHIsCisgICAgICAgICAg
ICAmb253ZWJraXRwcmVzZW50YXRpb25tb2RlY2hhbmdlZEF0dHIsCisgICAgICAgIH07CisgICAg
ICAgIGZvciAoYXV0byYgZW50cnkgOiB0YWJsZSkgeworICAgICAgICAgICAgYXV0byogbmFtZSA9
IGVudHJ5LT5nZXQoKS5sb2NhbE5hbWUoKS5pbXBsKCk7CisgICAgICAgICAgICBtYXAuYWRkKG5h
bWUsIEF0b21TdHJpbmcgeyBuYW1lLCAyLCBTdHJpbmc6Ok1heExlbmd0aCB9KTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gbWFwOworICAgIH0oKTsKKyAgICByZXR1cm4gZXZlbnROYW1lRm9y
RXZlbnRIYW5kbGVyQXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIG1hcCk7CiB9CiAKIE5vZGU6OkVk
aXRhYmlsaXR5IEhUTUxFbGVtZW50OjplZGl0YWJpbGl0eUZyb21Db250ZW50RWRpdGFibGVBdHRy
KGNvbnN0IE5vZGUmIG5vZGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgKaW5kZXggMjg2OTQy
ODFjMThmNTlhNjg2ZWNmNTEyZDY2ZjdkZjhiOThjNTcxYi4uMmIzYTdlYmYwMTg0YTVjNzZmYTM1
Yjk2ZGU4YWNlMDQ1N2ZjOGI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaApAQCAtMTYx
LDggKzE2MSw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2FsY3VsYXRlQW5kQWRqdXN0RGlyZWN0
aW9uYWxpdHkoKTsKIAotICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9tU3RyaW5nSW1wbCosIEF0b21T
dHJpbmc+IEV2ZW50SGFuZGxlck5hbWVNYXA7Ci0gICAgdGVtcGxhdGU8c2l6ZV90IHRhYmxlU2l6
ZT4gc3RhdGljIHZvaWQgcG9wdWxhdGVFdmVudEhhbmRsZXJOYW1lTWFwKEV2ZW50SGFuZGxlck5h
bWVNYXAmLCBjb25zdCBRdWFsaWZpZWROYW1lKiBjb25zdCAoJnRhYmxlKVt0YWJsZVNpemVdKTsK
KyAgICB1c2luZyBFdmVudEhhbmRsZXJOYW1lTWFwID0gSGFzaE1hcDxBdG9tU3RyaW5nSW1wbCos
IEF0b21TdHJpbmc+OwogICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBldmVudE5hbWVGb3JF
dmVudEhhbmRsZXJBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSwg
Y29uc3QgRXZlbnRIYW5kbGVyTmFtZU1hcCYpOwogCiBwcml2YXRlOgpAQCAtMTc1LDkgKzE3NCw2
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhZGp1c3REaXJlY3Rpb25hbGl0eUlmTmVlZGVkQWZ0ZXJD
aGlsZHJlbkNoYW5nZWQoRWxlbWVudCogYmVmb3JlQ2hhbmdlLCBDaGlsZENoYW5nZTo6VHlwZSk7
CiAgICAgVGV4dERpcmVjdGlvbiBkaXJlY3Rpb25hbGl0eShOb2RlKiogc3Ryb25nRGlyZWN0aW9u
YWxpdHlUZXh0Tm9kZT0gMCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgdm9pZCBwb3B1bGF0ZUV2ZW50
SGFuZGxlck5hbWVNYXAoRXZlbnRIYW5kbGVyTmFtZU1hcCYsIGNvbnN0IFF1YWxpZmllZE5hbWUq
IGNvbnN0IHRhYmxlW10sIHNpemVfdCB0YWJsZVNpemUpOwotICAgIHN0YXRpYyBFdmVudEhhbmRs
ZXJOYW1lTWFwIGNyZWF0ZUV2ZW50SGFuZGxlck5hbWVNYXAoKTsKLQogICAgIGVudW0gY2xhc3Mg
QWxsb3dQZXJjZW50YWdlIDogYm9vbCB7IE5vLCBZZXMgfTsKICAgICBlbnVtIGNsYXNzIFVzZUNT
U1BYQXNVbml0VHlwZSA6IGJvb2wgeyBObywgWWVzIH07CiAgICAgZW51bSBjbGFzcyBJc011bHRp
TGVuZ3RoIDogYm9vbCB7IE5vLCBZZXMgfTsKQEAgLTE5MCwxMSArMTg2LDYgQEAgaW5saW5lIEhU
TUxFbGVtZW50OjpIVE1MRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCYgZG9jdW1lbnQKICAgICBBU1NFUlQodGFnTmFtZS5sb2NhbE5hbWUoKS5pbXBsKCkpOwog
fQogCi10ZW1wbGF0ZTxzaXplX3QgdGFibGVTaXplPiBpbmxpbmUgdm9pZCBIVE1MRWxlbWVudDo6
cG9wdWxhdGVFdmVudEhhbmRsZXJOYW1lTWFwKEV2ZW50SGFuZGxlck5hbWVNYXAmIG1hcCwgY29u
c3QgUXVhbGlmaWVkTmFtZSogY29uc3QgKCZ0YWJsZSlbdGFibGVTaXplXSkKLXsKLSAgICBwb3B1
bGF0ZUV2ZW50SGFuZGxlck5hbWVNYXAobWFwLCB0YWJsZSwgdGFibGVTaXplKTsKLX0KLQogaW5s
aW5lIGJvb2wgTm9kZTo6aGFzVGFnTmFtZShjb25zdCBIVE1MUXVhbGlmaWVkTmFtZSYgbmFtZSkg
Y29uc3QKIHsKICAgICByZXR1cm4gaXM8SFRNTEVsZW1lbnQ+KCp0aGlzKSAmJiBkb3duY2FzdDxI
VE1MRWxlbWVudD4oKnRoaXMpLmhhc1RhZ05hbWUobmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVs
ZW1lbnQuaWRsCmluZGV4IDM1MGY1NTNiYTEyZTdlOWRjMzZmYzI3YWFkZDk1ZjQyNDQ4OTZhNjUu
LjJkZjlmYmZkZWRkZTMxZGM4ZmE0MWJmYmVmZTYzMjUwMTljYjk4MGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuaWRsCkBAIC0yMSw4ICsyMSw5IEBACiBbCiAgICAgQ3VzdG9tUHVzaEV2
ZW50SGFuZGxlclNjb3BlLAogICAgIEV4cG9ydE1hY3JvPVdFQkNPUkVfRVhQT1JULAorICAgIEV4
cG9zZWQ9V2luZG93LAorICAgIEdlbmVyYXRlRm9yRWFjaEV2ZW50SGFuZGxlckNvbnRlbnRBdHRy
aWJ1dGUsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2JqZWN0LAotICAgIEV4cG9zZWQ9V2luZG93
CiBdIGludGVyZmFjZSBIVE1MRWxlbWVudCA6IEVsZW1lbnQgewogICAgIFtDdXN0b21dIGNvbnN0
cnVjdG9yKCk7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>