<?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>190235</bug_id>
          
          <creation_ts>2018-10-02 22:55:04 -0700</creation_ts>
          <short_desc>IntersectionObserver doesn&apos;t keep target&apos;s JS wrapper alive</short_desc>
          <delta_ts>2019-05-08 10:29:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>159475</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ali Juma">ajuma</assigned_to>
          <cc>ajuma</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>graouts</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1465921</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-10-02 22:55:04 -0700</bug_when>
    <thetext>When an element is enqueued as an IntersectionObserverEntry and subsequently removed from the document,
there is no way for JSC GC to know the JS wrapper of the element needs to be kept alive.

As such, the JS wrapper of an element can be erroneously collected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465924</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-10-02 23:02:32 -0700</bug_when>
    <thetext>We need to deploy GCReachableRef for every target kept alive in IntersectionObserver as I&apos;ve done in https://trac.webkit.org/changeset/236781, and need to add the root(m_target) as an opaque root in JSIntersectionObserverEntry::visitAdditionalChildren. (Add JSCustomMarkFunction to the IDL file).

IntersectionObserver itself has a bug that it doesn&apos;t keep its callback alive while there are pending records. We need to override its visitAdditionalChildren and isReachableFromOpaqueRoots as done in JSMutationObserverCustom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465926</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-02 23:03:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/44965676&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465927</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-10-02 23:04:39 -0700</bug_when>
    <thetext>Note that this bug will have a dire consequence of turning a custom element into a HTMLUnknownElement so we MUST fix this bug before we can turn the feature on by default.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466407</commentid>
    <comment_count>4</comment_count>
      <attachid>351601</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-10-04 10:53:04 -0700</bug_when>
    <thetext>Created attachment 351601
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466410</commentid>
    <comment_count>5</comment_count>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-10-04 10:56:57 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #1)
&gt;
&gt; IntersectionObserver itself has a bug that it doesn&apos;t keep its callback
&gt; alive while there are pending records. We need to override its
&gt; visitAdditionalChildren and isReachableFromOpaqueRoots as done in
&gt; JSMutationObserverCustom.

MutationObserver uses a WeakCallback (see MutationCallback.idl), but IntersectionObserver does not. So the callback won&apos;t get GC&apos;d, as long as we don&apos;t clear IntersectionObserver::m_callback. There was, however, a bug in IntersectionObserver::hasPendingActivity, since this didn&apos;t account for pending records (so the IntersectionObserver itself could have gotten GC&apos;d while it still had pending records). That bug is fixed in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466433</commentid>
    <comment_count>6</comment_count>
      <attachid>351601</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-10-04 12:00:40 -0700</bug_when>
    <thetext>Comment on attachment 351601
Patch

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

&gt; Source/WebCore/bindings/js/JSIntersectionObserverEntryCustom.cpp:33
&gt; +    visitor.addOpaqueRoot(wrapped().target());

This looks wrong. The opaque root needs to be the root of the data structure. &quot;root(wrapped().target())&quot; will probably do what you need.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466450</commentid>
    <comment_count>7</comment_count>
      <attachid>351612</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-10-04 12:20:06 -0700</bug_when>
    <thetext>Created attachment 351612
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466451</commentid>
    <comment_count>8</comment_count>
      <attachid>351601</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-10-04 12:20:48 -0700</bug_when>
    <thetext>Comment on attachment 351601
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSIntersectionObserverEntryCustom.cpp:33
&gt;&gt; +    visitor.addOpaqueRoot(wrapped().target());
&gt; 
&gt; This looks wrong. The opaque root needs to be the root of the data structure. &quot;root(wrapped().target())&quot; will probably do what you need.

Ah, thanks! Fixed now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466618</commentid>
    <comment_count>9</comment_count>
      <attachid>351612</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-10-04 22:36:33 -0700</bug_when>
    <thetext>Comment on attachment 351612
Patch

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

&gt; Source/WebCore/ChangeLog:19
&gt; +        No new tests, since the races fixed here are difficult to test reliably. See r236801 and r236825 for similar
&gt; +        fixes to MutationObserver that also had to land without tests.

See my tests in https://trac.webkit.org/changeset/236850/webkit.
We should be able to add similar tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1471352</commentid>
    <comment_count>10</comment_count>
      <attachid>352910</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-10-22 14:38:45 -0700</bug_when>
    <thetext>Created attachment 352910
Patch

Added tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475176</commentid>
    <comment_count>11</comment_count>
      <attachid>353889</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-11-05 11:08:07 -0800</bug_when>
    <thetext>Created attachment 353889
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475199</commentid>
    <comment_count>12</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-11-05 11:32:33 -0800</bug_when>
    <thetext>Chris, could you review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475410</commentid>
    <comment_count>13</comment_count>
      <attachid>353889</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-11-05 20:42:13 -0800</bug_when>
    <thetext>Comment on attachment 353889
Patch

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

r=me with one additional test.

&gt; Source/WebCore/page/IntersectionObserverEntry.h:62
&gt;      RefPtr&lt;DOMRectReadOnly&gt; rootBounds() const { return m_rootBounds; }
&gt;      RefPtr&lt;DOMRectReadOnly&gt; boundingClientRect() const { return m_boundingClientRect; }
&gt;      RefPtr&lt;DOMRectReadOnly&gt; intersectionRect() const { return m_intersectionRect; }

DOMRectReadOnly have the same issue.
We need to visit these objects&apos; wrappers as well.
Otherwise, properties added on DOMRectReadOnly would be collected.
But that could be addressed in a separate patch.

&gt; LayoutTests/intersection-observer/root-element-deleted.html:23
&gt;          requestAnimationFrame(t.step_func_done(function() {
&gt; +            observer.takeRecords();

We should add another test which doesn&apos;t rely on takeRecords to make sure deliver() path results in the clearing of GCReachableRef as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475602</commentid>
    <comment_count>14</comment_count>
      <attachid>353982</attachid>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-11-06 11:52:29 -0800</bug_when>
    <thetext>Created attachment 353982
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475606</commentid>
    <comment_count>15</comment_count>
    <who name="Ali Juma">ajuma</who>
    <bug_when>2018-11-06 11:54:03 -0800</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #13)
&gt; Comment on attachment 353889 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=353889&amp;action=review
&gt; 
&gt; r=me with one additional test.
&gt; 
&gt; &gt; Source/WebCore/page/IntersectionObserverEntry.h:62
&gt; &gt;      RefPtr&lt;DOMRectReadOnly&gt; rootBounds() const { return m_rootBounds; }
&gt; &gt;      RefPtr&lt;DOMRectReadOnly&gt; boundingClientRect() const { return m_boundingClientRect; }
&gt; &gt;      RefPtr&lt;DOMRectReadOnly&gt; intersectionRect() const { return m_intersectionRect; }
&gt; 
&gt; DOMRectReadOnly have the same issue.
&gt; We need to visit these objects&apos; wrappers as well.
&gt; Otherwise, properties added on DOMRectReadOnly would be collected.
&gt; But that could be addressed in a separate patch.

Thanks for pointing this out, I&apos;ll fix this in a follow-up patch.


&gt; &gt; LayoutTests/intersection-observer/root-element-deleted.html:23
&gt; &gt;          requestAnimationFrame(t.step_func_done(function() {
&gt; &gt; +            observer.takeRecords();
&gt; 
&gt; We should add another test which doesn&apos;t rely on takeRecords to make sure
&gt; deliver() path results in the clearing of GCReachableRef as well.

Added a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475608</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-11-06 11:59:24 -0800</bug_when>
    <thetext>(In reply to Ali Juma from comment #15)
&gt; (In reply to Ryosuke Niwa from comment #13)
&gt; &gt; Comment on attachment 353889 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=353889&amp;action=review
&gt; &gt; 
&gt; &gt; r=me with one additional test.
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/page/IntersectionObserverEntry.h:62
&gt; &gt; &gt;      RefPtr&lt;DOMRectReadOnly&gt; rootBounds() const { return m_rootBounds; }
&gt; &gt; &gt;      RefPtr&lt;DOMRectReadOnly&gt; boundingClientRect() const { return m_boundingClientRect; }
&gt; &gt; &gt;      RefPtr&lt;DOMRectReadOnly&gt; intersectionRect() const { return m_intersectionRect; }
&gt; &gt; 
&gt; &gt; DOMRectReadOnly have the same issue.
&gt; &gt; We need to visit these objects&apos; wrappers as well.
&gt; &gt; Otherwise, properties added on DOMRectReadOnly would be collected.
&gt; &gt; But that could be addressed in a separate patch.
&gt; 
&gt; Thanks for pointing this out, I&apos;ll fix this in a follow-up patch.

Be sure to make these methods return a pointer instead when you do that since visitAdditionalChildren can be called from non-main threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475635</commentid>
    <comment_count>17</comment_count>
      <attachid>353982</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-06 12:52:59 -0800</bug_when>
    <thetext>Comment on attachment 353982
Patch for landing

Clearing flags on attachment: 353982

Committed r237880: &lt;https://trac.webkit.org/changeset/237880&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1475636</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-06 12:53:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351601</attachid>
            <date>2018-10-04 10:53:04 -0700</date>
            <delta_ts>2018-10-04 12:20:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190235-20181004135303.patch</filename>
            <type>text/plain</type>
            <size>15777</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2ODI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIzN2Y1NWIyNGVkZGQ4
ZjQ0NjMyZmZjNTgzOWM2MDI2NTAxYzEzZi4uNWE1YTc3NDA3OGE1NzgxNDQyYzhhZjYyNGMwMWIw
MzBkMzlmNmE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTEwLTA0ICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZl
ciBkb2Vzbid0IGtlZXAgdGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV0YWluIEpTIHdyYXBwZXJzIG9mIHRh
cmdldHMgaW4gcXVldWVkIGVudHJpZXMgdXNpbmcgYSB2ZWN0b3Igb2YgR0NSZWFjaGFibGVSZWYg
b3duZWQgYnkKKyAgICAgICAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsIHdoaWNoIGdldHMgY2xlYXJl
ZCBhZnRlciB0aGUgZW50cmllcyBoYXZlIGJlZW4gZGVsaXZlcmVkLgorCisgICAgICAgIE1ha2Ug
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnRha2VSZWNvcmRzIHJldHVybiBhIHN0cnVjdCB3aGljaCBo
YXMgYm90aCB0aGUgdmVjdG9yIG9mIEdDUmVhY2hhYmxlUmVmcworICAgICAgICBmb3IgdGFyZ2V0
cyBhbmQgdGhlIHZlY3RvciBvZiBpbnRlcnNlY3Rpb24gb2JzZXJ2ZXIgZW50cmllcywgc28gdGhh
dCB0aGUgR0NSZWFjaGFibGVSZWZzIHN1cnZpdmUKKyAgICAgICAgdW50aWwgdGhlIGNyZWF0aW9u
IG9mIEpTIHdyYXBwZXJzIGZvciB0aGUgZW50cmllcy4KKworICAgICAgICBNb2RpZnkgSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSB0byBrZWVwIHRoZSBvYnNlcnZlciBh
bGl2ZSB3aGlsZSBpdCBoYXMKKyAgICAgICAgZW50cmllcyB0byBkZWxpdmVyLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgc2luY2UgdGhlIHJhY2VzIGZpeGVkIGhlcmUgYXJlIGRpZmZpY3VsdCB0
byB0ZXN0IHJlbGlhYmx5LiBTZWUgcjIzNjgwMSBhbmQgcjIzNjgyNSBmb3Igc2ltaWxhcgorICAg
ICAgICBmaXhlcyB0byBNdXRhdGlvbk9ic2VydmVyIHRoYXQgYWxzbyBoYWQgdG8gbGFuZCB3aXRo
b3V0IHRlc3RzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVy
c2VjdGlvbk9ic2VydmVyRW50cnk6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKTogS2VlcCB0aGUg
dGFyZ2V0IGVsZW1lbnQncyB3cmFwcGVyIGFsaXZlIHdoaWxlIHRoZQorICAgICAgICBJbnRlcnNl
Y3Rpb25PYnNlcnZlckVudHJ5J3Mgd3JhcHBlciBpcyBhbGl2ZS4KKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1BlcmZvcm1hbmNlT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNQZXJmb3JtYW5jZU9ic2VydmVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKTog
Rml4IGJ1aWxkIGVycm9ycyBjYXVzZWQgYnkgdGhpcyBmaWxlIG1vdmluZyB0bworICAgICAgICB0
byBhIGRpZmZlcmVudCB0YXJnZXQgaW4gdGhlIHVuaWZpZWQgYnVpbGQuCisgICAgICAgICogcGFn
ZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcnNlY3Rp
b25PYnNlcnZlcjo6dGFrZVJlY29yZHMpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gaW5jbHVkZSBH
Q1JlYWNoYWJsZVJlZnMgZm9yIGVhY2ggcmVjb3JkJ3MgdGFyZ2V0LCBzbyB0aGF0CisgICAgICAg
IGVhY2ggdGFyZ2V0IGNhbiBiZSBrZXB0IHVudGlsIGEgSlMgd3JhcHBlciBpcyBjb25zdHJ1Y3Rl
ZCBmb3IgaXRzIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuCisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcnNlY3Rpb25PYnNlcnZlcjo6YXBwZW5kUXVldWVkRW50cnkpOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5vdGlmeSk6IEVyYXNlIEdDUmVhY2hhYmxlUmVmcyBm
b3IgdGFyZ2V0cyBhZnRlciBkZWxpdmVyaW5nIHRoZSBjb3JyZXNwb25kaW5nIHJlY29yZHMuCisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcnNlY3Rpb25PYnNlcnZlcjo6aGFzUGVuZGluZ0FjdGl2aXR5
IGNvbnN0KTogS2VlcCB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgYWxpdmUgdW50aWwgcXVldWVk
IGVudHJpZXMgYXJlIGRlbGl2ZXJlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludGVyc2VjdGlvbk9i
c2VydmVyOjpzdG9wKToKKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmg6Cisg
ICAgICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5pZGw6CisgICAgICAgICogcGFnZS9J
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcnNlY3Rp
b25PYnNlcnZlckVudHJ5Ojp0YXJnZXQgY29uc3QpOiBNYWtlIHRoaXMgcmV0dXJuIGEgcmF3IHBv
aW50ZXIgaW5zdGVhZCBvZiBhIFJlZlB0ciBzbyB0aGF0IGl0CisgICAgICAgIGNhbiBiZSBjYWxs
ZWQgaW4gSlNJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
biwgd2hpY2ggcnVucyBvbiB0aGUgR0MgdGhyZWFkIChpdCdzIGlsbGVnYWwgdG8gcmVmIGEgTm9k
ZQorICAgICAgICBvbiBhIG5vbi1tYWluIHRocmVhZCkuCisgICAgICAgICogcGFnZS9JbnRlcnNl
Y3Rpb25PYnNlcnZlckVudHJ5LmlkbDoKKwogMjAxOC0xMC0wMyAgSnVzdGluIE1pY2hhdWQgIDxq
dXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVnaXN0ZXJlZCBjdXN0b20gcHJv
cGVydGllcyBzaG91bGQgYWxsb3cgaW5oZXJpdGFuY2UgdG8gYmUgY29udHJvbGxlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAppbmRleCA2ZjY3ZTU3Nzg1ZTY4ZjhkZGYwOGNjODQ4NmJlYWY2OTNhNjc1NmJhLi5lMWQ0
NmI0ZmJlZDY5NjA0NGQ2YTYzODMyMGI5NTZhZDcxZjljYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
NDE0LDYgKzQxNCw3IEBAIGJpbmRpbmdzL2pzL0pTSURCSW5kZXhDdXN0b20uY3BwCiBiaW5kaW5n
cy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNJREJUcmFuc2Fj
dGlvbkN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAorYmluZGlu
Z3MvanMvSlNJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Q3VzdG9tLmNwcAogYmluZGluZ3MvanMv
SlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
CiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDcyNDQxOTVi
ODVhOGRlYjhkNTU0ZjM5MWI5OWRjNGYwYmY0NTM0MS4uZmRiMTNlNzU3MTFiYjNhZjVkYzcxMmEw
YmNlMTU5NzAyNzI2MzA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTMwOSw2ICs5MzA5LDcgQEAKIAkJNzdBMTdBQTMxMkYy
OEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3N0FBRDY4MzFFQ0ZCNjYyMDBCRkEyRDEgLyogQ3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QUFENjg1MUVD
RkJEMzkwMEJGQTJEMSAvKiBDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzdDMTNGMDQyMTY1NjU4QTAwMkQ5QzVGIC8qIEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJF
bnRyeUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludGVyc2VjdGlvbk9ic2VydmVy
RW50cnlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0NBQUFFRjFG
MkZDMzUwMDBDQjVDOEQgLyogVmlzdWFsVmlld3BvcnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFZpc3VhbFZpZXdwb3J0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzdE
NTBGRkExRUQ0RUM3ODAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzdENTBGRkIxRUQ0RjE2QzAwREE0Qzg3IC8qIENyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE5OTMwLDYgKzE5OTMxLDcgQEAKIAkJCQk1MTFFRjJDRTE3RjBGREYxMDBFNEZBMTYgLyogSlNJ
REJPYmplY3RTdG9yZUN1c3RvbS5jcHAgKi8sCiAJCQkJNTFFMjY5MzIxREQzQkM0MzAwNkI2QTU4
IC8qIEpTSURCVHJhbnNhY3Rpb25DdXN0b20uY3BwICovLAogCQkJCUE3RDAzMThEMEU5MzU0MDMw
MEUyNEFDRCAvKiBKU0ltYWdlRGF0YUN1c3RvbS5jcHAgKi8sCisJCQkJNzdDMTNGMDQyMTY1NjU4
QTAwMkQ5QzVGIC8qIEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAgKi8sCiAJ
CQkJQUQ3MjZGRTcxNkQ5RjIwNDAwM0E0RTZEIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggKi8sCiAJ
CQkJNDE1Q0RBRjYxRTZDRTBEMzAwNEYxMUVFIC8qIEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5j
cHAgKi8sCiAJCQkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxD
dXN0b20uY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
N2Q0M2NkYWM4ZmIyOWUyMDFhMTIxODc0NjE4OTE0ODZhNmQ3Yzc0ZQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRy
eUN1c3RvbS5jcHAKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBH
b29nbGUgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordm9pZCBKU0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnk6OnZpc2l0
QWRkaXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlz
aXRvci5hZGRPcGFxdWVSb290KHdyYXBwZWQoKS50YXJnZXQoKSk7Cit9CisKK30KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VPYnNlcnZlckN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BlcmZvcm1hbmNlT2JzZXJ2ZXJD
dXN0b20uY3BwCmluZGV4IDZlZmEzZGNkMmU3ZWJkMzVhYzFiODYyN2JjMmJkYjgwODBhMWNhMzUu
LjVjMWI2ZGE4ZGE5MWMzYWEwZTgxNDQwNTUyZmI0MTJiODQzMmQ0ODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VPYnNlcnZlckN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQZXJmb3JtYW5jZU9ic2VydmVyQ3Vz
dG9tLmNwcApAQCAtMzUsMTIgKzM1LDEyIEBAIHZvaWQgSlNQZXJmb3JtYW5jZU9ic2VydmVyOjp2
aXNpdEFkZGl0aW9uYWxDaGlsZHJlbihKU0M6OlNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHdy
YXBwZWQoKS5jYWxsYmFjaygpLnZpc2l0SlNGdW5jdGlvbih2aXNpdG9yKTsKIH0KIAotYm9vbCBK
U1BlcmZvcm1hbmNlT2JzZXJ2ZXJPd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlND
OjpIYW5kbGU8SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYsIGNvbnN0
IGNoYXIqKiByZWFzb24pCitib29sIEpTUGVyZm9ybWFuY2VPYnNlcnZlck93bmVyOjppc1JlYWNo
YWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9p
ZCosIEpTQzo6U2xvdFZpc2l0b3ImLCBjb25zdCBjaGFyKiogcmVhc29uKQogewogICAgIGlmIChV
TkxJS0VMWShyZWFzb24pKQogICAgICAgICAqcmVhc29uID0gIlJlZ2lzdGVyZWQgUGVyZm9ybWFu
Y2VPYnNlcnZlciBjYWxsYmFjayI7CiAKLSAgICByZXR1cm4ganNDYXN0PEpTUGVyZm9ybWFuY2VP
YnNlcnZlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKS0+d3JhcHBlZCgpLmlzUmVnaXN0ZXJl
ZCgpOworICAgIHJldHVybiBKU0M6OmpzQ2FzdDxKU1BlcmZvcm1hbmNlT2JzZXJ2ZXIqPihoYW5k
bGUuc2xvdCgpLT5hc0NlbGwoKSktPndyYXBwZWQoKS5pc1JlZ2lzdGVyZWQoKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAppbmRleCA3OTdl
YTQ3YmUxNDVjMmMzZTk3NzExNjdhZmE3Y2VjYWUyNDU4ZjBiLi4wMWU3NmU4ZDYyZWY3NjRjNGFj
Mzk3N2VkYjQ5YTY4NTY4Njg0NzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0lu
dGVyc2VjdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2Vj
dGlvbk9ic2VydmVyLmNwcApAQCAtMTgzLDkgKzE4Myw5IEBAIHZvaWQgSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXI6OmRpc2Nvbm5lY3QoKQogICAgICAgICBkb2N1bWVudC0+cmVtb3ZlSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIoKnRoaXMpOwogfQogCi1WZWN0b3I8UmVmPEludGVyc2VjdGlvbk9ic2VydmVyRW50
cnk+PiBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6dGFrZVJlY29yZHMoKQorYXV0byBJbnRlcnNlY3Rp
b25PYnNlcnZlcjo6dGFrZVJlY29yZHMoKSAtPiBUYWtlblJlY29yZHMKIHsKLSAgICByZXR1cm4g
V1RGTW92ZShtX3F1ZXVlZEVudHJpZXMpOworICAgIHJldHVybiB7IFdURk1vdmUobV9xdWV1ZWRF
bnRyaWVzKSwgV1RGTW92ZShtX3BlbmRpbmdUYXJnZXRzKSB9OwogfQogCiB2b2lkIEludGVyc2Vj
dGlvbk9ic2VydmVyOjp0YXJnZXREZXN0cm95ZWQoRWxlbWVudCYgdGFyZ2V0KQpAQCAtMjQ2LDIw
ICsyNDYsMjUgQEAgYm9vbCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6Y3JlYXRlVGltZXN0YW1wKERP
TUhpZ2hSZXNUaW1lU3RhbXAmIHRpbWVzdGFtcCkgY29uc3QKIAogdm9pZCBJbnRlcnNlY3Rpb25P
YnNlcnZlcjo6YXBwZW5kUXVldWVkRW50cnkoUmVmPEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+
JiYgZW50cnkpCiB7CisgICAgQVNTRVJUKGVudHJ5LT50YXJnZXQoKSk7CisgICAgbV9wZW5kaW5n
VGFyZ2V0cy5hcHBlbmQoKmVudHJ5LT50YXJnZXQoKSk7CiAgICAgbV9xdWV1ZWRFbnRyaWVzLmFw
cGVuZChXVEZNb3ZlKGVudHJ5KSk7CiB9CiAKIHZvaWQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5v
dGlmeSgpCiB7Ci0gICAgaWYgKG1fcXVldWVkRW50cmllcy5pc0VtcHR5KCkgfHwgIW1fY2FsbGJh
Y2sgfHwgIW1fY2FsbGJhY2stPmNhbkludm9rZUNhbGxiYWNrKCkpCisgICAgaWYgKG1fcXVldWVk
RW50cmllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fcGVuZGluZ1RhcmdldHMuaXNF
bXB0eSgpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIG1fY2FsbGJhY2stPmhhbmRs
ZUV2ZW50KHRha2VSZWNvcmRzKCksICp0aGlzKTsKKyAgICBhdXRvIHRha2VuUmVjb3JkcyA9IHRh
a2VSZWNvcmRzKCk7CisgICAgbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQoV1RGTW92ZSh0YWtlblJl
Y29yZHMucmVjb3JkcyksICp0aGlzKTsKIH0KIAogYm9vbCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6
aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFzT2JzZXJ2YXRpb25U
YXJnZXRzKCkgJiYgdHJhY2tpbmdEb2N1bWVudCgpOworICAgIHJldHVybiAoaGFzT2JzZXJ2YXRp
b25UYXJnZXRzKCkgJiYgdHJhY2tpbmdEb2N1bWVudCgpKSB8fCAhbV9xdWV1ZWRFbnRyaWVzLmlz
RW1wdHkoKTsKIH0KIAogY29uc3QgY2hhciogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmFjdGl2ZURP
TU9iamVjdE5hbWUoKSBjb25zdApAQCAtMjc2LDYgKzI4MSw4IEBAIHZvaWQgSW50ZXJzZWN0aW9u
T2JzZXJ2ZXI6OnN0b3AoKQogewogICAgIGRpc2Nvbm5lY3QoKTsKICAgICBtX2NhbGxiYWNrID0g
bnVsbHB0cjsKKyAgICBtX3F1ZXVlZEVudHJpZXMuY2xlYXIoKTsKKyAgICBtX3BlbmRpbmdUYXJn
ZXRzLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAppbmRleCAwOTJjNGUxZjUwMGI0OTEyNGM2OTI0
ZWU0OTU4ZTExNmRkY2ZkYzYxLi5mYWYzMGZkYTBiY2NlY2IxN2FiMGE1NDIzYmYxNzkwY2U5NzRj
NjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oCkBAIC0y
OCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZFUikKIAogI2luY2x1
ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkdDUmVhY2hhYmxlUmVmLmgiCiAjaW5j
bHVkZSAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oIgogI2luY2x1ZGUgIkludGVyc2Vj
dGlvbk9ic2VydmVyRW50cnkuaCIKICNpbmNsdWRlICJMZW5ndGhCb3guaCIKQEAgLTgwLDcgKzgx
LDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHVub2JzZXJ2ZShFbGVtZW50Jik7CiAgICAgdm9pZCBk
aXNjb25uZWN0KCk7CiAKLSAgICBWZWN0b3I8UmVmPEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+
PiB0YWtlUmVjb3JkcygpOworICAgIHN0cnVjdCBUYWtlblJlY29yZHMgeworICAgICAgICBWZWN0
b3I8UmVmPEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+PiByZWNvcmRzOworICAgICAgICBWZWN0
b3I8R0NSZWFjaGFibGVSZWY8RWxlbWVudD4+IHBlbmRpbmdUYXJnZXRzOworICAgIH07CisgICAg
VGFrZW5SZWNvcmRzIHRha2VSZWNvcmRzKCk7CiAKICAgICB2b2lkIHRhcmdldERlc3Ryb3llZChF
bGVtZW50Jik7CiAgICAgYm9vbCBoYXNPYnNlcnZhdGlvblRhcmdldHMoKSBjb25zdCB7IHJldHVy
biBtX29ic2VydmF0aW9uVGFyZ2V0cy5zaXplKCk7IH0KQEAgLTEwOSw2ICsxMTQsNyBAQCBwcml2
YXRlOgogICAgIFZlY3Rvcjxkb3VibGU+IG1fdGhyZXNob2xkczsKICAgICBSZWZQdHI8SW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjaz4gbV9jYWxsYmFjazsKICAgICBWZWN0b3I8RWxlbWVudCo+
IG1fb2JzZXJ2YXRpb25UYXJnZXRzOworICAgIFZlY3RvcjxHQ1JlYWNoYWJsZVJlZjxFbGVtZW50
Pj4gbV9wZW5kaW5nVGFyZ2V0czsKICAgICBWZWN0b3I8UmVmPEludGVyc2VjdGlvbk9ic2VydmVy
RW50cnk+PiBtX3F1ZXVlZEVudHJpZXM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50
ZXJzZWN0aW9uT2JzZXJ2ZXIuaWRsCmluZGV4IGFlODhhNmUyMzJmYmE5YmE3ZmJiODVlZTdhYTY5
Y2UwZjBmNDQxYWEuLjJmM2ExNDNhOTJiYzUxOTVlNDZmOGQyNDVlMjczMTJhMTRkZTRhNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaWRsCkBAIC00MCw3
ICs0MCw3IEBACiAgICAgdm9pZCBvYnNlcnZlKEVsZW1lbnQgdGFyZ2V0KTsKICAgICB2b2lkIHVu
b2JzZXJ2ZShFbGVtZW50IHRhcmdldCk7CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7Ci0gICAgc2Vx
dWVuY2U8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4gdGFrZVJlY29yZHMoKTsKKyAgICBbUmVz
dWx0RmllbGQ9cmVjb3Jkc10gc2VxdWVuY2U8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4gdGFr
ZVJlY29yZHMoKTsKIH07CiAKIFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50
ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rp
b25PYnNlcnZlckVudHJ5LmgKaW5kZXggN2M0YzBiNmVmNDBiNGEyMmQyMmI5MzgxNjEwZGUzNzZk
MWM1NmZjOS4uYzNlZmYxODc0MjJkODFiMDUxMmJjNTUwODQ0YWJkNDRlNDI4M2ZiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmgKQEAgLTYw
LDcgKzYwLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxET01SZWN0UmVhZE9ubHk+IHJvb3RCb3Vu
ZHMoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RCb3VuZHM7IH0KICAgICBSZWZQdHI8RE9NUmVjdFJl
YWRPbmx5PiBib3VuZGluZ0NsaWVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2JvdW5kaW5nQ2xp
ZW50UmVjdDsgfQogICAgIFJlZlB0cjxET01SZWN0UmVhZE9ubHk+IGludGVyc2VjdGlvblJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX2ludGVyc2VjdGlvblJlY3Q7IH0KLSAgICBSZWZQdHI8RWxlbWVu
dD4gdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KKyAgICBFbGVtZW50KiB0YXJn
ZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsgfQogCiAgICAgYm9vbCBpc0ludGVy
c2VjdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnRlcnNlY3Rpbmc7IH0KICAgICBkb3VibGUg
aW50ZXJzZWN0aW9uUmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2ludGVyc2VjdGlvblJhdGlvOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50
cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Lmlk
bAppbmRleCA0NzYxMmQwYTc5ZDA5NmNhMzNiZTUzNGZjY2Q0OGRhNGJmZDNiNzNhLi4xODdkZjVj
ZGU3Yzg3OWIxZDdkZGJjY2MwM2MzY2FhNGFkNjk3MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5pZGwKQEAgLTMxLDcgKzMxLDggQEAg
dHlwZWRlZiBkb3VibGUgRE9NSGlnaFJlc1RpbWVTdGFtcDsKICAgICBDb25kaXRpb25hbD1JTlRF
UlNFQ1RJT05fT0JTRVJWRVIsCiAgICAgQ29uc3RydWN0b3IoSW50ZXJzZWN0aW9uT2JzZXJ2ZXJF
bnRyeUluaXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUluaXQpLAogICAgIEltcGxlbWVudGF0
aW9uTGFja3NWVGFibGUsCi0gICAgRW5hYmxlZEF0UnVudGltZT1JbnRlcnNlY3Rpb25PYnNlcnZl
cgorICAgIEVuYWJsZWRBdFJ1bnRpbWU9SW50ZXJzZWN0aW9uT2JzZXJ2ZXIsCisgICAgSlNDdXN0
b21NYXJrRnVuY3Rpb24sCiBdIGludGVyZmFjZSBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IHsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NSGlnaFJlc1RpbWVTdGFtcCB0aW1lOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01SZWN0UmVhZE9ubHk/IHJvb3RCb3VuZHM7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGI0
MDhkMWE4ZWM5NTgxZWQwNTM1ZDZjNTMxYzFkODFhMGU0NTZjYi4uMGI4YmJmZGE0YjljZGUxNTU1
Y2YwMDYxYzAzNWNmZjRlNjBiMzZjMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE4LTEwLTA0
ICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnRlcnNlY3Rpb25P
YnNlcnZlciBkb2Vzbid0IGtlZXAgdGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM1CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRlc3QgdGhhdCBk
ZXBlbmRzIG9uIGEgdGFyZ2V0IGdldHRpbmcgR0MnZCB0byBjYWxsIHRha2VSZWNvcmRzKCkgc2lu
Y2UKKyAgICAgICAgdGFyZ2V0cyB3aXRoIHBlbmRpbmcgZW50cmllcyBhcmUgbm8gbG9nbmVyIEdD
J2QuCisKKyAgICAgICAgKiBpbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvcm9vdC1lbGVtZW50LWRlbGV0
ZWQuaHRtbDoKKwogMjAxOC0xMC0wMyAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVnaXN0ZXJlZCBjdXN0b20gcHJvcGVydGllcyBzaG91bGQg
YWxsb3cgaW5oZXJpdGFuY2UgdG8gYmUgY29udHJvbGxlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL3Jvb3QtZWxlbWVudC1kZWxldGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvcm9vdC1lbGVtZW50LWRlbGV0ZWQuaHRtbApp
bmRleCBjMzU0OTNhNmYyZjk4MTRiMGYwZWUwOTViM2E0N2QzM2U4ZjVlYmRmLi40YzRkZTU4NmYy
ZDM5Yjg2ZjUyNzI2YTg4MWM5YTQzMzczZGUxYjY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnRlcnNlY3Rpb24tb2JzZXJ2ZXIvcm9vdC1lbGVtZW50LWRlbGV0ZWQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvcm9vdC1lbGVtZW50LWRlbGV0ZWQuaHRtbApA
QCAtMjAsNiArMjAsNyBAQAogICAgICAgICByb290ID0gbnVsbDsKICAgICAgICAgdGFyZ2V0ID0g
bnVsbDsKICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQuc3RlcF9mdW5jX2RvbmUoZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICBvYnNlcnZlci50YWtlUmVjb3JkcygpOwogICAgICAgICAg
ICAgR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMob2Jz
ZXJ2ZXIucm9vdCwgbnVsbCwgJ09ic2VydmVyIGhhcyBudWxsIHJvb3QgYWZ0ZXIgcm9vdCBlbGVt
ZW50IGlzIGRlc3Ryb3llZCcpOwogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhpbnRlcm5hbHMu
bnVtYmVyT2ZJbnRlcnNlY3Rpb25PYnNlcnZlcnMoZG9jdW1lbnQpLCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351612</attachid>
            <date>2018-10-04 12:20:06 -0700</date>
            <delta_ts>2018-10-22 14:38:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190235-20181004152005.patch</filename>
            <type>text/plain</type>
            <size>15812</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2ODI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIzN2Y1NWIyNGVkZGQ4
ZjQ0NjMyZmZjNTgzOWM2MDI2NTAxYzEzZi4uNWE1YTc3NDA3OGE1NzgxNDQyYzhhZjYyNGMwMWIw
MzBkMzlmNmE3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE4LTEwLTA0ICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZl
ciBkb2Vzbid0IGtlZXAgdGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV0YWluIEpTIHdyYXBwZXJzIG9mIHRh
cmdldHMgaW4gcXVldWVkIGVudHJpZXMgdXNpbmcgYSB2ZWN0b3Igb2YgR0NSZWFjaGFibGVSZWYg
b3duZWQgYnkKKyAgICAgICAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsIHdoaWNoIGdldHMgY2xlYXJl
ZCBhZnRlciB0aGUgZW50cmllcyBoYXZlIGJlZW4gZGVsaXZlcmVkLgorCisgICAgICAgIE1ha2Ug
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnRha2VSZWNvcmRzIHJldHVybiBhIHN0cnVjdCB3aGljaCBo
YXMgYm90aCB0aGUgdmVjdG9yIG9mIEdDUmVhY2hhYmxlUmVmcworICAgICAgICBmb3IgdGFyZ2V0
cyBhbmQgdGhlIHZlY3RvciBvZiBpbnRlcnNlY3Rpb24gb2JzZXJ2ZXIgZW50cmllcywgc28gdGhh
dCB0aGUgR0NSZWFjaGFibGVSZWZzIHN1cnZpdmUKKyAgICAgICAgdW50aWwgdGhlIGNyZWF0aW9u
IG9mIEpTIHdyYXBwZXJzIGZvciB0aGUgZW50cmllcy4KKworICAgICAgICBNb2RpZnkgSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSB0byBrZWVwIHRoZSBvYnNlcnZlciBh
bGl2ZSB3aGlsZSBpdCBoYXMKKyAgICAgICAgZW50cmllcyB0byBkZWxpdmVyLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgc2luY2UgdGhlIHJhY2VzIGZpeGVkIGhlcmUgYXJlIGRpZmZpY3VsdCB0
byB0ZXN0IHJlbGlhYmx5LiBTZWUgcjIzNjgwMSBhbmQgcjIzNjgyNSBmb3Igc2ltaWxhcgorICAg
ICAgICBmaXhlcyB0byBNdXRhdGlvbk9ic2VydmVyIHRoYXQgYWxzbyBoYWQgdG8gbGFuZCB3aXRo
b3V0IHRlc3RzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0ludGVy
c2VjdGlvbk9ic2VydmVyRW50cnk6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKTogS2VlcCB0aGUg
dGFyZ2V0IGVsZW1lbnQncyB3cmFwcGVyIGFsaXZlIHdoaWxlIHRoZQorICAgICAgICBJbnRlcnNl
Y3Rpb25PYnNlcnZlckVudHJ5J3Mgd3JhcHBlciBpcyBhbGl2ZS4KKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1BlcmZvcm1hbmNlT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNQZXJmb3JtYW5jZU9ic2VydmVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKTog
Rml4IGJ1aWxkIGVycm9ycyBjYXVzZWQgYnkgdGhpcyBmaWxlIG1vdmluZyB0bworICAgICAgICB0
byBhIGRpZmZlcmVudCB0YXJnZXQgaW4gdGhlIHVuaWZpZWQgYnVpbGQuCisgICAgICAgICogcGFn
ZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcnNlY3Rp
b25PYnNlcnZlcjo6dGFrZVJlY29yZHMpOiBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gaW5jbHVkZSBH
Q1JlYWNoYWJsZVJlZnMgZm9yIGVhY2ggcmVjb3JkJ3MgdGFyZ2V0LCBzbyB0aGF0CisgICAgICAg
IGVhY2ggdGFyZ2V0IGNhbiBiZSBrZXB0IHVudGlsIGEgSlMgd3JhcHBlciBpcyBjb25zdHJ1Y3Rl
ZCBmb3IgaXRzIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuCisgICAgICAgIChXZWJDb3JlOjpJ
bnRlcnNlY3Rpb25PYnNlcnZlcjo6YXBwZW5kUXVldWVkRW50cnkpOgorICAgICAgICAoV2ViQ29y
ZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5vdGlmeSk6IEVyYXNlIEdDUmVhY2hhYmxlUmVmcyBm
b3IgdGFyZ2V0cyBhZnRlciBkZWxpdmVyaW5nIHRoZSBjb3JyZXNwb25kaW5nIHJlY29yZHMuCisg
ICAgICAgIChXZWJDb3JlOjpJbnRlcnNlY3Rpb25PYnNlcnZlcjo6aGFzUGVuZGluZ0FjdGl2aXR5
IGNvbnN0KTogS2VlcCB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgYWxpdmUgdW50aWwgcXVldWVk
IGVudHJpZXMgYXJlIGRlbGl2ZXJlZC4KKyAgICAgICAgKFdlYkNvcmU6OkludGVyc2VjdGlvbk9i
c2VydmVyOjpzdG9wKToKKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmg6Cisg
ICAgICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5pZGw6CisgICAgICAgICogcGFnZS9J
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcnNlY3Rp
b25PYnNlcnZlckVudHJ5Ojp0YXJnZXQgY29uc3QpOiBNYWtlIHRoaXMgcmV0dXJuIGEgcmF3IHBv
aW50ZXIgaW5zdGVhZCBvZiBhIFJlZlB0ciBzbyB0aGF0IGl0CisgICAgICAgIGNhbiBiZSBjYWxs
ZWQgaW4gSlNJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Ojp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
biwgd2hpY2ggcnVucyBvbiB0aGUgR0MgdGhyZWFkIChpdCdzIGlsbGVnYWwgdG8gcmVmIGEgTm9k
ZQorICAgICAgICBvbiBhIG5vbi1tYWluIHRocmVhZCkuCisgICAgICAgICogcGFnZS9JbnRlcnNl
Y3Rpb25PYnNlcnZlckVudHJ5LmlkbDoKKwogMjAxOC0xMC0wMyAgSnVzdGluIE1pY2hhdWQgIDxq
dXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVnaXN0ZXJlZCBjdXN0b20gcHJv
cGVydGllcyBzaG91bGQgYWxsb3cgaW5oZXJpdGFuY2UgdG8gYmUgY29udHJvbGxlZApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAppbmRleCA2ZjY3ZTU3Nzg1ZTY4ZjhkZGYwOGNjODQ4NmJlYWY2OTNhNjc1NmJhLi5lMWQ0
NmI0ZmJlZDY5NjA0NGQ2YTYzODMyMGI5NTZhZDcxZjljYjlkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
NDE0LDYgKzQxNCw3IEBAIGJpbmRpbmdzL2pzL0pTSURCSW5kZXhDdXN0b20uY3BwCiBiaW5kaW5n
cy9qcy9KU0lEQk9iamVjdFN0b3JlQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNJREJUcmFuc2Fj
dGlvbkN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAorYmluZGlu
Z3MvanMvSlNJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Q3VzdG9tLmNwcAogYmluZGluZ3MvanMv
SlNMYXp5RXZlbnRMaXN0ZW5lci5jcHAKIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3Bw
CiBiaW5kaW5ncy9qcy9KU01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDcyNDQxOTVi
ODVhOGRlYjhkNTU0ZjM5MWI5OWRjNGYwYmY0NTM0MS4uZmRiMTNlNzU3MTFiYjNhZjVkYzcxMmEw
YmNlMTU5NzAyNzI2MzA2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTMwOSw2ICs5MzA5LDcgQEAKIAkJNzdBMTdBQTMxMkYy
OEIyQTAwNEUwMkY2IC8qIEpTT0VTVmVydGV4QXJyYXlPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3N0FBRDY4MzFFQ0ZCNjYyMDBCRkEyRDEgLyogQ3JlZGVudGlhbENy
ZWF0aW9uT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ3JlZGVudGlhbENyZWF0
aW9uT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QUFENjg1MUVD
RkJEMzkwMEJGQTJEMSAvKiBDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNzdDMTNGMDQyMTY1NjU4QTAwMkQ5QzVGIC8qIEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJF
bnRyeUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludGVyc2VjdGlvbk9ic2VydmVy
RW50cnlDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0NBQUFFRjFG
MkZDMzUwMDBDQjVDOEQgLyogVmlzdWFsVmlld3BvcnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFZpc3VhbFZpZXdwb3J0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzdE
NTBGRkExRUQ0RUM3ODAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzdENTBGRkIxRUQ0RjE2QzAwREE0Qzg3IC8qIENyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
cmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE5OTMwLDYgKzE5OTMxLDcgQEAKIAkJCQk1MTFFRjJDRTE3RjBGREYxMDBFNEZBMTYgLyogSlNJ
REJPYmplY3RTdG9yZUN1c3RvbS5jcHAgKi8sCiAJCQkJNTFFMjY5MzIxREQzQkM0MzAwNkI2QTU4
IC8qIEpTSURCVHJhbnNhY3Rpb25DdXN0b20uY3BwICovLAogCQkJCUE3RDAzMThEMEU5MzU0MDMw
MEUyNEFDRCAvKiBKU0ltYWdlRGF0YUN1c3RvbS5jcHAgKi8sCisJCQkJNzdDMTNGMDQyMTY1NjU4
QTAwMkQ5QzVGIC8qIEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAgKi8sCiAJ
CQkJQUQ3MjZGRTcxNkQ5RjIwNDAwM0E0RTZEIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggKi8sCiAJ
CQkJNDE1Q0RBRjYxRTZDRTBEMzAwNEYxMUVFIC8qIEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5j
cHAgKi8sCiAJCQkJRTFBNUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxD
dXN0b20uY3BwICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWU1MGQ2MmIwY2VjYzk0OWFkM2IyM2IwNTY5NTFiNjU4ODY2NjVkMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRy
eUN1c3RvbS5jcHAKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBH
b29nbGUgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmgiCisKKyNpbmNs
dWRlICJKU05vZGVDdXN0b20uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpTSW50
ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFw
cGVkKCkudGFyZ2V0KCkpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQZXJmb3JtYW5jZU9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGVyZm9ybWFuY2VPYnNlcnZlckN1c3RvbS5jcHAKaW5kZXggNmVmYTNk
Y2QyZTdlYmQzNWFjMWI4NjI3YmMyYmRiODA4MGExY2EzNS4uNWMxYjZkYThkYTkxYzNhYTBlODE0
NDA1NTJmYjQxMmI4NDMyZDQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNQZXJmb3JtYW5jZU9ic2VydmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BlcmZvcm1hbmNlT2JzZXJ2ZXJDdXN0b20uY3BwCkBAIC0zNSwxMiArMzUs
MTIgQEAgdm9pZCBKU1BlcmZvcm1hbmNlT2JzZXJ2ZXI6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVu
KEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgd3JhcHBlZCgpLmNhbGxiYWNrKCkudmlz
aXRKU0Z1bmN0aW9uKHZpc2l0b3IpOwogfQogCi1ib29sIEpTUGVyZm9ybWFuY2VPYnNlcnZlck93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsZSwgdm9pZCosIFNsb3RWaXNpdG9yJiwgY29uc3QgY2hhcioqIHJlYXNvbikKK2Jvb2wg
SlNQZXJmb3JtYW5jZU9ic2VydmVyT3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJvb3RzKEpT
Qzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgSlNDOjpTbG90VmlzaXRvciYs
IGNvbnN0IGNoYXIqKiByZWFzb24pCiB7CiAgICAgaWYgKFVOTElLRUxZKHJlYXNvbikpCiAgICAg
ICAgICpyZWFzb24gPSAiUmVnaXN0ZXJlZCBQZXJmb3JtYW5jZU9ic2VydmVyIGNhbGxiYWNrIjsK
IAotICAgIHJldHVybiBqc0Nhc3Q8SlNQZXJmb3JtYW5jZU9ic2VydmVyKj4oaGFuZGxlLnNsb3Qo
KS0+YXNDZWxsKCkpLT53cmFwcGVkKCkuaXNSZWdpc3RlcmVkKCk7CisgICAgcmV0dXJuIEpTQzo6
anNDYXN0PEpTUGVyZm9ybWFuY2VPYnNlcnZlcio+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKS0+
d3JhcHBlZCgpLmlzUmVnaXN0ZXJlZCgpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IDc5N2VhNDdiZTE0NWMyYzNlOTc3MTE2N2Fm
YTdjZWNhZTI0NThmMGIuLjAxZTc2ZThkNjJlZjc2NGM0YWMzOTc3ZWRiNDlhNjg1Njg2ODQ3OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0x
ODMsOSArMTgzLDkgQEAgdm9pZCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6ZGlzY29ubmVjdCgpCiAg
ICAgICAgIGRvY3VtZW50LT5yZW1vdmVJbnRlcnNlY3Rpb25PYnNlcnZlcigqdGhpcyk7CiB9CiAK
LVZlY3RvcjxSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4+IEludGVyc2VjdGlvbk9ic2Vy
dmVyOjp0YWtlUmVjb3JkcygpCithdXRvIEludGVyc2VjdGlvbk9ic2VydmVyOjp0YWtlUmVjb3Jk
cygpIC0+IFRha2VuUmVjb3JkcwogewotICAgIHJldHVybiBXVEZNb3ZlKG1fcXVldWVkRW50cmll
cyk7CisgICAgcmV0dXJuIHsgV1RGTW92ZShtX3F1ZXVlZEVudHJpZXMpLCBXVEZNb3ZlKG1fcGVu
ZGluZ1RhcmdldHMpIH07CiB9CiAKIHZvaWQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnRhcmdldERl
c3Ryb3llZChFbGVtZW50JiB0YXJnZXQpCkBAIC0yNDYsMjAgKzI0NiwyNSBAQCBib29sIEludGVy
c2VjdGlvbk9ic2VydmVyOjpjcmVhdGVUaW1lc3RhbXAoRE9NSGlnaFJlc1RpbWVTdGFtcCYgdGlt
ZXN0YW1wKSBjb25zdAogCiB2b2lkIEludGVyc2VjdGlvbk9ic2VydmVyOjphcHBlbmRRdWV1ZWRF
bnRyeShSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4mJiBlbnRyeSkKIHsKKyAgICBBU1NF
UlQoZW50cnktPnRhcmdldCgpKTsKKyAgICBtX3BlbmRpbmdUYXJnZXRzLmFwcGVuZCgqZW50cnkt
PnRhcmdldCgpKTsKICAgICBtX3F1ZXVlZEVudHJpZXMuYXBwZW5kKFdURk1vdmUoZW50cnkpKTsK
IH0KIAogdm9pZCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6bm90aWZ5KCkKIHsKLSAgICBpZiAobV9x
dWV1ZWRFbnRyaWVzLmlzRW1wdHkoKSB8fCAhbV9jYWxsYmFjayB8fCAhbV9jYWxsYmFjay0+Y2Fu
SW52b2tlQ2FsbGJhY2soKSkKKyAgICBpZiAobV9xdWV1ZWRFbnRyaWVzLmlzRW1wdHkoKSkgewor
ICAgICAgICBBU1NFUlQobV9wZW5kaW5nVGFyZ2V0cy5pc0VtcHR5KCkpOwogICAgICAgICByZXR1
cm47CisgICAgfQogCi0gICAgbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQodGFrZVJlY29yZHMoKSwg
KnRoaXMpOworICAgIGF1dG8gdGFrZW5SZWNvcmRzID0gdGFrZVJlY29yZHMoKTsKKyAgICBtX2Nh
bGxiYWNrLT5oYW5kbGVFdmVudChXVEZNb3ZlKHRha2VuUmVjb3Jkcy5yZWNvcmRzKSwgKnRoaXMp
OwogfQogCiBib29sIEludGVyc2VjdGlvbk9ic2VydmVyOjpoYXNQZW5kaW5nQWN0aXZpdHkoKSBj
b25zdAogewotICAgIHJldHVybiBoYXNPYnNlcnZhdGlvblRhcmdldHMoKSAmJiB0cmFja2luZ0Rv
Y3VtZW50KCk7CisgICAgcmV0dXJuIChoYXNPYnNlcnZhdGlvblRhcmdldHMoKSAmJiB0cmFja2lu
Z0RvY3VtZW50KCkpIHx8ICFtX3F1ZXVlZEVudHJpZXMuaXNFbXB0eSgpOwogfQogCiBjb25zdCBj
aGFyKiBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6YWN0aXZlRE9NT2JqZWN0TmFtZSgpIGNvbnN0CkBA
IC0yNzYsNiArMjgxLDggQEAgdm9pZCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6c3RvcCgpCiB7CiAg
ICAgZGlzY29ubmVjdCgpOwogICAgIG1fY2FsbGJhY2sgPSBudWxscHRyOworICAgIG1fcXVldWVk
RW50cmllcy5jbGVhcigpOworICAgIG1fcGVuZGluZ1RhcmdldHMuY2xlYXIoKTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRl
cnNlY3Rpb25PYnNlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNl
cnZlci5oCmluZGV4IDA5MmM0ZTFmNTAwYjQ5MTI0YzY5MjRlZTQ5NThlMTE2ZGRjZmRjNjEuLmZh
ZjMwZmRhMGJjY2VjYjE3YWIwYTU0MjNiZjE3OTBjZTk3NGM2MjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmgKQEAgLTI4LDYgKzI4LDcgQEAKICNpZiBFTkFC
TEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQogCiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0Lmgi
CisjaW5jbHVkZSAiR0NSZWFjaGFibGVSZWYuaCIKICNpbmNsdWRlICJJbnRlcnNlY3Rpb25PYnNl
cnZlckNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oIgog
I2luY2x1ZGUgIkxlbmd0aEJveC5oIgpAQCAtODAsNyArODEsMTEgQEAgcHVibGljOgogICAgIHZv
aWQgdW5vYnNlcnZlKEVsZW1lbnQmKTsKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKIAotICAgIFZl
Y3RvcjxSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4+IHRha2VSZWNvcmRzKCk7CisgICAg
c3RydWN0IFRha2VuUmVjb3JkcyB7CisgICAgICAgIFZlY3RvcjxSZWY8SW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXJFbnRyeT4+IHJlY29yZHM7CisgICAgICAgIFZlY3RvcjxHQ1JlYWNoYWJsZVJlZjxFbGVt
ZW50Pj4gcGVuZGluZ1RhcmdldHM7CisgICAgfTsKKyAgICBUYWtlblJlY29yZHMgdGFrZVJlY29y
ZHMoKTsKIAogICAgIHZvaWQgdGFyZ2V0RGVzdHJveWVkKEVsZW1lbnQmKTsKICAgICBib29sIGhh
c09ic2VydmF0aW9uVGFyZ2V0cygpIGNvbnN0IHsgcmV0dXJuIG1fb2JzZXJ2YXRpb25UYXJnZXRz
LnNpemUoKTsgfQpAQCAtMTA5LDYgKzExNCw3IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPGRvdWJs
ZT4gbV90aHJlc2hvbGRzOwogICAgIFJlZlB0cjxJbnRlcnNlY3Rpb25PYnNlcnZlckNhbGxiYWNr
PiBtX2NhbGxiYWNrOwogICAgIFZlY3RvcjxFbGVtZW50Kj4gbV9vYnNlcnZhdGlvblRhcmdldHM7
CisgICAgVmVjdG9yPEdDUmVhY2hhYmxlUmVmPEVsZW1lbnQ+PiBtX3BlbmRpbmdUYXJnZXRzOwog
ICAgIFZlY3RvcjxSZWY8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4+IG1fcXVldWVkRW50cmll
czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5pZGwK
aW5kZXggYWU4OGE2ZTIzMmZiYTliYTdmYmI4NWVlN2FhNjljZTBmMGY0NDFhYS4uMmYzYTE0M2E5
MmJjNTE5NWU0NmY4ZDI0NWUyNzMxMmExNGRlNGE3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5pZGwKQEAgLTQwLDcgKzQwLDcgQEAKICAgICB2b2lkIG9i
c2VydmUoRWxlbWVudCB0YXJnZXQpOwogICAgIHZvaWQgdW5vYnNlcnZlKEVsZW1lbnQgdGFyZ2V0
KTsKICAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKLSAgICBzZXF1ZW5jZTxJbnRlcnNlY3Rpb25PYnNl
cnZlckVudHJ5PiB0YWtlUmVjb3JkcygpOworICAgIFtSZXN1bHRGaWVsZD1yZWNvcmRzXSBzZXF1
ZW5jZTxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5PiB0YWtlUmVjb3JkcygpOwogfTsKIAogWwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaAppbmRl
eCA3YzRjMGI2ZWY0MGI0YTIyZDIyYjkzODE2MTBkZTM3NmQxYzU2ZmM5Li5jM2VmZjE4NzQyMmQ4
MWIwNTEyYmM1NTA4NDRhYmQ0NGU0MjgzZmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaApAQCAtNjAsNyArNjAsNyBAQCBwdWJsaWM6CiAg
ICAgUmVmUHRyPERPTVJlY3RSZWFkT25seT4gcm9vdEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1f
cm9vdEJvdW5kczsgfQogICAgIFJlZlB0cjxET01SZWN0UmVhZE9ubHk+IGJvdW5kaW5nQ2xpZW50
UmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRpbmdDbGllbnRSZWN0OyB9CiAgICAgUmVmUHRy
PERPTVJlY3RSZWFkT25seT4gaW50ZXJzZWN0aW9uUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faW50
ZXJzZWN0aW9uUmVjdDsgfQotICAgIFJlZlB0cjxFbGVtZW50PiB0YXJnZXQoKSBjb25zdCB7IHJl
dHVybiBtX3RhcmdldDsgfQorICAgIEVsZW1lbnQqIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGFyZ2V0LmdldCgpOyB9CiAKICAgICBib29sIGlzSW50ZXJzZWN0aW5nKCkgY29uc3QgeyByZXR1
cm4gbV9pc0ludGVyc2VjdGluZzsgfQogICAgIGRvdWJsZSBpbnRlcnNlY3Rpb25SYXRpbygpIGNv
bnN0IHsgcmV0dXJuIG1faW50ZXJzZWN0aW9uUmF0aW87IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaWRsCmluZGV4IDQ3NjEyZDBhNzlkMDk2
Y2EzM2JlNTM0ZmNjZDQ4ZGE0YmZkM2I3M2EuLjE4N2RmNWNkZTdjODc5YjFkN2RkYmNjYzAzYzNj
YWE0YWQ2OTczMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9u
T2JzZXJ2ZXJFbnRyeS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25P
YnNlcnZlckVudHJ5LmlkbApAQCAtMzEsNyArMzEsOCBAQCB0eXBlZGVmIGRvdWJsZSBET01IaWdo
UmVzVGltZVN0YW1wOwogICAgIENvbmRpdGlvbmFsPUlOVEVSU0VDVElPTl9PQlNFUlZFUiwKICAg
ICBDb25zdHJ1Y3RvcihJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5SW5pdCBpbnRlcnNlY3Rpb25P
YnNlcnZlckVudHJ5SW5pdCksCiAgICAgSW1wbGVtZW50YXRpb25MYWNrc1ZUYWJsZSwKLSAgICBF
bmFibGVkQXRSdW50aW1lPUludGVyc2VjdGlvbk9ic2VydmVyCisgICAgRW5hYmxlZEF0UnVudGlt
ZT1JbnRlcnNlY3Rpb25PYnNlcnZlciwKKyAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKIF0gaW50
ZXJmYWNlIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01IaWdoUmVzVGltZVN0YW1wIHRpbWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVJl
Y3RSZWFkT25seT8gcm9vdEJvdW5kczsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkYjQwOGQxYThlYzk1ODFlZDA1MzVkNmM1
MzFjMWQ4MWEwZTQ1NmNiLi4wYjhiYmZkYTRiOWNkZTE1NTVjZjAwNjFjMDM1Y2ZmNGU2MGIzNmMw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMTAtMDQgIEFsaSBKdW1hICA8YWp1bWFAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEludGVyc2VjdGlvbk9ic2VydmVyIGRvZXNuJ3Qga2VlcCB0
YXJnZXQncyBKUyB3cmFwcGVyIGFsaXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xOTAyMzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBVcGRhdGUgdGVzdCB0aGF0IGRlcGVuZHMgb24gYSB0YXJnZXQgZ2V0
dGluZyBHQydkIHRvIGNhbGwgdGFrZVJlY29yZHMoKSBzaW5jZQorICAgICAgICB0YXJnZXRzIHdp
dGggcGVuZGluZyBlbnRyaWVzIGFyZSBubyBsb2duZXIgR0MnZC4KKworICAgICAgICAqIGludGVy
c2VjdGlvbi1vYnNlcnZlci9yb290LWVsZW1lbnQtZGVsZXRlZC5odG1sOgorCiAyMDE4LTEwLTAz
ICBKdXN0aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZWdpc3RlcmVkIGN1c3RvbSBwcm9wZXJ0aWVzIHNob3VsZCBhbGxvdyBpbmhlcml0YW5jZSB0byBi
ZSBjb250cm9sbGVkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2
ZXIvcm9vdC1lbGVtZW50LWRlbGV0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1v
YnNlcnZlci9yb290LWVsZW1lbnQtZGVsZXRlZC5odG1sCmluZGV4IGMzNTQ5M2E2ZjJmOTgxNGIw
ZjBlZTA5NWIzYTQ3ZDMzZThmNWViZGYuLjRjNGRlNTg2ZjJkMzliODZmNTI3MjZhODgxYzlhNDMz
NzNkZTFiNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9y
b290LWVsZW1lbnQtZGVsZXRlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1v
YnNlcnZlci9yb290LWVsZW1lbnQtZGVsZXRlZC5odG1sCkBAIC0yMCw2ICsyMCw3IEBACiAgICAg
ICAgIHJvb3QgPSBudWxsOwogICAgICAgICB0YXJnZXQgPSBudWxsOwogICAgICAgICByZXF1ZXN0
QW5pbWF0aW9uRnJhbWUodC5zdGVwX2Z1bmNfZG9uZShmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IG9ic2VydmVyLnRha2VSZWNvcmRzKCk7CiAgICAgICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVj
dCgpOwogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhvYnNlcnZlci5yb290LCBudWxsLCAnT2Jz
ZXJ2ZXIgaGFzIG51bGwgcm9vdCBhZnRlciByb290IGVsZW1lbnQgaXMgZGVzdHJveWVkJyk7CiAg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGludGVybmFscy5udW1iZXJPZkludGVyc2VjdGlvbk9i
c2VydmVycyhkb2N1bWVudCksIDApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>352910</attachid>
            <date>2018-10-22 14:38:45 -0700</date>
            <delta_ts>2018-11-05 11:08:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190235-20181022173843.patch</filename>
            <type>text/plain</type>
            <size>20046</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3Mjk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWQ4M2QyZmU0N2E4ODVm
NjA0ODZlYjJlMWJjNGYzNTY5YTBjYzk3Yy4uN2IzODFmMmJjM2Q4NDgzYWJiOGU2YTRlMzNjZWI5
YmQ5OTBjZjNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE4LTEwLTIyICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZl
ciBkb2Vzbid0IGtlZXAgdGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV0YWluIEpTIHdyYXBwZXJzIG9mIHRh
cmdldHMgaW4gcXVldWVkIGVudHJpZXMgdXNpbmcgYSB2ZWN0b3Igb2YgR0NSZWFjaGFibGVSZWYg
b3duZWQgYnkKKyAgICAgICAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsIHdoaWNoIGdldHMgY2xlYXJl
ZCBhZnRlciB0aGUgZW50cmllcyBoYXZlIGJlZW4gZGVsaXZlcmVkLgorCisgICAgICAgIE1ha2Ug
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnRha2VSZWNvcmRzIHJldHVybiBhIHN0cnVjdCB3aGljaCBo
YXMgYm90aCB0aGUgdmVjdG9yIG9mIEdDUmVhY2hhYmxlUmVmcworICAgICAgICBmb3IgdGFyZ2V0
cyBhbmQgdGhlIHZlY3RvciBvZiBpbnRlcnNlY3Rpb24gb2JzZXJ2ZXIgZW50cmllcywgc28gdGhh
dCB0aGUgR0NSZWFjaGFibGVSZWZzIHN1cnZpdmUKKyAgICAgICAgdW50aWwgdGhlIGNyZWF0aW9u
IG9mIEpTIHdyYXBwZXJzIGZvciB0aGUgZW50cmllcy4KKworICAgICAgICBNb2RpZnkgSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSB0byBrZWVwIHRoZSBvYnNlcnZlciBh
bGl2ZSB3aGlsZSBpdCBoYXMKKyAgICAgICAgZW50cmllcyB0byBkZWxpdmVyLgorCisgICAgICAg
IFRlc3RzOiBpbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWVudHJ5
LWtlZXBzLWpzLXdyYXBwZXItb2YtdGFyZ2V0LWFsaXZlLmh0bWwKKyAgICAgICAgICAgICAgIGlu
dGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIta2VlcHMtanMtd3JhcHBl
ci1vZi10YXJnZXQtYWxpdmUuaHRtbAorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnk6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVu
KTogS2VlcCB0aGUgdGFyZ2V0IGVsZW1lbnQncyB3cmFwcGVyIGFsaXZlIHdoaWxlIHRoZQorICAg
ICAgICBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5J3Mgd3JhcHBlciBpcyBhbGl2ZS4KKyAgICAg
ICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVyc2VjdGlvbk9ic2VydmVyOjp0YWtlUmVjb3Jkcyk6IENoYW5nZSByZXR1cm4gdHlwZSB0byBp
bmNsdWRlIEdDUmVhY2hhYmxlUmVmcyBmb3IgZWFjaCByZWNvcmQncyB0YXJnZXQsIHNvIHRoYXQK
KyAgICAgICAgZWFjaCB0YXJnZXQgY2FuIGJlIGtlcHQgdW50aWwgYSBKUyB3cmFwcGVyIGlzIGNv
bnN0cnVjdGVkIGZvciBpdHMgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS4KKyAgICAgICAgKFdl
YkNvcmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjphcHBlbmRRdWV1ZWRFbnRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcnNlY3Rpb25PYnNlcnZlcjo6bm90aWZ5KTogRXJhc2UgR0NSZWFjaGFi
bGVSZWZzIGZvciB0YXJnZXRzIGFmdGVyIGRlbGl2ZXJpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcmVj
b3Jkcy4KKyAgICAgICAgKFdlYkNvcmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjpoYXNQZW5kaW5n
QWN0aXZpdHkgY29uc3QpOiBLZWVwIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlciBhbGl2ZSB1bnRp
bCBxdWV1ZWQgZW50cmllcyBhcmUgZGVsaXZlcmVkLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJz
ZWN0aW9uT2JzZXJ2ZXI6OnN0b3ApOgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmlkbDoKKyAgICAgICAg
KiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVyc2VjdGlvbk9ic2VydmVyRW50cnk6OnRhcmdldCBjb25zdCk6IE1ha2UgdGhpcyByZXR1cm4g
YSByYXcgcG9pbnRlciBpbnN0ZWFkIG9mIGEgUmVmUHRyIHNvIHRoYXQgaXQKKyAgICAgICAgY2Fu
IGJlIGNhbGxlZCBpbiBKU0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnk6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuLCB3aGljaCBydW5zIG9uIHRoZSBHQyB0aHJlYWQgKGl0J3MgaWxsZWdhbCB0byBy
ZWYgYSBOb2RlCisgICAgICAgIG9uIGEgbm9uLW1haW4gdGhyZWFkKS4KKyAgICAgICAgKiBwYWdl
L0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaWRsOgorCiAyMDE4LTEwLTE5ICBaYWxhbiBCdWp0
YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXSBSZW5kZXJSZXBsYWNl
ZCByZW5kZXJlciBzaG91bGQgY3JlYXRlIElubGluZUJveApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAwNDYz
ZDE1NzllNGM2MmQ5MzAxMmMwNjE1ZTkzMmJhNzRmMTYzZDNhLi41MDE1YzZlZmM1ZTdjZDA2N2Rk
ZWJhYjMzZmMxYTkyMGMwMjg5OWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNDMwLDYgKzQzMCw3IEBA
IGJpbmRpbmdzL2pzL0pTSURCSW5kZXhDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0lEQk9iamVj
dFN0b3JlQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNJREJUcmFuc2FjdGlvbkN1c3RvbS5jcHAK
IGJpbmRpbmdzL2pzL0pTSW1hZ2VEYXRhQ3VzdG9tLmNwcAorYmluZGluZ3MvanMvSlNJbnRlcnNl
Y3Rpb25PYnNlcnZlckVudHJ5Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNMYXp5RXZlbnRMaXN0
ZW5lci5jcHAKIGJpbmRpbmdzL2pzL0pTTG9jYXRpb25DdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9K
U01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYmExNWZjZjFkZWVjMDRmZWE2NDM2YzMw
YTU4MWM2YjJkMjUzYWFlZS4uYzVlZDhhM2EyNzcyZGUwYzNiNTFiYTFlNDk3OTY0OTFkYWQ5NTFl
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtOTM3OSw2ICs5Mzc5LDcgQEAKIAkJNzdBMTdBQTMxMkYyOEIyQTAwNEUwMkY2IC8q
IEpTT0VTVmVydGV4QXJyYXlPYmplY3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3N0FBRDY4MzFFQ0ZCNjYyMDBCRkEyRDEgLyogQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5pZGw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QUFENjg1MUVDRkJEMzkwMEJGQTJEMSAv
KiBDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRpYWxD
cmVhdGlvbk9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzdDMTNGMDQy
MTY1NjU4QTAwMkQ5QzVGIC8qIEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnlDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0NBQUFFRjFGMkZDMzUwMDBDQjVDOEQg
LyogVmlzdWFsVmlld3BvcnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFZpc3VhbFZpZXdw
b3J0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzdENTBGRkExRUQ0RUM3ODAw
REE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBw
YXRoID0gQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzdENTBGRkIxRUQ0RjE2QzAwREE0Qzg3IC8qIENyZWRlbnRpYWxSZXF1ZXN0T3B0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIwMTkyLDYgKzIwMTkz
LDcgQEAKIAkJCQk1MTFFRjJDRTE3RjBGREYxMDBFNEZBMTYgLyogSlNJREJPYmplY3RTdG9yZUN1
c3RvbS5jcHAgKi8sCiAJCQkJNTFFMjY5MzIxREQzQkM0MzAwNkI2QTU4IC8qIEpTSURCVHJhbnNh
Y3Rpb25DdXN0b20uY3BwICovLAogCQkJCUE3RDAzMThEMEU5MzU0MDMwMEUyNEFDRCAvKiBKU0lt
YWdlRGF0YUN1c3RvbS5jcHAgKi8sCisJCQkJNzdDMTNGMDQyMTY1NjU4QTAwMkQ5QzVGIC8qIEpT
SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAgKi8sCiAJCQkJQUQ3MjZGRTcxNkQ5
RjIwNDAwM0E0RTZEIC8qIEpTTWVkaWFMaXN0Q3VzdG9tLmggKi8sCiAJCQkJNDE1Q0RBRjYxRTZD
RTBEMzAwNEYxMUVFIC8qIEpTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAgKi8sCiAJCQkJRTFB
NUY5OUEwRTdFQUEyNTAwQUY4NUVBIC8qIEpTTWVzc2FnZUNoYW5uZWxDdXN0b20uY3BwICovLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbnRlcnNlY3Rpb25PYnNl
cnZlckVudHJ5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWU1MGQ2MmIwY2VjYzk0
OWFkM2IyM2IwNTY5NTFiNjU4ODY2NjVkMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAKQEAg
LTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBHb29nbGUgTExDLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiSlNJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmgiCisKKyNpbmNsdWRlICJKU05vZGVDdXN0
b20uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpTSW50ZXJzZWN0aW9uT2JzZXJ2
ZXJFbnRyeTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90VmlzaXRvciYgdmlzaXRv
cikKK3sKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFwcGVkKCkudGFyZ2V0KCkp
KTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25P
YnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNw
cAppbmRleCA1MWQxYWQyNTNkY2RkMjRmYzdmZDU0NWFhMmVhMGE0N2FmNTA5MTA0Li5jMWM5YTg4
YWYyMzJiMWUxNTc5ZDg4YzUxMTBkNmRiODNhM2YzZTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcApAQCAtMTgzLDkgKzE4Myw5IEBAIHZvaWQgSW50
ZXJzZWN0aW9uT2JzZXJ2ZXI6OmRpc2Nvbm5lY3QoKQogICAgICAgICBkb2N1bWVudC0+cmVtb3Zl
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKnRoaXMpOwogfQogCi1WZWN0b3I8UmVmPEludGVyc2VjdGlv
bk9ic2VydmVyRW50cnk+PiBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6dGFrZVJlY29yZHMoKQorYXV0
byBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6dGFrZVJlY29yZHMoKSAtPiBUYWtlblJlY29yZHMKIHsK
LSAgICByZXR1cm4gV1RGTW92ZShtX3F1ZXVlZEVudHJpZXMpOworICAgIHJldHVybiB7IFdURk1v
dmUobV9xdWV1ZWRFbnRyaWVzKSwgV1RGTW92ZShtX3BlbmRpbmdUYXJnZXRzKSB9OwogfQogCiB2
b2lkIEludGVyc2VjdGlvbk9ic2VydmVyOjp0YXJnZXREZXN0cm95ZWQoRWxlbWVudCYgdGFyZ2V0
KQpAQCAtMjQ0LDIwICsyNDQsMjUgQEAgYm9vbCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6Y3JlYXRl
VGltZXN0YW1wKERPTUhpZ2hSZXNUaW1lU3RhbXAmIHRpbWVzdGFtcCkgY29uc3QKIAogdm9pZCBJ
bnRlcnNlY3Rpb25PYnNlcnZlcjo6YXBwZW5kUXVldWVkRW50cnkoUmVmPEludGVyc2VjdGlvbk9i
c2VydmVyRW50cnk+JiYgZW50cnkpCiB7CisgICAgQVNTRVJUKGVudHJ5LT50YXJnZXQoKSk7Cisg
ICAgbV9wZW5kaW5nVGFyZ2V0cy5hcHBlbmQoKmVudHJ5LT50YXJnZXQoKSk7CiAgICAgbV9xdWV1
ZWRFbnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CiB9CiAKIHZvaWQgSW50ZXJzZWN0aW9u
T2JzZXJ2ZXI6Om5vdGlmeSgpCiB7Ci0gICAgaWYgKG1fcXVldWVkRW50cmllcy5pc0VtcHR5KCkg
fHwgIW1fY2FsbGJhY2sgfHwgIW1fY2FsbGJhY2stPmNhbkludm9rZUNhbGxiYWNrKCkpCisgICAg
aWYgKG1fcXVldWVkRW50cmllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fcGVuZGlu
Z1RhcmdldHMuaXNFbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIG1fY2Fs
bGJhY2stPmhhbmRsZUV2ZW50KHRha2VSZWNvcmRzKCksICp0aGlzKTsKKyAgICBhdXRvIHRha2Vu
UmVjb3JkcyA9IHRha2VSZWNvcmRzKCk7CisgICAgbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQoV1RG
TW92ZSh0YWtlblJlY29yZHMucmVjb3JkcyksICp0aGlzKTsKIH0KIAogYm9vbCBJbnRlcnNlY3Rp
b25PYnNlcnZlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gaGFz
T2JzZXJ2YXRpb25UYXJnZXRzKCkgJiYgdHJhY2tpbmdEb2N1bWVudCgpOworICAgIHJldHVybiAo
aGFzT2JzZXJ2YXRpb25UYXJnZXRzKCkgJiYgdHJhY2tpbmdEb2N1bWVudCgpKSB8fCAhbV9xdWV1
ZWRFbnRyaWVzLmlzRW1wdHkoKTsKIH0KIAogY29uc3QgY2hhciogSW50ZXJzZWN0aW9uT2JzZXJ2
ZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAtMjc0LDYgKzI3OSw4IEBAIHZvaWQg
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnN0b3AoKQogewogICAgIGRpc2Nvbm5lY3QoKTsKICAgICBt
X2NhbGxiYWNrID0gbnVsbHB0cjsKKyAgICBtX3F1ZXVlZEVudHJpZXMuY2xlYXIoKTsKKyAgICBt
X3BlbmRpbmdUYXJnZXRzLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaAppbmRleCAwOTJjNGUxZjUw
MGI0OTEyNGM2OTI0ZWU0OTU4ZTExNmRkY2ZkYzYxLi5mYWYzMGZkYTBiY2NlY2IxN2FiMGE1NDIz
YmYxNzkwY2U5NzRjNjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2Vj
dGlvbk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNl
cnZlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKElOVEVSU0VDVElPTl9PQlNFUlZF
UikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUgIkdDUmVhY2hhYmxl
UmVmLmgiCiAjaW5jbHVkZSAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjay5oIgogI2luY2x1
ZGUgIkludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaCIKICNpbmNsdWRlICJMZW5ndGhCb3guaCIK
QEAgLTgwLDcgKzgxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHVub2JzZXJ2ZShFbGVtZW50Jik7
CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKLSAgICBWZWN0b3I8UmVmPEludGVyc2VjdGlvbk9i
c2VydmVyRW50cnk+PiB0YWtlUmVjb3JkcygpOworICAgIHN0cnVjdCBUYWtlblJlY29yZHMgewor
ICAgICAgICBWZWN0b3I8UmVmPEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+PiByZWNvcmRzOwor
ICAgICAgICBWZWN0b3I8R0NSZWFjaGFibGVSZWY8RWxlbWVudD4+IHBlbmRpbmdUYXJnZXRzOwor
ICAgIH07CisgICAgVGFrZW5SZWNvcmRzIHRha2VSZWNvcmRzKCk7CiAKICAgICB2b2lkIHRhcmdl
dERlc3Ryb3llZChFbGVtZW50Jik7CiAgICAgYm9vbCBoYXNPYnNlcnZhdGlvblRhcmdldHMoKSBj
b25zdCB7IHJldHVybiBtX29ic2VydmF0aW9uVGFyZ2V0cy5zaXplKCk7IH0KQEAgLTEwOSw2ICsx
MTQsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjxkb3VibGU+IG1fdGhyZXNob2xkczsKICAgICBS
ZWZQdHI8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjaz4gbV9jYWxsYmFjazsKICAgICBWZWN0
b3I8RWxlbWVudCo+IG1fb2JzZXJ2YXRpb25UYXJnZXRzOworICAgIFZlY3RvcjxHQ1JlYWNoYWJs
ZVJlZjxFbGVtZW50Pj4gbV9wZW5kaW5nVGFyZ2V0czsKICAgICBWZWN0b3I8UmVmPEludGVyc2Vj
dGlvbk9ic2VydmVyRW50cnk+PiBtX3F1ZXVlZEVudHJpZXM7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaWRsCmluZGV4IGFlODhhNmUyMzJmYmE5YmE3
ZmJiODVlZTdhYTY5Y2UwZjBmNDQxYWEuLjJmM2ExNDNhOTJiYzUxOTVlNDZmOGQyNDVlMjczMTJh
MTRkZTRhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIu
aWRsCkBAIC00MCw3ICs0MCw3IEBACiAgICAgdm9pZCBvYnNlcnZlKEVsZW1lbnQgdGFyZ2V0KTsK
ICAgICB2b2lkIHVub2JzZXJ2ZShFbGVtZW50IHRhcmdldCk7CiAgICAgdm9pZCBkaXNjb25uZWN0
KCk7Ci0gICAgc2VxdWVuY2U8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4gdGFrZVJlY29yZHMo
KTsKKyAgICBbUmVzdWx0RmllbGQ9cmVjb3Jkc10gc2VxdWVuY2U8SW50ZXJzZWN0aW9uT2JzZXJ2
ZXJFbnRyeT4gdGFrZVJlY29yZHMoKTsKIH07CiAKIFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmgKaW5kZXggN2M0YzBiNmVmNDBiNGEyMmQyMmI5
MzgxNjEwZGUzNzZkMWM1NmZjOS4uYzNlZmYxODc0MjJkODFiMDUxMmJjNTUwODQ0YWJkNDRlNDI4
M2ZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZl
ckVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVu
dHJ5LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIFJlZlB0cjxET01SZWN0UmVhZE9u
bHk+IHJvb3RCb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RCb3VuZHM7IH0KICAgICBSZWZQ
dHI8RE9NUmVjdFJlYWRPbmx5PiBib3VuZGluZ0NsaWVudFJlY3QoKSBjb25zdCB7IHJldHVybiBt
X2JvdW5kaW5nQ2xpZW50UmVjdDsgfQogICAgIFJlZlB0cjxET01SZWN0UmVhZE9ubHk+IGludGVy
c2VjdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2ludGVyc2VjdGlvblJlY3Q7IH0KLSAgICBS
ZWZQdHI8RWxlbWVudD4gdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXQ7IH0KKyAgICBF
bGVtZW50KiB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldC5nZXQoKTsgfQogCiAgICAg
Ym9vbCBpc0ludGVyc2VjdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNJbnRlcnNlY3Rpbmc7IH0K
ICAgICBkb3VibGUgaW50ZXJzZWN0aW9uUmF0aW8oKSBjb25zdCB7IHJldHVybiBtX2ludGVyc2Vj
dGlvblJhdGlvOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlv
bk9ic2VydmVyRW50cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNl
cnZlckVudHJ5LmlkbAppbmRleCA0NzYxMmQwYTc5ZDA5NmNhMzNiZTUzNGZjY2Q0OGRhNGJmZDNi
NzNhLi4xODdkZjVjZGU3Yzg3OWIxZDdkZGJjY2MwM2MzY2FhNGFkNjk3MzM0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5pZGwKQEAgLTMx
LDcgKzMxLDggQEAgdHlwZWRlZiBkb3VibGUgRE9NSGlnaFJlc1RpbWVTdGFtcDsKICAgICBDb25k
aXRpb25hbD1JTlRFUlNFQ1RJT05fT0JTRVJWRVIsCiAgICAgQ29uc3RydWN0b3IoSW50ZXJzZWN0
aW9uT2JzZXJ2ZXJFbnRyeUluaXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUluaXQpLAogICAg
IEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgRW5hYmxlZEF0UnVudGltZT1JbnRlcnNl
Y3Rpb25PYnNlcnZlcgorICAgIEVuYWJsZWRBdFJ1bnRpbWU9SW50ZXJzZWN0aW9uT2JzZXJ2ZXIs
CisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCiBdIGludGVyZmFjZSBJbnRlcnNlY3Rpb25PYnNl
cnZlckVudHJ5IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NSGlnaFJlc1RpbWVTdGFtcCB0
aW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01SZWN0UmVhZE9ubHk/IHJvb3RCb3VuZHM7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggNjc0ZjA0M2Y5Nzg1OTU3MWUxNzgyZDExMTIxZDM1YzAwMWUyNDQyZS4uODNlZmRk
MmNiM2FjZjEwNjczYmJhOGU3M2RmNzk1MjRlODUwNDFiOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBA
CisyMDE4LTEwLTIyICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJ
bnRlcnNlY3Rpb25PYnNlcnZlciBkb2Vzbid0IGtlZXAgdGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRl
c3QgY292ZXJhZ2UuCisKKyAgICAgICAgVXBkYXRlIHRlc3QgdGhhdCBkZXBlbmRzIG9uIGEgdGFy
Z2V0IGdldHRpbmcgR0MnZCB0byBjYWxsIHRha2VSZWNvcmRzKCkgc2luY2UKKyAgICAgICAgdGFy
Z2V0cyB3aXRoIHBlbmRpbmcgZW50cmllcyBhcmUgbm8gbG9nbmVyIEdDJ2QuCisKKyAgICAgICAg
KiBpbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWVudHJ5LWtlZXBz
LWpzLXdyYXBwZXItb2YtdGFyZ2V0LWFsaXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1lbnRyeS1rZWVw
cy1qcy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnRl
cnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWtlZXBzLWpzLXdyYXBwZXIt
b2YtdGFyZ2V0LWFsaXZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW50ZXJzZWN0
aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1rZWVwcy1qcy13cmFwcGVyLW9mLXRh
cmdldC1hbGl2ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnRlcnNlY3Rpb24tb2JzZXJ2ZXIv
cm9vdC1lbGVtZW50LWRlbGV0ZWQuaHRtbDoKKwogMjAxOC0xMC0xOSAgQ2hhcmxpZSBUdXJuZXIg
IDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV0gRml4IGNyYXNoIGR1cmluZyB0
cmFjaW5nIGluICBnc3RfcXRkZW11eF9yZXF1ZXN0X3Byb3RlY3Rpb25fY29udGV4dApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNl
cnZlci1lbnRyeS1rZWVwcy1qcy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVy
LWVudHJ5LWtlZXBzLWpzLXdyYXBwZXItb2YtdGFyZ2V0LWFsaXZlLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42ZDk3NDgwYTk2ZTRhMmI0ZDViNzM0MzQ0ZmM0MmZmOGYyNjUyZjVmCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlv
bi1vYnNlcnZlci1lbnRyeS1rZWVwcy1qcy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw4IEBACitUaGlzIHRlc3RzIHRoYXQgSlMgd3JhcHBlcnMgb2YgdGFy
Z2V0cyBpbiBhbiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IGRvIG5vdCBnZXQgY29sbGVjdGVk
LgorCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXItZW50cnkta2Vl
cHMtanMtd3JhcHBlci1vZi10YXJnZXQtYWxpdmUuaHRtbCBiL0xheW91dFRlc3RzL2ludGVyc2Vj
dGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXItZW50cnkta2VlcHMtanMtd3JhcHBl
ci1vZi10YXJnZXQtYWxpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mY2MzMzVlN2E4MmRhOWE2YTliNDMx
ZWQwY2U4YWU2N2QyMzcwY2U4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW50ZXJz
ZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1lbnRyeS1rZWVwcy1qcy13cmFw
cGVyLW9mLXRhcmdldC1hbGl2ZS5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBKUyB3cmFwcGVycyBvZiB0YXJn
ZXRzIGluIGFuIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgZG8gbm90IGdldCBjb2xsZWN0ZWQu
PC9wPgorPHByZSBpZD0ibG9nIj48L3ByZT4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZ2Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitjb25zdCB0YXJnZXRDb3VudCA9IDU7Citjb25zdCBp
dGVyYXRpb25Db3VudCA9IDU7CisKK2FzeW5jIGZ1bmN0aW9uIG9ic2VydmUoKSB7CisgICAgZm9y
IChsZXQgaSA9IDA7IGkgPCB0YXJnZXRDb3VudDsgKytpKSB7CisgICAgICAgIGxldCB0YXJnZXQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgdGFyZ2V0Lm15U3RhdGUg
PSAnbGl2ZSc7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAg
ICB9CisKKyAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKyAgICAgICAgY29u
c3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZW50cmllcyA9PiB7CisgICAg
ICAgICAgICByZXNvbHZlKGVudHJpZXMpOworICAgICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVj
dCgpOworICAgICAgICB9KTsKKyAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGl2
JykuZm9yRWFjaCh0YXJnZXQgPT4geyBvYnNlcnZlci5vYnNlcnZlKHRhcmdldCk7IH0pOworICAg
IH0pOworfQorCitmdW5jdGlvbiBjaGVjayhlbnRyaWVzKSB7CisgICAgbGV0IGRlYWRDb3VudCA9
IDA7CisgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChlbnRy
eS50YXJnZXQubXlTdGF0ZSAhPSAnbGl2ZScpCisgICAgICAgICAgICBkZWFkQ291bnQrKzsKKyAg
ICB9CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpLnRleHRDb250ZW50ICs9IChk
ZWFkQ291bnQgPyBgRkFJTCAtICR7ZGVhZENvdW50fSB0YXJnZXRzIGxvc3QgSlMgd3JhcHBlcnNg
IDogJ1BBU1MnKSArICdcbic7Cit9CisKK2FzeW5jIGZ1bmN0aW9uIHJ1bkFsbCgpIHsKKyAgICBp
ZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpdGVyYXRpb25Db3VudDsgKytqKSB7CisgICAg
ICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBvYnNlcnZlKCk7CisgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoJ2RpdicpLmZvckVhY2godGFyZ2V0ID0+IHsgdGFyZ2V0LnJlbW92ZSgp
OyB9KTsKKyAgICAgICAgYXdhaXQgUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICAgIGdjKCk7Cisg
ICAgICAgIGNoZWNrKGVudHJpZXMpOworICAgIH0KKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5l
cikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK3J1bkFsbCgpOworCis8
L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ludGVy
c2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIta2VlcHMtanMtd3JhcHBlci1v
Zi10YXJnZXQtYWxpdmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9i
c2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1rZWVwcy1qcy13cmFwcGVyLW9mLXRhcmdldC1h
bGl2ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzZmODQ1Njk0NzM3ZmIzNGFlYmY2MTZhNWIy
MDQ3YWJkZWMyYmFkZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlv
bi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIta2VlcHMtanMtd3JhcHBlci1vZi10YXJn
ZXQtYWxpdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGhpcyB0ZXN0cyB0aGF0IEpT
IHdyYXBwZXJzIG9mIHRhcmdldHMgZW5xdWV1ZWQgdG8gYmUgZGVsaXZlcmVkIHRvIGFuIGludGVy
c2VjdGlvbiBvYnNlcnZlciBkbyBub3QgZ2V0IGNvbGxlY3RlZC4KKworUEFTUworCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2Vy
dmVyLWtlZXBzLWpzLXdyYXBwZXItb2YtdGFyZ2V0LWFsaXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWtlZXBzLWpzLXdyYXBw
ZXItb2YtdGFyZ2V0LWFsaXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjIxYzlmYzU3ZGU3NTNlMTFjN2M5
MDhhOTE0YTQxYmJiMWVmNGFjMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ludGVy
c2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIta2VlcHMtanMtd3JhcHBlci1v
Zi10YXJnZXQtYWxpdmUuaHRtbApAQCAtMCwwICsxLDU1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRoYXQgSlMgd3JhcHBlcnMgb2YgdGFyZ2V0cyBl
bnF1ZXVlZCB0byBiZSBkZWxpdmVyZWQgdG8gYW4gaW50ZXJzZWN0aW9uIG9ic2VydmVyIGRvIG5v
dCBnZXQgY29sbGVjdGVkLjwvcD4KKzxwcmUgaWQ9ImxvZyI+PC9wcmU+Cis8c2NyaXB0IHNyYz0i
Li4vcmVzb3VyY2VzL2djLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworY29uc3QgdGFyZ2V0Q291
bnQgPSA1OworY29uc3QgaXRlcmF0aW9uQ291bnQgPSA1OwordmFyIGRlYWRDb3VudCA9IDA7CisK
K2FzeW5jIGZ1bmN0aW9uIHJ1bkFsbCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBpdGVyYXRpb25Db3VudDsgKytpKSB7CisgICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAg
Z2MoKTsKKyAgICAgICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHJlcXVlc3RBbmlt
YXRpb25GcmFtZShyZXNvbHZlKSkKKyAgICB9CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnbG9nJykudGV4dENvbnRlbnQgPSAoZGVhZENvdW50ID8gYEZBSUwgLSAke2RlYWRDb3VudH0g
dGFyZ2V0cyBsb3N0IEpTIHdyYXBwZXJzYCA6ICdQQVNTJykgKyAnXG4nOworCisgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKwor
ZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkaXYn
KS5mb3JFYWNoKHRhcmdldCA9PiB7IHRhcmdldC5yZW1vdmUoKTsgfSk7CisKKyAgICBmb3IgKGxl
dCBpID0gMDsgaSA8IHRhcmdldENvdW50OyArK2kpIHsKKyAgICAgICAgbGV0IHRhcmdldCA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICB0YXJnZXQubXlTdGF0ZSA9ICds
aXZlJzsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0YXJnZXQpOworICAgIH0K
KworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RpdicpLmZvckVhY2godGFyZ2V0ID0+
IHsgb2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQpOyB9KTsKK30KKworY29uc3Qgb2JzZXJ2ZXIgPSBu
ZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZW50cmllcyA9PiB7CisgICAgZm9yIChjb25zdCBlbnRy
eSBvZiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChlbnRyeS50YXJnZXQubXlTdGF0ZSAhPSAnbGl2
ZScpCisgICAgICAgICAgICBkZWFkQ291bnQrKzsKKyAgICB9Cit9KTsKKworcnVuQWxsKCk7CisK
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW50
ZXJzZWN0aW9uLW9ic2VydmVyL3Jvb3QtZWxlbWVudC1kZWxldGVkLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvcm9vdC1lbGVtZW50LWRlbGV0ZWQuaHRtbAppbmRleCBj
MzU0OTNhNmYyZjk4MTRiMGYwZWUwOTViM2E0N2QzM2U4ZjVlYmRmLi40YzRkZTU4NmYyZDM5Yjg2
ZjUyNzI2YTg4MWM5YTQzMzczZGUxYjY0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnRlcnNl
Y3Rpb24tb2JzZXJ2ZXIvcm9vdC1lbGVtZW50LWRlbGV0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvcm9vdC1lbGVtZW50LWRlbGV0ZWQuaHRtbApAQCAtMjAs
NiArMjAsNyBAQAogICAgICAgICByb290ID0gbnVsbDsKICAgICAgICAgdGFyZ2V0ID0gbnVsbDsK
ICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICBvYnNlcnZlci50YWtlUmVjb3JkcygpOwogICAgICAgICAgICAgR0ND
b250cm9sbGVyLmNvbGxlY3QoKTsKICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMob2JzZXJ2ZXIu
cm9vdCwgbnVsbCwgJ09ic2VydmVyIGhhcyBudWxsIHJvb3QgYWZ0ZXIgcm9vdCBlbGVtZW50IGlz
IGRlc3Ryb3llZCcpOwogICAgICAgICAgICAgYXNzZXJ0X2VxdWFscyhpbnRlcm5hbHMubnVtYmVy
T2ZJbnRlcnNlY3Rpb25PYnNlcnZlcnMoZG9jdW1lbnQpLCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353889</attachid>
            <date>2018-11-05 11:08:07 -0800</date>
            <delta_ts>2018-11-06 11:52:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-190235-20181105140806.patch</filename>
            <type>text/plain</type>
            <size>20643</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3ODEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzA3YWZjNTBkNGE0N2E4
YzU1ZmE3MjU5MWMyNzI4MTQxNjJhNDhkOS4uZDMxNGE1YTg3MGFjZDJkMjM4NWU5NTRiM2RhZTM2
ZDM2MTIzMGEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE4LTEwLTIyICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZl
ciBkb2Vzbid0IGtlZXAgdGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV0YWluIEpTIHdyYXBwZXJzIG9mIHRh
cmdldHMgaW4gcXVldWVkIGVudHJpZXMgdXNpbmcgYSB2ZWN0b3Igb2YgR0NSZWFjaGFibGVSZWYg
b3duZWQgYnkKKyAgICAgICAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsIHdoaWNoIGdldHMgY2xlYXJl
ZCBhZnRlciB0aGUgZW50cmllcyBoYXZlIGJlZW4gZGVsaXZlcmVkLgorCisgICAgICAgIE1ha2Ug
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnRha2VSZWNvcmRzIHJldHVybiBhIHN0cnVjdCB3aGljaCBo
YXMgYm90aCB0aGUgdmVjdG9yIG9mIEdDUmVhY2hhYmxlUmVmcworICAgICAgICBmb3IgdGFyZ2V0
cyBhbmQgdGhlIHZlY3RvciBvZiBpbnRlcnNlY3Rpb24gb2JzZXJ2ZXIgZW50cmllcywgc28gdGhh
dCB0aGUgR0NSZWFjaGFibGVSZWZzIHN1cnZpdmUKKyAgICAgICAgdW50aWwgdGhlIGNyZWF0aW9u
IG9mIEpTIHdyYXBwZXJzIGZvciB0aGUgZW50cmllcy4KKworICAgICAgICBNb2RpZnkgSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSB0byBrZWVwIHRoZSBvYnNlcnZlciBh
bGl2ZSB3aGlsZSBpdCBoYXMKKyAgICAgICAgZW50cmllcyB0byBkZWxpdmVyLgorCisgICAgICAg
IFRlc3RzOiBpbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWVudHJ5
LWtlZXBzLWpzLXdyYXBwZXItb2YtdGFyZ2V0LWFsaXZlLmh0bWwKKyAgICAgICAgICAgICAgIGlu
dGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIta2VlcHMtanMtd3JhcHBl
ci1vZi10YXJnZXQtYWxpdmUuaHRtbAorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpKU0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnk6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVu
KTogS2VlcCB0aGUgdGFyZ2V0IGVsZW1lbnQncyB3cmFwcGVyIGFsaXZlIHdoaWxlIHRoZQorICAg
ICAgICBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5J3Mgd3JhcHBlciBpcyBhbGl2ZS4KKyAgICAg
ICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVyc2VjdGlvbk9ic2VydmVyOjp0YWtlUmVjb3Jkcyk6IENoYW5nZSByZXR1cm4gdHlwZSB0byBp
bmNsdWRlIEdDUmVhY2hhYmxlUmVmcyBmb3IgZWFjaCByZWNvcmQncyB0YXJnZXQsIHNvIHRoYXQK
KyAgICAgICAgZWFjaCB0YXJnZXQgY2FuIGJlIGtlcHQgdW50aWwgYSBKUyB3cmFwcGVyIGlzIGNv
bnN0cnVjdGVkIGZvciBpdHMgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS4KKyAgICAgICAgKFdl
YkNvcmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjphcHBlbmRRdWV1ZWRFbnRyeSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnRlcnNlY3Rpb25PYnNlcnZlcjo6bm90aWZ5KTogRXJhc2UgR0NSZWFjaGFi
bGVSZWZzIGZvciB0YXJnZXRzIGFmdGVyIGRlbGl2ZXJpbmcgdGhlIGNvcnJlc3BvbmRpbmcgcmVj
b3Jkcy4KKyAgICAgICAgKFdlYkNvcmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjpoYXNQZW5kaW5n
QWN0aXZpdHkgY29uc3QpOiBLZWVwIHRoZSBJbnRlcnNlY3Rpb25PYnNlcnZlciBhbGl2ZSB1bnRp
bCBxdWV1ZWQgZW50cmllcyBhcmUgZGVsaXZlcmVkLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJz
ZWN0aW9uT2JzZXJ2ZXI6OnN0b3ApOgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2
ZXIuaDoKKyAgICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmlkbDoKKyAgICAgICAg
KiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
dGVyc2VjdGlvbk9ic2VydmVyRW50cnk6OnRhcmdldCBjb25zdCk6IE1ha2UgdGhpcyByZXR1cm4g
YSByYXcgcG9pbnRlciBpbnN0ZWFkIG9mIGEgUmVmUHRyIHNvIHRoYXQgaXQKKyAgICAgICAgY2Fu
IGJlIGNhbGxlZCBpbiBKU0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnk6OnZpc2l0QWRkaXRpb25h
bENoaWxkcmVuLCB3aGljaCBydW5zIG9uIHRoZSBHQyB0aHJlYWQgKGl0J3MgaWxsZWdhbCB0byBy
ZWYgYSBOb2RlCisgICAgICAgIG9uIGEgbm9uLW1haW4gdGhyZWFkKS4KKyAgICAgICAgKiBwYWdl
L0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaWRsOgorCiAyMDE4LTExLTA1ICBSeWFuIEhhZGRh
ZCAgPHJ5YW5oYWRkYWRAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIyMzc3ODUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGQ1MDI3NzcyYjFlNmZhYzZiZjk0OGZlMmY3
MDJkOGE1ZDJmMThiOTAuLmI3MGQ1MjQyN2EzZDUxZTVkNzhiMjYyNTY1NzA3MWZkNTQyMGFhZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CkBAIC00MzQsNiArNDM0LDcgQEAgYmluZGluZ3MvanMvSlNJREJJbmRl
eEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCiBiaW5k
aW5ncy9qcy9KU0lEQlRyYW5zYWN0aW9uQ3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNJbWFnZURh
dGFDdXN0b20uY3BwCitiaW5kaW5ncy9qcy9KU0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnlDdXN0
b20uY3BwCiBiaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcAogYmluZGluZ3MvanMv
SlNMb2NhdGlvbkN1c3RvbS5jcHAKIGJpbmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3Rv
bS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBmZmU1MjNiMjdlYjBjYjI3MmE3ZWQ4OWQ3NDRhOGU5NmJiNzY4NmM3Li5iYjVi
NGYwMjA1NjliMWQ2OWY5OTljMmJiNzM4OTBiZTgyYWJhZmNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NDA3LDYgKzk0MDcs
NyBAQAogCQk3N0ExN0FBMzEyRjI4QjJBMDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVj
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU09FU1ZlcnRleEFycmF5T2Jq
ZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3QUFENjgzMUVDRkI2NjIwMEJG
QTJEMSAvKiBDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBDcmVkZW50aWFsQ3JlYXRpb25PcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzdBQUQ2ODUxRUNGQkQzOTAwQkZBMkQxIC8qIENyZWRlbnRpYWxDcmVhdGlvbk9w
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3N0MxM0YwNDIxNjU2NThBMDAyRDlDNUYgLyogSlNJ
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTc3Q0FBQUVGMUYyRkMzNTAwMENCNUM4RCAvKiBWaXN1YWxWaWV3cG9ydC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gVmlzdWFsVmlld3BvcnQuaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3N0Q1MEZGQTFFRDRFQzc4MDBEQTRDODcgLyogQ3JlZGVudGlhbFJl
cXVlc3RPcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDcmVkZW50aWFsUmVxdWVz
dE9wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0Q1MEZGQjFFRDRG
MTZDMDBEQTRDODcgLyogQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRlbnRpYWxSZXF1ZXN0T3B0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTU1NzEsOSArMTU1NzIsOSBAQAogCQkJCTMxMzU5MTAxMUU3
RERDNjAwMEYzMDYzMCAvKiBSVENJY2VHYXRoZXJpbmdTdGF0ZS5oICovLAogCQkJCTMxMzU5MTAy
MUU3RERDNjAwMEYzMDYzMCAvKiBSVENJY2VUcmFuc3BvcnRQb2xpY3kuaCAqLywKIAkJCQkzMTM1
OTEwMzFFN0REQzYwMDBGMzA2MzAgLyogUlRDSWNlVHJhbnNwb3J0U3RhdGUuaCAqLywKLQkJCQk0
MTJCQTVGRTIxOEM2NTE4MDAzNjU0NzQgLyogUlRDUE11eFBvbGljeS5oICovLAogCQkJCTA3MjIx
QkFBMTdDRjBBRDQwMDg0OEU1MSAvKiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCAq
LywKIAkJCQk0MUE0OEE5RDFFODMxMkVCMDBEMkFDMkQgLyogUlRDUGVlckNvbm5lY3Rpb25TdGF0
ZS5oICovLAorCQkJCTQxMkJBNUZFMjE4QzY1MTgwMDM2NTQ3NCAvKiBSVENQTXV4UG9saWN5Lmgg
Ki8sCiAJCQkJMzFFQjU0REQxRTdEQzc0NDAwQzE2MjNCIC8qIFJUQ1J0cFRyYW5zY2VpdmVyRGly
ZWN0aW9uLmggKi8sCiAJCQkJMzEzNTkxMDQxRTdEREM2MDAwRjMwNjMwIC8qIFJUQ1NkcFR5cGUu
aCAqLywKIAkJCQkwNzIyMUJBQjE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDU2Vzc2lvbkRlc2NyaXB0
aW9uRGVzY3JpcHRvci5jcHAgKi8sCkBAIC0yMDI3Miw2ICsyMDI3Myw3IEBACiAJCQkJNTExRUYy
Q0UxN0YwRkRGMTAwRTRGQTE2IC8qIEpTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwICovLAogCQkJ
CTUxRTI2OTMyMUREM0JDNDMwMDZCNkE1OCAvKiBKU0lEQlRyYW5zYWN0aW9uQ3VzdG9tLmNwcCAq
LywKIAkJCQlBN0QwMzE4RDBFOTM1NDAzMDBFMjRBQ0QgLyogSlNJbWFnZURhdGFDdXN0b20uY3Bw
ICovLAorCQkJCTc3QzEzRjA0MjE2NTY1OEEwMDJEOUM1RiAvKiBKU0ludGVyc2VjdGlvbk9ic2Vy
dmVyRW50cnlDdXN0b20uY3BwICovLAogCQkJCUFENzI2RkU3MTZEOUYyMDQwMDNBNEU2RCAvKiBK
U01lZGlhTGlzdEN1c3RvbS5oICovLAogCQkJCTQxNUNEQUY2MUU2Q0UwRDMwMDRGMTFFRSAvKiBK
U01lZGlhU3RyZWFtVHJhY2tDdXN0b20uY3BwICovLAogCQkJCUUxQTVGOTlBMEU3RUFBMjUwMEFG
ODVFQSAvKiBKU01lc3NhZ2VDaGFubmVsQ3VzdG9tLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ludGVyc2VjdGlvbk9ic2VydmVyRW50
cnlDdXN0b20uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlNTBkNjJiMGNlY2M5NDlhZDNiMjNiMDU2OTUxYjY1
ODg2NjY1ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnlDdXN0b20uY3BwCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTggR29vZ2xlIExMQy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTSW50ZXJzZWN0aW9u
T2JzZXJ2ZXJFbnRyeS5oIgorCisjaW5jbHVkZSAiSlNOb2RlQ3VzdG9tLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKwordm9pZCBKU0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnk6OnZpc2l0QWRk
aXRpb25hbENoaWxkcmVuKEpTQzo6U2xvdFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgdmlzaXRv
ci5hZGRPcGFxdWVSb290KHJvb3Qod3JhcHBlZCgpLnRhcmdldCgpKSk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAKaW5kZXggNTFkMWFkMjUz
ZGNkZDI0ZmM3ZmQ1NDVhYTJlYTBhNDdhZjUwOTEwNC4uYzFjOWE4OGFmMjMyYjFlMTU3OWQ4OGM1
MTEwZDZkYjgzYTNmM2UxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNl
Y3Rpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25P
YnNlcnZlci5jcHAKQEAgLTE4Myw5ICsxODMsOSBAQCB2b2lkIEludGVyc2VjdGlvbk9ic2VydmVy
OjpkaXNjb25uZWN0KCkKICAgICAgICAgZG9jdW1lbnQtPnJlbW92ZUludGVyc2VjdGlvbk9ic2Vy
dmVyKCp0aGlzKTsKIH0KIAotVmVjdG9yPFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Pj4g
SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnRha2VSZWNvcmRzKCkKK2F1dG8gSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXI6OnRha2VSZWNvcmRzKCkgLT4gVGFrZW5SZWNvcmRzCiB7Ci0gICAgcmV0dXJuIFdURk1v
dmUobV9xdWV1ZWRFbnRyaWVzKTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKG1fcXVldWVkRW50cmll
cyksIFdURk1vdmUobV9wZW5kaW5nVGFyZ2V0cykgfTsKIH0KIAogdm9pZCBJbnRlcnNlY3Rpb25P
YnNlcnZlcjo6dGFyZ2V0RGVzdHJveWVkKEVsZW1lbnQmIHRhcmdldCkKQEAgLTI0NCwyMCArMjQ0
LDI1IEBAIGJvb2wgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmNyZWF0ZVRpbWVzdGFtcChET01IaWdo
UmVzVGltZVN0YW1wJiB0aW1lc3RhbXApIGNvbnN0CiAKIHZvaWQgSW50ZXJzZWN0aW9uT2JzZXJ2
ZXI6OmFwcGVuZFF1ZXVlZEVudHJ5KFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5PiYmIGVu
dHJ5KQogeworICAgIEFTU0VSVChlbnRyeS0+dGFyZ2V0KCkpOworICAgIG1fcGVuZGluZ1Rhcmdl
dHMuYXBwZW5kKCplbnRyeS0+dGFyZ2V0KCkpOwogICAgIG1fcXVldWVkRW50cmllcy5hcHBlbmQo
V1RGTW92ZShlbnRyeSkpOwogfQogCiB2b2lkIEludGVyc2VjdGlvbk9ic2VydmVyOjpub3RpZnko
KQogewotICAgIGlmIChtX3F1ZXVlZEVudHJpZXMuaXNFbXB0eSgpIHx8ICFtX2NhbGxiYWNrIHx8
ICFtX2NhbGxiYWNrLT5jYW5JbnZva2VDYWxsYmFjaygpKQorICAgIGlmIChtX3F1ZXVlZEVudHJp
ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIEFTU0VSVChtX3BlbmRpbmdUYXJnZXRzLmlzRW1wdHko
KSk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKLSAgICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVu
dCh0YWtlUmVjb3JkcygpLCAqdGhpcyk7CisgICAgYXV0byB0YWtlblJlY29yZHMgPSB0YWtlUmVj
b3JkcygpOworICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KFdURk1vdmUodGFrZW5SZWNvcmRz
LnJlY29yZHMpLCAqdGhpcyk7CiB9CiAKIGJvb2wgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Omhhc1Bl
bmRpbmdBY3Rpdml0eSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGhhc09ic2VydmF0aW9uVGFyZ2V0
cygpICYmIHRyYWNraW5nRG9jdW1lbnQoKTsKKyAgICByZXR1cm4gKGhhc09ic2VydmF0aW9uVGFy
Z2V0cygpICYmIHRyYWNraW5nRG9jdW1lbnQoKSkgfHwgIW1fcXVldWVkRW50cmllcy5pc0VtcHR5
KCk7CiB9CiAKIGNvbnN0IGNoYXIqIEludGVyc2VjdGlvbk9ic2VydmVyOjphY3RpdmVET01PYmpl
Y3ROYW1lKCkgY29uc3QKQEAgLTI3NCw2ICsyNzksOCBAQCB2b2lkIEludGVyc2VjdGlvbk9ic2Vy
dmVyOjpzdG9wKCkKIHsKICAgICBkaXNjb25uZWN0KCk7CiAgICAgbV9jYWxsYmFjayA9IG51bGxw
dHI7CisgICAgbV9xdWV1ZWRFbnRyaWVzLmNsZWFyKCk7CisgICAgbV9wZW5kaW5nVGFyZ2V0cy5j
bGVhcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ludGVyc2VjdGlvbk9ic2VydmVyLmgKaW5kZXggMDkyYzRlMWY1MDBiNDkxMjRjNjkyNGVlNDk1
OGUxMTZkZGNmZGM2MS4uZmFmMzBmZGEwYmNjZWNiMTdhYjBhNTQyM2JmMTc5MGNlOTc0YzYyMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaApAQCAtMjgsNiAr
MjgsNyBAQAogI2lmIEVOQUJMRShJTlRFUlNFQ1RJT05fT0JTRVJWRVIpCiAKICNpbmNsdWRlICJB
Y3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRlICJHQ1JlYWNoYWJsZVJlZi5oIgogI2luY2x1ZGUg
IkludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJhY2suaCIKICNpbmNsdWRlICJJbnRlcnNlY3Rpb25P
YnNlcnZlckVudHJ5LmgiCiAjaW5jbHVkZSAiTGVuZ3RoQm94LmgiCkBAIC04MCw3ICs4MSwxMSBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1bm9ic2VydmUoRWxlbWVudCYpOwogICAgIHZvaWQgZGlzY29u
bmVjdCgpOwogCi0gICAgVmVjdG9yPFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Pj4gdGFr
ZVJlY29yZHMoKTsKKyAgICBzdHJ1Y3QgVGFrZW5SZWNvcmRzIHsKKyAgICAgICAgVmVjdG9yPFJl
ZjxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Pj4gcmVjb3JkczsKKyAgICAgICAgVmVjdG9yPEdD
UmVhY2hhYmxlUmVmPEVsZW1lbnQ+PiBwZW5kaW5nVGFyZ2V0czsKKyAgICB9OworICAgIFRha2Vu
UmVjb3JkcyB0YWtlUmVjb3JkcygpOwogCiAgICAgdm9pZCB0YXJnZXREZXN0cm95ZWQoRWxlbWVu
dCYpOwogICAgIGJvb2wgaGFzT2JzZXJ2YXRpb25UYXJnZXRzKCkgY29uc3QgeyByZXR1cm4gbV9v
YnNlcnZhdGlvblRhcmdldHMuc2l6ZSgpOyB9CkBAIC0xMDksNiArMTE0LDcgQEAgcHJpdmF0ZToK
ICAgICBWZWN0b3I8ZG91YmxlPiBtX3RocmVzaG9sZHM7CiAgICAgUmVmUHRyPEludGVyc2VjdGlv
bk9ic2VydmVyQ2FsbGJhY2s+IG1fY2FsbGJhY2s7CiAgICAgVmVjdG9yPEVsZW1lbnQqPiBtX29i
c2VydmF0aW9uVGFyZ2V0czsKKyAgICBWZWN0b3I8R0NSZWFjaGFibGVSZWY8RWxlbWVudD4+IG1f
cGVuZGluZ1RhcmdldHM7CiAgICAgVmVjdG9yPFJlZjxJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5
Pj4gbV9xdWV1ZWRFbnRyaWVzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2Vj
dGlvbk9ic2VydmVyLmlkbAppbmRleCBhZTg4YTZlMjMyZmJhOWJhN2ZiYjg1ZWU3YWE2OWNlMGYw
ZjQ0MWFhLi4yZjNhMTQzYTkyYmM1MTk1ZTQ2ZjhkMjQ1ZTI3MzEyYTE0ZGU0YTc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmlkbApAQCAtNDAsNyArNDAs
NyBAQAogICAgIHZvaWQgb2JzZXJ2ZShFbGVtZW50IHRhcmdldCk7CiAgICAgdm9pZCB1bm9ic2Vy
dmUoRWxlbWVudCB0YXJnZXQpOwogICAgIHZvaWQgZGlzY29ubmVjdCgpOwotICAgIHNlcXVlbmNl
PEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+IHRha2VSZWNvcmRzKCk7CisgICAgW1Jlc3VsdEZp
ZWxkPXJlY29yZHNdIHNlcXVlbmNlPEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+IHRha2VSZWNv
cmRzKCk7CiB9OwogCiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2Vj
dGlvbk9ic2VydmVyRW50cnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2Jz
ZXJ2ZXJFbnRyeS5oCmluZGV4IDdjNGMwYjZlZjQwYjRhMjJkMjJiOTM4MTYxMGRlMzc2ZDFjNTZm
YzkuLmMzZWZmMTg3NDIyZDgxYjA1MTJiYzU1MDg0NGFiZDQ0ZTQyODNmYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oCkBAIC02MCw3ICs2
MCw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8RE9NUmVjdFJlYWRPbmx5PiByb290Qm91bmRzKCkg
Y29uc3QgeyByZXR1cm4gbV9yb290Qm91bmRzOyB9CiAgICAgUmVmUHRyPERPTVJlY3RSZWFkT25s
eT4gYm91bmRpbmdDbGllbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9ib3VuZGluZ0NsaWVudFJl
Y3Q7IH0KICAgICBSZWZQdHI8RE9NUmVjdFJlYWRPbmx5PiBpbnRlcnNlY3Rpb25SZWN0KCkgY29u
c3QgeyByZXR1cm4gbV9pbnRlcnNlY3Rpb25SZWN0OyB9Ci0gICAgUmVmUHRyPEVsZW1lbnQ+IHRh
cmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9CisgICAgRWxlbWVudCogdGFyZ2V0KCkg
Y29uc3QgeyByZXR1cm4gbV90YXJnZXQuZ2V0KCk7IH0KIAogICAgIGJvb2wgaXNJbnRlcnNlY3Rp
bmcoKSBjb25zdCB7IHJldHVybiBtX2lzSW50ZXJzZWN0aW5nOyB9CiAgICAgZG91YmxlIGludGVy
c2VjdGlvblJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9pbnRlcnNlY3Rpb25SYXRpbzsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5pZGwKaW5k
ZXggNDc2MTJkMGE3OWQwOTZjYTMzYmU1MzRmY2NkNDhkYTRiZmQzYjczYS4uMTg3ZGY1Y2RlN2M4
NzliMWQ3ZGRiY2NjMDNjM2NhYTRhZDY5NzMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaWRsCkBAIC0zMSw3ICszMSw4IEBAIHR5cGVk
ZWYgZG91YmxlIERPTUhpZ2hSZXNUaW1lU3RhbXA7CiAgICAgQ29uZGl0aW9uYWw9SU5URVJTRUNU
SU9OX09CU0VSVkVSLAogICAgIENvbnN0cnVjdG9yKEludGVyc2VjdGlvbk9ic2VydmVyRW50cnlJ
bml0IGludGVyc2VjdGlvbk9ic2VydmVyRW50cnlJbml0KSwKICAgICBJbXBsZW1lbnRhdGlvbkxh
Y2tzVlRhYmxlLAotICAgIEVuYWJsZWRBdFJ1bnRpbWU9SW50ZXJzZWN0aW9uT2JzZXJ2ZXIKKyAg
ICBFbmFibGVkQXRSdW50aW1lPUludGVyc2VjdGlvbk9ic2VydmVyLAorICAgIEpTQ3VzdG9tTWFy
a0Z1bmN0aW9uLAogXSBpbnRlcmZhY2UgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSB7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTUhpZ2hSZXNUaW1lU3RhbXAgdGltZTsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NUmVjdFJlYWRPbmx5PyByb290Qm91bmRzOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI2YzE3YWNm
ODcxYmM0NzU3NWMzZmExMjY2NTQwYTJjYjc1NDVmNjEuLjg3ZWMwNTEwMDgyMTE0OWMyZWFhMjRm
YTE4NzlkZTc1NTFjOTA2ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0xMC0yMiAgQWxp
IEp1bWEgIDxhanVtYUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW50ZXJzZWN0aW9uT2JzZXJ2
ZXIgZG9lc24ndCBrZWVwIHRhcmdldCdzIEpTIHdyYXBwZXIgYWxpdmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIzNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IGNvdmVyYWdlLgorCisg
ICAgICAgIFVwZGF0ZSB0ZXN0IHRoYXQgZGVwZW5kcyBvbiBhIHRhcmdldCBnZXR0aW5nIEdDJ2Qg
dG8gY2FsbCB0YWtlUmVjb3JkcygpIHNpbmNlCisgICAgICAgIHRhcmdldHMgd2l0aCBwZW5kaW5n
IGVudHJpZXMgYXJlIG5vIGxvZ25lciBHQydkLgorCisgICAgICAgICogaW50ZXJzZWN0aW9uLW9i
c2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1lbnRyeS1rZWVwcy1qcy13cmFwcGVyLW9mLXRh
cmdldC1hbGl2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGludGVyc2VjdGlvbi1v
YnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXItZW50cnkta2VlcHMtanMtd3JhcHBlci1vZi10
YXJnZXQtYWxpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogaW50ZXJzZWN0aW9uLW9ic2VydmVy
L2ludGVyc2VjdGlvbi1vYnNlcnZlci1rZWVwcy1qcy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRl
cnNlY3Rpb24tb2JzZXJ2ZXIta2VlcHMtanMtd3JhcHBlci1vZi10YXJnZXQtYWxpdmUuaHRtbDog
QWRkZWQuCisgICAgICAgICogaW50ZXJzZWN0aW9uLW9ic2VydmVyL3Jvb3QtZWxlbWVudC1kZWxl
dGVkLmh0bWw6CisKIDIwMTgtMTEtMDUgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNob3cgc2F2ZS9yZXN0b3JlIHN0YWNrIGZvciBy
ZWNvcmRlZCAyRCBDYW52YXNlcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9u
LW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1lbnRyeS1rZWVwcy1qcy13cmFwcGVyLW9m
LXRhcmdldC1hbGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2Jz
ZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWVudHJ5LWtlZXBzLWpzLXdyYXBwZXItb2YtdGFy
Z2V0LWFsaXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDk3NDgwYTk2ZTRhMmI0ZDViNzM0
MzQ0ZmM0MmZmOGYyNjUyZjVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW50ZXJz
ZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1lbnRyeS1rZWVwcy1qcy13cmFw
cGVyLW9mLXRhcmdldC1hbGl2ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw4IEBACitUaGlzIHRl
c3RzIHRoYXQgSlMgd3JhcHBlcnMgb2YgdGFyZ2V0cyBpbiBhbiBJbnRlcnNlY3Rpb25PYnNlcnZl
ckVudHJ5IGRvIG5vdCBnZXQgY29sbGVjdGVkLgorCitQQVNTCitQQVNTCitQQVNTCitQQVNTCitQ
QVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRl
cnNlY3Rpb24tb2JzZXJ2ZXItZW50cnkta2VlcHMtanMtd3JhcHBlci1vZi10YXJnZXQtYWxpdmUu
aHRtbCBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2Jz
ZXJ2ZXItZW50cnkta2VlcHMtanMtd3JhcHBlci1vZi10YXJnZXQtYWxpdmUuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mY2MzMzVlN2E4MmRhOWE2YTliNDMxZWQwY2U4YWU2N2QyMzcwY2U4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1v
YnNlcnZlci1lbnRyeS1rZWVwcy1qcy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS5odG1sCkBAIC0w
LDAgKzEsNjAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMgdGVz
dHMgdGhhdCBKUyB3cmFwcGVycyBvZiB0YXJnZXRzIGluIGFuIEludGVyc2VjdGlvbk9ic2VydmVy
RW50cnkgZG8gbm90IGdldCBjb2xsZWN0ZWQuPC9wPgorPHByZSBpZD0ibG9nIj48L3ByZT4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZ2MuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitjb25z
dCB0YXJnZXRDb3VudCA9IDU7Citjb25zdCBpdGVyYXRpb25Db3VudCA9IDU7CisKK2FzeW5jIGZ1
bmN0aW9uIG9ic2VydmUoKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0YXJnZXRDb3VudDsg
KytpKSB7CisgICAgICAgIGxldCB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTsKKyAgICAgICAgdGFyZ2V0Lm15U3RhdGUgPSAnbGl2ZSc7CisgICAgICAgIGRvY3VtZW50LmJv
ZHkuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICB9CisKKyAgICByZXR1cm4gbmV3IFByb21pc2Uo
KHJlc29sdmUpID0+IHsKKyAgICAgICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIoZW50cmllcyA9PiB7CisgICAgICAgICAgICByZXNvbHZlKGVudHJpZXMpOworICAg
ICAgICAgICAgb2JzZXJ2ZXIuZGlzY29ubmVjdCgpOworICAgICAgICB9KTsKKyAgICAgICAgZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGl2JykuZm9yRWFjaCh0YXJnZXQgPT4geyBvYnNlcnZl
ci5vYnNlcnZlKHRhcmdldCk7IH0pOworICAgIH0pOworfQorCitmdW5jdGlvbiBjaGVjayhlbnRy
aWVzKSB7CisgICAgbGV0IGRlYWRDb3VudCA9IDA7CisgICAgZm9yIChjb25zdCBlbnRyeSBvZiBl
bnRyaWVzKSB7CisgICAgICAgIGlmIChlbnRyeS50YXJnZXQubXlTdGF0ZSAhPSAnbGl2ZScpCisg
ICAgICAgICAgICBkZWFkQ291bnQrKzsKKyAgICB9CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2xvZycpLnRleHRDb250ZW50ICs9IChkZWFkQ291bnQgPyBgRkFJTCAtICR7ZGVhZENvdW50
fSB0YXJnZXRzIGxvc3QgSlMgd3JhcHBlcnNgIDogJ1BBU1MnKSArICdcbic7Cit9CisKK2FzeW5j
IGZ1bmN0aW9uIHJ1bkFsbCgpIHsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworCisgICAgZm9yIChsZXQgaiA9IDA7IGogPCBp
dGVyYXRpb25Db3VudDsgKytqKSB7CisgICAgICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBvYnNl
cnZlKCk7CisgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RpdicpLmZvckVhY2go
dGFyZ2V0ID0+IHsgdGFyZ2V0LnJlbW92ZSgpOyB9KTsKKyAgICAgICAgYXdhaXQgUHJvbWlzZS5y
ZXNvbHZlKCk7CisgICAgICAgIGdjKCk7CisgICAgICAgIGNoZWNrKGVudHJpZXMpOworICAgIH0K
KworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlE
b25lKCk7Cit9CisKK3J1bkFsbCgpOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24t
b2JzZXJ2ZXIta2VlcHMtanMtd3JhcHBlci1vZi10YXJnZXQtYWxpdmUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1r
ZWVwcy1qcy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NzZmODQ1Njk0NzM3ZmIzNGFlYmY2MTZhNWIyMDQ3YWJkZWMyYmFkZQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2
ZXIta2VlcHMtanMtd3JhcHBlci1vZi10YXJnZXQtYWxpdmUtZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNCBAQAorVGhpcyB0ZXN0cyB0aGF0IEpTIHdyYXBwZXJzIG9mIHRhcmdldHMgZW5xdWV1ZWQg
dG8gYmUgZGVsaXZlcmVkIHRvIGFuIGludGVyc2VjdGlvbiBvYnNlcnZlciBkbyBub3QgZ2V0IGNv
bGxlY3RlZC4KKworUEFTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24t
b2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWtlZXBzLWpzLXdyYXBwZXItb2YtdGFyZ2V0
LWFsaXZlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0
aW9uLW9ic2VydmVyLWtlZXBzLWpzLXdyYXBwZXItb2YtdGFyZ2V0LWFsaXZlLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZjIxYzlmYzU3ZGU3NTNlMTFjN2M5MDhhOTE0YTQxYmJiMWVmNGFjMAotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24t
b2JzZXJ2ZXIta2VlcHMtanMtd3JhcHBlci1vZi10YXJnZXQtYWxpdmUuaHRtbApAQCAtMCwwICsx
LDU1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGJvZHk+Cis8cD5UaGlzIHRlc3RzIHRo
YXQgSlMgd3JhcHBlcnMgb2YgdGFyZ2V0cyBlbnF1ZXVlZCB0byBiZSBkZWxpdmVyZWQgdG8gYW4g
aW50ZXJzZWN0aW9uIG9ic2VydmVyIGRvIG5vdCBnZXQgY29sbGVjdGVkLjwvcD4KKzxwcmUgaWQ9
ImxvZyI+PC9wcmU+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2djLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQ+CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVyLmR1bXBB
c1RleHQoKTsKKworY29uc3QgdGFyZ2V0Q291bnQgPSA1OworY29uc3QgaXRlcmF0aW9uQ291bnQg
PSA1OwordmFyIGRlYWRDb3VudCA9IDA7CisKK2FzeW5jIGZ1bmN0aW9uIHJ1bkFsbCgpIHsKKyAg
ICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyYXRpb25Db3VudDsgKytpKSB7Cisg
ICAgICAgIHJ1blRlc3QoKTsKKyAgICAgICAgZ2MoKTsKKyAgICAgICAgYXdhaXQgbmV3IFByb21p
c2UoKHJlc29sdmUpID0+IHJlcXVlc3RBbmltYXRpb25GcmFtZShyZXNvbHZlKSkKKyAgICB9CisK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykudGV4dENvbnRlbnQgPSAoZGVhZENv
dW50ID8gYEZBSUwgLSAke2RlYWRDb3VudH0gdGFyZ2V0cyBsb3N0IEpTIHdyYXBwZXJzYCA6ICdQ
QVNTJykgKyAnXG4nOworCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0
UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIHsKKyAgICBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkaXYnKS5mb3JFYWNoKHRhcmdldCA9PiB7IHRhcmdldC5y
ZW1vdmUoKTsgfSk7CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhcmdldENvdW50OyArK2kp
IHsKKyAgICAgICAgbGV0IHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwor
ICAgICAgICB0YXJnZXQubXlTdGF0ZSA9ICdsaXZlJzsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZCh0YXJnZXQpOworICAgIH0KKworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JB
bGwoJ2RpdicpLmZvckVhY2godGFyZ2V0ID0+IHsgb2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQpOyB9
KTsKK30KKworY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoZW50cmll
cyA9PiB7CisgICAgZm9yIChjb25zdCBlbnRyeSBvZiBlbnRyaWVzKSB7CisgICAgICAgIGlmIChl
bnRyeS50YXJnZXQubXlTdGF0ZSAhPSAnbGl2ZScpCisgICAgICAgICAgICBkZWFkQ291bnQrKzsK
KyAgICB9Cit9KTsKKworcnVuQWxsKCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL3Jvb3QtZWxlbWVu
dC1kZWxldGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvcm9vdC1l
bGVtZW50LWRlbGV0ZWQuaHRtbAppbmRleCBjMzU0OTNhNmYyZjk4MTRiMGYwZWUwOTViM2E0N2Qz
M2U4ZjVlYmRmLi40YzRkZTU4NmYyZDM5Yjg2ZjUyNzI2YTg4MWM5YTQzMzczZGUxYjY0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvcm9vdC1lbGVtZW50LWRl
bGV0ZWQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvcm9vdC1l
bGVtZW50LWRlbGV0ZWQuaHRtbApAQCAtMjAsNiArMjAsNyBAQAogICAgICAgICByb290ID0gbnVs
bDsKICAgICAgICAgdGFyZ2V0ID0gbnVsbDsKICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1l
KHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBvYnNlcnZlci50YWtl
UmVjb3JkcygpOwogICAgICAgICAgICAgR0NDb250cm9sbGVyLmNvbGxlY3QoKTsKICAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHMob2JzZXJ2ZXIucm9vdCwgbnVsbCwgJ09ic2VydmVyIGhhcyBudWxs
IHJvb3QgYWZ0ZXIgcm9vdCBlbGVtZW50IGlzIGRlc3Ryb3llZCcpOwogICAgICAgICAgICAgYXNz
ZXJ0X2VxdWFscyhpbnRlcm5hbHMubnVtYmVyT2ZJbnRlcnNlY3Rpb25PYnNlcnZlcnMoZG9jdW1l
bnQpLCAwKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353982</attachid>
            <date>2018-11-06 11:52:29 -0800</date>
            <delta_ts>2018-11-06 12:52:59 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-190235-20181106145228.patch</filename>
            <type>text/plain</type>
            <size>29967</size>
            <attacher name="Ali Juma">ajuma</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3ODYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODdmMTlhNWE3NzgxNTkx
NDc5N2Y3ZTY4YjJjYTRiOGRhNDA0NzYzYS4uMzhiZTNhYWJlMTFjMjVkNTYwMjRlMDQyMjJiZjA2
MjhlNTk4MDM3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTExLTA2ICBBbGkg
SnVtYSAgPGFqdW1hQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZl
ciBkb2Vzbid0IGtlZXAgdGFyZ2V0J3MgSlMgd3JhcHBlciBhbGl2ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFJldGFpbiBKUyB3cmFwcGVycyBvZiB0YXJn
ZXRzIGluIHF1ZXVlZCBlbnRyaWVzIHVzaW5nIGEgdmVjdG9yIG9mIEdDUmVhY2hhYmxlUmVmIG93
bmVkIGJ5CisgICAgICAgIEludGVyc2VjdGlvbk9ic2VydmVyLCB3aGljaCBnZXRzIGNsZWFyZWQg
YWZ0ZXIgdGhlIGVudHJpZXMgaGF2ZSBiZWVuIGRlbGl2ZXJlZC4KKworICAgICAgICBNYWtlIElu
dGVyc2VjdGlvbk9ic2VydmVyOjp0YWtlUmVjb3JkcyByZXR1cm4gYSBzdHJ1Y3Qgd2hpY2ggaGFz
IGJvdGggdGhlIHZlY3RvciBvZiBHQ1JlYWNoYWJsZVJlZnMKKyAgICAgICAgZm9yIHRhcmdldHMg
YW5kIHRoZSB2ZWN0b3Igb2YgaW50ZXJzZWN0aW9uIG9ic2VydmVyIGVudHJpZXMsIHNvIHRoYXQg
dGhlIEdDUmVhY2hhYmxlUmVmcyBzdXJ2aXZlCisgICAgICAgIHVudGlsIHRoZSBjcmVhdGlvbiBv
ZiBKUyB3cmFwcGVycyBmb3IgdGhlIGVudHJpZXMuCisKKyAgICAgICAgTW9kaWZ5IEludGVyc2Vj
dGlvbk9ic2VydmVyOjpoYXNQZW5kaW5nQWN0aXZpdHkgdG8ga2VlcCB0aGUgb2JzZXJ2ZXIgYWxp
dmUgd2hpbGUgaXQgaGFzCisgICAgICAgIGVudHJpZXMgdG8gZGVsaXZlci4KKworICAgICAgICBU
ZXN0czogaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1lbnRyeS1r
ZWVwcy1qcy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS5odG1sCisgICAgICAgICAgICAgICBpbnRl
cnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWtlZXBzLWpzLXdyYXBwZXIt
b2YtdGFyZ2V0LWFsaXZlLmh0bWwKKyAgICAgICAgICAgICAgIGludGVyc2VjdGlvbi1vYnNlcnZl
ci90YXJnZXQtZGVsZXRlZC5odG1sCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4p
OiBLZWVwIHRoZSB0YXJnZXQgZWxlbWVudCdzIHdyYXBwZXIgYWxpdmUgd2hpbGUgdGhlCisgICAg
ICAgIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkncyB3cmFwcGVyIGlzIGFsaXZlLgorICAgICAg
ICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJzZWN0aW9uT2JzZXJ2ZXI6OnRha2VSZWNvcmRzKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIGlu
Y2x1ZGUgR0NSZWFjaGFibGVSZWZzIGZvciBlYWNoIHJlY29yZCdzIHRhcmdldCwgc28gdGhhdAor
ICAgICAgICBlYWNoIHRhcmdldCBjYW4gYmUga2VwdCB1bnRpbCBhIEpTIHdyYXBwZXIgaXMgY29u
c3RydWN0ZWQgZm9yIGl0cyBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LgorICAgICAgICAoV2Vi
Q29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmFwcGVuZFF1ZXVlZEVudHJ5KToKKyAgICAgICAg
KFdlYkNvcmU6OkludGVyc2VjdGlvbk9ic2VydmVyOjpub3RpZnkpOiBFcmFzZSBHQ1JlYWNoYWJs
ZVJlZnMgZm9yIHRhcmdldHMgYWZ0ZXIgZGVsaXZlcmluZyB0aGUgY29ycmVzcG9uZGluZyByZWNv
cmRzLgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Omhhc1BlbmRpbmdB
Y3Rpdml0eSBjb25zdCk6IEtlZXAgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyIGFsaXZlIHVudGls
IHF1ZXVlZCBlbnRyaWVzIGFyZSBkZWxpdmVyZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnRlcnNl
Y3Rpb25PYnNlcnZlcjo6c3RvcCk6CisgICAgICAgICogcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZl
ci5oOgorICAgICAgICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaWRsOgorICAgICAgICAq
IHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeTo6dGFyZ2V0IGNvbnN0KTogTWFrZSB0aGlzIHJldHVybiBh
IHJhdyBwb2ludGVyIGluc3RlYWQgb2YgYSBSZWZQdHIgc28gdGhhdCBpdAorICAgICAgICBjYW4g
YmUgY2FsbGVkIGluIEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeTo6dmlzaXRBZGRpdGlvbmFs
Q2hpbGRyZW4sIHdoaWNoIHJ1bnMgb24gdGhlIEdDIHRocmVhZCAoaXQncyBpbGxlZ2FsIHRvIHJl
ZiBhIE5vZGUKKyAgICAgICAgb24gYSBub24tbWFpbiB0aHJlYWQpLgorICAgICAgICAqIHBhZ2Uv
SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5pZGw6CisKIDIwMTgtMTEtMDYgIEFsaSBKdW1hICA8
YWp1bWFAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtJbnRlcnNlY3Rpb25PYnNlcnZlcl0gQWNj
b3VudCBmb3IgQ1NTIHpvb20gd2hlbiBjb21wdXRpbmcgY2xpZW50IHJlY3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CmluZGV4IDM2MDFhZWQ2NmQxYjBmNTMyZmM0ZTczNTJiMDBlOTM3ZmU1YjZmMDIuLmNhMzBkZTFh
OTc1YTE2YzRkZTlkY2ExYjhiYzEyYTY1OTVkMDQ1ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC00MzAs
NiArNDMwLDcgQEAgYmluZGluZ3MvanMvSlNJREJJbmRleEN1c3RvbS5jcHAKIGJpbmRpbmdzL2pz
L0pTSURCT2JqZWN0U3RvcmVDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0lEQlRyYW5zYWN0aW9u
Q3VzdG9tLmNwcAogYmluZGluZ3MvanMvSlNJbWFnZURhdGFDdXN0b20uY3BwCitiaW5kaW5ncy9q
cy9KU0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnlDdXN0b20uY3BwCiBiaW5kaW5ncy9qcy9KU0xh
enlFdmVudExpc3RlbmVyLmNwcAogYmluZGluZ3MvanMvSlNMb2NhdGlvbkN1c3RvbS5jcHAKIGJp
bmRpbmdzL2pzL0pTTWVkaWFTdHJlYW1UcmFja0N1c3RvbS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxYzI0ZjE0ZTU2NjA4
M2U4YzNhZGRlYzA1MjFiOWFmYzljODZmM2VjLi5mYmZjNzU4NzI0MjA5OTM3ODI3NzU0ZTgwY2Y1
YmNmNmZiYmVhZWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05NDAyLDYgKzk0MDIsNyBAQAogCQk3N0ExN0FBMzEyRjI4QjJB
MDA0RTAyRjYgLyogSlNPRVNWZXJ0ZXhBcnJheU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU09FU1ZlcnRleEFycmF5T2JqZWN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTc3QUFENjgzMUVDRkI2NjIwMEJGQTJEMSAvKiBDcmVkZW50aWFsQ3JlYXRp
b25PcHRpb25zLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBDcmVkZW50aWFsQ3JlYXRpb25P
cHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzdBQUQ2ODUxRUNGQkQz
OTAwQkZBMkQxIC8qIENyZWRlbnRpYWxDcmVhdGlvbk9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q3JlZGVudGlhbENyZWF0aW9uT3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3N0MxM0YwNDIxNjU2NThBMDAyRDlDNUYgLyogSlNJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5
Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRy
eUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc3Q0FBQUVGMUYyRkMz
NTAwMENCNUM4RCAvKiBWaXN1YWxWaWV3cG9ydC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
VmlzdWFsVmlld3BvcnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3N0Q1MEZG
QTFFRDRFQzc4MDBEQTRDODcgLyogQ3JlZGVudGlhbFJlcXVlc3RPcHRpb25zLmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQ7IHBhdGggPSBDcmVkZW50aWFsUmVxdWVzdE9wdGlvbnMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3N0Q1MEZGQjFFRDRGMTZDMDBEQTRDODcgLyogQ3JlZGVudGlh
bFJlcXVlc3RPcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENyZWRl
bnRpYWxSZXF1ZXN0T3B0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTYx
MjksOCArMTYxMzAsNiBAQAogCQkxMjIxRTA1ODFDMDJCNDA5MDA2QTFBMDAgLyogQW5pbWF0aW9u
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJCQk3MTQ5NURE
ODIwMkIwNkRDMDBBREZEMzQgLyogSlNFZmZlY3RUaW1pbmcuY3BwICovLAotCQkJCTcxNDk1RERB
MjAyQjA2REUwMEFERkQzNCAvKiBKU0VmZmVjdFRpbWluZy5oICovLAogCQkJCTcxNEM3QzY5MUZE
QURBRDUwMEYyQkVFMSAvKiBKU0FuaW1hdGlvblBsYXliYWNrRXZlbnQuY3BwICovLAogCQkJCTcx
NEM3QzZBMUZEQURBRDUwMEYyQkVFMSAvKiBKU0FuaW1hdGlvblBsYXliYWNrRXZlbnQuaCAqLywK
IAkJCQk3MTRDN0M2ODFGREFEQUQ0MDBGMkJFRTEgLyogSlNBbmltYXRpb25QbGF5YmFja0V2ZW50
SW5pdC5jcHAgKi8sCkBAIC0xNjE1MSw2ICsxNjE1MCw4IEBACiAJCQkJNzEwMjVFREMxRjk5RjFB
ODAwNEEyNTBDIC8qIEpTRG9jdW1lbnRUaW1lbGluZS5oICovLAogCQkJCTcxNzI5RjdEMjBGM0JB
QkEwMDgwMUNFNiAvKiBKU0RvY3VtZW50VGltZWxpbmVPcHRpb25zLmNwcCAqLywKIAkJCQk3MTcy
OUY3QzIwRjNCQUI5MDA4MDFDRTYgLyogSlNEb2N1bWVudFRpbWVsaW5lT3B0aW9ucy5oICovLAor
CQkJCTcxNDk1REQ4MjAyQjA2REMwMEFERkQzNCAvKiBKU0VmZmVjdFRpbWluZy5jcHAgKi8sCisJ
CQkJNzE0OTVEREEyMDJCMDZERTAwQURGRDM0IC8qIEpTRWZmZWN0VGltaW5nLmggKi8sCiAJCQkJ
NzEyQkU0ODQxRkU4NjdDMjAwMjAzMUNDIC8qIEpTRmlsbE1vZGUuY3BwICovLAogCQkJCTcxMkJF
NDg1MUZFODY4MTgwMDIwMzFDQyAvKiBKU0ZpbGxNb2RlLmggKi8sCiAJCQkJNzEyNDdFMjgxRkVB
NUY2MTAwOEMwOENFIC8qIEpTSXRlcmF0aW9uQ29tcG9zaXRlT3BlcmF0aW9uLmNwcCAqLywKQEAg
LTIwMDEzLDggKzIwMDE0LDYgQEAKIAkJCQk3MUVGQ0VEQTIwMkIzODhGMDBEN0M0MTEgLyogQW5p
bWF0aW9uRWZmZWN0LmNwcCAqLywKIAkJCQk3MUVGQ0VENzIwMkIzODhEMDBEN0M0MTEgLyogQW5p
bWF0aW9uRWZmZWN0LmggKi8sCiAJCQkJNzFFRkNFRDYyMDJCMzg4QzAwRDdDNDExIC8qIEFuaW1h
dGlvbkVmZmVjdC5pZGwgKi8sCi0JCQkJNzEyQkU0N0MxRkU4NjQ0ODAwMjAzMUNDIC8qIEVmZmVj
dFRpbWluZy5oICovLAotCQkJCTcxMkJFNDdBMUZFODY0NDcwMDIwMzFDQyAvKiBFZmZlY3RUaW1p
bmcuaWRsICovLAogCQkJCTcxNEM3QzYwMUZEQUQyNzkwMEYyQkVFMSAvKiBBbmltYXRpb25QbGF5
YmFja0V2ZW50LmNwcCAqLywKIAkJCQk3MTRDN0M2NTFGREFEMjdCMDBGMkJFRTEgLyogQW5pbWF0
aW9uUGxheWJhY2tFdmVudC5oICovLAogCQkJCTcxNEM3QzY0MUZEQUQyN0IwMEYyQkVFMSAvKiBB
bmltYXRpb25QbGF5YmFja0V2ZW50LmlkbCAqLywKQEAgLTIwMDQ1LDYgKzIwMDQ0LDggQEAKIAkJ
CQk3MTAyNUVDQTFGOTlGMDk2MDA0QTI1MEMgLyogRG9jdW1lbnRUaW1lbGluZS5pZGwgKi8sCiAJ
CQkJNzE3MjlGN0EyMEYzQkEzQTAwODAxQ0U2IC8qIERvY3VtZW50VGltZWxpbmVPcHRpb25zLmgg
Ki8sCiAJCQkJNzE3MjlGNzkyMEYzQkEzOTAwODAxQ0U2IC8qIERvY3VtZW50VGltZWxpbmVPcHRp
b25zLmlkbCAqLywKKwkJCQk3MTJCRTQ3QzFGRTg2NDQ4MDAyMDMxQ0MgLyogRWZmZWN0VGltaW5n
LmggKi8sCisJCQkJNzEyQkU0N0ExRkU4NjQ0NzAwMjAzMUNDIC8qIEVmZmVjdFRpbWluZy5pZGwg
Ki8sCiAJCQkJNzEyQkU0ODExRkU4NjVENDAwMjAzMUNDIC8qIEZpbGxNb2RlLmggKi8sCiAJCQkJ
NzEyQkU0ODIxRkU4NjVENTAwMjAzMUNDIC8qIEZpbGxNb2RlLmlkbCAqLywKIAkJCQk3MTI0N0Uz
MzFGRUE1RjgwMDA4QzA4Q0UgLyogSXRlcmF0aW9uQ29tcG9zaXRlT3BlcmF0aW9uLmggKi8sCkBA
IC0yMDI1OSw2ICsyMDI2MCw3IEBACiAJCQkJNTExRUYyQ0UxN0YwRkRGMTAwRTRGQTE2IC8qIEpT
SURCT2JqZWN0U3RvcmVDdXN0b20uY3BwICovLAogCQkJCTUxRTI2OTMyMUREM0JDNDMwMDZCNkE1
OCAvKiBKU0lEQlRyYW5zYWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlBN0QwMzE4RDBFOTM1NDAz
MDBFMjRBQ0QgLyogSlNJbWFnZURhdGFDdXN0b20uY3BwICovLAorCQkJCTc3QzEzRjA0MjE2NTY1
OEEwMDJEOUM1RiAvKiBKU0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnlDdXN0b20uY3BwICovLAog
CQkJCUFENzI2RkU3MTZEOUYyMDQwMDNBNEU2RCAvKiBKU01lZGlhTGlzdEN1c3RvbS5oICovLAog
CQkJCTQxNUNEQUY2MUU2Q0UwRDMwMDRGMTFFRSAvKiBKU01lZGlhU3RyZWFtVHJhY2tDdXN0b20u
Y3BwICovLAogCQkJCUUxQTVGOTlBMEU3RUFBMjUwMEFGODVFQSAvKiBKU01lc3NhZ2VDaGFubmVs
Q3VzdG9tLmNwcCAqLywKQEAgLTI3NjI5LDcgKzI3NjMxLDYgQEAKIAkJCQk0OUU5MTJBQjBFRkFD
OTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTZGRTExMjBF
NkUxREE3MDBCRjYwODggLyogQW5pbWF0aW9uQmFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzFF
RkNFREMyMDJCMzhBOTAwRDdDNDExIC8qIEFuaW1hdGlvbkVmZmVjdC5oIGluIEhlYWRlcnMgKi8s
Ci0JCQkJNzEyQkU0N0QxRkU4NjQ1ODAwMjAzMUNDIC8qIEVmZmVjdFRpbWluZy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMzE5ODQ4MDExQTFEODE3QjAwQTEzMzE4IC8qIEFuaW1hdGlvbkV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQk0OUU5MTJBRDBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0aW9u
TGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzE0QzdDNjYxRkRBRDJBMTAwRjJCRUUxIC8qIEFu
aW1hdGlvblBsYXliYWNrRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjc5NDUsNiArMjc5NDYs
NyBAQAogCQkJCTMxNkZFMTE2MEU2RTFEQTcwMEJGNjA4OCAvKiBDb21wb3NpdGVBbmltYXRpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REREMDk5RTY0OTIwMDU2RTU4MSAvKiBDb21wb3Np
dGVFZGl0Q29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzEyNDdFMzcxRkVBNUY4NjAwOEMw
OENFIC8qIENvbXBvc2l0ZU9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzExMTI0M0Uy
MTZGQTcxMTAwRUI3QjY3IC8qIENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0by5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNzlGMkY1QTIxMDkxOTM5QTAwMEQ4N0NCIC8qIENvbXBvc2l0aW9uRXZlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTJERDVBNzI3MUVCRUU0N0QwMDlCQTU5NyAvKiBDb21wb3NpdGlv
blVuZGVybGluZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzExNkUyQ0MxRkVENzVEQzAwQzA2RkRF
IC8qIENvbXB1dGVkRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKQEAgLTI3OTUzLDcgKzI3
OTU1LDYgQEAKIAkJCQkyREFGMzQzRDFFQTdFMEYxMDAzODJDRDMgLyogQ29uc3RhbnRQcm9wZXJ0
eU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODcyMUMwOTc3RDNDMDAwNTgyNkQ5IC8qIENv
bnRhaW5lck5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUUxQTE0NzA4MTExMDJCMTUwMEVFQzBG
MyAvKiBDb250YWluZXJOb2RlQWxnb3JpdGhtcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzExMTI0
NDEyMTZGQTdDRDAwRUI3QjY3IC8qIEpTQ29tcG9zaXRlT3BlcmF0aW9uT3JBdXRvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQzVFQjk4MTBFODIwNzI1MDBCMjU5NjUgLyogQ29udGVudERhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxQjQ1RDIxMUFCOEQxRTIwMDExN0NEMiAvKiBDb250ZW50RXh0
ZW5zaW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0RGQTZDODFBQTRGMkRBMDBFQTg3NDYgLyog
Q29udGVudEV4dGVuc2lvbkFjdGlvbnMuaCBpbiBIZWFkZXJzICovLApAQCAtMjgzOTEsNiArMjgz
OTIsNyBAQAogCQkJCTFBRjMyNjc5MEQ3OEI5NDQwMDY4RjBDNCAvKiBFZGl0b3JDbGllbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTRCQUU5NUIxMEIyRkE5Q0UwMEFFRDhBMCAvKiBFZGl0b3JEZWxl
dGVBY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRkRBRkNBMEIxMTMwNzQwMEUyNzQ2RiAv
KiBFZGl0b3JJbnNlcnRBY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTcxMkJFNDdEMUZFODY0
NTgwMDIwMzFDQyAvKiBFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRBODA3
MDlENTYzMjcwMDAzQUM4RCAvKiBFbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEFFN0Mx
QTE3RDIzMjM1MDAwOUZCMzEgLyogRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUU0NDBBQTk2MUM2ODQyMDgwMEEyNjVDQyAvKiBFbGVtZW50QW5kVGV4dERlc2Nl
bmRhbnRJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTAwMiw3ICsyOTAwNCw2IEBACiAJ
CQkJNTdCNUY4MTAxRTVFMkE0RTAwRjM0RjkwIC8qIEpTQWVzR2NtUGFyYW1zLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1NzY4MTQ0NTFFNzBDQjFGMDBFNzc3NTQgLyogSlNBZXNLZXlQYXJhbXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUZEQTE1RUNBMTJCMDNGNTAwMDNBNTgzQSAvKiBKU0FuYWx5c2Vy
Tm9kZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzE0OTVEREIyMDJCMDZGMTAwQURGRDM0IC8qIEpT
RWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTk4NDgwQzFBMUU2Q0U4MDBBMTMz
MTggLyogSlNBbmltYXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNzE0QzdDNkMxRkRB
REFGMzAwRjJCRUUxIC8qIEpTQW5pbWF0aW9uUGxheWJhY2tFdmVudC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNzE0QzdDNkQxRkRBREFGNjAwRjJCRUUxIC8qIEpTQW5pbWF0aW9uUGxheWJhY2tFdmVu
dEluaXQuaCBpbiBIZWFkZXJzICovLApAQCAtMjkwNzgsNiArMjkwNzksNyBAQAogCQkJCUE1ODRG
RTNDMTg2NEUyRDgwMDg0M0IxMCAvKiBKU0NvbW1hbmRMaW5lQVBJSG9zdC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNGOUI2RTEwQkEwRkI3MjAwODU0MDY0IC8qIEpTQ29tbWVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJNzEyNDdFM0IxRkVBNUY5MDAwOEMwOENFIC8qIEpTQ29tcG9zaXRlT3BlcmF0
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MTExMjQ0MTIxNkZBN0NEMDBFQjdCNjcgLyogSlND
b21wb3NpdGVPcGVyYXRpb25PckF1dG8uaCBpbiBIZWFkZXJzICovLAogCQkJCTc5QUM5MjE5MTA5
OTQ1QzgwMDIxMjY2RSAvKiBKU0NvbXBvc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTcxMTZFMkNGMUZFRDc2NUIwMEMwNkZERSAvKiBKU0NvbXB1dGVkRWZmZWN0VGltaW5nLmggaW4g
SGVhZGVycyAqLywKIAkJCQlGREExNUVCRTEyQjAzRjBCMDAzQTU4M0EgLyogSlNDb252b2x2ZXJO
b2RlLmggaW4gSGVhZGVycyAqLywKQEAgLTI5MTY2LDcgKzI5MTY4LDYgQEAKIAkJCQk3QzhFMzRC
RTFFNEEzM0IwMDA1NENFMjMgLyogSlNET01Db252ZXJ0T2JqZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFMzIzQ0ZGQTFFNUFGNkFGMDBGMEI0QTAgLyogSlNET01Db252ZXJ0UHJvbWlzZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QkYxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVy
dFJlY29yZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzExMTI0M0UyMTZGQTcxMTAwRUI3QjY3IC8q
IENvbXBvc2l0ZU9wZXJhdGlvbk9yQXV0by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MxRjVENTkx
RjIyRkY3MzAwQTg4NzRGIC8qIEpTRE9NQ29udmVydFNjaGVkdWxlZEFjdGlvbi5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJN0M4RTM0QzAxRTRBMzNCMDAwNTRDRTIzIC8qIEpTRE9NQ29udmVydFNlcXVl
bmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4RTM0QzExRTRBMzNCMDAwNTRDRTIzIC8qIEpT
RE9NQ29udmVydFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTIy
Myw2ICsyOTIyNCw3IEBACiAJCQkJNTc2ODE0NDExRTcwOUZBNDAwRTc3NzU0IC8qIEpTRWNkaEtl
eURlcml2ZVBhcmFtcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTdFRUFBNTUxRUEwMDFCMTAwNzAx
MTI0IC8qIEpTRWNkc2FQYXJhbXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTU3NTBBOTgyMUU2QTE1
MDgwMDcwNUM0QSAvKiBKU0VjS2V5UGFyYW1zLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MTQ5NURE
QjIwMkIwNkYxMDBBREZEMzQgLyogSlNFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTY1REYzMUZBMDlEMUNDNjAwMDBCRTMyNSAvKiBKU0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCUFERUM3OEY4MThFRTUzMDgwMDEzMTVDMiAvKiBKU0VsZW1lbnRDdXN0b20uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTgzRUU1OThGMUY1MDk1OEUwMDNFOEIzMCAvKiBKU0Vycm9yQ2FsbGJhY2su
aCBpbiBIZWFkZXJzICovLApAQCAtMjk0NDksNiArMjk0NTEsNyBAQAogCQkJCTMxNDg3N0U2MUZB
QUIwMjUwMEMwNTc1OSAvKiBKU09mZnNjcmVlbkNhbnZhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MzE0MEM1MjcxRkRGNTU4MjAwRDJBODczIC8qIEpTT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmggaW4gSGVhZGVycyAqLywKIAkJCQk1N0UyMzM2NTFEQzdEQjFGMDBGMjhEMDEgLyog
SnNvbldlYktleS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzEyMDczNDMyMTZERkI0MTAwQzc4MzI5
IC8qIEpTT3B0aW9uYWxFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUZERUE2MjQz
MTUyMTAyRTIwMDQ3OURGMCAvKiBKU09zY2lsbGF0b3JOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwNzA0QTQwQzFENkRGQzY5MDA4NkRDREIgLyogSlNPdmVyY29uc3RyYWluZWRFcnJvci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDcwNEE0MTYxRDZGMzlGQjAwODZEQ0RCIC8qIEpTT3ZlcmNvbnN0
cmFpbmVkRXJyb3JFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yOTU4Nyw3ICsyOTU5MCw2IEBA
CiAJCQkJNjUxNUVDOTIwRDk3MjNGRjAwNjNENDlBIC8qIEpTU1ZHQWx0R2x5cGhFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkyNEQ5MTI5NjEzQ0E5NTYxMDBEMjE5MTUgLyogSlNTVkdBbHRH
bHlwaEl0ZW1FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyRjY5OTBBQjc3MTk1MDAy
MkVGQUQgLyogSlNTVkdBbmdsZS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzEyMDczNDAyMTZERkIw
MDAwQzc4MzI5IC8qIE9wdGlvbmFsRWZmZWN0VGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
MkZBM0QzNzBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdBbmltYXRlQ29sb3JFbGVtZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQlCMkZBM0QzOTBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdBbmltYXRl
ZEFuZ2xlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkZBM0QzQjBBQjc1QTZGMDAwRTVBQzQgLyog
SlNTVkdBbmltYXRlZEJvb2xlYW4uaCBpbiBIZWFkZXJzICovLApAQCAtMzAxODAsNiArMzAxODIs
NyBAQAogCQkJCUIyRDNEQTY1MEQwMDZDRDYwMEVGNkYzQSAvKiBPcGVuVHlwZUNHLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCMkQzREE2NTBEMDA2Q0Q2MDBFRjZGMjcgLyogT3BlblR5cGVNYXRoRGF0
YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjJEM0VBNjUwRDAwNkNENjAwRUY2RjI4IC8qIE9wZW5U
eXBlVHlwZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTcxMjA3MzQwMjE2REZCMDAwMEM3ODMyOSAv
KiBPcHRpb25hbEVmZmVjdFRpbWluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0RFN0ZDNDUxODE5
MDRCMTAwMkJCQjc3IC8qIE9yZGVySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxODRG
NTE2MUVBRjA1QTgwMEYxOEJGMCAvKiBPcmllbnRhdGlvbk5vdGlmaWVyLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwMDE0NjI4QjEwM0NEMURFMDAwQjIwREIgLyogT3JpZ2luQWNjZXNzRW50cnkuaCBp
biBIZWFkZXJzICovLApAQCAtMzA1OTksNyArMzA2MDIsNiBAQAogCQkJCTUxNEM3Njc5MENFOTIz
QTEwMDdFRjNDRCAvKiBSZXNvdXJjZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2
N0EwQ0U5MjNBMTAwN0VGM0NEIC8qIFJlc291cmNlSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQk1MTRDNzY3QjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VIYW5kbGVJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNzEyMDczNDMyMTZERkI0MTAwQzc4MzI5IC8qIEpTT3B0
aW9uYWxFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQzNzNGMEFEQkE1REUw
MEE0NTU0RCAvKiBSZXNvdXJjZUxvYWRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDBBM0E3MzEx
NDA1QTM5ODAwRkI4RUQzIC8qIFJlc291cmNlTG9hZGVyT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTFBRjUwMzYxNkYxMDBGNjAwOTVCMkU4IC8qIFJlc291cmNlTG9hZGVyVHlwZXMuaCBp
biBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJ
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZWU1MGQ2MmIwY2VjYzk0OWFkM2IyM2IwNTY5NTFiNjU4ODY2NjVkMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRy
eUN1c3RvbS5jcHAKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBH
b29nbGUgTExDLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSlNJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmgiCisKKyNpbmNs
dWRlICJKU05vZGVDdXN0b20uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEpTSW50
ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeTo6dmlzaXRBZGRpdGlvbmFsQ2hpbGRyZW4oSlNDOjpTbG90
VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3Qocm9vdCh3cmFw
cGVkKCkudGFyZ2V0KCkpKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2Vj
dGlvbk9ic2VydmVyLmNwcAppbmRleCA1MWQxYWQyNTNkY2RkMjRmYzdmZDU0NWFhMmVhMGE0N2Fm
NTA5MTA0Li5jMWM5YTg4YWYyMzJiMWUxNTc5ZDg4YzUxMTBkNmRiODNhM2YzZTE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcApAQCAtMTgzLDkgKzE4
Myw5IEBAIHZvaWQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OmRpc2Nvbm5lY3QoKQogICAgICAgICBk
b2N1bWVudC0+cmVtb3ZlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKnRoaXMpOwogfQogCi1WZWN0b3I8
UmVmPEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+PiBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6dGFr
ZVJlY29yZHMoKQorYXV0byBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6dGFrZVJlY29yZHMoKSAtPiBU
YWtlblJlY29yZHMKIHsKLSAgICByZXR1cm4gV1RGTW92ZShtX3F1ZXVlZEVudHJpZXMpOworICAg
IHJldHVybiB7IFdURk1vdmUobV9xdWV1ZWRFbnRyaWVzKSwgV1RGTW92ZShtX3BlbmRpbmdUYXJn
ZXRzKSB9OwogfQogCiB2b2lkIEludGVyc2VjdGlvbk9ic2VydmVyOjp0YXJnZXREZXN0cm95ZWQo
RWxlbWVudCYgdGFyZ2V0KQpAQCAtMjQ0LDIwICsyNDQsMjUgQEAgYm9vbCBJbnRlcnNlY3Rpb25P
YnNlcnZlcjo6Y3JlYXRlVGltZXN0YW1wKERPTUhpZ2hSZXNUaW1lU3RhbXAmIHRpbWVzdGFtcCkg
Y29uc3QKIAogdm9pZCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6YXBwZW5kUXVldWVkRW50cnkoUmVm
PEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+JiYgZW50cnkpCiB7CisgICAgQVNTRVJUKGVudHJ5
LT50YXJnZXQoKSk7CisgICAgbV9wZW5kaW5nVGFyZ2V0cy5hcHBlbmQoKmVudHJ5LT50YXJnZXQo
KSk7CiAgICAgbV9xdWV1ZWRFbnRyaWVzLmFwcGVuZChXVEZNb3ZlKGVudHJ5KSk7CiB9CiAKIHZv
aWQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5vdGlmeSgpCiB7Ci0gICAgaWYgKG1fcXVldWVkRW50
cmllcy5pc0VtcHR5KCkgfHwgIW1fY2FsbGJhY2sgfHwgIW1fY2FsbGJhY2stPmNhbkludm9rZUNh
bGxiYWNrKCkpCisgICAgaWYgKG1fcXVldWVkRW50cmllcy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
QVNTRVJUKG1fcGVuZGluZ1RhcmdldHMuaXNFbXB0eSgpKTsKICAgICAgICAgcmV0dXJuOworICAg
IH0KIAotICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KHRha2VSZWNvcmRzKCksICp0aGlzKTsK
KyAgICBhdXRvIHRha2VuUmVjb3JkcyA9IHRha2VSZWNvcmRzKCk7CisgICAgbV9jYWxsYmFjay0+
aGFuZGxlRXZlbnQoV1RGTW92ZSh0YWtlblJlY29yZHMucmVjb3JkcyksICp0aGlzKTsKIH0KIAog
Ym9vbCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKIHsK
LSAgICByZXR1cm4gaGFzT2JzZXJ2YXRpb25UYXJnZXRzKCkgJiYgdHJhY2tpbmdEb2N1bWVudCgp
OworICAgIHJldHVybiAoaGFzT2JzZXJ2YXRpb25UYXJnZXRzKCkgJiYgdHJhY2tpbmdEb2N1bWVu
dCgpKSB8fCAhbV9xdWV1ZWRFbnRyaWVzLmlzRW1wdHkoKTsKIH0KIAogY29uc3QgY2hhciogSW50
ZXJzZWN0aW9uT2JzZXJ2ZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApAQCAtMjc0LDYg
KzI3OSw4IEBAIHZvaWQgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6OnN0b3AoKQogewogICAgIGRpc2Nv
bm5lY3QoKTsKICAgICBtX2NhbGxiYWNrID0gbnVsbHB0cjsKKyAgICBtX3F1ZXVlZEVudHJpZXMu
Y2xlYXIoKTsKKyAgICBtX3BlbmRpbmdUYXJnZXRzLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9u
T2JzZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaApp
bmRleCAwOTJjNGUxZjUwMGI0OTEyNGM2OTI0ZWU0OTU4ZTExNmRkY2ZkYzYxLi5mYWYzMGZkYTBi
Y2NlY2IxN2FiMGE1NDIzYmYxNzkwY2U5NzRjNjIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9J
bnRlcnNlY3Rpb25PYnNlcnZlci5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgRU5BQkxFKElOVEVS
U0VDVElPTl9PQlNFUlZFUikKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1
ZGUgIkdDUmVhY2hhYmxlUmVmLmgiCiAjaW5jbHVkZSAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxs
YmFjay5oIgogI2luY2x1ZGUgIkludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaCIKICNpbmNsdWRl
ICJMZW5ndGhCb3guaCIKQEAgLTgwLDcgKzgxLDExIEBAIHB1YmxpYzoKICAgICB2b2lkIHVub2Jz
ZXJ2ZShFbGVtZW50Jik7CiAgICAgdm9pZCBkaXNjb25uZWN0KCk7CiAKLSAgICBWZWN0b3I8UmVm
PEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+PiB0YWtlUmVjb3JkcygpOworICAgIHN0cnVjdCBU
YWtlblJlY29yZHMgeworICAgICAgICBWZWN0b3I8UmVmPEludGVyc2VjdGlvbk9ic2VydmVyRW50
cnk+PiByZWNvcmRzOworICAgICAgICBWZWN0b3I8R0NSZWFjaGFibGVSZWY8RWxlbWVudD4+IHBl
bmRpbmdUYXJnZXRzOworICAgIH07CisgICAgVGFrZW5SZWNvcmRzIHRha2VSZWNvcmRzKCk7CiAK
ICAgICB2b2lkIHRhcmdldERlc3Ryb3llZChFbGVtZW50Jik7CiAgICAgYm9vbCBoYXNPYnNlcnZh
dGlvblRhcmdldHMoKSBjb25zdCB7IHJldHVybiBtX29ic2VydmF0aW9uVGFyZ2V0cy5zaXplKCk7
IH0KQEAgLTEwOSw2ICsxMTQsNyBAQCBwcml2YXRlOgogICAgIFZlY3Rvcjxkb3VibGU+IG1fdGhy
ZXNob2xkczsKICAgICBSZWZQdHI8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJDYWxsYmFjaz4gbV9jYWxs
YmFjazsKICAgICBWZWN0b3I8RWxlbWVudCo+IG1fb2JzZXJ2YXRpb25UYXJnZXRzOworICAgIFZl
Y3RvcjxHQ1JlYWNoYWJsZVJlZjxFbGVtZW50Pj4gbV9wZW5kaW5nVGFyZ2V0czsKICAgICBWZWN0
b3I8UmVmPEludGVyc2VjdGlvbk9ic2VydmVyRW50cnk+PiBtX3F1ZXVlZEVudHJpZXM7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaWRsCmluZGV4IGFl
ODhhNmUyMzJmYmE5YmE3ZmJiODVlZTdhYTY5Y2UwZjBmNDQxYWEuLjJmM2ExNDNhOTJiYzUxOTVl
NDZmOGQyNDVlMjczMTJhMTRkZTRhNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
SW50ZXJzZWN0aW9uT2JzZXJ2ZXIuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIuaWRsCkBAIC00MCw3ICs0MCw3IEBACiAgICAgdm9pZCBvYnNlcnZlKEVs
ZW1lbnQgdGFyZ2V0KTsKICAgICB2b2lkIHVub2JzZXJ2ZShFbGVtZW50IHRhcmdldCk7CiAgICAg
dm9pZCBkaXNjb25uZWN0KCk7Ci0gICAgc2VxdWVuY2U8SW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRy
eT4gdGFrZVJlY29yZHMoKTsKKyAgICBbUmVzdWx0RmllbGQ9cmVjb3Jkc10gc2VxdWVuY2U8SW50
ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeT4gdGFrZVJlY29yZHMoKTsKIH07CiAKIFsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeS5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmgKaW5kZXggN2M0YzBi
NmVmNDBiNGEyMmQyMmI5MzgxNjEwZGUzNzZkMWM1NmZjOS4uYzNlZmYxODc0MjJkODFiMDUxMmJj
NTUwODQ0YWJkNDRlNDI4M2ZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRl
cnNlY3Rpb25PYnNlcnZlckVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9JbnRlcnNl
Y3Rpb25PYnNlcnZlckVudHJ5LmgKQEAgLTYwLDcgKzYwLDcgQEAgcHVibGljOgogICAgIFJlZlB0
cjxET01SZWN0UmVhZE9ubHk+IHJvb3RCb3VuZHMoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RCb3Vu
ZHM7IH0KICAgICBSZWZQdHI8RE9NUmVjdFJlYWRPbmx5PiBib3VuZGluZ0NsaWVudFJlY3QoKSBj
b25zdCB7IHJldHVybiBtX2JvdW5kaW5nQ2xpZW50UmVjdDsgfQogICAgIFJlZlB0cjxET01SZWN0
UmVhZE9ubHk+IGludGVyc2VjdGlvblJlY3QoKSBjb25zdCB7IHJldHVybiBtX2ludGVyc2VjdGlv
blJlY3Q7IH0KLSAgICBSZWZQdHI8RWxlbWVudD4gdGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV90
YXJnZXQ7IH0KKyAgICBFbGVtZW50KiB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldC5n
ZXQoKTsgfQogCiAgICAgYm9vbCBpc0ludGVyc2VjdGluZygpIGNvbnN0IHsgcmV0dXJuIG1faXNJ
bnRlcnNlY3Rpbmc7IH0KICAgICBkb3VibGUgaW50ZXJzZWN0aW9uUmF0aW8oKSBjb25zdCB7IHJl
dHVybiBtX2ludGVyc2VjdGlvblJhdGlvOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ludGVyc2VjdGlvbk9ic2VydmVyRW50cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9J
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LmlkbAppbmRleCA0NzYxMmQwYTc5ZDA5NmNhMzNiZTUz
NGZjY2Q0OGRhNGJmZDNiNzNhLi4xODdkZjVjZGU3Yzg3OWIxZDdkZGJjY2MwM2MzY2FhNGFkNjk3
MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVy
RW50cnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXJF
bnRyeS5pZGwKQEAgLTMxLDcgKzMxLDggQEAgdHlwZWRlZiBkb3VibGUgRE9NSGlnaFJlc1RpbWVT
dGFtcDsKICAgICBDb25kaXRpb25hbD1JTlRFUlNFQ1RJT05fT0JTRVJWRVIsCiAgICAgQ29uc3Ry
dWN0b3IoSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeUluaXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJF
bnRyeUluaXQpLAogICAgIEltcGxlbWVudGF0aW9uTGFja3NWVGFibGUsCi0gICAgRW5hYmxlZEF0
UnVudGltZT1JbnRlcnNlY3Rpb25PYnNlcnZlcgorICAgIEVuYWJsZWRBdFJ1bnRpbWU9SW50ZXJz
ZWN0aW9uT2JzZXJ2ZXIsCisgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCiBdIGludGVyZmFjZSBJ
bnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NSGln
aFJlc1RpbWVTdGFtcCB0aW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01SZWN0UmVhZE9u
bHk/IHJvb3RCb3VuZHM7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggY2UyNjdkMmFjNDI5YWQyZjYzMWMyNGUyNGE4NWZiMGY5
YWU3ODNlZC4uNDFlOWU3ZWIzYmIwNDU0NTI3NmEzYTBiMDUwNDIwMjY2MjQzYzZiNSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIzIEBACisyMDE4LTExLTA2ICBBbGkgSnVtYSAgPGFqdW1hQGNocm9taXVtLm9y
Zz4KKworICAgICAgICBJbnRlcnNlY3Rpb25PYnNlcnZlciBkb2Vzbid0IGtlZXAgdGFyZ2V0J3Mg
SlMgd3JhcHBlciBhbGl2ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkwMjM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisg
ICAgICAgIEFkZCB0ZXN0IGNvdmVyYWdlLgorCisgICAgICAgIFVwZGF0ZSB0ZXN0IHRoYXQgZGVw
ZW5kcyBvbiBhIHRhcmdldCBnZXR0aW5nIEdDJ2QgdG8gY2FsbCB0YWtlUmVjb3JkcygpIHNpbmNl
CisgICAgICAgIHRhcmdldHMgd2l0aCBwZW5kaW5nIGVudHJpZXMgYXJlIG5vIGxvZ25lciBHQydk
LgorCisgICAgICAgICogaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZl
ci1lbnRyeS1rZWVwcy1qcy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2
ZXItZW50cnkta2VlcHMtanMtd3JhcHBlci1vZi10YXJnZXQtYWxpdmUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1rZWVw
cy1qcy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIta2VlcHMtanMt
d3JhcHBlci1vZi10YXJnZXQtYWxpdmUuaHRtbDogQWRkZWQuCisgICAgICAgICogaW50ZXJzZWN0
aW9uLW9ic2VydmVyL3Jvb3QtZWxlbWVudC1kZWxldGVkLmh0bWw6CisgICAgICAgICogaW50ZXJz
ZWN0aW9uLW9ic2VydmVyL3RhcmdldC1kZWxldGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaW50ZXJzZWN0aW9uLW9ic2VydmVyL3RhcmdldC1kZWxldGVkLmh0bWw6IEFkZGVkLgor
CiAyMDE4LTExLTA2ICBUaGliYXVsdCBTYXVuaWVyICA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1N0cmVhbWVyXVtXZWJSVENdIEltcGxlbWVudCBibGFjayBmcmFtZSBnZW5lcmF0
aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJz
ZWN0aW9uLW9ic2VydmVyLWVudHJ5LWtlZXBzLWpzLXdyYXBwZXItb2YtdGFyZ2V0LWFsaXZlLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rp
b24tb2JzZXJ2ZXItZW50cnkta2VlcHMtanMtd3JhcHBlci1vZi10YXJnZXQtYWxpdmUtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjZkOTc0ODBhOTZlNGEyYjRkNWI3MzQzNDRmYzQyZmY4ZjI2NTJm
NWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIv
aW50ZXJzZWN0aW9uLW9ic2VydmVyLWVudHJ5LWtlZXBzLWpzLXdyYXBwZXItb2YtdGFyZ2V0LWFs
aXZlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDggQEAKK1RoaXMgdGVzdHMgdGhhdCBKUyB3cmFw
cGVycyBvZiB0YXJnZXRzIGluIGFuIEludGVyc2VjdGlvbk9ic2VydmVyRW50cnkgZG8gbm90IGdl
dCBjb2xsZWN0ZWQuCisKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKK1BBU1MKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZl
ci1lbnRyeS1rZWVwcy1qcy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS5odG1sIGIvTGF5b3V0VGVz
dHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1lbnRyeS1rZWVw
cy1qcy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZjYzMzNWU3YTgy
ZGE5YTZhOWI0MzFlZDBjZThhZTY3ZDIzNzBjZTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWVudHJ5LWtl
ZXBzLWpzLXdyYXBwZXItb2YtdGFyZ2V0LWFsaXZlLmh0bWwKQEAgLTAsMCArMSw2MCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorPHA+VGhpcyB0ZXN0cyB0aGF0IEpTIHdyYXBw
ZXJzIG9mIHRhcmdldHMgaW4gYW4gSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBkbyBub3QgZ2V0
IGNvbGxlY3RlZC48L3A+Cis8cHJlIGlkPSJsb2ciPjwvcHJlPgorPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9nYy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitpZiAod2luZG93LnRlc3RSdW5u
ZXIpCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisKK2NvbnN0IHRhcmdldENvdW50ID0g
NTsKK2NvbnN0IGl0ZXJhdGlvbkNvdW50ID0gNTsKKworYXN5bmMgZnVuY3Rpb24gb2JzZXJ2ZSgp
IHsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRhcmdldENvdW50OyArK2kpIHsKKyAgICAgICAg
bGV0IHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgICAgICB0YXJn
ZXQubXlTdGF0ZSA9ICdsaXZlJzsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0
YXJnZXQpOworICAgIH0KKworICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewor
ICAgICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlbnRyaWVz
ID0+IHsKKyAgICAgICAgICAgIHJlc29sdmUoZW50cmllcyk7CisgICAgICAgICAgICBvYnNlcnZl
ci5kaXNjb25uZWN0KCk7CisgICAgICAgIH0pOworICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVj
dG9yQWxsKCdkaXYnKS5mb3JFYWNoKHRhcmdldCA9PiB7IG9ic2VydmVyLm9ic2VydmUodGFyZ2V0
KTsgfSk7CisgICAgfSk7Cit9CisKK2Z1bmN0aW9uIGNoZWNrKGVudHJpZXMpIHsKKyAgICBsZXQg
ZGVhZENvdW50ID0gMDsKKyAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHsKKyAgICAg
ICAgaWYgKGVudHJ5LnRhcmdldC5teVN0YXRlICE9ICdsaXZlJykKKyAgICAgICAgICAgIGRlYWRD
b3VudCsrOworICAgIH0KKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJykudGV4dENv
bnRlbnQgKz0gKGRlYWRDb3VudCA/IGBGQUlMIC0gJHtkZWFkQ291bnR9IHRhcmdldHMgbG9zdCBK
UyB3cmFwcGVyc2AgOiAnUEFTUycpICsgJ1xuJzsKK30KKworYXN5bmMgZnVuY3Rpb24gcnVuQWxs
KCkgeworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisKKyAgICBmb3IgKGxldCBqID0gMDsgaiA8IGl0ZXJhdGlvbkNvdW50OyAr
K2opIHsKKyAgICAgICAgY29uc3QgZW50cmllcyA9IGF3YWl0IG9ic2VydmUoKTsKKyAgICAgICAg
ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGl2JykuZm9yRWFjaCh0YXJnZXQgPT4geyB0YXJn
ZXQucmVtb3ZlKCk7IH0pOworICAgICAgICBhd2FpdCBQcm9taXNlLnJlc29sdmUoKTsKKyAgICAg
ICAgZ2MoKTsKKyAgICAgICAgY2hlY2soZW50cmllcyk7CisgICAgfQorCisgICAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKQorICAgICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworcnVu
QWxsKCk7CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1rZWVwcy1q
cy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnRl
cnNlY3Rpb24tb2JzZXJ2ZXIvaW50ZXJzZWN0aW9uLW9ic2VydmVyLWtlZXBzLWpzLXdyYXBwZXIt
b2YtdGFyZ2V0LWFsaXZlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmY4NDU2OTQ3MzdmYjM0
YWViZjYxNmE1YjIwNDdhYmRlYzJiYWRlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1rZWVwcy1qcy13cmFw
cGVyLW9mLXRhcmdldC1hbGl2ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUaGlzIHRl
c3RzIHRoYXQgSlMgd3JhcHBlcnMgb2YgdGFyZ2V0cyBlbnF1ZXVlZCB0byBiZSBkZWxpdmVyZWQg
dG8gYW4gaW50ZXJzZWN0aW9uIG9ic2VydmVyIGRvIG5vdCBnZXQgY29sbGVjdGVkLgorCitQQVNT
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNl
Y3Rpb24tb2JzZXJ2ZXIta2VlcHMtanMtd3JhcHBlci1vZi10YXJnZXQtYWxpdmUuaHRtbCBiL0xh
eW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIta2Vl
cHMtanMtd3JhcHBlci1vZi10YXJnZXQtYWxpdmUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMjFjOWZjNTdk
ZTc1M2UxMWM3YzkwOGE5MTRhNDFiYmIxZWY0YWMwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2ludGVyc2VjdGlvbi1vYnNlcnZlci1rZWVwcy1q
cy13cmFwcGVyLW9mLXRhcmdldC1hbGl2ZS5odG1sCkBAIC0wLDAgKzEsNTUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8Ym9keT4KKzxwPlRoaXMgdGVzdHMgdGhhdCBKUyB3cmFwcGVycyBv
ZiB0YXJnZXRzIGVucXVldWVkIHRvIGJlIGRlbGl2ZXJlZCB0byBhbiBpbnRlcnNlY3Rpb24gb2Jz
ZXJ2ZXIgZG8gbm90IGdldCBjb2xsZWN0ZWQuPC9wPgorPHByZSBpZD0ibG9nIj48L3ByZT4KKzxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvZ2MuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKworaWYg
KHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitjb25z
dCB0YXJnZXRDb3VudCA9IDU7Citjb25zdCBpdGVyYXRpb25Db3VudCA9IDU7Cit2YXIgZGVhZENv
dW50ID0gMDsKKworYXN5bmMgZnVuY3Rpb24gcnVuQWxsKCkgeworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisKKyAgICBmb3Ig
KGxldCBpID0gMDsgaSA8IGl0ZXJhdGlvbkNvdW50OyArK2kpIHsKKyAgICAgICAgcnVuVGVzdCgp
OworICAgICAgICBnYygpOworICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4g
cmVxdWVzdEFuaW1hdGlvbkZyYW1lKHJlc29sdmUpKQorICAgIH0KKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdsb2cnKS50ZXh0Q29udGVudCA9IChkZWFkQ291bnQgPyBgRkFJTCAtICR7
ZGVhZENvdW50fSB0YXJnZXRzIGxvc3QgSlMgd3JhcHBlcnNgIDogJ1BBU1MnKSArICdcbic7CisK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgeworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3JBbGwoJ2RpdicpLmZvckVhY2godGFyZ2V0ID0+IHsgdGFyZ2V0LnJlbW92ZSgpOyB9KTsKKwor
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0Q291bnQ7ICsraSkgeworICAgICAgICBsZXQg
dGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIHRhcmdldC5t
eVN0YXRlID0gJ2xpdmUnOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRhcmdl
dCk7CisgICAgfQorCisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGl2JykuZm9yRWFj
aCh0YXJnZXQgPT4geyBvYnNlcnZlci5vYnNlcnZlKHRhcmdldCk7IH0pOworfQorCitjb25zdCBv
YnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlbnRyaWVzID0+IHsKKyAgICBmb3Ig
KGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHsKKyAgICAgICAgaWYgKGVudHJ5LnRhcmdldC5teVN0
YXRlICE9ICdsaXZlJykKKyAgICAgICAgICAgIGRlYWRDb3VudCsrOworICAgIH0KK30pOworCity
dW5BbGwoKTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvcm9vdC1lbGVtZW50LWRlbGV0ZWQuaHRtbCBi
L0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9yb290LWVsZW1lbnQtZGVsZXRlZC5o
dG1sCmluZGV4IGMzNTQ5M2E2ZjJmOTgxNGIwZjBlZTA5NWIzYTQ3ZDMzZThmNWViZGYuLjRjNGRl
NTg2ZjJkMzliODZmNTI3MjZhODgxYzlhNDMzNzNkZTFiNjQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9yb290LWVsZW1lbnQtZGVsZXRlZC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci9yb290LWVsZW1lbnQtZGVsZXRlZC5o
dG1sCkBAIC0yMCw2ICsyMCw3IEBACiAgICAgICAgIHJvb3QgPSBudWxsOwogICAgICAgICB0YXJn
ZXQgPSBudWxsOwogICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodC5zdGVwX2Z1bmNfZG9u
ZShmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIG9ic2VydmVyLnRha2VSZWNvcmRzKCk7CiAgICAg
ICAgICAgICBHQ0NvbnRyb2xsZXIuY29sbGVjdCgpOwogICAgICAgICAgICAgYXNzZXJ0X2VxdWFs
cyhvYnNlcnZlci5yb290LCBudWxsLCAnT2JzZXJ2ZXIgaGFzIG51bGwgcm9vdCBhZnRlciByb290
IGVsZW1lbnQgaXMgZGVzdHJveWVkJyk7CiAgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGludGVy
bmFscy5udW1iZXJPZkludGVyc2VjdGlvbk9ic2VydmVycyhkb2N1bWVudCksIDApOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL3RhcmdldC1kZWxldGVkLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlvbi1vYnNlcnZlci90YXJnZXQtZGVs
ZXRlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjEyOGY3ZDBkOTM3ZGExYTFiMzk3ZmMyY2Zi
NzhmZDFmZDFkZDU3MAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2ludGVyc2VjdGlv
bi1vYnNlcnZlci90YXJnZXQtZGVsZXRlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACisK
K1BBU1MgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgZG9lc24ndCBrZWVwIHVucmVhY2hhYmxlIHRhcmdl
dCBhbGl2ZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW50ZXJzZWN0aW9uLW9ic2VydmVy
L3RhcmdldC1kZWxldGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIv
dGFyZ2V0LWRlbGV0ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jNzAwNjEwNjdmZjQ3Njc3NmYwMjRiMWI0
ZTFmYmE1YzU2NzE5MGFjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW50ZXJzZWN0
aW9uLW9ic2VydmVyL3RhcmdldC1kZWxldGVkLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NU
WVBFIGh0bWw+PCEtLSB3ZWJraXQtdGVzdC1ydW5uZXIgWyBlbmFibGVJbnRlcnNlY3Rpb25PYnNl
cnZlcj10cnVlIF0gLS0+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2djLmpzIj48
L3NjcmlwdD4KKzxib2R5PgorCis8ZGl2IGlkPSJ0YXJnZXQiIHN0eWxlPSJ3aWR0aDogMTAwcHg7
IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQtY29sb3I6IGdyZWVuIj48L2Rpdj4KKworPHNjcmlw
dD4KKyAgICBhc3luY190ZXN0KGZ1bmN0aW9uKHQpIHsKKyAgICAgICAgbGV0IG9ic2VydmVyID0g
bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKGZ1bmN0aW9uKGVudHJpZXMpIHsKKyAgICAgICAgICAg
IGlmIChlbnRyaWVzWzBdLmlzSW50ZXJzZWN0aW5nKSB7CisgICAgICAgICAgICAgICAgZW50cmll
c1swXS50YXJnZXQucmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZy
YW1lKHQuc3RlcF9mdW5jX2RvbmUoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGdj
KCk7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoaW50ZXJuYWxzLm51bWJlck9m
SW50ZXJzZWN0aW9uT2JzZXJ2ZXJzKGRvY3VtZW50KSwgMCk7CisgICAgICAgICAgICAgICAgfSkp
OworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGFyZ2V0IikpOworICAgICAgICBhc3NlcnRfZXF1YWxz
KGludGVybmFscy5udW1iZXJPZkludGVyc2VjdGlvbk9ic2VydmVycyhkb2N1bWVudCksIDEpOwor
ICAgIH0sICJJbnRlcnNlY3Rpb25PYnNlcnZlciBkb2Vzbid0IGtlZXAgdW5yZWFjaGFibGUgdGFy
Z2V0IGFsaXZlIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>