<?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>78783</bug_id>
          
          <creation_ts>2012-02-16 00:38:55 -0800</creation_ts>
          <short_desc>Bring notifications support to WK1 mac</short_desc>
          <delta_ts>2012-02-21 16:00:42 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.7</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="Jon Lee">jonlee</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>eric</cc>
    
    <cc>jberlin</cc>
    
    <cc>sam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>557970</commentid>
    <comment_count>0</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-02-16 00:38:55 -0800</bug_when>
    <thetext>&lt;rdar://problem/10610578&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558017</commentid>
    <comment_count>1</comment_count>
      <attachid>127338</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-02-16 02:38:57 -0800</bug_when>
    <thetext>Created attachment 127338
Bring notifications support to WK1 mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558018</commentid>
    <comment_count>2</comment_count>
      <attachid>127339</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-02-16 02:39:00 -0800</bug_when>
    <thetext>Created attachment 127339
Source/WebKit/mac: (Prep work for) Bring notifications support to WK1 mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558019</commentid>
    <comment_count>3</comment_count>
      <attachid>127340</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-02-16 02:39:03 -0800</bug_when>
    <thetext>Created attachment 127340
Source/WebKit: Bring notifications support to WK1 mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558020</commentid>
    <comment_count>4</comment_count>
      <attachid>127341</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-02-16 02:39:06 -0800</bug_when>
    <thetext>Created attachment 127341
Bring notifications support to WK1 mac: permission requests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558326</commentid>
    <comment_count>5</comment_count>
      <attachid>127410</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-02-16 10:54:35 -0800</bug_when>
    <thetext>Created attachment 127410
Bring notifications support to WK1 mac: showing, canceling, removing notifications</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558328</commentid>
    <comment_count>6</comment_count>
      <attachid>127340</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-02-16 10:56:12 -0800</bug_when>
    <thetext>Comment on attachment 127340
Source/WebKit: Bring notifications support to WK1 mac

Missing code. Replacement patch has been posted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>558964</commentid>
    <comment_count>7</comment_count>
      <attachid>127534</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-02-16 23:47:55 -0800</bug_when>
    <thetext>Created attachment 127534
Bring notifications support to WK1 mac: showing, canceling, removing notifications</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559256</commentid>
    <comment_count>8</comment_count>
      <attachid>127534</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-17 09:29:02 -0800</bug_when>
    <thetext>Comment on attachment 127534
Bring notifications support to WK1 mac: showing, canceling, removing notifications

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

&gt; Source/WebKit/mac/WebView/WebNotification.mm:45
&gt; +    WebNotificationInternal *_internal;

Can&apos;t this just be a RefPtr&lt;Notification&gt; instead? Then you wouldn&apos;t have to worry about the lifecycle management and casting between WebNotificationInternal and WebCore::Notification.

&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:2
&gt; - * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
&gt; + * Copyright (C) 2005-2012 Apple Inc. All rights reserved.

I don&apos;t think we&apos;re supposed to use ranges for copyright years.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559262</commentid>
    <comment_count>9</comment_count>
      <attachid>127534</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-02-17 09:40:33 -0800</bug_when>
    <thetext>Comment on attachment 127534
Bring notifications support to WK1 mac: showing, canceling, removing notifications

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

&gt;&gt; Source/WebKit/mac/WebView/WebNotification.mm:45
&gt;&gt; +    WebNotificationInternal *_internal;
&gt; 
&gt; Can&apos;t this just be a RefPtr&lt;Notification&gt; instead? Then you wouldn&apos;t have to worry about the lifecycle management and casting between WebNotificationInternal and WebCore::Notification.

Sure. I was originally basing this on other code that do something similar. But it&apos;s easy to convert this to a RefPtr.

&gt;&gt; Source/WebKit/mac/WebView/WebViewPrivate.h:2
&gt;&gt; + * Copyright (C) 2005-2012 Apple Inc. All rights reserved.
&gt; 
&gt; I don&apos;t think we&apos;re supposed to use ranges for copyright years.

Whoops, this change slipped by. It wouldn&apos;t be correct, anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561214</commentid>
    <comment_count>10</comment_count>
      <attachid>128042</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-02-21 14:10:32 -0800</bug_when>
    <thetext>Created attachment 128042
Bring notifications support to WK1 mac: showing, canceling, removing notifications</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561218</commentid>
    <comment_count>11</comment_count>
      <attachid>128042</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-21 14:17:01 -0800</bug_when>
    <thetext>Comment on attachment 128042
Bring notifications support to WK1 mac: showing, canceling, removing notifications

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

&gt; Source/WebKit/mac/WebCoreSupport/WebNotificationClient.mm:73
&gt; +    NotificationContextMap::iterator it = m_notificationContextMap.find(notification-&gt;scriptExecutionContext());
&gt; +    if (it == m_notificationContextMap.end()) {
&gt; +        pair&lt;NotificationContextMap::iterator, bool&gt; addedPair = m_notificationContextMap.add(notification-&gt;scriptExecutionContext(), Vector&lt;RetainPtr&lt;WebNotification&gt; &gt;());
&gt; +        it = addedPair.first;
&gt; +    }
&gt; +    it-&gt;second.append(webNotification);

I think you can simplify this to always call add:

NotificationContextMap::iterator it = m_notificationContextMap.add(notification-&gt;scriptExecutionContext(), Vector&lt;RetainPtr&lt;WebNotification&gt; &gt;()).first();
addedPair.append(webNotification);

&gt; Source/WebKit/mac/WebView/WebNotification.mm:73
&gt; +- (id)init

Please add an extra newline before the method definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561228</commentid>
    <comment_count>12</comment_count>
      <attachid>128042</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-02-21 14:25:19 -0800</bug_when>
    <thetext>Comment on attachment 128042
Bring notifications support to WK1 mac: showing, canceling, removing notifications

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

&gt;&gt; Source/WebKit/mac/WebCoreSupport/WebNotificationClient.mm:73
&gt;&gt; +    it-&gt;second.append(webNotification);
&gt; 
&gt; I think you can simplify this to always call add:
&gt; 
&gt; NotificationContextMap::iterator it = m_notificationContextMap.add(notification-&gt;scriptExecutionContext(), Vector&lt;RetainPtr&lt;WebNotification&gt; &gt;()).first();
&gt; addedPair.append(webNotification);

Done.

&gt;&gt; Source/WebKit/mac/WebView/WebNotification.mm:73
&gt;&gt; +- (id)init
&gt; 
&gt; Please add an extra newline before the method definition.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561256</commentid>
    <comment_count>13</comment_count>
      <attachid>127341</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-21 15:05:21 -0800</bug_when>
    <thetext>Comment on attachment 127341
Bring notifications support to WK1 mac: permission requests

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

&gt; Source/WebKit/mac/WebCoreSupport/WebNotificationClient.mm:136
&gt; +        // execute callback

I don&apos;t understand this comment. Should the callback be executed or not? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561263</commentid>
    <comment_count>14</comment_count>
      <attachid>127339</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-02-21 15:13:01 -0800</bug_when>
    <thetext>Comment on attachment 127339
Source/WebKit/mac: (Prep work for) Bring notifications support to WK1 mac

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

&gt; Source/WebKit/mac/WebView/WebPreferences.h:443
&gt; +/*!
&gt; +    @method setNotificationsEnabled
&gt; +    @param flag
&gt; +*/
&gt; +- (void)setNotificationsEnabled:(BOOL)flag;
&gt; +/*!
&gt; +    @method notificationsEnabled
&gt; +    @param flag
&gt; +*/
&gt; +- (BOOL)notificationsEnabled;

These need to go in WebPreferencesPrivate.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561311</commentid>
    <comment_count>15</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-02-21 16:00:42 -0800</bug_when>
    <thetext>Committed r108409: &lt;http://trac.webkit.org/changeset/108409&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127338</attachid>
            <date>2012-02-16 02:38:57 -0800</date>
            <delta_ts>2012-02-21 14:21:40 -0800</delta_ts>
            <desc>Bring notifications support to WK1 mac</desc>
            <filename>bug-78783-20120216023937.patch</filename>
            <type>text/plain</type>
            <size>1223</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmJmMzNjMjRjMjYxYjVh
MTc2YjdmODI5NmUxZjk1ZjJmMGY3NGFkNy4uODM4ZTE3MWUxYjYzMGQ2N2UzNWRmNmYwM2I5NWFi
MDVjNDQyMDc2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAyLTE2ICBKb24g
TGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBCcmluZyBub3RpZmljYXRpb25zIHN1
cHBvcnQgdG8gV0sxIG1hYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Nzg3ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNjEwNTc4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZS5leHAu
aW46IEV4cG9zZSBkaXNwYXRjaEVycm9yRXZlbnQgb24gTm90aWZpY2F0aW9uLgorCiAyMDEyLTAy
LTE1ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVGhl
IFRpbGVDYWNoZSBvYmplY3Qgc2hvdWxkIGJlIGRlYWxsb2NhdGVkIG9uIHRoZSBtYWluIHRocmVh
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCA2NWI4YzU2MjcxY2QxYWM2ODUwOWZhYWE4MDM5MWI2
ZTJlNTAyNDg4Li5iOGFlODMzZjFiOWVjYmJjN2QwN2UwMGE2ZDAwNGI3ZjkxMTEzYjgxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjA3OSw2ICsyMDc5LDcgQEAgX19aTjdXZWJDb3JlMTJOb3Rp
ZmljYXRpb25EMUV2CiBfX1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE3ZGlzcGF0Y2hTaG93RXZl
bnRFdgogX19aTjdXZWJDb3JlMTJOb3RpZmljYXRpb24xOGRpc3BhdGNoQ2xpY2tFdmVudEV2CiBf
X1pON1dlYkNvcmUxMk5vdGlmaWNhdGlvbjE4ZGlzcGF0Y2hDbG9zZUV2ZW50RXYKK19fWk43V2Vi
Q29yZTEyTm90aWZpY2F0aW9uMThkaXNwYXRjaEVycm9yRXZlbnRFdgogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQo=
</data>
<flag name="review"
          id="129437"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127339</attachid>
            <date>2012-02-16 02:39:00 -0800</date>
            <delta_ts>2012-02-21 15:13:01 -0800</delta_ts>
            <desc>Source/WebKit/mac: (Prep work for) Bring notifications support to WK1 mac</desc>
            <filename>bug-78783-20120216023940.patch</filename>
            <type>text/plain</type>
            <size>12021</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggOGY1ZDgyN2Ix
ZTdkY2JlNmM5YmM5ZTQ2YzQ1MDFiZDg0ZDQwMzkyYS4uOTI5ZDU5OTc0NTY4MTAyY2EyYzkwOWUw
YjczNWQ5NDhmZGQ2ODM0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEy
LTAyLTE2ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICAoUHJlcCB3b3Jr
IGZvcikgQnJpbmcgbm90aWZpY2F0aW9ucyBzdXBwb3J0IHRvIFdLMSBtYWMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzgzCisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS8xMDYxMDU3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZW5hbWUgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lci4gVGhlIGlu
dGVyZmFjZSBpcyBnZW5lcmljIGVub3VnaCB0byBiZSByZXVzZWQgZm9yCisgICAgICAgIG5vdGlm
aWNhdGlvbiByZXF1ZXN0cy4gVG8gYXZvaWQgaGF2aW5nIHRvIGNyZWF0ZSBhIG5ldyBsaXN0ZW5l
ciB0eXBlLCBpbnN0ZWFkIHJlbmFtZSBpdAorICAgICAgICB0byBXZWJBbGxvd0RlbnlQb2xpY3lM
aXN0ZW5lci4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmg6IFJlbmFt
ZSB0aGUgcHJvdG9jb2wuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25D
bGllbnQubW06IFJlZmFjdG9yIGdlb2xvY2F0aW9uIHJlcXVlc3QgbGlzdGVuZXIgdG8gdXNlCisg
ICAgICAgIG5ldyBuYW1lLgorCisgICAgICAgIEFkZCBwcmVmZXJlbmNlIHRvIGtlZXAgdHJhY2sg
b2Ygd2hldGhlciBub3RpZmljYXRpb25zIGFyZSBlbmFibGVkIGluIGdlbmVyYWwuCisgICAgICAg
ICogV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDogQWRkIFdlYk5vdGlmaWNhdGlv
bnNFbmFibGVkS2V5IGZvciBzdG9yaW5nIHRoZQorICAgICAgICBwcmVmZXJlbmNlLgorICAgICAg
ICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2Vz
IGluaXRpYWxpemVdKTogQnkgZGVmYXVsdCBoYXZlIHRoZW0gZW5hYmxlZC4KKyAgICAgICAgKC1b
V2ViUHJlZmVyZW5jZXMgc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6XSk6CisgICAgICAgICgtW1dl
YlByZWZlcmVuY2VzIG5vdGlmaWNhdGlvbnNFbmFibGVkXSk6CisgICAgICAgICogV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5oOgorCisgICAgICAgIEFkZCBhIHN0cmluZ1ZhbHVlIG1ldGhvZCB0aGF0
IGV4cG9zZXMgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkgZm9yIHN0b3Jpbmcg
dGhlCisgICAgICAgIG5vdGlmaWNhdGlvbiBwb2xpY3kgZm9yIGEgZ2l2ZW4gb3JpZ2luLgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luLm1tOgorICAgICAgICAoLVtX
ZWJTZWN1cml0eU9yaWdpbiBzdHJpbmdWYWx1ZV0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oOgorCiAyMDEyLTAyLTE1ICBFbnJpY2EgQ2FzdWNj
aSAgPGVucmljYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVmYWN0b3IgQ2xpcGJvYXJkTWFjIGNs
YXNzIHRvIHVzZSBQbGF0Zm9ybVN0cmF0ZWdpZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCmluZGV4IGI1MmI3
YmM2NDIwOTY5MDFmOTM1ODgzYzgyM2RjMDhmY2ViZGZlY2MuLjU0MWY0MGNjZDhlODk4NDBlMjY0
NmI2NzQyZTVkNTRiOTI5ZWNlZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNyw3ICszNyw3IEBACiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCi1AaW50ZXJmYWNlIFdlYkdlb2xvY2F0aW9uUG9s
aWN5TGlzdGVuZXIgOiBOU09iamVjdCA8V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcj4KK0Bp
bnRlcmZhY2UgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciA6IE5TT2JqZWN0IDxXZWJBbGxv
d0RlbnlQb2xpY3lMaXN0ZW5lcj4KIHsKICAgICBSZWZQdHI8R2VvbG9jYXRpb24+IF9nZW9sb2Nh
dGlvbjsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlNlY3VyaXR5T3JpZ2luLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
U2VjdXJpdHlPcmlnaW4ubW0KaW5kZXggMjM3M2Y4NDY0YmU5ODljNjkyMmUyNzBlMjNmMWZjNmMz
ZWRhYzkxZC4uOGYzOGZlZDQzNDE0MTljZjFhNjVlMzRlOTA5ZGI2N2VmYjRmOGI1NiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmlnaW4u
bW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViU2VjdXJpdHlPcmln
aW4ubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEwIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAx
MCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTY2LDYgKzY2LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUp
LT5kYXRhYmFzZUlkZW50aWZpZXIoKTsKIH0KIAorLSAoTlNTdHJpbmcgKilzdHJpbmdWYWx1ZQor
eworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFNlY3VyaXR5T3JpZ2luKj4oX3ByaXZhdGUp
LT50b1N0cmluZygpOworfQorCiAvLyBEZXByZWNhdGVkLiBVc2UgaG9zdCBpbnN0ZWFkLiBUaGlz
IG5lZWRzIHRvIHN0YXkgaGVyZSB1bnRpbCB3ZSBzaGlwIGEgbmV3IFNhZmFyaS4KIC0gKE5TU3Ry
aW5nICopZG9tYWluCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3Vw
cG9ydC9XZWJTZWN1cml0eU9yaWdpblByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCmluZGV4IGE3ODRhYmE2N2UzMTY0
ODA4MTRlZmFjMDFjYzE0YTBjNGVlMDYyZGQuLmZhZTRjMzM4MmNjMjdlYWJhNTk2Y2UzNTIwNjAx
NzNlZjFmNjZlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYlNlY3VyaXR5T3JpZ2luUHJpdmF0ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAxMCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEwLCAyMDEyIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDYg
KzQxLDcgQEAKIC0gKE5TU3RyaW5nICopaG9zdDsKIAogLSAoTlNTdHJpbmcgKilkYXRhYmFzZUlk
ZW50aWZpZXI7CistIChOU1N0cmluZyAqKXN0cmluZ1ZhbHVlOwogCiAvLyBSZXR1cm5zIHplcm8g
aWYgdGhlIHBvcnQgaXMgdGhlIGRlZmF1bHQgcG9ydCBmb3IgdGhlIHByb3RvY29sLCBub24temVy
byBvdGhlcndpc2UuCiAtICh1bnNpZ25lZCBzaG9ydClwb3J0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXggMjBlNDJh
YjNkNjNlMmVjODFiM2RiZGNjZGYwOTllZDM0ZDU3M2I2Mi4uYjMyOTc5ZGY5MzNlMWMwMTExNWQ0
NzM3ZjQ5MWNhZjc5M2ViZThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENv
cHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAxMiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE2
LDYgKzExNiw3IEBACiAjZGVmaW5lIFdlYktpdFNob3VsZERpc3BsYXlTdWJ0aXRsZXNQcmVmZXJl
bmNlS2V5IEAiV2ViS2l0U2hvdWxkRGlzcGxheVN1YnRpdGxlcyIKICNkZWZpbmUgV2ViS2l0U2hv
dWxkRGlzcGxheUNhcHRpb25zUHJlZmVyZW5jZUtleSBAIldlYktpdFNob3VsZERpc3BsYXlDYXB0
aW9ucyIKICNkZWZpbmUgV2ViS2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJl
bmNlS2V5IEAiV2ViS2l0U2hvdWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnMiCisjZGVmaW5lIFdl
YktpdE5vdGlmaWNhdGlvbnNFbmFibGVkS2V5IEAiV2ViS2l0Tm90aWZpY2F0aW9uc0VuYWJsZWQi
CiAKIC8vIFRoZXNlIGFyZSBwcml2YXRlIGJvdGggYmVjYXVzZSBjYWxsZXJzIHNob3VsZCBiZSB1
c2luZyB0aGUgY292ZXIgbWV0aG9kcyBhbmQgYmVjYXVzZSB0aGUKIC8vIGNvdmVyIG1ldGhvZHMg
dGhlbXNlbHZlcyBhcmUgcHJpdmF0ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViUHJlZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXMuaAppbmRleCA4MGNjOTM1NWFjYmJkNzQxZDdiZTg5ZGI3OGZiN2QyNDE3MjZiNThm
Li5mMTk3YzAxZWE5MjRmZGVkY2I0NGE1YzRjNTM2YWJhMDkyNGE2Nzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAx
MiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDMxLDQgKzQzMSwxNCBAQCBjYWNoaW5nIGJlaGF2aW9y
LgogKi8KIC0gKFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbDsKIAorLyohCisgICAgQG1ldGhvZCBz
ZXROb3RpZmljYXRpb25zRW5hYmxlZAorICAgIEBwYXJhbSBmbGFnCisqLworLSAodm9pZClzZXRO
b3RpZmljYXRpb25zRW5hYmxlZDooQk9PTClmbGFnOworLyohCisgICAgQG1ldGhvZCBub3RpZmlj
YXRpb25zRW5hYmxlZAorICAgIEBwYXJhbSBmbGFnCisqLworLSAoQk9PTClub3RpZmljYXRpb25z
RW5hYmxlZDsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tCmluZGV4IDE1MzIwMzkzODQzYzU1ZTU0MWY3ZjMyMDk5NTU0ZDQxOTYyNDc5N2UuLjRiYzUw
OGQ5ZGM3NTA1NGZkOWQ1Y2E2ODE0YmI0NzY2OWRhZWFiMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNiBHcmFo
YW0gRGVubmlzIChncmFoYW0uZGVubmlzQGdtYWlsLmNvbSkKICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAg
LTM5Myw2ICszOTMsNyBAQCBzdGF0aWMgV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsRm9yTWFpbkJ1
bmRsZSh2b2lkKQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktp
dFNob3VsZERpc3BsYXlTdWJ0aXRsZXNQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFNob3VsZERpc3BsYXlDYXB0aW9uc1ByZWZlcmVu
Y2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0U2hv
dWxkRGlzcGxheVRleHREZXNjcmlwdGlvbnNQcmVmZXJlbmNlS2V5LAorICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdE5vdGlmaWNhdGlvbnNFbmFibGVkS2V5LAog
CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoTG9uZ0xvbmc6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktpdEFwcGxpY2F0aW9uQ2FjaGVUb3RhbFF1b3RhLAogICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aExvbmdMb25nOkFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdl
Ojpub1F1b3RhKCldLCBXZWJLaXRBcHBsaWNhdGlvbkNhY2hlRGVmYXVsdE9yaWdpblF1b3RhLApA
QCAtODA2LDYgKzgwNywxNiBAQCBzdGF0aWMgV2ViQ2FjaGVNb2RlbCBjYWNoZU1vZGVsRm9yTWFp
bkJ1bmRsZSh2b2lkKQogICAgIHJldHVybiBbc2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktp
dENhY2hlTW9kZWxQcmVmZXJlbmNlS2V5XTsKIH0KIAorLSAodm9pZClzZXROb3RpZmljYXRpb25z
RW5hYmxlZDooQk9PTClmbGFnCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZvcktl
eTpXZWJLaXROb3RpZmljYXRpb25zRW5hYmxlZEtleV07Cit9CisKKy0gKEJPT0wpbm90aWZpY2F0
aW9uc0VuYWJsZWQKK3sKKyAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTpXZWJLaXRO
b3RpZmljYXRpb25zRW5hYmxlZEtleV07Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdl
YlByZWZlcmVuY2VzIChXZWJQcml2YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDljOThmZGZjYzkwODNiOWQ1YTU4NDdjNzEz
MTVjY2ExM2U5Zjk5YzMuLjJkZjMxMDFkNmIwNWQyNmZhZDg2NzgwODZlMjA3Y2VmYjBjODY5Y2Ig
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZh
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRl
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTExOSw3ICsxMTksNyBAQCBleHRlcm4gTlNTdHJpbmcgKldlYkNvbnNvbGVNZXNzYWdl
RGVidWdNZXNzYWdlTGV2ZWw7CiAKIEBjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIAotQHByb3Rv
Y29sIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIgPE5TT2JqZWN0PgorQHByb3RvY29sIFdl
YkFsbG93RGVueVBvbGljeUxpc3RlbmVyIDxOU09iamVjdD4KIC0gKHZvaWQpYWxsb3c7CiAtICh2
b2lkKWRlbnk7CiBAZW5kCkBAIC0yMjMsNyArMjIzLDcgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJD
b25zb2xlTWVzc2FnZURlYnVnTWVzc2FnZUxldmVsOwogKi8KIC0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdp
bjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZTooV2Vi
RnJhbWUgKilmcmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyOihpZDxXZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyPilsaXN0ZW5lcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcjooaWQ8V2ViQWxs
b3dEZW55UG9saWN5TGlzdGVuZXI+KWxpc3RlbmVyOwogCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZp
ZXcgKilzZW5kZXIgZWxlbWVudERpZEZvY3VzTm9kZTooRE9NTm9kZSAqKW5vZGU7CiAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZWxlbWVudERpZEJsdXJOb2RlOihET01Ob2RlICop
bm9kZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBkZWJmNTZkOWVjNDAzNmMxYTJiODU1OGVjZTU0MDhkNTlmOGNlMmNmLi4yNjk3MTk1Nzk1OWE0
NjczZGM4NDY4ZjU5NDIwMDUwNjlhNGQyM2FiIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDItMTYgIEpvbiBM
ZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEJyaW5nIG5vdGlmaWNhdGlvbnMgc3Vw
cG9ydCB0byBXSzEgbWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03ODc4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA2MTA1Nzg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9tYWMvVUlEZWxlZ2F0ZS5tbTogUmVmYWN0b3IgV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5l
ciB0byBXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lci4KKyAgICAgICAgKC1bVUlEZWxlZ2F0ZSB3
ZWJWaWV3OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46ZnJhbWU6
bGlzdGVuZXI6XSk6CisgICAgICAgICgtW1VJRGVsZWdhdGUgdGltZXJGaXJlZF0pOgorCiAyMDEy
LTAyLTE1ICBNaWNoYWVsIEJyw7xuaW5nICA8bWljaGFlbC5icnVuaW5nQG5va2lhLmNvbT4KIAog
ICAgICAgICBbUXRdIEFkZCBVSSBmb3IgSFRUUCBhdXRoZW50aWNhdGlvbiBpbiB0aGUgUXQgTWlu
aUJyb3dzZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9VSURlbGVnYXRl
Lm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUubW0KaW5kZXggNDkzYzAy
ZDVjM2E0Y2Q5NDE1Y2FiZjY0MWQyNjljN2U4ZWJlNTM2MS4uODdlZWNlNDQxYTkxOGQ4OTE5YWY3
YzMzYjQxNjYwZDAwMWJmNDgyNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFj
L1VJRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL1VJRGVsZWdhdGUu
bW0KQEAgLTE5NSw3ICsxOTUsNyBAQCBEdW1wUmVuZGVyVHJlZURyYWdnaW5nSW5mbyAqZHJhZ2dp
bmdJbmZvID0gbmlsOwogICAgICAgICBwcmludGYoIlVJIERFTEVHQVRFIFNUQVRVUyBDQUxMQkFD
Szogc2V0U3RhdHVzVGV4dDolc1xuIiwgW3RleHQgVVRGOFN0cmluZ10pOwogfQogCi0tICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVx
dWVzdEZyb21PcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luIGZyYW1lOihXZWJGcmFt
ZSAqKWZyYW1lIGxpc3RlbmVyOihpZDxXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyPilsaXN0
ZW5lcgorLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luOihXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbiBm
cmFtZTooV2ViRnJhbWUgKilmcmFtZSBsaXN0ZW5lcjooaWQ8V2ViQWxsb3dEZW55UG9saWN5TGlz
dGVuZXI+KWxpc3RlbmVyCiB7CiAgICAgaWYgKCFnTGF5b3V0VGVzdENvbnRyb2xsZXItPmlzR2Vv
bG9jYXRpb25QZXJtaXNzaW9uU2V0KCkpIHsKICAgICAgICAgaWYgKCFtX3BlbmRpbmdHZW9sb2Nh
dGlvblBlcm1pc3Npb25MaXN0ZW5lcnMpCkBAIC0yMzAsNyArMjMwLDcgQEAgRHVtcFJlbmRlclRy
ZWVEcmFnZ2luZ0luZm8gKmRyYWdnaW5nSW5mbyA9IG5pbDsKICAgICBBU1NFUlQoZ0xheW91dFRl
c3RDb250cm9sbGVyLT5pc0dlb2xvY2F0aW9uUGVybWlzc2lvblNldCgpKTsKICAgICBtX3RpbWVy
ID0gMDsKICAgICBOU0VudW1lcmF0b3IqIGVudW1lcmF0b3IgPSBbbV9wZW5kaW5nR2VvbG9jYXRp
b25QZXJtaXNzaW9uTGlzdGVuZXJzIG9iamVjdEVudW1lcmF0b3JdOwotICAgIGlkPFdlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXI+IGxpc3RlbmVyOworICAgIGlkPFdlYkFsbG93RGVueVBvbGlj
eUxpc3RlbmVyPiBsaXN0ZW5lcjsKICAgICB3aGlsZSAoKGxpc3RlbmVyID0gW2VudW1lcmF0b3Ig
bmV4dE9iamVjdF0pKSB7CiAgICAgICAgIGlmIChnTGF5b3V0VGVzdENvbnRyb2xsZXItPmdlb2xv
Y2F0aW9uUGVybWlzc2lvbigpKQogICAgICAgICAgICAgW2xpc3RlbmVyIGFsbG93XTsK
</data>
<flag name="review"
          id="129438"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127340</attachid>
            <date>2012-02-16 02:39:03 -0800</date>
            <delta_ts>2012-02-16 10:56:12 -0800</delta_ts>
            <desc>Source/WebKit: Bring notifications support to WK1 mac</desc>
            <filename>bug-78783-20120216023943.patch</filename>
            <type>text/plain</type>
            <size>29155</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkMDA3YzY2MTk0ZGViZGIz
N2MxNDBmNWEyYWI1MGM5OTgxNDljZGYuLmZhMmYxMzQzYmU3ZGNiY2YyMjdhN2Q3MmZhYzQ2YjI4
ZDIwNzNmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMTYgIEpvbiBMZWUg
IDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEJyaW5nIG5vdGlmaWNhdGlvbnMgc3VwcG9y
dCB0byBXSzEgbWFjCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03ODc4MworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA2MTA1Nzg+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajogQWRkZWQgbmV3IGZpbGVzLgorCiAyMDEyLTAyLTE0ICBOaW1hIEdo
YW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnld
IFVwc3RyZWFtaW5nIFdlYlNldHRpbmdzIGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA5MjlkNTk5
NzQ1NjgxMDJjYTJjOTA5ZTBiNzM1ZDk0OGZkZDY4MzRiLi44ODAyZjc4MjMzNDBjMzczOTJlNzRj
YzNiZGM5YzAxM2EyNzVmM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjAgQEAKIDIw
MTItMDItMTYgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgogCisgICAgICAgIEJyaW5nIG5v
dGlmaWNhdGlvbnMgc3VwcG9ydCB0byBXSzEgbWFjOiBzaG93aW5nLCBjYW5jZWxpbmcsIHJlbW92
aW5nIG5vdGlmaWNhdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc4NzgzCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDYxMDU3OD4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDcmVhdGUgYSBXZWJL
aXQgd3JhcHBlciBvYmplY3QgZm9yIFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiwgd2hpY2ggYWxzbyBr
ZWVwcyB0cmFjayBvZiBhbiBhc3NpZ25lZAorICAgICAgICBJRC4KKyAgICAgICAgKiBXZWJWaWV3
L1dlYk5vdGlmaWNhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYlNlY3VyaXR5T3JpZ2luKToK
KyAgICAgICAgKiBXZWJWaWV3L1dlYk5vdGlmaWNhdGlvbi5tbTogQWRkZWQuCisgICAgICAgIChj
b3JlKToKKyAgICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGluaXRXaXRoQ29yZU5vdGlmaWNhdGlv
bjpub3RpZmljYXRpb25JRDpdKToKKyAgICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGluaXRdKToK
KyAgICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV2ViTm90
aWZpY2F0aW9uIHRpdGxlXSk6CisgICAgICAgICgtW1dlYk5vdGlmaWNhdGlvbiBib2R5XSk6Cisg
ICAgICAgICgtW1dlYk5vdGlmaWNhdGlvbiBvcmlnaW5dKToKKyAgICAgICAgKC1bV2ViTm90aWZp
Y2F0aW9uIG5vdGlmaWNhdGlvbklEXSk6CisgICAgICAgICgtW1dlYk5vdGlmaWNhdGlvbiBkaXNw
YXRjaFNob3dFdmVudF0pOgorICAgICAgICAoLVtXZWJOb3RpZmljYXRpb24gZGlzcGF0Y2hDbG9z
ZUV2ZW50XSk6CisgICAgICAgICgtW1dlYk5vdGlmaWNhdGlvbiBkaXNwYXRjaENsaWNrRXZlbnRd
KToKKyAgICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGRpc3BhdGNoRXJyb3JFdmVudF0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKworICAgICAgICBFeHRlbmQgV2ViVmlldyB0byBpbmNsdWRlIGEgV2ViTm90
aWZpY2F0aW9uUHJvdmlkZXIsIHdoaWNoIGNsaWVudHMgaW1wbGVtZW50LgorICAgICAgICAqIFdl
YlZpZXcvV2ViVmlld0RhdGEuaDogQWRkIGEgcHJpdmF0ZSBtZW1iZXIgZm9yIHRoZSBwcm92aWRl
ci4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICAgICAqIERl
ZmluZSBhbiBlbnVtIFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24gdGhhdCBtaXJyb3JzIFdlYkNv
cmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbgorICAgICAgICAgICAgdGhhdCBj
bGllbnQgd2hpY2ggaW1wbGVtZW50IHRoZSBwcm92aWRlciBjYW4gdXNlIHRvIHJldHVybiBwb2xp
Y3kgZGVjaXNpb25zLgorICAgICAgICAgICAgKiBEZWZpbmUgV2ViTm90aWZpY2F0aW9uUHJvdmlk
ZXIuCisgICAgICAgICAgICAqIENhdGVnb3J5IFdlYlZpZXdOb3RpZmljYXRpb24gZXh0ZW5kcyBX
ZWJWaWV3IHdpdGggbWV0aG9kcyB0aGF0IHNldCBhbmQgbWFuYWdlciB0aGUKKyAgICAgICAgICAg
IG5vdGlmaWNhdGlvbiBwcm92aWRlciwgYW5kIGhhbmRsZSBldmVudHMgZnJvbSB0aGUgcGxhdGZv
cm0gbm90aWZpY2F0aW9ucy4KKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dlYlZpZXcgX3NldE5vdGlmaWNhdGlvblByb3ZpZGVyOl0pOiBTZXRzIHRoZSBwcm92aWRl
ciB3aGVuIGluaXRpYWxpemluZyB0aGUgV2ViVmlldy4KKyAgICAgICAgKC1bV2ViVmlldyBfbm90
aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZF0pOgorICAgICAgICAoLVtXZWJWaWV3IF9ub3Rp
ZmljYXRpb25Qcm92aWRlcl0pOgorICAgICAgICAoLVtXZWJWaWV3IF9ub3RpZmljYXRpb25EaWRT
aG93Ol0pOgorICAgICAgICAoLVtXZWJWaWV3IF9ub3RpZmljYXRpb25EaWRDbGljazpdKToKKyAg
ICAgICAgKC1bV2ViVmlldyBfbm90aWZpY2F0aW9uc0RpZENsb3NlOl0pOgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6IEFkZCB2YXJpYWJsZXMgdGhh
dCBtYXAgYmV0d2VlbiBXZWJDb3JlOjpOb3RpZmljYXRpb24KKyAgICAgICAgaW5zdGFuY2VzLCB0
aGVpciBhc3NpZ25lZCBJRHMsIGFuZCBjb3JyZXNwb25kaW5nIFdlYktpdCB3cmFwcGVyIG9iamVj
dHMuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tOgor
ICAgICAgICAoZ2VuZXJhdGVOb3RpZmljYXRpb25JRCk6IENyZWF0ZWQgdW5pcXVlIElEcyBmb3Ig
ZWFjaCBzaG93biBub3RpZmljYXRpb24uCisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6
OnNob3cpOiBDcmVhdGUgd3JhcHBlciBvYmplY3QgZm9yIG5vdGlmaWNhdGlvbiwgYXNzaWduIElE
LCBjYWNoZSB0aGUKKyAgICAgICAgbWFwcGluZ3MgYmV0d2VlbiB0aGUgb2JqZWN0cywgYW5kIGZv
cndhcmQgaXQgdG8gdGhlIHByb3ZpZGVyLgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2xpZW50
OjpjYW5jZWwpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRpb25P
YmplY3REZXN0cm95ZWQpOiBSZW1vdmUgdGhlIG5vdGlmaWNhdGlvbiBmcm9tIHRoZSBtYXBzLgor
ICAgICAgICAoV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRpb25Db250cm9sbGVyRGVz
dHJveWVkKTogSWYgdGhlIGNvbnRyb2xsZXIgaXMgZGVzdHJveWVkLCB0ZWxsCisgICAgICAgIHRo
ZSBwcm92aWRlciB0byBjbGVhciBvZiB0aGUgbm90aWZpY2F0aW9ucyByZWxhdGVkIHRvIHRoaXMg
d2ViIHZpZXcuCisKKzIwMTItMDItMTYgIEpvbiBMZWUgIDxqb25sZWVAYXBwbGUuY29tPgorCiAg
ICAgICAgIChQcmVwIHdvcmsgZm9yKSBCcmluZyBub3RpZmljYXRpb25zIHN1cHBvcnQgdG8gV0sx
IG1hYwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3
ODMKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNjEwNTc4PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTZjZGY0YzAwNzViMTUwMWJh
YzVlOGVhZGQ3OGYzYTJiNjM5NGQxYS4uYzhkZTc1NWI2Y2Q2MjZjMTE4NDE1N2JmMGEzMjg1MmNm
MTI0MWNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC03NCw2ICs3NCw5IEBACiAJCTIyNkU5RTZCMDlEMEFBODIwMEYzQTJCQyAvKiBX
ZWJOZXRzY2FwZURlcHJlY2F0ZWRGdW5jdGlvbnMuYyBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyNkU5RTY5MDlEMEFBODIwMEYzQTJCQyAvKiBXZWJOZXRz
Y2FwZURlcHJlY2F0ZWRGdW5jdGlvbnMuYyAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1Mg
PSAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyI7IH07IH07CiAJCTIyRjIxOUNDMDhEMjM2
NzMwMDMwRTA3OCAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMkYyMTlDQjA4RDIzNjczMDAzMEUwNzgg
LyogV2ViQmFja0ZvcndhcmRMaXN0UHJpdmF0ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI5QUVGOTYwMTM0Qzc2RkIwMEZFNTA5NiAvKiBPdXRs
b29rUXVpcmtzVXNlclNjcmlwdC5qcyBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMjlBRUY5NUQxMzRDNzU1NDAwRkU1MDk2IC8qIE91dGxvb2tRdWlya3NV
c2VyU2NyaXB0LmpzICovOyB9OworCQkzMTJFMkZFNTE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90
aWZpY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAzMTJFMkZFMzE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMzEyRTJGRTYxNEU0ODE4
MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkUyRkU0MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3Rp
ZmljYXRpb24ubW0gKi87IH07CisJCTMxMkUyRkU5MTRFNDgyMTUwMDdDQ0ExOCAvKiBXZWJOb3Rp
ZmljYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzEyRTJGRTgxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbkludGVy
bmFsLmggKi87IH07CiAJCTMxQzExQTZFMTQ3NjU1MkUwMDQ5QTRDQyAvKiBXZWJOb3RpZmljYXRp
b25DbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDMxQzExQTZDMTQ3NjU1MkUwMDQ5QTRDQyAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLzsg
fTsKIAkJMzFDMTFBNkYxNDc2NTUyRTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxQzExQTZE
MTQ3NjU1MkUwMDQ5QTRDQyAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQubW0gKi87IH07CiAJCTM3
QjZGQjRFMTA2MzUzMEMwMDBGREIzQiAvKiBXZWJQREZEb2N1bWVudEV4dHJhcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzdCNkZCNEMxMDYzNTMwQzAw
MEZEQjNCIC8qIFdlYlBERkRvY3VtZW50RXh0cmFzLmggKi87IH07CkBAIC00NTYsNiArNDU5LDkg
QEAKIAkJMkQzNkZENUUwM0Y3OEY5RTAwQTgwMTY2IC8qIFdlYkZvcm1EZWxlZ2F0ZVByaXZhdGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJG
b3JtRGVsZWdhdGVQcml2YXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogCQkyRDgxREFCMjAzRUIwQjJEMDBBODAxNjYgLyogV2ViRm9y
bURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkZvcm1EZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJMkQ4MURBQjMwM0VCMEIyRDAwQTgwMTY2IC8qIFdl
YkZvcm1EZWxlZ2F0ZS5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lm9iamM7IHBhdGggPSBXZWJGb3JtRGVsZWdhdGUubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
dGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTMxMkUyRkUzMTRFNDgxODIwMDdDQ0Ex
OCAvKiBXZWJOb3RpZmljYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViTm90aWZpY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTMxMkUyRkU0
MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJOb3RpZmljYXRpb24ubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTMxMkUyRkU4MTRFNDgyMTUwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRp
b25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmlj
YXRpb25JbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMUMxMUE2QzE0
NzY1NTJFMDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkzMUMxMUE2RDE0NzY1NTJFMDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0
aW9uQ2xpZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzNTA4
MUQ5MjAyQjZENEQ4MEFDQTJBQ0EgLyogV2ViSFRNTFJlcHJlc2VudGF0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBm
aWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IHBhdGggPSBXZWJIVE1MUmVwcmVzZW50
YXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CkBAIC0xMjM5LDYgKzEyNDUsOSBAQAogCQkJCUY4MzRBQUQ2MEU2NEIxQzcwMEUyNzM3
QyAvKiBXZWJUZXh0SXRlcmF0b3IubW0gKi8sCiAJCQkJNTE1RTI3Q0MwNDU4Qzg2NTAwQ0EyRDNB
IC8qIFdlYlVJRGVsZWdhdGUuaCAqLywKIAkJCQk2NUE3RDQ0QTA1NjhBQjI2MDBFNzBFRjYgLyog
V2ViVUlEZWxlZ2F0ZVByaXZhdGUuaCAqLywKKwkJCQkzMTJFMkZFMzE0RTQ4MTgyMDA3Q0NBMTgg
LyogV2ViTm90aWZpY2F0aW9uLmggKi8sCisJCQkJMzEyRTJGRTQxNEU0ODE4MjAwN0NDQTE4IC8q
IFdlYk5vdGlmaWNhdGlvbi5tbSAqLywKKwkJCQkzMTJFMkZFODE0RTQ4MjE1MDA3Q0NBMTggLyog
V2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaCAqLywKIAkJCQk1MUE4QjU3OTA0MjgzNEY3MDBDQTJE
M0EgLyogV2ViVmlldy5oICovLAogCQkJCTUxQThCNTdBMDQyODM0RjcwMENBMkQzQSAvKiBXZWJW
aWV3Lm1tICovLAogCQkJCUJDMkU0NjRCMEZEOEE5NjgwMEE5RDlERSAvKiBXZWJWaWV3RGF0YS5o
ICovLApAQCAtMTYzMiw2ICsxNjQxLDggQEAKIAkJCQk5Mzk4MTA5QjA4MjRCRjAxMDA4REYwMzgg
LyogV2ViVmlld0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzk4MTA3MTA4MjRCRjAx
MDA4REYwMzggLyogV2ViVmlld1ByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjQ0ODRG
MTAzMzhFOEMwMDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMzEyRTJGRTUxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMzEyRTJGRTkxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbklu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTIwMTgsNiArMjAyOSw3IEBACiAJCQkJOTM5ODEx
MDcwODI0QkYwMTAwOERGMDM4IC8qIFdlYlZpZXcubW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzJF
NDY0RTBGRDhBOTY4MDBBOUQ5REUgLyogV2ViVmlld0RhdGEubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk0MUY0NDg1MDEwMzM4RThDMDAzMEU1NUUgLyogV2ViV29ya2Vyc1ByaXZhdGUubW0gaW4gU291
cmNlcyAqLywKKwkJCQkzMTJFMkZFNjE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9u
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCmluZGV4IDgyOTAzY2E1OTM4ZWY2NWFj
NDg2NjJlMWFjMDU0NmNiNGJmNjkxYmUuLjE0NzczYjJlNjE2OGQxZWMzMGRlN2I1NmIwYzg5Y2Rh
M2U4OTNjNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Yk5vdGlmaWNhdGlvbkNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwxMSArMjUsMTcgQEAKIAogI2ltcG9ydCA8
V2ViQ29yZS9Ob3RpZmljYXRpb25QcmVzZW50ZXIuaD4KIAorI2ltcG9ydCA8V2ViQ29yZS9Ob3Rp
ZmljYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9IYXNoTWFwLmg+CisjaW1wb3J0IDx3dGYvUmVmUHRy
Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiBjbGFzcyBWb2lkQ2FsbGJhY2s7CiB9CiAKK0Bj
bGFzcyBXZWJOb3RpZmljYXRpb247CiBAY2xhc3MgV2ViVmlldzsKIAogY2xhc3MgV2ViTm90aWZp
Y2F0aW9uQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Ok5vdGlmaWNhdGlvblByZXNlbnRlciB7CkBA
IC00Nyw0ICs1Myw2IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmljYXRp
b25QcmVzZW50ZXI6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKSBPVkVSUklERTsKIAogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKKyAg
ICBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiA+IG1fbm90aWZp
Y2F0aW9uSURNYXA7CisgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPiwg
dWludDY0X3Q+IG1fbm90aWZpY2F0aW9uTWFwOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQppbmRleCA4
MDEzOGUzMTM5MTlmZTEzYmExY2Y2NTVlYzZkMWRkOTk1YWRhOTQ3Li5jOTMzMmJkYmNlNGFjMDI3
MDliNGJiMmZiYmI0ZWFlNzhkNmM4NTRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwzNCArMjUs
OTUgQEAKIAogI2ltcG9ydCAiV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAKKyNpbXBvcnQgIldl
Yk5vdGlmaWNhdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90aWZp
Y2F0aW9uLmg+CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNpbXBvcnQgIldlYkRlbGVn
YXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgiCisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgor
I2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViVUlEZWxl
Z2F0ZVByaXZhdGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1BhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVOb3RpZmljYXRpb25JRCgp
Cit7CisgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZU5vdGlmaWNhdGlvbklEID0gMTsKKyAgICBy
ZXR1cm4gdW5pcXVlTm90aWZpY2F0aW9uSUQrKzsKK30KKyNlbmRpZgorCiBXZWJOb3RpZmljYXRp
b25DbGllbnQ6OldlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpCiB7CiB9CiAKLWJvb2wgV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpz
aG93KE5vdGlmaWNhdGlvbiopCitib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorICAgIGlmICghW21fd2ViVmlldyBfbm90aWZpY2F0aW9uUHJv
dmlkZXJdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1aW50NjRfdCBub3RpZmljYXRp
b25JRCA9IGdlbmVyYXRlTm90aWZpY2F0aW9uSUQoKTsKKyAgICBSZXRhaW5QdHI8V2ViTm90aWZp
Y2F0aW9uPiB3ZWJOb3RpZmljYXRpb24gPSBhZG9wdE5TKFtbV2ViTm90aWZpY2F0aW9uIGFsbG9j
XSBpbml0V2l0aENvcmVOb3RpZmljYXRpb246bm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklEOm5v
dGlmaWNhdGlvbklEXSk7CisgICAgbV9ub3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbiwg
bm90aWZpY2F0aW9uSUQpOworICAgIG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlv
bklELCB3ZWJOb3RpZmljYXRpb24pOworCisgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblBy
b3ZpZGVyXSBzaG93Tm90aWZpY2F0aW9uOndlYk5vdGlmaWNhdGlvbi5nZXQoKSBmcm9tV2ViVmll
dzptX3dlYlZpZXddOworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
bm90aWZpY2F0aW9uKTsKICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAotdm9pZCBXZWJO
b3RpZmljYXRpb25DbGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24qKQordm9pZCBXZWJOb3RpZmlj
YXRpb25DbGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEID0gbV9ub3RpZmljYXRpb25NYXAuZ2V0KG5vdGlmaWNhdGlvbik7Cisg
ICAgaWYgKCFub3RpZmljYXRpb25JRCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFdlYk5v
dGlmaWNhdGlvbiAqd2ViTm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90
aWZpY2F0aW9uSUQpLmdldCgpOworICAgIEFTU0VSVCh3ZWJOb3RpZmljYXRpb24pOworICAgIFtb
bV93ZWJWaWV3IF9ub3RpZmljYXRpb25Qcm92aWRlcl0gY2FuY2VsTm90aWZpY2F0aW9uOndlYk5v
dGlmaWNhdGlvbl07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOworI2Vu
ZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRpb25PYmplY3RE
ZXN0cm95ZWQoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uQ2xp
ZW50Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoTm90aWZpY2F0aW9uKiBub3RpZmljYXRp
b24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
KyAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCA9IG1fbm90aWZpY2F0aW9uTWFwLnRha2Uobm90
aWZpY2F0aW9uKTsKKyAgICBpZiAoIW5vdGlmaWNhdGlvbklEKQorICAgICAgICByZXR1cm47CisK
KyAgICBSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlm
aWNhdGlvbklETWFwLnRha2Uobm90aWZpY2F0aW9uSUQpOworICAgIEFTU0VSVCh3ZWJOb3RpZmlj
YXRpb24uZ2V0KCkpOworICAgIFtbbV93ZWJWaWV3IF9ub3RpZmljYXRpb25Qcm92aWRlcl0gbm90
aWZpY2F0aW9uRGVzdHJveWVkOndlYk5vdGlmaWNhdGlvbi5nZXQoKV07CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShub3RpZmljYXRpb24pOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViTm90aWZpY2F0
aW9uQ2xpZW50Ojpub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkKIHsKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKyAgICBOU011dGFibGVBcnJheSAqbm90aWZpY2F0aW9uSURzID0g
W05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8
V2ViTm90aWZpY2F0aW9uPiA+OjppdGVyYXRvciBpdEVuZCA9IG1fbm90aWZpY2F0aW9uSURNYXAu
ZW5kKCk7CisgICAgZm9yIChIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8V2ViTm90aWZpY2F0
aW9uPiA+OjppdGVyYXRvciBpdCA9IG1fbm90aWZpY2F0aW9uSURNYXAuYmVnaW4oKTsgaXQgIT0g
aXRFbmQ7ICsraXQpCisgICAgICAgIFtub3RpZmljYXRpb25JRHMgYWRkT2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoVW5zaWduZWRMb25nTG9uZzppdC0+Zmlyc3RdXTsKKyAgICBbW21fd2ViVmll
dyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIGNsZWFyTm90aWZpY2F0aW9uczpub3RpZmljYXRpb25J
RHNdOworICAgIFttX3dlYlZpZXcgX25vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWRdOwor
I2VuZGlmCiAgICAgZGVsZXRlIHRoaXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYk5vdGlmaWNhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMwNGIyYWQwNzJlNGNmMTQzMmQ4MTAzODRi
YjJmZTQ5OWYyYTJkN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYk5vdGlmaWNhdGlvbi5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworQGNsYXNz
IFdlYk5vdGlmaWNhdGlvblByaXZhdGU7CitAY2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CisKK0Bp
bnRlcmZhY2UgV2ViTm90aWZpY2F0aW9uIDogTlNPYmplY3QKK3sKKyAgICBXZWJOb3RpZmljYXRp
b25Qcml2YXRlICpfcHJpdmF0ZTsKK30KKworLSAoTlNTdHJpbmcgKil0aXRsZTsKKy0gKE5TU3Ry
aW5nICopYm9keTsKKy0gKFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luOworLSAodWludDY0X3Qp
bm90aWZpY2F0aW9uSUQ7CisKKy0gKHZvaWQpZGlzcGF0Y2hTaG93RXZlbnQ7CistICh2b2lkKWRp
c3BhdGNoQ2xvc2VFdmVudDsKKy0gKHZvaWQpZGlzcGF0Y2hDbGlja0V2ZW50OworLSAodm9pZClk
aXNwYXRjaEVycm9yRXZlbnQ7CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJOb3RpZmljYXRpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjI0NzAwOGE3MjcyZTgyZmRmNzZiMzY0ODZl
MGNkNDAxNTY0MzA1OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViTm90aWZpY2F0aW9uLm1tCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIs
IEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgIldlYk5vdGlmaWNhdGlvbi5oIgorCisjaW1wb3J0ICJXZWJOb3RpZmljYXRpb25JbnRlcm5h
bC5oIgorI2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgorI2ltcG9ydCA8V2Vi
Q29yZS9Ob3RpZmljYXRpb24uaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oPgorI2ltcG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbXBvcnQgPHd0Zi9SZWZQdHIu
aD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK09CSkNfQ0xBU1MgV2ViTm90aWZpY2F0
aW9uSW50ZXJuYWw7CisKK0BpbnRlcmZhY2UgV2ViTm90aWZpY2F0aW9uUHJpdmF0ZSA6IE5TT2Jq
ZWN0Cit7CitAcHVibGljCisgICAgV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwgKl9pbnRlcm5hbDsK
KyAgICB1aW50NjRfdCBfbm90aWZpY2F0aW9uSUQ7Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlv
biBXZWJOb3RpZmljYXRpb25Qcml2YXRlCitAZW5kCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKK0BpbXBsZW1lbnRhdGlvbiBXZWJOb3RpZmljYXRpb24gKFdlYk5vdGlmaWNhdGlvbkludGVy
bmFsKQorTm90aWZpY2F0aW9uKiBjb3JlKFdlYk5vdGlmaWNhdGlvbiAqbm90aWZpY2F0aW9uKQor
eworICAgIGlmICghbm90aWZpY2F0aW9uLT5fcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Tm90aWZpY2F0aW9uKj4obm90aWZpY2F0aW9uLT5f
cHJpdmF0ZS0+X2ludGVybmFsKTsKK30KKworLSAoaWQpaW5pdFdpdGhDb3JlTm90aWZpY2F0aW9u
OihOb3RpZmljYXRpb24qKWNvcmVOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uSUQ6KHVpbnQ2NF90
KW5vdGlmaWNhdGlvbklECit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAg
ICAgIHJldHVybiBuaWw7CisgICAgY29yZU5vdGlmaWNhdGlvbi0+cmVmKCk7CisgICAgX3ByaXZh
dGUgPSBbW1dlYk5vdGlmaWNhdGlvblByaXZhdGUgYWxsb2NdIGluaXRdOworICAgIF9wcml2YXRl
LT5faW50ZXJuYWwgPSByZWludGVycHJldF9jYXN0PFdlYk5vdGlmaWNhdGlvbkludGVybmFsKj4o
Y29yZU5vdGlmaWNhdGlvbik7CisgICAgX3ByaXZhdGUtPl9ub3RpZmljYXRpb25JRCA9IG5vdGlm
aWNhdGlvbklEOworICAgIHJldHVybiBzZWxmOworfQorQGVuZAorI2VuZGlmCisKK0BpbXBsZW1l
bnRhdGlvbiBXZWJOb3RpZmljYXRpb24KKy0gKGlkKWluaXQKK3sKKyAgICByZXR1cm4gbmlsOwor
fQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9
IGNvcmUoc2VsZik7CisgICAgaWYgKG5vdGlmaWNhdGlvbikKKyAgICAgICAgbm90aWZpY2F0aW9u
LT5kZXJlZigpOworCisgICAgW3N1cGVyIGRlYWxsb2NdOworfQorCistIChOU1N0cmluZyAqKXRp
dGxlCit7CisgICAgQVNTRVJUKGNvcmUoc2VsZikpOworICAgIHJldHVybiBjb3JlKHNlbGYpLT5j
b250ZW50cygpLnRpdGxlOworfQorCistIChOU1N0cmluZyAqKWJvZHkKK3sKKyAgICBBU1NFUlQo
Y29yZShzZWxmKSk7CisgICAgcmV0dXJuIGNvcmUoc2VsZiktPmNvbnRlbnRzKCkuYm9keTsKK30K
KworLSAoV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW4KK3sKKyAgICBBU1NFUlQoY29yZShzZWxm
KSk7CisgICAgcmV0dXJuIFtbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJD
b3JlU2VjdXJpdHlPcmlnaW46Y29yZShzZWxmKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5z
ZWN1cml0eU9yaWdpbigpXSBhdXRvcmVsZWFzZV07Cit9CisKKy0gKHVpbnQ2NF90KW5vdGlmaWNh
dGlvbklECit7CisgICAgQVNTRVJUKGNvcmUoc2VsZikpOworICAgIHJldHVybiBfcHJpdmF0ZS0+
X25vdGlmaWNhdGlvbklEOworfQorCistICh2b2lkKWRpc3BhdGNoU2hvd0V2ZW50Cit7CisgICAg
QVNTRVJUKGNvcmUoc2VsZikpOworICAgIGNvcmUoc2VsZiktPmRpc3BhdGNoU2hvd0V2ZW50KCk7
Cit9CisKKy0gKHZvaWQpZGlzcGF0Y2hDbG9zZUV2ZW50Cit7CisgICAgQVNTRVJUKGNvcmUoc2Vs
ZikpOworICAgIGNvcmUoc2VsZiktPmRpc3BhdGNoQ2xvc2VFdmVudCgpOworfQorCistICh2b2lk
KWRpc3BhdGNoQ2xpY2tFdmVudAoreworICAgIEFTU0VSVChjb3JlKHNlbGYpKTsKKyAgICBjb3Jl
KHNlbGYpLT5kaXNwYXRjaENsaWNrRXZlbnQoKTsKK30KKworLSAodm9pZClkaXNwYXRjaEVycm9y
RXZlbnQKK3sKKyAgICBBU1NFUlQoY29yZShzZWxmKSk7CisgICAgY29yZShzZWxmKS0+ZGlzcGF0
Y2hFcnJvckV2ZW50KCk7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOGM2NWIwZTkyM2Vk
NDA0Njg2YWMxY2U3NjNiZGI1MTAxNDI4ZTU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2ltcG9ydCAiV2ViTm90aWZpY2F0aW9uLmgiCisKKyNpZiBFTkFCTEUo
Tk9USUZJQ0FUSU9OUykKKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTm90aWZpY2F0aW9u
OworfQorCitXZWJDb3JlOjpOb3RpZmljYXRpb24qIGNvcmUoV2ViTm90aWZpY2F0aW9uICopOwor
V2ViTm90aWZpY2F0aW9uICpraXQoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKik7CisKK0BpbnRlcmZh
Y2UgV2ViTm90aWZpY2F0aW9uIChXZWJOb3RpZmljYXRpb25JbnRlcm5hbCkKKy0gKGlkKWluaXRX
aXRoQ29yZU5vdGlmaWNhdGlvbjooV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiljb3JlTm90aWZpY2F0
aW9uIG5vdGlmaWNhdGlvbklEOih1aW50NjRfdClub3RpZmljYXRpb25JRDsKK0BlbmQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNGRmNzc1OGQwMmUxNmJj
YThjNWM1Y2Q4NTMzYjEwZTA3NGNhMTgzNS4uODIxYWI5YjZkZDRjZGY2ZDVkZWFkMTVhNTI0YTcx
MGExYjZkMTIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA1LTIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA2IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKQEAgLTY0MDEsNiArNjQwMSw0MyBAQCBzdGF0
aWMgdm9pZCBnbGliQ29udGV4dEl0ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9vcE9ic2VydmVyUmVm
LCBDRlJ1bkxvb3BBY3Rpdml0eQogCiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlvbiBXZWJWaWV3IChX
ZWJWaWV3Tm90aWZpY2F0aW9uKQorLSAodm9pZClfc2V0Tm90aWZpY2F0aW9uUHJvdmlkZXI6KGlk
PFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyPilub3RpZmljYXRpb25Qcm92aWRlcgoreworICAgIGlm
IChfcHJpdmF0ZSkgeworICAgICAgICBfcHJpdmF0ZS0+X25vdGlmaWNhdGlvblByb3ZpZGVyID0g
bm90aWZpY2F0aW9uUHJvdmlkZXI7CisgICAgICAgIFtfcHJpdmF0ZS0+X25vdGlmaWNhdGlvblBy
b3ZpZGVyIHJlZ2lzdGVyV2ViVmlldzpzZWxmXTsKKyAgICB9Cit9CisKKy0gKHZvaWQpX25vdGlm
aWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQKK3sKKyAgICBbW3NlbGYgX25vdGlmaWNhdGlvblBy
b3ZpZGVyXSB1bnJlZ2lzdGVyV2ViVmlldzpzZWxmXTsKK30KKworLSAoaWQ8V2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI+KV9ub3RpZmljYXRpb25Qcm92aWRlcgoreworICAgIGlmIChfcHJpdmF0ZSkK
KyAgICAgICAgcmV0dXJuIF9wcml2YXRlLT5fbm90aWZpY2F0aW9uUHJvdmlkZXI7CisgICAgcmV0
dXJuIG5pbDsKK30KKworLSAodm9pZClfbm90aWZpY2F0aW9uRGlkU2hvdzoodWludDY0X3Qpbm90
aWZpY2F0aW9uSUQKK3sKKyAgICBbW3NlbGYgX25vdGlmaWNhdGlvblByb3ZpZGVyXSB3ZWJWaWV3
OnNlbGYgZGlkU2hvd05vdGlmaWNhdGlvbjpub3RpZmljYXRpb25JRF07Cit9CisKKy0gKHZvaWQp
X25vdGlmaWNhdGlvbkRpZENsaWNrOih1aW50NjRfdClub3RpZmljYXRpb25JRAoreworICAgIFtb
c2VsZiBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIHdlYlZpZXc6c2VsZiBkaWRDbGlja05vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25JRF07Cit9CisKKy0gKHZvaWQpX25vdGlmaWNhdGlvbnNEaWRDbG9z
ZTooTlNBcnJheSAqKW5vdGlmaWNhdGlvbklEcworeworICAgIFtbc2VsZiBfbm90aWZpY2F0aW9u
UHJvdmlkZXJdIHdlYlZpZXc6c2VsZiBkaWRDbG9zZU5vdGlmaWNhdGlvbnM6bm90aWZpY2F0aW9u
SURzXTsKK30KK0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdQcml2YXRl
U3R5bGVJbmZvKQogCiAtIChKU1ZhbHVlUmVmKV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRl
ZEluZm86KEpTQ29udGV4dFJlZiljb250ZXh0IGZvckVsZW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCA2NjVjYjkxNzVkODZh
OWUxNzI5ZjkyMTQ4ZmViMmI5ZjZlNzMzNmU5Li5lYTJiZmNmNjA3NGU5YTUxMWMzYzNlYWUyZGI0
ZmY1ZTVlYzNjNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQHByb3RvY29sIFdl
YkZvcm1EZWxlZ2F0ZTsKIEBwcm90b2NvbCBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOwog
QHByb3RvY29sIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI7CitAcHJvdG9jb2wgV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXI7CiAjaWYgRU5BQkxFKFZJREVPKQogQGNsYXNzIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXI7CiAjZW5kaWYKQEAgLTE5MSw2ICsxOTIsNyBAQCBwcml2YXRlOgogI2VuZGlm
CiAgICAgaWQ8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gX2dlb2xvY2F0aW9uUHJvdmlkZXI7CiAg
ICAgaWQ8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4gbV9kZXZpY2VPcmllbnRhdGlvblBy
b3ZpZGVyOworICAgIGlkPFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyPiBfbm90aWZpY2F0aW9uUHJv
dmlkZXI7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IF9nbG9iYWxIaXN0b3J5
SXRlbTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCmluZGV4
IGNkOTJmMzFlNTc4OWE0MGJhMmU1ZmI3NGQ1ZTQzNjcwNmYzMjliZTguLmUwZmVlODFkMWYzMWM4
ZDQ5MTYzYWQyODg0MjYzZDU3YWNmNzgwNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXdQcml2YXRlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzksOCArMzksMTAgQEAK
IEBjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbjsKIEBjbGFzcyBXZWJHZW9sb2NhdGlvblBvc2l0
aW9uOwogQGNsYXNzIFdlYkluc3BlY3RvcjsKK0BjbGFzcyBXZWJOb3RpZmljYXRpb247CiBAY2xh
c3MgV2ViUHJlZmVyZW5jZXM7CiBAY2xhc3MgV2ViU2NyaXB0V29ybGQ7CitAY2xhc3MgV2ViU2Vj
dXJpdHlPcmlnaW47CiBAY2xhc3MgV2ViVGV4dEl0ZXJhdG9yOwogCiBAcHJvdG9jb2wgV2ViRGV2
aWNlT3JpZW50YXRpb25Qcm92aWRlcjsKQEAgLTEwNCw2ICsxMDYsMTMgQEAgdHlwZWRlZiBlbnVt
IHsKICAgICBXZWJQYWdpbmF0aW9uTW9kZVZlcnRpY2FsLAogfSBXZWJQYWdpbmF0aW9uTW9kZTsK
IAorLy8gVGhpcyBuZWVkcyB0byBiZSBpbiBzeW5jIHdpdGggV2ViQ29yZTo6Tm90aWZpY2F0aW9u
UHJlc2VudGVyOjpQZXJtaXNzaW9uCit0eXBlZGVmIGVudW0geworICAgIFdlYk5vdGlmaWNhdGlv
blBlcm1pc3Npb25BbGxvd2VkLAorICAgIFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25Ob3RBbGxv
d2VkLAorICAgIFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25EZW5pZWQKK30gV2ViTm90aWZpY2F0
aW9uUGVybWlzc2lvbjsKKwogQGludGVyZmFjZSBXZWJDb250cm9sbGVyIDogTlNUcmVlQ29udHJv
bGxlciB7CiAgICAgSUJPdXRsZXQgV2ViVmlldyAqd2ViVmlldzsKIH0KQEAgLTcwMSw2ICs3MTAs
MjEgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtIChXZWJHZW9sb2NhdGlv
blBvc2l0aW9uICopbGFzdFBvc2l0aW9uOwogQGVuZAogCitAcHJvdG9jb2wgV2ViTm90aWZpY2F0
aW9uUHJvdmlkZXIKKy0gKHZvaWQpcmVnaXN0ZXJXZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldzsK
Ky0gKHZvaWQpdW5yZWdpc3RlcldlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3OworCistICh2b2lk
KXNob3dOb3RpZmljYXRpb246KFdlYk5vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbiBmcm9tV2Vi
VmlldzooV2ViVmlldyAqKXdlYlZpZXc7CistICh2b2lkKWNhbmNlbE5vdGlmaWNhdGlvbjooV2Vi
Tm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworLSAodm9pZClub3RpZmljYXRpb25EZXN0cm95
ZWQ6KFdlYk5vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKKy0gKHZvaWQpY2xlYXJOb3RpZmlj
YXRpb25zOihOU0FycmF5ICopbm90aWZpY2F0aW9uSURzOworLSAoV2ViTm90aWZpY2F0aW9uUGVy
bWlzc2lvbilwb2xpY3lGb3JPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luOworCist
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZFNob3dOb3RpZmljYXRpb246KHVp
bnQ2NF90KW5vdGlmaWNhdGlvbklEOworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd2ViVmll
dyBkaWRDbGlja05vdGlmaWNhdGlvbjoodWludDY0X3Qpbm90aWZpY2F0aW9uSUQ7CistICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZENsb3NlTm90aWZpY2F0aW9uczooTlNBcnJh
eSAqKW5vdGlmaWNhdGlvbklEczsKK0BlbmQKKwogQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3
R2VvbG9jYXRpb24pCiAtICh2b2lkKV9zZXRHZW9sb2NhdGlvblByb3ZpZGVyOihpZDxXZWJHZW9s
b2NhdGlvblByb3ZpZGVyPilsb2NhdGlvblByb3ZpZGVyOwogLSAoaWQ8V2ViR2VvbG9jYXRpb25Q
cm92aWRlcj4pX2dlb2xvY2F0aW9uUHJvdmlkZXI7CkBAIC03MDksNiArNzMzLDE2IEBAIENvdWxk
IGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAodm9pZClfZ2VvbG9jYXRpb25EaWRGYWls
V2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CiBAZW5kCiAKK0BpbnRlcmZhY2UgV2ViVmlldyAo
V2ViVmlld05vdGlmaWNhdGlvbikKKy0gKHZvaWQpX3NldE5vdGlmaWNhdGlvblByb3ZpZGVyOihp
ZDxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4pbm90aWZpY2F0aW9uUHJvdmlkZXI7CistIChpZDxX
ZWJOb3RpZmljYXRpb25Qcm92aWRlcj4pX25vdGlmaWNhdGlvblByb3ZpZGVyOworLSAodm9pZClf
bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZDsKKworLSAodm9pZClfbm90aWZpY2F0aW9u
RGlkU2hvdzoodWludDY0X3Qpbm90aWZpY2F0aW9uSUQ7CistICh2b2lkKV9ub3RpZmljYXRpb25E
aWRDbGljazoodWludDY0X3Qpbm90aWZpY2F0aW9uSUQ7CistICh2b2lkKV9ub3RpZmljYXRpb25z
RGlkQ2xvc2U6KE5TQXJyYXkgKilub3RpZmljYXRpb25JRHM7CitAZW5kCisKIEBpbnRlcmZhY2Ug
V2ViVmlldyAoV2ViVmlld1ByaXZhdGVTdHlsZUluZm8pCiAtIChKU1ZhbHVlUmVmKV9jb21wdXRl
ZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZiljb250ZXh0IGZvckVsZW1l
bnQ6KEpTVmFsdWVSZWYpdmFsdWU7CiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127341</attachid>
            <date>2012-02-16 02:39:06 -0800</date>
            <delta_ts>2012-02-21 15:05:20 -0800</delta_ts>
            <desc>Bring notifications support to WK1 mac: permission requests</desc>
            <filename>bug-78783-20120216023946.patch</filename>
            <type>text/plain</type>
            <size>7117</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggODgwMmY3ODIz
MzQwYzM3MzkyZTc0Y2MzYmRjOWMwMTNhMjc1ZjNmZC4uNjk2NmNjMDEyMGIyOGJlZDdlODBhM2Q2
YzRiZDI4ZDYwN2RiZWFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDI0IEBACiAyMDEy
LTAyLTE2ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KIAorICAgICAgICBCcmluZyBub3Rp
ZmljYXRpb25zIHN1cHBvcnQgdG8gV0sxIG1hYzogcGVybWlzc2lvbiByZXF1ZXN0cworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3ODMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzEwNjEwNTc4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50
Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tOiBD
cmVhdGUgcG9saWN5IGxpc3RlbmVyLCB3aGljaCBjb25mb3JtcyB0byB0aGUKKyAgICAgICAgV2Vi
QWxsb3dEZW55UG9saWN5TGlzdGVuZXIgcHJvdG9jb2wsIHNpbWlsYXIgdG8gZ2VvbG9jYXRpb24u
CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAg
ICAgICAgKFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2hlY2tQZXJtaXNzaW9uKToKKyAgICAgICAg
KC1bV2ViTm90aWZpY2F0aW9uUG9saWN5TGlzdGVuZXIgaW5pdFdpdGhDYWxsYmFjazpdKToKKyAg
ICAgICAgKC1bV2ViTm90aWZpY2F0aW9uUG9saWN5TGlzdGVuZXIgYWxsb3ddKTogQ2FsbCB0aGUg
Y2FsbGJhY2suCisgICAgICAgICgtW1dlYk5vdGlmaWNhdGlvblBvbGljeUxpc3RlbmVyIGRlbnld
KTogQ2FsbCB0aGUgY2FsbGJhY2suCisgICAgICAgICogV2ViVmlldy9XZWJVSURlbGVnYXRlUHJp
dmF0ZS5oOiBEZWZpbmUgbmV3IFVJIGRlbGVnYXRlIG1ldGhvZCB0byBhc2sgdGhlIHVzZXIgdG8g
ZGVjaWRlIGEKKyAgICAgICAgcG9saWN5IGZvciBuYXZpZ2F0aW9ucy4KKworMjAxMi0wMi0xNiAg
Sm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKICAgICAgICAgQnJpbmcgbm90aWZpY2F0aW9u
cyBzdXBwb3J0IHRvIFdLMSBtYWM6IHNob3dpbmcsIGNhbmNlbGluZywgcmVtb3Zpbmcgbm90aWZp
Y2F0aW9ucwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzg3ODMKICAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNjEwNTc4PgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaApp
bmRleCAxNDc3M2IyZTYxNjhkMWVjMzBkZTdiNTZiMGM4OWNkYTNlODkzYzU1Li45NTc3MzIzMmMy
ZWNkMWY1MmY2YjM2NzRlY2MwMmZlYzg1ZDcxMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaApAQCAtNDks
NyArNDksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25PYmplY3RE
ZXN0cm95ZWQoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2
b2lkIG5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dCosIFBhc3NSZWZQdHI8V2ViQ29yZTo6Vm9pZENhbGxiYWNrPikgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCB2b2lkIGNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbmNlbFJlcXVlc3Rz
Rm9yUGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREUg
eyB9CiAgICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Np
b24gY2hlY2tQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBPVkVS
UklERTsKIAogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQppbmRleCBj
OTMzMmJkYmNlNGFjMDI3MDliNGJiMmZiYmI0ZWFlNzhkNmM4NTRlLi5lZTcyOWYxNmVmMjk1ZmIz
ZGRhMjY4MzFlOTlkZWVjNjgyYTY4MjMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCkBAIC00Myw2ICs0
MywxNSBAQAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKICNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKK0BpbnRlcmZhY2UgV2ViTm90aWZpY2F0aW9uUG9saWN5TGlzdGVuZXIgOiBOU09iamVj
dCA8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+Cit7CisgICAgUmVmUHRyPFZvaWRDYWxsYmFj
az4gX2NhbGxiYWNrOworfQorLSAoaWQpaW5pdFdpdGhDYWxsYmFjazooUGFzc1JlZlB0cjxWb2lk
Q2FsbGJhY2s+KWNhbGxiYWNrOworQGVuZAorI2VuZGlmCisKKyNpZiBFTkFCTEUoTk9USUZJQ0FU
SU9OUykKIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZU5vdGlmaWNhdGlvbklEKCkKIHsKICAgICBz
dGF0aWMgdWludDY0X3QgdW5pcXVlTm90aWZpY2F0aW9uSUQgPSAxOwpAQCAtMTE3LDE4ICsxMjYs
NzkgQEAgdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbkNvbnRyb2xsZXJE
ZXN0cm95ZWQoKQogICAgIGRlbGV0ZSB0aGlzOwogfQogCi12b2lkIFdlYk5vdGlmaWNhdGlvbkNs
aWVudDo6cmVxdWVzdFBlcm1pc3Npb24oV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8V2ViQ29yZTo6Vm9pZENhbGxiYWNrPikKK3ZvaWQgV2ViTm90aWZpY2F0aW9u
Q2xpZW50OjpyZXF1ZXN0UGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LCBQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4gY2FsbGJhY2spCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBCRUdJTl9CTE9DS19PQkpDX0VY
Q0VQVElPTlM7CisgICAgCisgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYlZpZXc6ZGVj
aWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46bGlzdGVuZXI6KTsKKyAg
ICBpZiAoIVtbbV93ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rv
cl0pIHsKKyAgICAgICAgLy8gZXhlY3V0ZSBjYWxsYmFjaworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5
T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29udGV4dC0+c2Vj
dXJpdHlPcmlnaW4oKV07CisgICAgV2ViTm90aWZpY2F0aW9uUG9saWN5TGlzdGVuZXIqIGxpc3Rl
bmVyID0gW1tXZWJOb3RpZmljYXRpb25Qb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDYWxs
YmFjazpjYWxsYmFja107CisgICAgCisgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBzZWxl
Y3Rvciwgd2ViT3JpZ2luLCBsaXN0ZW5lcik7CisgICAgCisgICAgW3dlYk9yaWdpbiByZWxlYXNl
XTsKKyAgICBbbGlzdGVuZXIgcmVsZWFzZV07CisgICAgCisgICAgRU5EX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIFVOVVNFRF9Q
QVJBTShjYWxsYmFjayk7CisjZW5kaWYKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6
OmNhbmNlbFJlcXVlc3RzRm9yUGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250
ZXh0KikKK05vdGlmaWNhdGlvblByZXNlbnRlcjo6UGVybWlzc2lvbiBXZWJOb3RpZmljYXRpb25D
bGllbnQ6OmNoZWNrUGVybWlzc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAg
aWYgKCFjb250ZXh0IHx8ICFjb250ZXh0LT5pc0RvY3VtZW50KCkpCisgICAgICAgIHJldHVybiBO
b3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCFbW21fd2Vi
VmlldyBwcmVmZXJlbmNlc10gbm90aWZpY2F0aW9uc0VuYWJsZWRdKQorICAgICAgICByZXR1cm4g
Tm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uRGVuaWVkOworICAgIFdlYlNlY3VyaXR5
T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhX
ZWJDb3JlU2VjdXJpdHlPcmlnaW46Y29udGV4dC0+c2VjdXJpdHlPcmlnaW4oKV07CisgICAgV2Vi
Tm90aWZpY2F0aW9uUGVybWlzc2lvbiBwZXJtaXNzaW9uID0gW1ttX3dlYlZpZXcgX25vdGlmaWNh
dGlvblByb3ZpZGVyXSBwb2xpY3lGb3JPcmlnaW46d2ViT3JpZ2luXTsKKyAgICBbd2ViT3JpZ2lu
IHJlbGVhc2VdOworICAgIHN3aXRjaCAocGVybWlzc2lvbikgeworICAgICAgICBjYXNlIFdlYk5v
dGlmaWNhdGlvblBlcm1pc3Npb25BbGxvd2VkOgorICAgICAgICAgICAgcmV0dXJuIE5vdGlmaWNh
dGlvblByZXNlbnRlcjo6UGVybWlzc2lvbkFsbG93ZWQ7CisgICAgICAgIGNhc2UgV2ViTm90aWZp
Y2F0aW9uUGVybWlzc2lvbkRlbmllZDoKKyAgICAgICAgICAgIHJldHVybiBOb3RpZmljYXRpb25Q
cmVzZW50ZXI6OlBlcm1pc3Npb25EZW5pZWQ7CisgICAgICAgIGNhc2UgV2ViTm90aWZpY2F0aW9u
UGVybWlzc2lvbk5vdEFsbG93ZWQ6CisgICAgICAgICAgICByZXR1cm4gTm90aWZpY2F0aW9uUHJl
c2VudGVyOjpQZXJtaXNzaW9uTm90QWxsb3dlZDsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIHJldHVybiBOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb25Ob3RBbGxvd2VkOwor
ICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGNvbnRleHQpOworICAgIHJldHVybiBOb3Rp
ZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb25EZW5pZWQ7CisjZW5kaWYKIH0KIAotTm90aWZp
Y2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2hlY2tQ
ZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQorI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQorQGltcGxlbWVudGF0aW9uIFdlYk5vdGlmaWNhdGlvblBvbGljeUxpc3Rl
bmVyCistIChpZClpbml0V2l0aENhbGxiYWNrOihQYXNzUmVmUHRyPFZvaWRDYWxsYmFjaz4pY2Fs
bGJhY2sKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBOb3RpZmljYXRpb25Q
cmVzZW50ZXI6OlBlcm1pc3Npb25EZW5pZWQ7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBBU1NFUlQoY2FsbGJhY2spOworICAgIF9j
YWxsYmFjayA9IGNhbGxiYWNrOworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKWFsbG93
Cit7CisgICAgX2NhbGxiYWNrLT5oYW5kbGVFdmVudCgpOwogfQorCistICh2b2lkKWRlbnkKK3sK
KyAgICBfY2FsbGJhY2stPmhhbmRsZUV2ZW50KCk7Cit9CisKK0BlbmQKKyNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJVSURlbGVnYXRlUHJpdmF0ZS5oCmluZGV4IDJk
ZjMxMDFkNmIwNWQyNmZhZDg2NzgwODZlMjA3Y2VmYjBjODY5Y2IuLmRmNTcwMjYxOWQwYmFkZWE3
NTY1ZjJmZGQ4OTRmMTA3NjJlN2M5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKQEAgLTIyNCw2ICsyMjQsNyBAQCBleHRlcm4gTlNT
dHJpbmcgKldlYkNvbnNvbGVNZXNzYWdlRGVidWdNZXNzYWdlTGV2ZWw7CiAtICh2b2lkKXdlYlZp
ZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZy
b21PcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJh
bWU6KFdlYkZyYW1lICopZnJhbWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcjooaWQ8V2ViQWxsb3dE
ZW55UG9saWN5TGlzdGVuZXI+KWxpc3RlbmVyOworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICop
d2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjooV2Vi
U2VjdXJpdHlPcmlnaW4gKilvcmlnaW4gbGlzdGVuZXI6KGlkPFdlYkFsbG93RGVueVBvbGljeUxp
c3RlbmVyPilsaXN0ZW5lcjsKIAogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGVs
ZW1lbnREaWRGb2N1c05vZGU6KERPTU5vZGUgKilub2RlOwogLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGVsZW1lbnREaWRCbHVyTm9kZTooRE9NTm9kZSAqKW5vZGU7Cg==
</data>
<flag name="review"
          id="129440"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127410</attachid>
            <date>2012-02-16 10:54:35 -0800</date>
            <delta_ts>2012-02-16 23:48:50 -0800</delta_ts>
            <desc>Bring notifications support to WK1 mac: showing, canceling, removing notifications</desc>
            <filename>bug-78783-20120216105514.patch</filename>
            <type>text/plain</type>
            <size>31618</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkMDA3YzY2MTk0ZGViZGIz
N2MxNDBmNWEyYWI1MGM5OTgxNDljZGYuLjdjNGJlNGYzMDE1ODA3ZmIyNWM5MmRjMDc2ZTMwM2Q4
ZTNjZjE4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMTYgIEpvbiBMZWUg
IDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEJyaW5nIG5vdGlmaWNhdGlvbnMgc3VwcG9y
dCB0byBXSzEgbWFjOiBzaG93aW5nLCBjYW5jZWxpbmcsIHJlbW92aW5nIG5vdGlmaWNhdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzgzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDYxMDU3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZCBuZXcgZmlsZXMuCisKIDIwMTItMDItMTQgIE5pbWEgR2hhbmF2YXRpYW4gIDxu
Z2hhbmF2YXRpYW5AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gVXBzdHJlYW1pbmcg
V2ViU2V0dGluZ3MgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDkyOWQ1OTk3NDU2ODEwMmNhMmM5
MDllMGI3MzVkOTQ4ZmRkNjgzNGIuLmRmZjNiYjg0NzVjNmMyM2IxOWQzYjU3N2IwMzFiODBjNjgw
NzVjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2MiBAQAogMjAxMi0wMi0xNiAgSm9u
IExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKKyAgICAgICAgQnJpbmcgbm90aWZpY2F0aW9ucyBz
dXBwb3J0IHRvIFdLMSBtYWM6IHNob3dpbmcsIGNhbmNlbGluZywgcmVtb3Zpbmcgbm90aWZpY2F0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3
ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNjEwNTc4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIFdlYktpdCB3cmFwcGVyIG9i
amVjdCBmb3IgV2ViQ29yZTo6Tm90aWZpY2F0aW9uLCB3aGljaCBhbHNvIGtlZXBzIHRyYWNrIG9m
IGFuIGFzc2lnbmVkCisgICAgICAgIElELgorICAgICAgICAqIFdlYlZpZXcvV2ViTm90aWZpY2F0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViTm90aWZpY2F0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKGNvcmUpOgorICAgICAg
ICAoLVtXZWJOb3RpZmljYXRpb24gaW5pdFdpdGhDb3JlTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlv
bklEOl0pOgorICAgICAgICAoLVtXZWJOb3RpZmljYXRpb24gaW5pdF0pOgorICAgICAgICAoLVtX
ZWJOb3RpZmljYXRpb24gZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJOb3RpZmljYXRpb24gdGl0
bGVdKToKKyAgICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGJvZHldKToKKyAgICAgICAgKC1bV2Vi
Tm90aWZpY2F0aW9uIG9yaWdpbl0pOgorICAgICAgICAoLVtXZWJOb3RpZmljYXRpb24gbm90aWZp
Y2F0aW9uSURdKToKKyAgICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGRpc3BhdGNoU2hvd0V2ZW50
XSk6CisgICAgICAgICgtW1dlYk5vdGlmaWNhdGlvbiBkaXNwYXRjaENsb3NlRXZlbnRdKToKKyAg
ICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGRpc3BhdGNoQ2xpY2tFdmVudF0pOgorICAgICAgICAo
LVtXZWJOb3RpZmljYXRpb24gZGlzcGF0Y2hFcnJvckV2ZW50XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOiBJ
bnRlcm5hbCBjYXRlZ29yeSB0byBhbGxvdyBjcmVhdGluZyBpbnN0YW5jZXMgd2l0aCBXZWJDb3Jl
IG9iamVjdHMuCisKKyAgICAgICAgRXh0ZW5kIFdlYlZpZXcgdG8gaW5jbHVkZSBhIFdlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLCB3aGljaCBjbGllbnRzIGltcGxlbWVudC4KKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXdEYXRhLmg6IEFkZCBhIHByaXZhdGUgbWVtYmVyIGZvciB0aGUgcHJvdmlkZXIu
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAgICAgKiBEZWZp
bmUgYW4gZW51bSBXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uIHRoYXQgbWlycm9ycyBXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24KKyAgICAgICAgICAgIHRoYXQgY2xp
ZW50IHdoaWNoIGltcGxlbWVudCB0aGUgcHJvdmlkZXIgY2FuIHVzZSB0byByZXR1cm4gcG9saWN5
IGRlY2lzaW9ucy4KKyAgICAgICAgICAgICogRGVmaW5lIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LgorICAgICAgICAgICAgKiBDYXRlZ29yeSBXZWJWaWV3Tm90aWZpY2F0aW9uIGV4dGVuZHMgV2Vi
VmlldyB3aXRoIG1ldGhvZHMgdGhhdCBzZXQgYW5kIG1hbmFnZXIgdGhlCisgICAgICAgICAgICBu
b3RpZmljYXRpb24gcHJvdmlkZXIsIGFuZCBoYW5kbGUgZXZlbnRzIGZyb20gdGhlIHBsYXRmb3Jt
IG5vdGlmaWNhdGlvbnMuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJWaWV3IF9zZXROb3RpZmljYXRpb25Qcm92aWRlcjpdKTogU2V0cyB0aGUgcHJvdmlkZXIg
d2hlbiBpbml0aWFsaXppbmcgdGhlIFdlYlZpZXcuCisgICAgICAgICgtW1dlYlZpZXcgX25vdGlm
aWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBfbm90aWZp
Y2F0aW9uUHJvdmlkZXJdKToKKyAgICAgICAgKC1bV2ViVmlldyBfbm90aWZpY2F0aW9uRGlkU2hv
dzpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfbm90aWZpY2F0aW9uRGlkQ2xpY2s6XSk6CisgICAg
ICAgICgtW1dlYlZpZXcgX25vdGlmaWNhdGlvbnNEaWRDbG9zZTpdKToKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oOiBBZGQgdmFyaWFibGVzIHRoYXQg
bWFwIGJldHdlZW4gV2ViQ29yZTo6Tm90aWZpY2F0aW9uCisgICAgICAgIGluc3RhbmNlcywgdGhl
aXIgYXNzaWduZWQgSURzLCB0aGVpciBjb250ZXh0cywgYW5kIGNvcnJlc3BvbmRpbmcgV2ViS2l0
IHdyYXBwZXIgb2JqZWN0cy4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRp
b25DbGllbnQubW06CisgICAgICAgIChnZW5lcmF0ZU5vdGlmaWNhdGlvbklEKTogQ3JlYXRlZCB1
bmlxdWUgSURzIGZvciBlYWNoIHNob3duIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgKFdlYk5vdGlm
aWNhdGlvbkNsaWVudDo6c2hvdyk6IENyZWF0ZSB3cmFwcGVyIG9iamVjdCBmb3Igbm90aWZpY2F0
aW9uLCBhc3NpZ24gSUQsIGNhY2hlIHRoZQorICAgICAgICBtYXBwaW5ncyBiZXR3ZWVuIHRoZSBv
YmplY3RzLCBhbmQgZm9yd2FyZCBpdCB0byB0aGUgcHJvdmlkZXIuCisgICAgICAgIChXZWJOb3Rp
ZmljYXRpb25DbGllbnQ6OmNhbmNlbCk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6
OmNsZWFyTm90aWZpY2F0aW9ucyk6IENsZWFyIGFsbCBub3RpZmljYXRpb25zIGFzc29jaWF0ZWQg
d2l0aCB0aGUKKyAgICAgICAgcHJvdmlkZWQgY29udGV4dC4KKyAgICAgICAgKFdlYk5vdGlmaWNh
dGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKTogUmVtb3ZlIHRoZSBub3Rp
ZmljYXRpb24gZnJvbSB0aGUgbWFwcy4KKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6
bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6IElmIHRoZSBjb250cm9sbGVyIGlzIGRl
c3Ryb3llZCwgdGVsbAorICAgICAgICB0aGUgcHJvdmlkZXIgdG8gY2xlYXIgb2YgdGhlIG5vdGlm
aWNhdGlvbnMgcmVsYXRlZCB0byB0aGlzIHdlYiB2aWV3LgorCisyMDEyLTAyLTE2ICBKb24gTGVl
ICA8am9ubGVlQGFwcGxlLmNvbT4KKwogICAgICAgICAoUHJlcCB3b3JrIGZvcikgQnJpbmcgbm90
aWZpY2F0aW9ucyBzdXBwb3J0IHRvIFdLMSBtYWMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzgzCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDYx
MDU3OD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDE2Y2RmNGMwMDc1YjE1MDFiYWM1ZThlYWRkNzhmM2EyYjYzOTRkMWEuLmM4ZGU3NTVi
NmNkNjI2YzExODQxNTdiZjBhMzI4NTJjZjEyNDFjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQsNiArNzQsOSBAQAogCQkyMjZF
OUU2QjA5RDBBQTgyMDBGM0EyQkMgLyogV2ViTmV0c2NhcGVEZXByZWNhdGVkRnVuY3Rpb25zLmMg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjZFOUU2OTA5
RDBBQTgyMDBGM0EyQkMgLyogV2ViTmV0c2NhcGVEZXByZWNhdGVkRnVuY3Rpb25zLmMgKi87IHNl
dHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMi
OyB9OyB9OwogCQkyMkYyMTlDQzA4RDIzNjczMDAzMEUwNzggLyogV2ViQmFja0ZvcndhcmRMaXN0
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjJGMjE5Q0IwOEQyMzY3MzAwMzBFMDc4IC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyOUFFRjk2
MDEzNEM3NkZCMDBGRTUwOTYgLyogT3V0bG9va1F1aXJrc1VzZXJTY3JpcHQuanMgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUVGOTVEMTM0Qzc1NTQw
MEZFNTA5NiAvKiBPdXRsb29rUXVpcmtzVXNlclNjcmlwdC5qcyAqLzsgfTsKKwkJMzEyRTJGRTUx
NEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRTJGRTMxNEU0ODE4MjAwN0NDQTE4IC8qIFdl
Yk5vdGlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTMxMkUyRkU2MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJFMkZFNDE0
RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLm1tICovOyB9OworCQkzMTJFMkZFOTE0
RTQ4MjE1MDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkUyRkU4MTRFNDgyMTUwMDdDQ0Ex
OCAvKiBXZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oICovOyB9OwogCQkzMUMxMUE2RTE0NzY1NTJF
MDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMxMUE2QzE0NzY1NTJFMDA0OUE0Q0MgLyogV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmggKi87IH07CiAJCTMxQzExQTZGMTQ3NjU1MkUwMDQ5QTRDQyAv
KiBXZWJOb3RpZmljYXRpb25DbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMUMxMUE2RDE0NzY1NTJFMDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0
aW9uQ2xpZW50Lm1tICovOyB9OwogCQkzN0I2RkI0RTEwNjM1MzBDMDAwRkRCM0IgLyogV2ViUERG
RG9jdW1lbnRFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3QjZGQjRDMTA2MzUzMEMwMDBGREIzQiAvKiBXZWJQREZEb2N1bWVudEV4dHJhcy5o
ICovOyB9OwpAQCAtNDU2LDYgKzQ1OSw5IEBACiAJCTJEMzZGRDVFMDNGNzhGOUUwMEE4MDE2NiAv
KiBXZWJGb3JtRGVsZWdhdGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRm9ybURlbGVnYXRlUHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJMkQ4MURBQjIw
M0VCMEIyRDAwQTgwMTY2IC8qIFdlYkZvcm1EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGb3JtRGVsZWdhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTJEODFE
QUIzMDNFQjBCMkQwMEE4MDE2NiAvKiBXZWJGb3JtRGVsZWdhdGUubSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViRm9ybURlbGVnYXRlLm07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owor
CQkzMTJFMkZFMzE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMTJFMkZFNDE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTm90aWZp
Y2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJFMkZFODE0RTQ4MjE1
MDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzFDMTFBNkMxNDc2NTUyRTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlv
bkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRp
b25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMTFBNkQxNDc2NTUy
RTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzUwODFEOTIwMkI2RDREODBBQ0EyQUNBIC8qIFdlYkhUTUxS
ZXByZXNlbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0
OyBwYXRoID0gV2ViSFRNTFJlcHJlc2VudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTIzOSw2ICsxMjQ1LDkgQEAKIAkJ
CQlGODM0QUFENjBFNjRCMUM3MDBFMjczN0MgLyogV2ViVGV4dEl0ZXJhdG9yLm1tICovLAogCQkJ
CTUxNUUyN0NDMDQ1OEM4NjUwMENBMkQzQSAvKiBXZWJVSURlbGVnYXRlLmggKi8sCiAJCQkJNjVB
N0Q0NEEwNTY4QUIyNjAwRTcwRUY2IC8qIFdlYlVJRGVsZWdhdGVQcml2YXRlLmggKi8sCisJCQkJ
MzEyRTJGRTMxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oICovLAorCQkJCTMx
MkUyRkU0MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0gKi8sCisJCQkJMzEy
RTJGRTgxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbkludGVybmFsLmggKi8sCiAJ
CQkJNTFBOEI1NzkwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcuaCAqLywKIAkJCQk1MUE4QjU3
QTA0MjgzNEY3MDBDQTJEM0EgLyogV2ViVmlldy5tbSAqLywKIAkJCQlCQzJFNDY0QjBGRDhBOTY4
MDBBOUQ5REUgLyogV2ViVmlld0RhdGEuaCAqLywKQEAgLTE2MzIsNiArMTY0MSw4IEBACiAJCQkJ
OTM5ODEwOUIwODI0QkYwMTAwOERGMDM4IC8qIFdlYlZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTM5ODEwNzEwODI0QkYwMTAwOERGMDM4IC8qIFdlYlZpZXdQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUY0NDg0RjEwMzM4RThDMDAzMEU1NUUgLyogV2ViV29ya2Vyc1By
aXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkUyRkU1MTRFNDgxODIwMDdDQ0ExOCAvKiBX
ZWJOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkUyRkU5MTRFNDgyMTUwMDdD
Q0ExOCAvKiBXZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDE4
LDYgKzIwMjksNyBAQAogCQkJCTkzOTgxMTA3MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJWaWV3Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyRTQ2NEUwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdE
YXRhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGNDQ4NTAxMDMzOEU4QzAwMzBFNTVFIC8qIFdl
YldvcmtlcnNQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzEyRTJGRTYxNEU0ODE4MjAw
N0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQu
aAppbmRleCA4MjkwM2NhNTkzOGVmNjVhYzQ4NjYyZTFhYzA1NDZjYjRiZjY5MWJlLi45NDZiYzEx
ZGNhYWViM2I5YTYxMDk1YzE3NTZhMWJhNGE1ZWQzNDBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUs
MTEgKzI1LDE3IEBACiAKICNpbXBvcnQgPFdlYkNvcmUvTm90aWZpY2F0aW9uUHJlc2VudGVyLmg+
CiAKKyNpbXBvcnQgPFdlYkNvcmUvTm90aWZpY2F0aW9uLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1h
cC5oPgorI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xh
c3MgVm9pZENhbGxiYWNrOwogfQogCitAY2xhc3MgV2ViTm90aWZpY2F0aW9uOwogQGNsYXNzIFdl
YlZpZXc7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXIgewpAQCAtNDAsMTEgKzQ2LDIwIEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIHNob3coV2ViQ29yZTo6Tm90aWZpY2F0aW9uKikgT1ZFUlJJ
REU7CiAgICAgdmlydHVhbCB2b2lkIGNhbmNlbChXZWJDb3JlOjpOb3RpZmljYXRpb24qKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJOb3RpZmljYXRpb25zKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZpY2F0
aW9uT2JqZWN0RGVzdHJveWVkKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkKCkgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPFdlYkNvcmU6OlZvaWRDYWxsYmFjaz4pIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxSZXF1ZXN0c0ZvclBlcm1pc3Npb24oV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIE9WRVJSSURFOwogICAgIHZpcnR1YWwgV2ViQ29yZTo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uIGNoZWNrUGVybWlzc2lvbihXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREU7CiAKKyAgICB2b2lkIHJlbW92ZU5v
dGlmaWNhdGlvbkZyb21Db250ZXh0TWFwKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBXZWJDb3Jl
OjpOb3RpZmljYXRpb24qKTsKKwogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiA+IG1fbm90aWZpY2F0aW9uSURN
YXA7CisgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9uPiwgdWludDY0X3Q+
IG1fbm90aWZpY2F0aW9uTWFwOworICAgIAorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8V2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4sIFZlY3Rvcjx1aW50NjRfdD4gPiBOb3RpZmlj
YXRpb25Db250ZXh0TWFwOworICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXAgbV9ub3RpZmljYXRp
b25Db250ZXh0TWFwOworCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCmluZGV4IDgwMTM4ZTMxMzkxOWZl
MTNiYTFjZjY1NWVjNmQxZGQ5OTVhZGE5NDcuLmFhYTIyYWMzNWM4NjRhOTJlNGRmNzFmM2EyNDVi
NDkzZWY5YzRmZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDM0ICsyNSwxMzAgQEAKIAogI2lt
cG9ydCAiV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAKKyNpbXBvcnQgIldlYk5vdGlmaWNhdGlv
bkludGVybmFsLmgiCisjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNv
cmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90aWZpY2F0aW9uLmg+CiAK
KyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNpbXBvcnQgIldlYkRlbGVnYXRlSW1wbGVtZW50
YXRpb25DYWNoaW5nLmgiCisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgorI2ltcG9ydCAiV2Vi
U2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViVUlEZWxlZ2F0ZVByaXZhdGUu
aCIKKyNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CisjaW1wb3J0IDxXZWJDb3Jl
L1BhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oPgorI2Vu
ZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVOb3RpZmljYXRpb25JRCgpCit7CisgICAgc3Rh
dGljIHVpbnQ2NF90IHVuaXF1ZU5vdGlmaWNhdGlvbklEID0gMTsKKyAgICByZXR1cm4gdW5pcXVl
Tm90aWZpY2F0aW9uSUQrKzsKK30KKyNlbmRpZgorCiBXZWJOb3RpZmljYXRpb25DbGllbnQ6Oldl
Yk5vdGlmaWNhdGlvbkNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDogbV93ZWJWaWV3KHdl
YlZpZXcpCiB7CiB9CiAKLWJvb2wgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpzaG93KE5vdGlmaWNh
dGlvbiopCitib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3RpZmljYXRpb24qIG5v
dGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworI2lmIEVOQUJMRShOT1RJRklD
QVRJT05TKQorICAgIGlmICghW21fd2ViVmlldyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1aW50NjRfdCBub3RpZmljYXRpb25JRCA9IGdlbmVy
YXRlTm90aWZpY2F0aW9uSUQoKTsKKyAgICBSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiB3ZWJO
b3RpZmljYXRpb24gPSBhZG9wdE5TKFtbV2ViTm90aWZpY2F0aW9uIGFsbG9jXSBpbml0V2l0aENv
cmVOb3RpZmljYXRpb246bm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklEOm5vdGlmaWNhdGlvbklE
XSk7CisgICAgbV9ub3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9u
SUQpOworICAgIG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlvbklELCB3ZWJOb3Rp
ZmljYXRpb24pOworCisgICAgTm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0b3IgaXQgPSBt
X25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZmluZChub3RpZmljYXRpb24tPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CisgICAgaWYgKGl0ID09IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5lbmQo
KSkgeworICAgICAgICBwYWlyPE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yLCBib29s
PiBhZGRlZFBhaXIgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5vdGlmaWNhdGlvbi0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkpOworICAgICAgICBp
dCA9IGFkZGVkUGFpci5maXJzdDsKKyAgICB9CisgICAgaXQtPnNlY29uZC5hcHBlbmQobm90aWZp
Y2F0aW9uSUQpOworCisgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBzaG93
Tm90aWZpY2F0aW9uOndlYk5vdGlmaWNhdGlvbi5nZXQoKSBmcm9tV2ViVmlldzptX3dlYlZpZXdd
OworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9u
KTsKICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25D
bGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24qKQordm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6
OmNhbmNlbChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlv
bklEID0gbV9ub3RpZmljYXRpb25NYXAuZ2V0KG5vdGlmaWNhdGlvbik7CisgICAgaWYgKCFub3Rp
ZmljYXRpb25JRCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFdlYk5vdGlmaWNhdGlvbiAq
d2ViTm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90aWZpY2F0aW9uSUQp
LmdldCgpOworICAgIEFTU0VSVCh3ZWJOb3RpZmljYXRpb24pOworICAgIFtbbV93ZWJWaWV3IF9u
b3RpZmljYXRpb25Qcm92aWRlcl0gY2FuY2VsTm90aWZpY2F0aW9uOndlYk5vdGlmaWNhdGlvbl07
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOworI2VuZGlmCiB9CiAKLXZv
aWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoV2Vi
Q29yZTo6Tm90aWZpY2F0aW9uKikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjbGVhck5v
dGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIE5vdGlmaWNhdGlv
bkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmZpbmQo
Y29udGV4dCk7CisgICAgaWYgKGl0ID09IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5lbmQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFZlY3Rvcjx1aW50NjRfdD4mIG5vdGlmaWNhdGlv
bklEcyA9IGl0LT5zZWNvbmQ7CisgICAgTlNNdXRhYmxlQXJyYXkgKm5zSURzID0gW05TTXV0YWJs
ZUFycmF5IGFycmF5XTsKKyAgICBzaXplX3QgY291bnQgPSBub3RpZmljYXRpb25JRHMuc2l6ZSgp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAgICAgICAgW25zSURz
IGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6bm90aWZpY2F0
aW9uSURzW2ldXV07CisgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBjbGVh
ck5vdGlmaWNhdGlvbnM6bnNJRHNdOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3Vu
dDsgKytpKSB7CisgICAgICAgIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+IHdlYk5vdGlmaWNh
dGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25JRHNbaV0pOworICAg
ICAgICBpZiAoIXdlYk5vdGlmaWNhdGlvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBtX25vdGlmaWNhdGlvbk1hcC5yZW1vdmUoY29yZSh3ZWJOb3RpZmljYXRpb24uZ2V0KCkpKTsK
KyAgICB9CisgICAgCisgICAgbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLnJlbW92ZShpdCk7Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKKyNlbmRpZgorfQorCit2b2lkIFdlYk5v
dGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKE5vdGlmaWNhdGlv
biogbm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHVpbnQ2
NF90IG5vdGlmaWNhdGlvbklEID0gbV9ub3RpZmljYXRpb25NYXAudGFrZShub3RpZmljYXRpb24p
OworICAgIGlmICghbm90aWZpY2F0aW9uSUQpCisgICAgICAgIHJldHVybjsKKworICAgIFJldGFp
blB0cjxXZWJOb3RpZmljYXRpb24+IHdlYk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURN
YXAudGFrZShub3RpZmljYXRpb25JRCk7CisgICAgQVNTRVJUKHdlYk5vdGlmaWNhdGlvbi5nZXQo
KSk7CisgICAgcmVtb3ZlTm90aWZpY2F0aW9uRnJvbUNvbnRleHRNYXAobm90aWZpY2F0aW9uSUQs
IG5vdGlmaWNhdGlvbik7CisgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBu
b3RpZmljYXRpb25EZXN0cm95ZWQ6d2ViTm90aWZpY2F0aW9uLmdldCgpXTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJOb3RpZmlj
YXRpb25DbGllbnQ6Om5vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQoKQogeworI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorICAgIE5TTXV0YWJsZUFycmF5ICpub3RpZmljYXRpb25JRHMg
PSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIEhhc2hNYXA8dWludDY0X3QsIFJldGFpblB0
cjxXZWJOb3RpZmljYXRpb24+ID46Oml0ZXJhdG9yIGl0RW5kID0gbV9ub3RpZmljYXRpb25JRE1h
cC5lbmQoKTsKKyAgICBmb3IgKEhhc2hNYXA8dWludDY0X3QsIFJldGFpblB0cjxXZWJOb3RpZmlj
YXRpb24+ID46Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25JRE1hcC5iZWdpbigpOyBpdCAh
PSBpdEVuZDsgKytpdCkKKyAgICAgICAgW25vdGlmaWNhdGlvbklEcyBhZGRPYmplY3Q6W05TTnVt
YmVyIG51bWJlcldpdGhVbnNpZ25lZExvbmdMb25nOml0LT5maXJzdF1dOworICAgIFtbbV93ZWJW
aWV3IF9ub3RpZmljYXRpb25Qcm92aWRlcl0gY2xlYXJOb3RpZmljYXRpb25zOm5vdGlmaWNhdGlv
bklEc107CisgICAgW21fd2ViVmlldyBfbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZF07
CisjZW5kaWYKICAgICBkZWxldGUgdGhpczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViTm90aWZpY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA0YjJhZDA3MmU0Y2YxNDMyZDgxMDM4
NGJiMmZlNDk5ZjJhMmQ3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViTm90aWZpY2F0aW9uLmgKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitAY2xh
c3MgV2ViTm90aWZpY2F0aW9uUHJpdmF0ZTsKK0BjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKKwor
QGludGVyZmFjZSBXZWJOb3RpZmljYXRpb24gOiBOU09iamVjdAoreworICAgIFdlYk5vdGlmaWNh
dGlvblByaXZhdGUgKl9wcml2YXRlOworfQorCistIChOU1N0cmluZyAqKXRpdGxlOworLSAoTlNT
dHJpbmcgKilib2R5OworLSAoV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW47CistICh1aW50NjRf
dClub3RpZmljYXRpb25JRDsKKworLSAodm9pZClkaXNwYXRjaFNob3dFdmVudDsKKy0gKHZvaWQp
ZGlzcGF0Y2hDbG9zZUV2ZW50OworLSAodm9pZClkaXNwYXRjaENsaWNrRXZlbnQ7CistICh2b2lk
KWRpc3BhdGNoRXJyb3JFdmVudDsKKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJOb3RpZmljYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYk5vdGlmaWNhdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjQ3MDA4YTcyNzJlODJmZGY3NmIzNjQ4
NmUwY2Q0MDE1NjQzMDU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJOb3RpZmljYXRpb24ubW0KQEAgLTAsMCArMSwxMzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lt
cG9ydCAiV2ViTm90aWZpY2F0aW9uLmgiCisKKyNpbXBvcnQgIldlYk5vdGlmaWNhdGlvbkludGVy
bmFsLmgiCisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgiCisjaW1wb3J0IDxX
ZWJDb3JlL05vdGlmaWNhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0Lmg+CisjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgorI2ltcG9ydCA8d3RmL1JlZlB0
ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworT0JKQ19DTEFTUyBXZWJOb3RpZmlj
YXRpb25JbnRlcm5hbDsKKworQGludGVyZmFjZSBXZWJOb3RpZmljYXRpb25Qcml2YXRlIDogTlNP
YmplY3QKK3sKK0BwdWJsaWMKKyAgICBXZWJOb3RpZmljYXRpb25JbnRlcm5hbCAqX2ludGVybmFs
OworICAgIHVpbnQ2NF90IF9ub3RpZmljYXRpb25JRDsKK30KK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFdlYk5vdGlmaWNhdGlvblByaXZhdGUKK0BlbmQKKworI2lmIEVOQUJMRShOT1RJRklDQVRJ
T05TKQorQGltcGxlbWVudGF0aW9uIFdlYk5vdGlmaWNhdGlvbiAoV2ViTm90aWZpY2F0aW9uSW50
ZXJuYWwpCitOb3RpZmljYXRpb24qIGNvcmUoV2ViTm90aWZpY2F0aW9uICpub3RpZmljYXRpb24p
Cit7CisgICAgaWYgKCFub3RpZmljYXRpb24tPl9wcml2YXRlKQorICAgICAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOb3RpZmljYXRpb24qPihub3RpZmljYXRpb24t
Pl9wcml2YXRlLT5faW50ZXJuYWwpOworfQorCistIChpZClpbml0V2l0aENvcmVOb3RpZmljYXRp
b246KE5vdGlmaWNhdGlvbiopY29yZU5vdGlmaWNhdGlvbiBub3RpZmljYXRpb25JRDoodWludDY0
X3Qpbm90aWZpY2F0aW9uSUQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKyAgICBjb3JlTm90aWZpY2F0aW9uLT5yZWYoKTsKKyAgICBfcHJp
dmF0ZSA9IFtbV2ViTm90aWZpY2F0aW9uUHJpdmF0ZSBhbGxvY10gaW5pdF07CisgICAgX3ByaXZh
dGUtPl9pbnRlcm5hbCA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViTm90aWZpY2F0aW9uSW50ZXJuYWwq
Pihjb3JlTm90aWZpY2F0aW9uKTsKKyAgICBfcHJpdmF0ZS0+X25vdGlmaWNhdGlvbklEID0gbm90
aWZpY2F0aW9uSUQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CitAZW5kCisjZW5kaWYKKworQGltcGxl
bWVudGF0aW9uIFdlYk5vdGlmaWNhdGlvbgorLSAoaWQpaW5pdAoreworICAgIHJldHVybiBuaWw7
Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9u
ID0gY29yZShzZWxmKTsKKyAgICBpZiAobm90aWZpY2F0aW9uKQorICAgICAgICBub3RpZmljYXRp
b24tPmRlcmVmKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKE5TU3RyaW5nICop
dGl0bGUKK3sKKyAgICBBU1NFUlQoY29yZShzZWxmKSk7CisgICAgcmV0dXJuIGNvcmUoc2VsZikt
PmNvbnRlbnRzKCkudGl0bGU7Cit9CisKKy0gKE5TU3RyaW5nICopYm9keQoreworICAgIEFTU0VS
VChjb3JlKHNlbGYpKTsKKyAgICByZXR1cm4gY29yZShzZWxmKS0+Y29udGVudHMoKS5ib2R5Owor
fQorCistIChXZWJTZWN1cml0eU9yaWdpbiAqKW9yaWdpbgoreworICAgIEFTU0VSVChjb3JlKHNl
bGYpKTsKKyAgICByZXR1cm4gW1tbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdl
YkNvcmVTZWN1cml0eU9yaWdpbjpjb3JlKHNlbGYpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNlY3VyaXR5T3JpZ2luKCldIGF1dG9yZWxlYXNlXTsKK30KKworLSAodWludDY0X3Qpbm90aWZp
Y2F0aW9uSUQKK3sKKyAgICBBU1NFUlQoY29yZShzZWxmKSk7CisgICAgcmV0dXJuIF9wcml2YXRl
LT5fbm90aWZpY2F0aW9uSUQ7Cit9CisKKy0gKHZvaWQpZGlzcGF0Y2hTaG93RXZlbnQKK3sKKyAg
ICBBU1NFUlQoY29yZShzZWxmKSk7CisgICAgY29yZShzZWxmKS0+ZGlzcGF0Y2hTaG93RXZlbnQo
KTsKK30KKworLSAodm9pZClkaXNwYXRjaENsb3NlRXZlbnQKK3sKKyAgICBBU1NFUlQoY29yZShz
ZWxmKSk7CisgICAgY29yZShzZWxmKS0+ZGlzcGF0Y2hDbG9zZUV2ZW50KCk7Cit9CisKKy0gKHZv
aWQpZGlzcGF0Y2hDbGlja0V2ZW50Cit7CisgICAgQVNTRVJUKGNvcmUoc2VsZikpOworICAgIGNv
cmUoc2VsZiktPmRpc3BhdGNoQ2xpY2tFdmVudCgpOworfQorCistICh2b2lkKWRpc3BhdGNoRXJy
b3JFdmVudAoreworICAgIEFTU0VSVChjb3JlKHNlbGYpKTsKKyAgICBjb3JlKHNlbGYpLT5kaXNw
YXRjaEVycm9yRXZlbnQoKTsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MjQwNjlkOWVj
YWY2Y2NiMGJhMWRiYzk0ZjIwNTIwNThkOWU5YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYk5vdGlmaWNhdGlvbkludGVybmFsLmgKQEAgLTAsMCArMSw0
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJOb3RpZmljYXRpb24uaCIKKworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05TKQorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOb3RpZmljYXRp
b247Cit9CisKK1dlYkNvcmU6Ok5vdGlmaWNhdGlvbiogY29yZShXZWJOb3RpZmljYXRpb24gKik7
CisKK0BpbnRlcmZhY2UgV2ViTm90aWZpY2F0aW9uIChXZWJOb3RpZmljYXRpb25JbnRlcm5hbCkK
Ky0gKGlkKWluaXRXaXRoQ29yZU5vdGlmaWNhdGlvbjooV2ViQ29yZTo6Tm90aWZpY2F0aW9uKilj
b3JlTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklEOih1aW50NjRfdClub3RpZmljYXRpb25JRDsK
K0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggNGRm
Nzc1OGQwMmUxNmJjYThjNWM1Y2Q4NTMzYjEwZTA3NGNhMTgzNS4uODIxYWI5YjZkZDRjZGY2ZDVk
ZWFkMTVhNTI0YTcxMGExYjZkMTIxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA1LTIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICogQ29weXJpZ2h0IChDKSAyMDA2IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5j
b20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKQEAgLTY0MDEsNiArNjQw
MSw0MyBAQCBzdGF0aWMgdm9pZCBnbGliQ29udGV4dEl0ZXJhdGlvbkNhbGxiYWNrKENGUnVuTG9v
cE9ic2VydmVyUmVmLCBDRlJ1bkxvb3BBY3Rpdml0eQogCiBAZW5kCiAKK0BpbXBsZW1lbnRhdGlv
biBXZWJWaWV3IChXZWJWaWV3Tm90aWZpY2F0aW9uKQorLSAodm9pZClfc2V0Tm90aWZpY2F0aW9u
UHJvdmlkZXI6KGlkPFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyPilub3RpZmljYXRpb25Qcm92aWRl
cgoreworICAgIGlmIChfcHJpdmF0ZSkgeworICAgICAgICBfcHJpdmF0ZS0+X25vdGlmaWNhdGlv
blByb3ZpZGVyID0gbm90aWZpY2F0aW9uUHJvdmlkZXI7CisgICAgICAgIFtfcHJpdmF0ZS0+X25v
dGlmaWNhdGlvblByb3ZpZGVyIHJlZ2lzdGVyV2ViVmlldzpzZWxmXTsKKyAgICB9Cit9CisKKy0g
KHZvaWQpX25vdGlmaWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWQKK3sKKyAgICBbW3NlbGYgX25v
dGlmaWNhdGlvblByb3ZpZGVyXSB1bnJlZ2lzdGVyV2ViVmlldzpzZWxmXTsKK30KKworLSAoaWQ8
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI+KV9ub3RpZmljYXRpb25Qcm92aWRlcgoreworICAgIGlm
IChfcHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuIF9wcml2YXRlLT5fbm90aWZpY2F0aW9uUHJvdmlk
ZXI7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAodm9pZClfbm90aWZpY2F0aW9uRGlkU2hvdzoo
dWludDY0X3Qpbm90aWZpY2F0aW9uSUQKK3sKKyAgICBbW3NlbGYgX25vdGlmaWNhdGlvblByb3Zp
ZGVyXSB3ZWJWaWV3OnNlbGYgZGlkU2hvd05vdGlmaWNhdGlvbjpub3RpZmljYXRpb25JRF07Cit9
CisKKy0gKHZvaWQpX25vdGlmaWNhdGlvbkRpZENsaWNrOih1aW50NjRfdClub3RpZmljYXRpb25J
RAoreworICAgIFtbc2VsZiBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIHdlYlZpZXc6c2VsZiBkaWRD
bGlja05vdGlmaWNhdGlvbjpub3RpZmljYXRpb25JRF07Cit9CisKKy0gKHZvaWQpX25vdGlmaWNh
dGlvbnNEaWRDbG9zZTooTlNBcnJheSAqKW5vdGlmaWNhdGlvbklEcworeworICAgIFtbc2VsZiBf
bm90aWZpY2F0aW9uUHJvdmlkZXJdIHdlYlZpZXc6c2VsZiBkaWRDbG9zZU5vdGlmaWNhdGlvbnM6
bm90aWZpY2F0aW9uSURzXTsKK30KK0BlbmQKKwogQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdl
YlZpZXdQcml2YXRlU3R5bGVJbmZvKQogCiAtIChKU1ZhbHVlUmVmKV9jb21wdXRlZFN0eWxlSW5j
bHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZiljb250ZXh0IGZvckVsZW1lbnQ6KEpTVmFs
dWVSZWYpdmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
d0RhdGEuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAppbmRleCA2
NjVjYjkxNzVkODZhOWUxNzI5ZjkyMTQ4ZmViMmI5ZjZlNzMzNmU5Li5lYTJiZmNmNjA3NGU5YTUx
MWMzYzNlYWUyZGI0ZmY1ZTVlYzNjNGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXdEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJW
aWV3RGF0YS5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwK
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
QHByb3RvY29sIFdlYkZvcm1EZWxlZ2F0ZTsKIEBwcm90b2NvbCBXZWJEZXZpY2VPcmllbnRhdGlv
blByb3ZpZGVyOwogQHByb3RvY29sIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI7CitAcHJvdG9jb2wg
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI7CiAjaWYgRU5BQkxFKFZJREVPKQogQGNsYXNzIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXI7CiAjZW5kaWYKQEAgLTE5MSw2ICsxOTIsNyBAQCBwcml2
YXRlOgogI2VuZGlmCiAgICAgaWQ8V2ViR2VvbG9jYXRpb25Qcm92aWRlcj4gX2dlb2xvY2F0aW9u
UHJvdmlkZXI7CiAgICAgaWQ8V2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcj4gbV9kZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyOworICAgIGlkPFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyPiBfbm90
aWZpY2F0aW9uUHJvdmlkZXI7CiAKICAgICBSZWZQdHI8V2ViQ29yZTo6SGlzdG9yeUl0ZW0+IF9n
bG9iYWxIaXN0b3J5SXRlbTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IGNkOTJmMzFlNTc4OWE0MGJhMmU1ZmI3NGQ1ZTQzNjcwNmYzMjliZTguLmUw
ZmVlODFkMWYzMWM4ZDQ5MTYzYWQyODg0MjYzZDU3YWNmNzgwNjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNS0yMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzks
OCArMzksMTAgQEAKIEBjbGFzcyBXZWJEZXZpY2VPcmllbnRhdGlvbjsKIEBjbGFzcyBXZWJHZW9s
b2NhdGlvblBvc2l0aW9uOwogQGNsYXNzIFdlYkluc3BlY3RvcjsKK0BjbGFzcyBXZWJOb3RpZmlj
YXRpb247CiBAY2xhc3MgV2ViUHJlZmVyZW5jZXM7CiBAY2xhc3MgV2ViU2NyaXB0V29ybGQ7CitA
Y2xhc3MgV2ViU2VjdXJpdHlPcmlnaW47CiBAY2xhc3MgV2ViVGV4dEl0ZXJhdG9yOwogCiBAcHJv
dG9jb2wgV2ViRGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcjsKQEAgLTEwNCw2ICsxMDYsMTMgQEAg
dHlwZWRlZiBlbnVtIHsKICAgICBXZWJQYWdpbmF0aW9uTW9kZVZlcnRpY2FsLAogfSBXZWJQYWdp
bmF0aW9uTW9kZTsKIAorLy8gVGhpcyBuZWVkcyB0byBiZSBpbiBzeW5jIHdpdGggV2ViQ29yZTo6
Tm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNzaW9uCit0eXBlZGVmIGVudW0geworICAgIFdl
Yk5vdGlmaWNhdGlvblBlcm1pc3Npb25BbGxvd2VkLAorICAgIFdlYk5vdGlmaWNhdGlvblBlcm1p
c3Npb25Ob3RBbGxvd2VkLAorICAgIFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb25EZW5pZWQKK30g
V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbjsKKwogQGludGVyZmFjZSBXZWJDb250cm9sbGVyIDog
TlNUcmVlQ29udHJvbGxlciB7CiAgICAgSUJPdXRsZXQgV2ViVmlldyAqd2ViVmlldzsKIH0KQEAg
LTcwMSw2ICs3MTAsMjEgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtIChX
ZWJHZW9sb2NhdGlvblBvc2l0aW9uICopbGFzdFBvc2l0aW9uOwogQGVuZAogCitAcHJvdG9jb2wg
V2ViTm90aWZpY2F0aW9uUHJvdmlkZXIKKy0gKHZvaWQpcmVnaXN0ZXJXZWJWaWV3OihXZWJWaWV3
ICopd2ViVmlldzsKKy0gKHZvaWQpdW5yZWdpc3RlcldlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3
OworCistICh2b2lkKXNob3dOb3RpZmljYXRpb246KFdlYk5vdGlmaWNhdGlvbiAqKW5vdGlmaWNh
dGlvbiBmcm9tV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXc7CistICh2b2lkKWNhbmNlbE5vdGlm
aWNhdGlvbjooV2ViTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworLSAodm9pZClub3RpZmlj
YXRpb25EZXN0cm95ZWQ6KFdlYk5vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbjsKKy0gKHZvaWQp
Y2xlYXJOb3RpZmljYXRpb25zOihOU0FycmF5ICopbm90aWZpY2F0aW9uSURzOworLSAoV2ViTm90
aWZpY2F0aW9uUGVybWlzc2lvbilwb2xpY3lGb3JPcmlnaW46KFdlYlNlY3VyaXR5T3JpZ2luICop
b3JpZ2luOworCistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZFNob3dOb3Rp
ZmljYXRpb246KHVpbnQ2NF90KW5vdGlmaWNhdGlvbklEOworLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopd2ViVmlldyBkaWRDbGlja05vdGlmaWNhdGlvbjoodWludDY0X3Qpbm90aWZpY2F0aW9u
SUQ7CistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZENsb3NlTm90aWZpY2F0
aW9uczooTlNBcnJheSAqKW5vdGlmaWNhdGlvbklEczsKK0BlbmQKKwogQGludGVyZmFjZSBXZWJW
aWV3IChXZWJWaWV3R2VvbG9jYXRpb24pCiAtICh2b2lkKV9zZXRHZW9sb2NhdGlvblByb3ZpZGVy
OihpZDxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPilsb2NhdGlvblByb3ZpZGVyOwogLSAoaWQ8V2Vi
R2VvbG9jYXRpb25Qcm92aWRlcj4pX2dlb2xvY2F0aW9uUHJvdmlkZXI7CkBAIC03MDksNiArNzMz
LDE2IEBAIENvdWxkIGJlIHdvcnRoIGFkZGluZyB0byB0aGUgQVBJLgogLSAodm9pZClfZ2VvbG9j
YXRpb25EaWRGYWlsV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3I7CiBAZW5kCiAKK0BpbnRlcmZh
Y2UgV2ViVmlldyAoV2ViVmlld05vdGlmaWNhdGlvbikKKy0gKHZvaWQpX3NldE5vdGlmaWNhdGlv
blByb3ZpZGVyOihpZDxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4pbm90aWZpY2F0aW9uUHJvdmlk
ZXI7CistIChpZDxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4pX25vdGlmaWNhdGlvblByb3ZpZGVy
OworLSAodm9pZClfbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZDsKKworLSAodm9pZClf
bm90aWZpY2F0aW9uRGlkU2hvdzoodWludDY0X3Qpbm90aWZpY2F0aW9uSUQ7CistICh2b2lkKV9u
b3RpZmljYXRpb25EaWRDbGljazoodWludDY0X3Qpbm90aWZpY2F0aW9uSUQ7CistICh2b2lkKV9u
b3RpZmljYXRpb25zRGlkQ2xvc2U6KE5TQXJyYXkgKilub3RpZmljYXRpb25JRHM7CitAZW5kCisK
IEBpbnRlcmZhY2UgV2ViVmlldyAoV2ViVmlld1ByaXZhdGVTdHlsZUluZm8pCiAtIChKU1ZhbHVl
UmVmKV9jb21wdXRlZFN0eWxlSW5jbHVkaW5nVmlzaXRlZEluZm86KEpTQ29udGV4dFJlZiljb250
ZXh0IGZvckVsZW1lbnQ6KEpTVmFsdWVSZWYpdmFsdWU7CiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127534</attachid>
            <date>2012-02-16 23:47:55 -0800</date>
            <delta_ts>2012-02-21 14:11:04 -0800</delta_ts>
            <desc>Bring notifications support to WK1 mac: showing, canceling, removing notifications</desc>
            <filename>bug-78783-20120216234832.patch</filename>
            <type>text/plain</type>
            <size>31752</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3ODUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDRkMDA3YzY2MTk0ZGViZGIz
N2MxNDBmNWEyYWI1MGM5OTgxNDljZGYuLjdjNGJlNGYzMDE1ODA3ZmIyNWM5MmRjMDc2ZTMwM2Q4
ZTNjZjE4NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMTYgIEpvbiBMZWUg
IDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEJyaW5nIG5vdGlmaWNhdGlvbnMgc3VwcG9y
dCB0byBXSzEgbWFjOiBzaG93aW5nLCBjYW5jZWxpbmcsIHJlbW92aW5nIG5vdGlmaWNhdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzgzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDYxMDU3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZCBuZXcgZmlsZXMuCisKIDIwMTItMDItMTQgIE5pbWEgR2hhbmF2YXRpYW4gIDxu
Z2hhbmF2YXRpYW5AcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gVXBzdHJlYW1pbmcg
V2ViU2V0dGluZ3MgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDkyOWQ1OTk3NDU2ODEwMmNhMmM5
MDllMGI3MzVkOTQ4ZmRkNjgzNGIuLmRmZjNiYjg0NzVjNmMyM2IxOWQzYjU3N2IwMzFiODBjNjgw
NzVjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsNSArMSw2MiBAQAogMjAxMi0wMi0xNiAgSm9u
IExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKKyAgICAgICAgQnJpbmcgbm90aWZpY2F0aW9ucyBz
dXBwb3J0IHRvIFdLMSBtYWM6IHNob3dpbmcsIGNhbmNlbGluZywgcmVtb3Zpbmcgbm90aWZpY2F0
aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3
ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNjEwNTc4PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENyZWF0ZSBhIFdlYktpdCB3cmFwcGVyIG9i
amVjdCBmb3IgV2ViQ29yZTo6Tm90aWZpY2F0aW9uLCB3aGljaCBhbHNvIGtlZXBzIHRyYWNrIG9m
IGFuIGFzc2lnbmVkCisgICAgICAgIElELgorICAgICAgICAqIFdlYlZpZXcvV2ViTm90aWZpY2F0
aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViU2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViTm90aWZpY2F0aW9uLm1tOiBBZGRlZC4KKyAgICAgICAgKGNvcmUpOgorICAgICAg
ICAoLVtXZWJOb3RpZmljYXRpb24gaW5pdFdpdGhDb3JlTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlv
bklEOl0pOgorICAgICAgICAoLVtXZWJOb3RpZmljYXRpb24gaW5pdF0pOgorICAgICAgICAoLVtX
ZWJOb3RpZmljYXRpb24gZGVhbGxvY10pOgorICAgICAgICAoLVtXZWJOb3RpZmljYXRpb24gdGl0
bGVdKToKKyAgICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGJvZHldKToKKyAgICAgICAgKC1bV2Vi
Tm90aWZpY2F0aW9uIG9yaWdpbl0pOgorICAgICAgICAoLVtXZWJOb3RpZmljYXRpb24gbm90aWZp
Y2F0aW9uSURdKToKKyAgICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGRpc3BhdGNoU2hvd0V2ZW50
XSk6CisgICAgICAgICgtW1dlYk5vdGlmaWNhdGlvbiBkaXNwYXRjaENsb3NlRXZlbnRdKToKKyAg
ICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGRpc3BhdGNoQ2xpY2tFdmVudF0pOgorICAgICAgICAo
LVtXZWJOb3RpZmljYXRpb24gZGlzcGF0Y2hFcnJvckV2ZW50XSk6CisgICAgICAgICogV2ViVmll
dy9XZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOiBJ
bnRlcm5hbCBjYXRlZ29yeSB0byBhbGxvdyBjcmVhdGluZyBpbnN0YW5jZXMgd2l0aCBXZWJDb3Jl
IG9iamVjdHMuCisKKyAgICAgICAgRXh0ZW5kIFdlYlZpZXcgdG8gaW5jbHVkZSBhIFdlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLCB3aGljaCBjbGllbnRzIGltcGxlbWVudC4KKyAgICAgICAgKiBXZWJW
aWV3L1dlYlZpZXdEYXRhLmg6IEFkZCBhIHByaXZhdGUgbWVtYmVyIGZvciB0aGUgcHJvdmlkZXIu
CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAgICAgKiBEZWZp
bmUgYW4gZW51bSBXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uIHRoYXQgbWlycm9ycyBXZWJDb3Jl
OjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24KKyAgICAgICAgICAgIHRoYXQgY2xp
ZW50IHdoaWNoIGltcGxlbWVudCB0aGUgcHJvdmlkZXIgY2FuIHVzZSB0byByZXR1cm4gcG9saWN5
IGRlY2lzaW9ucy4KKyAgICAgICAgICAgICogRGVmaW5lIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LgorICAgICAgICAgICAgKiBDYXRlZ29yeSBXZWJWaWV3Tm90aWZpY2F0aW9uIGV4dGVuZHMgV2Vi
VmlldyB3aXRoIG1ldGhvZHMgdGhhdCBzZXQgYW5kIG1hbmFnZXIgdGhlCisgICAgICAgICAgICBu
b3RpZmljYXRpb24gcHJvdmlkZXIsIGFuZCBoYW5kbGUgZXZlbnRzIGZyb20gdGhlIHBsYXRmb3Jt
IG5vdGlmaWNhdGlvbnMuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJWaWV3IF9zZXROb3RpZmljYXRpb25Qcm92aWRlcjpdKTogU2V0cyB0aGUgcHJvdmlkZXIg
d2hlbiBpbml0aWFsaXppbmcgdGhlIFdlYlZpZXcuCisgICAgICAgICgtW1dlYlZpZXcgX25vdGlm
aWNhdGlvbkNvbnRyb2xsZXJEZXN0cm95ZWRdKToKKyAgICAgICAgKC1bV2ViVmlldyBfbm90aWZp
Y2F0aW9uUHJvdmlkZXJdKToKKyAgICAgICAgKC1bV2ViVmlldyBfbm90aWZpY2F0aW9uRGlkU2hv
dzpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfbm90aWZpY2F0aW9uRGlkQ2xpY2s6XSk6CisgICAg
ICAgICgtW1dlYlZpZXcgX25vdGlmaWNhdGlvbnNEaWRDbG9zZTpdKToKKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oOiBBZGQgdmFyaWFibGVzIHRoYXQg
bWFwIGJldHdlZW4gV2ViQ29yZTo6Tm90aWZpY2F0aW9uCisgICAgICAgIGluc3RhbmNlcywgdGhl
aXIgYXNzaWduZWQgSURzLCB0aGVpciBjb250ZXh0cywgYW5kIGNvcnJlc3BvbmRpbmcgV2ViS2l0
IHdyYXBwZXIgb2JqZWN0cy4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRp
b25DbGllbnQubW06CisgICAgICAgIChnZW5lcmF0ZU5vdGlmaWNhdGlvbklEKTogQ3JlYXRlZCB1
bmlxdWUgSURzIGZvciBlYWNoIHNob3duIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgKFdlYk5vdGlm
aWNhdGlvbkNsaWVudDo6c2hvdyk6IENyZWF0ZSB3cmFwcGVyIG9iamVjdCBmb3Igbm90aWZpY2F0
aW9uLCBhc3NpZ24gSUQsIGNhY2hlIHRoZQorICAgICAgICBtYXBwaW5ncyBiZXR3ZWVuIHRoZSBv
YmplY3RzLCBhbmQgZm9yd2FyZCBpdCB0byB0aGUgcHJvdmlkZXIuCisgICAgICAgIChXZWJOb3Rp
ZmljYXRpb25DbGllbnQ6OmNhbmNlbCk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6
OmNsZWFyTm90aWZpY2F0aW9ucyk6IENsZWFyIGFsbCBub3RpZmljYXRpb25zIGFzc29jaWF0ZWQg
d2l0aCB0aGUKKyAgICAgICAgcHJvdmlkZWQgY29udGV4dC4KKyAgICAgICAgKFdlYk5vdGlmaWNh
dGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVkKTogUmVtb3ZlIHRoZSBub3Rp
ZmljYXRpb24gZnJvbSB0aGUgbWFwcy4KKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6
bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCk6IElmIHRoZSBjb250cm9sbGVyIGlzIGRl
c3Ryb3llZCwgdGVsbAorICAgICAgICB0aGUgcHJvdmlkZXIgdG8gY2xlYXIgb2YgdGhlIG5vdGlm
aWNhdGlvbnMgcmVsYXRlZCB0byB0aGlzIHdlYiB2aWV3LgorCisyMDEyLTAyLTE2ICBKb24gTGVl
ICA8am9ubGVlQGFwcGxlLmNvbT4KKwogICAgICAgICAoUHJlcCB3b3JrIGZvcikgQnJpbmcgbm90
aWZpY2F0aW9ucyBzdXBwb3J0IHRvIFdLMSBtYWMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzgzCiAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDYx
MDU3OD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDE2Y2RmNGMwMDc1YjE1MDFiYWM1ZThlYWRkNzhmM2EyYjYzOTRkMWEuLmM4ZGU3NTVi
NmNkNjI2YzExODQxNTdiZjBhMzI4NTJjZjEyNDFjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQsNiArNzQsOSBAQAogCQkyMjZF
OUU2QjA5RDBBQTgyMDBGM0EyQkMgLyogV2ViTmV0c2NhcGVEZXByZWNhdGVkRnVuY3Rpb25zLmMg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyMjZFOUU2OTA5
RDBBQTgyMDBGM0EyQkMgLyogV2ViTmV0c2NhcGVEZXByZWNhdGVkRnVuY3Rpb25zLmMgKi87IHNl
dHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMi
OyB9OyB9OwogCQkyMkYyMTlDQzA4RDIzNjczMDAzMEUwNzggLyogV2ViQmFja0ZvcndhcmRMaXN0
UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MjJGMjE5Q0IwOEQyMzY3MzAwMzBFMDc4IC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyOUFFRjk2
MDEzNEM3NkZCMDBGRTUwOTYgLyogT3V0bG9va1F1aXJrc1VzZXJTY3JpcHQuanMgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5QUVGOTVEMTM0Qzc1NTQw
MEZFNTA5NiAvKiBPdXRsb29rUXVpcmtzVXNlclNjcmlwdC5qcyAqLzsgfTsKKwkJMzEyRTJGRTUx
NEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRTJGRTMxNEU0ODE4MjAwN0NDQTE4IC8qIFdl
Yk5vdGlmaWNhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTMxMkUyRkU2MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTJFMkZFNDE0
RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLm1tICovOyB9OworCQkzMTJFMkZFOTE0
RTQ4MjE1MDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDMxMkUyRkU4MTRFNDgyMTUwMDdDQ0Ex
OCAvKiBXZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oICovOyB9OwogCQkzMUMxMUE2RTE0NzY1NTJF
MDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMUMxMUE2QzE0NzY1NTJFMDA0OUE0Q0MgLyogV2Vi
Tm90aWZpY2F0aW9uQ2xpZW50LmggKi87IH07CiAJCTMxQzExQTZGMTQ3NjU1MkUwMDQ5QTRDQyAv
KiBXZWJOb3RpZmljYXRpb25DbGllbnQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAzMUMxMUE2RDE0NzY1NTJFMDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0
aW9uQ2xpZW50Lm1tICovOyB9OwogCQkzN0I2RkI0RTEwNjM1MzBDMDAwRkRCM0IgLyogV2ViUERG
RG9jdW1lbnRFeHRyYXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDM3QjZGQjRDMTA2MzUzMEMwMDBGREIzQiAvKiBXZWJQREZEb2N1bWVudEV4dHJhcy5o
ICovOyB9OwpAQCAtNDU2LDYgKzQ1OSw5IEBACiAJCTJEMzZGRDVFMDNGNzhGOUUwMEE4MDE2NiAv
KiBXZWJGb3JtRGVsZWdhdGVQcml2YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRm9ybURlbGVnYXRlUHJpdmF0ZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJMkQ4MURBQjIw
M0VCMEIyRDAwQTgwMTY2IC8qIFdlYkZvcm1EZWxlZ2F0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJGb3JtRGVsZWdhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTJEODFE
QUIzMDNFQjBCMkQwMEE4MDE2NiAvKiBXZWJGb3JtRGVsZWdhdGUubSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViRm9ybURlbGVnYXRlLm07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owor
CQkzMTJFMkZFMzE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkzMTJFMkZFNDE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViTm90aWZp
Y2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkzMTJFMkZFODE0RTQ4MjE1
MDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMzFDMTFBNkMxNDc2NTUyRTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlv
bkNsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJOb3RpZmljYXRp
b25DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzFDMTFBNkQxNDc2NTUy
RTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbkNsaWVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMzUwODFEOTIwMkI2RDREODBBQ0EyQUNBIC8qIFdlYkhUTUxS
ZXByZXNlbnRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0
OyBwYXRoID0gV2ViSFRNTFJlcHJlc2VudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTIzOSw2ICsxMjQ1LDkgQEAKIAkJ
CQlGODM0QUFENjBFNjRCMUM3MDBFMjczN0MgLyogV2ViVGV4dEl0ZXJhdG9yLm1tICovLAogCQkJ
CTUxNUUyN0NDMDQ1OEM4NjUwMENBMkQzQSAvKiBXZWJVSURlbGVnYXRlLmggKi8sCiAJCQkJNjVB
N0Q0NEEwNTY4QUIyNjAwRTcwRUY2IC8qIFdlYlVJRGVsZWdhdGVQcml2YXRlLmggKi8sCisJCQkJ
MzEyRTJGRTMxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oICovLAorCQkJCTMx
MkUyRkU0MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24ubW0gKi8sCisJCQkJMzEy
RTJGRTgxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbkludGVybmFsLmggKi8sCiAJ
CQkJNTFBOEI1NzkwNDI4MzRGNzAwQ0EyRDNBIC8qIFdlYlZpZXcuaCAqLywKIAkJCQk1MUE4QjU3
QTA0MjgzNEY3MDBDQTJEM0EgLyogV2ViVmlldy5tbSAqLywKIAkJCQlCQzJFNDY0QjBGRDhBOTY4
MDBBOUQ5REUgLyogV2ViVmlld0RhdGEuaCAqLywKQEAgLTE2MzIsNiArMTY0MSw4IEBACiAJCQkJ
OTM5ODEwOUIwODI0QkYwMTAwOERGMDM4IC8qIFdlYlZpZXdJbnRlcm5hbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTM5ODEwNzEwODI0QkYwMTAwOERGMDM4IC8qIFdlYlZpZXdQcml2YXRlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MUY0NDg0RjEwMzM4RThDMDAzMEU1NUUgLyogV2ViV29ya2Vyc1By
aXZhdGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkUyRkU1MTRFNDgxODIwMDdDQ0ExOCAvKiBX
ZWJOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTMxMkUyRkU5MTRFNDgyMTUwMDdD
Q0ExOCAvKiBXZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDE4
LDYgKzIwMjksNyBAQAogCQkJCTkzOTgxMTA3MDgyNEJGMDEwMDhERjAzOCAvKiBXZWJWaWV3Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyRTQ2NEUwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdE
YXRhLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFGNDQ4NTAxMDMzOEU4QzAwMzBFNTVFIC8qIFdl
YldvcmtlcnNQcml2YXRlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMzEyRTJGRTYxNEU0ODE4MjAw
N0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQu
aAppbmRleCA4MjkwM2NhNTkzOGVmNjVhYzQ4NjYyZTFhYzA1NDZjYjRiZjY5MWJlLi45NWYxYzEz
Y2YyZjVmZDU2NTBhNzZmMzlhMjE1MDUzY2M5YTk0ZGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUs
MTEgKzI1LDE3IEBACiAKICNpbXBvcnQgPFdlYkNvcmUvTm90aWZpY2F0aW9uUHJlc2VudGVyLmg+
CiAKKyNpbXBvcnQgPFdlYkNvcmUvTm90aWZpY2F0aW9uLmg+CisjaW1wb3J0IDx3dGYvSGFzaE1h
cC5oPgorI2ltcG9ydCA8d3RmL1JlZlB0ci5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgor
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogY2xh
c3MgVm9pZENhbGxiYWNrOwogfQogCitAY2xhc3MgV2ViTm90aWZpY2F0aW9uOwogQGNsYXNzIFdl
YlZpZXc7CiAKIGNsYXNzIFdlYk5vdGlmaWNhdGlvbkNsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpO
b3RpZmljYXRpb25QcmVzZW50ZXIgewpAQCAtNDAsNiArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCBzaG93KFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIE9WRVJSSURF
OwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCB2b2lkIGNsZWFyTm90aWZpY2F0aW9ucyhXZWJDb3JlOjpTY3JpcHRF
eGVjdXRpb25Db250ZXh0KikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlv
bk9iamVjdERlc3Ryb3llZChXZWJDb3JlOjpOb3RpZmljYXRpb24qKSBPVkVSUklERTsKICAgICB2
aXJ0dWFsIHZvaWQgbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpIE9WRVJSSURFOwog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0UGVybWlzc2lvbihXZWJDb3JlOjpTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpWb2lkQ2FsbGJhY2s+KSBPVkVSUklERTsK
QEAgLTQ3LDQgKzU0LDEwIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmlj
YXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24gY2hlY2tQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqKSBPVkVSUklERTsKIAogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsK
KyAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiA+IG1fbm90
aWZpY2F0aW9uSURNYXA7CisgICAgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6Tm90aWZpY2F0aW9u
PiwgdWludDY0X3Q+IG1fbm90aWZpY2F0aW9uTWFwOworICAgIAorICAgIHR5cGVkZWYgSGFzaE1h
cDxSZWZQdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4sIFZlY3Rvcjx1aW50NjRf
dD4gPiBOb3RpZmljYXRpb25Db250ZXh0TWFwOworICAgIE5vdGlmaWNhdGlvbkNvbnRleHRNYXAg
bV9ub3RpZmljYXRpb25Db250ZXh0TWFwOworCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCmluZGV4IDgw
MTM4ZTMxMzkxOWZlMTNiYTFjZjY1NWVjNmQxZGQ5OTVhZGE5NDcuLjlhZjIwNmEwZGY2N2YxMzk0
ZTNmZjkwODk5ZTMzY2FhYWI4NzVjODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDM0ICsyNSwx
MzggQEAKIAogI2ltcG9ydCAiV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAKKyNpbXBvcnQgIldl
Yk5vdGlmaWNhdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJXZWJWaWV3SW50ZXJuYWwuaCIKICNp
bXBvcnQgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTm90aWZp
Y2F0aW9uLmg+CiAKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyNpbXBvcnQgIldlYkRlbGVn
YXRlSW1wbGVtZW50YXRpb25DYWNoaW5nLmgiCisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlcy5oIgor
I2ltcG9ydCAiV2ViU2VjdXJpdHlPcmlnaW5JbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViVUlEZWxl
Z2F0ZVByaXZhdGUuaCIKKyNpbXBvcnQgPFdlYkNvcmUvQmxvY2tFeGNlcHRpb25zLmg+CisjaW1w
b3J0IDxXZWJDb3JlL1BhZ2UuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCisjaWYgRU5BQkxF
KE5PVElGSUNBVElPTlMpCitzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVOb3RpZmljYXRpb25JRCgp
Cit7CisgICAgc3RhdGljIHVpbnQ2NF90IHVuaXF1ZU5vdGlmaWNhdGlvbklEID0gMTsKKyAgICBy
ZXR1cm4gdW5pcXVlTm90aWZpY2F0aW9uSUQrKzsKK30KKyNlbmRpZgorCiBXZWJOb3RpZmljYXRp
b25DbGllbnQ6OldlYk5vdGlmaWNhdGlvbkNsaWVudChXZWJWaWV3ICp3ZWJWaWV3KQogICAgIDog
bV93ZWJWaWV3KHdlYlZpZXcpCiB7CiB9CiAKLWJvb2wgV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpz
aG93KE5vdGlmaWNhdGlvbiopCitib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyhOb3Rp
ZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworI2lmIEVO
QUJMRShOT1RJRklDQVRJT05TKQorICAgIGlmICghW21fd2ViVmlldyBfbm90aWZpY2F0aW9uUHJv
dmlkZXJdKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB1aW50NjRfdCBub3RpZmljYXRp
b25JRCA9IGdlbmVyYXRlTm90aWZpY2F0aW9uSUQoKTsKKyAgICBSZXRhaW5QdHI8V2ViTm90aWZp
Y2F0aW9uPiB3ZWJOb3RpZmljYXRpb24gPSBhZG9wdE5TKFtbV2ViTm90aWZpY2F0aW9uIGFsbG9j
XSBpbml0V2l0aENvcmVOb3RpZmljYXRpb246bm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklEOm5v
dGlmaWNhdGlvbklEXSk7CisgICAgbV9ub3RpZmljYXRpb25NYXAuc2V0KG5vdGlmaWNhdGlvbiwg
bm90aWZpY2F0aW9uSUQpOworICAgIG1fbm90aWZpY2F0aW9uSURNYXAuc2V0KG5vdGlmaWNhdGlv
bklELCB3ZWJOb3RpZmljYXRpb24pOworCisgICAgTm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRl
cmF0b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZmluZChub3RpZmljYXRpb24tPnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgaWYgKGl0ID09IG1fbm90aWZpY2F0aW9uQ29u
dGV4dE1hcC5lbmQoKSkgeworICAgICAgICBwYWlyPE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0
ZXJhdG9yLCBib29sPiBhZGRlZFBhaXIgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuYWRkKG5v
dGlmaWNhdGlvbi0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBWZWN0b3I8dWludDY0X3Q+KCkp
OworICAgICAgICBpdCA9IGFkZGVkUGFpci5maXJzdDsKKyAgICB9CisgICAgaXQtPnNlY29uZC5h
cHBlbmQobm90aWZpY2F0aW9uSUQpOworCisgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblBy
b3ZpZGVyXSBzaG93Tm90aWZpY2F0aW9uOndlYk5vdGlmaWNhdGlvbi5nZXQoKSBmcm9tV2ViVmll
dzptX3dlYlZpZXddOworICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0o
bm90aWZpY2F0aW9uKTsKICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKIH0KIAotdm9pZCBXZWJO
b3RpZmljYXRpb25DbGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24qKQordm9pZCBXZWJOb3RpZmlj
YXRpb25DbGllbnQ6OmNhbmNlbChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbikKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAgIHVpbnQ2NF90
IG5vdGlmaWNhdGlvbklEID0gbV9ub3RpZmljYXRpb25NYXAuZ2V0KG5vdGlmaWNhdGlvbik7Cisg
ICAgaWYgKCFub3RpZmljYXRpb25JRCkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFdlYk5v
dGlmaWNhdGlvbiAqd2ViTm90aWZpY2F0aW9uID0gbV9ub3RpZmljYXRpb25JRE1hcC5nZXQobm90
aWZpY2F0aW9uSUQpLmdldCgpOworICAgIEFTU0VSVCh3ZWJOb3RpZmljYXRpb24pOworICAgIFtb
bV93ZWJWaWV3IF9ub3RpZmljYXRpb25Qcm92aWRlcl0gY2FuY2VsTm90aWZpY2F0aW9uOndlYk5v
dGlmaWNhdGlvbl07CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShub3RpZmljYXRpb24pOworI2Vu
ZGlmCiB9CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50Ojpub3RpZmljYXRpb25PYmplY3RE
ZXN0cm95ZWQoV2ViQ29yZTo6Tm90aWZpY2F0aW9uKikKK3ZvaWQgV2ViTm90aWZpY2F0aW9uQ2xp
ZW50OjpjbGVhck5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorICAg
IE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250
ZXh0TWFwLmZpbmQoY29udGV4dCk7CisgICAgaWYgKGl0ID09IG1fbm90aWZpY2F0aW9uQ29udGV4
dE1hcC5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIFZlY3Rvcjx1aW50NjRfdD4m
IG5vdGlmaWNhdGlvbklEcyA9IGl0LT5zZWNvbmQ7CisgICAgTlNNdXRhYmxlQXJyYXkgKm5zSURz
ID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICBzaXplX3QgY291bnQgPSBub3RpZmljYXRp
b25JRHMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7ICsraSkKKyAg
ICAgICAgW25zSURzIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xv
bmc6bm90aWZpY2F0aW9uSURzW2ldXV07CisgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblBy
b3ZpZGVyXSBjbGVhck5vdGlmaWNhdGlvbnM6bnNJRHNdOworCisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+
IHdlYk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25J
RHNbaV0pOworICAgICAgICBpZiAoIXdlYk5vdGlmaWNhdGlvbikKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBtX25vdGlmaWNhdGlvbk1hcC5yZW1vdmUoY29yZSh3ZWJOb3RpZmljYXRp
b24uZ2V0KCkpKTsKKyAgICB9CisgICAgCisgICAgbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLnJl
bW92ZShpdCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShjb250ZXh0KTsKKyNlbmRpZgorfQor
Cit2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVk
KE5vdGlmaWNhdGlvbiogbm90aWZpY2F0aW9uKQoreworI2lmIEVOQUJMRShOT1RJRklDQVRJT05T
KQorICAgIHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEID0gbV9ub3RpZmljYXRpb25NYXAudGFrZShu
b3RpZmljYXRpb24pOworICAgIGlmICghbm90aWZpY2F0aW9uSUQpCisgICAgICAgIHJldHVybjsK
KworICAgIFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+IHdlYk5vdGlmaWNhdGlvbiA9IG1fbm90
aWZpY2F0aW9uSURNYXAudGFrZShub3RpZmljYXRpb25JRCk7CisgICAgQVNTRVJUKHdlYk5vdGlm
aWNhdGlvbi5nZXQoKSk7CisKKyAgICBOb3RpZmljYXRpb25Db250ZXh0TWFwOjppdGVyYXRvciBp
dCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5maW5kKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoaXQgIT0gbV9ub3RpZmljYXRpb25Db250ZXh0
TWFwLmVuZCgpKTsKKyAgICBzaXplX3QgaW5kZXggPSBpdC0+c2Vjb25kLmZpbmQobm90aWZpY2F0
aW9uSUQpOworICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7CisgICAgaXQtPnNlY29uZC5y
ZW1vdmUoaW5kZXgpOworICAgIGlmIChpdC0+c2Vjb25kLmlzRW1wdHkoKSkKKyAgICAgICAgbV9u
b3RpZmljYXRpb25Db250ZXh0TWFwLnJlbW92ZShpdCk7CisKKyAgICBbW21fd2ViVmlldyBfbm90
aWZpY2F0aW9uUHJvdmlkZXJdIG5vdGlmaWNhdGlvbkRlc3Ryb3llZDp3ZWJOb3RpZmljYXRpb24u
Z2V0KCldOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyNlbmRpZgog
fQogCiB2b2lkIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRl
c3Ryb3llZCgpCiB7CisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgTlNNdXRhYmxlQXJy
YXkgKm5vdGlmaWNhdGlvbklEcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAgSGFzaE1h
cDx1aW50NjRfdCwgUmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gPjo6aXRlcmF0b3IgaXRFbmQg
PSBtX25vdGlmaWNhdGlvbklETWFwLmVuZCgpOworICAgIGZvciAoSGFzaE1hcDx1aW50NjRfdCwg
UmV0YWluUHRyPFdlYk5vdGlmaWNhdGlvbj4gPjo6aXRlcmF0b3IgaXQgPSBtX25vdGlmaWNhdGlv
bklETWFwLmJlZ2luKCk7IGl0ICE9IGl0RW5kOyArK2l0KQorICAgICAgICBbbm90aWZpY2F0aW9u
SURzIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6aXQtPmZp
cnN0XV07CisgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBjbGVhck5vdGlm
aWNhdGlvbnM6bm90aWZpY2F0aW9uSURzXTsKKyAgICBbbV93ZWJWaWV3IF9ub3RpZmljYXRpb25D
b250cm9sbGVyRGVzdHJveWVkXTsKKyNlbmRpZgogICAgIGRlbGV0ZSB0aGlzOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYk5vdGlmaWNhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJOb3RpZmljYXRpb24uaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jMDRi
MmFkMDcyZTRjZjE0MzJkODEwMzg0YmIyZmU0OTlmMmEyZDdjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJOb3RpZmljYXRpb24uaApAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5h
bWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisg
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK0BjbGFzcyBXZWJOb3RpZmljYXRpb25Qcml2YXRlOworQGNsYXNzIFdl
YlNlY3VyaXR5T3JpZ2luOworCitAaW50ZXJmYWNlIFdlYk5vdGlmaWNhdGlvbiA6IE5TT2JqZWN0
Cit7CisgICAgV2ViTm90aWZpY2F0aW9uUHJpdmF0ZSAqX3ByaXZhdGU7Cit9CisKKy0gKE5TU3Ry
aW5nICopdGl0bGU7CistIChOU1N0cmluZyAqKWJvZHk7CistIChXZWJTZWN1cml0eU9yaWdpbiAq
KW9yaWdpbjsKKy0gKHVpbnQ2NF90KW5vdGlmaWNhdGlvbklEOworCistICh2b2lkKWRpc3BhdGNo
U2hvd0V2ZW50OworLSAodm9pZClkaXNwYXRjaENsb3NlRXZlbnQ7CistICh2b2lkKWRpc3BhdGNo
Q2xpY2tFdmVudDsKKy0gKHZvaWQpZGlzcGF0Y2hFcnJvckV2ZW50OworCitAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYk5vdGlmaWNhdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyNDcw
MDhhNzI3MmU4MmZkZjc2YjM2NDg2ZTBjZDQwMTU2NDMwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYk5vdGlmaWNhdGlvbi5tbQpAQCAtMCwwICsxLDEz
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJXZWJOb3RpZmljYXRpb24uaCIKKworI2ltcG9ydCAi
V2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50
ZXJuYWwuaCIKKyNpbXBvcnQgPFdlYkNvcmUvTm90aWZpY2F0aW9uLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaD4KKyNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW1wb3J0IDx3dGYvUmVmUHRyLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCitP
QkpDX0NMQVNTIFdlYk5vdGlmaWNhdGlvbkludGVybmFsOworCitAaW50ZXJmYWNlIFdlYk5vdGlm
aWNhdGlvblByaXZhdGUgOiBOU09iamVjdAoreworQHB1YmxpYworICAgIFdlYk5vdGlmaWNhdGlv
bkludGVybmFsICpfaW50ZXJuYWw7CisgICAgdWludDY0X3QgX25vdGlmaWNhdGlvbklEOworfQor
QGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViTm90aWZpY2F0aW9uUHJpdmF0ZQorQGVuZAorCisj
aWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitAaW1wbGVtZW50YXRpb24gV2ViTm90aWZpY2F0aW9u
IChXZWJOb3RpZmljYXRpb25JbnRlcm5hbCkKK05vdGlmaWNhdGlvbiogY29yZShXZWJOb3RpZmlj
YXRpb24gKm5vdGlmaWNhdGlvbikKK3sKKyAgICBpZiAoIW5vdGlmaWNhdGlvbi0+X3ByaXZhdGUp
CisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PE5vdGlmaWNh
dGlvbio+KG5vdGlmaWNhdGlvbi0+X3ByaXZhdGUtPl9pbnRlcm5hbCk7Cit9CisKKy0gKGlkKWlu
aXRXaXRoQ29yZU5vdGlmaWNhdGlvbjooTm90aWZpY2F0aW9uKiljb3JlTm90aWZpY2F0aW9uIG5v
dGlmaWNhdGlvbklEOih1aW50NjRfdClub3RpZmljYXRpb25JRAoreworICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIGNvcmVOb3RpZmljYXRp
b24tPnJlZigpOworICAgIF9wcml2YXRlID0gW1tXZWJOb3RpZmljYXRpb25Qcml2YXRlIGFsbG9j
XSBpbml0XTsKKyAgICBfcHJpdmF0ZS0+X2ludGVybmFsID0gcmVpbnRlcnByZXRfY2FzdDxXZWJO
b3RpZmljYXRpb25JbnRlcm5hbCo+KGNvcmVOb3RpZmljYXRpb24pOworICAgIF9wcml2YXRlLT5f
bm90aWZpY2F0aW9uSUQgPSBub3RpZmljYXRpb25JRDsKKyAgICByZXR1cm4gc2VsZjsKK30KK0Bl
bmQKKyNlbmRpZgorCitAaW1wbGVtZW50YXRpb24gV2ViTm90aWZpY2F0aW9uCistIChpZClpbml0
Cit7CisgICAgcmV0dXJuIG5pbDsKK30KKworLSAodm9pZClkZWFsbG9jCit7CisgICAgTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24gPSBjb3JlKHNlbGYpOworICAgIGlmIChub3RpZmljYXRpb24p
CisgICAgICAgIG5vdGlmaWNhdGlvbi0+ZGVyZWYoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsK
K30KKworLSAoTlNTdHJpbmcgKil0aXRsZQoreworICAgIEFTU0VSVChjb3JlKHNlbGYpKTsKKyAg
ICByZXR1cm4gY29yZShzZWxmKS0+Y29udGVudHMoKS50aXRsZTsKK30KKworLSAoTlNTdHJpbmcg
Kilib2R5Cit7CisgICAgQVNTRVJUKGNvcmUoc2VsZikpOworICAgIHJldHVybiBjb3JlKHNlbGYp
LT5jb250ZW50cygpLmJvZHk7Cit9CisKKy0gKFdlYlNlY3VyaXR5T3JpZ2luICopb3JpZ2luCit7
CisgICAgQVNTRVJUKGNvcmUoc2VsZikpOworICAgIHJldHVybiBbW1tXZWJTZWN1cml0eU9yaWdp
biBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOmNvcmUoc2VsZiktPnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKV0gYXV0b3JlbGVhc2VdOworfQor
CistICh1aW50NjRfdClub3RpZmljYXRpb25JRAoreworICAgIEFTU0VSVChjb3JlKHNlbGYpKTsK
KyAgICByZXR1cm4gX3ByaXZhdGUtPl9ub3RpZmljYXRpb25JRDsKK30KKworLSAodm9pZClkaXNw
YXRjaFNob3dFdmVudAoreworICAgIEFTU0VSVChjb3JlKHNlbGYpKTsKKyAgICBjb3JlKHNlbGYp
LT5kaXNwYXRjaFNob3dFdmVudCgpOworfQorCistICh2b2lkKWRpc3BhdGNoQ2xvc2VFdmVudAor
eworICAgIEFTU0VSVChjb3JlKHNlbGYpKTsKKyAgICBjb3JlKHNlbGYpLT5kaXNwYXRjaENsb3Nl
RXZlbnQoKTsKK30KKworLSAodm9pZClkaXNwYXRjaENsaWNrRXZlbnQKK3sKKyAgICBBU1NFUlQo
Y29yZShzZWxmKSk7CisgICAgY29yZShzZWxmKS0+ZGlzcGF0Y2hDbGlja0V2ZW50KCk7Cit9CisK
Ky0gKHZvaWQpZGlzcGF0Y2hFcnJvckV2ZW50Cit7CisgICAgQVNTRVJUKGNvcmUoc2VsZikpOwor
ICAgIGNvcmUoc2VsZiktPmRpc3BhdGNoRXJyb3JFdmVudCgpOworfQorCitAZW5kCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYk5vdGlmaWNhdGlvbkludGVybmFsLmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYk5vdGlmaWNhdGlvbkludGVybmFsLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYjYyNDA2OWQ5ZWNhZjZjY2IwYmExZGJjOTRmMjA1MjA1OGQ5ZTlhZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uSW50
ZXJuYWwuaApAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIldlYk5vdGlmaWNh
dGlvbi5oIgorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKK2NsYXNzIE5vdGlmaWNhdGlvbjsKK30KKworV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiBjb3Jl
KFdlYk5vdGlmaWNhdGlvbiAqKTsKKworQGludGVyZmFjZSBXZWJOb3RpZmljYXRpb24gKFdlYk5v
dGlmaWNhdGlvbkludGVybmFsKQorLSAoaWQpaW5pdFdpdGhDb3JlTm90aWZpY2F0aW9uOihXZWJD
b3JlOjpOb3RpZmljYXRpb24qKWNvcmVOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uSUQ6KHVpbnQ2
NF90KW5vdGlmaWNhdGlvbklEOworQGVuZAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViVmlldy5tbQppbmRleCA0ZGY3NzU4ZDAyZTE2YmNhOGM1YzVjZDg1MzNiMTBlMDc0Y2ExODM1
Li44MjFhYjliNmRkNGNkZjZkNWRlYWQxNWE1MjRhNzEwYTFiNmQxMjExIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUtMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRGF2aWQgU21pdGgg
KGNhdGZpc2gubWFuQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5M
CiAgKgpAQCAtNjQwMSw2ICs2NDAxLDQzIEBAIHN0YXRpYyB2b2lkIGdsaWJDb250ZXh0SXRlcmF0
aW9uQ2FsbGJhY2soQ0ZSdW5Mb29wT2JzZXJ2ZXJSZWYsIENGUnVuTG9vcEFjdGl2aXR5CiAKIEBl
bmQKIAorQGltcGxlbWVudGF0aW9uIFdlYlZpZXcgKFdlYlZpZXdOb3RpZmljYXRpb24pCistICh2
b2lkKV9zZXROb3RpZmljYXRpb25Qcm92aWRlcjooaWQ8V2ViTm90aWZpY2F0aW9uUHJvdmlkZXI+
KW5vdGlmaWNhdGlvblByb3ZpZGVyCit7CisgICAgaWYgKF9wcml2YXRlKSB7CisgICAgICAgIF9w
cml2YXRlLT5fbm90aWZpY2F0aW9uUHJvdmlkZXIgPSBub3RpZmljYXRpb25Qcm92aWRlcjsKKyAg
ICAgICAgW19wcml2YXRlLT5fbm90aWZpY2F0aW9uUHJvdmlkZXIgcmVnaXN0ZXJXZWJWaWV3OnNl
bGZdOworICAgIH0KK30KKworLSAodm9pZClfbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3ll
ZAoreworICAgIFtbc2VsZiBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIHVucmVnaXN0ZXJXZWJWaWV3
OnNlbGZdOworfQorCistIChpZDxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4pX25vdGlmaWNhdGlv
blByb3ZpZGVyCit7CisgICAgaWYgKF9wcml2YXRlKQorICAgICAgICByZXR1cm4gX3ByaXZhdGUt
Pl9ub3RpZmljYXRpb25Qcm92aWRlcjsKKyAgICByZXR1cm4gbmlsOworfQorCistICh2b2lkKV9u
b3RpZmljYXRpb25EaWRTaG93Oih1aW50NjRfdClub3RpZmljYXRpb25JRAoreworICAgIFtbc2Vs
ZiBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIHdlYlZpZXc6c2VsZiBkaWRTaG93Tm90aWZpY2F0aW9u
Om5vdGlmaWNhdGlvbklEXTsKK30KKworLSAodm9pZClfbm90aWZpY2F0aW9uRGlkQ2xpY2s6KHVp
bnQ2NF90KW5vdGlmaWNhdGlvbklECit7CisgICAgW1tzZWxmIF9ub3RpZmljYXRpb25Qcm92aWRl
cl0gd2ViVmlldzpzZWxmIGRpZENsaWNrTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbklEXTsKK30K
KworLSAodm9pZClfbm90aWZpY2F0aW9uc0RpZENsb3NlOihOU0FycmF5ICopbm90aWZpY2F0aW9u
SURzCit7CisgICAgW1tzZWxmIF9ub3RpZmljYXRpb25Qcm92aWRlcl0gd2ViVmlldzpzZWxmIGRp
ZENsb3NlTm90aWZpY2F0aW9uczpub3RpZmljYXRpb25JRHNdOworfQorQGVuZAorCiBAaW1wbGVt
ZW50YXRpb24gV2ViVmlldyAoV2ViVmlld1ByaXZhdGVTdHlsZUluZm8pCiAKIC0gKEpTVmFsdWVS
ZWYpX2NvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5mbzooSlNDb250ZXh0UmVmKWNvbnRl
eHQgZm9yRWxlbWVudDooSlNWYWx1ZVJlZil2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3RGF0YS5oCmluZGV4IDY2NWNiOTE3NWQ4NmE5ZTE3MjlmOTIxNDhmZWIyYjlmNmU3MzM2
ZTkuLmVhMmJmY2Y2MDc0ZTlhNTExYzNjM2VhZTJkYjRmZjVlNWVjM2M0ZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXdEYXRhLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgSWdhbGlhIFMuTAogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNTAsNiArNTAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBAcHJvdG9jb2wgV2ViRm9ybURlbGVnYXRlOwogQHByb3RvY29s
IFdlYkRldmljZU9yaWVudGF0aW9uUHJvdmlkZXI7CiBAcHJvdG9jb2wgV2ViR2VvbG9jYXRpb25Q
cm92aWRlcjsKK0Bwcm90b2NvbCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjsKICNpZiBFTkFCTEUo
VklERU8pCiBAY2xhc3MgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlcjsKICNlbmRpZgpAQCAt
MTkxLDYgKzE5Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBpZDxXZWJHZW9sb2NhdGlvblBy
b3ZpZGVyPiBfZ2VvbG9jYXRpb25Qcm92aWRlcjsKICAgICBpZDxXZWJEZXZpY2VPcmllbnRhdGlv
blByb3ZpZGVyPiBtX2RldmljZU9yaWVudGF0aW9uUHJvdmlkZXI7CisgICAgaWQ8V2ViTm90aWZp
Y2F0aW9uUHJvdmlkZXI+IF9ub3RpZmljYXRpb25Qcm92aWRlcjsKIAogICAgIFJlZlB0cjxXZWJD
b3JlOjpIaXN0b3J5SXRlbT4gX2dsb2JhbEhpc3RvcnlJdGVtOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKaW5kZXggY2Q5MmYzMWU1Nzg5YTQwYmEyZTVmYjc0
ZDVlNDM2NzA2ZjMyOWJlOC4uZTBmZWU4MWQxZjMxYzhkNDkxNjNhZDI4ODQyNjNkNTdhY2Y3ODA2
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1
LTIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zOSw4ICszOSwxMCBAQAogQGNsYXNzIFdlYkRldmljZU9yaWVudGF0
aW9uOwogQGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247CiBAY2xhc3MgV2ViSW5zcGVjdG9y
OworQGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIEBjbGFzcyBXZWJQcmVmZXJlbmNlczsKIEBjbGFz
cyBXZWJTY3JpcHRXb3JsZDsKK0BjbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKIEBjbGFzcyBXZWJU
ZXh0SXRlcmF0b3I7CiAKIEBwcm90b2NvbCBXZWJEZXZpY2VPcmllbnRhdGlvblByb3ZpZGVyOwpA
QCAtMTA0LDYgKzEwNiwxMyBAQCB0eXBlZGVmIGVudW0gewogICAgIFdlYlBhZ2luYXRpb25Nb2Rl
VmVydGljYWwsCiB9IFdlYlBhZ2luYXRpb25Nb2RlOwogCisvLyBUaGlzIG5lZWRzIHRvIGJlIGlu
IHN5bmMgd2l0aCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Npb24KK3R5
cGVkZWYgZW51bSB7CisgICAgV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbkFsbG93ZWQsCisgICAg
V2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbk5vdEFsbG93ZWQsCisgICAgV2ViTm90aWZpY2F0aW9u
UGVybWlzc2lvbkRlbmllZAorfSBXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uOworCiBAaW50ZXJm
YWNlIFdlYkNvbnRyb2xsZXIgOiBOU1RyZWVDb250cm9sbGVyIHsKICAgICBJQk91dGxldCBXZWJW
aWV3ICp3ZWJWaWV3OwogfQpAQCAtNzAxLDYgKzcxMCwyMSBAQCBDb3VsZCBiZSB3b3J0aCBhZGRp
bmcgdG8gdGhlIEFQSS4KIC0gKFdlYkdlb2xvY2F0aW9uUG9zaXRpb24gKilsYXN0UG9zaXRpb247
CiBAZW5kCiAKK0Bwcm90b2NvbCBXZWJOb3RpZmljYXRpb25Qcm92aWRlcgorLSAodm9pZClyZWdp
c3RlcldlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3OworLSAodm9pZCl1bnJlZ2lzdGVyV2ViVmll
dzooV2ViVmlldyAqKXdlYlZpZXc7CisKKy0gKHZvaWQpc2hvd05vdGlmaWNhdGlvbjooV2ViTm90
aWZpY2F0aW9uICopbm90aWZpY2F0aW9uIGZyb21XZWJWaWV3OihXZWJWaWV3ICopd2ViVmlldzsK
Ky0gKHZvaWQpY2FuY2VsTm90aWZpY2F0aW9uOihXZWJOb3RpZmljYXRpb24gKilub3RpZmljYXRp
b247CistICh2b2lkKW5vdGlmaWNhdGlvbkRlc3Ryb3llZDooV2ViTm90aWZpY2F0aW9uICopbm90
aWZpY2F0aW9uOworLSAodm9pZCljbGVhck5vdGlmaWNhdGlvbnM6KE5TQXJyYXkgKilub3RpZmlj
YXRpb25JRHM7CistIChXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uKXBvbGljeUZvck9yaWdpbjoo
V2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW47CisKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAq
KXdlYlZpZXcgZGlkU2hvd05vdGlmaWNhdGlvbjoodWludDY0X3Qpbm90aWZpY2F0aW9uSUQ7Cist
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZENsaWNrTm90aWZpY2F0aW9uOih1
aW50NjRfdClub3RpZmljYXRpb25JRDsKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZp
ZXcgZGlkQ2xvc2VOb3RpZmljYXRpb25zOihOU0FycmF5ICopbm90aWZpY2F0aW9uSURzOworQGVu
ZAorCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdHZW9sb2NhdGlvbikKIC0gKHZvaWQpX3Nl
dEdlb2xvY2F0aW9uUHJvdmlkZXI6KGlkPFdlYkdlb2xvY2F0aW9uUHJvdmlkZXI+KWxvY2F0aW9u
UHJvdmlkZXI7CiAtIChpZDxXZWJHZW9sb2NhdGlvblByb3ZpZGVyPilfZ2VvbG9jYXRpb25Qcm92
aWRlcjsKQEAgLTcwOSw2ICs3MzMsMTYgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBB
UEkuCiAtICh2b2lkKV9nZW9sb2NhdGlvbkRpZEZhaWxXaXRoRXJyb3I6KE5TRXJyb3IgKillcnJv
cjsKIEBlbmQKIAorQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3Tm90aWZpY2F0aW9uKQorLSAo
dm9pZClfc2V0Tm90aWZpY2F0aW9uUHJvdmlkZXI6KGlkPFdlYk5vdGlmaWNhdGlvblByb3ZpZGVy
Pilub3RpZmljYXRpb25Qcm92aWRlcjsKKy0gKGlkPFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyPilf
bm90aWZpY2F0aW9uUHJvdmlkZXI7CistICh2b2lkKV9ub3RpZmljYXRpb25Db250cm9sbGVyRGVz
dHJveWVkOworCistICh2b2lkKV9ub3RpZmljYXRpb25EaWRTaG93Oih1aW50NjRfdClub3RpZmlj
YXRpb25JRDsKKy0gKHZvaWQpX25vdGlmaWNhdGlvbkRpZENsaWNrOih1aW50NjRfdClub3RpZmlj
YXRpb25JRDsKKy0gKHZvaWQpX25vdGlmaWNhdGlvbnNEaWRDbG9zZTooTlNBcnJheSAqKW5vdGlm
aWNhdGlvbklEczsKK0BlbmQKKwogQGludGVyZmFjZSBXZWJWaWV3IChXZWJWaWV3UHJpdmF0ZVN0
eWxlSW5mbykKIC0gKEpTVmFsdWVSZWYpX2NvbXB1dGVkU3R5bGVJbmNsdWRpbmdWaXNpdGVkSW5m
bzooSlNDb250ZXh0UmVmKWNvbnRleHQgZm9yRWxlbWVudDooSlNWYWx1ZVJlZil2YWx1ZTsKIEBl
bmQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128042</attachid>
            <date>2012-02-21 14:10:32 -0800</date>
            <delta_ts>2012-02-21 14:25:19 -0800</delta_ts>
            <desc>Bring notifications support to WK1 mac: showing, canceling, removing notifications</desc>
            <filename>bug-78783-20120221141123.patch</filename>
            <type>text/plain</type>
            <size>31203</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ0ZTMxNDIyOTkyNWE4YThh
OTc5YTIwMjI3Yjc4NWMxOTA4ZmNlMDEuLjBjNDU4OTVmOGVkMzVjOTQxN2I5NGM3ZDVlNzFjZTY3
M2IyMTA5NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMjEgIEpvbiBMZWUg
IDxqb25sZWVAYXBwbGUuY29tPgorCisgICAgICAgIEJyaW5nIG5vdGlmaWNhdGlvbnMgc3VwcG9y
dCB0byBXSzEgbWFjOiBzaG93aW5nLCBjYW5jZWxpbmcsIHJlbW92aW5nIG5vdGlmaWNhdGlvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NzgzCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDYxMDU3OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOiBBZGRlZCBuZXcgZmlsZXMuCisKIDIwMTItMDItMTYgIExlbyBZYW5nICA8bGVvLnlhbmdA
dG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBBZGFwdCB0byB0aGUg
cmVtb3ZhbCBvZiBXZWJTdHJpbmdJbWwuaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDVmMGQ3MmU5ZjVh
YTAzNjE3ZDc2MGFhNDU1MzdkYjI5OWY0MmQxNzYuLmRkYmRjZjczNjU0MjNmMmQ0MDAwNzY1NGQw
YWFjZWM1YmQ5MGZlZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MiBAQAorMjAxMi0w
Mi0yMSAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CisKKyAgICAgICAgQnJpbmcgbm90aWZp
Y2F0aW9ucyBzdXBwb3J0IHRvIFdLMSBtYWM6IHNob3dpbmcsIGNhbmNlbGluZywgcmVtb3Zpbmcg
bm90aWZpY2F0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzg3ODMKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNjEwNTc4PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbToKKyAg
ICAgICAgKGdlbmVyYXRlTm90aWZpY2F0aW9uSUQpOgorICAgICAgICAoV2ViTm90aWZpY2F0aW9u
Q2xpZW50OjpzaG93KToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2FuY2VsKToK
KyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6Y2xlYXJOb3RpZmljYXRpb25zKToKKyAg
ICAgICAgKFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0RGVzdHJveWVk
KToKKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uQ29udHJvbGxl
ckRlc3Ryb3llZCk6CisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNoZWNrUGVybWlz
c2lvbik6CisKKyAgICAgICAgQ3JlYXRlIGEgV2ViS2l0IHdyYXBwZXIgb2JqZWN0IGZvciBXZWJD
b3JlOjpOb3RpZmljYXRpb24sIHdoaWNoIGFsc28ga2VlcHMgdHJhY2sgb2YgYW4gYXNzaWduZWQK
KyAgICAgICAgSUQuCisgICAgICAgICogV2ViVmlldy9XZWJOb3RpZmljYXRpb24uaDogQWRkZWQu
CisgICAgICAgIChXZWJTZWN1cml0eU9yaWdpbik6CisgICAgICAgICogV2ViVmlldy9XZWJOb3Rp
ZmljYXRpb24ubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChjb3JlKToK
KyAgICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGluaXRXaXRoQ29yZU5vdGlmaWNhdGlvbjpub3Rp
ZmljYXRpb25JRDpdKToKKyAgICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGluaXRdKToKKyAgICAg
ICAgKC1bV2ViTm90aWZpY2F0aW9uIHRpdGxlXSk6CisgICAgICAgICgtW1dlYk5vdGlmaWNhdGlv
biBib2R5XSk6CisgICAgICAgICgtW1dlYk5vdGlmaWNhdGlvbiBvcmlnaW5dKToKKyAgICAgICAg
KC1bV2ViTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklEXSk6CisgICAgICAgICgtW1dlYk5vdGlm
aWNhdGlvbiBkaXNwYXRjaFNob3dFdmVudF0pOgorICAgICAgICAoLVtXZWJOb3RpZmljYXRpb24g
ZGlzcGF0Y2hDbG9zZUV2ZW50XSk6CisgICAgICAgICgtW1dlYk5vdGlmaWNhdGlvbiBkaXNwYXRj
aENsaWNrRXZlbnRdKToKKyAgICAgICAgKC1bV2ViTm90aWZpY2F0aW9uIGRpc3BhdGNoRXJyb3JF
dmVudF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViTm90aWZpY2F0aW9uSW50ZXJuYWwuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKTogSW50ZXJuYWwgY2F0ZWdvcnkgdG8gYWxsb3cgY3JlYXRp
bmcgaW5zdGFuY2VzIHdpdGggV2ViQ29yZSBvYmplY3RzLgorCisgICAgICAgIEV4dGVuZCBXZWJW
aWV3IHRvIGluY2x1ZGUgYSBXZWJOb3RpZmljYXRpb25Qcm92aWRlciwgd2hpY2ggY2xpZW50cyBp
bXBsZW1lbnQuCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3RGF0YS5oOiBBZGQgYSBwcml2YXRl
IG1lbWJlciBmb3IgdGhlIHByb3ZpZGVyLgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlld1ByaXZh
dGUuaDoKKyAgICAgICAgICAgICogRGVmaW5lIGFuIGVudW0gV2ViTm90aWZpY2F0aW9uUGVybWlz
c2lvbiB0aGF0IG1pcnJvcnMgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyOjpQZXJtaXNz
aW9uCisgICAgICAgICAgICB0aGF0IGNsaWVudCB3aGljaCBpbXBsZW1lbnQgdGhlIHByb3ZpZGVy
IGNhbiB1c2UgdG8gcmV0dXJuIHBvbGljeSBkZWNpc2lvbnMuCisgICAgICAgICAgICAqIERlZmlu
ZSBXZWJOb3RpZmljYXRpb25Qcm92aWRlci4KKyAgICAgICAgICAgICogQ2F0ZWdvcnkgV2ViVmll
d05vdGlmaWNhdGlvbiBleHRlbmRzIFdlYlZpZXcgd2l0aCBtZXRob2RzIHRoYXQgc2V0IGFuZCBt
YW5hZ2VyIHRoZQorICAgICAgICAgICAgbm90aWZpY2F0aW9uIHByb3ZpZGVyLCBhbmQgaGFuZGxl
IGV2ZW50cyBmcm9tIHRoZSBwbGF0Zm9ybSBub3RpZmljYXRpb25zLgorICAgICAgICAqIFdlYlZp
ZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfc2V0Tm90aWZpY2F0aW9uUHJvdmlk
ZXI6XSk6IFNldHMgdGhlIHByb3ZpZGVyIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBXZWJWaWV3LCBh
bmQgcmVnaXN0ZXJzCisgICAgICAgIHRoZSB2aWV3IGFzIGEgY2xpZW50IG9mIHRoZSBwcm92aWRl
ci4KKyAgICAgICAgKC1bV2ViVmlldyBfbm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZF0p
OiBXaGVuIHRoZSBjb250cm9sbGVyIGlzIGRlc3Ryb3llZCwgdW5yZWdpc3RlciB0aGUgdmlldy4K
KyAgICAgICAgKC1bV2ViVmlldyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdKToKKyAgICAgICAgKC1b
V2ViVmlldyBfbm90aWZpY2F0aW9uRGlkU2hvdzpdKToKKyAgICAgICAgKC1bV2ViVmlldyBfbm90
aWZpY2F0aW9uRGlkQ2xpY2s6XSk6CisgICAgICAgICgtW1dlYlZpZXcgX25vdGlmaWNhdGlvbnNE
aWRDbG9zZTpdKToKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNs
aWVudC5oOiBBZGQgdmFyaWFibGVzIHRoYXQgbWFwIGJldHdlZW4gV2ViQ29yZTo6Tm90aWZpY2F0
aW9uCisgICAgICAgIGluc3RhbmNlcywgdGhlaXIgYXNzaWduZWQgSURzLCB0aGVpciBjb250ZXh0
cywgYW5kIGNvcnJlc3BvbmRpbmcgV2ViS2l0IHdyYXBwZXIgb2JqZWN0cy4KKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW06CisgICAgICAgIChnZW5lcmF0
ZU5vdGlmaWNhdGlvbklEKTogQ3JlYXRlZCB1bmlxdWUgSURzIGZvciBlYWNoIHNob3duIG5vdGlm
aWNhdGlvbi4KKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hvdyk6IENyZWF0ZSB3
cmFwcGVyIG9iamVjdCBmb3Igbm90aWZpY2F0aW9uLCBhc3NpZ24gSUQsIGNhY2hlIHRoZQorICAg
ICAgICBtYXBwaW5ncyBiZXR3ZWVuIHRoZSBvYmplY3RzLCBhbmQgZm9yd2FyZCBpdCB0byB0aGUg
cHJvdmlkZXIuCisgICAgICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNhbmNlbCk6CisgICAg
ICAgIChXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNsZWFyTm90aWZpY2F0aW9ucyk6IENsZWFyIGFs
bCBub3RpZmljYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgICAgICAgcHJvdmlkZWQgY29u
dGV4dC4KKyAgICAgICAgKFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uT2JqZWN0
RGVzdHJveWVkKTogUmVtb3ZlIHRoZSBub3RpZmljYXRpb24gZnJvbSB0aGUgbWFwcy4KKyAgICAg
ICAgKFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3ll
ZCk6IEZvcndhcmQgdGhlIGNhbGwgdG8gdGhlIHdlYiB2aWV3LCBzbyB0aGF0IGl0CisgICAgICAg
IGNhbiBiZSByZW1vdmVkIGFzIGEgY2xpZW50IG9mIHRoZSBwcm92aWRlci4KKwogMjAxMi0wMi0x
NiAgSm9uIExlZSAgPGpvbmxlZUBhcHBsZS5jb20+CiAKICAgICAgICAgKFByZXAgd29yayBmb3Ip
IEJyaW5nIG5vdGlmaWNhdGlvbnMgc3VwcG9ydCB0byBXSzEgbWFjCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNmNkZjRjMDA3NWIxNTAx
YmFjNWU4ZWFkZDc4ZjNhMmI2Mzk0ZDFhLi5jOGRlNzU1YjZjZDYyNmMxMTg0MTU3YmYwYTMyODUy
Y2YxMjQxY2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTc0LDYgKzc0LDkgQEAKIAkJMjI2RTlFNkIwOUQwQUE4MjAwRjNBMkJDIC8q
IFdlYk5ldHNjYXBlRGVwcmVjYXRlZEZ1bmN0aW9ucy5jIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjI2RTlFNjkwOUQwQUE4MjAwRjNBMkJDIC8qIFdlYk5l
dHNjYXBlRGVwcmVjYXRlZEZ1bmN0aW9ucy5jICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFH
UyA9ICItV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIjsgfTsgfTsKIAkJMjJGMjE5Q0MwOEQy
MzY3MzAwMzBFMDc4IC8qIFdlYkJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDIyRjIxOUNCMDhEMjM2NzMwMDMwRTA3
OCAvKiBXZWJCYWNrRm9yd2FyZExpc3RQcml2YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMjlBRUY5NjAxMzRDNzZGQjAwRkU1MDk2IC8qIE91
dGxvb2tRdWlya3NVc2VyU2NyaXB0LmpzIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOUFFRjk1RDEzNEM3NTU0MDBGRTUwOTYgLyogT3V0bG9va1F1aXJr
c1VzZXJTY3JpcHQuanMgKi87IH07CisJCTMxMkUyRkU1MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJO
b3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDMxMkUyRkUzMTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRpb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkzMTJFMkZFNjE0RTQ4
MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyRTJGRTQxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5v
dGlmaWNhdGlvbi5tbSAqLzsgfTsKKwkJMzEyRTJGRTkxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5v
dGlmaWNhdGlvbkludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAzMTJFMkZFODE0RTQ4MjE1MDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uSW50
ZXJuYWwuaCAqLzsgfTsKIAkJMzFDMTFBNkUxNDc2NTUyRTAwNDlBNENDIC8qIFdlYk5vdGlmaWNh
dGlvbkNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMzFDMTFBNkMxNDc2NTUyRTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5oICov
OyB9OwogCQkzMUMxMUE2RjE0NzY1NTJFMDA0OUE0Q0MgLyogV2ViTm90aWZpY2F0aW9uQ2xpZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzFDMTFB
NkQxNDc2NTUyRTAwNDlBNENDIC8qIFdlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSAqLzsgfTsKIAkJ
MzdCNkZCNEUxMDYzNTMwQzAwMEZEQjNCIC8qIFdlYlBERkRvY3VtZW50RXh0cmFzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzN0I2RkI0QzEwNjM1MzBD
MDAwRkRCM0IgLyogV2ViUERGRG9jdW1lbnRFeHRyYXMuaCAqLzsgfTsKQEAgLTQ1Niw2ICs0NTks
OSBAQAogCQkyRDM2RkQ1RTAzRjc4RjlFMDBBODAxNjYgLyogV2ViRm9ybURlbGVnYXRlUHJpdmF0
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkZvcm1EZWxlZ2F0ZVByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGgg
PSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTJEODFEQUIyMDNFQjBCMkQwMEE4MDE2NiAvKiBXZWJG
b3JtRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViRm9ybURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQkyRDgxREFCMzAzRUIwQjJEMDBBODAxNjYgLyog
V2ViRm9ybURlbGVnYXRlLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMub2JqYzsgcGF0aCA9IFdlYkZvcm1EZWxlZ2F0ZS5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJMzEyRTJGRTMxNEU0ODE4MjAwN0ND
QTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJOb3RpZmljYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRTJG
RTQxNEU0ODE4MjAwN0NDQTE4IC8qIFdlYk5vdGlmaWNhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYk5vdGlmaWNhdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMzEyRTJGRTgxNEU0ODIxNTAwN0NDQTE4IC8qIFdlYk5vdGlmaWNh
dGlvbkludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYk5vdGlm
aWNhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxQzExQTZD
MTQ3NjU1MkUwMDQ5QTRDQyAvKiBXZWJOb3RpZmljYXRpb25DbGllbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViTm90aWZpY2F0aW9uQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTMxQzExQTZEMTQ3NjU1MkUwMDQ5QTRDQyAvKiBXZWJOb3RpZmlj
YXRpb25DbGllbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJOb3RpZmljYXRpb25DbGllbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTM1
MDgxRDkyMDJCNkQ0RDgwQUNBMkFDQSAvKiBXZWJIVE1MUmVwcmVzZW50YXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgcGF0aCA9IFdlYkhUTUxSZXByZXNl
bnRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKQEAgLTEyMzksNiArMTI0NSw5IEBACiAJCQkJRjgzNEFBRDYwRTY0QjFDNzAwRTI3
MzdDIC8qIFdlYlRleHRJdGVyYXRvci5tbSAqLywKIAkJCQk1MTVFMjdDQzA0NThDODY1MDBDQTJE
M0EgLyogV2ViVUlEZWxlZ2F0ZS5oICovLAogCQkJCTY1QTdENDRBMDU2OEFCMjYwMEU3MEVGNiAv
KiBXZWJVSURlbGVnYXRlUHJpdmF0ZS5oICovLAorCQkJCTMxMkUyRkUzMTRFNDgxODIwMDdDQ0Ex
OCAvKiBXZWJOb3RpZmljYXRpb24uaCAqLywKKwkJCQkzMTJFMkZFNDE0RTQ4MTgyMDA3Q0NBMTgg
LyogV2ViTm90aWZpY2F0aW9uLm1tICovLAorCQkJCTMxMkUyRkU4MTRFNDgyMTUwMDdDQ0ExOCAv
KiBXZWJOb3RpZmljYXRpb25JbnRlcm5hbC5oICovLAogCQkJCTUxQThCNTc5MDQyODM0RjcwMENB
MkQzQSAvKiBXZWJWaWV3LmggKi8sCiAJCQkJNTFBOEI1N0EwNDI4MzRGNzAwQ0EyRDNBIC8qIFdl
YlZpZXcubW0gKi8sCiAJCQkJQkMyRTQ2NEIwRkQ4QTk2ODAwQTlEOURFIC8qIFdlYlZpZXdEYXRh
LmggKi8sCkBAIC0xNjMyLDYgKzE2NDEsOCBAQAogCQkJCTkzOTgxMDlCMDgyNEJGMDEwMDhERjAz
OCAvKiBXZWJWaWV3SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOTgxMDcxMDgyNEJG
MDEwMDhERjAzOCAvKiBXZWJWaWV3UHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGNDQ4
NEYxMDMzOEU4QzAwMzBFNTVFIC8qIFdlYldvcmtlcnNQcml2YXRlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkzMTJFMkZFNTE0RTQ4MTgyMDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkzMTJFMkZFOTE0RTQ4MjE1MDA3Q0NBMTggLyogV2ViTm90aWZpY2F0aW9u
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjAxOCw2ICsyMDI5LDcgQEAKIAkJCQk5Mzk4
MTEwNzA4MjRCRjAxMDA4REYwMzggLyogV2ViVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJD
MkU0NjRFMEZEOEE5NjgwMEE5RDlERSAvKiBXZWJWaWV3RGF0YS5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTQxRjQ0ODUwMTAzMzhFOEMwMDMwRTU1RSAvKiBXZWJXb3JrZXJzUHJpdmF0ZS5tbSBpbiBT
b3VyY2VzICovLAorCQkJCTMxMkUyRkU2MTRFNDgxODIwMDdDQ0ExOCAvKiBXZWJOb3RpZmljYXRp
b24ubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKaW5kZXggODI5MDNjYTU5MzhlZjY1
YWM0ODY2MmUxYWMwNTQ2Y2I0YmY2OTFiZS4uN2NmNGU0MDdjYTBmNjU2ZjMyODgwZjg3N2U1ZjIw
OTEwYmUxMmI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1
cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDExICsyNSwxNyBAQAogCiAjaW1wb3J0
IDxXZWJDb3JlL05vdGlmaWNhdGlvblByZXNlbnRlci5oPgogCisjaW1wb3J0IDxXZWJDb3JlL05v
dGlmaWNhdGlvbi5oPgorI2ltcG9ydCA8d3RmL0hhc2hNYXAuaD4KKyNpbXBvcnQgPHd0Zi9SZWZQ
dHIuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIGNsYXNzIFZvaWRDYWxsYmFjazsKIH0KIAor
QGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIEBjbGFzcyBXZWJWaWV3OwogCiBjbGFzcyBXZWJOb3Rp
ZmljYXRpb25DbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6Tm90aWZpY2F0aW9uUHJlc2VudGVyIHsK
QEAgLTQwLDYgKzQ2LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc2hv
dyhXZWJDb3JlOjpOb3RpZmljYXRpb24qKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgY2Fu
Y2VsKFdlYkNvcmU6Ok5vdGlmaWNhdGlvbiopIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBj
bGVhck5vdGlmaWNhdGlvbnMoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopIE9WRVJS
SURFOwogICAgIHZpcnR1YWwgdm9pZCBub3RpZmljYXRpb25PYmplY3REZXN0cm95ZWQoV2ViQ29y
ZTo6Tm90aWZpY2F0aW9uKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmaWNhdGlv
bkNvbnRyb2xsZXJEZXN0cm95ZWQoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVz
dFBlcm1pc3Npb24oV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8
V2ViQ29yZTo6Vm9pZENhbGxiYWNrPikgT1ZFUlJJREU7CkBAIC00Nyw0ICs1NCw5IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVzZW50ZXI6OlBlcm1pc3Np
b24gY2hlY2tQZXJtaXNzaW9uKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKSBPVkVS
UklERTsKIAogICAgIFdlYlZpZXcgKm1fd2ViVmlldzsKKyAgICBIYXNoTWFwPFJlZlB0cjxXZWJD
b3JlOjpOb3RpZmljYXRpb24+LCBSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiA+IG1fbm90aWZp
Y2F0aW9uTWFwOworICAgIAorICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8V2ViQ29yZTo6U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dD4sIFZlY3RvcjxSZXRhaW5QdHI8V2ViTm90aWZpY2F0aW9uPiA+
ID4gTm90aWZpY2F0aW9uQ29udGV4dE1hcDsKKyAgICBOb3RpZmljYXRpb25Db250ZXh0TWFwIG1f
bm90aWZpY2F0aW9uQ29udGV4dE1hcDsKKwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbSBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYk5vdGlmaWNhdGlvbkNsaWVudC5tbQppbmRleCA4MDEz
OGUzMTM5MTlmZTEzYmExY2Y2NTVlYzZkMWRkOTk1YWRhOTQ3Li5mYzk2N2RiNGEzOWM2YmRhMDQx
OWI2ZjQxY2I4ZDk3OWNmNjU0NTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJOb3RpZmljYXRpb25DbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViTm90aWZpY2F0aW9uQ2xpZW50Lm1tCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNSwzNCArMjUsMTIz
IEBACiAKICNpbXBvcnQgIldlYk5vdGlmaWNhdGlvbkNsaWVudC5oIgogCisjaW1wb3J0ICJXZWJO
b3RpZmljYXRpb25JbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViVmlld0ludGVybmFsLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW1wb3J0IDxXZWJDb3JlL05vdGlmaWNh
dGlvbi5oPgogCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCisjaW1wb3J0ICJXZWJEZWxlZ2F0
ZUltcGxlbWVudGF0aW9uQ2FjaGluZy5oIgorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXMuaCIKKyNp
bXBvcnQgIldlYlNlY3VyaXR5T3JpZ2luSW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlVJRGVsZWdh
dGVQcml2YXRlLmgiCisjaW1wb3J0IDxXZWJDb3JlL0Jsb2NrRXhjZXB0aW9ucy5oPgorI2ltcG9y
dCA8V2ViQ29yZS9QYWdlLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQuaD4KKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAorI2lmIEVOQUJMRShO
T1RJRklDQVRJT05TKQorc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlTm90aWZpY2F0aW9uSUQoKQor
eworICAgIHN0YXRpYyB1aW50NjRfdCB1bmlxdWVOb3RpZmljYXRpb25JRCA9IDE7CisgICAgcmV0
dXJuIHVuaXF1ZU5vdGlmaWNhdGlvbklEKys7Cit9CisjZW5kaWYKKwogV2ViTm90aWZpY2F0aW9u
Q2xpZW50OjpXZWJOb3RpZmljYXRpb25DbGllbnQoV2ViVmlldyAqd2ViVmlldykKICAgICA6IG1f
d2ViVmlldyh3ZWJWaWV3KQogewogfQogCi1ib29sIFdlYk5vdGlmaWNhdGlvbkNsaWVudDo6c2hv
dyhOb3RpZmljYXRpb24qKQorYm9vbCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OnNob3coTm90aWZp
Y2F0aW9uKiBub3RpZmljYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyNpZiBFTkFC
TEUoTk9USUZJQ0FUSU9OUykKKyAgICBpZiAoIVttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3Zp
ZGVyXSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdWludDY0X3Qgbm90aWZpY2F0aW9u
SUQgPSBnZW5lcmF0ZU5vdGlmaWNhdGlvbklEKCk7CisgICAgUmV0YWluUHRyPFdlYk5vdGlmaWNh
dGlvbj4gd2ViTm90aWZpY2F0aW9uID0gYWRvcHROUyhbW1dlYk5vdGlmaWNhdGlvbiBhbGxvY10g
aW5pdFdpdGhDb3JlTm90aWZpY2F0aW9uOm5vdGlmaWNhdGlvbiBub3RpZmljYXRpb25JRDpub3Rp
ZmljYXRpb25JRF0pOworICAgIG1fbm90aWZpY2F0aW9uTWFwLnNldChub3RpZmljYXRpb24sIHdl
Yk5vdGlmaWNhdGlvbik7CisKKyAgICBOb3RpZmljYXRpb25Db250ZXh0TWFwOjppdGVyYXRvciBp
dCA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5maW5kKG5vdGlmaWNhdGlvbi0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKKyAgICBpZiAoaXQgPT0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFw
LmVuZCgpKSB7CisgICAgICAgIHBhaXI8Tm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0b3Is
IGJvb2w+IGFkZGVkUGFpciA9IG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5hZGQobm90aWZpY2F0
aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIFZlY3RvcjxSZXRhaW5QdHI8V2ViTm90aWZp
Y2F0aW9uPiA+KCkpOworICAgICAgICBpdCA9IGFkZGVkUGFpci5maXJzdDsKKyAgICB9CisgICAg
aXQtPnNlY29uZC5hcHBlbmQod2ViTm90aWZpY2F0aW9uKTsKKworICAgIFtbbV93ZWJWaWV3IF9u
b3RpZmljYXRpb25Qcm92aWRlcl0gc2hvd05vdGlmaWNhdGlvbjp3ZWJOb3RpZmljYXRpb24uZ2V0
KCkgZnJvbVdlYlZpZXc6bV93ZWJWaWV3XTsKKyAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKG5vdGlmaWNhdGlvbik7CiAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCiB9
CiAKLXZvaWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjYW5jZWwoTm90aWZpY2F0aW9uKikKK3Zv
aWQgV2ViTm90aWZpY2F0aW9uQ2xpZW50OjpjYW5jZWwoTm90aWZpY2F0aW9uKiBub3RpZmljYXRp
b24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykK
KyAgICBXZWJOb3RpZmljYXRpb24gKndlYk5vdGlmaWNhdGlvbiA9IG1fbm90aWZpY2F0aW9uTWFw
LmdldChub3RpZmljYXRpb24pLmdldCgpOworICAgIGlmICghd2ViTm90aWZpY2F0aW9uKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgW1ttX3dlYlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVy
XSBjYW5jZWxOb3RpZmljYXRpb246d2ViTm90aWZpY2F0aW9uXTsKKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKG5vdGlmaWNhdGlvbik7CisjZW5kaWYKIH0KIAotdm9pZCBXZWJOb3RpZmljYXRpb25D
bGllbnQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChXZWJDb3JlOjpOb3RpZmljYXRpb24q
KQordm9pZCBXZWJOb3RpZmljYXRpb25DbGllbnQ6OmNsZWFyTm90aWZpY2F0aW9ucyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisjaWYg
RU5BQkxFKE5PVElGSUNBVElPTlMpCisgICAgTm90aWZpY2F0aW9uQ29udGV4dE1hcDo6aXRlcmF0
b3IgaXQgPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZmluZChjb250ZXh0KTsKKyAgICBpZiAo
aXQgPT0gbV9ub3RpZmljYXRpb25Db250ZXh0TWFwLmVuZCgpKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgVmVjdG9yPFJldGFpblB0cjxXZWJOb3RpZmljYXRpb24+ID4mIG5vdGlmaWNhdGlv
bnMgPSBpdC0+c2Vjb25kOworICAgIE5TTXV0YWJsZUFycmF5ICpuc0lEcyA9IFtOU011dGFibGVB
cnJheSBhcnJheV07CisgICAgc2l6ZV90IGNvdW50ID0gbm90aWZpY2F0aW9ucy5zaXplKCk7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgIFdlYk5vdGlm
aWNhdGlvbiAqd2ViTm90aWZpY2F0aW9uID0gbm90aWZpY2F0aW9uc1tpXS5nZXQoKTsKKyAgICAg
ICAgW25zSURzIGFkZE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2lnbmVkTG9uZ0xvbmc6
W3dlYk5vdGlmaWNhdGlvbiBub3RpZmljYXRpb25JRF1dXTsKKyAgICAgICAgbV9ub3RpZmljYXRp
b25NYXAucmVtb3ZlKGNvcmUod2ViTm90aWZpY2F0aW9uKSk7CisgICAgfQorCisgICAgW1ttX3dl
YlZpZXcgX25vdGlmaWNhdGlvblByb3ZpZGVyXSBjbGVhck5vdGlmaWNhdGlvbnM6bnNJRHNdOwor
ICAgIG1fbm90aWZpY2F0aW9uQ29udGV4dE1hcC5yZW1vdmUoaXQpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oY29udGV4dCk7CisjZW5kaWYKK30KKwordm9pZCBXZWJOb3RpZmljYXRpb25DbGll
bnQ6Om5vdGlmaWNhdGlvbk9iamVjdERlc3Ryb3llZChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlv
bikKK3sKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKKyAgICBSZXRhaW5QdHI8V2ViTm90aWZp
Y2F0aW9uPiB3ZWJOb3RpZmljYXRpb24gPSBtX25vdGlmaWNhdGlvbk1hcC50YWtlKG5vdGlmaWNh
dGlvbik7CisgICAgaWYgKCF3ZWJOb3RpZmljYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAg
IE5vdGlmaWNhdGlvbkNvbnRleHRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ub3RpZmljYXRpb25Db250
ZXh0TWFwLmZpbmQobm90aWZpY2F0aW9uLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAg
IEFTU0VSVChpdCAhPSBtX25vdGlmaWNhdGlvbkNvbnRleHRNYXAuZW5kKCkpOworICAgIHNpemVf
dCBpbmRleCA9IGl0LT5zZWNvbmQuZmluZCh3ZWJOb3RpZmljYXRpb24pOworICAgIEFTU0VSVChp
bmRleCAhPSBub3RGb3VuZCk7CisgICAgaXQtPnNlY29uZC5yZW1vdmUoaW5kZXgpOworICAgIGlm
IChpdC0+c2Vjb25kLmlzRW1wdHkoKSkKKyAgICAgICAgbV9ub3RpZmljYXRpb25Db250ZXh0TWFw
LnJlbW92ZShpdCk7CisKKyAgICBbW21fd2ViVmlldyBfbm90aWZpY2F0aW9uUHJvdmlkZXJdIG5v
dGlmaWNhdGlvbkRlc3Ryb3llZDp3ZWJOb3RpZmljYXRpb24uZ2V0KCldOworI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0obm90aWZpY2F0aW9uKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYk5vdGlmaWNh
dGlvbkNsaWVudDo6bm90aWZpY2F0aW9uQ29udHJvbGxlckRlc3Ryb3llZCgpCiB7CisjaWYgRU5B
QkxFKE5PVElGSUNBVElPTlMpCisgICAgW21fd2ViVmlldyBfbm90aWZpY2F0aW9uQ29udHJvbGxl
ckRlc3Ryb3llZF07CisjZW5kaWYKICAgICBkZWxldGUgdGhpczsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJOb3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzA0YjJhZDA3MmU0
Y2YxNDMyZDgxMDM4NGJiMmZlNDk5ZjJhMmQ3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViTm90aWZpY2F0aW9uLmgKQEAgLTAsMCArMSw0NyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCitAY2xhc3MgV2ViTm90aWZpY2F0aW9uUHJpdmF0ZTsKK0BjbGFzcyBXZWJTZWN1cml0
eU9yaWdpbjsKKworQGludGVyZmFjZSBXZWJOb3RpZmljYXRpb24gOiBOU09iamVjdAoreworICAg
IFdlYk5vdGlmaWNhdGlvblByaXZhdGUgKl9wcml2YXRlOworfQorCistIChOU1N0cmluZyAqKXRp
dGxlOworLSAoTlNTdHJpbmcgKilib2R5OworLSAoV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW47
CistICh1aW50NjRfdClub3RpZmljYXRpb25JRDsKKworLSAodm9pZClkaXNwYXRjaFNob3dFdmVu
dDsKKy0gKHZvaWQpZGlzcGF0Y2hDbG9zZUV2ZW50OworLSAodm9pZClkaXNwYXRjaENsaWNrRXZl
bnQ7CistICh2b2lkKWRpc3BhdGNoRXJyb3JFdmVudDsKKworQGVuZApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJOb3RpZmljYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYk5vdGlmaWNhdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZTA1YmE0YzEzN2Fl
N2NiOTUxYzljNGJkOTcyZDZjMTA5Yjk1ZTk1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJOb3RpZmljYXRpb24ubW0KQEAgLTAsMCArMSwxMjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiV2ViTm90aWZpY2F0aW9uLmgiCisKKyNpbXBvcnQgIldlYk5vdGlm
aWNhdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJXZWJTZWN1cml0eU9yaWdpbkludGVybmFsLmgi
CisjaW1wb3J0IDxXZWJDb3JlL05vdGlmaWNhdGlvbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0Lmg+CisjaW1wb3J0IDx3dGYvUGFzc1JlZlB0ci5oPgorI2ltcG9y
dCA8d3RmL1JlZlB0ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworQGludGVyZmFj
ZSBXZWJOb3RpZmljYXRpb25Qcml2YXRlIDogTlNPYmplY3QKK3sKK0BwdWJsaWMKKyAgICBSZWZQ
dHI8Tm90aWZpY2F0aW9uPiBfaW50ZXJuYWw7CisgICAgdWludDY0X3QgX25vdGlmaWNhdGlvbklE
OworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2ViTm90aWZpY2F0aW9uUHJpdmF0ZQorQGVu
ZAorCisjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCitAaW1wbGVtZW50YXRpb24gV2ViTm90aWZp
Y2F0aW9uIChXZWJOb3RpZmljYXRpb25JbnRlcm5hbCkKK05vdGlmaWNhdGlvbiogY29yZShXZWJO
b3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikKK3sKKyAgICBpZiAoIW5vdGlmaWNhdGlvbi0+X3By
aXZhdGUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PE5v
dGlmaWNhdGlvbio+KG5vdGlmaWNhdGlvbi0+X3ByaXZhdGUtPl9pbnRlcm5hbC5nZXQoKSk7Cit9
CisKKy0gKGlkKWluaXRXaXRoQ29yZU5vdGlmaWNhdGlvbjooTm90aWZpY2F0aW9uKiljb3JlTm90
aWZpY2F0aW9uIG5vdGlmaWNhdGlvbklEOih1aW50NjRfdClub3RpZmljYXRpb25JRAoreworICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIF9w
cml2YXRlID0gW1tXZWJOb3RpZmljYXRpb25Qcml2YXRlIGFsbG9jXSBpbml0XTsKKyAgICBfcHJp
dmF0ZS0+X2ludGVybmFsID0gY29yZU5vdGlmaWNhdGlvbjsKKyAgICBfcHJpdmF0ZS0+X25vdGlm
aWNhdGlvbklEID0gbm90aWZpY2F0aW9uSUQ7CisgICAgcmV0dXJuIHNlbGY7Cit9CitAZW5kCisj
ZW5kaWYKKworQGltcGxlbWVudGF0aW9uIFdlYk5vdGlmaWNhdGlvbgorLSAoaWQpaW5pdAorewor
ICAgIHJldHVybiBuaWw7Cit9CisKKy0gKE5TU3RyaW5nICopdGl0bGUKK3sKKyAgICBBU1NFUlQo
Y29yZShzZWxmKSk7CisgICAgcmV0dXJuIGNvcmUoc2VsZiktPmNvbnRlbnRzKCkudGl0bGU7Cit9
CisKKy0gKE5TU3RyaW5nICopYm9keQoreworICAgIEFTU0VSVChjb3JlKHNlbGYpKTsKKyAgICBy
ZXR1cm4gY29yZShzZWxmKS0+Y29udGVudHMoKS5ib2R5OworfQorCistIChXZWJTZWN1cml0eU9y
aWdpbiAqKW9yaWdpbgoreworICAgIEFTU0VSVChjb3JlKHNlbGYpKTsKKyAgICByZXR1cm4gW1tb
V2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpj
b3JlKHNlbGYpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCldIGF1
dG9yZWxlYXNlXTsKK30KKworLSAodWludDY0X3Qpbm90aWZpY2F0aW9uSUQKK3sKKyAgICBBU1NF
UlQoY29yZShzZWxmKSk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5fbm90aWZpY2F0aW9uSUQ7Cit9
CisKKy0gKHZvaWQpZGlzcGF0Y2hTaG93RXZlbnQKK3sKKyAgICBBU1NFUlQoY29yZShzZWxmKSk7
CisgICAgY29yZShzZWxmKS0+ZGlzcGF0Y2hTaG93RXZlbnQoKTsKK30KKworLSAodm9pZClkaXNw
YXRjaENsb3NlRXZlbnQKK3sKKyAgICBBU1NFUlQoY29yZShzZWxmKSk7CisgICAgY29yZShzZWxm
KS0+ZGlzcGF0Y2hDbG9zZUV2ZW50KCk7Cit9CisKKy0gKHZvaWQpZGlzcGF0Y2hDbGlja0V2ZW50
Cit7CisgICAgQVNTRVJUKGNvcmUoc2VsZikpOworICAgIGNvcmUoc2VsZiktPmRpc3BhdGNoQ2xp
Y2tFdmVudCgpOworfQorCistICh2b2lkKWRpc3BhdGNoRXJyb3JFdmVudAoreworICAgIEFTU0VS
VChjb3JlKHNlbGYpKTsKKyAgICBjb3JlKHNlbGYpLT5kaXNwYXRjaEVycm9yRXZlbnQoKTsKK30K
KworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJOb3RpZmlj
YXRpb25JbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJOb3RpZmljYXRp
b25JbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MjQwNjlkOWVjYWY2Y2NiMGJhMWRiYzk0ZjIwNTIw
NThkOWU5YWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dl
Yk5vdGlmaWNhdGlvbkludGVybmFsLmgKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJXZWJOb3RpZmljYXRpb24uaCIKKworI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBOb3RpZmljYXRpb247Cit9CisKK1dlYkNvcmU6Ok5v
dGlmaWNhdGlvbiogY29yZShXZWJOb3RpZmljYXRpb24gKik7CisKK0BpbnRlcmZhY2UgV2ViTm90
aWZpY2F0aW9uIChXZWJOb3RpZmljYXRpb25JbnRlcm5hbCkKKy0gKGlkKWluaXRXaXRoQ29yZU5v
dGlmaWNhdGlvbjooV2ViQ29yZTo6Tm90aWZpY2F0aW9uKiljb3JlTm90aWZpY2F0aW9uIG5vdGlm
aWNhdGlvbklEOih1aW50NjRfdClub3RpZmljYXRpb25JRDsKK0BlbmQKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggODRmMTgzZDhjOWY1NjZlOWI5YTEyY2Nj
OWVmNWY0Njg4NjMwMmJhZS4uODA0NTA4NmJmYWU2YmIyMWE1NTI5MjQxNmExM2M3MWUxNzA5OTQ4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAwNiBEYXZpZCBTbWl0aCAoY2F0
ZmlzaC5tYW5AZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKICAq
CkBAIC02NDExLDYgKzY0MTEsNDMgQEAgc3RhdGljIHZvaWQgZ2xpYkNvbnRleHRJdGVyYXRpb25D
YWxsYmFjayhDRlJ1bkxvb3BPYnNlcnZlclJlZiwgQ0ZSdW5Mb29wQWN0aXZpdHkKIAogQGVuZAog
CitAaW1wbGVtZW50YXRpb24gV2ViVmlldyAoV2ViVmlld05vdGlmaWNhdGlvbikKKy0gKHZvaWQp
X3NldE5vdGlmaWNhdGlvblByb3ZpZGVyOihpZDxXZWJOb3RpZmljYXRpb25Qcm92aWRlcj4pbm90
aWZpY2F0aW9uUHJvdmlkZXIKK3sKKyAgICBpZiAoX3ByaXZhdGUpIHsKKyAgICAgICAgX3ByaXZh
dGUtPl9ub3RpZmljYXRpb25Qcm92aWRlciA9IG5vdGlmaWNhdGlvblByb3ZpZGVyOworICAgICAg
ICBbX3ByaXZhdGUtPl9ub3RpZmljYXRpb25Qcm92aWRlciByZWdpc3RlcldlYlZpZXc6c2VsZl07
CisgICAgfQorfQorCistICh2b2lkKV9ub3RpZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkCit7
CisgICAgW1tzZWxmIF9ub3RpZmljYXRpb25Qcm92aWRlcl0gdW5yZWdpc3RlcldlYlZpZXc6c2Vs
Zl07Cit9CisKKy0gKGlkPFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyPilfbm90aWZpY2F0aW9uUHJv
dmlkZXIKK3sKKyAgICBpZiAoX3ByaXZhdGUpCisgICAgICAgIHJldHVybiBfcHJpdmF0ZS0+X25v
dGlmaWNhdGlvblByb3ZpZGVyOworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKHZvaWQpX25vdGlm
aWNhdGlvbkRpZFNob3c6KHVpbnQ2NF90KW5vdGlmaWNhdGlvbklECit7CisgICAgW1tzZWxmIF9u
b3RpZmljYXRpb25Qcm92aWRlcl0gd2ViVmlldzpzZWxmIGRpZFNob3dOb3RpZmljYXRpb246bm90
aWZpY2F0aW9uSURdOworfQorCistICh2b2lkKV9ub3RpZmljYXRpb25EaWRDbGljazoodWludDY0
X3Qpbm90aWZpY2F0aW9uSUQKK3sKKyAgICBbW3NlbGYgX25vdGlmaWNhdGlvblByb3ZpZGVyXSB3
ZWJWaWV3OnNlbGYgZGlkQ2xpY2tOb3RpZmljYXRpb246bm90aWZpY2F0aW9uSURdOworfQorCist
ICh2b2lkKV9ub3RpZmljYXRpb25zRGlkQ2xvc2U6KE5TQXJyYXkgKilub3RpZmljYXRpb25JRHMK
K3sKKyAgICBbW3NlbGYgX25vdGlmaWNhdGlvblByb3ZpZGVyXSB3ZWJWaWV3OnNlbGYgZGlkQ2xv
c2VOb3RpZmljYXRpb25zOm5vdGlmaWNhdGlvbklEc107Cit9CitAZW5kCisKIEBpbXBsZW1lbnRh
dGlvbiBXZWJWaWV3IChXZWJWaWV3UHJpdmF0ZVN0eWxlSW5mbykKIAogLSAoSlNWYWx1ZVJlZilf
Y29tcHV0ZWRTdHlsZUluY2x1ZGluZ1Zpc2l0ZWRJbmZvOihKU0NvbnRleHRSZWYpY29udGV4dCBm
b3JFbGVtZW50OihKU1ZhbHVlUmVmKXZhbHVlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXdEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZp
ZXdEYXRhLmgKaW5kZXggNjY1Y2I5MTc1ZDg2YTllMTcyOWY5MjE0OGZlYjJiOWY2ZTczMzZlOS4u
ZWEyYmZjZjYwNzRlOWE1MTFjM2MzZWFlMmRiNGZmNWU1ZWMzYzRmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlld0RhdGEuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykg
MjAxMCBJZ2FsaWEgUy5MCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC01MCw2ICs1MCw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIEBwcm90b2NvbCBXZWJGb3JtRGVsZWdhdGU7CiBAcHJvdG9jb2wgV2Vi
RGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcjsKIEBwcm90b2NvbCBXZWJHZW9sb2NhdGlvblByb3Zp
ZGVyOworQHByb3RvY29sIFdlYk5vdGlmaWNhdGlvblByb3ZpZGVyOwogI2lmIEVOQUJMRShWSURF
TykKIEBjbGFzcyBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyOwogI2VuZGlmCkBAIC0xOTEs
NiArMTkyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIGlkPFdlYkdlb2xvY2F0aW9uUHJvdmlk
ZXI+IF9nZW9sb2NhdGlvblByb3ZpZGVyOwogICAgIGlkPFdlYkRldmljZU9yaWVudGF0aW9uUHJv
dmlkZXI+IG1fZGV2aWNlT3JpZW50YXRpb25Qcm92aWRlcjsKKyAgICBpZDxXZWJOb3RpZmljYXRp
b25Qcm92aWRlcj4gX25vdGlmaWNhdGlvblByb3ZpZGVyOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6
Okhpc3RvcnlJdGVtPiBfZ2xvYmFsSGlzdG9yeUl0ZW07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlld1ByaXZhdGUuaAppbmRleCBjZDkyZjMxZTU3ODlhNDBiYTJlNWZiNzRkNWU0
MzY3MDZmMzI5YmU4Li5hNzE2YTZjOWRhNjc1NjJiNjYzMDcyYjFjODVlMjlkYzJmODUzMDY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zOSw4ICszOSwxMCBAQAogQGNs
YXNzIFdlYkRldmljZU9yaWVudGF0aW9uOwogQGNsYXNzIFdlYkdlb2xvY2F0aW9uUG9zaXRpb247
CiBAY2xhc3MgV2ViSW5zcGVjdG9yOworQGNsYXNzIFdlYk5vdGlmaWNhdGlvbjsKIEBjbGFzcyBX
ZWJQcmVmZXJlbmNlczsKIEBjbGFzcyBXZWJTY3JpcHRXb3JsZDsKK0BjbGFzcyBXZWJTZWN1cml0
eU9yaWdpbjsKIEBjbGFzcyBXZWJUZXh0SXRlcmF0b3I7CiAKIEBwcm90b2NvbCBXZWJEZXZpY2VP
cmllbnRhdGlvblByb3ZpZGVyOwpAQCAtMTA0LDYgKzEwNiwxMyBAQCB0eXBlZGVmIGVudW0gewog
ICAgIFdlYlBhZ2luYXRpb25Nb2RlVmVydGljYWwsCiB9IFdlYlBhZ2luYXRpb25Nb2RlOwogCisv
LyBUaGlzIG5lZWRzIHRvIGJlIGluIHN5bmMgd2l0aCBXZWJDb3JlOjpOb3RpZmljYXRpb25QcmVz
ZW50ZXI6OlBlcm1pc3Npb24KK3R5cGVkZWYgZW51bSB7CisgICAgV2ViTm90aWZpY2F0aW9uUGVy
bWlzc2lvbkFsbG93ZWQsCisgICAgV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbk5vdEFsbG93ZWQs
CisgICAgV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlbmllZAorfSBXZWJOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uOworCiBAaW50ZXJmYWNlIFdlYkNvbnRyb2xsZXIgOiBOU1RyZWVDb250cm9sbGVy
IHsKICAgICBJQk91dGxldCBXZWJWaWV3ICp3ZWJWaWV3OwogfQpAQCAtNzAxLDYgKzcxMCwyMSBA
QCBDb3VsZCBiZSB3b3J0aCBhZGRpbmcgdG8gdGhlIEFQSS4KIC0gKFdlYkdlb2xvY2F0aW9uUG9z
aXRpb24gKilsYXN0UG9zaXRpb247CiBAZW5kCiAKK0Bwcm90b2NvbCBXZWJOb3RpZmljYXRpb25Q
cm92aWRlcgorLSAodm9pZClyZWdpc3RlcldlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3OworLSAo
dm9pZCl1bnJlZ2lzdGVyV2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXc7CisKKy0gKHZvaWQpc2hv
d05vdGlmaWNhdGlvbjooV2ViTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uIGZyb21XZWJWaWV3
OihXZWJWaWV3ICopd2ViVmlldzsKKy0gKHZvaWQpY2FuY2VsTm90aWZpY2F0aW9uOihXZWJOb3Rp
ZmljYXRpb24gKilub3RpZmljYXRpb247CistICh2b2lkKW5vdGlmaWNhdGlvbkRlc3Ryb3llZDoo
V2ViTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uOworLSAodm9pZCljbGVhck5vdGlmaWNhdGlv
bnM6KE5TQXJyYXkgKilub3RpZmljYXRpb25JRHM7CistIChXZWJOb3RpZmljYXRpb25QZXJtaXNz
aW9uKXBvbGljeUZvck9yaWdpbjooV2ViU2VjdXJpdHlPcmlnaW4gKilvcmlnaW47CisKKy0gKHZv
aWQpd2ViVmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGlkU2hvd05vdGlmaWNhdGlvbjoodWludDY0
X3Qpbm90aWZpY2F0aW9uSUQ7CistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRp
ZENsaWNrTm90aWZpY2F0aW9uOih1aW50NjRfdClub3RpZmljYXRpb25JRDsKKy0gKHZvaWQpd2Vi
VmlldzooV2ViVmlldyAqKXdlYlZpZXcgZGlkQ2xvc2VOb3RpZmljYXRpb25zOihOU0FycmF5ICop
bm90aWZpY2F0aW9uSURzOworQGVuZAorCiBAaW50ZXJmYWNlIFdlYlZpZXcgKFdlYlZpZXdHZW9s
b2NhdGlvbikKIC0gKHZvaWQpX3NldEdlb2xvY2F0aW9uUHJvdmlkZXI6KGlkPFdlYkdlb2xvY2F0
aW9uUHJvdmlkZXI+KWxvY2F0aW9uUHJvdmlkZXI7CiAtIChpZDxXZWJHZW9sb2NhdGlvblByb3Zp
ZGVyPilfZ2VvbG9jYXRpb25Qcm92aWRlcjsKQEAgLTcwOSw2ICs3MzMsMTYgQEAgQ291bGQgYmUg
d29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAtICh2b2lkKV9nZW9sb2NhdGlvbkRpZEZhaWxXaXRo
RXJyb3I6KE5TRXJyb3IgKillcnJvcjsKIEBlbmQKIAorQGludGVyZmFjZSBXZWJWaWV3IChXZWJW
aWV3Tm90aWZpY2F0aW9uKQorLSAodm9pZClfc2V0Tm90aWZpY2F0aW9uUHJvdmlkZXI6KGlkPFdl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyPilub3RpZmljYXRpb25Qcm92aWRlcjsKKy0gKGlkPFdlYk5v
dGlmaWNhdGlvblByb3ZpZGVyPilfbm90aWZpY2F0aW9uUHJvdmlkZXI7CistICh2b2lkKV9ub3Rp
ZmljYXRpb25Db250cm9sbGVyRGVzdHJveWVkOworCistICh2b2lkKV9ub3RpZmljYXRpb25EaWRT
aG93Oih1aW50NjRfdClub3RpZmljYXRpb25JRDsKKy0gKHZvaWQpX25vdGlmaWNhdGlvbkRpZENs
aWNrOih1aW50NjRfdClub3RpZmljYXRpb25JRDsKKy0gKHZvaWQpX25vdGlmaWNhdGlvbnNEaWRD
bG9zZTooTlNBcnJheSAqKW5vdGlmaWNhdGlvbklEczsKK0BlbmQKKwogQGludGVyZmFjZSBXZWJW
aWV3IChXZWJWaWV3UHJpdmF0ZVN0eWxlSW5mbykKIC0gKEpTVmFsdWVSZWYpX2NvbXB1dGVkU3R5
bGVJbmNsdWRpbmdWaXNpdGVkSW5mbzooSlNDb250ZXh0UmVmKWNvbnRleHQgZm9yRWxlbWVudDoo
SlNWYWx1ZVJlZil2YWx1ZTsKIEBlbmQK
</data>
<flag name="review"
          id="130318"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>