<?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>129250</bug_id>
          
          <creation_ts>2014-02-24 01:17:35 -0800</creation_ts>
          <short_desc>[ATK] Utilize AtkTableCell to expose directly AccessibilityTableCell to AT.</short_desc>
          <delta_ts>2014-02-27 03:23:05 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Linux</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="Krzysztof Czech">k.czech</reporter>
          <assigned_to name="Krzysztof Czech">k.czech</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>bunhere</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>rakuco</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>983830</commentid>
    <comment_count>0</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-02-24 01:17:35 -0800</bug_when>
    <thetext>ATK 2.11.90 introduces AtkTableCell interface so that AccessibilityTableCell could be directly exposed to ATs, at least some of its functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>983831</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-02-24 01:17:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/16145947&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984695</commentid>
    <comment_count>2</comment_count>
      <attachid>225244</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-02-26 01:54:43 -0800</bug_when>
    <thetext>Created attachment 225244
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984696</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-26 01:56:54 -0800</bug_when>
    <thetext>Attachment 225244 did not pass style-queue:


ERROR: Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:1075:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984697</commentid>
    <comment_count>4</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-02-26 01:58:37 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=225244) [details]
&gt; patch
Patch also introduces implementation of methods for getting column/row headers represented as an array of cells.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984698</commentid>
    <comment_count>5</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-02-26 02:00:59 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 225244 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:1075:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
&gt; Total errors found: 1 in 15 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

This is something that is here for a while and I guess it could be changed (or not) in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984703</commentid>
    <comment_count>6</comment_count>
      <attachid>225244</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2014-02-26 03:34:37 -0800</bug_when>
    <thetext>Comment on attachment 225244
patch

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

Looks mostly good to me. I&apos;ve got just a few comments before the r+

&gt; Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceTableCell.cpp:57
&gt; +    if (!axObject || !axObject-&gt;isAccessibilityRenderObject())

You should check isAccessibilityTableCell here, instead of isAccessibilityRenderObject

&gt; Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceTableCell.cpp:72
&gt; +    if (!axObject || !axObject-&gt;isAccessibilityRenderObject())

Ditto.

&gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:488
&gt; +static void convertGPtrArrayToVector(const GPtrArray* array, Vector&lt;AccessibilityUIElement&gt;&amp; elements)

This function is only used from the new code added below, so I think we should put it inside #if ATK_CHECK_VERSION(2,11,90) guards

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:38
&gt; +#include &lt;WebKit2/WKBundleFrame.h&gt;

This include is only used from the new code added below, so I think we should put it inside #if ATK_CHECK_VERSION(2,11,90) guards

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:554
&gt; +static Vector&lt;RefPtr&lt;AccessibilityUIElement&gt;&gt; convertGPtrArrayToVector(const GPtrArray* array)

This function is only used from the new code added below, so I think we should put it inside #if ATK_CHECK_VERSION(2,11,90) guards

&gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:564
&gt; +static JSValueRef convertToJSObjectArray(const Vector&lt;RefPtr&lt;AccessibilityUIElement&gt;&gt;&amp; children)

Ditto

&gt; Tools/efl/jhbuild.modules:344
&gt; +    &lt;branch module=&quot;pub/GNOME/sources/atk/2.11/atk-2.11.90.tar.xz&quot; version=&quot;2.11.9&quot;

version should be &quot;2.11.90&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984705</commentid>
    <comment_count>7</comment_count>
    <who name="Alejandro Piñeiro">apinheiro</who>
    <bug_when>2014-02-26 03:55:45 -0800</bug_when>
    <thetext>First, thanks for working so quick on implementing this interface, officially you are the first ones implementing this interface. You even started before the new API was included on a stable release.

As I said, this is the first implementation of the interface. It is really usual that when you start to implement a new interface, you find some kind of problems. So if that is the case, and you think that there is some problem with the new API, don&apos;t hesitate to comment that. Solving those issues now, when nobody else has implemented it yet, would be easier that in the future. In fact, as this new API was not included on a stable release, it could be possible to change the API without letting deprecated methods around.

And talking about deprecated methods. For your information, as a collateral effect of this new interface, some AtkTable methods were deprecated (like atk_table_get_index_at). Just in case you want to take that into consideration.

Again thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984710</commentid>
    <comment_count>8</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-02-26 04:50:16 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; First, thanks for working so quick on implementing this interface, officially you are the first ones implementing this interface. You even started before the new API was included on a stable release.
Do you suggest to a wait a bit till the stable release comes out ?.
&gt; 
&gt; As I said, this is the first implementation of the interface. It is really usual that when you start to implement a new interface, you find some kind of problems. So if that is the case, and you think that there is some problem with the new API, don&apos;t hesitate to comment that. Solving those issues now, when nobody else has implemented it yet, would be easier that in the future. In fact, as this new API was not included on a stable release, it could be possible to change the API without letting deprecated methods around.
Thanks, frankly speaking everything worked as expected. I did not have any problems when adapting this interface to the WebKit&apos;s world at least when implementing get_row_header_cells and get_column_header_cells. If find some issues I will comment that.
&gt; 
&gt; And talking about deprecated methods. For your information, as a collateral effect of this new interface, some AtkTable methods were deprecated (like atk_table_get_index_at). Just in case you want to take that into consideration.
Yes, I&apos;ve noticed that, I will try to adapt current WebKit&apos;s implementation when possible.
&gt; 
&gt; Again thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984712</commentid>
    <comment_count>9</comment_count>
    <who name="Alejandro Piñeiro">apinheiro</who>
    <bug_when>2014-02-26 04:56:37 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; First, thanks for working so quick on implementing this interface, officially you are the first ones implementing this interface. You even started before the new API was included on a stable release.
&gt; Do you suggest to a wait a bit till the stable release comes out ?.

Oh no, it was a compliment. The earlier someone (in this case you, and thanks) start to do a implementation of the interface on a real use case the better. As I said, that could help us to detect early bugs, and to improve it based on the experience.

&gt; &gt; As I said, this is the first implementation of the interface. It is really usual that when you start to implement a new interface, you find some kind of problems. So if that is the case, and you think that there is some problem with the new API, don&apos;t hesitate to comment that. Solving those issues now, when nobody else has implemented it yet, would be easier that in the future. In fact, as this new API was not included on a stable release, it could be possible to change the API without letting deprecated methods around.
&gt; Thanks, frankly speaking everything worked as expected. I did not have any problems when adapting this interface to the WebKit&apos;s world at least when implementing get_row_header_cells and get_column_header_cells. If find some issues I will comment that.
&gt; &gt; 
&gt; &gt; And talking about deprecated methods. For your information, as a collateral effect of this new interface, some AtkTable methods were deprecated (like atk_table_get_index_at). Just in case you want to take that into consideration.
&gt; Yes, I&apos;ve noticed that, I will try to adapt current WebKit&apos;s implementation when possible.
&gt; &gt; 
&gt; &gt; Again thanks.

Ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984756</commentid>
    <comment_count>10</comment_count>
      <attachid>225260</attachid>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-02-26 09:01:21 -0800</bug_when>
    <thetext>Created attachment 225260
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984757</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-26 09:03:53 -0800</bug_when>
    <thetext>Attachment 225260 did not pass style-queue:


ERROR: Source/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:1075:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>984759</commentid>
    <comment_count>12</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-02-26 09:05:31 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 225244 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=225244&amp;action=review
&gt; 
&gt; Looks mostly good to me. I&apos;ve got just a few comments before the r+
&gt; 
&gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceTableCell.cpp:57
&gt; &gt; +    if (!axObject || !axObject-&gt;isAccessibilityRenderObject())
&gt; 
&gt; You should check isAccessibilityTableCell here, instead of isAccessibilityRenderObject
Done. I used isTableCell()
&gt; 
&gt; &gt; Source/WebCore/accessibility/atk/WebKitAccessibleInterfaceTableCell.cpp:72
&gt; &gt; +    if (!axObject || !axObject-&gt;isAccessibilityRenderObject())
&gt; 
&gt; Ditto.
Done
&gt; 
&gt; &gt; Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:488
&gt; &gt; +static void convertGPtrArrayToVector(const GPtrArray* array, Vector&lt;AccessibilityUIElement&gt;&amp; elements)
&gt; 
&gt; This function is only used from the new code added below, so I think we should put it inside #if ATK_CHECK_VERSION(2,11,90) guards
Done
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:38
&gt; &gt; +#include &lt;WebKit2/WKBundleFrame.h&gt;
&gt; 
&gt; This include is only used from the new code added below, so I think we should put it inside #if ATK_CHECK_VERSION(2,11,90) guards
Done
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:554
&gt; &gt; +static Vector&lt;RefPtr&lt;AccessibilityUIElement&gt;&gt; convertGPtrArrayToVector(const GPtrArray* array)
&gt; 
&gt; This function is only used from the new code added below, so I think we should put it inside #if ATK_CHECK_VERSION(2,11,90) guards
Done
&gt; 
&gt; &gt; Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:564
&gt; &gt; +static JSValueRef convertToJSObjectArray(const Vector&lt;RefPtr&lt;AccessibilityUIElement&gt;&gt;&amp; children)
&gt; 
&gt; Ditto
Done
&gt; 
&gt; &gt; Tools/efl/jhbuild.modules:344
&gt; &gt; +    &lt;branch module=&quot;pub/GNOME/sources/atk/2.11/atk-2.11.90.tar.xz&quot; version=&quot;2.11.9&quot;
&gt; 
&gt; version should be &quot;2.11.90&quot;

Done

Thanks Mario.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985084</commentid>
    <comment_count>13</comment_count>
      <attachid>225260</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2014-02-27 02:09:47 -0800</bug_when>
    <thetext>Comment on attachment 225260
patch

Lgtm. About the style errors, I think we can/should fix that in a separate patch. It&apos;s an implementation file not exposed to GTK/EFL outside worlds at all, so it should be fine using things such as WAIEditableText or the like</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985087</commentid>
    <comment_count>14</comment_count>
    <who name="Krzysztof Czech">k.czech</who>
    <bug_when>2014-02-27 02:19:04 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 225260 [details])
&gt; Lgtm. About the style errors, I think we can/should fix that in a separate patch. It&apos;s an implementation file not exposed to GTK/EFL outside worlds at all, so it should be fine using things such as WAIEditableText or the like

Thanks Mario. This what I thought regarding style errors. I will fix this up in separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985093</commentid>
    <comment_count>15</comment_count>
      <attachid>225260</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-27 03:23:01 -0800</bug_when>
    <thetext>Comment on attachment 225260
patch

Clearing flags on attachment: 225260

Committed r164786: &lt;http://trac.webkit.org/changeset/164786&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>985094</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-27 03:23:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225244</attachid>
            <date>2014-02-26 01:54:43 -0800</date>
            <delta_ts>2014-02-26 09:01:21 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a11y-atktablecell-interface.patch</filename>
            <type>text/plain</type>
            <size>32074</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ODE3MDk5Li5mMGM3ZjY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDIt
MjYgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FU
S10gVXRpbGl6ZSBBdGtUYWJsZUNlbGwgdG8gZXhwb3NlIGRpcmVjdGx5IEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGwgdG8gQVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyOTI1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNoYXJpbmcgdGVzdCB3aXRoIEdUSy9FRkwuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L3RhYmxlLXNjb3BlLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNjb3BlLWV4cGVjdGVkLnR4dC4KKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L3RhYmxlLXNjb3BlLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS1zY29wZS5odG1sLgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOiBTa2lwcGluZyBvbiB3aW5kb3dzLCBt
aXNzaW5nIGltcGxlbWVudGF0aW9uLgorCiAyMDE0LTAyLTI0ICBNaWhhaSBUaWNhICA8bWl0aWNh
QGFkb2JlLmNvbT4KIAogICAgICAgICBbQ1NTIEJsZW5kaW5nXSBBbiBlbGVtZW50IGhhdmluZyAt
d2Via2l0LW1peC1ibGVuZC1tb2RlIHNob3VsZCBvbmx5IGJsZW5kIHdpdGggdGhlIGNvbnRlbnRz
IG9mIHRoZSBwYXJlbnQgc3RhY2tpbmcgY29udGV4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS90YWJsZS1zY29wZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3RhYmxlLXNjb3BlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4wYjhkYzc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS90YWJsZS1zY29wZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyNyBAQAorQ29t
bXVuaXR5IENvdXJzZXMgLS0gQmF0aCBBdXR1bW4gMTk5NworQ291cnNlIE5hbWUJQ291cnNlIFR1
dG9yCVN1bW1hcnkJQ29kZQlGZWUKK0FmdGVyIHRoZSBDaXZpbCBXYXIJRHIuIEpvaG4gV3JvdWdo
dG9uCSBUaGUgY291cnNlIHdpbGwgZXhhbWluZSB0aGUgdHVyYnVsZW50IHllYXJzIGluIEVuZ2xh
bmQgYWZ0ZXIgMTY0Ni4gNiB3ZWVrbHkgbWVldGluZ3Mgc3RhcnRpbmcgTW9uZGF5IDEzdGggT2N0
b2Jlci4JSDI3CcOCwqMzMgnDgsKjMzIKK0FuIEludHJvZHVjdGlvbiB0byBBbmdsby1TYXhvbiBF
bmdsYW5kCU1hcmsgQ290dGxlCSBPbmUgZGF5IGNvdXJzZSBpbnRyb2R1Y2luZyB0aGUgZWFybHkg
bWVkaWV2YWwgcGVyaW9kIHJlY29uc3RydWN0aW9uIHRoZSBBbmdsby1TYXhvbnMgYW5kIHRoZWly
IHNvY2lldHkuIFNhdHVyZGF5IDE4dGggT2N0b2Jlci4JSDI4CcOCwqMxOAnDgsKjMTgKK1RoZSBH
bG9yeSB0aGF0IHdhcyBHcmVlY2UJIEJpcnRocGxhY2Ugb2YgZGVtb2NyYWN5LCBwaGlsb3NvcGh5
LCBoZWFydGxhbmQgb2YgdGhlYXRlciwgaG9tZSBvZiBhcmd1bWVudC4gVGhlIFJvbWFucyBtYXkg
aGF2ZSBkb25lIGl0IGJ1dCB0aGUgR3JlZWtzIGRpZCBpdCBmaXJzdC4gU2F0dXJkYXkgZGF5IHNj
aG9vbCAyNXRoIE9jdG9iZXIgMTk5NwlIMzAJw4LCozE4CcOCwqMxOAorVGhpcyB0ZXN0cyB0aGUg
c2NvcGUgYXR0cmlidXRlIG9uIHRhYmxlIGNlbGxzIHdpbGwgbWFuaWZlc3QgYXMgdGhlIHJpZ2h0
IGhlYWRlciBlbGVtZW50cyBvbiB0aGUgY2VsbHMgaW4gdGhhdCByb3cgb3IgY29sdW1uLgorCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBjb2xIZWFkZXJzWzBdLmlzRXF1YWwo
dGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSkgaXMgdHJ1ZQorUEFTUyBjb2xIZWFkZXJz
WzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSkgaXMgdHJ1ZQorUEFT
UyBjb2xIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSkg
aXMgdHJ1ZQorUEFTUyBjb2xIZWFkZXJzWzFdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFu
ZFJvdygxLCAxKSkgaXMgdHJ1ZQorUEFTUyByb3dIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2Vs
bEZvckNvbHVtbkFuZFJvdygwLCAyKSkgaXMgdHJ1ZQorUEFTUyBjb2xIZWFkZXJzWzBdLmlzRXF1
YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSkgaXMgdHJ1ZQorUEFTUyBjb2xIZWFk
ZXJzWzFdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCAxKSkgaXMgdHJ1ZQor
UEFTUyByb3dIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAz
KSkgaXMgdHJ1ZQorUEFTUyByb3dIZWFkZXJzWzFdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVt
bkFuZFJvdygxLCAzKSkgaXMgdHJ1ZQorUEFTUyByb3dIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUu
Y2VsbEZvckNvbHVtbkFuZFJvdygwLCA0KSkgaXMgdHJ1ZQorUEFTUyByb3dIZWFkZXJzWzFdLmlz
RXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygxLCAzKSkgaXMgdHJ1ZQorUEFTUyBjb2xI
ZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSkgaXMgdHJ1
ZQorUEFTUyBjb2xIZWFkZXJzWzFdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdyg0
LCAxKSkgaXMgdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENP
TVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtc2Nv
cGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtc2NvcGUuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDE4NWFjCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90YWJsZS1zY29wZS5odG1sCkBAIC0wLDAgKzEs
MTEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBpZD0iYm9keSI+CisKKzx0YWJsZSBib3JkZXI9IjEi
IGNlbGxwYWRkaW5nPSI1IiBjZWxsc3BhY2luZz0iMiIgaWQ9InRhYmxlIj4KKyAgPHRib2R5Pjx0
cj4KKyAgICA8dGggY29sc3Bhbj0iNiIgc2NvcGU9ImNvbGdyb3VwIj5Db21tdW5pdHkgQ291cnNl
cyAtLSBCYXRoIEF1dHVtbiAxOTk3PC90aD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0aCBzY29w
ZT0iY29sIiBhYmJyPSJOYW1lIj5Db3Vyc2UgTmFtZTwvdGg+CisgICAgPHRoIHNjb3BlPSJjb2wi
IGFiYnI9IlR1dG9yIj5Db3Vyc2UgVHV0b3I8L3RoPgorICAgIDx0aCBzY29wZT0iY29sIj5TdW1t
YXJ5PC90aD4KKyAgICA8dGggc2NvcGU9ImNvbCI+Q29kZTwvdGg+CisgICAgPHRoIHNjb3BlPSJj
b2wiIGNvbHNwYW49IjIiPkZlZTwvdGg+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQgc2NvcGU9
InJvdyI+QWZ0ZXIgdGhlIENpdmlsIFdhcjwvdGQ+CisgICAgPHRkPkRyLiBKb2huIFdyb3VnaHRv
bjwvdGQ+CisgICAgPHRkPgorICAgICAgIFRoZSBjb3Vyc2Ugd2lsbCBleGFtaW5lIHRoZSB0dXJi
dWxlbnQgeWVhcnMgaW4gRW5nbGFuZAorICAgICAgIGFmdGVyIDE2NDYuIDxlbT42IHdlZWtseSBt
ZWV0aW5ncyBzdGFydGluZyBNb25kYXkgMTN0aAorICAgICAgT2N0b2Jlci48L2VtPgorICAgIDwv
dGQ+CisgICAgPHRkPkgyNzwvdGQ+CisgICAgPHRkPsKjMzI8L3RkPgorICAgIDx0ZD7CozMyPC90
ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZCBzY29wZT0icm93Ij5BbiBJbnRyb2R1Y3Rpb24g
dG8gQW5nbG8tU2F4b24gRW5nbGFuZDwvdGQ+CisgICAgPHRkIHNjb3BlPSJyb3dncm91cCIgcm93
c3Bhbj0iMiI+TWFyayBDb3R0bGU8L3RkPgorICAgIDx0ZD4KKyAgICAgICBPbmUgZGF5IGNvdXJz
ZSBpbnRyb2R1Y2luZyB0aGUgZWFybHkgbWVkaWV2YWwKKyAgICAgICBwZXJpb2QgcmVjb25zdHJ1
Y3Rpb24gdGhlIEFuZ2xvLVNheG9ucyBhbmQKKyAgICAgICB0aGVpciBzb2NpZXR5LiA8ZW0+U2F0
dXJkYXkgMTh0aCBPY3RvYmVyLjwvZW0+CisgICAgPC90ZD4KKyAgICA8dGQ+SDI4PC90ZD4KKyAg
ICA8dGQ+wqMxODwvdGQ+CisgICAgPHRkPsKjMTg8L3RkPgorICA8L3RyPgorICA8dHI+CisgICAg
PHRkIHNjb3BlPSJyb3ciPlRoZSBHbG9yeSB0aGF0IHdhcyBHcmVlY2U8L3RkPgorICAgIDx0ZD4K
KyAgICAgQmlydGhwbGFjZSBvZiBkZW1vY3JhY3ksIHBoaWxvc29waHksIGhlYXJ0bGFuZCBvZiB0
aGVhdGVyLCBob21lIG9mCisgICAgIGFyZ3VtZW50LiBUaGUgUm9tYW5zIG1heSBoYXZlIGRvbmUg
aXQgYnV0IHRoZSBHcmVla3MgZGlkIGl0CisgICAgIGZpcnN0LiA8ZW0+U2F0dXJkYXkgZGF5IHNj
aG9vbCAyNXRoIE9jdG9iZXIgMTk5NzwvZW0+CisgICAgPC90ZD4KKyAgICA8dGQ+SDMwPC90ZD4K
KyAgICA8dGQ+wqMxODwvdGQ+CisgICAgPHRkPsKjMTg8L3RkPgorICA8L3RyPgorPC90Ym9keT48
L3RhYmxlPgorCisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgc2Nv
cGUgYXR0cmlidXRlIG9uIHRhYmxlIGNlbGxzIHdpbGwgbWFuaWZlc3QgYXMgdGhlIHJpZ2h0IGhl
YWRlciBlbGVtZW50cyBvbiB0aGUgY2VsbHMgaW4gdGhhdCByb3cgb3IgY29sdW1uLiIpOworCisg
ICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworCisgICAgICAgIHZhciB0
YWJsZSA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGFi
bGUiKTsKKworICAgICAgICAvLyBDb3Vyc2UgbmFtZSBoYXMgYSBjb2x1bW4gaGVhZGVyIG9mIENv
bW11bml0eSBDb3Vyc2VzLgorICAgICAgICB2YXIgY2VsbCA9IHRhYmxlLmNlbGxGb3JDb2x1bW5B
bmRSb3coMCwgMSk7CisgICAgICAgIHZhciBjb2xIZWFkZXJzID0gY2VsbC5jb2x1bW5IZWFkZXJz
KCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiY29sSGVhZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNl
bGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIik7CisKKyAgICAgICAgLy8gQXMgZG9lcyBGZWUuCisg
ICAgICAgIGNlbGwgPSB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDQsIDEpOworICAgICAgICB2
YXIgY29sSGVhZGVycyA9IGNlbGwuY29sdW1uSGVhZGVycygpOworICAgICAgICBzaG91bGRCZVRy
dWUoImNvbEhlYWRlcnNbMF0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDAp
KSIpOworCisgICAgICAgIC8vIERyLiBKb2huIHNob3VsZCBoYXZlIHR3byBjb2wgaGVhZGVycyBh
bmQgYSByb3cgaGVhZGVyLgorICAgICAgICBjZWxsID0gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJv
dygxLCAyKTsKKyAgICAgICAgY29sSGVhZGVycyA9IGNlbGwuY29sdW1uSGVhZGVycygpOworICAg
ICAgICByb3dIZWFkZXJzID0gY2VsbC5yb3dIZWFkZXJzKCk7CisgICAgICAgIHNob3VsZEJlVHJ1
ZSgiY29sSGVhZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkp
Iik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiY29sSGVhZGVyc1sxXS5pc0VxdWFsKHRhYmxlLmNl
bGxGb3JDb2x1bW5BbmRSb3coMSwgMSkpIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgicm93SGVh
ZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMikpIik7CisKKyAg
ICAgICAgLy8gQ29kZSBIMjgsIHR3byByb3cgaGVhZGVycywgdHdvIGNvbCBoZWFkZXJzLgorICAg
ICAgICBjZWxsID0gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCAzKTsKKyAgICAgICAgY29s
SGVhZGVycyA9IGNlbGwuY29sdW1uSGVhZGVycygpOworICAgICAgICByb3dIZWFkZXJzID0gY2Vs
bC5yb3dIZWFkZXJzKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiY29sSGVhZGVyc1swXS5pc0Vx
dWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIik7CisgICAgICAgIHNob3VsZEJl
VHJ1ZSgiY29sSGVhZGVyc1sxXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMywg
MSkpIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgicm93SGVhZGVyc1swXS5pc0VxdWFsKHRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykpIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgicm93
SGVhZGVyc1sxXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMykpIik7CisK
KyAgICAgICAgLy8gVmVyaWZ5IENvZGUgSDMwIGhhcyB0d28gcm93IGhlYWRlcnMgZXZlbiB0aG91
Z2ggdGhlIDJuZCBoZWFkZXIgc3RhcnRlZCBpbiBhIHNwYW4gYmVmb3JlIHRoaXMgcm93LgorICAg
ICAgICBjZWxsID0gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCA0KTsKKyAgICAgICAgcm93
SGVhZGVycyA9IGNlbGwucm93SGVhZGVycygpOworICAgICAgICBzaG91bGRCZVRydWUoInJvd0hl
YWRlcnNbMF0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDQpKSIpOworICAg
ICAgICBzaG91bGRCZVRydWUoInJvd0hlYWRlcnNbMV0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29s
dW1uQW5kUm93KDEsIDMpKSIpOworCisgICAgICAgIC8vIFZlcmlmeSBpdGVtcyBpbiBjb2x1bW4g
NSBhcmUgcGlja2luZyB1cCBGZWUgYXMgYSBoZWFkZXIgZXZlbiB0aG91Z2ggaXQncyBjb2xzcGFu
IHN0YXJ0cyBiZWZvcmUgdGhpcyBjb2x1bW4uCisgICAgICAgIGNlbGwgPSB0YWJsZS5jZWxsRm9y
Q29sdW1uQW5kUm93KDQsIDQpOworICAgICAgICBjb2xIZWFkZXJzID0gY2VsbC5jb2x1bW5IZWFk
ZXJzKCk7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiY29sSGVhZGVyc1swXS5pc0VxdWFsKHRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIik7CisgICAgICAgIHNob3VsZEJlVHJ1ZSgiY29s
SGVhZGVyc1sxXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coNCwgMSkpIik7CisK
KyAgICB9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS1zY29wZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS1zY29wZS1leHBl
Y3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiOGRjNzUuLjAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtc2NvcGUt
ZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotQ29tbXVuaXR5IENv
dXJzZXMgLS0gQmF0aCBBdXR1bW4gMTk5NwotQ291cnNlIE5hbWUJQ291cnNlIFR1dG9yCVN1bW1h
cnkJQ29kZQlGZWUKLUFmdGVyIHRoZSBDaXZpbCBXYXIJRHIuIEpvaG4gV3JvdWdodG9uCSBUaGUg
Y291cnNlIHdpbGwgZXhhbWluZSB0aGUgdHVyYnVsZW50IHllYXJzIGluIEVuZ2xhbmQgYWZ0ZXIg
MTY0Ni4gNiB3ZWVrbHkgbWVldGluZ3Mgc3RhcnRpbmcgTW9uZGF5IDEzdGggT2N0b2Jlci4JSDI3
CcOCwqMzMgnDgsKjMzIKLUFuIEludHJvZHVjdGlvbiB0byBBbmdsby1TYXhvbiBFbmdsYW5kCU1h
cmsgQ290dGxlCSBPbmUgZGF5IGNvdXJzZSBpbnRyb2R1Y2luZyB0aGUgZWFybHkgbWVkaWV2YWwg
cGVyaW9kIHJlY29uc3RydWN0aW9uIHRoZSBBbmdsby1TYXhvbnMgYW5kIHRoZWlyIHNvY2lldHku
IFNhdHVyZGF5IDE4dGggT2N0b2Jlci4JSDI4CcOCwqMxOAnDgsKjMTgKLVRoZSBHbG9yeSB0aGF0
IHdhcyBHcmVlY2UJIEJpcnRocGxhY2Ugb2YgZGVtb2NyYWN5LCBwaGlsb3NvcGh5LCBoZWFydGxh
bmQgb2YgdGhlYXRlciwgaG9tZSBvZiBhcmd1bWVudC4gVGhlIFJvbWFucyBtYXkgaGF2ZSBkb25l
IGl0IGJ1dCB0aGUgR3JlZWtzIGRpZCBpdCBmaXJzdC4gU2F0dXJkYXkgZGF5IHNjaG9vbCAyNXRo
IE9jdG9iZXIgMTk5NwlIMzAJw4LCozE4CcOCwqMxOAotVGhpcyB0ZXN0cyB0aGUgc2NvcGUgYXR0
cmlidXRlIG9uIHRhYmxlIGNlbGxzIHdpbGwgbWFuaWZlc3QgYXMgdGhlIHJpZ2h0IGhlYWRlciBl
bGVtZW50cyBvbiB0aGUgY2VsbHMgaW4gdGhhdCByb3cgb3IgY29sdW1uLgotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBjb2xIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2Vs
bEZvckNvbHVtbkFuZFJvdygwLCAwKSkgaXMgdHJ1ZQotUEFTUyBjb2xIZWFkZXJzWzBdLmlzRXF1
YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSkgaXMgdHJ1ZQotUEFTUyBjb2xIZWFk
ZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSkgaXMgdHJ1ZQot
UEFTUyBjb2xIZWFkZXJzWzFdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygxLCAx
KSkgaXMgdHJ1ZQotUEFTUyByb3dIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVt
bkFuZFJvdygwLCAyKSkgaXMgdHJ1ZQotUEFTUyBjb2xIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUu
Y2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSkgaXMgdHJ1ZQotUEFTUyBjb2xIZWFkZXJzWzFdLmlz
RXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCAxKSkgaXMgdHJ1ZQotUEFTUyByb3dI
ZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAzKSkgaXMgdHJ1
ZQotUEFTUyByb3dIZWFkZXJzWzFdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygx
LCAzKSkgaXMgdHJ1ZQotUEFTUyByb3dIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNv
bHVtbkFuZFJvdygwLCA0KSkgaXMgdHJ1ZQotUEFTUyByb3dIZWFkZXJzWzFdLmlzRXF1YWwodGFi
bGUuY2VsbEZvckNvbHVtbkFuZFJvdygxLCAzKSkgaXMgdHJ1ZQotUEFTUyBjb2xIZWFkZXJzWzBd
LmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSkgaXMgdHJ1ZQotUEFTUyBj
b2xIZWFkZXJzWzFdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdyg0LCAxKSkgaXMg
dHJ1ZQotUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQotCi1URVNUIENPTVBMRVRFCi0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxl
LXNjb3BlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJs
ZS1zY29wZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzgxZTdjLi4wMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNj
b3BlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwg
UFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxzY3JpcHQg
c3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHkgaWQ9ImJvZHkiPgotCi08dGFibGUgYm9yZGVyPSIxIiBjZWxscGFkZGluZz0iNSIg
Y2VsbHNwYWNpbmc9IjIiIGlkPSJ0YWJsZSI+Ci0gIDx0Ym9keT48dHI+Ci0gICAgPHRoIGNvbHNw
YW49IjYiIHNjb3BlPSJjb2xncm91cCI+Q29tbXVuaXR5IENvdXJzZXMgLS0gQmF0aCBBdXR1bW4g
MTk5NzwvdGg+Ci0gIDwvdHI+Ci0gIDx0cj4KLSAgICA8dGggc2NvcGU9ImNvbCIgYWJicj0iTmFt
ZSI+Q291cnNlIE5hbWU8L3RoPgotICAgIDx0aCBzY29wZT0iY29sIiBhYmJyPSJUdXRvciI+Q291
cnNlIFR1dG9yPC90aD4KLSAgICA8dGggc2NvcGU9ImNvbCI+U3VtbWFyeTwvdGg+Ci0gICAgPHRo
IHNjb3BlPSJjb2wiPkNvZGU8L3RoPgotICAgIDx0aCBzY29wZT0iY29sIiBjb2xzcGFuPSIyIj5G
ZWU8L3RoPgotICA8L3RyPgotICA8dHI+Ci0gICAgPHRkIHNjb3BlPSJyb3ciPkFmdGVyIHRoZSBD
aXZpbCBXYXI8L3RkPgotICAgIDx0ZD5Eci4gSm9obiBXcm91Z2h0b248L3RkPgotICAgIDx0ZD4K
LSAgICAgICBUaGUgY291cnNlIHdpbGwgZXhhbWluZSB0aGUgdHVyYnVsZW50IHllYXJzIGluIEVu
Z2xhbmQKLSAgICAgICBhZnRlciAxNjQ2LiA8ZW0+NiB3ZWVrbHkgbWVldGluZ3Mgc3RhcnRpbmcg
TW9uZGF5IDEzdGgKLSAgICAgIE9jdG9iZXIuPC9lbT4KLSAgICA8L3RkPgotICAgIDx0ZD5IMjc8
L3RkPgotICAgIDx0ZD7CozMyPC90ZD4KLSAgICA8dGQ+wqMzMjwvdGQ+Ci0gIDwvdHI+Ci0gIDx0
cj4KLSAgICA8dGQgc2NvcGU9InJvdyI+QW4gSW50cm9kdWN0aW9uIHRvIEFuZ2xvLVNheG9uIEVu
Z2xhbmQ8L3RkPgotICAgIDx0ZCBzY29wZT0icm93Z3JvdXAiIHJvd3NwYW49IjIiPk1hcmsgQ290
dGxlPC90ZD4KLSAgICA8dGQ+Ci0gICAgICAgT25lIGRheSBjb3Vyc2UgaW50cm9kdWNpbmcgdGhl
IGVhcmx5IG1lZGlldmFsCi0gICAgICAgcGVyaW9kIHJlY29uc3RydWN0aW9uIHRoZSBBbmdsby1T
YXhvbnMgYW5kCi0gICAgICAgdGhlaXIgc29jaWV0eS4gPGVtPlNhdHVyZGF5IDE4dGggT2N0b2Jl
ci48L2VtPgotICAgIDwvdGQ+Ci0gICAgPHRkPkgyODwvdGQ+Ci0gICAgPHRkPsKjMTg8L3RkPgot
ICAgIDx0ZD7CozE4PC90ZD4KLSAgPC90cj4KLSAgPHRyPgotICAgIDx0ZCBzY29wZT0icm93Ij5U
aGUgR2xvcnkgdGhhdCB3YXMgR3JlZWNlPC90ZD4KLSAgICA8dGQ+Ci0gICAgIEJpcnRocGxhY2Ug
b2YgZGVtb2NyYWN5LCBwaGlsb3NvcGh5LCBoZWFydGxhbmQgb2YgdGhlYXRlciwgaG9tZSBvZgot
ICAgICBhcmd1bWVudC4gVGhlIFJvbWFucyBtYXkgaGF2ZSBkb25lIGl0IGJ1dCB0aGUgR3JlZWtz
IGRpZCBpdAotICAgICBmaXJzdC4gPGVtPlNhdHVyZGF5IGRheSBzY2hvb2wgMjV0aCBPY3RvYmVy
IDE5OTc8L2VtPgotICAgIDwvdGQ+Ci0gICAgPHRkPkgzMDwvdGQ+Ci0gICAgPHRkPsKjMTg8L3Rk
PgotICAgIDx0ZD7CozE4PC90ZD4KLSAgPC90cj4KLTwvdGJvZHk+PC90YWJsZT4KLQotCi08cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCi08c2NyaXB0
PgotCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIHNjb3BlIGF0dHJpYnV0ZSBvbiB0
YWJsZSBjZWxscyB3aWxsIG1hbmlmZXN0IGFzIHRoZSByaWdodCBoZWFkZXIgZWxlbWVudHMgb24g
dGhlIGNlbGxzIGluIHRoYXQgcm93IG9yIGNvbHVtbi4iKTsKLQotICAgIGlmICh3aW5kb3cuYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLQotICAgICAgICB2YXIgdGFibGUgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxlIik7Ci0KLSAgICAgICAg
Ly8gQ291cnNlIG5hbWUgaGFzIGEgY29sdW1uIGhlYWRlciBvZiBDb21tdW5pdHkgQ291cnNlcy4K
LSAgICAgICAgdmFyIGNlbGwgPSB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDEpOwotICAg
ICAgICB2YXIgY29sSGVhZGVycyA9IGNlbGwuY29sdW1uSGVhZGVycygpOwotICAgICAgICBzaG91
bGRCZVRydWUoImNvbEhlYWRlcnNbMF0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93
KDAsIDApKSIpOwotCi0gICAgICAgIC8vIEFzIGRvZXMgRmVlLgotICAgICAgICBjZWxsID0gdGFi
bGUuY2VsbEZvckNvbHVtbkFuZFJvdyg0LCAxKTsKLSAgICAgICAgdmFyIGNvbEhlYWRlcnMgPSBj
ZWxsLmNvbHVtbkhlYWRlcnMoKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJjb2xIZWFkZXJzWzBd
LmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSkiKTsKLQotICAgICAgICAv
LyBEci4gSm9obiBzaG91bGQgaGF2ZSB0d28gY29sIGhlYWRlcnMgYW5kIGEgcm93IGhlYWRlci4K
LSAgICAgICAgY2VsbCA9IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMik7Ci0gICAgICAg
IGNvbEhlYWRlcnMgPSBjZWxsLmNvbHVtbkhlYWRlcnMoKTsKLSAgICAgICAgcm93SGVhZGVycyA9
IGNlbGwucm93SGVhZGVycygpOwotICAgICAgICBzaG91bGRCZVRydWUoImNvbEhlYWRlcnNbMF0u
aXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApKSIpOwotICAgICAgICBzaG91
bGRCZVRydWUoImNvbEhlYWRlcnNbMV0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93
KDEsIDEpKSIpOwotICAgICAgICBzaG91bGRCZVRydWUoInJvd0hlYWRlcnNbMF0uaXNFcXVhbCh0
YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDIpKSIpOwotCi0gICAgICAgIC8vIENvZGUgSDI4
LCB0d28gcm93IGhlYWRlcnMsIHR3byBjb2wgaGVhZGVycy4KLSAgICAgICAgY2VsbCA9IHRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMywgMyk7Ci0gICAgICAgIGNvbEhlYWRlcnMgPSBjZWxsLmNv
bHVtbkhlYWRlcnMoKTsKLSAgICAgICAgcm93SGVhZGVycyA9IGNlbGwucm93SGVhZGVycygpOwot
ICAgICAgICBzaG91bGRCZVRydWUoImNvbEhlYWRlcnNbMF0uaXNFcXVhbCh0YWJsZS5jZWxsRm9y
Q29sdW1uQW5kUm93KDAsIDApKSIpOwotICAgICAgICBzaG91bGRCZVRydWUoImNvbEhlYWRlcnNb
MV0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDMsIDEpKSIpOwotICAgICAgICBz
aG91bGRCZVRydWUoInJvd0hlYWRlcnNbMF0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5k
Um93KDAsIDMpKSIpOwotICAgICAgICBzaG91bGRCZVRydWUoInJvd0hlYWRlcnNbMV0uaXNFcXVh
bCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDEsIDMpKSIpOwotCi0gICAgICAgIC8vIFZlcmlm
eSBDb2RlIEgzMCBoYXMgdHdvIHJvdyBoZWFkZXJzIGV2ZW4gdGhvdWdoIHRoZSAybmQgaGVhZGVy
IHN0YXJ0ZWQgaW4gYSBzcGFuIGJlZm9yZSB0aGlzIHJvdy4KLSAgICAgICAgY2VsbCA9IHRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMywgNCk7Ci0gICAgICAgIHJvd0hlYWRlcnMgPSBjZWxsLnJv
d0hlYWRlcnMoKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJyb3dIZWFkZXJzWzBdLmlzRXF1YWwo
dGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCA0KSkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVl
KCJyb3dIZWFkZXJzWzFdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygxLCAzKSki
KTsKLQotICAgICAgICAvLyBWZXJpZnkgaXRlbXMgaW4gY29sdW1uIDUgYXJlIHBpY2tpbmcgdXAg
RmVlIGFzIGEgaGVhZGVyIGV2ZW4gdGhvdWdoIGl0J3MgY29sc3BhbiBzdGFydHMgYmVmb3JlIHRo
aXMgY29sdW1uLgotICAgICAgICBjZWxsID0gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdyg0LCA0
KTsKLSAgICAgICAgY29sSGVhZGVycyA9IGNlbGwuY29sdW1uSGVhZGVycygpOwotICAgICAgICBz
aG91bGRCZVRydWUoImNvbEhlYWRlcnNbMF0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5k
Um93KDAsIDApKSIpOwotICAgICAgICBzaG91bGRCZVRydWUoImNvbEhlYWRlcnNbMV0uaXNFcXVh
bCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDQsIDEpKSIpOwotCi0gICAgfQotCi08L3Njcmlw
dD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA4OTJjNGRlLi4yNTIyMTQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNzAxLDYgKzcwMSw5IEBAIHdlYmtpdC5vcmcvYi8x
Mjc0ODUgcGxhdGZvcm0vd2luL2FjY2Vzc2liaWxpdHkvb3B0aW9uLWVsZW1lbnQtc2VsZWN0aW9u
LWFuZC1mb2N1CiB3ZWJraXQub3JnL2IvMTI3NDg1IHBsYXRmb3JtL3dpbi9hY2Nlc3NpYmlsaXR5
L3BhcmVudC1lbGVtZW50Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMjc0ODUgcGxh
dGZvcm0vd2luL2FjY2Vzc2liaWxpdHkvc2VsZWN0LWVsZW1lbnQtdmFsdWVjaGFuZ2UtZXZlbnQu
aHRtbCBbIEZhaWx1cmUgXQogCisjIFNraXBwaW5nIG9uIHdpbmRvd3MsIG1pc3NpbmcgaW1wbGVt
ZW50YXRpb24uCit3ZWJraXQub3JnL2IvMTI5MjUwIGFjY2Vzc2liaWxpdHkvdGFibGUtc2NvcGUu
aHRtbCBbIFNraXAgXQorCiAjIFRlbXBvcmFyaWx5IHNraXAgYSBidW5jaCBvZiBmYWlsaW5nIHRl
c3RzIG9uIFdpbmRvd3MgYm90cyB1bnRpbAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA4MjQ5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxMTVjYzNlLi5iZTQyM2UyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTQtMDItMjYgIEtyenlzenRvZiBDemVjaCAgPGsu
Y3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FUS10gVXRpbGl6ZSBBdGtUYWJsZUNlbGwg
dG8gZXhwb3NlIGRpcmVjdGx5IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwgdG8gQVQKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTI1MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGFjY2Vzc2liaWxp
dHkvdGFibGUtc2NvcGUuaHRtbAorCisgICAgICAgIEV4cG9zaW5nIEF0a1RhYmxlQ2VsbCB0byBB
VC4gSW1wbGVtZW50aW5nIHBvc3NpYmlsaXR5IHRvIGdldCBjb2x1bW4gaGVhZGVycyBhbmQgcm93
IGhlYWRlcnMKKyAgICAgICAgYXMgYW4gYXJyYXkgb2YgY2VsbHMuCisKKyAgICAgICAgKiBQbGF0
Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGFibGVDZWxsLmNwcDogQWRkZWQuCisgICAgICAgIChjb252ZXJ0VG9HUHRy
QXJyYXkpOgorICAgICAgICAoY29yZSk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVD
ZWxsR2V0Q29sdW1uSGVhZGVyQ2VsbHMpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxl
Q2VsbEdldFJvd0hlYWRlckNlbGxzKToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUNl
bGxJbnRlcmZhY2VJbml0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmg6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcDoKKyAgICAgICAgKGdldEludGVy
ZmFjZU1hc2tGcm9tT2JqZWN0KToKKwogMjAxNC0wMi0yNCAgTWloYWkgVGljYSAgPG1pdGljYUBh
ZG9iZS5jb20+CiAKICAgICAgICAgW0NTUyBCbGVuZGluZ10gQW4gZWxlbWVudCBoYXZpbmcgLXdl
YmtpdC1taXgtYmxlbmQtbW9kZSBzaG91bGQgb25seSBibGVuZCB3aXRoIHRoZSBjb250ZW50cyBv
ZiB0aGUgcGFyZW50IHN0YWNraW5nIGNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKaW5k
ZXggODFhNzYwZS4uNWEzNWU1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1F
ZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTI5LDYg
KzI5LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VTCiAgICAgYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUltYWdlLmNwcAogICAgIGFjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwCiAgICAgYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAorICAgIGFjY2Vzc2li
aWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZUNlbGwuY3BwCiAgICAgYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCiAgICAgYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVZhbHVlLmNwcAogICAgIGFj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRh
YmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi4zMDMxNDNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlQ2VsbC5jcHAKQEAgLTAs
MCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBTYW1zdW5nIEVsZWN0cm9uaWNz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlQ2VsbC5oIgorCisjaWYgSEFWRShBQ0NFU1NJQklM
SVRZKSAmJiBBVEtfQ0hFQ0tfVkVSU0lPTigyLDExLDkwKQorCisjaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eU9iamVjdC5oIgorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgorI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlUYWJsZUNlbGwuaCIKKyNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlVXRp
bC5oIgorI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCitzdGF0aWMgR1B0ckFycmF5KiBjb252ZXJ0VG9HUHRyQXJyYXko
Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBj
aGlsZHJlbikKK3sKKyAgICBHUHRyQXJyYXkqIGFycmF5ID0gZ19wdHJfYXJyYXlfbmV3KCk7Cisg
ICAgZm9yIChjb25zdCBhdXRvJiBjaGlsZCA6IGNoaWxkcmVuKSB7CisgICAgICAgIGlmIChBdGtP
YmplY3QqIGF0a09iamVjdCA9IGNoaWxkLT53cmFwcGVyKCkpCisgICAgICAgICAgICBnX3B0cl9h
cnJheV9hZGQoYXJyYXksIGF0a09iamVjdCk7CisgICAgfQorICAgIHJldHVybiBhcnJheTsKK30K
Kworc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrVGFibGVDZWxsKiBjZWxsKQor
eworICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEUoY2VsbCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgcmV0dXJuIHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KFdFQktJVF9BQ0NFU1NJQkxFKGNlbGwpKTsKK30KKworR1B0ckFycmF5KiB3ZWJraXRBY2Nl
c3NpYmxlVGFibGVDZWxsR2V0Q29sdW1uSGVhZGVyQ2VsbHMoQXRrVGFibGVDZWxsKiBjZWxsKQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKEFUS19UQUJMRV9DRUxMKGNlbGwpLCBudWxscHRy
KTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VT
U0lCTEUoY2VsbCksIG51bGxwdHIpOworCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmpl
Y3QgPSBjb3JlKGNlbGwpOworICAgIGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5pc0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3IgY29sdW1uSGVh
ZGVyczsKKyAgICB0b0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwoYXhPYmplY3QpLT5jb2x1bW5IZWFk
ZXJzKGNvbHVtbkhlYWRlcnMpOworCisgICAgcmV0dXJuIGNvbnZlcnRUb0dQdHJBcnJheShjb2x1
bW5IZWFkZXJzKTsKK30KKworR1B0ckFycmF5KiB3ZWJraXRBY2Nlc3NpYmxlVGFibGVDZWxsR2V0
Um93SGVhZGVyQ2VsbHMoQXRrVGFibGVDZWxsKiBjZWxsKQoreworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKEFUS19UQUJMRV9DRUxMKGNlbGwpLCBudWxscHRyKTsKKyAgICByZXR1cm5WYWxJZldl
YktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUoY2VsbCksIG51bGxwdHIp
OworCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QgPSBjb3JlKGNlbGwpOworICAg
IGlmICghYXhPYmplY3QgfHwgIWF4T2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qo
KSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3Igcm93SGVhZGVyczsKKyAgICB0b0FjY2Vzc2liaWxp
dHlUYWJsZUNlbGwoYXhPYmplY3QpLT5yb3dIZWFkZXJzKHJvd0hlYWRlcnMpOworCisgICAgcmV0
dXJuIGNvbnZlcnRUb0dQdHJBcnJheShyb3dIZWFkZXJzKTsKK30KKwordm9pZCB3ZWJraXRBY2Nl
c3NpYmxlVGFibGVDZWxsSW50ZXJmYWNlSW5pdChBdGtUYWJsZUNlbGxJZmFjZSogaWZhY2UpCit7
CisgICAgaWZhY2UtPmdldF9jb2x1bW5faGVhZGVyX2NlbGxzID0gd2Via2l0QWNjZXNzaWJsZVRh
YmxlQ2VsbEdldENvbHVtbkhlYWRlckNlbGxzOworICAgIGlmYWNlLT5nZXRfcm93X2hlYWRlcl9j
ZWxscyA9IHdlYmtpdEFjY2Vzc2libGVUYWJsZUNlbGxHZXRSb3dIZWFkZXJDZWxsczsKK30KKwor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RiZTIzYwotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VU
YWJsZUNlbGwuaApAQCAtMCwwICsxLDEzIEBACisjaWZuZGVmIFdlYktpdEFjY2Vzc2libGVJbnRl
cmZhY2VUYWJsZUNlbGxfaAorI2RlZmluZSBXZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVD
ZWxsX2gKKworI2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKKworI2luY2x1ZGUgPGF0ay9hdGsuaD4K
KworI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsMTEsOTApCit2b2lkIHdlYmtpdEFjY2Vzc2libGVU
YWJsZUNlbGxJbnRlcmZhY2VJbml0KEF0a1RhYmxlQ2VsbElmYWNlKik7CisjZW5kaWYKKworI2Vu
ZGlmCisjZW5kaWYgLy8gV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlQ2VsbF9oCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxl
V3JhcHBlckF0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKaW5kZXggYjQzZWNmOC4uOWVkNWM3OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBw
ZXJBdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVXcmFwcGVyQXRrLmNwcApAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgIldlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VJbWFnZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGFibGUuaCIKKyNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmgi
CiAjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuaCIKICNpbmNsdWRlICJX
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVmFsdWUuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3Np
YmxlVXRpbC5oIgpAQCAtMTA1Myw2ICsxMDU0LDkgQEAgc3RhdGljIGNvbnN0IEdJbnRlcmZhY2VJ
bmZvIEF0a0ludGVyZmFjZXNJbml0RnVuY3Rpb25zW10gPSB7CiAgICAge3JlaW50ZXJwcmV0X2Nh
c3Q8R0ludGVyZmFjZUluaXRGdW5jPih3ZWJraXRBY2Nlc3NpYmxlQ29tcG9uZW50SW50ZXJmYWNl
SW5pdCksIDAsIDB9LAogICAgIHtyZWludGVycHJldF9jYXN0PEdJbnRlcmZhY2VJbml0RnVuYz4o
d2Via2l0QWNjZXNzaWJsZUltYWdlSW50ZXJmYWNlSW5pdCksIDAsIDB9LAogICAgIHtyZWludGVy
cHJldF9jYXN0PEdJbnRlcmZhY2VJbml0RnVuYz4od2Via2l0QWNjZXNzaWJsZVRhYmxlSW50ZXJm
YWNlSW5pdCksIDAsIDB9LAorI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsMTEsOTApCisgICAge3Jl
aW50ZXJwcmV0X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPih3ZWJraXRBY2Nlc3NpYmxlVGFibGVD
ZWxsSW50ZXJmYWNlSW5pdCksIDAsIDB9LAorI2VuZGlmCiAgICAge3JlaW50ZXJwcmV0X2Nhc3Q8
R0ludGVyZmFjZUluaXRGdW5jPih3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0SW50ZXJmYWNlSW5p
dCksIDAsIDB9LAogICAgIHtyZWludGVycHJldF9jYXN0PEdJbnRlcmZhY2VJbml0RnVuYz4od2Vi
a2l0QWNjZXNzaWJsZUh5cGVybGlua0ltcGxJbnRlcmZhY2VJbml0KSwgMCwgMH0sCiAgICAge3Jl
aW50ZXJwcmV0X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPih3ZWJraXRBY2Nlc3NpYmxlRG9jdW1l
bnRJbnRlcmZhY2VJbml0KSwgMCwgMH0sCkBAIC0xMDY3LDYgKzEwNzEsOSBAQCBlbnVtIFdBSVR5
cGUgewogICAgIFdBSV9DT01QT05FTlQsCiAgICAgV0FJX0lNQUdFLAogICAgIFdBSV9UQUJMRSwK
KyNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLDExLDkwKQorICAgIFdBSV9UQUJMRV9DRUxMLAorI2Vu
ZGlmCiAgICAgV0FJX0hZUEVSVEVYVCwKICAgICBXQUlfSFlQRVJMSU5LLAogICAgIFdBSV9ET0NV
TUVOVCwKQEAgLTEwOTAsNiArMTA5NywxMCBAQCBzdGF0aWMgR1R5cGUgR2V0QXRrSW50ZXJmYWNl
VHlwZUZyb21XQUlUeXBlKFdBSVR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuIEFUS19UWVBFX0lN
QUdFOwogICAgIGNhc2UgV0FJX1RBQkxFOgogICAgICAgICByZXR1cm4gQVRLX1RZUEVfVEFCTEU7
CisjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwxMSw5MCkKKyAgICBjYXNlIFdBSV9UQUJMRV9DRUxM
OgorICAgICAgICByZXR1cm4gQVRLX1RZUEVfVEFCTEVfQ0VMTDsKKyNlbmRpZgogICAgIGNhc2Ug
V0FJX0hZUEVSVEVYVDoKICAgICAgICAgcmV0dXJuIEFUS19UWVBFX0hZUEVSVEVYVDsKICAgICBj
YXNlIFdBSV9IWVBFUkxJTks6CkBAIC0xMTczLDYgKzExODQsMTEgQEAgc3RhdGljIGd1aW50MTYg
Z2V0SW50ZXJmYWNlTWFza0Zyb21PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVj
dCkKICAgICBpZiAocm9sZSA9PSBUYWJsZVJvbGUpCiAgICAgICAgIGludGVyZmFjZU1hc2sgfD0g
MSA8PCBXQUlfVEFCTEU7CiAKKyNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLDExLDkwKQorICAgIGlm
IChyb2xlID09IENlbGxSb2xlKQorICAgICAgICBpbnRlcmZhY2VNYXNrIHw9IDEgPDwgV0FJX1RB
QkxFX0NFTEw7CisjZW5kaWYKKwogICAgIC8vIERvY3VtZW50CiAgICAgaWYgKHJvbGUgPT0gV2Vi
QXJlYVJvbGUpCiAgICAgICAgIGludGVyZmFjZU1hc2sgfD0gMSA8PCBXQUlfRE9DVU1FTlQ7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNjU2OWQ4
Zi4uYjJiM2I5MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE0LTAyLTI2ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6
ZWNoQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtBVEtdIFV0aWxpemUgQXRrVGFibGVDZWxsIHRv
IGV4cG9zZSBkaXJlY3RseSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsIHRvIEFUCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkyNTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2luZyB2ZXJzaW9uIG9m
IEFUSyB0byAyLjExLjkwLCBiZWNhdXNlIGl0IGludHJvZHVjZXMgQXRrVGFibGVDZWxsIGludGVy
ZmFjZS4KKyAgICAgICAgSW1wbGVtZW50aW5nIG1ldGhvZHMgc28gdGhhdCB3ZSBjb3VsZCB0ZXN0
IGNvbHVtbi9yb3cgaGVhZGVycyByZXByZXNlbnRlZCBhcyBhbiBhcnJheSBvZiBjZWxscy4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoK
KyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMpOgorICAgICAg
ICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SGVhZGVycyk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwOiBBZGRpbmcgZW1wdHkg
c3R1YnMsIHRvIG5vdCBicmVhayBjb21waWxhdGlvbi4KKyAgICAgICAgKEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dDo6cm93SGVhZGVycyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHA6CisgICAgICAgIChXVFI6OkFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMpOgorICAgICAgICAoV1RSOjpBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzKToKKyAgICAgICAgKiBlZmwvamhidWlsZC5tb2R1
bGVzOgorICAgICAgICAqIGd0ay9qaGJ1aWxkLm1vZHVsZXM6CisKIDIwMTQtMDItMjQgIEtyenlz
enRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0FUS10gV3Jvbmcg
c2VsZWN0ZWQgZWxlbWVudCBhdCBhIGdpdmVuIGluZGV4IGluIGEgbGlzdCBib3guCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwCmluZGV4IDhlZTcy
ODMuLjFiNjk1MTAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnQuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwCkBAIC0xMzI1LDggKzEzMjUsNiBAQCBKU1N0cmluZ1JlZiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpwYXRoRGVzY3JpcHRpb24oKSBjb25zdCB7IHJldHVybiAwOyB9CiAKICNp
ZiAhUExBVEZPUk0oQ09DT0EpCiB2b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVu
dEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYsIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiYpIGNvbnN0IHsgfQotdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5I
ZWFkZXJzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYpIGNvbnN0IHsgfQotdm9pZCBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiYpIGNvbnN0IHsgfQogI2VuZGlmCiAKICNpZiAhUExBVEZPUk0oV0lOKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsu
Y3BwCmluZGV4IDIwYmU1OTg3Li4yNmFhNTQ3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRBdGsuY3BwCkBAIC00ODUsNiArNDg1
LDE0IEBAIHN0YXRpYyBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gZ2V0VmlzaWJsZUNl
bGxzKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGVsCiAgICAgcmV0dXJuIHZpc2libGVDZWxsczsK
IH0KIAorc3RhdGljIHZvaWQgY29udmVydEdQdHJBcnJheVRvVmVjdG9yKGNvbnN0IEdQdHJBcnJh
eSogYXJyYXksIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYgZWxlbWVudHMpCit7Cisg
ICAgZm9yIChndWludCBpID0gMDsgaSA8IGFycmF5LT5sZW47IGkrKykgeworICAgICAgICBpZiAo
QXRrT2JqZWN0KiBhdGtPYmplY3QgPSBzdGF0aWNfY2FzdDxBdGtPYmplY3QqPihnX3B0cl9hcnJh
eV9pbmRleChhcnJheSwgaSkpKQorICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQoYXRrT2JqZWN0KSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZQog
CiBKU1N0cmluZ1JlZiBpbmRleFJhbmdlSW5UYWJsZShQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50
LCBib29sIGlzUm93UmFuZ2UpCkBAIC0xNjU2LDQgKzE2NjQsMzIgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb25BdEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25z
dAogICAgIGF0a19zZWxlY3Rpb25fcmVtb3ZlX3NlbGVjdGlvbihBVEtfU0VMRUNUSU9OKG1fZWxl
bWVudCksIGluZGV4KTsKIH0KIAordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5I
ZWFkZXJzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYgY29sdW1ucykgY29uc3QKK3sK
KyNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLDExLDkwKQorICAgIGlmICghQVRLX0lTX1RBQkxFX0NF
TEwobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgR1JlZlB0cjxHUHRyQXJyYXk+
IGFycmF5ID0gYWRvcHRHUmVmKGF0a190YWJsZV9jZWxsX2dldF9jb2x1bW5faGVhZGVyX2NlbGxz
KEFUS19UQUJMRV9DRUxMKG1fZWxlbWVudCkpKTsKKyAgICBpZiAoIWFycmF5KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb252ZXJ0R1B0ckFycmF5VG9WZWN0b3IoYXJyYXkuZ2V0KCksIGNvbHVt
bnMpOworI2VuZGlmCit9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SGVhZGVy
cyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mIGNlbGxzKSBjb25zdAoreworI2lmIEFU
S19DSEVDS19WRVJTSU9OKDIsMTEsOTApCisgICAgaWYgKCFBVEtfSVNfVEFCTEVfQ0VMTChtX2Vs
ZW1lbnQpKQorICAgICAgICByZXR1cm47CisKKyAgICBHUmVmUHRyPEdQdHJBcnJheT4gYXJyYXkg
PSBhZG9wdEdSZWYoYXRrX3RhYmxlX2NlbGxfZ2V0X3Jvd19oZWFkZXJfY2VsbHMoQVRLX1RBQkxF
X0NFTEwobV9lbGVtZW50KSkpOworICAgIGlmICghYXJyYXkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIGNvbnZlcnRHUHRyQXJyYXlUb1ZlY3RvcihhcnJheS5nZXQoKSwgY2VsbHMpOworI2VuZGlm
Cit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCmluZGV4IGM3YzYyNDAuLjI1N2Q5YTQgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdp
bi5jcHAKQEAgLTg4NSwzICs4ODUsMTMgQEAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxkQXRJbmRleCh1bnNpZ25lZCkgY28KICAgICAv
LyBGSVhNRTogaW1wbGVtZW50CiAgICAgcmV0dXJuIDA7CiB9CisKK3ZvaWQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4m
KSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYp
IGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVu
dEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRleCAwZDE4NDc0Li41ZDkwYTU2IDEwMDY0NAot
LS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmls
aXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcApAQCAtMzUsNiArMzUsNyBA
QAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNTdHJpbmdSZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5o
PgorI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVGcmFtZS5oPgogI2luY2x1ZGUgPGF0ay9hdGsu
aD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dS
ZWZQdHIuaD4KQEAgLTU1MCw2ICs1NTEsMjkgQEAgc3RhdGljIFZlY3RvcjxSZWZQdHI8QWNjZXNz
aWJpbGl0eVVJRWxlbWVudD4gPiBnZXRWaXNpYmxlQ2VsbHMoQWNjZXNzaWJpbGl0eVVJRWwKICAg
ICByZXR1cm4gdmlzaWJsZUNlbGxzOwogfQogCitzdGF0aWMgVmVjdG9yPFJlZlB0cjxBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Pj4gY29udmVydEdQdHJBcnJheVRvVmVjdG9yKGNvbnN0IEdQdHJBcnJh
eSogYXJyYXkpCit7CisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4g
Y2VsbHM7CisgICAgZm9yIChndWludCBpID0gMDsgaSA8IGFycmF5LT5sZW47IGkrKykgeworICAg
ICAgICBpZiAoQXRrT2JqZWN0KiBhdGtPYmplY3QgPSBzdGF0aWNfY2FzdDxBdGtPYmplY3QqPihn
X3B0cl9hcnJheV9pbmRleChhcnJheSwgaSkpKQorICAgICAgICAgICAgY2VsbHMuYXBwZW5kKEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNyZWF0ZShhdGtPYmplY3QpKTsKKyAgICB9CisgICAgcmV0
dXJuIGNlbGxzOworfQorCitzdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0VG9KU09iamVjdEFycmF5
KGNvbnN0IFZlY3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBjaGlsZHJlbikK
K3sKKyAgICBXS0J1bmRsZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5G
cmFtZShJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29u
dGV4dFJlZiBjb250ZXh0ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5G
cmFtZSk7CisKKyAgICBzaXplX3QgZWxlbWVudENvdW50ID0gY2hpbGRyZW4uc2l6ZSgpOworICAg
IGF1dG8gdmFsdWVFbGVtZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNWYWx1ZVJlZltdPihlbGVt
ZW50Q291bnQpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyBpKysp
CisgICAgICAgIHZhbHVlRWxlbWVudHNbaV0gPSBKU09iamVjdE1ha2UoY29udGV4dCwgY2hpbGRy
ZW5baV0tPndyYXBwZXJDbGFzcygpLCBjaGlsZHJlbltpXS5nZXQoKSk7CisKKyAgICByZXR1cm4g
SlNPYmplY3RNYWtlQXJyYXkoY29udGV4dCwgZWxlbWVudENvdW50LCB2YWx1ZUVsZW1lbnRzLmdl
dCgpLCBudWxscHRyKTsKK30KKwogfSAvLyBuYW1lc3BhY2UKIAogQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudChQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50KQpA
QCAtODM2LDE0ICs4NjAsMzYgQEAgSlNWYWx1ZVJlZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojp1
aUVsZW1lbnRBcnJheUF0dHJpYnV0ZVZhbHVlKEpTU3RyaW5nUmVmIGF0dHIKIAogSlNWYWx1ZVJl
ZiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzKCkgY29uc3QKIHsKLSAgICAvLyBG
SVhNRTogaW1wbGVtZW50CisjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwxMSw5MCkKKyAgICBpZiAo
IUFUS19JU19UQUJMRV9DRUxMKG1fZWxlbWVudC5nZXQoKSkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgR1JlZlB0cjxHUHRyQXJyYXk+IGFycmF5ID0gYWRvcHRHUmVmKGF0a190YWJs
ZV9jZWxsX2dldF9yb3dfaGVhZGVyX2NlbGxzKEFUS19UQUJMRV9DRUxMKG1fZWxlbWVudC5nZXQo
KSkpKTsKKyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZl
Y3RvcjxSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+IHJvd3MgPSBjb252ZXJ0R1B0ckFy
cmF5VG9WZWN0b3IoYXJyYXkuZ2V0KCkpOworICAgIHJldHVybiBjb252ZXJ0VG9KU09iamVjdEFy
cmF5KHJvd3MpOworI2Vsc2UKICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbmRpZgogfQogCiBKU1Zh
bHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMoKSBjb25zdAogewot
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKKyNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLDExLDkwKQor
ICAgIGlmICghQVRLX0lTX1RBQkxFX0NFTEwobV9lbGVtZW50LmdldCgpKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CisKKyAgICBHUmVmUHRyPEdQdHJBcnJheT4gYXJyYXkgPSBhZG9wdEdSZWYo
YXRrX3RhYmxlX2NlbGxfZ2V0X2NvbHVtbl9oZWFkZXJfY2VsbHMoQVRLX1RBQkxFX0NFTEwobV9l
bGVtZW50LmdldCgpKSkpOworICAgIGlmICghYXJyYXkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gY29sdW1ucyA9
IGNvbnZlcnRHUHRyQXJyYXlUb1ZlY3RvcihhcnJheS5nZXQoKSk7CisgICAgcmV0dXJuIGNvbnZl
cnRUb0pTT2JqZWN0QXJyYXkoY29sdW1ucyk7CisjZWxzZQogICAgIHJldHVybiBudWxscHRyOwor
I2VuZGlmCiB9CiAKIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4gQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cmli
dXRlKSBjb25zdApkaWZmIC0tZ2l0IGEvVG9vbHMvZWZsL2poYnVpbGQubW9kdWxlcyBiL1Rvb2xz
L2VmbC9qaGJ1aWxkLm1vZHVsZXMKaW5kZXggN2M3N2ZjZS4uNGVkMjVmZCAxMDA2NDQKLS0tIGEv
VG9vbHMvZWZsL2poYnVpbGQubW9kdWxlcworKysgYi9Ub29scy9lZmwvamhidWlsZC5tb2R1bGVz
CkBAIC0zNDEsOSArMzQxLDkgQEAKICAgPGF1dG90b29scyBpZD0iYXRrIgogICAgICAgICAgICAg
IGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSIKICAgICAgICAgICAgICBhdXRvZ2VuYXJncz0iLS1kaXNh
YmxlLWludHJvc3BlY3Rpb24iPgotICAgIDxicmFuY2ggbW9kdWxlPSJwdWIvR05PTUUvc291cmNl
cy9hdGsvMi4xMS9hdGstMi4xMS40LnRhci54eiIgdmVyc2lvbj0iMi4xMS40IgorICAgIDxicmFu
Y2ggbW9kdWxlPSJwdWIvR05PTUUvc291cmNlcy9hdGsvMi4xMS9hdGstMi4xMS45MC50YXIueHoi
IHZlcnNpb249IjIuMTEuOSIKICAgICAgICAgICAgIHJlcG89ImZ0cC5nbm9tZS5vcmciCi0gICAg
ICAgICAgICBoYXNoPSJzaGEyNTY6YjYwOWZhN2EzZjIxMTQ3ZDQwZjBmZTBmNDcyNzhhNjJjMjYz
ZGUwZWFkYmJiZTk4MzlmMmI2M2EwY2IwN2Q0MSIvPgorICAgICAgICAgICAgaGFzaD0ic2hhMjU2
OjQ0ZTMzYWJhZDY0NDE5YjkyZmQyYWU0NWZiMGQzN2I5ZmFhYjZiNTM2NDBhMWE1NGUwNjhhZjZm
Y2NhZDQ0MTciLz4KICAgPC9hdXRvdG9vbHM+CiAKIDwvbW9kdWxlc2V0PgpkaWZmIC0tZ2l0IGEv
VG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKaW5k
ZXggNmRkMTRmMC4uNWZkMDQ4NyAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxl
cworKysgYi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCkBAIC0yMzMsOSArMjMzLDkgQEAKICAg
PGF1dG90b29scyBpZD0iYXRrIgogICAgICAgICAgICAgIGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSIK
ICAgICAgICAgICAgICBhdXRvZ2VuYXJncz0iLS1kaXNhYmxlLWludHJvc3BlY3Rpb24iPgotICAg
IDxicmFuY2ggbW9kdWxlPSJwdWIvR05PTUUvc291cmNlcy9hdGsvMi4xMS9hdGstMi4xMS40LnRh
ci54eiIgdmVyc2lvbj0iMi4xMS40IgorICAgIDxicmFuY2ggbW9kdWxlPSJwdWIvR05PTUUvc291
cmNlcy9hdGsvMi4xMS9hdGstMi4xMS45MC50YXIueHoiIHZlcnNpb249IjIuMTEuOTAiCiAgICAg
ICAgICAgICByZXBvPSJmdHAuZ25vbWUub3JnIgotICAgICAgICAgICAgaGFzaD0ic2hhMjU2OmI2
MDlmYTdhM2YyMTE0N2Q0MGYwZmUwZjQ3Mjc4YTYyYzI2M2RlMGVhZGJiYmU5ODM5ZjJiNjNhMGNi
MDdkNDEiLz4KKyAgICAgICAgICAgIGhhc2g9InNoYTI1Njo0NGUzM2FiYWQ2NDQxOWI5MmZkMmFl
NDVmYjBkMzdiOWZhYWI2YjUzNjQwYTFhNTRlMDY4YWY2ZmNjYWQ0NDE3Ii8+CiAgIDwvYXV0b3Rv
b2xzPgogCiAgIDxhdXRvdG9vbHMgaWQ9ImF0LXNwaTItY29yZSIgCg==
</data>
<flag name="review"
          id="249369"
          type_id="1"
          status="-"
          setter="mario"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>225260</attachid>
            <date>2014-02-26 09:01:21 -0800</date>
            <delta_ts>2014-02-27 03:23:01 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a11y-atktablecell-interface.patch</filename>
            <type>text/plain</type>
            <size>32923</size>
            <attacher name="Krzysztof Czech">k.czech</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MGNlOGZjLi4xNzM1MDVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMDIt
MjYgIEtyenlzenRvZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FU
S10gVXRpbGl6ZSBBdGtUYWJsZUNlbGwgdG8gZXhwb3NlIGRpcmVjdGx5IEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGwgdG8gQVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEyOTI1MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFNoYXJpbmcgdGVzdCB3aXRoIEdUSy9FRkwuCisKKyAgICAgICAgKiBhY2Nlc3NpYmls
aXR5L3RhYmxlLXNjb3BlLWV4cGVjdGVkLnR4dDogUmVuYW1lZCBmcm9tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNjb3BlLWV4cGVjdGVkLnR4dC4KKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L3RhYmxlLXNjb3BlLmh0bWw6IFJlbmFtZWQgZnJvbSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS1zY29wZS5odG1sLgorICAgICAg
ICAqIHBsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zOiBTa2lwcGluZyBvbiB3aW5kb3dzLCBt
aXNzaW5nIGltcGxlbWVudGF0aW9uLgorCiAyMDE0LTAyLTI2ICBYYWJpZXIgUm9kcmlndWV6IENh
bHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVncmVzc2lvbiB3
aGVuIHNob3dpbmcgdGhlIGNhcHRpb25zIG1lbnUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvdGFibGUtc2NvcGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS90YWJsZS1zY29wZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMGI4ZGM3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvdGFibGUtc2NvcGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjcgQEAKK0NvbW11
bml0eSBDb3Vyc2VzIC0tIEJhdGggQXV0dW1uIDE5OTcKK0NvdXJzZSBOYW1lCUNvdXJzZSBUdXRv
cglTdW1tYXJ5CUNvZGUJRmVlCitBZnRlciB0aGUgQ2l2aWwgV2FyCURyLiBKb2huIFdyb3VnaHRv
bgkgVGhlIGNvdXJzZSB3aWxsIGV4YW1pbmUgdGhlIHR1cmJ1bGVudCB5ZWFycyBpbiBFbmdsYW5k
IGFmdGVyIDE2NDYuIDYgd2Vla2x5IG1lZXRpbmdzIHN0YXJ0aW5nIE1vbmRheSAxM3RoIE9jdG9i
ZXIuCUgyNwnDgsKjMzIJw4LCozMyCitBbiBJbnRyb2R1Y3Rpb24gdG8gQW5nbG8tU2F4b24gRW5n
bGFuZAlNYXJrIENvdHRsZQkgT25lIGRheSBjb3Vyc2UgaW50cm9kdWNpbmcgdGhlIGVhcmx5IG1l
ZGlldmFsIHBlcmlvZCByZWNvbnN0cnVjdGlvbiB0aGUgQW5nbG8tU2F4b25zIGFuZCB0aGVpciBz
b2NpZXR5LiBTYXR1cmRheSAxOHRoIE9jdG9iZXIuCUgyOAnDgsKjMTgJw4LCozE4CitUaGUgR2xv
cnkgdGhhdCB3YXMgR3JlZWNlCSBCaXJ0aHBsYWNlIG9mIGRlbW9jcmFjeSwgcGhpbG9zb3BoeSwg
aGVhcnRsYW5kIG9mIHRoZWF0ZXIsIGhvbWUgb2YgYXJndW1lbnQuIFRoZSBSb21hbnMgbWF5IGhh
dmUgZG9uZSBpdCBidXQgdGhlIEdyZWVrcyBkaWQgaXQgZmlyc3QuIFNhdHVyZGF5IGRheSBzY2hv
b2wgMjV0aCBPY3RvYmVyIDE5OTcJSDMwCcOCwqMxOAnDgsKjMTgKK1RoaXMgdGVzdHMgdGhlIHNj
b3BlIGF0dHJpYnV0ZSBvbiB0YWJsZSBjZWxscyB3aWxsIG1hbmlmZXN0IGFzIHRoZSByaWdodCBo
ZWFkZXIgZWxlbWVudHMgb24gdGhlIGNlbGxzIGluIHRoYXQgcm93IG9yIGNvbHVtbi4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgY29sSGVhZGVyc1swXS5pc0VxdWFsKHRh
YmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIGlzIHRydWUKK1BBU1MgY29sSGVhZGVyc1sw
XS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIGlzIHRydWUKK1BBU1Mg
Y29sSGVhZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIGlz
IHRydWUKK1BBU1MgY29sSGVhZGVyc1sxXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRS
b3coMSwgMSkpIGlzIHRydWUKK1BBU1Mgcm93SGVhZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNlbGxG
b3JDb2x1bW5BbmRSb3coMCwgMikpIGlzIHRydWUKK1BBU1MgY29sSGVhZGVyc1swXS5pc0VxdWFs
KHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIGlzIHRydWUKK1BBU1MgY29sSGVhZGVy
c1sxXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMywgMSkpIGlzIHRydWUKK1BB
U1Mgcm93SGVhZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykp
IGlzIHRydWUKK1BBU1Mgcm93SGVhZGVyc1sxXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5B
bmRSb3coMSwgMykpIGlzIHRydWUKK1BBU1Mgcm93SGVhZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNl
bGxGb3JDb2x1bW5BbmRSb3coMCwgNCkpIGlzIHRydWUKK1BBU1Mgcm93SGVhZGVyc1sxXS5pc0Vx
dWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMykpIGlzIHRydWUKK1BBU1MgY29sSGVh
ZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIGlzIHRydWUK
K1BBU1MgY29sSGVhZGVyc1sxXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coNCwg
MSkpIGlzIHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01Q
TEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNjb3Bl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNjb3BlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQxODVhYwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGFibGUtc2NvcGUuaHRtbApAQCAtMCwwICsxLDEx
MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorCis8dGFibGUgYm9yZGVyPSIxIiBj
ZWxscGFkZGluZz0iNSIgY2VsbHNwYWNpbmc9IjIiIGlkPSJ0YWJsZSI+CisgIDx0Ym9keT48dHI+
CisgICAgPHRoIGNvbHNwYW49IjYiIHNjb3BlPSJjb2xncm91cCI+Q29tbXVuaXR5IENvdXJzZXMg
LS0gQmF0aCBBdXR1bW4gMTk5NzwvdGg+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGggc2NvcGU9
ImNvbCIgYWJicj0iTmFtZSI+Q291cnNlIE5hbWU8L3RoPgorICAgIDx0aCBzY29wZT0iY29sIiBh
YmJyPSJUdXRvciI+Q291cnNlIFR1dG9yPC90aD4KKyAgICA8dGggc2NvcGU9ImNvbCI+U3VtbWFy
eTwvdGg+CisgICAgPHRoIHNjb3BlPSJjb2wiPkNvZGU8L3RoPgorICAgIDx0aCBzY29wZT0iY29s
IiBjb2xzcGFuPSIyIj5GZWU8L3RoPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkIHNjb3BlPSJy
b3ciPkFmdGVyIHRoZSBDaXZpbCBXYXI8L3RkPgorICAgIDx0ZD5Eci4gSm9obiBXcm91Z2h0b248
L3RkPgorICAgIDx0ZD4KKyAgICAgICBUaGUgY291cnNlIHdpbGwgZXhhbWluZSB0aGUgdHVyYnVs
ZW50IHllYXJzIGluIEVuZ2xhbmQKKyAgICAgICBhZnRlciAxNjQ2LiA8ZW0+NiB3ZWVrbHkgbWVl
dGluZ3Mgc3RhcnRpbmcgTW9uZGF5IDEzdGgKKyAgICAgIE9jdG9iZXIuPC9lbT4KKyAgICA8L3Rk
PgorICAgIDx0ZD5IMjc8L3RkPgorICAgIDx0ZD7CozMyPC90ZD4KKyAgICA8dGQ+wqMzMjwvdGQ+
CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQgc2NvcGU9InJvdyI+QW4gSW50cm9kdWN0aW9uIHRv
IEFuZ2xvLVNheG9uIEVuZ2xhbmQ8L3RkPgorICAgIDx0ZCBzY29wZT0icm93Z3JvdXAiIHJvd3Nw
YW49IjIiPk1hcmsgQ290dGxlPC90ZD4KKyAgICA8dGQ+CisgICAgICAgT25lIGRheSBjb3Vyc2Ug
aW50cm9kdWNpbmcgdGhlIGVhcmx5IG1lZGlldmFsCisgICAgICAgcGVyaW9kIHJlY29uc3RydWN0
aW9uIHRoZSBBbmdsby1TYXhvbnMgYW5kCisgICAgICAgdGhlaXIgc29jaWV0eS4gPGVtPlNhdHVy
ZGF5IDE4dGggT2N0b2Jlci48L2VtPgorICAgIDwvdGQ+CisgICAgPHRkPkgyODwvdGQ+CisgICAg
PHRkPsKjMTg8L3RkPgorICAgIDx0ZD7CozE4PC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0
ZCBzY29wZT0icm93Ij5UaGUgR2xvcnkgdGhhdCB3YXMgR3JlZWNlPC90ZD4KKyAgICA8dGQ+Cisg
ICAgIEJpcnRocGxhY2Ugb2YgZGVtb2NyYWN5LCBwaGlsb3NvcGh5LCBoZWFydGxhbmQgb2YgdGhl
YXRlciwgaG9tZSBvZgorICAgICBhcmd1bWVudC4gVGhlIFJvbWFucyBtYXkgaGF2ZSBkb25lIGl0
IGJ1dCB0aGUgR3JlZWtzIGRpZCBpdAorICAgICBmaXJzdC4gPGVtPlNhdHVyZGF5IGRheSBzY2hv
b2wgMjV0aCBPY3RvYmVyIDE5OTc8L2VtPgorICAgIDwvdGQ+CisgICAgPHRkPkgzMDwvdGQ+Cisg
ICAgPHRkPsKjMTg8L3RkPgorICAgIDx0ZD7CozE4PC90ZD4KKyAgPC90cj4KKzwvdGJvZHk+PC90
YWJsZT4KKworCis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgorCis8c2NyaXB0PgorCisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIHNjb3Bl
IGF0dHJpYnV0ZSBvbiB0YWJsZSBjZWxscyB3aWxsIG1hbmlmZXN0IGFzIHRoZSByaWdodCBoZWFk
ZXIgZWxlbWVudHMgb24gdGhlIGNlbGxzIGluIHRoYXQgcm93IG9yIGNvbHVtbi4iKTsKKworICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKworICAgICAgICB2YXIgdGFi
bGUgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRhYmxl
Iik7CisKKyAgICAgICAgLy8gQ291cnNlIG5hbWUgaGFzIGEgY29sdW1uIGhlYWRlciBvZiBDb21t
dW5pdHkgQ291cnNlcy4KKyAgICAgICAgdmFyIGNlbGwgPSB0YWJsZS5jZWxsRm9yQ29sdW1uQW5k
Um93KDAsIDEpOworICAgICAgICB2YXIgY29sSGVhZGVycyA9IGNlbGwuY29sdW1uSGVhZGVycygp
OworICAgICAgICBzaG91bGRCZVRydWUoImNvbEhlYWRlcnNbMF0uaXNFcXVhbCh0YWJsZS5jZWxs
Rm9yQ29sdW1uQW5kUm93KDAsIDApKSIpOworCisgICAgICAgIC8vIEFzIGRvZXMgRmVlLgorICAg
ICAgICBjZWxsID0gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdyg0LCAxKTsKKyAgICAgICAgdmFy
IGNvbEhlYWRlcnMgPSBjZWxsLmNvbHVtbkhlYWRlcnMoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVl
KCJjb2xIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSki
KTsKKworICAgICAgICAvLyBEci4gSm9obiBzaG91bGQgaGF2ZSB0d28gY29sIGhlYWRlcnMgYW5k
IGEgcm93IGhlYWRlci4KKyAgICAgICAgY2VsbCA9IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3co
MSwgMik7CisgICAgICAgIGNvbEhlYWRlcnMgPSBjZWxsLmNvbHVtbkhlYWRlcnMoKTsKKyAgICAg
ICAgcm93SGVhZGVycyA9IGNlbGwucm93SGVhZGVycygpOworICAgICAgICBzaG91bGRCZVRydWUo
ImNvbEhlYWRlcnNbMF0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApKSIp
OworICAgICAgICBzaG91bGRCZVRydWUoImNvbEhlYWRlcnNbMV0uaXNFcXVhbCh0YWJsZS5jZWxs
Rm9yQ29sdW1uQW5kUm93KDEsIDEpKSIpOworICAgICAgICBzaG91bGRCZVRydWUoInJvd0hlYWRl
cnNbMF0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDIpKSIpOworCisgICAg
ICAgIC8vIENvZGUgSDI4LCB0d28gcm93IGhlYWRlcnMsIHR3byBjb2wgaGVhZGVycy4KKyAgICAg
ICAgY2VsbCA9IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMywgMyk7CisgICAgICAgIGNvbEhl
YWRlcnMgPSBjZWxsLmNvbHVtbkhlYWRlcnMoKTsKKyAgICAgICAgcm93SGVhZGVycyA9IGNlbGwu
cm93SGVhZGVycygpOworICAgICAgICBzaG91bGRCZVRydWUoImNvbEhlYWRlcnNbMF0uaXNFcXVh
bCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApKSIpOworICAgICAgICBzaG91bGRCZVRy
dWUoImNvbEhlYWRlcnNbMV0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDMsIDEp
KSIpOworICAgICAgICBzaG91bGRCZVRydWUoInJvd0hlYWRlcnNbMF0uaXNFcXVhbCh0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDAsIDMpKSIpOworICAgICAgICBzaG91bGRCZVRydWUoInJvd0hl
YWRlcnNbMV0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDEsIDMpKSIpOworCisg
ICAgICAgIC8vIFZlcmlmeSBDb2RlIEgzMCBoYXMgdHdvIHJvdyBoZWFkZXJzIGV2ZW4gdGhvdWdo
IHRoZSAybmQgaGVhZGVyIHN0YXJ0ZWQgaW4gYSBzcGFuIGJlZm9yZSB0aGlzIHJvdy4KKyAgICAg
ICAgY2VsbCA9IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMywgNCk7CisgICAgICAgIHJvd0hl
YWRlcnMgPSBjZWxsLnJvd0hlYWRlcnMoKTsKKyAgICAgICAgc2hvdWxkQmVUcnVlKCJyb3dIZWFk
ZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCA0KSkiKTsKKyAgICAg
ICAgc2hvdWxkQmVUcnVlKCJyb3dIZWFkZXJzWzFdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVt
bkFuZFJvdygxLCAzKSkiKTsKKworICAgICAgICAvLyBWZXJpZnkgaXRlbXMgaW4gY29sdW1uIDUg
YXJlIHBpY2tpbmcgdXAgRmVlIGFzIGEgaGVhZGVyIGV2ZW4gdGhvdWdoIGl0J3MgY29sc3BhbiBz
dGFydHMgYmVmb3JlIHRoaXMgY29sdW1uLgorICAgICAgICBjZWxsID0gdGFibGUuY2VsbEZvckNv
bHVtbkFuZFJvdyg0LCA0KTsKKyAgICAgICAgY29sSGVhZGVycyA9IGNlbGwuY29sdW1uSGVhZGVy
cygpOworICAgICAgICBzaG91bGRCZVRydWUoImNvbEhlYWRlcnNbMF0uaXNFcXVhbCh0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDAsIDApKSIpOworICAgICAgICBzaG91bGRCZVRydWUoImNvbEhl
YWRlcnNbMV0uaXNFcXVhbCh0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDQsIDEpKSIpOworCisg
ICAgfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtc2NvcGUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUtc2NvcGUtZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjhkYzc1Li4wMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RhYmxlLXNjb3BlLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLUNvbW11bml0eSBDb3Vy
c2VzIC0tIEJhdGggQXV0dW1uIDE5OTcKLUNvdXJzZSBOYW1lCUNvdXJzZSBUdXRvcglTdW1tYXJ5
CUNvZGUJRmVlCi1BZnRlciB0aGUgQ2l2aWwgV2FyCURyLiBKb2huIFdyb3VnaHRvbgkgVGhlIGNv
dXJzZSB3aWxsIGV4YW1pbmUgdGhlIHR1cmJ1bGVudCB5ZWFycyBpbiBFbmdsYW5kIGFmdGVyIDE2
NDYuIDYgd2Vla2x5IG1lZXRpbmdzIHN0YXJ0aW5nIE1vbmRheSAxM3RoIE9jdG9iZXIuCUgyNwnD
gsKjMzIJw4LCozMyCi1BbiBJbnRyb2R1Y3Rpb24gdG8gQW5nbG8tU2F4b24gRW5nbGFuZAlNYXJr
IENvdHRsZQkgT25lIGRheSBjb3Vyc2UgaW50cm9kdWNpbmcgdGhlIGVhcmx5IG1lZGlldmFsIHBl
cmlvZCByZWNvbnN0cnVjdGlvbiB0aGUgQW5nbG8tU2F4b25zIGFuZCB0aGVpciBzb2NpZXR5LiBT
YXR1cmRheSAxOHRoIE9jdG9iZXIuCUgyOAnDgsKjMTgJw4LCozE4Ci1UaGUgR2xvcnkgdGhhdCB3
YXMgR3JlZWNlCSBCaXJ0aHBsYWNlIG9mIGRlbW9jcmFjeSwgcGhpbG9zb3BoeSwgaGVhcnRsYW5k
IG9mIHRoZWF0ZXIsIGhvbWUgb2YgYXJndW1lbnQuIFRoZSBSb21hbnMgbWF5IGhhdmUgZG9uZSBp
dCBidXQgdGhlIEdyZWVrcyBkaWQgaXQgZmlyc3QuIFNhdHVyZGF5IGRheSBzY2hvb2wgMjV0aCBP
Y3RvYmVyIDE5OTcJSDMwCcOCwqMxOAnDgsKjMTgKLVRoaXMgdGVzdHMgdGhlIHNjb3BlIGF0dHJp
YnV0ZSBvbiB0YWJsZSBjZWxscyB3aWxsIG1hbmlmZXN0IGFzIHRoZSByaWdodCBoZWFkZXIgZWxl
bWVudHMgb24gdGhlIGNlbGxzIGluIHRoYXQgcm93IG9yIGNvbHVtbi4KLQotT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgotCi0KLVBBU1MgY29sSGVhZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNlbGxG
b3JDb2x1bW5BbmRSb3coMCwgMCkpIGlzIHRydWUKLVBBU1MgY29sSGVhZGVyc1swXS5pc0VxdWFs
KHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIGlzIHRydWUKLVBBU1MgY29sSGVhZGVy
c1swXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIGlzIHRydWUKLVBB
U1MgY29sSGVhZGVyc1sxXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMSkp
IGlzIHRydWUKLVBBU1Mgcm93SGVhZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5B
bmRSb3coMCwgMikpIGlzIHRydWUKLVBBU1MgY29sSGVhZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNl
bGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIGlzIHRydWUKLVBBU1MgY29sSGVhZGVyc1sxXS5pc0Vx
dWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMywgMSkpIGlzIHRydWUKLVBBU1Mgcm93SGVh
ZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMykpIGlzIHRydWUK
LVBBU1Mgcm93SGVhZGVyc1sxXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwg
MykpIGlzIHRydWUKLVBBU1Mgcm93SGVhZGVyc1swXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1
bW5BbmRSb3coMCwgNCkpIGlzIHRydWUKLVBBU1Mgcm93SGVhZGVyc1sxXS5pc0VxdWFsKHRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMykpIGlzIHRydWUKLVBBU1MgY29sSGVhZGVyc1swXS5p
c0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIGlzIHRydWUKLVBBU1MgY29s
SGVhZGVyc1sxXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coNCwgMSkpIGlzIHRy
dWUKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBDT01QTEVURQotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS1z
Y29wZS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGFibGUt
c2NvcGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM4MWU3Yy4uMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90YWJsZS1zY29w
ZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4K
LTxib2R5IGlkPSJib2R5Ij4KLQotPHRhYmxlIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjUiIGNl
bGxzcGFjaW5nPSIyIiBpZD0idGFibGUiPgotICA8dGJvZHk+PHRyPgotICAgIDx0aCBjb2xzcGFu
PSI2IiBzY29wZT0iY29sZ3JvdXAiPkNvbW11bml0eSBDb3Vyc2VzIC0tIEJhdGggQXV0dW1uIDE5
OTc8L3RoPgotICA8L3RyPgotICA8dHI+Ci0gICAgPHRoIHNjb3BlPSJjb2wiIGFiYnI9Ik5hbWUi
PkNvdXJzZSBOYW1lPC90aD4KLSAgICA8dGggc2NvcGU9ImNvbCIgYWJicj0iVHV0b3IiPkNvdXJz
ZSBUdXRvcjwvdGg+Ci0gICAgPHRoIHNjb3BlPSJjb2wiPlN1bW1hcnk8L3RoPgotICAgIDx0aCBz
Y29wZT0iY29sIj5Db2RlPC90aD4KLSAgICA8dGggc2NvcGU9ImNvbCIgY29sc3Bhbj0iMiI+RmVl
PC90aD4KLSAgPC90cj4KLSAgPHRyPgotICAgIDx0ZCBzY29wZT0icm93Ij5BZnRlciB0aGUgQ2l2
aWwgV2FyPC90ZD4KLSAgICA8dGQ+RHIuIEpvaG4gV3JvdWdodG9uPC90ZD4KLSAgICA8dGQ+Ci0g
ICAgICAgVGhlIGNvdXJzZSB3aWxsIGV4YW1pbmUgdGhlIHR1cmJ1bGVudCB5ZWFycyBpbiBFbmds
YW5kCi0gICAgICAgYWZ0ZXIgMTY0Ni4gPGVtPjYgd2Vla2x5IG1lZXRpbmdzIHN0YXJ0aW5nIE1v
bmRheSAxM3RoCi0gICAgICBPY3RvYmVyLjwvZW0+Ci0gICAgPC90ZD4KLSAgICA8dGQ+SDI3PC90
ZD4KLSAgICA8dGQ+wqMzMjwvdGQ+Ci0gICAgPHRkPsKjMzI8L3RkPgotICA8L3RyPgotICA8dHI+
Ci0gICAgPHRkIHNjb3BlPSJyb3ciPkFuIEludHJvZHVjdGlvbiB0byBBbmdsby1TYXhvbiBFbmds
YW5kPC90ZD4KLSAgICA8dGQgc2NvcGU9InJvd2dyb3VwIiByb3dzcGFuPSIyIj5NYXJrIENvdHRs
ZTwvdGQ+Ci0gICAgPHRkPgotICAgICAgIE9uZSBkYXkgY291cnNlIGludHJvZHVjaW5nIHRoZSBl
YXJseSBtZWRpZXZhbAotICAgICAgIHBlcmlvZCByZWNvbnN0cnVjdGlvbiB0aGUgQW5nbG8tU2F4
b25zIGFuZAotICAgICAgIHRoZWlyIHNvY2lldHkuIDxlbT5TYXR1cmRheSAxOHRoIE9jdG9iZXIu
PC9lbT4KLSAgICA8L3RkPgotICAgIDx0ZD5IMjg8L3RkPgotICAgIDx0ZD7CozE4PC90ZD4KLSAg
ICA8dGQ+wqMxODwvdGQ+Ci0gIDwvdHI+Ci0gIDx0cj4KLSAgICA8dGQgc2NvcGU9InJvdyI+VGhl
IEdsb3J5IHRoYXQgd2FzIEdyZWVjZTwvdGQ+Ci0gICAgPHRkPgotICAgICBCaXJ0aHBsYWNlIG9m
IGRlbW9jcmFjeSwgcGhpbG9zb3BoeSwgaGVhcnRsYW5kIG9mIHRoZWF0ZXIsIGhvbWUgb2YKLSAg
ICAgYXJndW1lbnQuIFRoZSBSb21hbnMgbWF5IGhhdmUgZG9uZSBpdCBidXQgdGhlIEdyZWVrcyBk
aWQgaXQKLSAgICAgZmlyc3QuIDxlbT5TYXR1cmRheSBkYXkgc2Nob29sIDI1dGggT2N0b2JlciAx
OTk3PC9lbT4KLSAgICA8L3RkPgotICAgIDx0ZD5IMzA8L3RkPgotICAgIDx0ZD7CozE4PC90ZD4K
LSAgICA8dGQ+wqMxODwvdGQ+Ci0gIDwvdHI+Ci08L3Rib2R5PjwvdGFibGU+Ci0KLQotPHAgaWQ9
ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQotPHNjcmlwdD4K
LQotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBzY29wZSBhdHRyaWJ1dGUgb24gdGFi
bGUgY2VsbHMgd2lsbCBtYW5pZmVzdCBhcyB0aGUgcmlnaHQgaGVhZGVyIGVsZW1lbnRzIG9uIHRo
ZSBjZWxscyBpbiB0aGF0IHJvdyBvciBjb2x1bW4uIik7Ci0KLSAgICBpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7Ci0KLSAgICAgICAgdmFyIHRhYmxlID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0YWJsZSIpOwotCi0gICAgICAgIC8v
IENvdXJzZSBuYW1lIGhhcyBhIGNvbHVtbiBoZWFkZXIgb2YgQ29tbXVuaXR5IENvdXJzZXMuCi0g
ICAgICAgIHZhciBjZWxsID0gdGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAxKTsKLSAgICAg
ICAgdmFyIGNvbEhlYWRlcnMgPSBjZWxsLmNvbHVtbkhlYWRlcnMoKTsKLSAgICAgICAgc2hvdWxk
QmVUcnVlKCJjb2xIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygw
LCAwKSkiKTsKLQotICAgICAgICAvLyBBcyBkb2VzIEZlZS4KLSAgICAgICAgY2VsbCA9IHRhYmxl
LmNlbGxGb3JDb2x1bW5BbmRSb3coNCwgMSk7Ci0gICAgICAgIHZhciBjb2xIZWFkZXJzID0gY2Vs
bC5jb2x1bW5IZWFkZXJzKCk7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiY29sSGVhZGVyc1swXS5p
c0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgMCkpIik7Ci0KLSAgICAgICAgLy8g
RHIuIEpvaG4gc2hvdWxkIGhhdmUgdHdvIGNvbCBoZWFkZXJzIGFuZCBhIHJvdyBoZWFkZXIuCi0g
ICAgICAgIGNlbGwgPSB0YWJsZS5jZWxsRm9yQ29sdW1uQW5kUm93KDEsIDIpOwotICAgICAgICBj
b2xIZWFkZXJzID0gY2VsbC5jb2x1bW5IZWFkZXJzKCk7Ci0gICAgICAgIHJvd0hlYWRlcnMgPSBj
ZWxsLnJvd0hlYWRlcnMoKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJjb2xIZWFkZXJzWzBdLmlz
RXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAwKSkiKTsKLSAgICAgICAgc2hvdWxk
QmVUcnVlKCJjb2xIZWFkZXJzWzFdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygx
LCAxKSkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJyb3dIZWFkZXJzWzBdLmlzRXF1YWwodGFi
bGUuY2VsbEZvckNvbHVtbkFuZFJvdygwLCAyKSkiKTsKLQotICAgICAgICAvLyBDb2RlIEgyOCwg
dHdvIHJvdyBoZWFkZXJzLCB0d28gY29sIGhlYWRlcnMuCi0gICAgICAgIGNlbGwgPSB0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDMsIDMpOwotICAgICAgICBjb2xIZWFkZXJzID0gY2VsbC5jb2x1
bW5IZWFkZXJzKCk7Ci0gICAgICAgIHJvd0hlYWRlcnMgPSBjZWxsLnJvd0hlYWRlcnMoKTsKLSAg
ICAgICAgc2hvdWxkQmVUcnVlKCJjb2xIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNv
bHVtbkFuZFJvdygwLCAwKSkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJjb2xIZWFkZXJzWzFd
LmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygzLCAxKSkiKTsKLSAgICAgICAgc2hv
dWxkQmVUcnVlKCJyb3dIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJv
dygwLCAzKSkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJyb3dIZWFkZXJzWzFdLmlzRXF1YWwo
dGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdygxLCAzKSkiKTsKLQotICAgICAgICAvLyBWZXJpZnkg
Q29kZSBIMzAgaGFzIHR3byByb3cgaGVhZGVycyBldmVuIHRob3VnaCB0aGUgMm5kIGhlYWRlciBz
dGFydGVkIGluIGEgc3BhbiBiZWZvcmUgdGhpcyByb3cuCi0gICAgICAgIGNlbGwgPSB0YWJsZS5j
ZWxsRm9yQ29sdW1uQW5kUm93KDMsIDQpOwotICAgICAgICByb3dIZWFkZXJzID0gY2VsbC5yb3dI
ZWFkZXJzKCk7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgicm93SGVhZGVyc1swXS5pc0VxdWFsKHRh
YmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMCwgNCkpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgi
cm93SGVhZGVyc1sxXS5pc0VxdWFsKHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coMSwgMykpIik7
Ci0KLSAgICAgICAgLy8gVmVyaWZ5IGl0ZW1zIGluIGNvbHVtbiA1IGFyZSBwaWNraW5nIHVwIEZl
ZSBhcyBhIGhlYWRlciBldmVuIHRob3VnaCBpdCdzIGNvbHNwYW4gc3RhcnRzIGJlZm9yZSB0aGlz
IGNvbHVtbi4KLSAgICAgICAgY2VsbCA9IHRhYmxlLmNlbGxGb3JDb2x1bW5BbmRSb3coNCwgNCk7
Ci0gICAgICAgIGNvbEhlYWRlcnMgPSBjZWxsLmNvbHVtbkhlYWRlcnMoKTsKLSAgICAgICAgc2hv
dWxkQmVUcnVlKCJjb2xIZWFkZXJzWzBdLmlzRXF1YWwodGFibGUuY2VsbEZvckNvbHVtbkFuZFJv
dygwLCAwKSkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJjb2xIZWFkZXJzWzFdLmlzRXF1YWwo
dGFibGUuY2VsbEZvckNvbHVtbkFuZFJvdyg0LCAxKSkiKTsKLQotICAgIH0KLQotPC9zY3JpcHQ+
Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggMTI2ZmY1MS4uYWI5Y2M4MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTcwMSw2ICs3MDEsOSBAQCB3ZWJraXQub3JnL2IvMTI3
NDg1IHBsYXRmb3JtL3dpbi9hY2Nlc3NpYmlsaXR5L29wdGlvbi1lbGVtZW50LXNlbGVjdGlvbi1h
bmQtZm9jdQogd2Via2l0Lm9yZy9iLzEyNzQ4NSBwbGF0Zm9ybS93aW4vYWNjZXNzaWJpbGl0eS9w
YXJlbnQtZWxlbWVudC5odG1sIFsgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTI3NDg1IHBsYXRm
b3JtL3dpbi9hY2Nlc3NpYmlsaXR5L3NlbGVjdC1lbGVtZW50LXZhbHVlY2hhbmdlLWV2ZW50Lmh0
bWwgWyBGYWlsdXJlIF0KIAorIyBTa2lwcGluZyBvbiB3aW5kb3dzLCBtaXNzaW5nIGltcGxlbWVu
dGF0aW9uLgord2Via2l0Lm9yZy9iLzEyOTI1MCBhY2Nlc3NpYmlsaXR5L3RhYmxlLXNjb3BlLmh0
bWwgWyBTa2lwIF0KKwogIyBUZW1wb3JhcmlseSBza2lwIGEgYnVuY2ggb2YgZmFpbGluZyB0ZXN0
cyBvbiBXaW5kb3dzIGJvdHMgdW50aWwKICMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwODI0OQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWY1MWE1Yi4uYWQ1MjJkZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE0LTAyLTI2ICBLcnp5c3p0b2YgQ3plY2ggIDxrLmN6
ZWNoQHNhbXN1bmcuY29tPgorCisgICAgICAgIFtBVEtdIFV0aWxpemUgQXRrVGFibGVDZWxsIHRv
IGV4cG9zZSBkaXJlY3RseSBBY2Nlc3NpYmlsaXR5VGFibGVDZWxsIHRvIEFUCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjkyNTAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5
L3RhYmxlLXNjb3BlLmh0bWwKKworICAgICAgICBFeHBvc2luZyBBdGtUYWJsZUNlbGwgdG8gQVQu
IEltcGxlbWVudGluZyBwb3NzaWJpbGl0eSB0byBnZXQgY29sdW1uIGhlYWRlcnMgYW5kIHJvdyBo
ZWFkZXJzCisgICAgICAgIGFzIGFuIGFycmF5IG9mIGNlbGxzLgorCisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmNwcDog
QWRkZWQuCisgICAgICAgIChjb252ZXJ0VG9HUHRyQXJyYXkpOgorICAgICAgICAoY29yZSk6Cisg
ICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlVGFibGVDZWxsR2V0Q29sdW1uSGVhZGVyQ2VsbHMpOgor
ICAgICAgICAod2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdldFJvd0hlYWRlckNlbGxzKToKKyAg
ICAgICAgKHdlYmtpdEFjY2Vzc2libGVUYWJsZUNlbGxJbnRlcmZhY2VJbml0KToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmg6
IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFw
cGVyQXRrLmNwcDoKKyAgICAgICAgKGdldEludGVyZmFjZU1hc2tGcm9tT2JqZWN0KToKKwogMjAx
NC0wMi0yNiAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4KIAogICAgICAgICBb
Q1NTUmVnaW9uc10gUmVtb3ZlIHVudXNlZCBtZXRob2QgUmVuZGVyRmxvd1RocmVhZDo6dXBkYXRl
TGF5ZXJUb1JlZ2lvbk1hcHBpbmdzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IGY2ZDA3YzYuLjhiZTFkOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjA5
NCw2ICs2MDk0LDggQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlU2VsZWN0aW9uLmggXAog
CVNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUYWJsZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFj
Y2Vzc2libGVJbnRlcmZhY2VUYWJsZS5oIFwKKyAgICBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmNwcCBcCisgICAgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRh
YmxlQ2VsbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlSW50ZXJmYWNlVGV4dC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUZXh0LmggXAogCVNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VWYWx1ZS5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCA4MWE3NjBlLi41YTM1ZTVlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0
Zm9ybUVmbC5jbWFrZQpAQCAtMjksNiArMjksNyBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKICAgICBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSW1hZ2Uu
Y3BwCiAgICAgYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVNlbGVj
dGlvbi5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNl
VGFibGUuY3BwCisgICAgYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZVRhYmxlQ2VsbC5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVGV4dC5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVmFsdWUuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0
aWwuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZUNlbGwuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5OGMyNjYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGFibGVDZWxsLmNwcApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE0IFNhbXN1bmcgRWxlY3Ryb25pY3MuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmgi
CisKKyNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmIEFUS19DSEVDS19WRVJTSU9OKDIsMTEsOTAp
CisKKyNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCisjaW5jbHVkZSAiQWNjZXNzaWJp
bGl0eVRhYmxlLmgiCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5oIgorI2luY2x1
ZGUgIldlYktpdEFjY2Vzc2libGVVdGlsLmgiCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdy
YXBwZXJBdGsuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK3N0YXRpYyBHUHRyQXJy
YXkqIGNvbnZlcnRUb0dQdHJBcnJheShjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3Np
YmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKQoreworICAgIEdQdHJBcnJheSogYXJyYXkg
PSBnX3B0cl9hcnJheV9uZXcoKTsKKyAgICBmb3IgKGNvbnN0IGF1dG8mIGNoaWxkIDogY2hpbGRy
ZW4pIHsKKyAgICAgICAgaWYgKEF0a09iamVjdCogYXRrT2JqZWN0ID0gY2hpbGQtPndyYXBwZXIo
KSkKKyAgICAgICAgICAgIGdfcHRyX2FycmF5X2FkZChhcnJheSwgYXRrT2JqZWN0KTsKKyAgICB9
CisgICAgcmV0dXJuIGFycmF5OworfQorCitzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogY29y
ZShBdGtUYWJsZUNlbGwqIGNlbGwpCit7CisgICAgaWYgKCFXRUJLSVRfSVNfQUNDRVNTSUJMRShj
ZWxsKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gd2Via2l0QWNjZXNz
aWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lUX0FDQ0VTU0lCTEUoY2VsbCkpOworfQor
CitHUHRyQXJyYXkqIHdlYmtpdEFjY2Vzc2libGVUYWJsZUNlbGxHZXRDb2x1bW5IZWFkZXJDZWxs
cyhBdGtUYWJsZUNlbGwqIGNlbGwpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoQVRLX1RB
QkxFX0NFTEwoY2VsbCksIG51bGxwdHIpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJs
ZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShjZWxsKSwgbnVsbHB0cik7CisKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9IGNvcmUoY2VsbCk7CisgICAgaWYgKCFheE9iamVj
dCB8fCAhYXhPYmplY3QtPmlzVGFibGVDZWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNv
bHVtbkhlYWRlcnM7CisgICAgdG9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsKGF4T2JqZWN0KS0+Y29s
dW1uSGVhZGVycyhjb2x1bW5IZWFkZXJzKTsKKworICAgIHJldHVybiBjb252ZXJ0VG9HUHRyQXJy
YXkoY29sdW1uSGVhZGVycyk7Cit9CisKK0dQdHJBcnJheSogd2Via2l0QWNjZXNzaWJsZVRhYmxl
Q2VsbEdldFJvd0hlYWRlckNlbGxzKEF0a1RhYmxlQ2VsbCogY2VsbCkKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChBVEtfVEFCTEVfQ0VMTChjZWxsKSwgbnVsbHB0cik7CisgICAgcmV0dXJu
VmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGNlbGwpLCBu
dWxscHRyKTsKKworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gY29yZShjZWxs
KTsKKyAgICBpZiAoIWF4T2JqZWN0IHx8ICFheE9iamVjdC0+aXNUYWJsZUNlbGwoKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmls
aXR5Q2hpbGRyZW5WZWN0b3Igcm93SGVhZGVyczsKKyAgICB0b0FjY2Vzc2liaWxpdHlUYWJsZUNl
bGwoYXhPYmplY3QpLT5yb3dIZWFkZXJzKHJvd0hlYWRlcnMpOworCisgICAgcmV0dXJuIGNvbnZl
cnRUb0dQdHJBcnJheShyb3dIZWFkZXJzKTsKK30KKwordm9pZCB3ZWJraXRBY2Nlc3NpYmxlVGFi
bGVDZWxsSW50ZXJmYWNlSW5pdChBdGtUYWJsZUNlbGxJZmFjZSogaWZhY2UpCit7CisgICAgaWZh
Y2UtPmdldF9jb2x1bW5faGVhZGVyX2NlbGxzID0gd2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEdl
dENvbHVtbkhlYWRlckNlbGxzOworICAgIGlmYWNlLT5nZXRfcm93X2hlYWRlcl9jZWxscyA9IHdl
YmtpdEFjY2Vzc2libGVUYWJsZUNlbGxHZXRSb3dIZWFkZXJDZWxsczsKK30KKworI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlVGFibGVDZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uOGZhNGQ3YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZUNlbGwu
aApAQCAtMCwwICsxLDEzIEBACisjaWZuZGVmIFdlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJs
ZUNlbGxfaAorI2RlZmluZSBXZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsX2gKKwor
I2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKKworI2luY2x1ZGUgPGF0ay9hdGsuaD4KKworI2lmIEFU
S19DSEVDS19WRVJTSU9OKDIsMTEsOTApCit2b2lkIHdlYmtpdEFjY2Vzc2libGVUYWJsZUNlbGxJ
bnRlcmZhY2VJbml0KEF0a1RhYmxlQ2VsbElmYWNlKik7CisjZW5kaWYKKworI2VuZGlmIC8vIEhB
VkUoQUNDRVNTSUJJTElUWSkKKyNlbmRpZiAvLyBXZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFi
bGVDZWxsX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dl
YktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcAppbmRleCBiNDNlY2Y4Li45ZWQ1
Yzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwCkBAIC01Nyw2ICs1Nyw3IEBACiAj
aW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUltYWdlLmgiCiAjaW5jbHVkZSAiV2Vi
S2l0QWNjZXNzaWJsZUludGVyZmFjZVNlbGVjdGlvbi5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUYWJsZS5oIgorI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVJbnRlcmZh
Y2VUYWJsZUNlbGwuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5o
IgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VWYWx1ZS5oIgogI2luY2x1ZGUg
IldlYktpdEFjY2Vzc2libGVVdGlsLmgiCkBAIC0xMDUzLDYgKzEwNTQsOSBAQCBzdGF0aWMgY29u
c3QgR0ludGVyZmFjZUluZm8gQXRrSW50ZXJmYWNlc0luaXRGdW5jdGlvbnNbXSA9IHsKICAgICB7
cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHdlYmtpdEFjY2Vzc2libGVDb21w
b25lbnRJbnRlcmZhY2VJbml0KSwgMCwgMH0sCiAgICAge3JlaW50ZXJwcmV0X2Nhc3Q8R0ludGVy
ZmFjZUluaXRGdW5jPih3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VJbnRlcmZhY2VJbml0KSwgMCwgMH0s
CiAgICAge3JlaW50ZXJwcmV0X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPih3ZWJraXRBY2Nlc3Np
YmxlVGFibGVJbnRlcmZhY2VJbml0KSwgMCwgMH0sCisjaWYgQVRLX0NIRUNLX1ZFUlNJT04oMiwx
MSw5MCkKKyAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHdlYmtpdEFj
Y2Vzc2libGVUYWJsZUNlbGxJbnRlcmZhY2VJbml0KSwgMCwgMH0sCisjZW5kaWYKICAgICB7cmVp
bnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHdlYmtpdEFjY2Vzc2libGVIeXBlcnRl
eHRJbnRlcmZhY2VJbml0KSwgMCwgMH0sCiAgICAge3JlaW50ZXJwcmV0X2Nhc3Q8R0ludGVyZmFj
ZUluaXRGdW5jPih3ZWJraXRBY2Nlc3NpYmxlSHlwZXJsaW5rSW1wbEludGVyZmFjZUluaXQpLCAw
LCAwfSwKICAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHdlYmtpdEFj
Y2Vzc2libGVEb2N1bWVudEludGVyZmFjZUluaXQpLCAwLCAwfSwKQEAgLTEwNjcsNiArMTA3MSw5
IEBAIGVudW0gV0FJVHlwZSB7CiAgICAgV0FJX0NPTVBPTkVOVCwKICAgICBXQUlfSU1BR0UsCiAg
ICAgV0FJX1RBQkxFLAorI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsMTEsOTApCisgICAgV0FJX1RB
QkxFX0NFTEwsCisjZW5kaWYKICAgICBXQUlfSFlQRVJURVhULAogICAgIFdBSV9IWVBFUkxJTkss
CiAgICAgV0FJX0RPQ1VNRU5ULApAQCAtMTA5MCw2ICsxMDk3LDEwIEBAIHN0YXRpYyBHVHlwZSBH
ZXRBdGtJbnRlcmZhY2VUeXBlRnJvbVdBSVR5cGUoV0FJVHlwZSB0eXBlKQogICAgICAgICByZXR1
cm4gQVRLX1RZUEVfSU1BR0U7CiAgICAgY2FzZSBXQUlfVEFCTEU6CiAgICAgICAgIHJldHVybiBB
VEtfVFlQRV9UQUJMRTsKKyNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLDExLDkwKQorICAgIGNhc2Ug
V0FJX1RBQkxFX0NFTEw6CisgICAgICAgIHJldHVybiBBVEtfVFlQRV9UQUJMRV9DRUxMOworI2Vu
ZGlmCiAgICAgY2FzZSBXQUlfSFlQRVJURVhUOgogICAgICAgICByZXR1cm4gQVRLX1RZUEVfSFlQ
RVJURVhUOwogICAgIGNhc2UgV0FJX0hZUEVSTElOSzoKQEAgLTExNzMsNiArMTE4NCwxMSBAQCBz
dGF0aWMgZ3VpbnQxNiBnZXRJbnRlcmZhY2VNYXNrRnJvbU9iamVjdChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBjb3JlT2JqZWN0KQogICAgIGlmIChyb2xlID09IFRhYmxlUm9sZSkKICAgICAgICAgaW50
ZXJmYWNlTWFzayB8PSAxIDw8IFdBSV9UQUJMRTsKIAorI2lmIEFUS19DSEVDS19WRVJTSU9OKDIs
MTEsOTApCisgICAgaWYgKHJvbGUgPT0gQ2VsbFJvbGUpCisgICAgICAgIGludGVyZmFjZU1hc2sg
fD0gMSA8PCBXQUlfVEFCTEVfQ0VMTDsKKyNlbmRpZgorCiAgICAgLy8gRG9jdW1lbnQKICAgICBp
ZiAocm9sZSA9PSBXZWJBcmVhUm9sZSkKICAgICAgICAgaW50ZXJmYWNlTWFzayB8PSAxIDw8IFdB
SV9ET0NVTUVOVDsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBmZmMwMWM4Li4zOGFiZGUyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTQtMDItMjYgIEtyenlzenRv
ZiBDemVjaCAgPGsuY3plY2hAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgW0FUS10gVXRpbGl6ZSBB
dGtUYWJsZUNlbGwgdG8gZXhwb3NlIGRpcmVjdGx5IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwgdG8g
QVQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyOTI1
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5n
aW5nIHZlcnNpb24gb2YgQVRLIHRvIDIuMTEuOTAsIGJlY2F1c2UgaXQgaW50cm9kdWNlcyBBdGtU
YWJsZUNlbGwgaW50ZXJmYWNlLgorICAgICAgICBJbXBsZW1lbnRpbmcgbWV0aG9kcyBzbyB0aGF0
IHdlIGNvdWxkIHRlc3QgY29sdW1uL3JvdyBoZWFkZXJzIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5
IG9mIGNlbGxzLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxl
bWVudC5jcHA6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvYXRrL0FjY2Vzc2liaWxpdHlVSUVs
ZW1lbnRBdGsuY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVh
ZGVycyk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHA6
IEFkZGluZyBlbXB0eSBzdHVicywgdG8gbm90IGJyZWFrIGNvbXBpbGF0aW9uLgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycyk6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcDoKKyAgICAg
ICAgKFdUUjo6QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6cm93SGVhZGVycyk6CisgICAgICAgIChX
VFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMpOgorICAgICAgICAqIGVm
bC9qaGJ1aWxkLm1vZHVsZXM6CisgICAgICAgICogZ3RrL2poYnVpbGQubW9kdWxlczoKKwogMjAx
NC0wMi0yNiAgTWFudWVsIFJlZ28gQ2FzYXNub3ZhcyAgPHJlZ29AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR1RLXSBSZS1lbmFibGUgZ3RrLWRvYyBpbiBFV1MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAKaW5kZXggOGVlNzI4My4uMWI2OTUxMCAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5j
cHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5jcHAK
QEAgLTEzMjUsOCArMTMyNSw2IEBAIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OnBhdGhEZXNjcmlwdGlvbigpIGNvbnN0IHsgcmV0dXJuIDA7IH0KIAogI2lmICFQTEFURk9STShD
T0NPQSkKIHZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6dWlFbGVtZW50QXJyYXlBdHRyaWJ1
dGVWYWx1ZShKU1N0cmluZ1JlZiwgVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JikgY29u
c3QgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmNvbHVtbkhlYWRlcnMoVmVjdG9y
PEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JikgY29uc3QgeyB9Ci12b2lkIEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OnJvd0hlYWRlcnMoVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+JikgY29u
c3QgeyB9CiAjZW5kaWYKIAogI2lmICFQTEFURk9STShXSU4pCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKaW5kZXggMjBi
ZTU5ODcuLmM5NmQ1OGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2F0ay9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9hdGsv
QWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAKQEAgLTQ4NSw2ICs0ODUsMTYgQEAgc3RhdGlj
IFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBnZXRWaXNpYmxlQ2VsbHMoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCogZWwKICAgICByZXR1cm4gdmlzaWJsZUNlbGxzOwogfQogCisjaWYgQVRL
X0NIRUNLX1ZFUlNJT04oMiwxMSw5MCkKK3N0YXRpYyB2b2lkIGNvbnZlcnRHUHRyQXJyYXlUb1Zl
Y3Rvcihjb25zdCBHUHRyQXJyYXkqIGFycmF5LCBWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4mIGVsZW1lbnRzKQoreworICAgIGZvciAoZ3VpbnQgaSA9IDA7IGkgPCBhcnJheS0+bGVuOyBp
KyspIHsKKyAgICAgICAgaWYgKEF0a09iamVjdCogYXRrT2JqZWN0ID0gc3RhdGljX2Nhc3Q8QXRr
T2JqZWN0Kj4oZ19wdHJfYXJyYXlfaW5kZXgoYXJyYXksIGkpKSkKKyAgICAgICAgICAgIGVsZW1l
bnRzLmFwcGVuZChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGF0a09iamVjdCkpOworICAgIH0KK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZQogCiBKU1N0cmluZ1JlZiBpbmRleFJhbmdlSW5UYWJs
ZShQbGF0Zm9ybVVJRWxlbWVudCBlbGVtZW50LCBib29sIGlzUm93UmFuZ2UpCkBAIC0xNjU2LDQg
KzE2NjYsMzIgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVTZWxlY3Rpb25B
dEluZGV4KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIGF0a19zZWxlY3Rpb25fcmVtb3ZlX3Nl
bGVjdGlvbihBVEtfU0VMRUNUSU9OKG1fZWxlbWVudCksIGluZGV4KTsKIH0KIAordm9pZCBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50Ojpjb2x1bW5IZWFkZXJzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50PiYgY29sdW1ucykgY29uc3QKK3sKKyNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLDExLDkw
KQorICAgIGlmICghQVRLX0lTX1RBQkxFX0NFTEwobV9lbGVtZW50KSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgR1JlZlB0cjxHUHRyQXJyYXk+IGFycmF5ID0gYWRvcHRHUmVmKGF0a190YWJsZV9j
ZWxsX2dldF9jb2x1bW5faGVhZGVyX2NlbGxzKEFUS19UQUJMRV9DRUxMKG1fZWxlbWVudCkpKTsK
KyAgICBpZiAoIWFycmF5KQorICAgICAgICByZXR1cm47CisKKyAgICBjb252ZXJ0R1B0ckFycmF5
VG9WZWN0b3IoYXJyYXkuZ2V0KCksIGNvbHVtbnMpOworI2VuZGlmCit9CisKK3ZvaWQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cm93SGVhZGVycyhWZWN0b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVu
dD4mIGNlbGxzKSBjb25zdAoreworI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsMTEsOTApCisgICAg
aWYgKCFBVEtfSVNfVEFCTEVfQ0VMTChtX2VsZW1lbnQpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBHUmVmUHRyPEdQdHJBcnJheT4gYXJyYXkgPSBhZG9wdEdSZWYoYXRrX3RhYmxlX2NlbGxfZ2V0
X3Jvd19oZWFkZXJfY2VsbHMoQVRLX1RBQkxFX0NFTEwobV9lbGVtZW50KSkpOworICAgIGlmICgh
YXJyYXkpCisgICAgICAgIHJldHVybjsKKworICAgIGNvbnZlcnRHUHRyQXJyYXlUb1ZlY3Rvcihh
cnJheS5nZXQoKSwgY2VsbHMpOworI2VuZGlmCit9CisKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRXaW4uY3BwCmluZGV4
IGM3YzYyNDAuLjI1N2Q5YTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9B
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93
aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAKQEAgLTg4NSwzICs4ODUsMTMgQEAgQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3RlZENoaWxk
QXRJbmRleCh1bnNpZ25lZCkgY28KICAgICAvLyBGSVhNRTogaW1wbGVtZW50CiAgICAgcmV0dXJu
IDA7CiB9CisKK3ZvaWQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycyhWZWN0
b3I8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4mKSBjb25zdAoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQKK30KKwordm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpyb3dIZWFkZXJzKFZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudAorfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9hdGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEF0ay5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAppbmRl
eCAwZDE4NDc0Li5mNzM1OTdjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50QXRrLmNwcAorKysgYi9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL2F0ay9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50QXRrLmNwcApAQCAtMzUsNiArMzUsOSBAQAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNTdHJpbmdSZWYuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgorI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsMTEs
OTApCisjaW5jbHVkZSA8V2ViS2l0Mi9XS0J1bmRsZUZyYW1lLmg+CisjZW5kaWYKICNpbmNsdWRl
IDxhdGsvYXRrLmg+CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYv
Z29iamVjdC9HUmVmUHRyLmg+CkBAIC01NTAsNiArNTUzLDMxIEBAIHN0YXRpYyBWZWN0b3I8UmVm
UHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+ID4gZ2V0VmlzaWJsZUNlbGxzKEFjY2Vzc2liaWxp
dHlVSUVsCiAgICAgcmV0dXJuIHZpc2libGVDZWxsczsKIH0KIAorI2lmIEFUS19DSEVDS19WRVJT
SU9OKDIsMTEsOTApCitzdGF0aWMgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Pj4gY29udmVydEdQdHJBcnJheVRvVmVjdG9yKGNvbnN0IEdQdHJBcnJheSogYXJyYXkpCit7Cisg
ICAgVmVjdG9yPFJlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gY2VsbHM7CisgICAgZm9y
IChndWludCBpID0gMDsgaSA8IGFycmF5LT5sZW47IGkrKykgeworICAgICAgICBpZiAoQXRrT2Jq
ZWN0KiBhdGtPYmplY3QgPSBzdGF0aWNfY2FzdDxBdGtPYmplY3QqPihnX3B0cl9hcnJheV9pbmRl
eChhcnJheSwgaSkpKQorICAgICAgICAgICAgY2VsbHMuYXBwZW5kKEFjY2Vzc2liaWxpdHlVSUVs
ZW1lbnQ6OmNyZWF0ZShhdGtPYmplY3QpKTsKKyAgICB9CisgICAgcmV0dXJuIGNlbGxzOworfQor
CitzdGF0aWMgSlNWYWx1ZVJlZiBjb252ZXJ0VG9KU09iamVjdEFycmF5KGNvbnN0IFZlY3RvcjxS
ZWZQdHI8QWNjZXNzaWJpbGl0eVVJRWxlbWVudD4+JiBjaGlsZHJlbikKK3sKKyAgICBXS0J1bmRs
ZUZyYW1lUmVmIG1haW5GcmFtZSA9IFdLQnVuZGxlUGFnZUdldE1haW5GcmFtZShJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkucGFnZSgpLT5wYWdlKCkpOworICAgIEpTQ29udGV4dFJlZiBjb250ZXh0
ID0gV0tCdW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CisKKyAgICBz
aXplX3QgZWxlbWVudENvdW50ID0gY2hpbGRyZW4uc2l6ZSgpOworICAgIGF1dG8gdmFsdWVFbGVt
ZW50cyA9IHN0ZDo6bWFrZV91bmlxdWU8SlNWYWx1ZVJlZltdPihlbGVtZW50Q291bnQpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWxlbWVudENvdW50OyBpKyspCisgICAgICAgIHZhbHVl
RWxlbWVudHNbaV0gPSBKU09iamVjdE1ha2UoY29udGV4dCwgY2hpbGRyZW5baV0tPndyYXBwZXJD
bGFzcygpLCBjaGlsZHJlbltpXS5nZXQoKSk7CisKKyAgICByZXR1cm4gSlNPYmplY3RNYWtlQXJy
YXkoY29udGV4dCwgZWxlbWVudENvdW50LCB2YWx1ZUVsZW1lbnRzLmdldCgpLCBudWxscHRyKTsK
K30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZQogCiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50KFBsYXRmb3JtVUlFbGVtZW50IGVsZW1lbnQpCkBAIC04MzYs
MTQgKzg2NCwzNiBAQCBKU1ZhbHVlUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnVpRWxlbWVu
dEFycmF5QXR0cmlidXRlVmFsdWUoSlNTdHJpbmdSZWYgYXR0cgogCiBKU1ZhbHVlUmVmIEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OnJvd0hlYWRlcnMoKSBjb25zdAogewotICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQKKyNpZiBBVEtfQ0hFQ0tfVkVSU0lPTigyLDExLDkwKQorICAgIGlmICghQVRLX0lT
X1RBQkxFX0NFTEwobV9lbGVtZW50LmdldCgpKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICBHUmVmUHRyPEdQdHJBcnJheT4gYXJyYXkgPSBhZG9wdEdSZWYoYXRrX3RhYmxlX2NlbGxf
Z2V0X3Jvd19oZWFkZXJfY2VsbHMoQVRLX1RBQkxFX0NFTEwobV9lbGVtZW50LmdldCgpKSkpOwor
ICAgIGlmICghYXJyYXkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgVmVjdG9yPFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Pj4gcm93cyA9IGNvbnZlcnRHUHRyQXJyYXlUb1Zl
Y3RvcihhcnJheS5nZXQoKSk7CisgICAgcmV0dXJuIGNvbnZlcnRUb0pTT2JqZWN0QXJyYXkocm93
cyk7CisjZWxzZQogICAgIHJldHVybiBudWxscHRyOworI2VuZGlmCiB9CiAKIEpTVmFsdWVSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Y29sdW1uSGVhZGVycygpIGNvbnN0CiB7Ci0gICAgLy8g
RklYTUU6IGltcGxlbWVudAorI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsMTEsOTApCisgICAgaWYg
KCFBVEtfSVNfVEFCTEVfQ0VMTChtX2VsZW1lbnQuZ2V0KCkpKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIEdSZWZQdHI8R1B0ckFycmF5PiBhcnJheSA9IGFkb3B0R1JlZihhdGtfdGFi
bGVfY2VsbF9nZXRfY29sdW1uX2hlYWRlcl9jZWxscyhBVEtfVEFCTEVfQ0VMTChtX2VsZW1lbnQu
Z2V0KCkpKSk7CisgICAgaWYgKCFhcnJheSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICBWZWN0b3I8UmVmUHRyPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+PiBjb2x1bW5zID0gY29udmVy
dEdQdHJBcnJheVRvVmVjdG9yKGFycmF5LmdldCgpKTsKKyAgICByZXR1cm4gY29udmVydFRvSlNP
YmplY3RBcnJheShjb2x1bW5zKTsKKyNlbHNlCiAgICAgcmV0dXJuIG51bGxwdHI7CisjZW5kaWYK
IH0KIAogUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiBBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50Ojp1aUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShKU1N0cmluZ1JlZiBhdHRyaWJ1dGUpIGNv
bnN0CmRpZmYgLS1naXQgYS9Ub29scy9lZmwvamhidWlsZC5tb2R1bGVzIGIvVG9vbHMvZWZsL2po
YnVpbGQubW9kdWxlcwppbmRleCA3Yzc3ZmNlLi43YWY5MTJhIDEwMDY0NAotLS0gYS9Ub29scy9l
ZmwvamhidWlsZC5tb2R1bGVzCisrKyBiL1Rvb2xzL2VmbC9qaGJ1aWxkLm1vZHVsZXMKQEAgLTM0
MSw5ICszNDEsOSBAQAogICA8YXV0b3Rvb2xzIGlkPSJhdGsiCiAgICAgICAgICAgICAgYXV0b2dl
bi1zaD0iY29uZmlndXJlIgogICAgICAgICAgICAgIGF1dG9nZW5hcmdzPSItLWRpc2FibGUtaW50
cm9zcGVjdGlvbiI+Ci0gICAgPGJyYW5jaCBtb2R1bGU9InB1Yi9HTk9NRS9zb3VyY2VzL2F0ay8y
LjExL2F0ay0yLjExLjQudGFyLnh6IiB2ZXJzaW9uPSIyLjExLjQiCisgICAgPGJyYW5jaCBtb2R1
bGU9InB1Yi9HTk9NRS9zb3VyY2VzL2F0ay8yLjExL2F0ay0yLjExLjkwLnRhci54eiIgdmVyc2lv
bj0iMi4xMS45MCIKICAgICAgICAgICAgIHJlcG89ImZ0cC5nbm9tZS5vcmciCi0gICAgICAgICAg
ICBoYXNoPSJzaGEyNTY6YjYwOWZhN2EzZjIxMTQ3ZDQwZjBmZTBmNDcyNzhhNjJjMjYzZGUwZWFk
YmJiZTk4MzlmMmI2M2EwY2IwN2Q0MSIvPgorICAgICAgICAgICAgaGFzaD0ic2hhMjU2OjQ0ZTMz
YWJhZDY0NDE5YjkyZmQyYWU0NWZiMGQzN2I5ZmFhYjZiNTM2NDBhMWE1NGUwNjhhZjZmY2NhZDQ0
MTciLz4KICAgPC9hdXRvdG9vbHM+CiAKIDwvbW9kdWxlc2V0PgpkaWZmIC0tZ2l0IGEvVG9vbHMv
Z3RrL2poYnVpbGQubW9kdWxlcyBiL1Rvb2xzL2d0ay9qaGJ1aWxkLm1vZHVsZXMKaW5kZXggNmRk
MTRmMC4uNWZkMDQ4NyAxMDA2NDQKLS0tIGEvVG9vbHMvZ3RrL2poYnVpbGQubW9kdWxlcworKysg
Yi9Ub29scy9ndGsvamhidWlsZC5tb2R1bGVzCkBAIC0yMzMsOSArMjMzLDkgQEAKICAgPGF1dG90
b29scyBpZD0iYXRrIgogICAgICAgICAgICAgIGF1dG9nZW4tc2g9ImNvbmZpZ3VyZSIKICAgICAg
ICAgICAgICBhdXRvZ2VuYXJncz0iLS1kaXNhYmxlLWludHJvc3BlY3Rpb24iPgotICAgIDxicmFu
Y2ggbW9kdWxlPSJwdWIvR05PTUUvc291cmNlcy9hdGsvMi4xMS9hdGstMi4xMS40LnRhci54eiIg
dmVyc2lvbj0iMi4xMS40IgorICAgIDxicmFuY2ggbW9kdWxlPSJwdWIvR05PTUUvc291cmNlcy9h
dGsvMi4xMS9hdGstMi4xMS45MC50YXIueHoiIHZlcnNpb249IjIuMTEuOTAiCiAgICAgICAgICAg
ICByZXBvPSJmdHAuZ25vbWUub3JnIgotICAgICAgICAgICAgaGFzaD0ic2hhMjU2OmI2MDlmYTdh
M2YyMTE0N2Q0MGYwZmUwZjQ3Mjc4YTYyYzI2M2RlMGVhZGJiYmU5ODM5ZjJiNjNhMGNiMDdkNDEi
Lz4KKyAgICAgICAgICAgIGhhc2g9InNoYTI1Njo0NGUzM2FiYWQ2NDQxOWI5MmZkMmFlNDVmYjBk
MzdiOWZhYWI2YjUzNjQwYTFhNTRlMDY4YWY2ZmNjYWQ0NDE3Ii8+CiAgIDwvYXV0b3Rvb2xzPgog
CiAgIDxhdXRvdG9vbHMgaWQ9ImF0LXNwaTItY29yZSIgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>