<?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>134279</bug_id>
          
          <creation_ts>2014-06-24 16:07:45 -0700</creation_ts>
          <short_desc>[iOS]: WK2 Inspector Node Search</short_desc>
          <delta_ts>2014-06-25 16:13:54 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>benjamin</cc>
    
    <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>sergio</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1018152</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-24 16:07:45 -0700</bug_when>
    <thetext>Web Inspector&apos;s &quot;Inspect&quot; button for node search doesn&apos;t work in WK2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018153</commentid>
    <comment_count>1</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-24 16:08:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/16691017&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018156</commentid>
    <comment_count>2</comment_count>
      <attachid>233759</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-24 16:17:35 -0700</bug_when>
    <thetext>Created attachment 233759
[PATCH] Proposed Fix

Patch probably won&apos;t apply because it is on top of other patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018182</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-24 17:12:36 -0700</bug_when>
    <thetext>I have an even better patch in progress that will allow users to scrub their finger across the page, updating the highlight, and finally inspecting the node when they release their finger. I&apos;ll clean that up and test edge cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018204</commentid>
    <comment_count>4</comment_count>
      <attachid>233771</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-24 18:01:18 -0700</bug_when>
    <thetext>Created attachment 233771
[PATCH] Proposed Fix (With Gesture)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018210</commentid>
    <comment_count>5</comment_count>
      <attachid>233771</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-24 18:30:19 -0700</bug_when>
    <thetext>Comment on attachment 233771
[PATCH] Proposed Fix (With Gesture)

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

Some small comments below, I would like to see the V2.

There is one more thing you need to do: handle crash correctly. You need to reset into the baseline state when that happen.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm:661
&gt; +- (void)_enableInspectorNodeSearch
&gt; +{
&gt; +    [_contentView _enableInspectorNodeSearch];
&gt; +}
&gt; +
&gt; +- (void)_disableInspectorNodeSearch
&gt; +{
&gt; +    [_contentView _disableInspectorNodeSearch];
&gt; +}

You should not do this here. The page client can talk to either WKWebView or WKContentView.
All the &quot;document related&quot; things go to WKContentView, all the &quot;scrollview related&quot; things go to WKWebView.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebViewInternal.h:100
&gt; +- (void)_enableInspectorNodeSearch;
&gt; +- (void)_disableInspectorNodeSearch;

This should be directly on the WKContentViewInteraction&apos;s interface.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:848
&gt; +    void inspectorNodeSearchMoveToPosition(const WebCore::FloatPoint&amp;);

Move-&gt;Moved?

&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:351
&gt; +    EnableInspectorNodeSearch()
&gt; +    DisableInspectorNodeSearch()

It is rather funny we are being told that from the WebProcess. Nothing wrong with that though.

&gt; Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm:515
&gt; +{
&gt; +    [m_webView _enableInspectorNodeSearch];
&gt; +}
&gt; +
&gt; +void PageClientImpl::disableInspectorNodeSearch()
&gt; +{
&gt; +    [m_webView _disableInspectorNodeSearch];

Here you can access m_contentView.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:333
&gt; +    _inspectorNodeSearchGestureRecognizer = [[WKInspectorNodeSearchGestureRecognizer alloc] initWithTarget:self action:@selector(_inspectorNodeSearchRecognized:)];

You forgot the adoptNS() here.

&gt; Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm:432
&gt; +    case UIGestureRecognizerStateEnded:
&gt; +    default: // To ensure we turn off node search.
&gt; +        _page-&gt;inspectorNodeSearchEndedAtPosition(point);
&gt; +        break;

You should also handle cancel correctly here. Send a message clearing the NodeSearch in the WebProcess.

&gt; Source/WebKit2/UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.mm:51
&gt; +    for (UITouch *touch in touches) {
&gt; +        if (touch == _touch.get()) {
&gt; +            self.state = newState;
&gt; +            break;
&gt; +        }
&gt; +    }

You do not need to iterate over all the object to get the target touch, UIKit gives us a NSSet :)

&gt; Source/WebKit2/UIProcess/ios/WKInspectorNodeSearchGestureRecognizer.mm:77
&gt; +    [self _processTouches:touches state:UIGestureRecognizerStateEnded];

I think you should cancel the gesture in that case.

&gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:584
&gt; +    WKBeginObservingContentChanges(true);

I am pretty sure you don&apos;t want that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018383</commentid>
    <comment_count>6</comment_count>
      <attachid>233829</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-25 12:29:46 -0700</bug_when>
    <thetext>Created attachment 233829
[PATCH] Addressed Review Comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018384</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-25 12:30:42 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm:584
&gt; &gt; +    WKBeginObservingContentChanges(true);
&gt; 
&gt; I am pretty sure you don&apos;t want that.

Oops I missed this comment. Let me look into that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018410</commentid>
    <comment_count>8</comment_count>
      <attachid>233837</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-06-25 14:32:04 -0700</bug_when>
    <thetext>Created attachment 233837
[PATCH] Addressed Review Comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018436</commentid>
    <comment_count>9</comment_count>
      <attachid>233837</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-25 16:13:49 -0700</bug_when>
    <thetext>Comment on attachment 233837
[PATCH] Addressed Review Comments

Clearing flags on attachment: 233837

Committed r170445: &lt;http://trac.webkit.org/changeset/170445&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1018437</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-25 16:13:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233759</attachid>
            <date>2014-06-24 16:17:35 -0700</date>
            <delta_ts>2014-06-24 18:01:18 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>node-search.patch</filename>
            <type>text/plain</type>
            <size>18002</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0MjgzM2Q3Li4zZTlmOWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUg
QEAKIDIwMTQtMDYtMjQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAor
ICAgICAgICBbaU9TXTogV0syIEluc3BlY3RvciBOb2RlIFNlYXJjaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0Mjc5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgRXhwb3J0IE5vZGU6Omluc3BlY3QgZm9yIFdLMi4KKworMjAxNC0wNi0yNCAgSm9zZXBoIFBl
Y29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCiAgICAgICAgIFtpT1NdOiBXSzIgSW5zcGVj
dG9yIE5vZGUgSGlnaGxpZ2h0aW5nCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzQyNTcKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCAwOTRkYjA4Li5k
NmZiZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMzE1MCw2ICszMTUwLDcgQEAgX19aTks3
V2ViQ29yZTlET01XaW5kb3c4ZG9jdW1lbnRFdgogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikgJiYg
UExBVEZPUk0oSU9TKQogX19aTjdXZWJDb3JlMTZmaW5kSW50ZXJzZWN0aW9uRVJLTlNfMTBGbG9h
dFBvaW50RVMyX1MyX1MyX1JTMF8KK19fWk43V2ViQ29yZTROb2RlN2luc3BlY3RFdgogX19aTks3
V2ViQ29yZTlGbG9hdFF1YWQxMmNvbnRhaW5zUXVhZEVSS1MwXwogX19aTks3V2ViQ29yZTlGbG9h
dFF1YWQxM2NvbnRhaW5zUG9pbnRFUktOU18xMEZsb2F0UG9pbnRFCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCAxMDdlOTQzLi4zZWM2NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjcgQEAKIDIwMTQt
MDYtMjQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAorICAgICAgICBb
aU9TXTogV0syIEluc3BlY3RvciBOb2RlIFNlYXJjaAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0Mjc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0
aW9uLm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaXNhYmxlSW5zcGVjdG9yTm9kZVNl
YXJjaF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9lbmFibGVJbnNwZWN0b3JOb2RlU2Vh
cmNoXSk6CisgICAgICAgIFRvZ2dsZSB0aGUgaXZhci4gQ2FuY2VsIGFueSBleGlzdGluZyBpbnRl
cmFjdGlvbgorICAgICAgICB3aGljaCBtYXkgaGF2ZSBiZWVuIHNob3dpbmcgYSBub2RlIGhpZ2hs
aWdodC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGhhc1NlbGVjdGFibGVQb3NpdGlvbkF0
UG9pbnQ6XSk6CisgICAgICAgIERpc2FsbG93IHNlbGVjdGlvbiBkdXJpbmcgbm9kZSBzZWFyY2gu
CisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBzaG91bGRJZ25vcmVXZWJUb3VjaF0pOgorICAg
ICAgICBEaXNhbGxvdyB3ZWIgdG91Y2hlcyBkdXJpbmcgbm9kZSBzZWFyY2guCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfbG9uZ1ByZXNzUmVjb2duaXplZDpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfc2luZ2xlVGFwRGlkUmVzZXQ6XSk6CisgICAgICAgICgtW1dLQ29udGVudFZp
ZXcgX3NpbmdsZVRhcENvbW1pdGVkOl0pOgorICAgICAgICBCYWlsIGVhcmx5IGZvciBtb3N0IGdl
c3R1cmUgcmVjb2duaXplcnMgZHVyaW5nIG5vZGUgc2VhcmNoLgorICAgICAgICAKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfc2luZ2xlVGFwUmVjb2duaXplZDpdKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfaGlnaGxpZ2h0TG9uZ1ByZXNzUmVjb2duaXplZDpdKToKKyAgICAgICAgV2hl
biBub2RlIHNlYXJjaGluZywgZm9yIHRhcCBnZXN0dXJlIHJlY29nbml6ZXJzIHRoYXQgc3VjY2Vl
ZAorICAgICAgICBzZW5kIHRoZSBXZWJQcm9jZXNzIGEgQ29tbWl0VGFwQXRQb3NpdGlvbiBtZXNz
YWdlIHRvIGluc3BlY3QKKyAgICAgICAgYXQgdGhhdCBsb2NhdGlvbi4KKworICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6aW5zcGVjdG9yTm9kZVNlYXJjaENvbW1pdFRhcEF0UG9zaXRpb24pOgorICAgICAgICBX
aGVuIG5vZGUgc2VhcmNoIGlzIGVuYWJsZWQsIGhhbmRsZSBhIHRhcCBhdCBhIHBvc2l0aW9uCisg
ICAgICAgIGJ5IGluc3BlY3RpbmcgdGhlIGRlZXBlc3Qgbm9kZSBhdCB0aGF0IGxvY2F0aW9uLgor
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2VuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2hdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9kaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaF0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjplbmFibGVJ
bnNwZWN0b3JOb2RlU2VhcmNoKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRp
c2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNwZWN0b3JO
b2RlU2VhcmNoQ29tbWl0VGFwQXRQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6ZW5hYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6ZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2gpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjplbmFibGVJbnNw
ZWN0b3JOb2RlU2VhcmNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlzYWJsZUluc3Bl
Y3Rvck5vZGVTZWFyY2gpOgorICAgICAgICBQYXNzIHRoZSBlbmFibGUvZGlzYWJsZSBvZiBpbnNw
ZWN0b3Igbm9kZSBzZWFyY2ggZnJvbSB0aGUgV2ViUHJvY2VzcworICAgICAgICB0byBXS0NvbnRl
bnRWaWV3IChXS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24pIGluIHRoZSBVSVByb2Nlc3MuCisKKzIw
MTQtMDYtMjQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwogICAgICAg
ICBbaU9TXTogV0syIEluc3BlY3RvciBOb2RlIEhpZ2hsaWdodGluZwogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0MjU3CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggMGFmZjVmZC4uMDYx
YjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KQEAgLTY0NSw2ICs2NDUsMTYgQEAgc3RhdGljIENHU2l6ZSByb3VuZFNjcm9sbFZpZXdD
b250ZW50U2l6ZShjb25zdCBXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSwgQ0dTaXoKICAgICBb
X2NvbnRlbnRWaWV3IF9oaWRlSW5zcGVjdG9ySGlnaGxpZ2h0XTsKIH0KIAorLSAodm9pZClfZW5h
YmxlSW5zcGVjdG9yTm9kZVNlYXJjaAoreworICAgIFtfY29udGVudFZpZXcgX2VuYWJsZUluc3Bl
Y3Rvck5vZGVTZWFyY2hdOworfQorCistICh2b2lkKV9kaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJj
aAoreworICAgIFtfY29udGVudFZpZXcgX2Rpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoXTsKK30K
Kwogc3RhdGljIENHRmxvYXQgY29udGVudFpvb21TY2FsZShXS1dlYlZpZXcqIHdlYlZpZXcpCiB7
CiAgICAgVUlWaWV3ICp6b29tVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCBkZWYwYjdkLi4zNDhiMGJh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdJbnRlcm5hbC5oCkBAIC05Myw2ICs5Myw5IEBAIHN0cnVjdCBWaWV3U25hcHNob3Q7CiAK
IC0gKHZvaWQpX3Nob3dJbnNwZWN0b3JIaWdobGlnaHQ6KGNvbnN0IFdlYkNvcmU6OkhpZ2hsaWdo
dCYpaGlnaGxpZ2h0OwogLSAodm9pZClfaGlkZUluc3BlY3RvckhpZ2hsaWdodDsKKworLSAodm9p
ZClfZW5hYmxlSW5zcGVjdG9yTm9kZVNlYXJjaDsKKy0gKHZvaWQpX2Rpc2FibGVJbnNwZWN0b3JO
b2RlU2VhcmNoOwogI2VuZGlmCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVu
dC5oCmluZGV4IDQ4MjQ2M2IuLjIzNTdjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VD
bGllbnQuaApAQCAtMjc0LDYgKzI3NCw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBz
aG93SW5zcGVjdG9ySW5kaWNhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUluc3Bl
Y3RvckluZGljYXRpb24oKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5zcGVjdG9y
Tm9kZVNlYXJjaCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUluc3BlY3Rvck5vZGVT
ZWFyY2goKSA9IDA7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmgKaW5kZXggN2QzN2IzNS4uNjNjOTAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODQ2LDYgKzg0Niw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNhbmNlbFBvdGVudGlhbFRhcCgpOwogICAgIHZvaWQgdGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiwgdWludDY0X3QmIHJlcXVlc3RJRCk7CiAKKyAgICB2
b2lkIGluc3BlY3Rvck5vZGVTZWFyY2hDb21taXRUYXBBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmKTsKKwogICAgIHZvaWQgYmx1ckFzc2lzdGVkTm9kZSgpOwogI2VuZGlmCiAK
QEAgLTEyMDksNiArMTIxMSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNob3dJbnNwZWN0b3JJ
bmRpY2F0aW9uKCk7CiAgICAgdm9pZCBoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpOworCisgICAg
dm9pZCBlbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7CisgICAgdm9pZCBkaXNhYmxlSW5zcGVj
dG9yTm9kZVNlYXJjaCgpOwogI2VuZGlmCiAKICAgICB2b2lkIG5vdGlmeVJldmVhbGVkU2VsZWN0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBhMDk0NDIwLi4wYzBmZGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTM0MSw2ICszNDEsOSBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgU2hvd0luc3BlY3RvckluZGljYXRpb24o
KQogICAgIEhpZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCkKKworICAgIEVuYWJsZUluc3BlY3Rvck5v
ZGVTZWFyY2goKQorICAgIERpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkKICNlbmRpZgogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAppbmRleCBiMTA3ZTc0Li5jZGQ2NzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMzUsNiArMTM1LDkgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93SW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwor
CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKSBvdmVycmlkZTsK
ICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHpvb21Ub1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0
LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNjYWxlKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmlu
ZGV4IGRkYmMzYWQuLjQ3ODM3ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNDkzLDYgKzQ5MywxNiBAQCB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpCiB7CiAgICAgW21fd2ViVmlldyBf
aGlkZUluc3BlY3RvckluZGljYXRpb25dOwogfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjplbmFi
bGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkKK3sKKyAgICBbbV93ZWJWaWV3IF9lbmFibGVJbnNwZWN0
b3JOb2RlU2VhcmNoXTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlzYWJsZUluc3BlY3Rv
ck5vZGVTZWFyY2goKQoreworICAgIFttX3dlYlZpZXcgX2Rpc2FibGVJbnNwZWN0b3JOb2RlU2Vh
cmNoXTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKaW5kZXggZjRiMjQ4Ny4uYzBjNDBlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC0xMzYsNiArMTM2
LDcgQEAgc3RydWN0IFdLQXV0b0NvcnJlY3Rpb25EYXRhIHsKICAgICBCT09MIF9wb3RlbnRpYWxU
YXBJblByb2dyZXNzOwogICAgIEJPT0wgX3NlbGVjdGlvbk5lZWRzVXBkYXRlOwogICAgIEJPT0wg
X3VzaW5nR2VzdHVyZUZvclNlbGVjdGlvbjsKKyAgICBCT09MIF9pbnNwZWN0b3JOb2RlU2VhcmNo
RW5hYmxlZDsKIH0KIAogQGVuZApAQCAtMTc2LDYgKzE3Nyw4IEBAIHN0cnVjdCBXS0F1dG9Db3Jy
ZWN0aW9uRGF0YSB7CiAtICh2b2lkKV9kaWRIYW5kbGVLZXlFdmVudDooV2ViSU9TRXZlbnQgKill
dmVudDsKIC0gKFZlY3RvcjxXZWJLaXQ6OldLT3B0aW9uSXRlbT4mKSBhc3Npc3RlZE5vZGVTZWxl
Y3RPcHRpb25zOwogLSAodm9pZClfdXBkYXRlVW5zY2FsZWRWaWV3OworLSAodm9pZClfZW5hYmxl
SW5zcGVjdG9yTm9kZVNlYXJjaDsKKy0gKHZvaWQpX2Rpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNo
OwogQGVuZAogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQppbmRleCBh
OWI0OGExLi5jODdjNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQpAQCAtMjk4LDYgKzI5OCwxNyBAQCBz
dGF0aWMgY29uc3QgZmxvYXQgdGFwQW5kSG9sZERlbGF5ICA9IDAuNzU7CiAgICAgW3NlbGYgX3Vw
ZGF0ZUNoYW5nZWRTZWxlY3Rpb25dOwogfQogCistICh2b2lkKV9lbmFibGVJbnNwZWN0b3JOb2Rl
U2VhcmNoCit7CisgICAgX2luc3BlY3Rvck5vZGVTZWFyY2hFbmFibGVkID0gWUVTOworICAgIFtz
ZWxmIF9jYW5jZWxJbnRlcmFjdGlvbl07Cit9CisKKy0gKHZvaWQpX2Rpc2FibGVJbnNwZWN0b3JO
b2RlU2VhcmNoCit7CisgICAgX2luc3BlY3Rvck5vZGVTZWFyY2hFbmFibGVkID0gTk87Cit9CisK
IC0gKFVJVmlldyAqKWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQgd2l0aEV2ZW50Oig6OlVJRXZlbnQg
KilldmVudAogewogICAgIGZvciAoVUlWaWV3ICpzdWJWaWV3IGluIFtfaW52ZXJzZVNjYWxlUm9v
dFZpZXcuZ2V0KCkgc3Vidmlld3NdKSB7CkBAIC03MzMsNiArNzQ0LDkgQEAgc3RhdGljIGlubGlu
ZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2du
aXplciAqYiwgVUkKIAogLSAoQk9PTCloYXNTZWxlY3RhYmxlUG9zaXRpb25BdFBvaW50OihDR1Bv
aW50KXBvaW50CiB7CisgICAgaWYgKF9pbnNwZWN0b3JOb2RlU2VhcmNoRW5hYmxlZCkKKyAgICAg
ICAgcmV0dXJuIE5POworCiAgICAgW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBU
b0RhdGU6cG9pbnRdOwogICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbi5pc1NlbGVjdGFi
bGU7CiB9CkBAIC03ODAsNiArNzk0LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWly
KFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAKICAg
ICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5zdGFydFBvaW50
OwogCisgICAgaWYgKF9pbnNwZWN0b3JOb2RlU2VhcmNoRW5hYmxlZCkgeworICAgICAgICBpZiAo
W2dlc3R1cmVSZWNvZ25pemVyIHN0YXRlXSA9PSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRl
ZCkKKyAgICAgICAgICAgIF9wYWdlLT5pbnNwZWN0b3JOb2RlU2VhcmNoQ29tbWl0VGFwQXRQb3Np
dGlvbihnZXN0dXJlUmVjb2duaXplci5zdGFydFBvaW50KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIHN3aXRjaCAoW2dlc3R1cmVSZWNvZ25pemVyIHN0YXRlXSkgewogICAgIGNhc2Ug
VUlHZXN0dXJlUmVjb2duaXplclN0YXRlQmVnYW46CiAgICAgICAgIF9wYWdlLT50YXBIaWdobGln
aHRBdFBvc2l0aW9uKFtnZXN0dXJlUmVjb2duaXplciBzdGFydFBvaW50XSwgKytfbGF0ZXN0VGFw
SGlnaGxpZ2h0SUQpOwpAQCAtODA2LDYgKzgyNiw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1Nh
bWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJR2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJ
CiAKICAgICBfbGFzdEludGVyYWN0aW9uTG9jYXRpb24gPSBnZXN0dXJlUmVjb2duaXplci5zdGFy
dFBvaW50OwogCisgICAgaWYgKF9pbnNwZWN0b3JOb2RlU2VhcmNoRW5hYmxlZCkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgaWYgKFtnZXN0dXJlUmVjb2duaXplciBzdGF0ZV0gPT0gVUlHZXN0dXJl
UmVjb2duaXplclN0YXRlQmVnYW4pIHsKICAgICAgICAgU0VMIGFjdGlvbiA9IFtzZWxmIF9hY3Rp
b25Gb3JMb25nUHJlc3NdOwogICAgICAgICBpZiAoYWN0aW9uKSB7CkBAIC04MjAsNiArODQzLDkg
QEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwg
VUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKICAgICBBU1NFUlQoZ2VzdHVyZVJlY29nbml6ZXIg
PT0gX3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyKTsKICAgICBBU1NFUlQoIV9wb3RlbnRpYWxU
YXBJblByb2dyZXNzKTsKIAorICAgIGlmIChfaW5zcGVjdG9yTm9kZVNlYXJjaEVuYWJsZWQpCisg
ICAgICAgIHJldHVybjsKKwogICAgIF9wYWdlLT5wb3RlbnRpYWxUYXBBdFBvc2l0aW9uKGdlc3R1
cmVSZWNvZ25pemVyLmxvY2F0aW9uLCArK19sYXRlc3RUYXBIaWdobGlnaHRJRCk7CiAgICAgX3Bv
dGVudGlhbFRhcEluUHJvZ3Jlc3MgPSBZRVM7CiAgICAgX2lzVGFwSGlnaGxpZ2h0SURWYWxpZCA9
IFlFUzsKQEAgLTgyNyw2ICs4NTMsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaXNTYW1lUGFpcihV
SUdlc3R1cmVSZWNvZ25pemVyICphLCBVSUdlc3R1cmVSZWNvZ25pemVyICpiLCBVSQogCiAtICh2
b2lkKV9zaW5nbGVUYXBEaWRSZXNldDooVUlUYXBHZXN0dXJlUmVjb2duaXplciAqKWdlc3R1cmVS
ZWNvZ25pemVyCiB7CisgICAgaWYgKF9pbnNwZWN0b3JOb2RlU2VhcmNoRW5hYmxlZCkKKyAgICAg
ICAgcmV0dXJuOworCiAgICAgQVNTRVJUKGdlc3R1cmVSZWNvZ25pemVyID09IF9zaW5nbGVUYXBH
ZXN0dXJlUmVjb2duaXplcik7CiAgICAgaWYgKF9wb3RlbnRpYWxUYXBJblByb2dyZXNzKSB7CiAg
ICAgICAgIF9wb3RlbnRpYWxUYXBJblByb2dyZXNzID0gTk87CkBAIC04NDgsNiArODc3LDExIEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NhbWVQYWlyKFVJR2VzdHVyZVJlY29nbml6ZXIgKmEsIFVJ
R2VzdHVyZVJlY29nbml6ZXIgKmIsIFVJCiAgICAgaWYgKCFbc2VsZiBpc0ZpcnN0UmVzcG9uZGVy
XSkKICAgICAgICAgW3NlbGYgYmVjb21lRmlyc3RSZXNwb25kZXJdOwogCisgICAgaWYgKF9pbnNw
ZWN0b3JOb2RlU2VhcmNoRW5hYmxlZCkgeworICAgICAgICBfcGFnZS0+aW5zcGVjdG9yTm9kZVNl
YXJjaENvbW1pdFRhcEF0UG9zaXRpb24oZ2VzdHVyZVJlY29nbml6ZXIubG9jYXRpb24pOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKF93ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgJiYg
IVtfd2ViU2VsZWN0aW9uQXNzaXN0YW50IHNob3VsZEhhbmRsZVNpbmdsZVRhcEF0UG9pbnQ6Z2Vz
dHVyZVJlY29nbml6ZXIubG9jYXRpb25dKSB7CiAgICAgICAgIFtzZWxmIF9zaW5nbGVUYXBEaWRS
ZXNldDpnZXN0dXJlUmVjb2duaXplcl07CiAgICAgICAgIHJldHVybjsKQEAgLTIzNzEsNyArMjQw
NSw3IEBAIHN0YXRpYyBVSVRleHRBdXRvY2FwaXRhbGl6YXRpb25UeXBlIHRvVUlUZXh0QXV0b2Nh
cGl0YWxpemUoV2ViQXV0b2NhcGl0YWxpemVUeXBlCiAKIC0gKEJPT0wpc2hvdWxkSWdub3JlV2Vi
VG91Y2gKIHsKLSAgICByZXR1cm4gTk87CisgICAgcmV0dXJuIF9pbnNwZWN0b3JOb2RlU2VhcmNo
RW5hYmxlZDsKIH0KIAogLSAoQk9PTClpc0FueVRvdWNoT3ZlckFjdGl2ZUFyZWE6KE5TU2V0ICop
dG91Y2hlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQppbmRleCAzMmJkODBlLi5iZDcyMjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNTg3LDYgKzU4NywxMSBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6dGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBv
aW50JiBwb3NpdGlvbiwgdQogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpU
YXBIaWdobGlnaHRBdFBvc2l0aW9uKHJlcXVlc3RJRCwgcG9zaXRpb24pLCBtX3BhZ2VJRCk7CiB9
CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNwZWN0b3JOb2RlU2VhcmNoQ29tbWl0VGFwQXRQb3Np
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBwcm9jZXNz
KCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zcGVjdG9yTm9kZVNlYXJjaENvbW1pdFRhcEF0
UG9zaXRpb24ocG9zaXRpb24pLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojpi
bHVyQXNzaXN0ZWROb2RlKCkKIHsKICAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6Qmx1ckFzc2lzdGVkTm9kZSgpLCBtX3BhZ2VJRCk7CkBAIC02NTUsNiArNjYwLDE2IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpCiB7CiAgICAgbV9wYWdl
Q2xpZW50LmhpZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCk7CiB9CisKK3ZvaWQgV2ViUGFnZVByb3h5
OjplbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkKK3sKKyAgICBtX3BhZ2VDbGllbnQuZW5hYmxl
SW5zcGVjdG9yTm9kZVNlYXJjaCgpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlzYWJsZUlu
c3BlY3Rvck5vZGVTZWFyY2goKQoreworICAgIG1fcGFnZUNsaWVudC5kaXNhYmxlSW5zcGVjdG9y
Tm9kZVNlYXJjaCgpOworfQogI2VuZGlmCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpmb2N1c05leHRB
c3Npc3RlZE5vZGUoYm9vbCBpc0ZvcndhcmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAK
aW5kZXggNmNmYzkxOC4uZTViNDM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApA
QCAtMTEwLDYgKzExMCwxNCBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aGlkZUluc3BlY3Rv
ckluZGljYXRpb24oKQogewogICAgIG1fcGFnZS0+aGlkZUluc3BlY3RvckluZGljYXRpb24oKTsK
IH0KKwordm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9v
bCBlbmFibGVkKQoreworICAgIGlmIChlbmFibGVkKQorICAgICAgICBtX3BhZ2UtPmVuYWJsZUlu
c3BlY3Rvck5vZGVTZWFyY2goKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZS0+ZGlzYWJsZUlu
c3BlY3Rvck5vZGVTZWFyY2goKTsKK30KICNlbmRpZgogCiBib29sIFdlYkluc3BlY3RvckNsaWVu
dDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oCmluZGV4IGY2OTdmNjMuLmIzZWQ4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaApAQCAtNjQsNiArNjQsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykK
ICAgICB2aXJ0dWFsIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgaGlkZUluc3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsKKworICAg
IHZpcnR1YWwgdm9pZCBkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wpIG92ZXJyaWRlOwogI2Vu
ZGlmCiAKICAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmlu
ZyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggMjkwZjhkOC4uOThiZmExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC00NzQsNiArNDc0LDcgQEAgcHVibGljOgogICAgIHZvaWQg
Y29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCk7CiAgICAgdm9pZCBjYW5jZWxQb3RlbnRpYWxUYXAo
KTsKICAgICB2b2lkIHRhcEhpZ2hsaWdodEF0UG9zaXRpb24odWludDY0X3QgcmVxdWVzdElELCBj
b25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CisgICAgdm9pZCBpbnNwZWN0b3JOb2RlU2VhcmNo
Q29tbWl0VGFwQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CiAKICAgICB2
b2lkIGJsdXJBc3Npc3RlZE5vZGUoKTsKICAgICB2b2lkIHNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJpdHksIHVpbnQzMl90IGdlc3R1
cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAt
NTEyLDYgKzUxMyw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRp
b24oKTsKICAgICB2b2lkIGhpZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCk7CisKKyAgICB2b2lkIGVu
YWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKTsKKyAgICB2b2lkIGRpc2FibGVJbnNwZWN0b3JOb2Rl
U2VhcmNoKCk7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDJkMTIyNzQuLmFmNDQw
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC01NSw2ICs1NSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogICAgIENvbW1pdFBvdGVudGlhbFRhcCgpCiAgICAgQ2FuY2VsUG90ZW50
aWFsVGFwKCkKICAgICBUYXBIaWdobGlnaHRBdFBvc2l0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwg
V2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKKyAgICBJbnNwZWN0b3JOb2RlU2VhcmNoQ29tbWl0
VGFwQXRQb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50KQogICAgIEJsdXJBc3Npc3Rl
ZE5vZGUoKQogICAgIFNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1
aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1
cmVTdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91
Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNl
SXNTdGFydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCAwYWQwM2FmLi4yNDZmMDcx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCkBAIC00OTMsNiArNDkzLDEyIEBAIHZvaWQgV2ViUGFnZTo6dGFwSGlnaGxpZ2h0
QXRQb3NpdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0CiAg
ICAgc2VuZFRhcEhpZ2hsaWdodEZvck5vZGVJZk5lY2Vzc2FyeShyZXF1ZXN0SUQsIG1haW5mcmFt
ZS5ub2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMocG9zaXRpb24sIGFkanVzdGVkUG9pbnQpKTsK
IH0KIAordm9pZCBXZWJQYWdlOjppbnNwZWN0b3JOb2RlU2VhcmNoQ29tbWl0VGFwQXRQb3NpdGlv
bihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBpZiAoTm9kZSogbm9kZSA9IG1f
cGFnZS0+bWFpbkZyYW1lKCkuZGVlcGVzdE5vZGVBdExvY2F0aW9uKHBvc2l0aW9uKSkKKyAgICAg
ICAgbm9kZS0+aW5zcGVjdCgpOworfQorCiB2b2lkIFdlYlBhZ2U6OmJsdXJBc3Npc3RlZE5vZGUo
KQogewogICAgIGlmIChtX2Fzc2lzdGVkTm9kZSAmJiBtX2Fzc2lzdGVkTm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQpAQCAtNTQ4LDYgKzU1NCwxNiBAQCB2b2lkIFdlYlBhZ2U6OmhpZGVJbnNwZWN0b3JJ
bmRpY2F0aW9uKCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkhpZGVJbnNw
ZWN0b3JJbmRpY2F0aW9uKCkpOwogfQorCit2b2lkIFdlYlBhZ2U6OmVuYWJsZUluc3BlY3Rvck5v
ZGVTZWFyY2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5hYmxlSW5z
cGVjdG9yTm9kZVNlYXJjaCgpKTsKK30KKwordm9pZCBXZWJQYWdlOjpkaXNhYmxlSW5zcGVjdG9y
Tm9kZVNlYXJjaCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaXNhYmxl
SW5zcGVjdG9yTm9kZVNlYXJjaCgpKTsKK30KICNlbmRpZgogCiBzdGF0aWMgRmxvYXRRdWFkIGlu
bmVyRnJhbWVRdWFkKEZyYW1lKiBmcmFtZSwgTm9kZSogYXNzaXN0ZWROb2RlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233771</attachid>
            <date>2014-06-24 18:01:18 -0700</date>
            <delta_ts>2014-06-25 12:29:46 -0700</delta_ts>
            <desc>[PATCH] Proposed Fix (With Gesture)</desc>
            <filename>node-search-gesture.patch</filename>
            <type>text/plain</type>
            <size>31631</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwZmFmYTk4Li5lYjk0NDVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTQtMDYtMjQgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbaU9TXTogV0syIEluc3BlY3RvciBOb2RlIFNlYXJjaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0Mjc5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgRXhwb3J0IE5vZGU6Omluc3BlY3QgZm9yIFdlYktpdDIuCisKIDIwMTQtMDYtMjMgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2Ugc3luY2hy
b25vdXMgbGF5b3V0IHRyaWdnZXJlZCBieSBKYXZhU2NyaXB0LWJhc2VkIG1lZGlhIGNvbnRyb2xz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDUwZjU0MTUuLjE4ZWJlNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCkBAIC0zMTUyLDYgKzMxNTIsNyBAQCBfX1pOSzdXZWJDb3JlOURPTVdpbmRvdzhkb2N1
bWVudEV2CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBQTEFURk9STShJT1MpCiBfX1pON1dl
YkNvcmUxNmZpbmRJbnRlcnNlY3Rpb25FUktOU18xMEZsb2F0UG9pbnRFUzJfUzJfUzJfUlMwXwor
X19aTjdXZWJDb3JlNE5vZGU3aW5zcGVjdEV2CiBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDEyY29u
dGFpbnNRdWFkRVJLUzBfCiBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDEzY29udGFpbnNQb2ludEVS
S05TXzEwRmxvYXRQb2ludEUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc3NGYxMWIuLjAyMmFjZTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxNC0wNi0yNCAgSm9zZXBoIFBlY29yYXJv
ICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdOiBXSzIgSW5zcGVjdG9yIE5v
ZGUgU2VhcmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMzQyNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIu
aDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hH
ZXN0dXJlUmVjb2duaXplci5tbTogQWRkZWQuCisgICAgICAgICgtW1dLSW5zcGVjdG9yTm9kZVNl
YXJjaEdlc3R1cmVSZWNvZ25pemVyIGxvY2F0aW9uSW5WaWV3Ol0pOgorICAgICAgICAoLVtXS0lu
c3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplciBfcHJvY2Vzc1RvdWNoZXM6c3RhdGU6
XSk6CisgICAgICAgICgtW1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIHRv
dWNoZXNCZWdhbjp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLSW5zcGVjdG9yTm9kZVNlYXJj
aEdlc3R1cmVSZWNvZ25pemVyIHRvdWNoZXNNb3ZlZDp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgt
W1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIHRvdWNoZXNFbmRlZDp3aXRo
RXZlbnQ6XSk6CisgICAgICAgICgtW1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyIHRvdWNoZXNDYW5jZWxsZWQ6d2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS0luc3BlY3Rv
ck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplciByZXNldF0pOgorICAgICAgICBHZXN0dXJlIHJl
Y29nbml6ZXIgdGhhdCB0cmFja3MgYSBzaW5nbGUgdG91Y2gsIHVwZGF0ZXMgYXMgdGhhdCB0b3Vj
aAorICAgICAgICBtb3ZlcywgYW5kIGVuZHMgd2hlbiB0aGF0IHRvdWNoIGlzIGNhbmNlbGxlZCBv
ciBlbmRzLiBUaGUgbG9jYXRpb24KKyAgICAgICAgb2YgdGhlIGdlc3R1cmUgcmVjb2duaXplciBp
cyB0aGUgbG9jYXRpb24gb2YgdGhlIHRvdWNoIGl0IHdhcyB0cmFja2luZy4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29u
dGVudFZpZXcgY2xlYW51cEludGVyYWN0aW9uXSk6CisgICAgICAgIEhhbmRsZSB0aGUgaW5zcGVj
dG9yIG5vZGUgc2VhcmNoIGdlc3R1cmUgcmVjb2duaXplciBpZiBuZWVkZWQuCisKKyAgICAgICAg
KC1bV0tDb250ZW50VmlldyBfcmVtb3ZlRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6Cisg
ICAgICAgIEhlbHBlcnMgdG8gYWRkIGFuZCByZW1vdmUgdGhlIGRlZmF1bHQgZ2VzdHVyZXMuCisK
KyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZW5hYmxlSW5zcGVjdG9yTm9kZVNlYXJjaF0pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaF0pOgor
ICAgICAgICBXaGVuIG5vZGUgc2VhcmNoIGlzIGVuYWJsZWQsIHJlbW92ZSBhbGwgZ2VzdHVyZSBy
ZWNvZ25pemVycyBhbmQKKyAgICAgICAgcmVwbGFjZSB3aXRoIGEgc2luZ2xlIGluc3BlY3RvciBu
b2RlIHNlYXJjaCBnZXN0dXJlIHJlY29nbml6ZXIuCisgICAgICAgIExpa2V3aXNlLCBpbnZlcnNl
IHRoYXQgd2hlbiBkaXNhYmxlZC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9pbnNwZWN0
b3JOb2RlU2VhcmNoUmVjb2duaXplZDpdKToKKyAgICAgICAgTm90aWZ5IHRoZSBXZWJQcm9jZXNz
IG9mIG5ldyB0b3VjaCBwb3NpdGlvbnMgZHVyaW5nIG5vZGUgc2VhcmNoLgorCisgICAgICAgICgt
W1dLQ29udGVudFZpZXcgaGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDpdKToKKyAgICAgICAg
V2hlbiBpbnNwZWN0b3Igbm9kZSBzZWFyY2ggaXMgZW5hYmxlZCwgZGlzYWJsZSBzZWxlY3Rpb24u
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc3BlY3Rvck5vZGVTZWFyY2hNb3ZlVG9Qb3NpdGlvbik6
CisgICAgICAgIFNlbmQgYSBtb3VzZSBtb3ZlIHRvIHRoZSBuZXcgbG9jYXRpb24uIFdlYkNvcmUg
d2lsbCB1cGRhdGUgdGhlIGhpZ2hsaWdodC4KKworICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpp
bnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKToKKyAgICAgICAgSW5zcGVjdCB0aGUg
bm9kZSBhdCB0aGUgbG9jYXRpb24uCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9lbmFibGVJbnNwZWN0b3JOb2RlU2Vh
cmNoXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2hd
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5p
bjoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmVuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2gpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2gpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6Omluc3BlY3Rvck5vZGVTZWFyY2hNb3ZlVG9Qb3NpdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZW5hYmxlSW5zcGVjdG9yTm9kZVNl
YXJjaCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlzYWJsZUluc3BlY3Rvck5v
ZGVTZWFyY2gpOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0U2VhcmNoaW5n
Rm9yTm9kZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZTo6ZW5hYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OmRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKToKKyAgICAgICAgUGFzcyB0aGUgaW5z
cGVjdG9yIG5vZGUgc2VhcmNoIHN0YXRlIHVwIGZyb20gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAg
dG8gdGhlIFdLQ29udGVudFZpZXcgaW4gdGhlIFVJUHJvY2Vzcy4gTGlrZXdpc2Ugc29tZSBtZXNz
YWdlcworICAgICAgICBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24uCisKIDIwMTQtMDYtMjQgIEJl
bmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU11bV0sy
XSBXZSBzaG91bGQgbm90IHN0YXJ0IHBvdGVudGlhbCB0YXAgYWN0aXZhdGlvbiB1bmxlc3MgdGhl
IHRhcCBnZXN0dXJlIHJlY29nbml6ZXIgc3VjY2VlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA2MGExODljLi43YjQxNTFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
NjUwLDYgKzY1MCwxNiBAQCBzdGF0aWMgQ0dTaXplIHJvdW5kU2Nyb2xsVmlld0NvbnRlbnRTaXpl
KGNvbnN0IFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBDR1NpegogICAgIFtfY29udGVudFZp
ZXcgX2hpZGVJbnNwZWN0b3JIaWdobGlnaHRdOwogfQogCistICh2b2lkKV9lbmFibGVJbnNwZWN0
b3JOb2RlU2VhcmNoCit7CisgICAgW19jb250ZW50VmlldyBfZW5hYmxlSW5zcGVjdG9yTm9kZVNl
YXJjaF07Cit9CisKKy0gKHZvaWQpX2Rpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoCit7CisgICAg
W19jb250ZW50VmlldyBfZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2hdOworfQorCiBzdGF0aWMg
Q0dGbG9hdCBjb250ZW50Wm9vbVNjYWxlKFdLV2ViVmlldyogd2ViVmlldykKIHsKICAgICBVSVZp
ZXcgKnpvb21WaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCmluZGV4IGRjNWJkMGQuLjVjNmYyN2IgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVy
bmFsLmgKQEAgLTk2LDEwICs5NiwxMiBAQCBzdHJ1Y3QgVmlld1NuYXBzaG90OwogLSAodm9pZClf
c2hvd0luc3BlY3RvckhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6SGlnaGxpZ2h0JiloaWdobGln
aHQ7CiAtICh2b2lkKV9oaWRlSW5zcGVjdG9ySGlnaGxpZ2h0OwogCistICh2b2lkKV9lbmFibGVJ
bnNwZWN0b3JOb2RlU2VhcmNoOworLSAodm9pZClfZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2g7
CisKIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM7CiAKIEBwcm9wZXJ0eSAobm9u
YXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRzIF9jb21wdXRlZENvbnRlbnRJbnNldDsKLQog
I2VuZGlmCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCmluZGV4IDRi
ZmY0OWYuLmU3YjkyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdl
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAt
Mjc2LDYgKzI3Niw5IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93SW5zcGVjdG9y
SW5kaWNhdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUluc3BlY3RvckluZGljYXRp
b24oKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKSA9IDA7
CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggZWIzMWE0Zi4uYTVjN2RjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtODQ1LDYgKzg0NSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbFBvdGVu
dGlhbFRhcCgpOwogICAgIHZvaWQgdGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihjb25zdCBXZWJDb3Jl
OjpGbG9hdFBvaW50JiwgdWludDY0X3QmIHJlcXVlc3RJRCk7CiAKKyAgICB2b2lkIGluc3BlY3Rv
ck5vZGVTZWFyY2hNb3ZlVG9Qb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7Cisg
ICAgdm9pZCBpbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6
OkZsb2F0UG9pbnQmKTsKKwogICAgIHZvaWQgYmx1ckFzc2lzdGVkTm9kZSgpOwogI2VuZGlmCiAK
QEAgLTEyMTIsNiArMTIxNSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNob3dJbnNwZWN0b3JJ
bmRpY2F0aW9uKCk7CiAgICAgdm9pZCBoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpOworCisgICAg
dm9pZCBlbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7CisgICAgdm9pZCBkaXNhYmxlSW5zcGVj
dG9yTm9kZVNlYXJjaCgpOwogI2VuZGlmCiAKICAgICB2b2lkIG5vdGlmeVJldmVhbGVkU2VsZWN0
aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNz
YWdlcy5pbgppbmRleCBhYjhkZTcxLi45YTFkYmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTM0Niw2ICszNDYsOSBAQCBt
ZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogCiAgICAgU2hvd0luc3BlY3RvckluZGljYXRpb24o
KQogICAgIEhpZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCkKKworICAgIEVuYWJsZUluc3BlY3Rvck5v
ZGVTZWFyY2goKQorICAgIERpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkKICNlbmRpZgogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVu
dEltcGxJT1MuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJ
T1MuaAppbmRleCBkZGRiNGE0Li41OWEyYmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC0xMzcsNiArMTM3LDkgQEAgcHJpdmF0
ZToKIAogICAgIHZpcnR1YWwgdm9pZCBzaG93SW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpIG92ZXJyaWRlOwor
CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKSBvdmVycmlkZTsK
ICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIHpvb21Ub1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0
LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNjYWxlKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1Mu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCmlu
ZGV4IDFiZmNkMTEuLjMwYzcxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNTA0LDYgKzUwNCwxNiBAQCB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpCiB7CiAgICAgW21fd2ViVmlldyBf
aGlkZUluc3BlY3RvckluZGljYXRpb25dOwogfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjplbmFi
bGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkKK3sKKyAgICBbbV93ZWJWaWV3IF9lbmFibGVJbnNwZWN0
b3JOb2RlU2VhcmNoXTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlzYWJsZUluc3BlY3Rv
ck5vZGVTZWFyY2goKQoreworICAgIFttX3dlYlZpZXcgX2Rpc2FibGVJbnNwZWN0b3JOb2RlU2Vh
cmNoXTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9u
LmgKaW5kZXggMDI3NzI1Mi4uNzNkNGQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC02NSw2ICs2NSw3
IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIEBjbGFzcyBXZWJJT1NFdmVudDsKIEBjbGFzcyBfVUlI
aWdobGlnaHRWaWV3OwogQGNsYXNzIF9VSVdlYkhpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNv
Z25pemVyOworQGNsYXNzIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyOwog
CiB0eXBlZGVmIHZvaWQgKF5VSVdLQXV0b2NvcnJlY3Rpb25Db21wbGV0aW9uSGFuZGxlcikoVUlX
S0F1dG9jb3JyZWN0aW9uUmVjdHMgKnJlY3RzRm9ySW5wdXQpOwogdHlwZWRlZiB2b2lkICheVUlX
S0F1dG9jb3JyZWN0aW9uQ29udGV4dEhhbmRsZXIpKFVJV0tBdXRvY29ycmVjdGlvbkNvbnRleHQg
KmF1dG9jb3JyZWN0aW9uQ29udGV4dCk7CkBAIC05Miw2ICs5Myw3IEBAIHN0cnVjdCBXS0F1dG9D
b3JyZWN0aW9uRGF0YSB7CiAgICAgUmV0YWluUHRyPFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6
ZXI+IF9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0
dXJlUmVjb2duaXplcj4gX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyOwogICAgIFJldGFpblB0
cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29n
bml6ZXI7CisgICAgUmV0YWluUHRyPFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyPiBfaW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyOwogCiAgICAgUmV0YWlu
UHRyPFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQ+IF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50
OwogICAgIFJldGFpblB0cjxVSVdLU2VsZWN0aW9uQXNzaXN0YW50PiBfd2ViU2VsZWN0aW9uQXNz
aXN0YW50OwpAQCAtMTM2LDYgKzEzOCw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7
CiAgICAgQk9PTCBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzczsKICAgICBCT09MIF9zZWxlY3Rpb25O
ZWVkc1VwZGF0ZTsKICAgICBCT09MIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb247CisgICAgQk9P
TCBfaW5zcGVjdG9yTm9kZVNlYXJjaEVuYWJsZWQ7CiB9CiAKIEBlbmQKQEAgLTE3Niw2ICsxNzks
OCBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogLSAodm9pZClfZGlkSGFuZGxlS2V5
RXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQ7CiAtIChWZWN0b3I8V2ViS2l0OjpPcHRpb25JdGVt
PiYpIGFzc2lzdGVkTm9kZVNlbGVjdE9wdGlvbnM7CiAtICh2b2lkKV91cGRhdGVVbnNjYWxlZFZp
ZXc7CistICh2b2lkKV9lbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoOworLSAodm9pZClfZGlzYWJs
ZUluc3BlY3Rvck5vZGVTZWFyY2g7CiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IDRlNGNlMzkuLmM3MmZkODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC02MSw2ICs2MSw4IEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViU2VsZWN0aW9uUmVjdC5oPiAvLyBG
SVhNRTogV0syIHNob3VsZCBub3QgaW5jbHVkZSBXZWJLaXQgaGVhZGVycyEKICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIAorI2ltcG9ydCAiV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJl
Y29nbml6ZXIuaCIKKwogU09GVF9MSU5LX1BSSVZBVEVfRlJBTUVXT1JLKERhdGFEZXRlY3RvcnNV
SSkKIFNPRlRfTElOS19DTEFTUyhEYXRhRGV0ZWN0b3JzVUksIERERGV0ZWN0aW9uQ29udHJvbGxl
cikKIApAQCAtMjczLDYgKzI3NSw5IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0YXBBbmRIb2xkRGVs
YXkgID0gMC43NTsKICAgICBbX3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNl
dERlbGVnYXRlOm5pbF07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3R3b0Zp
bmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAorICAgIFtfaW5zcGVjdG9y
Tm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CisgICAgW3NlbGYg
cmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X2luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CisKICAgICBpZiAoX2ZpbGVVcGxvYWRQYW5lbCkgewogICAgICAgICBbX2Zp
bGVVcGxvYWRQYW5lbCBzZXREZWxlZ2F0ZTpuaWxdOwogICAgICAgICBbX2ZpbGVVcGxvYWRQYW5l
bCBkaXNtaXNzXTsKQEAgLTI4MCw2ICsyODUsMjYgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRhcEFu
ZEhvbGREZWxheSAgPSAwLjc1OwogICAgIH0KIH0KIAorLSAodm9pZClfcmVtb3ZlRGVmYXVsdEdl
c3R1cmVSZWNvZ25pemVycworeworICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl90
b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAgIFtzZWxmIHJlbW92ZUdlc3R1
cmVSZWNvZ25pemVyOl9zaW5nbGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisgICAgW3Nl
bGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X2hpZ2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNv
Z25pemVyLmdldCgpXTsKKyAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfbG9uZ1By
ZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNv
Z25pemVyOl9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisgICAgW3NlbGYgcmVt
b3ZlR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVy
LmdldCgpXTsKK30KKworLSAodm9pZClfYWRkRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVycworewor
ICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl90b3VjaEV2ZW50R2VzdHVyZVJlY29nbml6
ZXIuZ2V0KCldOworICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9zaW5nbGVUYXBHZXN0
dXJlUmVjb2duaXplci5nZXQoKV07CisgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2hp
Z2hsaWdodExvbmdQcmVzc0dlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBbc2VsZiBhZGRH
ZXN0dXJlUmVjb2duaXplcjpfbG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAg
IFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9kb3VibGVUYXBHZXN0dXJlUmVjb2duaXplci5n
ZXQoKV07CisgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRh
cEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKK30KKwogLSAoVUlWaWV3Kil1bnNjYWxlZFZpZXcK
IHsKICAgICByZXR1cm4gX2ludmVyc2VTY2FsZVJvb3RWaWV3LmdldCgpOwpAQCAtMjk4LDYgKzMy
MywyNiBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGFwQW5kSG9sZERlbGF5ICA9IDAuNzU7CiAgICAg
W3NlbGYgX3VwZGF0ZUNoYW5nZWRTZWxlY3Rpb25dOwogfQogCistICh2b2lkKV9lbmFibGVJbnNw
ZWN0b3JOb2RlU2VhcmNoCit7CisgICAgX2luc3BlY3Rvck5vZGVTZWFyY2hFbmFibGVkID0gWUVT
OworCisgICAgW3NlbGYgX2NhbmNlbEludGVyYWN0aW9uXTsKKworICAgIFtzZWxmIF9yZW1vdmVE
ZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXTsKKyAgICBfaW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1
cmVSZWNvZ25pemVyID0gW1tXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplciBh
bGxvY10gaW5pdFdpdGhUYXJnZXQ6c2VsZiBhY3Rpb246QHNlbGVjdG9yKF9pbnNwZWN0b3JOb2Rl
U2VhcmNoUmVjb2duaXplZDopXTsKKyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfaW5z
cGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKK30KKworLSAodm9pZClf
ZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2gKK3sKKyAgICBfaW5zcGVjdG9yTm9kZVNlYXJjaEVu
YWJsZWQgPSBOTzsKKworICAgIFtzZWxmIF9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXTsK
KyAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfaW5zcGVjdG9yTm9kZVNlYXJjaEdl
c3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBfaW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVS
ZWNvZ25pemVyID0gbmlsOworfQorCiAtIChVSVZpZXcgKiloaXRUZXN0OihDR1BvaW50KXBvaW50
IHdpdGhFdmVudDooOjpVSUV2ZW50ICopZXZlbnQKIHsKICAgICBmb3IgKFVJVmlldyAqc3ViVmll
dyBpbiBbX2ludmVyc2VTY2FsZVJvb3RWaWV3LmdldCgpIHN1YnZpZXdzXSkgewpAQCAtMzcwLDYg
KzQxNSwyNCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGFwQW5kSG9sZERlbGF5ICA9IDAuNzU7CiAg
ICAgICAgIF9jYW5TZW5kVG91Y2hFdmVudHNBc3luY2hyb25vdXNseSA9IE5POwogfQogCistICh2
b2lkKV9pbnNwZWN0b3JOb2RlU2VhcmNoUmVjb2duaXplZDooVUlHZXN0dXJlUmVjb2duaXplciAq
KWdlc3R1cmVSZWNvZ25pemVyCit7CisgICAgQVNTRVJUKF9pbnNwZWN0b3JOb2RlU2VhcmNoRW5h
YmxlZCk7CisKKyAgICBDR1BvaW50IHBvaW50ID0gW2dlc3R1cmVSZWNvZ25pemVyIGxvY2F0aW9u
SW5WaWV3OnNlbGZdOworCisgICAgc3dpdGNoIChnZXN0dXJlUmVjb2duaXplci5zdGF0ZSkgewor
ICAgIGNhc2UgVUlHZXN0dXJlUmVjb2duaXplclN0YXRlQmVnYW46CisgICAgY2FzZSBVSUdlc3R1
cmVSZWNvZ25pemVyU3RhdGVDaGFuZ2VkOgorICAgICAgICBfcGFnZS0+aW5zcGVjdG9yTm9kZVNl
YXJjaE1vdmVUb1Bvc2l0aW9uKHBvaW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVSUdl
c3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZDoKKyAgICBkZWZhdWx0OiAvLyBUbyBlbnN1cmUgd2Ug
dHVybiBvZmYgbm9kZSBzZWFyY2guCisgICAgICAgIF9wYWdlLT5pbnNwZWN0b3JOb2RlU2VhcmNo
RW5kZWRBdFBvc2l0aW9uKHBvaW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiBzdGF0
aWMgRmxvYXRRdWFkIGluZmxhdGVRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgZmxvYXQgaW5m
bGF0ZVNpemUpCiB7CiAgICAgLy8gV2Ugc29ydCB0aGUgb3V0cHV0IHBvaW50cyBsaWtlIHRoaXMg
KGFzIGV4cGVjdGVkIGJ5IHRoZSBoaWdobGlnaHQgdmlldyk6CkBAIC03MzQsNiArNzk3LDkgQEAg
c3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlH
ZXN0dXJlUmVjb2duaXplciAqYiwgVUkKIAogLSAoQk9PTCloYXNTZWxlY3RhYmxlUG9zaXRpb25B
dFBvaW50OihDR1BvaW50KXBvaW50CiB7CisgICAgaWYgKF9pbnNwZWN0b3JOb2RlU2VhcmNoRW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuIE5POworCiAgICAgW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZv
cm1hdGlvbklzVXBUb0RhdGU6cG9pbnRdOwogICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlv
bi5pc1NlbGVjdGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZlZjVlOAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0b3JOb2RlU2Vh
cmNoR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
IFBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8VUlLaXQvVUlHZXN0dXJlUmVjb2duaXplci5oPgor
CitAaW50ZXJmYWNlIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIDogVUlH
ZXN0dXJlUmVjb2duaXplcgorLSAoQ0dQb2ludClsb2NhdGlvbkluVmlldzooVUlWaWV3ICopdmll
dzsKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXpl
ci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjNkNTVjCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVT
ZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbQpAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJl
UmVjb2duaXplci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0IDxVSUtpdC9VSUdl
c3R1cmVSZWNvZ25pemVyU3ViY2xhc3MuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
QGltcGxlbWVudGF0aW9uIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIHsK
KyAgICBSZXRhaW5QdHI8VUlUb3VjaD4gX3RvdWNoOworfQorCistIChDR1BvaW50KWxvY2F0aW9u
SW5WaWV3OihVSVZpZXcgKil2aWV3Cit7CisgICAgcmV0dXJuIFtfdG91Y2ggbG9jYXRpb25JblZp
ZXc6dmlld107Cit9CisKKy0gKHZvaWQpX3Byb2Nlc3NUb3VjaGVzOihOU1NldCAqKXRvdWNoZXMg
c3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSluZXdTdGF0ZQoreworICAgIEFTU0VSVChf
dG91Y2gpOworICAgIGZvciAoVUlUb3VjaCAqdG91Y2ggaW4gdG91Y2hlcykgeworICAgICAgICBp
ZiAodG91Y2ggPT0gX3RvdWNoLmdldCgpKSB7CisgICAgICAgICAgICBzZWxmLnN0YXRlID0gbmV3
U3RhdGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworLSAodm9p
ZCl0b3VjaGVzQmVnYW46KE5TU2V0ICopdG91Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVu
dAoreworICAgIGlmIChzZWxmLnN0YXRlICE9IFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZVBvc3Np
YmxlKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoIV90b3VjaCk7CisgICAgX3RvdWNo
ID0gW3RvdWNoZXMgYW55T2JqZWN0XTsKKworICAgIFtzZWxmIF9wcm9jZXNzVG91Y2hlczp0b3Vj
aGVzIHN0YXRlOlVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuXTsKK30KKworLSAodm9pZCl0
b3VjaGVzTW92ZWQ6KE5TU2V0ICopdG91Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAor
eworICAgIFtzZWxmIF9wcm9jZXNzVG91Y2hlczp0b3VjaGVzIHN0YXRlOlVJR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZUNoYW5nZWRdOworfQorCistICh2b2lkKXRvdWNoZXNFbmRlZDooTlNTZXQgKil0
b3VjaGVzIHdpdGhFdmVudDooVUlFdmVudCAqKWV2ZW50Cit7CisgICAgW3NlbGYgX3Byb2Nlc3NU
b3VjaGVzOnRvdWNoZXMgc3RhdGU6VUlHZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWRdOworfQor
CistICh2b2lkKXRvdWNoZXNDYW5jZWxsZWQ6KE5TU2V0ICopdG91Y2hlcyB3aXRoRXZlbnQ6KFVJ
RXZlbnQgKilldmVudAoreworICAgIFtzZWxmIF9wcm9jZXNzVG91Y2hlczp0b3VjaGVzIHN0YXRl
OlVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkXTsKK30KKworLSAodm9pZClyZXNldAorewor
ICAgIF90b3VjaCA9IG5pbDsKK30KKworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggMTNiMTQ4My4uYTQzNjkx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJ
T1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1Mu
bW0KQEAgLTU4Nyw2ICs1ODcsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRhcEhpZ2hsaWdodEF0
UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgcG9zaXRpb24sIHUKICAgICBwcm9j
ZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihyZXF1
ZXN0SUQsIHBvc2l0aW9uKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5z
cGVjdG9yTm9kZVNlYXJjaE1vdmVUb1Bvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQm
IHBvc2l0aW9uKQoreworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNw
ZWN0b3JOb2RlU2VhcmNoTW92ZVRvUG9zaXRpb24ocG9zaXRpb24pLCBtX3BhZ2VJRCk7Cit9CisK
K3ZvaWQgV2ViUGFnZVByb3h5OjppbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKHBv
c2l0aW9uKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6Ymx1ckFzc2lzdGVk
Tm9kZSgpCiB7CiAgICAgcHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkJsdXJBc3Np
c3RlZE5vZGUoKSwgbV9wYWdlSUQpOwpAQCAtNjY1LDYgKzY3NSwxNiBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aGlkZUluc3BlY3RvckluZGljYXRpb24oKQogewogICAgIG1fcGFnZUNsaWVudC5oaWRl
SW5zcGVjdG9ySW5kaWNhdGlvbigpOwogfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZW5hYmxlSW5z
cGVjdG9yTm9kZVNlYXJjaCgpCit7CisgICAgbV9wYWdlQ2xpZW50LmVuYWJsZUluc3BlY3Rvck5v
ZGVTZWFyY2goKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmRpc2FibGVJbnNwZWN0b3JOb2Rl
U2VhcmNoKCkKK3sKKyAgICBtX3BhZ2VDbGllbnQuZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2go
KTsKK30KICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Zm9jdXNOZXh0QXNzaXN0ZWROb2Rl
KGJvb2wgaXNGb3J3YXJkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IDQ3YTY2ZDMuLjZjOTU4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMDUsNiArMTEw
NSw4IEBACiAJCUExQzUxMkM5MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVD
bGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
QzUxMkM3MTkwNjU2RTUwMDQ0ODkxNCAvKiBXZWJRdWlja0xvb2tIYW5kbGVDbGllbnQuaCAqLzsg
fTsKIAkJQTFERjYzMTIxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFERjYzMTAxOEUwQjdD
ODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50Lm1tICovOyB9OwogCQlBMURGNjMxMzE4RTBCN0M4
MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExREY2MzExMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENs
aWVudC5oICovOyB9OworCQlBNTQyOTNBNDE5NUE0M0RBMDAyNzgyQzcgLyogV0tJbnNwZWN0b3JO
b2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1NDI5M0EyMTk1QTQzQzYwMDI3ODJDNyAvKiBXS0luc3BlY3Rv
ck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5oICovOyB9OworCQlBNTQyOTNBNTE5NUE0M0RE
MDAyNzgyQzcgLyogV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTQyOTNBMzE5NUE0
M0M2MDAyNzgyQzcgLyogV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIubW0g
Ki87IH07CiAJCUE1OEI2RjA4MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4QjZGMDYx
OEZDQTczMzAwOENCQTUzIC8qIFdLRmlsZVVwbG9hZFBhbmVsLmggKi87IH07CiAJCUE1OEI2RjA5
MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OEI2RjA3MThGQ0E3MzMwMDhDQkE1MyAv
KiBXS0ZpbGVVcGxvYWRQYW5lbC5tbSAqLzsgfTsKIAkJQTVFRkQzOEMxNkIwRTg4QzAwQjJGMEU4
IC8qIFdLUGFnZVZpc2liaWxpdHlUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTVFRkQzOEIxNkIwRTg4QzAwQjJGMEU4IC8qIFdLUGFnZVZpc2li
aWxpdHlUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC0zMTUwLDYgKzMxNTIsOCBAQAogCQlBMUVERDJEQjE4ODRCOTY0MDBCQkZFOTggLyog
UGx1Z2luUHJvY2Vzc1NoaW0ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gUGx1Z2luUHJvY2Vzc1No
aW0ueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRUREMkRDMTg4NEI5
QjUwMEJCRkU5OCAvKiBTZWNJdGVtU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTZWNJdGVt
U2hpbS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFFREQyREQxODg0
QjlFMzAwQkJGRTk4IC8qIFdlYlByb2Nlc3NTaGltLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdl
YlByb2Nlc3NTaGltLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTQy
OTNBMjE5NUE0M0M2MDAyNzgyQzcgLyogV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29n
bml6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29n
bml6ZXIuaDsgcGF0aCA9IGlvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXpl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTQyOTNBMzE5NUE0M0M2MDAyNzgy
QzcgLyogV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IG5hbWUgPSBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbTsg
cGF0aCA9IGlvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4QjZGMDYxOEZDQTczMzAwOENCQTUzIC8qIFdL
RmlsZVVwbG9hZFBhbmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLRmls
ZVVwbG9hZFBhbmVsLmg7IHBhdGggPSBpb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4QjZGMDcxOEZDQTczMzAwOENCQTUzIC8qIFdL
RmlsZVVwbG9hZFBhbmVsLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gV0tGaWxlVXBsb2FkUGFuZWwubW07IHBhdGggPSBpb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFu
ZWwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1RUZEMzhCMTZCMEU4OEMwMEIy
RjBFOCAvKiBXS1BhZ2VWaXNpYmlsaXR5VHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC00ODI5LDYgKzQ4MzMsOCBAQAogCQkJCTBGQ0I0RTNGMThCQkUwNDQwMDBGQ0ZDOSAv
KiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MuaCAqLywKIAkJCQkwRkNCNEU0MDE4QkJFMDQ0MDAw
RkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tICovLAogCQkJCTBGQ0I0RTQxMThC
QkUwNDQwMDBGQ0ZDOSAvKiBXS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmln
aW4ubW0gKi8sCisJCQkJQTU0MjkzQTIxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9k
ZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmggKi8sCisJCQkJQTU0MjkzQTMxOTVBNDNDNjAwMjc4
MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tICovLAogCQkJ
CTBGQ0I0RTQ0MThCQkUwNDQwMDBGQ0ZDOSAvKiBXS1Njcm9sbFZpZXcuaCAqLywKIAkJCQkwRkNC
NEU0NTE4QkJFMDQ0MDAwRkNGQzkgLyogV0tTY3JvbGxWaWV3Lm1tICovLAogCQkJCUExMTVEQzZF
MTkxRDgyQUIwMERBODA3MiAvKiBfV0tXZWJWaWV3UHJpbnRGb3JtYXR0ZXIuaCAqLywKQEAgLTc3
MjIsNiArNzcyOCw3IEBACiAJCQkJMzNEM0EzQjYxMzM5NjAwQjAwNzA5QkU0IC8qIFdLTWVkaWFD
YWNoZU1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NUZFMTI0RkYwMjcwMDY4RjIw
QSAvKiBXS011dGFibGVBcnJheS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM0MDc2MDAxMjRGRjAy
NzAwNjhGMjBBIC8qIFdLTXV0YWJsZURpY3Rpb25hcnkuaCBpbiBIZWFkZXJzICovLAorCQkJCUE1
NDI5M0E0MTk1QTQzREEwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVj
b2duaXplci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzA5QUU1RTkxMjUyNTdDMjAwMjU4MjVEIC8q
IFdLTmF0aXZlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBRkRFNjVBMTk1NEE0MkIwMEM0
OEZGQSAvKiBTZXNzaW9uU3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjY5RkE5MTE3NkQx
Q0IwMDQ3MUE1MiAvKiBXS05hdmlnYXRpb25EYXRhUmVmLmggaW4gSGVhZGVycyAqLywKQEAgLTkx
MDUsNiArOTExMiw3IEBACiAJCQkJQkMxMTFBRTAxMTJGNUJDMjAwMzM3QkFCIC8qIFdlYkVycm9y
c01hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNzI4NDQ4MTk1OUY4MDQwMDA3QkNFNSAvKiBT
ZXNzaW9uU3RhdGVDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRkEzQUM4MThF
NjFDNjEwMDNDQ0JBRSAvKiBXS1VzZXJDb250ZW50Q29udHJvbGxlci5tbSBpbiBTb3VyY2VzICov
LAorCQkJCUE1NDI5M0E1MTk1QTQzREQwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hH
ZXN0dXJlUmVjb2duaXplci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUMwMzM3REFFMTI3QTI0RkUw
MDhGRjRGNCAvKiBXZWJFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzAzMkRCQTEwRjQz
ODBGMDA1OEMxNUEgLyogV2ViRXZlbnRDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTJEMTQwRUFGMThGMzdCRTAwMDVFNzVBMCAvKiBQYWdlT3ZlcmxheUNvbnRyb2xsZXIuY3BwIGlu
IFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKaW5kZXggNmNmYzkxOC4u
ZTViNDM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApAQCAtMTEwLDYgKzExMCwx
NCBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6aGlkZUluc3BlY3RvckluZGljYXRpb24oKQog
ewogICAgIG1fcGFnZS0+aGlkZUluc3BlY3RvckluZGljYXRpb24oKTsKIH0KKwordm9pZCBXZWJJ
bnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKQorewor
ICAgIGlmIChlbmFibGVkKQorICAgICAgICBtX3BhZ2UtPmVuYWJsZUluc3BlY3Rvck5vZGVTZWFy
Y2goKTsKKyAgICBlbHNlCisgICAgICAgIG1fcGFnZS0+ZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFy
Y2goKTsKK30KICNlbmRpZgogCiBib29sIFdlYkluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VU
b0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CmluZGV4IGY2OTdmNjMuLmIzZWQ4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAt
NjQsNiArNjQsOCBAQCBwcml2YXRlOgogI2lmIFBMQVRGT1JNKElPUykKICAgICB2aXJ0dWFsIHZv
aWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
aGlkZUluc3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgdm9pZCBk
aWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wpIG92ZXJyaWRlOwogI2VuZGlmCiAKICAgICB2aXJ0
dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggZjk2NTVm
ZC4uOTUxMzYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCkBAIC00NzYsNiArNDc2LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsUG90ZW50aWFs
VGFwKCk7CiAgICAgdm9pZCB0YXBIaWdobGlnaHRBdFBvc2l0aW9uKHVpbnQ2NF90IHJlcXVlc3RJ
RCwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwogCisgICAgdm9pZCBpbnNwZWN0b3JOb2Rl
U2VhcmNoTW92ZVRvUG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOworICAgIHZv
aWQgaW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50Jik7CisKICAgICB2b2lkIGJsdXJBc3Npc3RlZE5vZGUoKTsKICAgICB2b2lkIHNlbGVj
dFdpdGhHZXN0dXJlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgdWludDMyX3QgZ3JhbnVsYXJp
dHksIHVpbnQzMl90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQ2NF90
IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgdXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaGVzLCBib29sIGJhc2VJc1N0
YXJ0LCB1aW50NjRfdCBjYWxsYmFja0lEKTsKQEAgLTUxMyw2ICs1MTYsOSBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCk7CiAgICAgdm9pZCBoaWRlSW5zcGVj
dG9ySW5kaWNhdGlvbigpOworCisgICAgdm9pZCBlbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7
CisgICAgdm9pZCBkaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpOwogI2VuZGlmCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgppbmRleCAyZDEyMjc0Li5hZWU0YzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNTUsNiAr
NTUsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBDb21taXRQ
b3RlbnRpYWxUYXAoKQogICAgIENhbmNlbFBvdGVudGlhbFRhcCgpCiAgICAgVGFwSGlnaGxpZ2h0
QXRQb3NpdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQp
CisgICAgSW5zcGVjdG9yTm9kZVNlYXJjaE1vdmVUb1Bvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9p
bnQgcG9pbnQpCisgICAgSW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihXZWJDb3Jl
OjpGbG9hdFBvaW50IHBvaW50KQogICAgIEJsdXJBc3Npc3RlZE5vZGUoKQogICAgIFNlbGVjdFdp
dGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwg
dWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQppbmRleCA4M2Y0Yjc5Li4wNWZkOGI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC01NzYsNiAr
NTc2LDI1IEBAIHZvaWQgV2ViUGFnZTo6dGFwSGlnaGxpZ2h0QXRQb3NpdGlvbih1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0CiAgICAgc2VuZFRhcEhpZ2hsaWdodEZv
ck5vZGVJZk5lY2Vzc2FyeShyZXF1ZXN0SUQsIG1haW5mcmFtZS5ub2RlUmVzcG9uZGluZ1RvQ2xp
Y2tFdmVudHMocG9zaXRpb24sIGFkanVzdGVkUG9pbnQpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpp
bnNwZWN0b3JOb2RlU2VhcmNoTW92ZVRvUG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRp
b24pCit7CisgICAgSW50UG9pbnQgYWRqdXN0ZWRQb2ludCA9IHJvdW5kZWRJbnRQb2ludChwb3Np
dGlvbik7CisgICAgRnJhbWUmIG1haW5mcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7CisKKyAg
ICBXS0JlZ2luT2JzZXJ2aW5nQ29udGVudENoYW5nZXModHJ1ZSk7CisKKyAgICBtYWluZnJhbWUu
ZXZlbnRIYW5kbGVyKCkubW91c2VNb3ZlZChQbGF0Zm9ybU1vdXNlRXZlbnQoYWRqdXN0ZWRQb2lu
dCwgYWRqdXN0ZWRQb2ludCwgTm9CdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAs
IGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAwKSk7CisgICAgbWFpbmZyYW1lLmRvY3VtZW50
KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKworICAgIFdLU3RvcE9ic2VydmluZ0NvbnRlbnRD
aGFuZ2VzKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6aW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQ
b3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBpZiAoTm9kZSogbm9k
ZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZGVlcGVzdE5vZGVBdExvY2F0aW9uKHBvc2l0aW9uKSkK
KyAgICAgICAgbm9kZS0+aW5zcGVjdCgpOworfQorCiB2b2lkIFdlYlBhZ2U6OmJsdXJBc3Npc3Rl
ZE5vZGUoKQogewogICAgIGlmIChtX2Fzc2lzdGVkTm9kZSAmJiBtX2Fzc2lzdGVkTm9kZS0+aXNF
bGVtZW50Tm9kZSgpKQpAQCAtNjMxLDYgKzY1MCwxNiBAQCB2b2lkIFdlYlBhZ2U6OmhpZGVJbnNw
ZWN0b3JJbmRpY2F0aW9uKCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okhp
ZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCkpOwogfQorCit2b2lkIFdlYlBhZ2U6OmVuYWJsZUluc3Bl
Y3Rvck5vZGVTZWFyY2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5h
YmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpKTsKK30KKwordm9pZCBXZWJQYWdlOjpkaXNhYmxlSW5z
cGVjdG9yTm9kZVNlYXJjaCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpKTsKK30KICNlbmRpZgogCiBzdGF0aWMgRmxvYXRR
dWFkIGlubmVyRnJhbWVRdWFkKEZyYW1lKiBmcmFtZSwgTm9kZSogYXNzaXN0ZWROb2RlKQo=
</data>
<flag name="review"
          id="258269"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233829</attachid>
            <date>2014-06-25 12:29:46 -0700</date>
            <delta_ts>2014-06-25 14:32:04 -0700</delta_ts>
            <desc>[PATCH] Addressed Review Comments</desc>
            <filename>version2.1.patch</filename>
            <type>text/plain</type>
            <size>34026</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxYmU4M2NkLi43Njk4N2MzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE0LTA2LTI1ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisK
KyAgICAgICAgW2lPU106IFdLMiBJbnNwZWN0b3IgTm9kZSBTZWFyY2gKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNDI3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAg
ICAgIEV4cG9ydCBOb2RlOjppbnNwZWN0IGZvciBXZWJLaXQyLgorCiAyMDE0LTA2LTI1ICBEaXJr
IFNjaHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGFsbCBibGVuZCBtb2Rl
cyB0byBmZUJsZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDUwZjU0MTUuLjE4ZWJlNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCkBAIC0zMTUyLDYgKzMxNTIsNyBAQCBfX1pOSzdXZWJDb3JlOURP
TVdpbmRvdzhkb2N1bWVudEV2CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBQTEFURk9STShJ
T1MpCiBfX1pON1dlYkNvcmUxNmZpbmRJbnRlcnNlY3Rpb25FUktOU18xMEZsb2F0UG9pbnRFUzJf
UzJfUzJfUlMwXworX19aTjdXZWJDb3JlNE5vZGU3aW5zcGVjdEV2CiBfX1pOSzdXZWJDb3JlOUZs
b2F0UXVhZDEyY29udGFpbnNRdWFkRVJLUzBfCiBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDEzY29u
dGFpbnNQb2ludEVSS05TXzEwRmxvYXRQb2ludEUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGE0Mzc4
MjEuLjg0YTM5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MCBAQAorMjAxNC0wNi0yNSAgSm9z
ZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdOiBXSzIg
SW5zcGVjdG9yIE5vZGUgU2VhcmNoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzQyNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVy
ZVJlY29nbml6ZXIuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rv
ck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbTogQWRkZWQuCisgICAgICAgICgtW1dLSW5z
cGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIGxvY2F0aW9uSW5WaWV3Ol0pOgorICAg
ICAgICAoLVtXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplciBfcHJvY2Vzc1Rv
dWNoZXM6c3RhdGU6XSk6CisgICAgICAgICgtW1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVS
ZWNvZ25pemVyIHRvdWNoZXNCZWdhbjp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLSW5zcGVj
dG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIHRvdWNoZXNNb3ZlZDp3aXRoRXZlbnQ6XSk6
CisgICAgICAgICgtW1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIHRvdWNo
ZXNFbmRlZDp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdl
c3R1cmVSZWNvZ25pemVyIHRvdWNoZXNDYW5jZWxsZWQ6d2l0aEV2ZW50Ol0pOgorICAgICAgICAo
LVtXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplciByZXNldF0pOgorICAgICAg
ICBHZXN0dXJlIHJlY29nbml6ZXIgdGhhdCB0cmFja3MgYSBzaW5nbGUgdG91Y2gsIHVwZGF0ZXMg
YXMgdGhhdCB0b3VjaAorICAgICAgICBtb3ZlcywgYW5kIGVuZHMgd2hlbiB0aGF0IHRvdWNoIGlz
IGNhbmNlbGxlZCBvciBlbmRzLiBUaGUgbG9jYXRpb24KKyAgICAgICAgb2YgdGhlIGdlc3R1cmUg
cmVjb2duaXplciBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIHRvdWNoIGl0IHdhcyB0cmFja2luZy4K
KworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAg
ICAgICgtW1dLQ29udGVudFZpZXcgY2xlYW51cEludGVyYWN0aW9uXSk6CisgICAgICAgIEhhbmRs
ZSB0aGUgaW5zcGVjdG9yIG5vZGUgc2VhcmNoIGdlc3R1cmUgcmVjb2duaXplciBpZiBuZWVkZWQu
CisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfcmVtb3ZlRGVmYXVsdEdlc3R1cmVSZWNvZ25p
emVyc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hZGREZWZhdWx0R2VzdHVyZVJlY29n
bml6ZXJzXSk6CisgICAgICAgIEhlbHBlcnMgdG8gYWRkIGFuZCByZW1vdmUgdGhlIGRlZmF1bHQg
Z2VzdHVyZXMuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfZW5hYmxlSW5zcGVjdG9yTm9k
ZVNlYXJjaF0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9kaXNhYmxlSW5zcGVjdG9yTm9k
ZVNlYXJjaF0pOgorICAgICAgICBXaGVuIG5vZGUgc2VhcmNoIGlzIGVuYWJsZWQsIHJlbW92ZSBh
bGwgZ2VzdHVyZSByZWNvZ25pemVycyBhbmQKKyAgICAgICAgcmVwbGFjZSB3aXRoIGEgc2luZ2xl
IGluc3BlY3RvciBub2RlIHNlYXJjaCBnZXN0dXJlIHJlY29nbml6ZXIuCisgICAgICAgIExpa2V3
aXNlLCBpbnZlcnNlIHRoYXQgd2hlbiBkaXNhYmxlZC4KKworICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9pbnNwZWN0b3JOb2RlU2VhcmNoUmVjb2duaXplZDpdKToKKyAgICAgICAgTm90aWZ5IHRo
ZSBXZWJQcm9jZXNzIG9mIG5ldyB0b3VjaCBwb3NpdGlvbnMgZHVyaW5nIG5vZGUgc2VhcmNoLgor
CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaGFzU2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDpd
KToKKyAgICAgICAgV2hlbiBpbnNwZWN0b3Igbm9kZSBzZWFyY2ggaXMgZW5hYmxlZCwgZGlzYWJs
ZSBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJ
T1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc3BlY3Rvck5vZGVTZWFyY2hNb3Zl
ZFRvUG9zaXRpb24pOgorICAgICAgICBTZW5kIGEgbW91c2UgbW92ZSB0byB0aGUgbmV3IGxvY2F0
aW9uLiBXZWJDb3JlIHdpbGwgdXBkYXRlIHRoZSBoaWdobGlnaHQuCisKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6aW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbik6CisgICAgICAg
IEluc3BlY3QgdGhlIG5vZGUgYXQgdGhlIGxvY2F0aW9uLgorCisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfZW5hYmxlSW5z
cGVjdG9yTm9kZVNlYXJjaF0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2Rpc2FibGVJbnNwZWN0
b3JOb2RlU2VhcmNoXSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJ
bnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElP
Uy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjplbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpc2FibGVJbnNwZWN0b3JOb2RlU2Vh
cmNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNwZWN0b3JOb2RlU2VhcmNo
RW5kZWRBdFBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjplbmFibGVJ
bnNwZWN0b3JOb2RlU2VhcmNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNh
YmxlSW5zcGVjdG9yTm9kZVNlYXJjaCk6CisgICAgICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50Ojpk
aWRTZXRTZWFyY2hpbmdGb3JOb2RlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjplbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2gpOgorICAgICAg
ICBQYXNzIHRoZSBpbnNwZWN0b3Igbm9kZSBzZWFyY2ggc3RhdGUgdXAgZnJvbSB0aGUgV2ViUHJv
Y2VzcworICAgICAgICB0byB0aGUgV0tDb250ZW50VmlldyBpbiB0aGUgVUlQcm9jZXNzLiBMaWtl
d2lzZSBzb21lIG1lc3NhZ2VzCisgICAgICAgIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbi4KKwog
MjAxNC0wNi0yNSAgTGFzemxvIEdvbWJvcyAgPGwuZ29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFJlbW92ZSBidWlsZCBndWFyZCBmb3IgcHJvZ3Jlc3MgZWxlbWVudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA2MGExODljLi5h
NzQzMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQpAQCAtNjQwLDE2ICs2NDAsNiBAQCBzdGF0aWMgQ0dTaXplIHJvdW5kU2Nyb2xsVmll
d0NvbnRlbnRTaXplKGNvbnN0IFdlYktpdDo6V2ViUGFnZVByb3h5JiBwYWdlLCBDR1NpegogICAg
IH0KIH0KIAotLSAodm9pZClfc2hvd0luc3BlY3RvckhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6
SGlnaGxpZ2h0JiloaWdobGlnaHQKLXsKLSAgICBbX2NvbnRlbnRWaWV3IF9zaG93SW5zcGVjdG9y
SGlnaGxpZ2h0OmhpZ2hsaWdodF07Ci19Ci0KLS0gKHZvaWQpX2hpZGVJbnNwZWN0b3JIaWdobGln
aHQKLXsKLSAgICBbX2NvbnRlbnRWaWV3IF9oaWRlSW5zcGVjdG9ySGlnaGxpZ2h0XTsKLX0KLQog
c3RhdGljIENHRmxvYXQgY29udGVudFpvb21TY2FsZShXS1dlYlZpZXcqIHdlYlZpZXcpCiB7CiAg
ICAgVUlWaWV3ICp6b29tVmlldzsKQEAgLTIxNDcsMTYgKzIxMzcsNiBAQCBzdGF0aWMgaW5saW5l
IFdlYktpdDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmRP
cHRpb25zKQogICAgIFtzZWxmIF91cGRhdGVWaXNpYmxlQ29udGVudFJlY3RzXTsKIH0KIAotLSAo
dm9pZClfc2hvd0luc3BlY3RvckluZGljYXRpb24KLXsKLSAgICBbX2NvbnRlbnRWaWV3IHNldFNo
b3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOllFU107Ci19Ci0KLS0gKHZvaWQpX2hpZGVJbnNwZWN0
b3JJbmRpY2F0aW9uCi17Ci0gICAgW19jb250ZW50VmlldyBzZXRTaG93aW5nSW5zcGVjdG9ySW5k
aWNhdGlvbjpOT107Ci19Ci0KIC0gKHZvaWQpX3NldE92ZXJsYWlkQWNjZXNzb3J5Vmlld3NJbnNl
dDooQ0dTaXplKWluc2V0CiB7CiAgICAgW19jdXN0b21Db250ZW50VmlldyB3ZWJfc2V0T3Zlcmxh
aWRBY2Nlc3NvcnlWaWV3c0luc2V0Omluc2V0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCBkYzViZDBkLi5j
ZjkwYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC05MywxMyArOTMsOSBAQCBzdHJ1Y3QgVmlld1NuYXBz
aG90OwogLSAodm9pZClfd2lsbEludm9rZVVJU2Nyb2xsVmlld0RlbGVnYXRlQ2FsbGJhY2s7CiAt
ICh2b2lkKV9kaWRJbnZva2VVSVNjcm9sbFZpZXdEZWxlZ2F0ZUNhbGxiYWNrOwogCi0tICh2b2lk
KV9zaG93SW5zcGVjdG9ySGlnaGxpZ2h0Oihjb25zdCBXZWJDb3JlOjpIaWdobGlnaHQmKWhpZ2hs
aWdodDsKLS0gKHZvaWQpX2hpZGVJbnNwZWN0b3JIaWdobGlnaHQ7Ci0KIC0gKHZvaWQpX3VwZGF0
ZVZpc2libGVDb250ZW50UmVjdHM7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkg
VUlFZGdlSW5zZXRzIF9jb21wdXRlZENvbnRlbnRJbnNldDsKLQogI2VuZGlmCiBAZW5kCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKaW5kZXggZGZmZmMyZi4uNGE4NmU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTEzMSw5ICsxMzEs
NiBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLRmluZE9wdGlvbnMpIHsKIC0g
KHZvaWQpX2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRoVXBkYXRlczoodm9pZCAoXikodm9pZCkpdXBk
YXRlQmxvY2s7CiAtICh2b2lkKV9lbmRBbmltYXRlZFJlc2l6ZTsKIAotLSAodm9pZClfc2hvd0lu
c3BlY3RvckluZGljYXRpb247Ci0tICh2b2lkKV9oaWRlSW5zcGVjdG9ySW5kaWNhdGlvbjsKLQog
LSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3QpcmVjdEluVmlld0Nvb3JkaW5hdGVzIGludG9J
bWFnZU9mV2lkdGg6KENHRmxvYXQpaW1hZ2VXaWR0aCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShDR0ltYWdlUmVmKSljb21wbGV0aW9uSGFuZGxlcjsKIAogLSAodm9pZClfb3ZlcnJpZGVMYXlv
dXRQYXJhbWV0ZXJzV2l0aE1pbmltdW1MYXlvdXRTaXplOihDR1NpemUpbWluaW11bUxheW91dFNp
emUgbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFsVUk6KENHU2l6ZSltaW5pbXVtTGF5b3V0U2l6
ZUZvck1pbmltYWxVSSBtYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTooQ0dTaXplKW1heGlt
dW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50
LmgKaW5kZXggNGJmZjQ5Zi4uZTdiOTJkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNs
aWVudC5oCkBAIC0yNzYsNiArMjc2LDkgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNo
b3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoaWRlSW5zcGVj
dG9ySW5kaWNhdGlvbigpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnNwZWN0b3JO
b2RlU2VhcmNoKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlSW5zcGVjdG9yTm9kZVNl
YXJjaCgpID0gMDsKICNlbmRpZgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA0Y2Y4NGEzLi45OTc5NjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04NDUsNiArODQ1LDkgQEAgcHVibGljOgogICAgIHZvaWQg
Y2FuY2VsUG90ZW50aWFsVGFwKCk7CiAgICAgdm9pZCB0YXBIaWdobGlnaHRBdFBvc2l0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCB1aW50NjRfdCYgcmVxdWVzdElEKTsKIAorICAgIHZv
aWQgaW5zcGVjdG9yTm9kZVNlYXJjaE1vdmVkVG9Qb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9h
dFBvaW50Jik7CisgICAgdm9pZCBpbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKwogICAgIHZvaWQgYmx1ckFzc2lzdGVkTm9kZSgp
OwogI2VuZGlmCiAKQEAgLTEyMTIsNiArMTIxNSw5IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNo
b3dJbnNwZWN0b3JJbmRpY2F0aW9uKCk7CiAgICAgdm9pZCBoaWRlSW5zcGVjdG9ySW5kaWNhdGlv
bigpOworCisgICAgdm9pZCBlbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7CisgICAgdm9pZCBk
aXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpOwogI2VuZGlmCiAKICAgICB2b2lkIG5vdGlmeVJl
dmVhbGVkU2VsZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5NWU4NWY1Ni4uZThhMTcyMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNDcs
NiArMzQ3LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIFNob3dJbnNwZWN0
b3JJbmRpY2F0aW9uKCkKICAgICBIaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpCisKKyAgICBFbmFi
bGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkKKyAgICBEaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgp
CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1Bh
Z2VDbGllbnRJbXBsSU9TLmgKaW5kZXggZGRkYjRhNC4uNTlhMmJjNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtMTM3LDYgKzEz
Nyw5IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFsIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRp
b24oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgaGlkZUluc3BlY3RvckluZGljYXRpb24o
KSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgdm9pZCBlbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNo
KCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNo
KCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCB6b29tVG9SZWN0KFdlYkNv
cmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1heGltdW1TY2FsZSkg
b3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VD
bGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50
SW1wbElPUy5tbQppbmRleCAxYmZjZDExLi5hN2FjNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KQEAgLTQ4NywyMiArNDg3LDMy
IEBAIGJvb2wgUGFnZUNsaWVudEltcGw6OmhhbmRsZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkq
LCBXZWJGcmFtZVByb3h5KiwgV2ViT3BlblBhCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIHZvaWQg
UGFnZUNsaWVudEltcGw6OnNob3dJbnNwZWN0b3JIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6SGln
aGxpZ2h0JiBoaWdobGlnaHQpCiB7Ci0gICAgW21fd2ViVmlldyBfc2hvd0luc3BlY3RvckhpZ2hs
aWdodDpoaWdobGlnaHRdOworICAgIFttX2NvbnRlbnRWaWV3IF9zaG93SW5zcGVjdG9ySGlnaGxp
Z2h0OmhpZ2hsaWdodF07CiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmhpZGVJbnNwZWN0b3JI
aWdobGlnaHQoKQogewotICAgIFttX3dlYlZpZXcgX2hpZGVJbnNwZWN0b3JIaWdobGlnaHRdOwor
ICAgIFttX2NvbnRlbnRWaWV3IF9oaWRlSW5zcGVjdG9ySGlnaGxpZ2h0XTsKIH0KIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6c2hvd0luc3BlY3RvckluZGljYXRpb24oKQogewotICAgIFttX3dlYlZp
ZXcgX3Nob3dJbnNwZWN0b3JJbmRpY2F0aW9uXTsKKyAgICBbbV9jb250ZW50VmlldyBzZXRTaG93
aW5nSW5zcGVjdG9ySW5kaWNhdGlvbjpZRVNdOwogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpo
aWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpCiB7Ci0gICAgW21fd2ViVmlldyBfaGlkZUluc3BlY3Rv
ckluZGljYXRpb25dOworICAgIFttX2NvbnRlbnRWaWV3IHNldFNob3dpbmdJbnNwZWN0b3JJbmRp
Y2F0aW9uOk5PXTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZW5hYmxlSW5zcGVjdG9yTm9k
ZVNlYXJjaCgpCit7CisgICAgW21fY29udGVudFZpZXcgX2VuYWJsZUluc3BlY3Rvck5vZGVTZWFy
Y2hdOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpkaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJj
aCgpCit7CisgICAgW21fY29udGVudFZpZXcgX2Rpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoXTsK
IH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
Q29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0KaW5kZXggZDI4NjM2Zi4uMDUxYjcxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtNjQzLDYgKzY0Myw5IEBAIHN0YXRpYyB2b2lk
IGxheWVyUGF0aChDQVNoYXBlTGF5ZXIgKmxheWVyLCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVh
ZCkKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CiB7CiAgICAgW3NlbGYgY2xlYW51cEludGVyYWN0
aW9uXTsKKworICAgIFtzZWxmIHNldFNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOk5PXTsKKyAg
ICBbc2VsZiBfaGlkZUluc3BlY3RvckhpZ2hsaWdodF07CiB9CiAKIC0gKHZvaWQpX2RpZFJlbGF1
bmNoUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0Nv
bnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXggMDI3NzI1Mi4uNmRjNTEzYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFj
dGlvbi5oCkBAIC02Miw2ICs2Miw3IEBAIGNsYXNzIFdlYlBhZ2VQcm94eTsKIAogQGNsYXNzIFdL
QWN0aW9uU2hlZXRBc3Npc3RhbnQ7CiBAY2xhc3MgV0tGb3JtSW5wdXRTZXNzaW9uOworQGNsYXNz
IFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyOwogQGNsYXNzIFdlYklPU0V2
ZW50OwogQGNsYXNzIF9VSUhpZ2hsaWdodFZpZXc7CiBAY2xhc3MgX1VJV2ViSGlnaGxpZ2h0TG9u
Z1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CkBAIC05Miw2ICs5Myw3IEBAIHN0cnVjdCBXS0F1dG9D
b3JyZWN0aW9uRGF0YSB7CiAgICAgUmV0YWluUHRyPFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6
ZXI+IF9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplcjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0
dXJlUmVjb2duaXplcj4gX2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyOwogICAgIFJldGFpblB0
cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29n
bml6ZXI7CisgICAgUmV0YWluUHRyPFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyPiBfaW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyOwogCiAgICAgUmV0YWlu
UHRyPFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQ+IF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50
OwogICAgIFJldGFpblB0cjxVSVdLU2VsZWN0aW9uQXNzaXN0YW50PiBfd2ViU2VsZWN0aW9uQXNz
aXN0YW50OwpAQCAtMTM2LDYgKzEzOCw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7
CiAgICAgQk9PTCBfcG90ZW50aWFsVGFwSW5Qcm9ncmVzczsKICAgICBCT09MIF9zZWxlY3Rpb25O
ZWVkc1VwZGF0ZTsKICAgICBCT09MIF91c2luZ0dlc3R1cmVGb3JTZWxlY3Rpb247CisgICAgQk9P
TCBfaW5zcGVjdG9yTm9kZVNlYXJjaEVuYWJsZWQ7CiB9CiAKIEBlbmQKQEAgLTE3Niw2ICsxNzks
OCBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEgewogLSAodm9pZClfZGlkSGFuZGxlS2V5
RXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQ7CiAtIChWZWN0b3I8V2ViS2l0OjpPcHRpb25JdGVt
PiYpIGFzc2lzdGVkTm9kZVNlbGVjdE9wdGlvbnM7CiAtICh2b2lkKV91cGRhdGVVbnNjYWxlZFZp
ZXc7CistICh2b2lkKV9lbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoOworLSAodm9pZClfZGlzYWJs
ZUluc3BlY3Rvck5vZGVTZWFyY2g7CiBAZW5kCiAKICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRl
cmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0lu
dGVyYWN0aW9uLm1tCmluZGV4IDRlNGNlMzkuLmI0Y2NkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBA
IC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJXS0FjdGlvblNoZWV0QXNzaXN0YW50LmgiCiAjaW1w
b3J0ICJXS0Zvcm1JbnB1dENvbnRyb2wuaCIKICNpbXBvcnQgIldLRm9ybVNlbGVjdENvbnRyb2wu
aCIKKyNpbXBvcnQgIldLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmgiCiAj
aW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlLmgiCiAjaW1wb3J0ICJXZWJFdmVudC5oIgogI2ltcG9y
dCAiV2ViSU9TRXZlbnRGYWN0b3J5LmgiCkBAIC0yNzMsNiArMjc0LDEzIEBAIHN0YXRpYyBjb25z
dCBmbG9hdCB0YXBBbmRIb2xkRGVsYXkgID0gMC43NTsKICAgICBbX3R3b0ZpbmdlckRvdWJsZVRh
cEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CiAgICAgW3NlbGYgcmVtb3ZlR2Vz
dHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgp
XTsKIAorICAgIF9pbnNwZWN0b3JOb2RlU2VhcmNoRW5hYmxlZCA9IE5POworICAgIGlmIChfaW5z
cGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyKSB7CisgICAgICAgIFtfaW5zcGVjdG9y
Tm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRlOm5pbF07CisgICAgICAgIFtz
ZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9pbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJl
Y29nbml6ZXIuZ2V0KCldOworICAgICAgICBfaW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNv
Z25pemVyID0gbmlsOworICAgIH0KKwogICAgIGlmIChfZmlsZVVwbG9hZFBhbmVsKSB7CiAgICAg
ICAgIFtfZmlsZVVwbG9hZFBhbmVsIHNldERlbGVnYXRlOm5pbF07CiAgICAgICAgIFtfZmlsZVVw
bG9hZFBhbmVsIGRpc21pc3NdOwpAQCAtMjgwLDYgKzI4OCwyNiBAQCBzdGF0aWMgY29uc3QgZmxv
YXQgdGFwQW5kSG9sZERlbGF5ICA9IDAuNzU7CiAgICAgfQogfQogCistICh2b2lkKV9yZW1vdmVE
ZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCit7CisgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29n
bml6ZXI6X3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisgICAgW3NlbGYgcmVt
b3ZlR2VzdHVyZVJlY29nbml6ZXI6X3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsK
KyAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfaGlnaGxpZ2h0TG9uZ1ByZXNzR2Vz
dHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVy
Ol9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisgICAgW3NlbGYgcmVtb3ZlR2Vz
dHVyZVJlY29nbml6ZXI6X2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBb
c2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJl
Y29nbml6ZXIuZ2V0KCldOworfQorCistICh2b2lkKV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6
ZXJzCit7CisgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3RvdWNoRXZlbnRHZXN0dXJl
UmVjb2duaXplci5nZXQoKV07CisgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X3Npbmds
ZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2du
aXplcjpfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAgIFtz
ZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQo
KV07CisgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29nbml6ZXI6X2RvdWJsZVRhcEdlc3R1cmVSZWNv
Z25pemVyLmdldCgpXTsKKyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2Vy
RG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworfQorCiAtIChVSVZpZXcqKXVuc2Nh
bGVkVmlldwogewogICAgIHJldHVybiBfaW52ZXJzZVNjYWxlUm9vdFZpZXcuZ2V0KCk7CkBAIC0y
OTgsNiArMzI2LDI2IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0YXBBbmRIb2xkRGVsYXkgID0gMC43
NTsKICAgICBbc2VsZiBfdXBkYXRlQ2hhbmdlZFNlbGVjdGlvbl07CiB9CiAKKy0gKHZvaWQpX2Vu
YWJsZUluc3BlY3Rvck5vZGVTZWFyY2gKK3sKKyAgICBfaW5zcGVjdG9yTm9kZVNlYXJjaEVuYWJs
ZWQgPSBZRVM7CisKKyAgICBbc2VsZiBfY2FuY2VsSW50ZXJhY3Rpb25dOworCisgICAgW3NlbGYg
X3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdOworICAgIF9pbnNwZWN0b3JOb2RlU2Vh
cmNoR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5TKFtbV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2Vz
dHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRoVGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3Rv
cihfaW5zcGVjdG9yTm9kZVNlYXJjaFJlY29nbml6ZWQ6KV0pOworICAgIFtzZWxmIGFkZEdlc3R1
cmVSZWNvZ25pemVyOl9pbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCld
OworfQorCistICh2b2lkKV9kaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaAoreworICAgIF9pbnNw
ZWN0b3JOb2RlU2VhcmNoRW5hYmxlZCA9IE5POworCisgICAgW3NlbGYgX2FkZERlZmF1bHRHZXN0
dXJlUmVjb2duaXplcnNdOworICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9pbnNw
ZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAgIF9pbnNwZWN0b3JO
b2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIgPSBuaWw7Cit9CisKIC0gKFVJVmlldyAqKWhpdFRl
c3Q6KENHUG9pbnQpcG9pbnQgd2l0aEV2ZW50Oig6OlVJRXZlbnQgKilldmVudAogewogICAgIGZv
ciAoVUlWaWV3ICpzdWJWaWV3IGluIFtfaW52ZXJzZVNjYWxlUm9vdFZpZXcuZ2V0KCkgc3Vidmll
d3NdKSB7CkBAIC0zNzAsNiArNDE4LDI1IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0YXBBbmRIb2xk
RGVsYXkgID0gMC43NTsKICAgICAgICAgX2NhblNlbmRUb3VjaEV2ZW50c0FzeW5jaHJvbm91c2x5
ID0gTk87CiB9CiAKKy0gKHZvaWQpX2luc3BlY3Rvck5vZGVTZWFyY2hSZWNvZ25pemVkOihVSUdl
c3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29nbml6ZXIKK3sKKyAgICBBU1NFUlQoX2luc3Bl
Y3Rvck5vZGVTZWFyY2hFbmFibGVkKTsKKworICAgIENHUG9pbnQgcG9pbnQgPSBbZ2VzdHVyZVJl
Y29nbml6ZXIgbG9jYXRpb25JblZpZXc6c2VsZl07CisKKyAgICBzd2l0Y2ggKGdlc3R1cmVSZWNv
Z25pemVyLnN0YXRlKSB7CisgICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbjoK
KyAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWQ6CisgICAgICAgIF9wYWdl
LT5pbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKHBvaW50KTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZDoKKyAgICBjYXNlIFVJ
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxlZDoKKyAgICBkZWZhdWx0OiAvLyBUbyBlbnN1
cmUgd2UgdHVybiBvZmYgbm9kZSBzZWFyY2guCisgICAgICAgIF9wYWdlLT5pbnNwZWN0b3JOb2Rl
U2VhcmNoRW5kZWRBdFBvc2l0aW9uKHBvaW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQor
CiBzdGF0aWMgRmxvYXRRdWFkIGluZmxhdGVRdWFkKGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgZmxv
YXQgaW5mbGF0ZVNpemUpCiB7CiAgICAgLy8gV2Ugc29ydCB0aGUgb3V0cHV0IHBvaW50cyBsaWtl
IHRoaXMgKGFzIGV4cGVjdGVkIGJ5IHRoZSBoaWdobGlnaHQgdmlldyk6CkBAIC03MzQsNiArODAx
LDkgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2FtZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAq
YSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkKIAogLSAoQk9PTCloYXNTZWxlY3RhYmxlUG9z
aXRpb25BdFBvaW50OihDR1BvaW50KXBvaW50CiB7CisgICAgaWYgKF9pbnNwZWN0b3JOb2RlU2Vh
cmNoRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIE5POworCiAgICAgW3NlbGYgZW5zdXJlUG9zaXRp
b25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cG9pbnRdOwogICAgIHJldHVybiBfcG9zaXRpb25JbmZv
cm1hdGlvbi5pc1NlbGVjdGFibGU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNv
Z25pemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZlZjVlOAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0b3JO
b2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9ydCA8VUlLaXQvVUlHZXN0dXJlUmVjb2duaXpl
ci5oPgorCitAaW50ZXJmYWNlIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVy
IDogVUlHZXN0dXJlUmVjb2duaXplcgorLSAoQ0dQb2ludClsb2NhdGlvbkluVmlldzooVUlWaWV3
ICopdmlldzsKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVj
b2duaXplci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjhiOWJiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rv
ck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbQpAQCAtMCwwICsxLDgzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0luc3BlY3Rvck5vZGVTZWFyY2hH
ZXN0dXJlUmVjb2duaXplci5oIgorCisjaWYgUExBVEZPUk0oSU9TKQorCisjaW1wb3J0IDxVSUtp
dC9VSUdlc3R1cmVSZWNvZ25pemVyU3ViY2xhc3MuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIu
aD4KKworQGltcGxlbWVudGF0aW9uIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyIHsKKyAgICBSZXRhaW5QdHI8VUlUb3VjaD4gX3RvdWNoOworfQorCistIChDR1BvaW50KWxv
Y2F0aW9uSW5WaWV3OihVSVZpZXcgKil2aWV3Cit7CisgICAgcmV0dXJuIFtfdG91Y2ggbG9jYXRp
b25JblZpZXc6dmlld107Cit9CisKKy0gKHZvaWQpX3Byb2Nlc3NUb3VjaGVzOihOU1NldCAqKXRv
dWNoZXMgc3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSluZXdTdGF0ZQoreworICAgIEFT
U0VSVChfdG91Y2gpOworICAgIGlmIChbdG91Y2hlcyBjb250YWluc09iamVjdDpfdG91Y2guZ2V0
KCldKQorICAgICAgICBzZWxmLnN0YXRlID0gbmV3U3RhdGU7Cit9CisKKy0gKHZvaWQpdG91Y2hl
c0JlZ2FuOihOU1NldCAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAg
ICBpZiAoc2VsZi5zdGF0ZSAhPSBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVQb3NzaWJsZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFfdG91Y2gpOworICAgIF90b3VjaCA9IFt0b3Vj
aGVzIGFueU9iamVjdF07CisKKyAgICBbc2VsZiBfcHJvY2Vzc1RvdWNoZXM6dG91Y2hlcyBzdGF0
ZTpVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbl07Cit9CisKKy0gKHZvaWQpdG91Y2hlc01v
dmVkOihOU1NldCAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBb
c2VsZiBfcHJvY2Vzc1RvdWNoZXM6dG91Y2hlcyBzdGF0ZTpVSUdlc3R1cmVSZWNvZ25pemVyU3Rh
dGVDaGFuZ2VkXTsKK30KKworLSAodm9pZCl0b3VjaGVzRW5kZWQ6KE5TU2V0ICopdG91Y2hlcyB3
aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAoreworICAgIFtzZWxmIF9wcm9jZXNzVG91Y2hlczp0
b3VjaGVzIHN0YXRlOlVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkXTsKK30KKworLSAodm9p
ZCl0b3VjaGVzQ2FuY2VsbGVkOihOU1NldCAqKXRvdWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50ICop
ZXZlbnQKK3sKKyAgICBbc2VsZiBfcHJvY2Vzc1RvdWNoZXM6dG91Y2hlcyBzdGF0ZTpVSUdlc3R1
cmVSZWNvZ25pemVyU3RhdGVDYW5jZWxsZWRdOworfQorCistICh2b2lkKXJlc2V0Cit7CisgICAg
X3RvdWNoID0gbmlsOworfQorCitAZW5kCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCAxM2IxNDgzLi5mOGQyMzAyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpA
QCAtNTg3LDYgKzU4NywxNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6dGFwSGlnaGxpZ2h0QXRQb3Np
dGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbiwgdQogICAgIHByb2Nlc3Mo
KS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUYXBIaWdobGlnaHRBdFBvc2l0aW9uKHJlcXVlc3RJ
RCwgcG9zaXRpb24pLCBtX3BhZ2VJRCk7CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjppbnNwZWN0
b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBv
c2l0aW9uKQoreworICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNwZWN0
b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKHBvc2l0aW9uKSwgbV9wYWdlSUQpOworfQorCit2
b2lkIFdlYlBhZ2VQcm94eTo6aW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihjb25z
dCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBwcm9jZXNzKCkuc2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6SW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihwb3Np
dGlvbiksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmJsdXJBc3Npc3RlZE5v
ZGUoKQogewogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpCbHVyQXNzaXN0
ZWROb2RlKCksIG1fcGFnZUlEKTsKQEAgLTY2NSw2ICs2NzUsMTYgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmhpZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCkKIHsKICAgICBtX3BhZ2VDbGllbnQuaGlkZUlu
c3BlY3RvckluZGljYXRpb24oKTsKIH0KKwordm9pZCBXZWJQYWdlUHJveHk6OmVuYWJsZUluc3Bl
Y3Rvck5vZGVTZWFyY2goKQoreworICAgIG1fcGFnZUNsaWVudC5lbmFibGVJbnNwZWN0b3JOb2Rl
U2VhcmNoKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpkaXNhYmxlSW5zcGVjdG9yTm9kZVNl
YXJjaCgpCit7CisgICAgbV9wYWdlQ2xpZW50LmRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7
Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmZvY3VzTmV4dEFzc2lzdGVkTm9kZShi
b29sIGlzRm9yd2FyZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagppbmRleCA0N2E2NmQzLi42Yzk1ODI0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMTA1LDYgKzExMDUs
OCBAQAogCQlBMUM1MTJDOTE5MDY1NkU1MDA0NDg5MTQgLyogV2ViUXVpY2tMb29rSGFuZGxlQ2xp
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM1
MTJDNzE5MDY1NkU1MDA0NDg5MTQgLyogV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmggKi87IH07
CiAJCUExREY2MzEyMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExREY2MzEwMThFMEI3Qzgw
MDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSAqLzsgfTsKIAkJQTFERjYzMTMxOEUwQjdDODAw
M0EzRTJBIC8qIERvd25sb2FkQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMURGNjMxMTE4RTBCN0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGll
bnQuaCAqLzsgfTsKKwkJQTU0MjkzQTQxOTVBNDNEQTAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9k
ZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBNTQyOTNBMjE5NUE0M0M2MDAyNzgyQzcgLyogV0tJbnNwZWN0b3JO
b2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaCAqLzsgfTsKKwkJQTU0MjkzQTUxOTVBNDNERDAw
Mjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0MjkzQTMxOTVBNDND
NjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tICov
OyB9OwogCQlBNThCNkYwODE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFuZWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1OEI2RjA2MThG
Q0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5oICovOyB9OwogCQlBNThCNkYwOTE4
RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFuZWwubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNThCNkYwNzE4RkNBNzMzMDA4Q0JBNTMgLyog
V0tGaWxlVXBsb2FkUGFuZWwubW0gKi87IH07CiAJCUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAv
KiBXS1BhZ2VWaXNpYmlsaXR5VHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1RUZEMzhCMTZCMEU4OEMwMEIyRjBFOCAvKiBXS1BhZ2VWaXNpYmls
aXR5VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMzE1MCw2ICszMTUyLDggQEAKIAkJQTFFREQyREIxODg0Qjk2NDAwQkJGRTk4IC8qIFBs
dWdpblByb2Nlc3NTaGltLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFBsdWdpblByb2Nlc3NTaGlt
LnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUVERDJEQzE4ODRCOUI1
MDBCQkZFOTggLyogU2VjSXRlbVNoaW0ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU2VjSXRlbVNo
aW0ueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExRUREMkREMTg4NEI5
RTMwMEJCRkU5OCAvKiBXZWJQcm9jZXNzU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJQ
cm9jZXNzU2hpbS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0Mjkz
QTIxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyLmg7IHBhdGggPSBpb3MvV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0MjkzQTMxOTVBNDNDNjAwMjc4MkM3
IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIubW07IHBh
dGggPSBpb3MvV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OEI2RjA2MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0Zp
bGVVcGxvYWRQYW5lbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXS0ZpbGVV
cGxvYWRQYW5lbC5oOyBwYXRoID0gaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OEI2RjA3MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0Zp
bGVVcGxvYWRQYW5lbC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9
IFdLRmlsZVVwbG9hZFBhbmVsLm1tOyBwYXRoID0gaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVs
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUVGRDM4QjE2QjBFODhDMDBCMkYw
RTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLUGFnZVZpc2liaWxpdHlUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtNDgyOSw2ICs0ODMzLDggQEAKIAkJCQkwRkNCNEUzRjE4QkJFMDQ0MDAwRkNGQzkgLyog
V0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmggKi8sCiAJCQkJMEZDQjRFNDAxOEJCRTA0NDAwMEZD
RkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbSAqLywKIAkJCQkwRkNCNEU0MTE4QkJF
MDQ0MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TT2JqQ1NlY3VyaXR5T3JpZ2lu
Lm1tICovLAorCQkJCUE1NDI5M0EyMTk1QTQzQzYwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVT
ZWFyY2hHZXN0dXJlUmVjb2duaXplci5oICovLAorCQkJCUE1NDI5M0EzMTk1QTQzQzYwMDI3ODJD
NyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbSAqLywKIAkJCQkw
RkNCNEU0NDE4QkJFMDQ0MDAwRkNGQzkgLyogV0tTY3JvbGxWaWV3LmggKi8sCiAJCQkJMEZDQjRF
NDUxOEJCRTA0NDAwMEZDRkM5IC8qIFdLU2Nyb2xsVmlldy5tbSAqLywKIAkJCQlBMTE1REM2RTE5
MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmlld1ByaW50Rm9ybWF0dGVyLmggKi8sCkBAIC03NzIy
LDYgKzc3MjgsNyBAQAogCQkJCTMzRDNBM0I2MTMzOTYwMEIwMDcwOUJFNCAvKiBXS01lZGlhQ2Fj
aGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzVGRTEyNEZGMDI3MDA2OEYyMEEg
LyogV0tNdXRhYmxlQXJyYXkuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3NjAwMTI0RkYwMjcw
MDY4RjIwQSAvKiBXS011dGFibGVEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTQy
OTNBNDE5NUE0M0RBMDAyNzgyQzcgLyogV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29n
bml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMwOUFFNUU5MTI1MjU3QzIwMDI1ODI1RCAvKiBX
S05hdGl2ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUZERTY1QTE5NTRBNDJCMDBDNDhG
RkEgLyogU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQ0Y2OUZBOTExNzZEMUNC
MDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YVJlZi5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTA1
LDYgKzkxMTIsNyBAQAogCQkJCUJDMTExQUUwMTEyRjVCQzIwMDMzN0JBQiAvKiBXZWJFcnJvcnNN
YWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTcyODQ0ODE5NTlGODA0MDAwN0JDRTUgLyogU2Vz
c2lvblN0YXRlQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUZBM0FDODE4RTYx
QzYxMDAzQ0NCQUUgLyogV0tVc2VyQ29udGVudENvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywK
KwkJCQlBNTQyOTNBNTE5NUE0M0REMDAyNzgyQzcgLyogV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2Vz
dHVyZVJlY29nbml6ZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0RBRTEyN0EyNEZFMDA4
RkY0RjQgLyogV2ViRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMwMzJEQkExMEY0Mzgw
RjAwNThDMTVBIC8qIFdlYkV2ZW50Q29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQky
RDE0MEVBRjE4RjM3QkUwMDA1RTc1QTAgLyogUGFnZU92ZXJsYXlDb250cm9sbGVyLmNwcCBpbiBT
b3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwCmluZGV4IDZjZmM5MTguLmU1
YjQzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTExMCw2ICsxMTAsMTQg
QEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmhpZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCkKIHsK
ICAgICBtX3BhZ2UtPmhpZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCk7CiB9CisKK3ZvaWQgV2ViSW5z
cGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICBpZiAoZW5hYmxlZCkKKyAgICAgICAgbV9wYWdlLT5lbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNo
KCk7CisgICAgZWxzZQorICAgICAgICBtX3BhZ2UtPmRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNo
KCk7Cit9CiAjZW5kaWYKIAogYm9vbCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9G
cm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApp
bmRleCBmNjk3ZjYzLi5iM2VkOGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTY0
LDYgKzY0LDggQEAgcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lk
IHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGhp
ZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCkgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
U2V0U2VhcmNoaW5nRm9yTm9kZShib29sKSBvdmVycmlkZTsKICNlbmRpZgogCiAgICAgdmlydHVh
bCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGY5NjU1ZmQu
LjIxNGNhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtNDc2LDYgKzQ3Niw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGNhbmNlbFBvdGVudGlhbFRh
cCgpOwogICAgIHZvaWQgdGFwSGlnaGxpZ2h0QXRQb3NpdGlvbih1aW50NjRfdCByZXF1ZXN0SUQs
IGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKIAorICAgIHZvaWQgaW5zcGVjdG9yTm9kZVNl
YXJjaE1vdmVkVG9Qb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CisgICAgdm9p
ZCBpbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0
UG9pbnQmKTsKKwogICAgIHZvaWQgYmx1ckFzc2lzdGVkTm9kZSgpOwogICAgIHZvaWQgc2VsZWN0
V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0
eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDY0X3Qg
Y2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQzMl90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3Rh
cnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAtNTEzLDYgKzUxNiw5IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKTsKICAgICB2b2lkIGhpZGVJbnNwZWN0
b3JJbmRpY2F0aW9uKCk7CisKKyAgICB2b2lkIGVuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKTsK
KyAgICB2b2lkIGRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7CiAjZW5kaWYKICNlbmRpZgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCmluZGV4IDJkMTIyNzQuLmM2YjRlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC01NSw2ICs1
NSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIENvbW1pdFBv
dGVudGlhbFRhcCgpCiAgICAgQ2FuY2VsUG90ZW50aWFsVGFwKCkKICAgICBUYXBIaWdobGlnaHRB
dFBvc2l0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwgV2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkK
KyAgICBJbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9p
bnQgcG9pbnQpCisgICAgSW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihXZWJDb3Jl
OjpGbG9hdFBvaW50IHBvaW50KQogICAgIEJsdXJBc3Npc3RlZE5vZGUoKQogICAgIFNlbGVjdFdp
dGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50MzJfdCBncmFudWxhcml0eSwg
dWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICBVcGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2lu
dCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9vbCBiYXNlSXNTdGFydCwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbQppbmRleCA4M2Y0Yjc5Li44MTY1YjZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC01NzYsNiAr
NTc2LDI1IEBAIHZvaWQgV2ViUGFnZTo6dGFwSGlnaGxpZ2h0QXRQb3NpdGlvbih1aW50NjRfdCBy
ZXF1ZXN0SUQsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0CiAgICAgc2VuZFRhcEhpZ2hsaWdodEZv
ck5vZGVJZk5lY2Vzc2FyeShyZXF1ZXN0SUQsIG1haW5mcmFtZS5ub2RlUmVzcG9uZGluZ1RvQ2xp
Y2tFdmVudHMocG9zaXRpb24sIGFkanVzdGVkUG9pbnQpKTsKIH0KIAordm9pZCBXZWJQYWdlOjpp
bnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uKQoreworICAgIEludFBvaW50IGFkanVzdGVkUG9pbnQgPSByb3VuZGVkSW50UG9pbnQocG9z
aXRpb24pOworICAgIEZyYW1lJiBtYWluZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpOworCisg
ICAgV0tCZWdpbk9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKHRydWUpOworCisgICAgbWFpbmZyYW1l
LmV2ZW50SGFuZGxlcigpLm1vdXNlTW92ZWQoUGxhdGZvcm1Nb3VzZUV2ZW50KGFkanVzdGVkUG9p
bnQsIGFkanVzdGVkUG9pbnQsIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCkpOworICAgIG1haW5mcmFtZS5kb2N1bWVu
dCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisKKyAgICBXS1N0b3BPYnNlcnZpbmdDb250ZW50
Q2hhbmdlcygpOworfQorCit2b2lkIFdlYlBhZ2U6Omluc3BlY3Rvck5vZGVTZWFyY2hFbmRlZEF0
UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24pCit7CisgICAgaWYgKE5vZGUqIG5v
ZGUgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRlZXBlc3ROb2RlQXRMb2NhdGlvbihwb3NpdGlvbikp
CisgICAgICAgIG5vZGUtPmluc3BlY3QoKTsKK30KKwogdm9pZCBXZWJQYWdlOjpibHVyQXNzaXN0
ZWROb2RlKCkKIHsKICAgICBpZiAobV9hc3Npc3RlZE5vZGUgJiYgbV9hc3Npc3RlZE5vZGUtPmlz
RWxlbWVudE5vZGUoKSkKQEAgLTYzMSw2ICs2NTAsMTYgQEAgdm9pZCBXZWJQYWdlOjpoaWRlSW5z
cGVjdG9ySW5kaWNhdGlvbigpCiB7CiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpI
aWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpKTsKIH0KKwordm9pZCBXZWJQYWdlOjplbmFibGVJbnNw
ZWN0b3JOb2RlU2VhcmNoKCkKK3sKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkVu
YWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKSk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6ZGlzYWJsZUlu
c3BlY3Rvck5vZGVTZWFyY2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKSk7Cit9CiAjZW5kaWYKIAogc3RhdGljIEZsb2F0
UXVhZCBpbm5lckZyYW1lUXVhZChGcmFtZSogZnJhbWUsIE5vZGUqIGFzc2lzdGVkTm9kZSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233837</attachid>
            <date>2014-06-25 14:32:04 -0700</date>
            <delta_ts>2014-06-25 16:13:49 -0700</delta_ts>
            <desc>[PATCH] Addressed Review Comments</desc>
            <filename>the-bomb.patch</filename>
            <type>text/plain</type>
            <size>33968</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwN2FhZGRhLi44ZjI1NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMg
QEAKKzIwMTQtMDYtMjUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbaU9TXTogV0syIEluc3BlY3RvciBOb2RlIFNlYXJjaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0Mjc5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgRXhwb3J0IE5vZGU6Omluc3BlY3QgZm9yIFdlYktpdDIuCisKIDIwMTQtMDYtMjUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KICAgICAgICAgICAgIEFuZCBw
ZWF2b0BvdXRsb29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CmluZGV4IDUwZjU0MTUuLjE4ZWJlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0zMTUyLDYg
KzMxNTIsNyBAQCBfX1pOSzdXZWJDb3JlOURPTVdpbmRvdzhkb2N1bWVudEV2CiAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SKSAmJiBQTEFURk9STShJT1MpCiBfX1pON1dlYkNvcmUxNmZpbmRJbnRlcnNl
Y3Rpb25FUktOU18xMEZsb2F0UG9pbnRFUzJfUzJfUzJfUlMwXworX19aTjdXZWJDb3JlNE5vZGU3
aW5zcGVjdEV2CiBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDEyY29udGFpbnNRdWFkRVJLUzBfCiBf
X1pOSzdXZWJDb3JlOUZsb2F0UXVhZDEzY29udGFpbnNQb2ludEVSS05TXzEwRmxvYXRQb2ludEUK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGE0Mzc4MjEuLjg0YTM5ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MCBAQAorMjAxNC0wNi0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgorCisgICAgICAgIFtpT1NdOiBXSzIgSW5zcGVjdG9yIE5vZGUgU2VhcmNoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzQyNzkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
V0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaDogQWRkZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5t
bTogQWRkZWQuCisgICAgICAgICgtW1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyIGxvY2F0aW9uSW5WaWV3Ol0pOgorICAgICAgICAoLVtXS0luc3BlY3Rvck5vZGVTZWFyY2hH
ZXN0dXJlUmVjb2duaXplciBfcHJvY2Vzc1RvdWNoZXM6c3RhdGU6XSk6CisgICAgICAgICgtW1dL
SW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIHRvdWNoZXNCZWdhbjp3aXRoRXZl
bnQ6XSk6CisgICAgICAgICgtW1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVy
IHRvdWNoZXNNb3ZlZDp3aXRoRXZlbnQ6XSk6CisgICAgICAgICgtW1dLSW5zcGVjdG9yTm9kZVNl
YXJjaEdlc3R1cmVSZWNvZ25pemVyIHRvdWNoZXNFbmRlZDp3aXRoRXZlbnQ6XSk6CisgICAgICAg
ICgtW1dLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIHRvdWNoZXNDYW5jZWxs
ZWQ6d2l0aEV2ZW50Ol0pOgorICAgICAgICAoLVtXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJl
UmVjb2duaXplciByZXNldF0pOgorICAgICAgICBHZXN0dXJlIHJlY29nbml6ZXIgdGhhdCB0cmFj
a3MgYSBzaW5nbGUgdG91Y2gsIHVwZGF0ZXMgYXMgdGhhdCB0b3VjaAorICAgICAgICBtb3Zlcywg
YW5kIGVuZHMgd2hlbiB0aGF0IHRvdWNoIGlzIGNhbmNlbGxlZCBvciBlbmRzLiBUaGUgbG9jYXRp
b24KKyAgICAgICAgb2YgdGhlIGdlc3R1cmUgcmVjb2duaXplciBpcyB0aGUgbG9jYXRpb24gb2Yg
dGhlIHRvdWNoIGl0IHdhcyB0cmFja2luZy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS0NvbnRl
bnRWaWV3SW50ZXJhY3Rpb24ubW06CisgICAgICAgICgtW1dLQ29udGVudFZpZXcgY2xlYW51cElu
dGVyYWN0aW9uXSk6CisgICAgICAgIEhhbmRsZSB0aGUgaW5zcGVjdG9yIG5vZGUgc2VhcmNoIGdl
c3R1cmUgcmVjb2duaXplciBpZiBuZWVkZWQuCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBf
cmVtb3ZlRGVmYXVsdEdlc3R1cmVSZWNvZ25pemVyc10pOgorICAgICAgICAoLVtXS0NvbnRlbnRW
aWV3IF9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzXSk6CisgICAgICAgIEhlbHBlcnMgdG8g
YWRkIGFuZCByZW1vdmUgdGhlIGRlZmF1bHQgZ2VzdHVyZXMuCisKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfZW5hYmxlSW5zcGVjdG9yTm9kZVNlYXJjaF0pOgorICAgICAgICAoLVtXS0NvbnRl
bnRWaWV3IF9kaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaF0pOgorICAgICAgICBXaGVuIG5vZGUg
c2VhcmNoIGlzIGVuYWJsZWQsIHJlbW92ZSBhbGwgZ2VzdHVyZSByZWNvZ25pemVycyBhbmQKKyAg
ICAgICAgcmVwbGFjZSB3aXRoIGEgc2luZ2xlIGluc3BlY3RvciBub2RlIHNlYXJjaCBnZXN0dXJl
IHJlY29nbml6ZXIuCisgICAgICAgIExpa2V3aXNlLCBpbnZlcnNlIHRoYXQgd2hlbiBkaXNhYmxl
ZC4KKworICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9pbnNwZWN0b3JOb2RlU2VhcmNoUmVjb2du
aXplZDpdKToKKyAgICAgICAgTm90aWZ5IHRoZSBXZWJQcm9jZXNzIG9mIG5ldyB0b3VjaCBwb3Np
dGlvbnMgZHVyaW5nIG5vZGUgc2VhcmNoLgorCisgICAgICAgICgtW1dLQ29udGVudFZpZXcgaGFz
U2VsZWN0YWJsZVBvc2l0aW9uQXRQb2ludDpdKToKKyAgICAgICAgV2hlbiBpbnNwZWN0b3Igbm9k
ZSBzZWFyY2ggaXMgZW5hYmxlZCwgZGlzYWJsZSBzZWxlY3Rpb24uCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6Omluc3BlY3Rvck5vZGVTZWFyY2hNb3ZlZFRvUG9zaXRpb24pOgorICAgICAgICBTZW5kIGEg
bW91c2UgbW92ZSB0byB0aGUgbmV3IGxvY2F0aW9uLiBXZWJDb3JlIHdpbGwgdXBkYXRlIHRoZSBo
aWdobGlnaHQuCisKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zcGVjdG9yTm9kZVNlYXJj
aEVuZGVkQXRQb3NpdGlvbik6CisgICAgICAgIEluc3BlY3QgdGhlIG5vZGUgYXQgdGhlIGxvY2F0
aW9uLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAg
ICAgICgtW1dLV2ViVmlldyBfZW5hYmxlSW5zcGVjdG9yTm9kZVNlYXJjaF0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX2Rpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoXSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QYWdlQ2xpZW50Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQ
cm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3Mv
UGFnZUNsaWVudEltcGxJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpl
bmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudElt
cGw6OmRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnNw
ZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjppbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjplbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCk6CisgICAg
ICAgICogV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjplbmFibGVJ
bnNwZWN0b3JOb2RlU2VhcmNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlzYWJsZUlu
c3BlY3Rvck5vZGVTZWFyY2gpOgorICAgICAgICBQYXNzIHRoZSBpbnNwZWN0b3Igbm9kZSBzZWFy
Y2ggc3RhdGUgdXAgZnJvbSB0aGUgV2ViUHJvY2VzcworICAgICAgICB0byB0aGUgV0tDb250ZW50
VmlldyBpbiB0aGUgVUlQcm9jZXNzLiBMaWtld2lzZSBzb21lIG1lc3NhZ2VzCisgICAgICAgIGlu
IHRoZSByZXZlcnNlIGRpcmVjdGlvbi4KKwogMjAxNC0wNi0yNSAgTGFzemxvIEdvbWJvcyAgPGwu
Z29tYm9zQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJlbW92ZSBidWlsZCBndWFyZCBmb3IgcHJv
Z3Jlc3MgZWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCA2MGExODljLi5hNzQzMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNjQwLDE2ICs2NDAsNiBAQCBz
dGF0aWMgQ0dTaXplIHJvdW5kU2Nyb2xsVmlld0NvbnRlbnRTaXplKGNvbnN0IFdlYktpdDo6V2Vi
UGFnZVByb3h5JiBwYWdlLCBDR1NpegogICAgIH0KIH0KIAotLSAodm9pZClfc2hvd0luc3BlY3Rv
ckhpZ2hsaWdodDooY29uc3QgV2ViQ29yZTo6SGlnaGxpZ2h0JiloaWdobGlnaHQKLXsKLSAgICBb
X2NvbnRlbnRWaWV3IF9zaG93SW5zcGVjdG9ySGlnaGxpZ2h0OmhpZ2hsaWdodF07Ci19Ci0KLS0g
KHZvaWQpX2hpZGVJbnNwZWN0b3JIaWdobGlnaHQKLXsKLSAgICBbX2NvbnRlbnRWaWV3IF9oaWRl
SW5zcGVjdG9ySGlnaGxpZ2h0XTsKLX0KLQogc3RhdGljIENHRmxvYXQgY29udGVudFpvb21TY2Fs
ZShXS1dlYlZpZXcqIHdlYlZpZXcpCiB7CiAgICAgVUlWaWV3ICp6b29tVmlldzsKQEAgLTIxNDcs
MTYgKzIxMzcsNiBAQCBzdGF0aWMgaW5saW5lIFdlYktpdDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0
aW9ucyhfV0tGaW5kT3B0aW9ucyB3a0ZpbmRPcHRpb25zKQogICAgIFtzZWxmIF91cGRhdGVWaXNp
YmxlQ29udGVudFJlY3RzXTsKIH0KIAotLSAodm9pZClfc2hvd0luc3BlY3RvckluZGljYXRpb24K
LXsKLSAgICBbX2NvbnRlbnRWaWV3IHNldFNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOllFU107
Ci19Ci0KLS0gKHZvaWQpX2hpZGVJbnNwZWN0b3JJbmRpY2F0aW9uCi17Ci0gICAgW19jb250ZW50
VmlldyBzZXRTaG93aW5nSW5zcGVjdG9ySW5kaWNhdGlvbjpOT107Ci19Ci0KIC0gKHZvaWQpX3Nl
dE92ZXJsYWlkQWNjZXNzb3J5Vmlld3NJbnNldDooQ0dTaXplKWluc2V0CiB7CiAgICAgW19jdXN0
b21Db250ZW50VmlldyB3ZWJfc2V0T3ZlcmxhaWRBY2Nlc3NvcnlWaWV3c0luc2V0Omluc2V0XTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
SW50ZXJuYWwuaAppbmRleCBkYzViZDBkLi5jZjkwYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC05Mywx
MyArOTMsOSBAQCBzdHJ1Y3QgVmlld1NuYXBzaG90OwogLSAodm9pZClfd2lsbEludm9rZVVJU2Ny
b2xsVmlld0RlbGVnYXRlQ2FsbGJhY2s7CiAtICh2b2lkKV9kaWRJbnZva2VVSVNjcm9sbFZpZXdE
ZWxlZ2F0ZUNhbGxiYWNrOwogCi0tICh2b2lkKV9zaG93SW5zcGVjdG9ySGlnaGxpZ2h0Oihjb25z
dCBXZWJDb3JlOjpIaWdobGlnaHQmKWhpZ2hsaWdodDsKLS0gKHZvaWQpX2hpZGVJbnNwZWN0b3JI
aWdobGlnaHQ7Ci0KIC0gKHZvaWQpX3VwZGF0ZVZpc2libGVDb250ZW50UmVjdHM7CiAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgVUlFZGdlSW5zZXRzIF9jb21wdXRlZENvbnRlbnRJ
bnNldDsKLQogI2VuZGlmCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggZGZmZmMyZi4uNGE4NmU0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdQcml2YXRlLmgKQEAgLTEzMSw5ICsxMzEsNiBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50
ZWdlciwgX1dLRmluZE9wdGlvbnMpIHsKIC0gKHZvaWQpX2JlZ2luQW5pbWF0ZWRSZXNpemVXaXRo
VXBkYXRlczoodm9pZCAoXikodm9pZCkpdXBkYXRlQmxvY2s7CiAtICh2b2lkKV9lbmRBbmltYXRl
ZFJlc2l6ZTsKIAotLSAodm9pZClfc2hvd0luc3BlY3RvckluZGljYXRpb247Ci0tICh2b2lkKV9o
aWRlSW5zcGVjdG9ySW5kaWNhdGlvbjsKLQogLSAodm9pZClfc25hcHNob3RSZWN0OihDR1JlY3Qp
cmVjdEluVmlld0Nvb3JkaW5hdGVzIGludG9JbWFnZU9mV2lkdGg6KENHRmxvYXQpaW1hZ2VXaWR0
aCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShDR0ltYWdlUmVmKSljb21wbGV0aW9uSGFuZGxl
cjsKIAogLSAodm9pZClfb3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJzV2l0aE1pbmltdW1MYXlvdXRT
aXplOihDR1NpemUpbWluaW11bUxheW91dFNpemUgbWluaW11bUxheW91dFNpemVGb3JNaW5pbWFs
VUk6KENHU2l6ZSltaW5pbXVtTGF5b3V0U2l6ZUZvck1pbmltYWxVSSBtYXhpbXVtVW5vYnNjdXJl
ZFNpemVPdmVycmlkZTooQ0dTaXplKW1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKaW5kZXggNGJmZjQ5Zi4uZTdiOTJkMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCkBAIC0yNzYsNiArMjc2LDkgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpID0gMDsKKworICAgIHZp
cnR1YWwgdm9pZCBlbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpID0gMDsKICNlbmRpZgogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0Y2Y4NGEzLi45OTc5
NjkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC04NDUsNiAr
ODQ1LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsUG90ZW50aWFsVGFwKCk7CiAgICAgdm9p
ZCB0YXBIaWdobGlnaHRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmLCB1aW50
NjRfdCYgcmVxdWVzdElEKTsKIAorICAgIHZvaWQgaW5zcGVjdG9yTm9kZVNlYXJjaE1vdmVkVG9Q
b3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7CisgICAgdm9pZCBpbnNwZWN0b3JO
b2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKwog
ICAgIHZvaWQgYmx1ckFzc2lzdGVkTm9kZSgpOwogI2VuZGlmCiAKQEAgLTEyMTIsNiArMTIxNSw5
IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCk7CiAgICAg
dm9pZCBoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpOworCisgICAgdm9pZCBlbmFibGVJbnNwZWN0
b3JOb2RlU2VhcmNoKCk7CisgICAgdm9pZCBkaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpOwog
I2VuZGlmCiAKICAgICB2b2lkIG5vdGlmeVJldmVhbGVkU2VsZWN0aW9uKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5NWU4
NWY1Ni4uZThhMTcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0zNDcsNiArMzQ3LDkgQEAgbWVzc2FnZXMgLT4gV2ViUGFn
ZVByb3h5IHsKIAogICAgIFNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkKICAgICBIaWRlSW5zcGVj
dG9ySW5kaWNhdGlvbigpCisKKyAgICBFbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkKKyAgICBE
aXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpCiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKaW5kZXggZGRkYjRh
NC4uNTlhMmJjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdl
Q2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MuaApAQCAtMTM3LDYgKzEzNyw5IEBAIHByaXZhdGU6CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgaGlkZUluc3BlY3RvckluZGljYXRpb24oKSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgdm9p
ZCBlbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lk
IGRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCkgb3ZlcnJpZGU7CiAjZW5kaWYKIAogICAgIHZp
cnR1YWwgdm9pZCB6b29tVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1T
Y2FsZSwgZG91YmxlIG1heGltdW1TY2FsZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCAxYmZjZDExLi5hN2Fj
NTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KQEAgLTQ4NywyMiArNDg3LDMyIEBAIGJvb2wgUGFnZUNsaWVudEltcGw6OmhhbmRs
ZVJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViT3BlblBhCiAj
aWYgRU5BQkxFKElOU1BFQ1RPUikKIHZvaWQgUGFnZUNsaWVudEltcGw6OnNob3dJbnNwZWN0b3JI
aWdobGlnaHQoY29uc3QgV2ViQ29yZTo6SGlnaGxpZ2h0JiBoaWdobGlnaHQpCiB7Ci0gICAgW21f
d2ViVmlldyBfc2hvd0luc3BlY3RvckhpZ2hsaWdodDpoaWdobGlnaHRdOworICAgIFttX2NvbnRl
bnRWaWV3IF9zaG93SW5zcGVjdG9ySGlnaGxpZ2h0OmhpZ2hsaWdodF07CiB9CiAKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmhpZGVJbnNwZWN0b3JIaWdobGlnaHQoKQogewotICAgIFttX3dlYlZpZXcg
X2hpZGVJbnNwZWN0b3JIaWdobGlnaHRdOworICAgIFttX2NvbnRlbnRWaWV3IF9oaWRlSW5zcGVj
dG9ySGlnaGxpZ2h0XTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2hvd0luc3BlY3Rvcklu
ZGljYXRpb24oKQogewotICAgIFttX3dlYlZpZXcgX3Nob3dJbnNwZWN0b3JJbmRpY2F0aW9uXTsK
KyAgICBbbV9jb250ZW50VmlldyBzZXRTaG93aW5nSW5zcGVjdG9ySW5kaWNhdGlvbjpZRVNdOwog
fQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpoaWRlSW5zcGVjdG9ySW5kaWNhdGlvbigpCiB7Ci0g
ICAgW21fd2ViVmlldyBfaGlkZUluc3BlY3RvckluZGljYXRpb25dOworICAgIFttX2NvbnRlbnRW
aWV3IHNldFNob3dpbmdJbnNwZWN0b3JJbmRpY2F0aW9uOk5PXTsKK30KKwordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6ZW5hYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpCit7CisgICAgW21fY29udGVudFZp
ZXcgX2VuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2hdOworfQorCit2b2lkIFBhZ2VDbGllbnRJbXBs
OjpkaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpCit7CisgICAgW21fY29udGVudFZpZXcgX2Rp
c2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoXTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KaW5kZXggZDI4NjM2Zi4uMDUxYjcxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAt
NjQzLDYgKzY0Myw5IEBAIHN0YXRpYyB2b2lkIGxheWVyUGF0aChDQVNoYXBlTGF5ZXIgKmxheWVy
LCBjb25zdCBGbG9hdFF1YWQmIG91dGVyUXVhZCkKIC0gKHZvaWQpX3Byb2Nlc3NEaWRFeGl0CiB7
CiAgICAgW3NlbGYgY2xlYW51cEludGVyYWN0aW9uXTsKKworICAgIFtzZWxmIHNldFNob3dpbmdJ
bnNwZWN0b3JJbmRpY2F0aW9uOk5PXTsKKyAgICBbc2VsZiBfaGlkZUluc3BlY3RvckhpZ2hsaWdo
dF07CiB9CiAKIC0gKHZvaWQpX2RpZFJlbGF1bmNoUHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKaW5kZXgg
MDI3NzI1Mi4uNmRjNTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oCkBAIC02Miw2ICs2Miw3IEBAIGNsYXNz
IFdlYlBhZ2VQcm94eTsKIAogQGNsYXNzIFdLQWN0aW9uU2hlZXRBc3Npc3RhbnQ7CiBAY2xhc3Mg
V0tGb3JtSW5wdXRTZXNzaW9uOworQGNsYXNzIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVS
ZWNvZ25pemVyOwogQGNsYXNzIFdlYklPU0V2ZW50OwogQGNsYXNzIF9VSUhpZ2hsaWdodFZpZXc7
CiBAY2xhc3MgX1VJV2ViSGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI7CkBAIC05
Miw2ICs5Myw3IEBAIHN0cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgUmV0YWluUHRy
PFVJTG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXI+IF9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXpl
cjsKICAgICBSZXRhaW5QdHI8VUlUYXBHZXN0dXJlUmVjb2duaXplcj4gX2RvdWJsZVRhcEdlc3R1
cmVSZWNvZ25pemVyOwogICAgIFJldGFpblB0cjxVSVRhcEdlc3R1cmVSZWNvZ25pemVyPiBfdHdv
RmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXI7CisgICAgUmV0YWluUHRyPFdLSW5zcGVj
dG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyPiBfaW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1
cmVSZWNvZ25pemVyOwogCiAgICAgUmV0YWluUHRyPFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3Rh
bnQ+IF90ZXh0U2VsZWN0aW9uQXNzaXN0YW50OwogICAgIFJldGFpblB0cjxVSVdLU2VsZWN0aW9u
QXNzaXN0YW50PiBfd2ViU2VsZWN0aW9uQXNzaXN0YW50OwpAQCAtMTM2LDYgKzEzOCw3IEBAIHN0
cnVjdCBXS0F1dG9Db3JyZWN0aW9uRGF0YSB7CiAgICAgQk9PTCBfcG90ZW50aWFsVGFwSW5Qcm9n
cmVzczsKICAgICBCT09MIF9zZWxlY3Rpb25OZWVkc1VwZGF0ZTsKICAgICBCT09MIF91c2luZ0dl
c3R1cmVGb3JTZWxlY3Rpb247CisgICAgQk9PTCBfaW5zcGVjdG9yTm9kZVNlYXJjaEVuYWJsZWQ7
CiB9CiAKIEBlbmQKQEAgLTE3Niw2ICsxNzksOCBAQCBzdHJ1Y3QgV0tBdXRvQ29ycmVjdGlvbkRh
dGEgewogLSAodm9pZClfZGlkSGFuZGxlS2V5RXZlbnQ6KFdlYklPU0V2ZW50ICopZXZlbnQ7CiAt
IChWZWN0b3I8V2ViS2l0OjpPcHRpb25JdGVtPiYpIGFzc2lzdGVkTm9kZVNlbGVjdE9wdGlvbnM7
CiAtICh2b2lkKV91cGRhdGVVbnNjYWxlZFZpZXc7CistICh2b2lkKV9lbmFibGVJbnNwZWN0b3JO
b2RlU2VhcmNoOworLSAodm9pZClfZGlzYWJsZUluc3BlY3Rvck5vZGVTZWFyY2g7CiBAZW5kCiAK
ICNlbmRpZiAvLyBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tCmluZGV4IDRlNGNlMzkuLmI0
Y2NkZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlld0ludGVyYWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tD
b250ZW50Vmlld0ludGVyYWN0aW9uLm1tCkBAIC0zNSw2ICszNSw3IEBACiAjaW1wb3J0ICJXS0Fj
dGlvblNoZWV0QXNzaXN0YW50LmgiCiAjaW1wb3J0ICJXS0Zvcm1JbnB1dENvbnRyb2wuaCIKICNp
bXBvcnQgIldLRm9ybVNlbGVjdENvbnRyb2wuaCIKKyNpbXBvcnQgIldLSW5zcGVjdG9yTm9kZVNl
YXJjaEdlc3R1cmVSZWNvZ25pemVyLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdQcml2YXRlLmgiCiAj
aW1wb3J0ICJXZWJFdmVudC5oIgogI2ltcG9ydCAiV2ViSU9TRXZlbnRGYWN0b3J5LmgiCkBAIC0y
NzMsNiArMjc0LDEzIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0YXBBbmRIb2xkRGVsYXkgID0gMC43
NTsKICAgICBbX3R3b0ZpbmdlckRvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyIHNldERlbGVnYXRl
Om5pbF07CiAgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3R3b0ZpbmdlckRvdWJs
ZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKIAorICAgIF9pbnNwZWN0b3JOb2RlU2VhcmNo
RW5hYmxlZCA9IE5POworICAgIGlmIChfaW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25p
emVyKSB7CisgICAgICAgIFtfaW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIHNl
dERlbGVnYXRlOm5pbF07CisgICAgICAgIFtzZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9p
bnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAgICAgICBfaW5z
cGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyID0gbmlsOworICAgIH0KKwogICAgIGlm
IChfZmlsZVVwbG9hZFBhbmVsKSB7CiAgICAgICAgIFtfZmlsZVVwbG9hZFBhbmVsIHNldERlbGVn
YXRlOm5pbF07CiAgICAgICAgIFtfZmlsZVVwbG9hZFBhbmVsIGRpc21pc3NdOwpAQCAtMjgwLDYg
KzI4OCwyNiBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGFwQW5kSG9sZERlbGF5ICA9IDAuNzU7CiAg
ICAgfQogfQogCistICh2b2lkKV9yZW1vdmVEZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCit7Cisg
ICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3RvdWNoRXZlbnRHZXN0dXJlUmVjb2du
aXplci5nZXQoKV07CisgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X3NpbmdsZVRh
cEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2du
aXplcjpfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworICAgIFtz
ZWxmIHJlbW92ZUdlc3R1cmVSZWNvZ25pemVyOl9sb25nUHJlc3NHZXN0dXJlUmVjb2duaXplci5n
ZXQoKV07CisgICAgW3NlbGYgcmVtb3ZlR2VzdHVyZVJlY29nbml6ZXI6X2RvdWJsZVRhcEdlc3R1
cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBbc2VsZiByZW1vdmVHZXN0dXJlUmVjb2duaXplcjpf
dHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworfQorCistICh2b2lk
KV9hZGREZWZhdWx0R2VzdHVyZVJlY29nbml6ZXJzCit7CisgICAgW3NlbGYgYWRkR2VzdHVyZVJl
Y29nbml6ZXI6X3RvdWNoRXZlbnRHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisgICAgW3NlbGYg
YWRkR2VzdHVyZVJlY29nbml6ZXI6X3NpbmdsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsK
KyAgICBbc2VsZiBhZGRHZXN0dXJlUmVjb2duaXplcjpfaGlnaGxpZ2h0TG9uZ1ByZXNzR2VzdHVy
ZVJlY29nbml6ZXIuZ2V0KCldOworICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9sb25n
UHJlc3NHZXN0dXJlUmVjb2duaXplci5nZXQoKV07CisgICAgW3NlbGYgYWRkR2VzdHVyZVJlY29n
bml6ZXI6X2RvdWJsZVRhcEdlc3R1cmVSZWNvZ25pemVyLmdldCgpXTsKKyAgICBbc2VsZiBhZGRH
ZXN0dXJlUmVjb2duaXplcjpfdHdvRmluZ2VyRG91YmxlVGFwR2VzdHVyZVJlY29nbml6ZXIuZ2V0
KCldOworfQorCiAtIChVSVZpZXcqKXVuc2NhbGVkVmlldwogewogICAgIHJldHVybiBfaW52ZXJz
ZVNjYWxlUm9vdFZpZXcuZ2V0KCk7CkBAIC0yOTgsNiArMzI2LDI2IEBAIHN0YXRpYyBjb25zdCBm
bG9hdCB0YXBBbmRIb2xkRGVsYXkgID0gMC43NTsKICAgICBbc2VsZiBfdXBkYXRlQ2hhbmdlZFNl
bGVjdGlvbl07CiB9CiAKKy0gKHZvaWQpX2VuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2gKK3sKKyAg
ICBfaW5zcGVjdG9yTm9kZVNlYXJjaEVuYWJsZWQgPSBZRVM7CisKKyAgICBbc2VsZiBfY2FuY2Vs
SW50ZXJhY3Rpb25dOworCisgICAgW3NlbGYgX3JlbW92ZURlZmF1bHRHZXN0dXJlUmVjb2duaXpl
cnNdOworICAgIF9pbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIgPSBhZG9wdE5T
KFtbV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIgYWxsb2NdIGluaXRXaXRo
VGFyZ2V0OnNlbGYgYWN0aW9uOkBzZWxlY3RvcihfaW5zcGVjdG9yTm9kZVNlYXJjaFJlY29nbml6
ZWQ6KV0pOworICAgIFtzZWxmIGFkZEdlc3R1cmVSZWNvZ25pemVyOl9pbnNwZWN0b3JOb2RlU2Vh
cmNoR2VzdHVyZVJlY29nbml6ZXIuZ2V0KCldOworfQorCistICh2b2lkKV9kaXNhYmxlSW5zcGVj
dG9yTm9kZVNlYXJjaAoreworICAgIF9pbnNwZWN0b3JOb2RlU2VhcmNoRW5hYmxlZCA9IE5POwor
CisgICAgW3NlbGYgX2FkZERlZmF1bHRHZXN0dXJlUmVjb2duaXplcnNdOworICAgIFtzZWxmIHJl
bW92ZUdlc3R1cmVSZWNvZ25pemVyOl9pbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6
ZXIuZ2V0KCldOworICAgIF9pbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIgPSBu
aWw7Cit9CisKIC0gKFVJVmlldyAqKWhpdFRlc3Q6KENHUG9pbnQpcG9pbnQgd2l0aEV2ZW50Oig6
OlVJRXZlbnQgKilldmVudAogewogICAgIGZvciAoVUlWaWV3ICpzdWJWaWV3IGluIFtfaW52ZXJz
ZVNjYWxlUm9vdFZpZXcuZ2V0KCkgc3Vidmlld3NdKSB7CkBAIC0zNzAsNiArNDE4LDI1IEBAIHN0
YXRpYyBjb25zdCBmbG9hdCB0YXBBbmRIb2xkRGVsYXkgID0gMC43NTsKICAgICAgICAgX2NhblNl
bmRUb3VjaEV2ZW50c0FzeW5jaHJvbm91c2x5ID0gTk87CiB9CiAKKy0gKHZvaWQpX2luc3BlY3Rv
ck5vZGVTZWFyY2hSZWNvZ25pemVkOihVSUdlc3R1cmVSZWNvZ25pemVyICopZ2VzdHVyZVJlY29n
bml6ZXIKK3sKKyAgICBBU1NFUlQoX2luc3BlY3Rvck5vZGVTZWFyY2hFbmFibGVkKTsKKworICAg
IENHUG9pbnQgcG9pbnQgPSBbZ2VzdHVyZVJlY29nbml6ZXIgbG9jYXRpb25JblZpZXc6c2VsZl07
CisKKyAgICBzd2l0Y2ggKGdlc3R1cmVSZWNvZ25pemVyLnN0YXRlKSB7CisgICAgY2FzZSBVSUdl
c3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbjoKKyAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZUNoYW5nZWQ6CisgICAgICAgIF9wYWdlLT5pbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bv
c2l0aW9uKHBvaW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBVSUdlc3R1cmVSZWNvZ25p
emVyU3RhdGVFbmRlZDoKKyAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxl
ZDoKKyAgICBkZWZhdWx0OiAvLyBUbyBlbnN1cmUgd2UgdHVybiBvZmYgbm9kZSBzZWFyY2guCisg
ICAgICAgIF9wYWdlLT5pbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBvc2l0aW9uKHBvaW50KTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiBzdGF0aWMgRmxvYXRRdWFkIGluZmxhdGVRdWFk
KGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwgZmxvYXQgaW5mbGF0ZVNpemUpCiB7CiAgICAgLy8gV2Ug
c29ydCB0aGUgb3V0cHV0IHBvaW50cyBsaWtlIHRoaXMgKGFzIGV4cGVjdGVkIGJ5IHRoZSBoaWdo
bGlnaHQgdmlldyk6CkBAIC03MzQsNiArODAxLDkgQEAgc3RhdGljIGlubGluZSBib29sIGlzU2Ft
ZVBhaXIoVUlHZXN0dXJlUmVjb2duaXplciAqYSwgVUlHZXN0dXJlUmVjb2duaXplciAqYiwgVUkK
IAogLSAoQk9PTCloYXNTZWxlY3RhYmxlUG9zaXRpb25BdFBvaW50OihDR1BvaW50KXBvaW50CiB7
CisgICAgaWYgKF9pbnNwZWN0b3JOb2RlU2VhcmNoRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIE5P
OworCiAgICAgW3NlbGYgZW5zdXJlUG9zaXRpb25JbmZvcm1hdGlvbklzVXBUb0RhdGU6cG9pbnRd
OwogICAgIHJldHVybiBfcG9zaXRpb25JbmZvcm1hdGlvbi5pc1NlbGVjdGFibGU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJj
aEdlc3R1cmVSZWNvZ25pemVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLSW5z
cGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uMGZlZjVlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaApA
QCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmIFBMQVRGT1JNKElPUykKKworI2ltcG9y
dCA8VUlLaXQvVUlHZXN0dXJlUmVjb2duaXplci5oPgorCitAaW50ZXJmYWNlIFdLSW5zcGVjdG9y
Tm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIDogVUlHZXN0dXJlUmVjb2duaXplcgorLSAoQ0dQ
b2ludClsb2NhdGlvbkluVmlldzooVUlWaWV3ICopdmlldzsKK0BlbmQKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLSW5zcGVjdG9yTm9kZVNlYXJj
aEdlc3R1cmVSZWNvZ25pemVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0lu
c3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40NjhiOWJiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5t
bQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1w
b3J0ICJXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5oIgorCisjaWYgUExB
VEZPUk0oSU9TKQorCisjaW1wb3J0IDxVSUtpdC9VSUdlc3R1cmVSZWNvZ25pemVyU3ViY2xhc3Mu
aD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGltcGxlbWVudGF0aW9uIFdLSW5zcGVj
dG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyIHsKKyAgICBSZXRhaW5QdHI8VUlUb3VjaD4g
X3RvdWNoOworfQorCistIChDR1BvaW50KWxvY2F0aW9uSW5WaWV3OihVSVZpZXcgKil2aWV3Cit7
CisgICAgcmV0dXJuIFtfdG91Y2ggbG9jYXRpb25JblZpZXc6dmlld107Cit9CisKKy0gKHZvaWQp
X3Byb2Nlc3NUb3VjaGVzOihOU1NldCAqKXRvdWNoZXMgc3RhdGU6KFVJR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZSluZXdTdGF0ZQoreworICAgIEFTU0VSVChfdG91Y2gpOworICAgIGlmIChbdG91Y2hl
cyBjb250YWluc09iamVjdDpfdG91Y2guZ2V0KCldKQorICAgICAgICBzZWxmLnN0YXRlID0gbmV3
U3RhdGU7Cit9CisKKy0gKHZvaWQpdG91Y2hlc0JlZ2FuOihOU1NldCAqKXRvdWNoZXMgd2l0aEV2
ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBpZiAoc2VsZi5zdGF0ZSAhPSBVSUdlc3R1cmVS
ZWNvZ25pemVyU3RhdGVQb3NzaWJsZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKCFf
dG91Y2gpOworICAgIF90b3VjaCA9IFt0b3VjaGVzIGFueU9iamVjdF07CisKKyAgICBbc2VsZiBf
cHJvY2Vzc1RvdWNoZXM6dG91Y2hlcyBzdGF0ZTpVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdh
bl07Cit9CisKKy0gKHZvaWQpdG91Y2hlc01vdmVkOihOU1NldCAqKXRvdWNoZXMgd2l0aEV2ZW50
OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBbc2VsZiBfcHJvY2Vzc1RvdWNoZXM6dG91Y2hlcyBz
dGF0ZTpVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDaGFuZ2VkXTsKK30KKworLSAodm9pZCl0b3Vj
aGVzRW5kZWQ6KE5TU2V0ICopdG91Y2hlcyB3aXRoRXZlbnQ6KFVJRXZlbnQgKilldmVudAorewor
ICAgIFtzZWxmIF9wcm9jZXNzVG91Y2hlczp0b3VjaGVzIHN0YXRlOlVJR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZUVuZGVkXTsKK30KKworLSAodm9pZCl0b3VjaGVzQ2FuY2VsbGVkOihOU1NldCAqKXRv
dWNoZXMgd2l0aEV2ZW50OihVSUV2ZW50ICopZXZlbnQKK3sKKyAgICBbc2VsZiBfcHJvY2Vzc1Rv
dWNoZXM6dG91Y2hlcyBzdGF0ZTpVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDYW5jZWxsZWRdOwor
fQorCistICh2b2lkKXJlc2V0Cit7CisgICAgX3RvdWNoID0gbmlsOworfQorCitAZW5kCisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQppbmRleCAxM2IxNDgzLi5mOGQyMzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtNTg3LDYgKzU4NywxNiBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6dGFwSGlnaGxpZ2h0QXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50
JiBwb3NpdGlvbiwgdQogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpUYXBI
aWdobGlnaHRBdFBvc2l0aW9uKHJlcXVlc3RJRCwgcG9zaXRpb24pLCBtX3BhZ2VJRCk7CiB9CiAK
K3ZvaWQgV2ViUGFnZVByb3h5OjppbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKGNv
bnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIHByb2Nlc3MoKS5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0aW9uKHBv
c2l0aW9uKSwgbV9wYWdlSUQpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6aW5zcGVjdG9yTm9k
ZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50JiBwb3NpdGlv
bikKK3sKKyAgICBwcm9jZXNzKCkuc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6SW5zcGVjdG9yTm9k
ZVNlYXJjaEVuZGVkQXRQb3NpdGlvbihwb3NpdGlvbiksIG1fcGFnZUlEKTsKK30KKwogdm9pZCBX
ZWJQYWdlUHJveHk6OmJsdXJBc3Npc3RlZE5vZGUoKQogewogICAgIHByb2Nlc3MoKS5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpCbHVyQXNzaXN0ZWROb2RlKCksIG1fcGFnZUlEKTsKQEAgLTY2NSw2
ICs2NzUsMTYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmhpZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCkK
IHsKICAgICBtX3BhZ2VDbGllbnQuaGlkZUluc3BlY3RvckluZGljYXRpb24oKTsKIH0KKwordm9p
ZCBXZWJQYWdlUHJveHk6OmVuYWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKQoreworICAgIG1fcGFn
ZUNsaWVudC5lbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7Cit9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpkaXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpCit7CisgICAgbV9wYWdlQ2xpZW50LmRp
c2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7Cit9CiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJv
eHk6OmZvY3VzTmV4dEFzc2lzdGVkTm9kZShib29sIGlzRm9yd2FyZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0N2E2NmQzLi42
Yzk1ODI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC0xMTA1LDYgKzExMDUsOCBAQAogCQlBMUM1MTJDOTE5MDY1NkU1MDA0NDg5
MTQgLyogV2ViUXVpY2tMb29rSGFuZGxlQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMUM1MTJDNzE5MDY1NkU1MDA0NDg5MTQgLyogV2ViUXVp
Y2tMb29rSGFuZGxlQ2xpZW50LmggKi87IH07CiAJCUExREY2MzEyMThFMEI3QzgwMDNBM0UyQSAv
KiBEb3dubG9hZENsaWVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEExREY2MzEwMThFMEI3QzgwMDNBM0UyQSAvKiBEb3dubG9hZENsaWVudC5tbSAq
LzsgfTsKIAkJQTFERjYzMTMxOEUwQjdDODAwM0EzRTJBIC8qIERvd25sb2FkQ2xpZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMURGNjMxMTE4RTBC
N0M4MDAzQTNFMkEgLyogRG93bmxvYWRDbGllbnQuaCAqLzsgfTsKKwkJQTU0MjkzQTQxOTVBNDNE
QTAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTQyOTNBMjE5NUE0
M0M2MDAyNzgyQzcgLyogV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaCAq
LzsgfTsKKwkJQTU0MjkzQTUxOTVBNDNERDAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJj
aEdlc3R1cmVSZWNvZ25pemVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTU0MjkzQTMxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNl
YXJjaEdlc3R1cmVSZWNvZ25pemVyLm1tICovOyB9OwogCQlBNThCNkYwODE4RkNBNzMzMDA4Q0JB
NTMgLyogV0tGaWxlVXBsb2FkUGFuZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1OEI2RjA2MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQ
YW5lbC5oICovOyB9OwogCQlBNThCNkYwOTE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2Fk
UGFuZWwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NThCNkYwNzE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFuZWwubW0gKi87IH07CiAJ
CUE1RUZEMzhDMTZCMEU4OEMwMEIyRjBFOCAvKiBXS1BhZ2VWaXNpYmlsaXR5VHlwZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RUZEMzhCMTZCMEU4
OEMwMEIyRjBFOCAvKiBXS1BhZ2VWaXNpYmlsaXR5VHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzE1MCw2ICszMTUyLDggQEAKIAkJQTFF
REQyREIxODg0Qjk2NDAwQkJGRTk4IC8qIFBsdWdpblByb2Nlc3NTaGltLnhjY29uZmlnICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZp
ZzsgcGF0aCA9IFBsdWdpblByb2Nlc3NTaGltLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBMUVERDJEQzE4ODRCOUI1MDBCQkZFOTggLyogU2VjSXRlbVNoaW0ueGNjb25m
aWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
LnhjY29uZmlnOyBwYXRoID0gU2VjSXRlbVNoaW0ueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUExRUREMkREMTg4NEI5RTMwMEJCRkU5OCAvKiBXZWJQcm9jZXNzU2hpbS54
Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBXZWJQcm9jZXNzU2hpbS54Y2NvbmZpZzsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0MjkzQTIxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVj
dG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLSW5zcGVj
dG9yTm9kZVNlYXJjaEdlc3R1cmVSZWNvZ25pemVyLmg7IHBhdGggPSBpb3MvV0tJbnNwZWN0b3JO
b2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQTU0MjkzQTMxOTVBNDNDNjAwMjc4MkM3IC8qIFdLSW5zcGVjdG9yTm9kZVNlYXJjaEdlc3R1
cmVSZWNvZ25pemVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gV0tJbnNwZWN0b3JOb2RlU2Vh
cmNoR2VzdHVyZVJlY29nbml6ZXIubW07IHBhdGggPSBpb3MvV0tJbnNwZWN0b3JOb2RlU2VhcmNo
R2VzdHVyZVJlY29nbml6ZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OEI2
RjA2MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBXS0ZpbGVVcGxvYWRQYW5lbC5oOyBwYXRoID0gaW9zL2Zvcm1z
L1dLRmlsZVVwbG9hZFBhbmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1OEI2
RjA3MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLRmlsZVVwbG9hZFBhbmVsLm1tOyBwYXRoID0g
aW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNUVGRDM4QjE2QjBFODhDMDBCMkYwRTggLyogV0tQYWdlVmlzaWJpbGl0eVR5cGVzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLUGFnZVZpc2liaWxpdHlUeXBlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDgyOSw2ICs0ODMzLDggQEAKIAkJCQkw
RkNCNEUzRjE4QkJFMDQ0MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLmggKi8s
CiAJCQkJMEZDQjRFNDAxOEJCRTA0NDAwMEZDRkM5IC8qIFdLR2VvbG9jYXRpb25Qcm92aWRlcklP
Uy5tbSAqLywKIAkJCQkwRkNCNEU0MTE4QkJFMDQ0MDAwRkNGQzkgLyogV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TT2JqQ1NlY3VyaXR5T3JpZ2luLm1tICovLAorCQkJCUE1NDI5M0EyMTk1QTQzQzYw
MDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0dXJlUmVjb2duaXplci5oICovLAor
CQkJCUE1NDI5M0EzMTk1QTQzQzYwMDI3ODJDNyAvKiBXS0luc3BlY3Rvck5vZGVTZWFyY2hHZXN0
dXJlUmVjb2duaXplci5tbSAqLywKIAkJCQkwRkNCNEU0NDE4QkJFMDQ0MDAwRkNGQzkgLyogV0tT
Y3JvbGxWaWV3LmggKi8sCiAJCQkJMEZDQjRFNDUxOEJCRTA0NDAwMEZDRkM5IC8qIFdLU2Nyb2xs
Vmlldy5tbSAqLywKIAkJCQlBMTE1REM2RTE5MUQ4MkFCMDBEQTgwNzIgLyogX1dLV2ViVmlld1By
aW50Rm9ybWF0dGVyLmggKi8sCkBAIC03NzIyLDYgKzc3MjgsNyBAQAogCQkJCTMzRDNBM0I2MTMz
OTYwMEIwMDcwOUJFNCAvKiBXS01lZGlhQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzQwNzVGRTEyNEZGMDI3MDA2OEYyMEEgLyogV0tNdXRhYmxlQXJyYXkuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDNDA3NjAwMTI0RkYwMjcwMDY4RjIwQSAvKiBXS011dGFibGVEaWN0aW9uYXJ5
LmggaW4gSGVhZGVycyAqLywKKwkJCQlBNTQyOTNBNDE5NUE0M0RBMDAyNzgyQzcgLyogV0tJbnNw
ZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMw
OUFFNUU5MTI1MjU3QzIwMDI1ODI1RCAvKiBXS05hdGl2ZUV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxQUZERTY1QTE5NTRBNDJCMDBDNDhGRkEgLyogU2Vzc2lvblN0YXRlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0Y2OUZBOTExNzZEMUNCMDA0NzFBNTIgLyogV0tOYXZpZ2F0aW9uRGF0YVJl
Zi5oIGluIEhlYWRlcnMgKi8sCkBAIC05MTA1LDYgKzkxMTIsNyBAQAogCQkJCUJDMTExQUUwMTEy
RjVCQzIwMDMzN0JBQiAvKiBXZWJFcnJvcnNNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTcy
ODQ0ODE5NTlGODA0MDAwN0JDRTUgLyogU2Vzc2lvblN0YXRlQ29udmVyc2lvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxQUZBM0FDODE4RTYxQzYxMDAzQ0NCQUUgLyogV0tVc2VyQ29udGVudENv
bnRyb2xsZXIubW0gaW4gU291cmNlcyAqLywKKwkJCQlBNTQyOTNBNTE5NUE0M0REMDAyNzgyQzcg
LyogV0tJbnNwZWN0b3JOb2RlU2VhcmNoR2VzdHVyZVJlY29nbml6ZXIubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDMDMzN0RBRTEyN0EyNEZFMDA4RkY0RjQgLyogV2ViRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkMwMzJEQkExMEY0MzgwRjAwNThDMTVBIC8qIFdlYkV2ZW50Q29udmVyc2lv
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyRDE0MEVBRjE4RjM3QkUwMDA1RTc1QTAgLyogUGFn
ZU92ZXJsYXlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCmluZGV4IDZjZmM5MTguLmU1YjQzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAKQEAgLTExMCw2ICsxMTAsMTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6Omhp
ZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCkKIHsKICAgICBtX3BhZ2UtPmhpZGVJbnNwZWN0b3JJbmRp
Y2F0aW9uKCk7CiB9CisKK3ZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpkaWRTZXRTZWFyY2hpbmdG
b3JOb2RlKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBpZiAoZW5hYmxlZCkKKyAgICAgICAgbV9wYWdl
LT5lbmFibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7CisgICAgZWxzZQorICAgICAgICBtX3BhZ2Ut
PmRpc2FibGVJbnNwZWN0b3JOb2RlU2VhcmNoKCk7Cit9CiAjZW5kaWYKIAogYm9vbCBXZWJJbnNw
ZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRleCBmNjk3ZjYzLi5iM2VkOGQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTY0LDYgKzY0LDggQEAgcHJpdmF0ZToKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgdmlydHVhbCB2b2lkIHNob3dJbnNwZWN0b3JJbmRpY2F0aW9uKCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCkgb3ZlcnJp
ZGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShib29sKSBvdmVy
cmlkZTsKICNlbmRpZgogCiAgICAgdmlydHVhbCBib29sIHNlbmRNZXNzYWdlVG9Gcm9udGVuZChj
b25zdCBTdHJpbmcmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCmluZGV4IGY5NjU1ZmQuLjIxNGNhMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNDc2LDYgKzQ3Niw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNhbmNlbFBvdGVudGlhbFRhcCgpOwogICAgIHZvaWQgdGFwSGlnaGxpZ2h0QXRQ
b3NpdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsK
IAorICAgIHZvaWQgaW5zcGVjdG9yTm9kZVNlYXJjaE1vdmVkVG9Qb3NpdGlvbihjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50Jik7CisgICAgdm9pZCBpbnNwZWN0b3JOb2RlU2VhcmNoRW5kZWRBdFBv
c2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKTsKKwogICAgIHZvaWQgYmx1ckFzc2lz
dGVkTm9kZSgpOwogICAgIHZvaWQgc2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgV2ViQ29yZTo6SW50
UG9pbnQmLCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQz
Ml90IGdlc3R1cmVTdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCB1cGRhdGVT
ZWxlY3Rpb25XaXRoVG91Y2hlcyhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IHRvdWNoZXMsIGJvb2wgYmFzZUlzU3RhcnQsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpAQCAt
NTEzLDYgKzUxNiw5IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2hvd0luc3BlY3RvckluZGljYXRp
b24oKTsKICAgICB2b2lkIGhpZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCk7CisKKyAgICB2b2lkIGVu
YWJsZUluc3BlY3Rvck5vZGVTZWFyY2goKTsKKyAgICB2b2lkIGRpc2FibGVJbnNwZWN0b3JOb2Rl
U2VhcmNoKCk7CiAjZW5kaWYKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDJkMTIyNzQuLmM2YjRl
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCkBAIC01NSw2ICs1NSw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVn
YWN5UmVjZWl2ZXIgewogICAgIENvbW1pdFBvdGVudGlhbFRhcCgpCiAgICAgQ2FuY2VsUG90ZW50
aWFsVGFwKCkKICAgICBUYXBIaWdobGlnaHRBdFBvc2l0aW9uKHVpbnQ2NF90IHJlcXVlc3RJRCwg
V2ViQ29yZTo6RmxvYXRQb2ludCBwb2ludCkKKyAgICBJbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRU
b1Bvc2l0aW9uKFdlYkNvcmU6OkZsb2F0UG9pbnQgcG9pbnQpCisgICAgSW5zcGVjdG9yTm9kZVNl
YXJjaEVuZGVkQXRQb3NpdGlvbihXZWJDb3JlOjpGbG9hdFBvaW50IHBvaW50KQogICAgIEJsdXJB
c3Npc3RlZE5vZGUoKQogICAgIFNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50IHBv
aW50LCB1aW50MzJfdCBncmFudWxhcml0eSwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVpbnQzMl90
IGdlc3R1cmVTdGF0ZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBVcGRhdGVTZWxlY3Rpb25X
aXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDMyX3QgdG91Y2hlcywgYm9v
bCBiYXNlSXNTdGFydCwgdWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRleCA4M2Y0Yjc5Li5j
ZDY4YTVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lv
cy9XZWJQYWdlSU9TLm1tCkBAIC01NzYsNiArNTc2LDIxIEBAIHZvaWQgV2ViUGFnZTo6dGFwSGln
aGxpZ2h0QXRQb3NpdGlvbih1aW50NjRfdCByZXF1ZXN0SUQsIGNvbnN0IEZsb2F0UG9pbnQmIHBv
c2l0CiAgICAgc2VuZFRhcEhpZ2hsaWdodEZvck5vZGVJZk5lY2Vzc2FyeShyZXF1ZXN0SUQsIG1h
aW5mcmFtZS5ub2RlUmVzcG9uZGluZ1RvQ2xpY2tFdmVudHMocG9zaXRpb24sIGFkanVzdGVkUG9p
bnQpKTsKIH0KIAordm9pZCBXZWJQYWdlOjppbnNwZWN0b3JOb2RlU2VhcmNoTW92ZWRUb1Bvc2l0
aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQoreworICAgIEludFBvaW50IGFkanVzdGVk
UG9pbnQgPSByb3VuZGVkSW50UG9pbnQocG9zaXRpb24pOworICAgIEZyYW1lJiBtYWluZnJhbWUg
PSBtX3BhZ2UtPm1haW5GcmFtZSgpOworCisgICAgbWFpbmZyYW1lLmV2ZW50SGFuZGxlcigpLm1v
dXNlTW92ZWQoUGxhdGZvcm1Nb3VzZUV2ZW50KGFkanVzdGVkUG9pbnQsIGFkanVzdGVkUG9pbnQs
IE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZh
bHNlLCBmYWxzZSwgMCkpOworICAgIG1haW5mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlm
TmVlZGVkKCk7Cit9CisKK3ZvaWQgV2ViUGFnZTo6aW5zcGVjdG9yTm9kZVNlYXJjaEVuZGVkQXRQ
b3NpdGlvbihjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbikKK3sKKyAgICBpZiAoTm9kZSogbm9k
ZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZGVlcGVzdE5vZGVBdExvY2F0aW9uKHBvc2l0aW9uKSkK
KyAgICAgICAgbm9kZS0+aW5zcGVjdCgpOworfQorCiB2b2lkIFdlYlBhZ2U6OmJsdXJBc3Npc3Rl
ZE5vZGUoKQogewogICAgIGlmIChtX2Fzc2lzdGVkTm9kZSAmJiBtX2Fzc2lzdGVkTm9kZS0+aXNF
bGVtZW50Tm9kZSgpKQpAQCAtNjMxLDYgKzY0NiwxNiBAQCB2b2lkIFdlYlBhZ2U6OmhpZGVJbnNw
ZWN0b3JJbmRpY2F0aW9uKCkKIHsKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6Okhp
ZGVJbnNwZWN0b3JJbmRpY2F0aW9uKCkpOwogfQorCit2b2lkIFdlYlBhZ2U6OmVuYWJsZUluc3Bl
Y3Rvck5vZGVTZWFyY2goKQoreworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RW5h
YmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpKTsKK30KKwordm9pZCBXZWJQYWdlOjpkaXNhYmxlSW5z
cGVjdG9yTm9kZVNlYXJjaCgpCit7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
aXNhYmxlSW5zcGVjdG9yTm9kZVNlYXJjaCgpKTsKK30KICNlbmRpZgogCiBzdGF0aWMgRmxvYXRR
dWFkIGlubmVyRnJhbWVRdWFkKEZyYW1lKiBmcmFtZSwgTm9kZSogYXNzaXN0ZWROb2RlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>