<?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>144657</bug_id>
          
          <creation_ts>2015-05-05 19:10:50 -0700</creation_ts>
          <short_desc>[iOS][WK2] Pause/resume database thread when UIProcess enters/leaves the background</short_desc>
          <delta_ts>2015-05-21 17:40:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 8.2</op_sys>
          <bug_status>REOPENED</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=144660</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=144661</see_also>
          <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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>aestes</cc>
    
    <cc>andersca</cc>
    
    <cc>barraclough</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1092000</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-05 19:10:50 -0700</bug_when>
    <thetext>We should pause and resume the database thread when the UIProcess enters and leaves the background, respectively, to avoid WebProcess termination due to holding a locked SQLite database file when the WebProcess is suspended.

Analogous behavior is implemented in Legacy WebKit. See &lt;http://trac.webkit.org/browser/trunk/Source/WebKit/ios/Misc/WebUIKitSupport.mm?rev=176347#L113&gt;, &lt;http://trac.webkit.org/browser/trunk/Source/WebKit/ios/Misc/WebUIKitSupport.mm?rev=176347#L118&gt; and &lt;http://trac.webkit.org/browser/trunk/Source/WebKit/mac/Storage/WebDatabaseManager.mm?rev=180704#L291&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092009</commentid>
    <comment_count>1</comment_count>
      <attachid>252439</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-05 19:27:40 -0700</bug_when>
    <thetext>Created attachment 252439
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092019</commentid>
    <comment_count>2</comment_count>
      <attachid>252442</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-05 20:21:44 -0700</bug_when>
    <thetext>Created attachment 252442
Patch

Add PLATFORM(IOS)-guard around call to DatabaseTracker::tracker().setDatabasesPaused() in implementation of DatabaseServer::setPauseAllDatabases(). Filed bug #144660 to remove this added PLATFORM(IOS)-guard as well as other such guards around the database thread pause/resume logic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092020</commentid>
    <comment_count>3</comment_count>
      <attachid>252443</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-05 20:30:00 -0700</bug_when>
    <thetext>Created attachment 252443
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092226</commentid>
    <comment_count>4</comment_count>
      <attachid>252443</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-05-06 10:52:11 -0700</bug_when>
    <thetext>Comment on attachment 252443
Patch

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

&gt; Source/WebCore/Modules/webdatabase/DatabaseServer.h:63
&gt; +    virtual void setPauseAllDatabases(bool) override;

No need for &apos;virtual&apos; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092230</commentid>
    <comment_count>5</comment_count>
      <attachid>252443</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-06 10:53:57 -0700</bug_when>
    <thetext>Comment on attachment 252443
Patch

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

&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:603
&gt; +    m_process-&gt;send(Messages::WebPage::ApplicationDidEnterBackground(), m_pageID);

We need to take a process assertion out on the WebProcess before sending this message to ensure we actually deliver it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092327</commentid>
    <comment_count>6</comment_count>
      <attachid>252522</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-06 14:55:27 -0700</bug_when>
    <thetext>Created attachment 252522
Patch

Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092331</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-06 14:59:13 -0700</bug_when>
    <thetext>Attachment 252522 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:603:  Extra space before ( in function call  [whitespace/parens] [4]
Total errors found: 1 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092355</commentid>
    <comment_count>8</comment_count>
      <attachid>252522</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-05-06 15:27:05 -0700</bug_when>
    <thetext>Comment on attachment 252522
Patch

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

r=me. I made a few nit-picky suggestions, but feel free to land as-is.

&gt; Source/WebCore/Modules/webdatabase/AbstractDatabaseServer.h:74
&gt; +    virtual void setPauseAllDatabases(bool) = 0;

I think this name reads strangely, having two consecutive verbs. setDatabasesPaused sounds slightly better to me.

&gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:603
&gt; +    uint64_t callbackID = m_callbacks.put(std::function&lt;void (CallbackBase::Error)&gt;(), m_process-&gt;throttler().backgroundActivityToken());

To me this would read more easily with a lambda: [](CallbackBase::Error) { }

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.h:49
&gt; +    void setPauseAllDatabases(bool = true);

I&apos;m not sure the default argument is worth it. Seems clearer to explicitly pass true at the one call site.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092468</commentid>
    <comment_count>9</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-06 20:22:12 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; [...]
&gt; &gt; Source/WebCore/Modules/webdatabase/AbstractDatabaseServer.h:74
&gt; &gt; +    virtual void setPauseAllDatabases(bool) = 0;
&gt; 
&gt; I think this name reads strangely, having two consecutive verbs.
&gt; setDatabasesPaused sounds slightly better to me.
&gt; 

I chose the name setPauseAllDatabases to conform to the Cocoa naming conventions. We tend to follow Cocoa naming conventions.

Notice that the name setDatabasesPaused disagrees with the rule &quot;don’t twist a verb into an adjective by using a participle&quot; in section Naming Methods of the Coding Guidelines for Cocoa: &lt;https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingMethods.html&gt;.

&gt; &gt; Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:603
&gt; &gt; +    uint64_t callbackID = m_callbacks.put(std::function&lt;void (CallbackBase::Error)&gt;(), m_process-&gt;throttler().backgroundActivityToken());
&gt; 
&gt; To me this would read more easily with a lambda: [](CallbackBase::Error) { }
&gt; 

Will write this line as:

uint64_t callbackID = m_callbacks.put(VoidCallback::create([](CallbackBase::Error) { }, m_process-&gt;throttler().backgroundActivityToken()));

Additional remarks:

I tried using a lambda expression directly in the call to m_callbacks.put(), but WebPageProxyIOS.mm fails to compile because it cannot find a viable function for CallbackMap::put():
 
[[
...
CompileC WebPageProxyIOS.o
/Volumes/.../OpenSource/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:603:39: error: no matching member function for call to &apos;put&apos;
In file included from /Volumes/.../OpenSource/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:27:
In file included from /Volumes/.../OpenSource/Source/WebKit2/UIProcess/WebPageProxy.h:32:
In file included from /Volumes/.../OpenSource/Source/WebKit2/UIProcess/AutoCorrectionCallback.h:30:
/Volumes/.../OpenSource/Source/WebKit2/UIProcess/GenericCallback.h:194:14: note: candidate template ignored: could not match &apos;function&lt;void (type-parameter-0-0...)&gt;&apos; against &apos;(lambda at /Volumes/.../OpenSource/Source/WebKit2/UIProcess/ios/WebPageProxyIOS.mm:603:43)&apos;
/Volumes/.../OpenSource/Source/WebKit2/UIProcess/GenericCallback.h:174:14: note: candidate function not viable: requires single argument &apos;callback&apos;, but 2 arguments were provided
1 error generated.
]]

Notice that a lambda expression has an implementation defined type and a std::function can be defined to store a lambda expression. The issue is that the compiler does not know which std::function template to instantiate to match the type of the lambda expression; =&gt; it cannot instantiate the variadic template variant of CallbackMap::put(). Obviously, the compiler cannot use CallbackMap::put(PassRefPtr&lt;CallbackBase&gt;). Therefore it cannot find a viable function for CallbackMap::put() when a lambda expression is specified. One way to work around this is explicitly tell the compiler the type of std::function to instantiate for the lambda. The downside of this approach is that you will repeat the data types for the parameters used in the lambda expression.

&gt; &gt; Source/WebKit2/WebProcess/WebCoreSupport/WebDatabaseManager.h:49
&gt; &gt; +    void setPauseAllDatabases(bool = true);
&gt; 
&gt; I&apos;m not sure the default argument is worth it. Seems clearer to explicitly
&gt; pass true at the one call site.

Will remove default argument and explicitly pass true when calling WebDatabaseManager::setPauseAllDatabases() in WebPage::applicationDidEnterBackground().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092469</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-06 20:25:20 -0700</bug_when>
    <thetext>Committed r183909: &lt;http://trac.webkit.org/changeset/183909&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092471</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-06 20:37:33 -0700</bug_when>
    <thetext>&lt;rdar://problem/18894598&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092515</commentid>
    <comment_count>12</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2015-05-06 22:55:00 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; [...]
&gt; &gt; &gt; Source/WebCore/Modules/webdatabase/AbstractDatabaseServer.h:74
&gt; &gt; &gt; +    virtual void setPauseAllDatabases(bool) = 0;
&gt; &gt; 
&gt; &gt; I think this name reads strangely, having two consecutive verbs.
&gt; &gt; setDatabasesPaused sounds slightly better to me.
&gt; &gt; 
&gt; 
&gt; I chose the name setPauseAllDatabases to conform to the Cocoa naming
&gt; conventions. We tend to follow Cocoa naming conventions.
&gt;
&gt; Notice that the name setDatabasesPaused disagrees with the rule &quot;don’t twist
&gt; a verb into an adjective by using a participle&quot; in section Naming Methods of
&gt; the Coding Guidelines for Cocoa:
&gt; &lt;https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/
&gt; CodingGuidelines/Articles/NamingMethods.html&gt;.

The guideline you cite is specific to naming the getter and setter methods of an Objective-C property (it&apos;s in the &quot;Accessor Methods&quot; subsection). I don&apos;t think that&apos;s relevant to how you name a C++ member function, especially one that is not a simple setter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1096720</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2015-05-21 17:40:38 -0700</bug_when>
    <thetext>Reverted &lt;http://trac.webkit.org/changeset/183909&gt; in &lt;http://trac.webkit.org/changeset/184740&gt; since pausing the database thread prevents in-progress transactions from completing.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252439</attachid>
            <date>2015-05-05 19:27:40 -0700</date>
            <delta_ts>2015-05-05 20:21:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144657-20150505192625.patch</filename>
            <type>text/plain</type>
            <size>13805</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNhNDlhZDBkZDNlZDIw
NzAwM2NlODhmMGJlNjhiYTJjYzk2NjhhYS4uNWQ1MzU1MjFjZjc1MDgxYTVlZDQ5MTIzM2Y5NTM5
NTc2NjFjYjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDE1LTA1LTA1ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXVtXSzJdIFBhdXNl
L3Jlc3VtZSBkYXRhYmFzZSB0aHJlYWQgd2hlbiBVSVByb2Nlc3MgZW50ZXJzL2xlYXZlcyB0aGUg
YmFja2dyb3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0NjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRXhwb3NlIFdlYkNvcmUgZnVuY3Rpb25hbGl0eSB0byBwYXVzZSBhbmQgcmVzdW1lIHRoZSBk
YXRhYmFzZSB0aHJlYWQgc28gdGhhdCB3ZSBjYW4KKyAgICAgICAgbWFrZSB1c2Ugb2YgdGhpcyBm
dW5jdGlvbmFsaXR5IGZyb20gV2ViS2l0Mi4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6c2V0UGF1c2VBbGxEYXRhYmFzZXMpOiBBZGRlZDsgdHVybnMgYXJvdW5kIGFuZCBjYWxscyBE
YXRhYmFzZVNlcnZlcjo6c2V0UGF1c2VBbGxEYXRhYmFzZXMoKS4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTZXJ2
ZXI6OnNldFBhdXNlQWxsRGF0YWJhc2VzKTogQWRkZWQ7IHR1cm5zIGFyb3VuZCBhbmQgY2FsbHMK
KyAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VzUGF1c2VkKCkg
dG8gcGF1c2Ugb3IgcmVzdW1lIHRoZSBkYXRhYmFzZSB0aHJlYWQuCisgICAgICAgICogTW9kdWxl
cy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oOgorCiAyMDE1LTA1LTA0ICBKYXZpZXIgRmVy
bmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDU1MgQm94IEFsaWdu
bWVudF0gVXBncmFkZSBqdXN0aWZ5LWNvbnRlbnQgcGFyc2luZyB0byBDU1MzIEJveCBBbGlnbm1l
bnQgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3OTBjOWE4ZWNhM2Q2YmRlNDExODhhZTk4MDFiODJlM2Nl
NjEzOTM3Li4wZjM2MjBiNDg0YTU3ODQ0YmNjN2U3Y2Y0YWU2OTA0NjFlNjdlY2ZjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTUtMDUtMDUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW1dLMl0gUGF1c2UvcmVzdW1lIGRhdGFiYXNlIHRo
cmVhZCB3aGVuIFVJUHJvY2VzcyBlbnRlcnMvbGVhdmVzIHRoZSBiYWNrZ3JvdW5kCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NTcKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXVzZSBhbmQgcmVzdW1l
IHRoZSBkYXRhYmFzZSB0aHJlYWQgd2hlbiB0aGUgVUlQcm9jZXNzIGVudGVycyBhbmQgbGVhdmVz
IHRoZSBiYWNrZ3JvdW5kLAorICAgICAgICByZXNwZWN0aXZlbHksIHNvIHRoYXQgd2UgYXZvaWQg
V2ViUHJvY2VzcyB0ZXJtaW5hdGlvbiBkdWUgdG8gaG9sZGluZyBhIGxvY2tlZCBTUUxpdGUKKyAg
ICAgICAgZGF0YWJhc2UgZmlsZSB3aGVuIHRoZSBXZWJQcm9jZXNzIGlzIHN1c3BlbmRlZC4gVGhp
cyBiZWhhdmlvciBtYXRjaGVzIHRoZSBhbmFsYWdvdXMKKyAgICAgICAgYmVoYXZpb3IgaW4gTGVn
YWN5IFdlYktpdC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2FwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOl0pOiBDYWxsIFdlYlBhZ2VQcm94
eTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQorICAgICAgICB3aGVuIHRoZSBVSVBy
b2Nlc3MgZW50ZXJzIHRoZSBiYWNrZ3JvdW5kLgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKTogQWRkZWQ7IHBhdXNlIHRoZSBkYXRhYmFzZSB0aHJlYWQu
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEYXRhYmFzZU1hbmFnZXI6OnNldFBhdXNlQWxsRGF0
YWJhc2VzKTogQWRkZWQ7IHR1cm5zIGFyb3VuZCBhbmQgY2FsbHMgRGF0YWJhc2VNYW5hZ2VyOjpz
ZXRQYXVzZUFsbERhdGFiYXNlcygpLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bjogQWRkIG1lc3NhZ2UgQXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKS4gQWxzbywKKyAg
ICAgICAgYWRkIGVtcHR5IGxpbmVzIHRvIGhlbHAgZGVtYXJjYXRlIHRoaXMgbWVzc2FnZSBhbmQg
dGhlIG90aGVyIFVJS2l0IGFwcGxpY2F0aW9uIGxpZmVjeWNsZS1yZWxhdGVkCisgICAgICAgIG1l
c3NhZ2VzIGZyb20gdGhlIHJlc3Qgb2YgdGhlIGxpc3Qgb2YgbWVzc2FnZXMuCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQpOiBSZXN1bWUgdGhlIGRhdGFi
YXNlIHRocmVhZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmQpOiBQYXVzZSB0aGUgZGF0YWJhc2UgdGhyZWFkLgorCiAyMDE1LTA1LTA0ICBa
YW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1RGXSBSZW1v
dmUgRnVuY3Rpb25hbC5oIGluY2x1c2lvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgKaW5kZXggNjBl
ZDhiZjgyODE2MTA4YjE2NzAzM2I4ZGU2YTcwOGFiNWFhZWQ5OC4uM2UyNGViNmY0NDhjMDVhNGE0
ZDViNmMwMGE4ODg0MDdlNjUzZjY4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2VydmVyLmgKQEAgLTcxLDYg
KzcxLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPcmlnaW4oU2VjdXJpdHlP
cmlnaW4qKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3Jp
Z2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UGF1
c2VBbGxEYXRhYmFzZXMoYm9vbCkgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIGludGVycnVwdEFs
bERhdGFiYXNlc0ZvckNvbnRleHQoY29uc3QgRGF0YWJhc2VDb250ZXh0KikgPSAwOwogCiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHAKaW5kZXggYWU0YTE0YzYwNGRmMTMzOTczZmQwNjJjMGMxMmNkOTNi
NzRlZjFmYy4uZDgyODRjMWJhMWJiZDM2ODM1YjQ2N2UzOWNiMTRmZTU0YjkwMjAxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5h
Z2VyLmNwcApAQCAtMzk3LDYgKzM5NywxMSBAQCBib29sIERhdGFiYXNlTWFuYWdlcjo6ZGVsZXRl
RGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAg
IHJldHVybiBtX3NlcnZlci0+ZGVsZXRlRGF0YWJhc2Uob3JpZ2luLCBuYW1lKTsKIH0KIAordm9p
ZCBEYXRhYmFzZU1hbmFnZXI6OnNldFBhdXNlQWxsRGF0YWJhc2VzKGJvb2wgcGF1c2VBbGxEYXRh
YmFzZXMpCit7CisgICAgbV9zZXJ2ZXItPnNldFBhdXNlQWxsRGF0YWJhc2VzKHBhdXNlQWxsRGF0
YWJhc2VzKTsKK30KKwogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmludGVycnVwdEFsbERhdGFiYXNl
c0ZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIHsKICAgICBSZWZQ
dHI8RGF0YWJhc2VDb250ZXh0PiBkYXRhYmFzZUNvbnRleHQgPSBleGlzdGluZ0RhdGFiYXNlQ29u
dGV4dEZvcihjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCmluZGV4IDIyMjU3Y2I5MDNjZGYzZGE5ZjQ4MTc1ODZj
MzY2OWI2MDhiZjZmNWEuLjUzOWY1NTVkZmU3NTM0NWEyYWMzMDEyMGMwNWJkNWRiM2RjMGNmZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZU1hbmFnZXIuaApAQCAtMTAzLDYgKzEwMyw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9S
VCBib29sIGRlbGV0ZU9yaWdpbihTZWN1cml0eU9yaWdpbiopOwogICAgIFdFQkNPUkVfRVhQT1JU
IGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIG5hbWUp
OwogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRQYXVzZUFsbERhdGFiYXNlcyhib29sKTsK
KwogICAgIHZvaWQgaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChTY3JpcHRFeGVjdXRp
b25Db250ZXh0Kik7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCmluZGV4IGFlZTcwZmE2ODMxNTk0ZDgw
NWQxZDgxMmVjOTU5MGI1YjIwOWQzOGIuLjhkNzViN2M4OWE2MWVjMzY5OGMxMzk4MmZkMDc0OWU5
MmZhNGU2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VTZXJ2ZXIuY3BwCkBAIC0xMDgsNiArMTA4LDExIEBAIGJvb2wgRGF0YWJhc2VT
ZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICAgICByZXR1cm4gRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuZGVsZXRlRGF0
YWJhc2Uob3JpZ2luLCBuYW1lKTsKIH0KIAordm9pZCBEYXRhYmFzZVNlcnZlcjo6c2V0UGF1c2VB
bGxEYXRhYmFzZXMoYm9vbCBwYXVzZUFsbERhdGFiYXNlcykKK3sKKyAgICBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZXNQYXVzZWQocGF1c2VBbGxEYXRhYmFzZXMpOworfQor
CiB2b2lkIERhdGFiYXNlU2VydmVyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNv
bnN0IERhdGFiYXNlQ29udGV4dCogY29udGV4dCkKIHsKICAgICBEYXRhYmFzZVRyYWNrZXI6OnRy
YWNrZXIoKS5pbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnRleHQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oCmlu
ZGV4IDVjNTVkNTVjZjlkZDAzMjcxMTg3ZDk2NGY3MTU1OGQ3NjE2Y2Q4OTUuLjk5Yzc1MThjNWY2
YmU0NDczMTVjY2YzYjljNWQwYzdjOTUwMWM5ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmgKQEAgLTYwLDYgKzYwLDggQEAg
cHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsK
ICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlRGF0YWJhc2UoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBT
dHJpbmcmIG5hbWUpOwogCisgICAgdmlydHVhbCB2b2lkIHNldFBhdXNlQWxsRGF0YWJhc2VzKGJv
b2wpIG92ZXJyaWRlOworCiAgICAgdmlydHVhbCB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0Zv
ckNvbnRleHQoY29uc3QgRGF0YWJhc2VDb250ZXh0Kik7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBmYTU3NzczODYzMTZiOWU4NWJiNzE3
OGFiYjAzYWQ0NjA2MGEzYjdmLi5lZjdhM2FjZTk3ZGMzNjYyYTk5ZmZkNWMwNTJlMGVjYTc5MjA0
ZTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC00OTMsOSAr
NDkzLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVZhbHVlKGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlVmFsdWVBc051bWJlcihkb3VibGUpOwog
ICAgIHZvaWQgc2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCh1aW50MzJfdCBpbmRleCwgYm9v
bCBhbGxvd011bHRpcGxlU2VsZWN0aW9uID0gZmFsc2UpOworCiAgICAgdm9pZCBhcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQoKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNr
Z3JvdW5kKCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKTsKICAgICB2
b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CisKICAgICB2b2lkIHpvb21Ub1JlY3Qo
V2ViQ29yZTo6RmxvYXRSZWN0LCBkb3VibGUgbWluaW11bVNjYWxlLCBkb3VibGUgbWF4aW11bVNj
YWxlKTsKICAgICB2b2lkIGNvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpOwogICAgIHZvaWQgZGlk
Tm90SGFuZGxlVGFwQXNDbGljayhjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCmluZGV4IGRlNzBmNjQ2MTIz
MTRlNTEyMzAyOTlhZDAxNzkwNTg1YTI5MWI1YjAuLjVjMzYzYmJmNDI3MTRiZmVlZmRjOGYyZGVh
Y2Y2Njk3OTMyOTA3MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3Mv
V0tDb250ZW50Vmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW0KQEAgLTU1MSw2ICs1NTEsNyBAQCAtICh2b2lkKV9hcHBsaWNhdGlvbldpbGxS
ZXNpZ25BY3RpdmU6KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KIC0gKHZvaWQpX2FwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCiB7
CiAgICAgX2lzQmFja2dyb3VuZCA9IFlFUzsKKyAgICBfcGFnZS0+YXBwbGljYXRpb25EaWRFbnRl
ckJhY2tncm91bmQoKTsKICAgICBfcGFnZS0+dmlld1N0YXRlRGlkQ2hhbmdlKFZpZXdTdGF0ZTo6
QWxsRmxhZ3MgJiB+Vmlld1N0YXRlOjpJc0luV2luZG93KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBjMWEyYjhlNWRiZTQ2
NzcxNDk1MmQyNDRjMGNhYWI3M2FlYzNiYmU4Li5iNTRhYmNmNDgyMTk0MmQ5YWUwZDQwMzYxM2E3
ZDcwY2JiZjYzZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQpAQCAtNTk4LDYgKzU5OCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCkKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpLCBtX3BhZ2VJRCk7
CiB9CiAKK3ZvaWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgp
Cit7CisgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbkRp
ZEVudGVyQmFja2dyb3VuZCgpLCBtX3BhZ2VJRCk7Cit9CisKIHZvaWQgV2ViUGFnZVByb3h5Ojph
cHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQogewogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCksIG1fcGFnZUlEKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RGF0YWJhc2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcAppbmRleCA5MjUyMmUxNTM4YWI1ODQ0ZjU1Zjc4
MmE0NGNkYzc4YmYwYWQ1YzAyLi4xMzFmMGUzOGQ2YmYxOTM5OWY2MWQyYzdiYzBiZTc0MjgwYjQ5
ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCkBAIC0xMzcsNiArMTM3LDExIEBA
IHZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpkZWxldGVBbGxEYXRhYmFzZXMoKSBjb25zdAogICAg
IERhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkuZGVsZXRlQWxsRGF0YWJhc2VzKCk7CiB9CiAK
K3ZvaWQgV2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRQYXVzZUFsbERhdGFiYXNlcyhib29sIHBhdXNl
QWxsRGF0YWJhc2VzKQoreworICAgIERhdGFiYXNlTWFuYWdlcjo6c2luZ2xldG9uKCkuc2V0UGF1
c2VBbGxEYXRhYmFzZXMocGF1c2VBbGxEYXRhYmFzZXMpOworfQorCiB2b2lkIFdlYkRhdGFiYXNl
TWFuYWdlcjo6c2V0UXVvdGFGb3JPcmlnaW4oY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVy
LCB1bnNpZ25lZCBsb25nIGxvbmcgcXVvdGEpIGNvbnN0CiB7CiAgICAgLy8gSWYgdGhlIHF1b3Rh
IGlzIHNldCB0byBhIHZhbHVlIGxvd2VyIHRoYW4gdGhlIGN1cnJlbnQgdXNhZ2UsIHRoYXQgcXVv
dGEgd2lsbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgKaW5kZXggYTllNmIzMTA1Nzg0MWE0Y2Mz
OGM5Mzg5NjNhMWM5OTEzZTg4Mjg4NS4uNDgzOGI3ODY4ODA2ZTNhMDJmMDYxMzk3MzQ3ZTA3OGY0
OWFiYjdmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCkBAIC00Niw2ICs0Niw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFF1b3RhRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRl
bnRpZmllciwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKSBjb25zdDsKICAgICB2b2lkIGRlbGV0
ZUFsbERhdGFiYXNlcygpIGNvbnN0OwogCisgICAgdm9pZCBzZXRQYXVzZUFsbERhdGFiYXNlcyhi
b29sID0gdHJ1ZSk7CisKIHByaXZhdGU6CiAgICAgLy8gV2ViUHJvY2Vzc1N1cHBsZW1lbnQKICAg
ICB2aXJ0dWFsIHZvaWQgaW5pdGlhbGl6ZShjb25zdCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAppbmRleCBjNWU5YTRjZWI1OTlmZTk4MDc4MTM5YzQ4YzgyNTY1MjhjMTgxZmE3Li5iMDE2
YWM4Mjc5NjFhOWViYTMwNTE3NDc2YTVmOTdhOGE0Mjk2Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTc4Myw5ICs3ODMsMTIgQEAgcHVibGlj
OgogICAgIHZvaWQgdXBkYXRlVmlzaWJsZUNvbnRlbnRSZWN0cyhjb25zdCBWaXNpYmxlQ29udGVu
dFJlY3RVcGRhdGVJbmZvJiwgZG91YmxlIG9sZGVzdFRpbWVzdGFtcCk7CiAgICAgYm9vbCBzY2Fs
ZVdhc1NldEJ5VUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zY2FsZVdhc1NldEJ5VUlQcm9j
ZXNzOyB9CiAgICAgdm9pZCB3aWxsU3RhcnRVc2VyVHJpZ2dlcmVkWm9vbWluZygpOworCiAgICAg
dm9pZCBhcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKTsKICAgICB2b2lkIGFwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZCgpOworICAgIHZvaWQgYXBwbGljYXRpb25EaWRFbnRlckJhY2tn
cm91bmQoKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCk7CisKICAgICB2
b2lkIHpvb21Ub1JlY3QoV2ViQ29yZTo6RmxvYXRSZWN0LCBkb3VibGUgbWluaW11bVNjYWxlLCBk
b3VibGUgbWF4aW11bVNjYWxlKTsKICAgICB2b2lkIGNvbXBsZXRlUGVuZGluZ1N5bnRoZXRpY0Ns
aWNrRm9yQ29udGVudENoYW5nZU9ic2VydmVyKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggYjM4
YmEwMTZhNmVhNmQ2MmViYzI4ZjMwYTViNzg5NDBkMDY5MTk5ZS4uNWJlYzdiYmI3ZTZkYzNmODY0
MjA4M2Y3YzU2ZDcxMTY2YzdkMWU2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KQEAgLTg3LDkgKzg3LDEyIEBAIG1l
c3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2ZXIgewogICAgIFNldEFzc2lzdGVkTm9kZVZh
bHVlKFN0cmluZyB2YWx1ZSkKICAgICBTZXRBc3Npc3RlZE5vZGVWYWx1ZUFzTnVtYmVyKGRvdWJs
ZSB2YWx1ZSkKICAgICBTZXRBc3Npc3RlZE5vZGVTZWxlY3RlZEluZGV4KHVpbnQzMl90IGluZGV4
LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24pCisKICAgICBBcHBsaWNhdGlvbldpbGxSZXNp
Z25BY3RpdmUoKQogICAgIEFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpCisgICAgQXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKQogICAgIEFwcGxpY2F0aW9uRGlkQmVjb21lQWN0
aXZlKCkKKwogICAgIENvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoU3RyaW5nIGNvbnRlbnRT
aXplQ2F0ZWdvcnkpCiAgICAgRXhlY3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKFN0cmluZyBu
YW1lLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIEdldExvb2t1cENvbnRleHRBdFBvaW50KFdl
YkNvcmU6OkludFBvaW50IHBvaW50LCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDIy
MDE5ZWU5OWM4ZWE0NjM4YTM3NmE2NmUxMDFlMzM1NGYxNGQzZmQuLmY2M2IxODg4MTRlZjc0NWRj
Nzg4N2JlOGU3YTU1NWE5ZTBkNTYzM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBv
cnQgIldLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJT1MuaCIKICNpbXBvcnQgIldlYkNocm9t
ZUNsaWVudC5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW1wb3J0ICJX
ZWJEYXRhYmFzZU1hbmFnZXIuaCIKICNpbXBvcnQgIldlYkZyYW1lLmgiCiAjaW1wb3J0ICJXZWJJ
bWFnZS5oIgogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCkBAIC0yNzE3LDkgKzI3
MTgsMTUgQEAgdm9pZCBXZWJQYWdlOjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQogCiB2
b2lkIFdlYlBhZ2U6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpCiB7CisgICAgV2Vi
UHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJEYXRhYmFzZU1hbmFnZXI+KCktPnNl
dFBhdXNlQWxsRGF0YWJhc2VzKGZhbHNlKTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRl
ZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOldlYlVJQXBwbGljYXRpb25XaWxsRW50
ZXJGb3JlZ3JvdW5kTm90aWZpY2F0aW9uIG9iamVjdDpuaWxdOwogfQogCit2b2lkIFdlYlBhZ2U6
OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKK3sKKyAgICBXZWJQcm9jZXNzOjpzaW5n
bGV0b24oKS5zdXBwbGVtZW50PFdlYkRhdGFiYXNlTWFuYWdlcj4oKS0+c2V0UGF1c2VBbGxEYXRh
YmFzZXMoKTsKK30KKwogdm9pZCBXZWJQYWdlOjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgp
CiB7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZp
Y2F0aW9uTmFtZTpXZWJVSUFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlTm90aWZpY2F0aW9uIG9i
amVjdDpuaWxdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252442</attachid>
            <date>2015-05-05 20:21:44 -0700</date>
            <delta_ts>2015-05-05 20:29:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144657-20150505202028.patch</filename>
            <type>text/plain</type>
            <size>13992</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNhNDlhZDBkZDNlZDIw
NzAwM2NlODhmMGJlNjhiYTJjYzk2NjhhYS4uZmFlMTY2YjZhZTM1Njc2ZTRiMTU5ZDAwNjBiOGFk
ZjM5ZjNhNzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA1LTA1ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXVtXSzJdIFBhdXNl
L3Jlc3VtZSBkYXRhYmFzZSB0aHJlYWQgd2hlbiBVSVByb2Nlc3MgZW50ZXJzL2xlYXZlcyB0aGUg
YmFja2dyb3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0NjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRXhwb3J0IFdlYkNvcmUgZnVuY3Rpb25hbGl0eSB0byBwYXVzZSBhbmQgcmVzdW1lIHRoZSBk
YXRhYmFzZSB0aHJlYWQgc28gdGhhdCB3ZSBjYW4KKyAgICAgICAgbWFrZSB1c2Ugb2YgdGhpcyBm
dW5jdGlvbmFsaXR5IGZyb20gV2ViS2l0Mi4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6c2V0UGF1c2VBbGxEYXRhYmFzZXMpOiBBZGRlZDsgdHVybnMgYXJvdW5kIGFuZCBjYWxscyBE
YXRhYmFzZVNlcnZlcjo6c2V0UGF1c2VBbGxEYXRhYmFzZXMoKS4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTZXJ2
ZXI6OnNldFBhdXNlQWxsRGF0YWJhc2VzKTogQWRkZWQ7IHR1cm5zIGFyb3VuZCBhbmQgY2FsbHMK
KyAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VzUGF1c2VkKCkg
dG8gcGF1c2Ugb3IgcmVzdW1lIHRoZSBkYXRhYmFzZSB0aHJlYWQuCisgICAgICAgIEZvciBub3cs
IHdlIGd1YXJkIHRoaXMgY2FsbCB3aXRoIFBMQVRGT1JNKElPUykuIFdlJ2xsIGxvb2sgdG8gcmVt
b3ZlIHRoaXMgZ3VhcmQgb25jZQorICAgICAgICB3ZSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjA+LgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VTZXJ2ZXIuaDoKKwogMjAxNS0wNS0wNCAgSmF2aWVyIEZlcm5hbmRleiAgPGpm
ZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ1NTIEJveCBBbGlnbm1lbnRdIFVwZ3Jh
ZGUganVzdGlmeS1jb250ZW50IHBhcnNpbmcgdG8gQ1NTMyBCb3ggQWxpZ25tZW50IHNwZWMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggNzkwYzlhOGVjYTNkNmJkZTQxMTg4YWU5ODAxYjgyZTNjZTYxMzkzNy4uMGYz
NjIwYjQ4NGE1Nzg0NGJjYzdlN2NmNGFlNjkwNDYxZTY3ZWNmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMyIEBACisyMDE1LTA1LTA1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
KworICAgICAgICBbaU9TXVtXSzJdIFBhdXNlL3Jlc3VtZSBkYXRhYmFzZSB0aHJlYWQgd2hlbiBV
SVByb2Nlc3MgZW50ZXJzL2xlYXZlcyB0aGUgYmFja2dyb3VuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjU3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF1c2UgYW5kIHJlc3VtZSB0aGUgZGF0YWJh
c2UgdGhyZWFkIHdoZW4gdGhlIFVJUHJvY2VzcyBlbnRlcnMgYW5kIGxlYXZlcyB0aGUgYmFja2dy
b3VuZCwKKyAgICAgICAgcmVzcGVjdGl2ZWx5LCBzbyB0aGF0IHdlIGF2b2lkIFdlYlByb2Nlc3Mg
dGVybWluYXRpb24gZHVlIHRvIGhvbGRpbmcgYSBsb2NrZWQgU1FMaXRlCisgICAgICAgIGRhdGFi
YXNlIGZpbGUgd2hlbiB0aGUgV2ViUHJvY2VzcyBpcyBzdXNwZW5kZWQuIFRoaXMgYmVoYXZpb3Ig
bWF0Y2hlcyB0aGUgYW5hbGFnb3VzCisgICAgICAgIGJlaGF2aW9yIGluIExlZ2FjeSBXZWJLaXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hcHBs
aWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDpdKTogQ2FsbCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKKyAgICAgICAgd2hlbiB0aGUgVUlQcm9jZXNzIGVudGVy
cyB0aGUgYmFja2dyb3VuZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZCk6IEFkZGVkOyBwYXVzZSB0aGUgZGF0YWJhc2UgdGhyZWFkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRQYXVzZUFsbERhdGFiYXNlcyk6IEFk
ZGVkOyB0dXJucyBhcm91bmQgYW5kIGNhbGxzIERhdGFiYXNlTWFuYWdlcjo6c2V0UGF1c2VBbGxE
YXRhYmFzZXMoKS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFi
YXNlTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZCBtZXNz
YWdlIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkuIEFsc28sCisgICAgICAgIGFkZCBl
bXB0eSBsaW5lcyB0byBoZWxwIGRlbWFyY2F0ZSB0aGlzIG1lc3NhZ2UgYW5kIHRoZSBvdGhlciBV
SUtpdCBhcHBsaWNhdGlvbiBsaWZlY3ljbGUtcmVsYXRlZAorICAgICAgICBtZXNzYWdlcyBmcm9t
IHRoZSByZXN0IG9mIHRoZSBsaXN0IG9mIG1lc3NhZ2VzLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKTogUmVzdW1lIHRoZSBkYXRhYmFzZSB0aHJlYWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KTogUGF1c2UgdGhlIGRhdGFiYXNlIHRocmVhZC4KKwogMjAxNS0wNS0wNCAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dURl0gUmVtb3ZlIEZ1bmN0aW9u
YWwuaCBpbmNsdXNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCmluZGV4IDYwZWQ4YmY4MjgxNjEw
OGIxNjcwMzNiOGRlNmE3MDhhYjVhYWVkOTguLjNlMjRlYjZmNDQ4YzA1YTRhNGQ1YjZjMDBhODg4
NDA3ZTY1M2Y2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCkBAIC03MSw2ICs3MSw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgbmFtZSkgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIHNldFBhdXNlQWxsRGF0YWJh
c2VzKGJvb2wpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXNG
b3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQ29udGV4dCopID0gMDsKIAogcHJvdGVjdGVkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwCmluZGV4IGFlNGExNGM2MDRkZjEzMzk3M2ZkMDYyYzBjMTJjZDkzYjc0ZWYxZmMuLmQ4
Mjg0YzFiYTFiYmQzNjgzNWI0NjdlMzljYjE0ZmU1NGI5MDIwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKQEAg
LTM5Nyw2ICszOTcsMTEgQEAgYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbV9z
ZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CiB9CiAKK3ZvaWQgRGF0YWJhc2VN
YW5hZ2VyOjpzZXRQYXVzZUFsbERhdGFiYXNlcyhib29sIHBhdXNlQWxsRGF0YWJhc2VzKQorewor
ICAgIG1fc2VydmVyLT5zZXRQYXVzZUFsbERhdGFiYXNlcyhwYXVzZUFsbERhdGFiYXNlcyk7Cit9
CisKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgUmVmUHRyPERhdGFiYXNl
Q29udGV4dD4gZGF0YWJhc2VDb250ZXh0ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGb3IoY29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuaAppbmRleCAyMjI1N2NiOTAzY2RmM2RhOWY0ODE3NTg2YzM2NjliNjA4YmY2
ZjVhLi41MzlmNTU1ZGZlNzUzNDVhMmFjMzAxMjBjMDViZDVkYjNkYzBjZmQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgK
QEAgLTEwMyw2ICsxMDMsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxl
dGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0
ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF1c2VBbGxEYXRhYmFzZXMoYm9vbCk7CisKICAgICB2b2lk
IGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlU2VydmVyLmNwcAppbmRleCBhZWU3MGZhNjgzMTU5NGQ4MDVkMWQ4MTJlYzk1
OTBiNWIyMDlkMzhiLi5iNWQ4M2ZmYTVjZjNjMTYyNDI0Mzk0ODA4YjY2MTdmZGUwYTU1NGVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
U2VydmVyLmNwcApAQCAtMTA4LDYgKzEwOCwxMyBAQCBib29sIERhdGFiYXNlU2VydmVyOjpkZWxl
dGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKG9yaWdp
biwgbmFtZSk7CiB9CiAKK3ZvaWQgRGF0YWJhc2VTZXJ2ZXI6OnNldFBhdXNlQWxsRGF0YWJhc2Vz
KGJvb2wgcGF1c2VBbGxEYXRhYmFzZXMpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlc1BhdXNlZChwYXVzZUFsbERhdGFiYXNl
cyk7CisjZW5kaWYKK30KKwogdm9pZCBEYXRhYmFzZVNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJh
c2VzRm9yQ29udGV4dChjb25zdCBEYXRhYmFzZUNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgRGF0
YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChj
b250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2Uv
RGF0YWJhc2VTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VTZXJ2ZXIuaAppbmRleCA1YzU1ZDU1Y2Y5ZGQwMzI3MTE4N2Q5NjRmNzE1NThkNzYxNmNk
ODk1Li45OWM3NTE4YzVmNmJlNDQ3MzE1Y2NmM2I5YzVkMGM3Yzk1MDFjOWU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oCkBA
IC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlT3JpZ2luKFNl
Y3VyaXR5T3JpZ2luKik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRQYXVz
ZUFsbERhdGFiYXNlcyhib29sKSBvdmVycmlkZTsKKwogICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1
cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQ29udGV4dCopOwogCiBwcm90
ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZmE1Nzc3
Mzg2MzE2YjllODViYjcxNzhhYmIwM2FkNDYwNjBhM2I3Zi4uZWY3YTNhY2U5N2RjMzY2MmE5OWZm
ZDVjMDUyZTBlY2E3OTIwNGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaApAQCAtNDkzLDkgKzQ5MywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5v
ZGVWYWx1ZShjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVZhbHVlQXNO
dW1iZXIoZG91YmxlKTsKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVNlbGVjdGVkSW5kZXgodWlu
dDMyX3QgaW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbiA9IGZhbHNlKTsKKwogICAg
IHZvaWQgYXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCk7CisgICAgdm9pZCBhcHBsaWNh
dGlvbkRpZEVudGVyQmFja2dyb3VuZCgpOwogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsUmVzaWdu
QWN0aXZlKCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworCiAgICAg
dm9pZCB6b29tVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1TY2FsZSwg
ZG91YmxlIG1heGltdW1TY2FsZSk7CiAgICAgdm9pZCBjb21taXRQb3RlbnRpYWxUYXBGYWlsZWQo
KTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZVRhcEFzQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpp
bmRleCBkZTcwZjY0NjEyMzE0ZTUxMjMwMjk5YWQwMTc5MDU4NWEyOTFiNWIwLi41YzM2M2JiZjQy
NzE0YmZlZWZkYzhmMmRlYWNmNjY5NzkzMjkwNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCkBAIC01NTEsNiArNTUxLDcgQEAgLSAodm9pZClf
YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9u
CiAtICh2b2lkKV9hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24q
KW5vdGlmaWNhdGlvbgogewogICAgIF9pc0JhY2tncm91bmQgPSBZRVM7CisgICAgX3BhZ2UtPmFw
cGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7CiAgICAgX3BhZ2UtPnZpZXdTdGF0ZURpZENo
YW5nZShWaWV3U3RhdGU6OkFsbEZsYWdzICYgflZpZXdTdGF0ZTo6SXNJbldpbmRvdyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5k
ZXggYzFhMmI4ZTVkYmU0Njc3MTQ5NTJkMjQ0YzBjYWFiNzNhZWMzYmJlOC4uYjU0YWJjZjQ4MjE5
NDJkOWFlMGQ0MDM2MTNhN2Q3MGNiYmY2M2RjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTU5OCw2ICs1OTgsMTEgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpCiAgICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQoKSwgbV9wYWdlSUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRF
bnRlckJhY2tncm91bmQoKQoreworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6QXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKSwgbV9wYWdlSUQpOworfQorCiB2b2lk
IFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKIHsKICAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2
ZSgpLCBtX3BhZ2VJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggOTI1MjJl
MTUzOGFiNTg0NGY1NWY3ODJhNDRjZGM3OGJmMGFkNWMwMi4uMTMxZjBlMzhkNmJmMTkzOTlmNjFk
MmM3YmMwYmU3NDI4MGI0OWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAt
MTM3LDYgKzEzNywxMSBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsRGF0YWJh
c2VzKCkgY29uc3QKICAgICBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRlbGV0ZUFsbERh
dGFiYXNlcygpOwogfQogCit2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UGF1c2VBbGxEYXRh
YmFzZXMoYm9vbCBwYXVzZUFsbERhdGFiYXNlcykKK3sKKyAgICBEYXRhYmFzZU1hbmFnZXI6OnNp
bmdsZXRvbigpLnNldFBhdXNlQWxsRGF0YWJhc2VzKHBhdXNlQWxsRGF0YWJhc2VzKTsKK30KKwog
dm9pZCBXZWJEYXRhYmFzZU1hbmFnZXI6OnNldFF1b3RhRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYg
b3JpZ2luSWRlbnRpZmllciwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKSBjb25zdAogewogICAg
IC8vIElmIHRoZSBxdW90YSBpcyBzZXQgdG8gYSB2YWx1ZSBsb3dlciB0aGFuIHRoZSBjdXJyZW50
IHVzYWdlLCB0aGF0IHF1b3RhIHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCmluZGV4IGE5
ZTZiMzEwNTc4NDFhNGNjMzhjOTM4OTYzYTFjOTkxM2U4ODI4ODUuLjQ4MzhiNzg2ODgwNmUzYTAy
ZjA2MTM5NzM0N2UwNzhmNDlhYmI3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaApAQCAt
NDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRRdW90YUZvck9yaWdpbihjb25zdCBT
dHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgY29uc3Q7
CiAgICAgdm9pZCBkZWxldGVBbGxEYXRhYmFzZXMoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0UGF1
c2VBbGxEYXRhYmFzZXMoYm9vbCA9IHRydWUpOworCiBwcml2YXRlOgogICAgIC8vIFdlYlByb2Nl
c3NTdXBwbGVtZW50CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzVlOWE0Y2ViNTk5ZmU5ODA3ODEzOWM0OGM4MjU2
NTI4YzE4MWZhNy4uYjAxNmFjODI3OTYxYTllYmEzMDUxNzQ3NmE1Zjk3YThhNDI5NmM5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC03ODMsOSAr
NzgzLDEyIEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29u
c3QgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYsIGRvdWJsZSBvbGRlc3RUaW1lc3RhbXAp
OwogICAgIGJvb2wgc2NhbGVXYXNTZXRCeVVJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fc2Nh
bGVXYXNTZXRCeVVJUHJvY2VzczsgfQogICAgIHZvaWQgd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpv
b21pbmcoKTsKKwogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCk7CiAgICAg
dm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKTsKKyAgICB2b2lkIGFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFj
dGl2ZSgpOworCiAgICAgdm9pZCB6b29tVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91Ymxl
IG1pbmltdW1TY2FsZSwgZG91YmxlIG1heGltdW1TY2FsZSk7CiAgICAgdm9pZCBjb21wbGV0ZVBl
bmRpbmdTeW50aGV0aWNDbGlja0ZvckNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOwogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3Nh
Z2VzLmluCmluZGV4IGIzOGJhMDE2YTZlYTZkNjJlYmMyOGYzMGE1Yjc4OTQwZDA2OTE5OWUuLjVi
ZWM3YmJiN2U2ZGMzZjg2NDIwODNmN2M1NmQ3MTE2NmM3ZDFlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC04
Nyw5ICs4NywxMiBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBT
ZXRBc3Npc3RlZE5vZGVWYWx1ZShTdHJpbmcgdmFsdWUpCiAgICAgU2V0QXNzaXN0ZWROb2RlVmFs
dWVBc051bWJlcihkb3VibGUgdmFsdWUpCiAgICAgU2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRl
eCh1aW50MzJfdCBpbmRleCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uKQorCiAgICAgQXBw
bGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKICAgICBBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVn
cm91bmQoKQorICAgIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKICAgICBBcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZSgpCisKICAgICBDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdl
KFN0cmluZyBjb250ZW50U2l6ZUNhdGVnb3J5KQogICAgIEV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhD
YWxsYmFjayhTdHJpbmcgbmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBHZXRMb29rdXBD
b250ZXh0QXRQb2ludChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFn
ZUlPUy5tbQppbmRleCAyMjAxOWVlOTljOGVhNDYzOGEzNzZhNjZlMTAxZTMzNTRmMTRkM2ZkLi5m
NjNiMTg4ODE0ZWY3NDVkYzc4ODdiZThlN2E1NTVhOWUwZDU2MzNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Miw2
ICs0Miw3IEBACiAjaW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLmgiCiAj
aW1wb3J0ICJXZWJDaHJvbWVDbGllbnQuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVy
cy5oIgorI2ltcG9ydCAiV2ViRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJGcmFtZS5o
IgogI2ltcG9ydCAiV2ViSW1hZ2UuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5o
IgpAQCAtMjcxNyw5ICsyNzE4LDE1IEBAIHZvaWQgV2ViUGFnZTo6YXBwbGljYXRpb25XaWxsUmVz
aWduQWN0aXZlKCkKIAogdm9pZCBXZWJQYWdlOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91
bmQoKQogeworICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViRGF0YWJh
c2VNYW5hZ2VyPigpLT5zZXRQYXVzZUFsbERhdGFiYXNlcyhmYWxzZSk7CiAgICAgW1tOU05vdGlm
aWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJVSUFw
cGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKIH0K
IAordm9pZCBXZWJQYWdlOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCit7CisgICAg
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJEYXRhYmFzZU1hbmFnZXI+KCkt
PnNldFBhdXNlQWxsRGF0YWJhc2VzKCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6YXBwbGljYXRpb25E
aWRCZWNvbWVBY3RpdmUoKQogewogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENl
bnRlcl0gcG9zdE5vdGlmaWNhdGlvbk5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2
ZU5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252443</attachid>
            <date>2015-05-05 20:30:00 -0700</date>
            <delta_ts>2015-05-06 14:55:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144657-20150505202845.patch</filename>
            <type>text/plain</type>
            <size>14037</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNhNDlhZDBkZDNlZDIw
NzAwM2NlODhmMGJlNjhiYTJjYzk2NjhhYS4uZmFlMTY2YjZhZTM1Njc2ZTRiMTU5ZDAwNjBiOGFk
ZjM5ZjNhNzUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA1LTA1ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXVtXSzJdIFBhdXNl
L3Jlc3VtZSBkYXRhYmFzZSB0aHJlYWQgd2hlbiBVSVByb2Nlc3MgZW50ZXJzL2xlYXZlcyB0aGUg
YmFja2dyb3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0NjU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgRXhwb3J0IFdlYkNvcmUgZnVuY3Rpb25hbGl0eSB0byBwYXVzZSBhbmQgcmVzdW1lIHRoZSBk
YXRhYmFzZSB0aHJlYWQgc28gdGhhdCB3ZSBjYW4KKyAgICAgICAgbWFrZSB1c2Ugb2YgdGhpcyBm
dW5jdGlvbmFsaXR5IGZyb20gV2ViS2l0Mi4KKworICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6c2V0UGF1c2VBbGxEYXRhYmFzZXMpOiBBZGRlZDsgdHVybnMgYXJvdW5kIGFuZCBjYWxscyBE
YXRhYmFzZVNlcnZlcjo6c2V0UGF1c2VBbGxEYXRhYmFzZXMoKS4KKyAgICAgICAgKiBNb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VTZXJ2
ZXI6OnNldFBhdXNlQWxsRGF0YWJhc2VzKTogQWRkZWQ7IHR1cm5zIGFyb3VuZCBhbmQgY2FsbHMK
KyAgICAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuc2V0RGF0YWJhc2VzUGF1c2VkKCkg
dG8gcGF1c2Ugb3IgcmVzdW1lIHRoZSBkYXRhYmFzZSB0aHJlYWQuCisgICAgICAgIEZvciBub3cs
IHdlIGd1YXJkIHRoaXMgY2FsbCB3aXRoIFBMQVRGT1JNKElPUykuIFdlJ2xsIGxvb2sgdG8gcmVt
b3ZlIHRoaXMgZ3VhcmQgb25jZQorICAgICAgICB3ZSBmaXggPGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ2NjA+LgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2VTZXJ2ZXIuaDoKKwogMjAxNS0wNS0wNCAgSmF2aWVyIEZlcm5hbmRleiAgPGpm
ZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbQ1NTIEJveCBBbGlnbm1lbnRdIFVwZ3Jh
ZGUganVzdGlmeS1jb250ZW50IHBhcnNpbmcgdG8gQ1NTMyBCb3ggQWxpZ25tZW50IHNwZWMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggNzkwYzlhOGVjYTNkNmJkZTQxMTg4YWU5ODAxYjgyZTNjZTYxMzkzNy4uMGYz
NjIwYjQ4NGE1Nzg0NGJjYzdlN2NmNGFlNjkwNDYxZTY3ZWNmYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMyIEBACisyMDE1LTA1LTA1ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4K
KworICAgICAgICBbaU9TXVtXSzJdIFBhdXNlL3Jlc3VtZSBkYXRhYmFzZSB0aHJlYWQgd2hlbiBV
SVByb2Nlc3MgZW50ZXJzL2xlYXZlcyB0aGUgYmFja2dyb3VuZAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NjU3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGF1c2UgYW5kIHJlc3VtZSB0aGUgZGF0YWJh
c2UgdGhyZWFkIHdoZW4gdGhlIFVJUHJvY2VzcyBlbnRlcnMgYW5kIGxlYXZlcyB0aGUgYmFja2dy
b3VuZCwKKyAgICAgICAgcmVzcGVjdGl2ZWx5LCBzbyB0aGF0IHdlIGF2b2lkIFdlYlByb2Nlc3Mg
dGVybWluYXRpb24gZHVlIHRvIGhvbGRpbmcgYSBsb2NrZWQgU1FMaXRlCisgICAgICAgIGRhdGFi
YXNlIGZpbGUgd2hlbiB0aGUgV2ViUHJvY2VzcyBpcyBzdXNwZW5kZWQuIFRoaXMgYmVoYXZpb3Ig
bWF0Y2hlcyB0aGUgYW5hbGFnb3VzCisgICAgICAgIGJlaGF2aW9yIGluIExlZ2FjeSBXZWJLaXQu
CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IF9hcHBs
aWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDpdKTogQ2FsbCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0
aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKKyAgICAgICAgd2hlbiB0aGUgVUlQcm9jZXNzIGVudGVy
cyB0aGUgYmFja2dyb3VuZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZCk6IEFkZGVkOyBwYXVzZSB0aGUgZGF0YWJhc2UgdGhyZWFkLgorICAgICAgICAq
IFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpzZXRQYXVzZUFsbERhdGFiYXNlcyk6IEFk
ZGVkOyB0dXJucyBhcm91bmQgYW5kIGNhbGxzIERhdGFiYXNlTWFuYWdlcjo6c2V0UGF1c2VBbGxE
YXRhYmFzZXMoKS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFi
YXNlTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46IEFkZCBtZXNz
YWdlIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkuIEFsc28sCisgICAgICAgIGFkZCBl
bXB0eSBsaW5lcyB0byBoZWxwIGRlbWFyY2F0ZSB0aGlzIG1lc3NhZ2UgYW5kIHRoZSBvdGhlciBV
SUtpdCBhcHBsaWNhdGlvbiBsaWZlY3ljbGUtcmVsYXRlZAorICAgICAgICBtZXNzYWdlcyBmcm9t
IHRoZSByZXN0IG9mIHRoZSBsaXN0IG9mIG1lc3NhZ2VzLgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6YXBw
bGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKTogUmVzdW1lIHRoZSBkYXRhYmFzZSB0aHJlYWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KTogUGF1c2UgdGhlIGRhdGFiYXNlIHRocmVhZC4KKwogMjAxNS0wNS0wNCAgWmFuIERvYmVyc2Vr
ICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dURl0gUmVtb3ZlIEZ1bmN0aW9u
YWwuaCBpbmNsdXNpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRh
dGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCmluZGV4IDYwZWQ4YmY4MjgxNjEw
OGIxNjcwMzNiOGRlNmE3MDhhYjVhYWVkOTguLjNlMjRlYjZmNDQ4YzA1YTRhNGQ1YjZjMDBhODg4
NDA3ZTY1M2Y2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCkBAIC03MSw2ICs3MSw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKikgPSAw
OwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgbmFtZSkgPSAwOwogCisgICAgdmlydHVhbCB2b2lkIHNldFBhdXNlQWxsRGF0YWJh
c2VzKGJvb2wpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXNG
b3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQ29udGV4dCopID0gMDsKIAogcHJvdGVjdGVkOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwCmluZGV4IGFlNGExNGM2MDRkZjEzMzk3M2ZkMDYyYzBjMTJjZDkzYjc0ZWYxZmMuLmQ4
Mjg0YzFiYTFiYmQzNjgzNWI0NjdlMzljYjE0ZmU1NGI5MDIwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKQEAg
LTM5Nyw2ICszOTcsMTEgQEAgYm9vbCBEYXRhYmFzZU1hbmFnZXI6OmRlbGV0ZURhdGFiYXNlKFNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICByZXR1cm4gbV9z
ZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CiB9CiAKK3ZvaWQgRGF0YWJhc2VN
YW5hZ2VyOjpzZXRQYXVzZUFsbERhdGFiYXNlcyhib29sIHBhdXNlQWxsRGF0YWJhc2VzKQorewor
ICAgIG1fc2VydmVyLT5zZXRQYXVzZUFsbERhdGFiYXNlcyhwYXVzZUFsbERhdGFiYXNlcyk7Cit9
CisKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgUmVmUHRyPERhdGFiYXNl
Q29udGV4dD4gZGF0YWJhc2VDb250ZXh0ID0gZXhpc3RpbmdEYXRhYmFzZUNvbnRleHRGb3IoY29u
dGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRh
YmFzZU1hbmFnZXIuaAppbmRleCAyMjI1N2NiOTAzY2RmM2RhOWY0ODE3NTg2YzM2NjliNjA4YmY2
ZjVhLi41MzlmNTU1ZGZlNzUzNDVhMmFjMzAxMjBjMDViZDVkYjNkYzBjZmQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgK
QEAgLTEwMyw2ICsxMDMsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxl
dGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGRlbGV0
ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF1c2VBbGxEYXRhYmFzZXMoYm9vbCk7CisKICAgICB2b2lk
IGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZVNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlU2VydmVyLmNwcAppbmRleCBhZWU3MGZhNjgzMTU5NGQ4MDVkMWQ4MTJlYzk1
OTBiNWIyMDlkMzhiLi41NTE0NGQ4MzY5YWJlODNlZDljMjc5ZTM0NGMxOGVkYzgzNTRjYzI2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2Vy
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
U2VydmVyLmNwcApAQCAtMTA4LDYgKzEwOCwxNSBAQCBib29sIERhdGFiYXNlU2VydmVyOjpkZWxl
dGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAg
ICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLmRlbGV0ZURhdGFiYXNlKG9yaWdp
biwgbmFtZSk7CiB9CiAKK3ZvaWQgRGF0YWJhc2VTZXJ2ZXI6OnNldFBhdXNlQWxsRGF0YWJhc2Vz
KGJvb2wgcGF1c2VBbGxEYXRhYmFzZXMpCit7CisjaWYgUExBVEZPUk0oSU9TKQorICAgIERhdGFi
YXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNlc1BhdXNlZChwYXVzZUFsbERhdGFiYXNl
cyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwYXVzZUFsbERhdGFiYXNlcyk7CisjZW5kaWYK
K30KKwogdm9pZCBEYXRhYmFzZVNlcnZlcjo6aW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4
dChjb25zdCBEYXRhYmFzZUNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgRGF0YWJhc2VUcmFja2Vy
Ojp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb250ZXh0KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIu
aAppbmRleCA1YzU1ZDU1Y2Y5ZGQwMzI3MTE4N2Q5NjRmNzE1NThkNzYxNmNkODk1Li45OWM3NTE4
YzVmNmJlNDQ3MzE1Y2NmM2I5YzVkMGM3Yzk1MDFjOWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oCkBAIC02MCw2ICs2MCw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2lu
Kik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29u
c3QgU3RyaW5nJiBuYW1lKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRQYXVzZUFsbERhdGFiYXNl
cyhib29sKSBvdmVycmlkZTsKKwogICAgIHZpcnR1YWwgdm9pZCBpbnRlcnJ1cHRBbGxEYXRhYmFz
ZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQ29udGV4dCopOwogCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggZmE1Nzc3Mzg2MzE2YjllODVi
YjcxNzhhYmIwM2FkNDYwNjBhM2I3Zi4uZWY3YTNhY2U5N2RjMzY2MmE5OWZmZDVjMDUyZTBlY2E3
OTIwNGUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtNDkz
LDkgKzQ5MywxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVWYWx1ZShjb25z
dCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVZhbHVlQXNOdW1iZXIoZG91Ymxl
KTsKICAgICB2b2lkIHNldEFzc2lzdGVkTm9kZVNlbGVjdGVkSW5kZXgodWludDMyX3QgaW5kZXgs
IGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbiA9IGZhbHNlKTsKKwogICAgIHZvaWQgYXBwbGlj
YXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKCk7CisgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVy
QmFja2dyb3VuZCgpOwogICAgIHZvaWQgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCk7CiAg
ICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworCiAgICAgdm9pZCB6b29tVG9S
ZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1TY2FsZSwgZG91YmxlIG1heGlt
dW1TY2FsZSk7CiAgICAgdm9pZCBjb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKTsKICAgICB2b2lk
IGRpZE5vdEhhbmRsZVRhcEFzQ2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQppbmRleCBkZTcwZjY0
NjEyMzE0ZTUxMjMwMjk5YWQwMTc5MDU4NWEyOTFiNWIwLi41YzM2M2JiZjQyNzE0YmZlZWZkYzhm
MmRlYWNmNjY5NzkzMjkwNzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tCkBAIC01NTEsNiArNTUxLDcgQEAgLSAodm9pZClfYXBwbGljYXRpb25X
aWxsUmVzaWduQWN0aXZlOihOU05vdGlmaWNhdGlvbiopbm90aWZpY2F0aW9uCiAtICh2b2lkKV9h
cHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZDooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNhdGlv
bgogewogICAgIF9pc0JhY2tncm91bmQgPSBZRVM7CisgICAgX3BhZ2UtPmFwcGxpY2F0aW9uRGlk
RW50ZXJCYWNrZ3JvdW5kKCk7CiAgICAgX3BhZ2UtPnZpZXdTdGF0ZURpZENoYW5nZShWaWV3U3Rh
dGU6OkFsbEZsYWdzICYgflZpZXdTdGF0ZTo6SXNJbldpbmRvdyk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggYzFhMmI4ZTVk
YmU0Njc3MTQ5NTJkMjQ0YzBjYWFiNzNhZWMzYmJlOC4uYjU0YWJjZjQ4MjE5NDJkOWFlMGQ0MDM2
MTNhN2Q3MGNiYmY2M2RjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTU5OCw2ICs1OTgsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKSwgbV9wYWdl
SUQpOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91
bmQoKQoreworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRp
b25EaWRFbnRlckJhY2tncm91bmQoKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94
eTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKIHsKICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpLCBtX3BhZ2VJ
RCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggOTI1MjJlMTUzOGFiNTg0NGY1
NWY3ODJhNDRjZGM3OGJmMGFkNWMwMi4uMTMxZjBlMzhkNmJmMTkzOTlmNjFkMmM3YmMwYmU3NDI4
MGI0OWRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTM3LDYgKzEzNywx
MSBAQCB2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkgY29uc3QK
ICAgICBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOwog
fQogCit2b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UGF1c2VBbGxEYXRhYmFzZXMoYm9vbCBw
YXVzZUFsbERhdGFiYXNlcykKK3sKKyAgICBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLnNl
dFBhdXNlQWxsRGF0YWJhc2VzKHBhdXNlQWxsRGF0YWJhc2VzKTsKK30KKwogdm9pZCBXZWJEYXRh
YmFzZU1hbmFnZXI6OnNldFF1b3RhRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRp
ZmllciwgdW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKSBjb25zdAogewogICAgIC8vIElmIHRoZSBx
dW90YSBpcyBzZXQgdG8gYSB2YWx1ZSBsb3dlciB0aGFuIHRoZSBjdXJyZW50IHVzYWdlLCB0aGF0
IHF1b3RhIHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCmluZGV4IGE5ZTZiMzEwNTc4NDFh
NGNjMzhjOTM4OTYzYTFjOTkxM2U4ODI4ODUuLjQ4MzhiNzg2ODgwNmUzYTAyZjA2MTM5NzM0N2Uw
NzhmNDlhYmI3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaApAQCAtNDYsNiArNDYsOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRRdW90YUZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgY29uc3Q7CiAgICAgdm9pZCBk
ZWxldGVBbGxEYXRhYmFzZXMoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0UGF1c2VBbGxEYXRhYmFz
ZXMoYm9vbCA9IHRydWUpOworCiBwcml2YXRlOgogICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVtZW50
CiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKaW5kZXggYzVlOWE0Y2ViNTk5ZmU5ODA3ODEzOWM0OGM4MjU2NTI4YzE4MWZhNy4u
YjAxNmFjODI3OTYxYTllYmEzMDUxNzQ3NmE1Zjk3YThhNDI5NmM5NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC03ODMsOSArNzgzLDEyIEBAIHB1
YmxpYzoKICAgICB2b2lkIHVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3QgVmlzaWJsZUNv
bnRlbnRSZWN0VXBkYXRlSW5mbyYsIGRvdWJsZSBvbGRlc3RUaW1lc3RhbXApOwogICAgIGJvb2wg
c2NhbGVXYXNTZXRCeVVJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVXYXNTZXRCeVVJ
UHJvY2VzczsgfQogICAgIHZvaWQgd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcoKTsKKwog
ICAgIHZvaWQgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCk7CiAgICAgdm9pZCBhcHBsaWNh
dGlvbldpbGxFbnRlckZvcmVncm91bmQoKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kKCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpOworCiAg
ICAgdm9pZCB6b29tVG9SZWN0KFdlYkNvcmU6OkZsb2F0UmVjdCwgZG91YmxlIG1pbmltdW1TY2Fs
ZSwgZG91YmxlIG1heGltdW1TY2FsZSk7CiAgICAgdm9pZCBjb21wbGV0ZVBlbmRpbmdTeW50aGV0
aWNDbGlja0ZvckNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4
IGIzOGJhMDE2YTZlYTZkNjJlYmMyOGYzMGE1Yjc4OTQwZDA2OTE5OWUuLjViZWM3YmJiN2U2ZGMz
Zjg2NDIwODNmN2M1NmQ3MTE2NmM3ZDFlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC04Nyw5ICs4NywxMiBA
QCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVyIHsKICAgICBTZXRBc3Npc3RlZE5v
ZGVWYWx1ZShTdHJpbmcgdmFsdWUpCiAgICAgU2V0QXNzaXN0ZWROb2RlVmFsdWVBc051bWJlcihk
b3VibGUgdmFsdWUpCiAgICAgU2V0QXNzaXN0ZWROb2RlU2VsZWN0ZWRJbmRleCh1aW50MzJfdCBp
bmRleCwgYm9vbCBhbGxvd011bHRpcGxlU2VsZWN0aW9uKQorCiAgICAgQXBwbGljYXRpb25XaWxs
UmVzaWduQWN0aXZlKCkKICAgICBBcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKQorICAg
IEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKCkKICAgICBBcHBsaWNhdGlvbkRpZEJlY29t
ZUFjdGl2ZSgpCisKICAgICBDb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKFN0cmluZyBjb250
ZW50U2l6ZUNhdGVnb3J5KQogICAgIEV4ZWN1dGVFZGl0Q29tbWFuZFdpdGhDYWxsYmFjayhTdHJp
bmcgbmFtZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBHZXRMb29rdXBDb250ZXh0QXRQb2lu
dChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCwgdWludDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCAyMjAxOWVlOTljOGVhNDYzOGEzNzZhNjZlMTAxZTMzNTRmMTRkM2ZkLi5mNjNiMTg4ODE0ZWY3
NDVkYzc4ODdiZThlN2E1NTVhOWUwZDU2MzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Miw2ICs0Miw3IEBACiAj
aW1wb3J0ICJXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLmgiCiAjaW1wb3J0ICJXZWJD
aHJvbWVDbGllbnQuaCIKICNpbXBvcnQgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgorI2ltcG9y
dCAiV2ViRGF0YWJhc2VNYW5hZ2VyLmgiCiAjaW1wb3J0ICJXZWJGcmFtZS5oIgogI2ltcG9ydCAi
V2ViSW1hZ2UuaCIKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgpAQCAtMjcxNyw5
ICsyNzE4LDE1IEBAIHZvaWQgV2ViUGFnZTo6YXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkK
IAogdm9pZCBXZWJQYWdlOjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKQogeworICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnN1cHBsZW1lbnQ8V2ViRGF0YWJhc2VNYW5hZ2VyPigp
LT5zZXRQYXVzZUFsbERhdGFiYXNlcyhmYWxzZSk7CiAgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRl
ciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpXZWJVSUFwcGxpY2F0aW9uV2ls
bEVudGVyRm9yZWdyb3VuZE5vdGlmaWNhdGlvbiBvYmplY3Q6bmlsXTsKIH0KIAordm9pZCBXZWJQ
YWdlOjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCit7CisgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkuc3VwcGxlbWVudDxXZWJEYXRhYmFzZU1hbmFnZXI+KCktPnNldFBhdXNlQWxs
RGF0YWJhc2VzKCk7Cit9CisKIHZvaWQgV2ViUGFnZTo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3Rp
dmUoKQogewogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcG9zdE5v
dGlmaWNhdGlvbk5hbWU6V2ViVUlBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZU5vdGlmaWNhdGlv
biBvYmplY3Q6bmlsXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252522</attachid>
            <date>2015-05-06 14:55:27 -0700</date>
            <delta_ts>2015-05-06 15:27:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144657-20150506145410.patch</filename>
            <type>text/plain</type>
            <size>14662</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzNzQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmNhNDlhZDBkZDNlZDIw
NzAwM2NlODhmMGJlNjhiYTJjYzk2NjhhYS4uNmE5Njc1MWMzOTgzZDZkYmMwNDdiYTU3N2FmNGRl
Y2FlNGFiN2VlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTA1LTA2ICBEYW5p
ZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXVtXSzJdIFBhdXNl
L3Jlc3VtZSBkYXRhYmFzZSB0aHJlYWQgd2hlbiBVSVByb2Nlc3MgZW50ZXJzL2xlYXZlcyB0aGUg
YmFja2dyb3VuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0NjU3CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xODg5NDU5OD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvcnQgV2ViQ29yZSBmdW5j
dGlvbmFsaXR5IHRvIHBhdXNlIGFuZCByZXN1bWUgdGhlIGRhdGFiYXNlIHRocmVhZCBzbyB0aGF0
IHdlIGNhbgorICAgICAgICBtYWtlIHVzZSBvZiB0aGlzIGZ1bmN0aW9uYWxpdHkgZnJvbSBXZWJL
aXQyLgorCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9BYnN0cmFjdERhdGFiYXNlU2Vy
dmVyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpzZXRQYXVzZUFsbERhdGFiYXNl
cyk6IEFkZGVkOyB0dXJucyBhcm91bmQgYW5kIGNhbGxzIERhdGFiYXNlU2VydmVyOjpzZXRQYXVz
ZUFsbERhdGFiYXNlcygpLgorICAgICAgICAqIE1vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVNlcnZlcjo6c2V0UGF1c2VBbGxEYXRhYmFz
ZXMpOiBBZGRlZDsgdHVybnMgYXJvdW5kIGFuZCBjYWxscworICAgICAgICBEYXRhYmFzZVRyYWNr
ZXI6OnRyYWNrZXIoKS5zZXREYXRhYmFzZXNQYXVzZWQoKSB0byBwYXVzZSBvciByZXN1bWUgdGhl
IGRhdGFiYXNlIHRocmVhZC4KKyAgICAgICAgRm9yIG5vdywgd2UgZ3VhcmQgdGhpcyBjYWxsIHdp
dGggUExBVEZPUk0oSU9TKS4gV2UnbGwgbG9vayB0byByZW1vdmUgdGhpcyBndWFyZCBvbmNlCisg
ICAgICAgIHdlIGZpeCA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0
NDY2MD4uCisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5oOgor
CiAyMDE1LTA1LTA0ICBKYXZpZXIgRmVybmFuZGV6ICA8amZlcm5hbmRlekBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtDU1MgQm94IEFsaWdubWVudF0gVXBncmFkZSBqdXN0aWZ5LWNvbnRlbnQgcGFy
c2luZyB0byBDU1MzIEJveCBBbGlnbm1lbnQgc3BlYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA3OTBjOWE4ZWNh
M2Q2YmRlNDExODhhZTk4MDFiODJlM2NlNjEzOTM3Li5kNTkzYTBjNDNkZTgxY2FhYzE3YjE5Nzk1
OWM0YmRmNDA3OGFjMjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTUtMDUtMDYg
IERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtpT1NdW1dLMl0g
UGF1c2UvcmVzdW1lIGRhdGFiYXNlIHRocmVhZCB3aGVuIFVJUHJvY2VzcyBlbnRlcnMvbGVhdmVz
IHRoZSBiYWNrZ3JvdW5kCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDQ2NTcKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE4ODk0NTk4PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFBhdXNlIGFuZCByZXN1
bWUgdGhlIGRhdGFiYXNlIHRocmVhZCB3aGVuIHRoZSBVSVByb2Nlc3MgZW50ZXJzIGFuZCBsZWF2
ZXMgdGhlIGJhY2tncm91bmQsCisgICAgICAgIHJlc3BlY3RpdmVseSwgc28gdGhhdCB3ZSBhdm9p
ZCBXZWJQcm9jZXNzIHRlcm1pbmF0aW9uIGR1ZSB0byBob2xkaW5nIGEgbG9ja2VkIFNRTGl0ZQor
ICAgICAgICBkYXRhYmFzZSBmaWxlIHdoZW4gdGhlIFdlYlByb2Nlc3MgaXMgc3VzcGVuZGVkLiBU
aGlzIGJlaGF2aW9yIG1hdGNoZXMgdGhlIGFuYWxhZ291cworICAgICAgICBiZWhhdmlvciBpbiBM
ZWdhY3kgV2ViS2l0LgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbToKKyAgICAgICAgKC1bV0tDb250
ZW50VmlldyBfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6XSk6IENhbGwgV2ViUGFnZVBy
b3h5OjphcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpCisgICAgICAgIHdoZW4gdGhlIFVJ
UHJvY2VzcyBlbnRlcnMgdGhlIGJhY2tncm91bmQuCisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6YXBwbGlj
YXRpb25EaWRFbnRlckJhY2tncm91bmQpOiBBZGRlZDsgbm90aWZ5IHRoZSBXZWJQcm9jZXNzIHRv
IHBhdXNlIHRoZSBkYXRhYmFzZSB0aHJlYWQuCisgICAgICAgIFdlIHRlbXBvcmFyaWx5IHRha2Ug
b3V0IGJhY2tncm91bmQgYXNzZXJ0aW9uIG9uIHRoZSBXZWJQcm9jZXNzIGJlZm9yZSBzZW5kaW5n
IHRoaXMgbm90aWZpY2F0aW9uIHRvIGVuc3VyZSB0aGF0IHRoZQorICAgICAgICBXZWJQcm9jZXNz
IGlzIHJ1bm5pbmcgdG8gcmVjZWl2ZSBpdC4gV2UnbGwgcmVsZWFzZSB0aGlzIGFzc2VydGlvbiB3
aGVuIHRoZSBXZWJQcm9jZXNzIHJlcGxpZXMgdGhhdCBpdCByZWNlaXZlZCB0aGUKKyAgICAgICAg
bm90aWZpY2F0aW9uLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRGF0
YWJhc2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGF0YWJhc2VNYW5hZ2VyOjpz
ZXRQYXVzZUFsbERhdGFiYXNlcyk6IEFkZGVkOyB0dXJucyBhcm91bmQgYW5kIGNhbGxzIERhdGFi
YXNlTWFuYWdlcjo6c2V0UGF1c2VBbGxEYXRhYmFzZXMoKS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46IEFkZCBtZXNzYWdlIEFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5k
KCkuIEFsc28sCisgICAgICAgIGFkZCBlbXB0eSBsaW5lcyB0byBoZWxwIGRlbWFyY2F0ZSB0aGlz
IG1lc3NhZ2UgYW5kIHRoZSBvdGhlciBVSUtpdCBhcHBsaWNhdGlvbiBsaWZlY3ljbGUtcmVsYXRl
ZAorICAgICAgICBtZXNzYWdlcyBmcm9tIHRoZSByZXN0IG9mIHRoZSBsaXN0IG9mIG1lc3NhZ2Vz
LgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6YXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kKTogUmVz
dW1lIHRoZSBkYXRhYmFzZSB0aHJlYWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmFwcGxp
Y2F0aW9uRGlkRW50ZXJCYWNrZ3JvdW5kKTogUGF1c2UgdGhlIGRhdGFiYXNlIHRocmVhZC4KKwog
MjAxNS0wNS0wNCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAg
ICAgW1dURl0gUmVtb3ZlIEZ1bmN0aW9uYWwuaCBpbmNsdXNpb25zCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0Fic3RyYWN0RGF0YWJhc2VTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZl
ci5oCmluZGV4IDYwZWQ4YmY4MjgxNjEwOGIxNjcwMzNiOGRlNmE3MDhhYjVhYWVkOTguLjNlMjRl
YjZmNDQ4YzA1YTRhNGQ1YjZjMDBhODg4NDA3ZTY1M2Y2ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvQWJzdHJhY3REYXRhYmFzZVNlcnZl
ci5oCkBAIC03MSw2ICs3MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlT3Jp
Z2luKFNlY3VyaXR5T3JpZ2luKikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBkZWxldGVEYXRhYmFz
ZShTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgbmFtZSkgPSAwOwogCisgICAgdmlydHVh
bCB2b2lkIHNldFBhdXNlQWxsRGF0YWJhc2VzKGJvb2wpID0gMDsKKwogICAgIHZpcnR1YWwgdm9p
ZCBpbnRlcnJ1cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KGNvbnN0IERhdGFiYXNlQ29udGV4dCop
ID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IGFlNGExNGM2MDRkZjEzMzk3M2Zk
MDYyYzBjMTJjZDkzYjc0ZWYxZmMuLmQ4Mjg0YzFiYTFiYmQzNjgzNWI0NjdlMzljYjE0ZmU1NGI5
MDIwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0
YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTM5Nyw2ICszOTcsMTEgQEAgYm9vbCBEYXRhYmFzZU1h
bmFnZXI6OmRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICAgICByZXR1cm4gbV9zZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgbmFt
ZSk7CiB9CiAKK3ZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzZXRQYXVzZUFsbERhdGFiYXNlcyhib29s
IHBhdXNlQWxsRGF0YWJhc2VzKQoreworICAgIG1fc2VydmVyLT5zZXRQYXVzZUFsbERhdGFiYXNl
cyhwYXVzZUFsbERhdGFiYXNlcyk7Cit9CisKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjppbnRlcnJ1
cHRBbGxEYXRhYmFzZXNGb3JDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgUmVmUHRyPERhdGFiYXNlQ29udGV4dD4gZGF0YWJhc2VDb250ZXh0ID0gZXhpc3Rp
bmdEYXRhYmFzZUNvbnRleHRGb3IoY29udGV4dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuaAppbmRleCAyMjI1N2NiOTAzY2Rm
M2RhOWY0ODE3NTg2YzM2NjliNjA4YmY2ZjVhLi41MzlmNTU1ZGZlNzUzNDVhMmFjMzAxMjBjMDVi
ZDVkYjNkYzBjZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmgKQEAgLTEwMyw2ICsxMDMsOCBAQCBwdWJsaWM6CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVPcmlnaW4oU2VjdXJpdHlPcmlnaW4qKTsKICAgICBX
RUJDT1JFX0VYUE9SVCBib29sIGRlbGV0ZURhdGFiYXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3Qg
U3RyaW5nJiBuYW1lKTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0UGF1c2VBbGxEYXRh
YmFzZXMoYm9vbCk7CisKICAgICB2b2lkIGludGVycnVwdEFsbERhdGFiYXNlc0ZvckNvbnRleHQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVNlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcAppbmRleCBhZWU3
MGZhNjgzMTU5NGQ4MDVkMWQ4MTJlYzk1OTBiNWIyMDlkMzhiLi41NTE0NGQ4MzY5YWJlODNlZDlj
Mjc5ZTM0NGMxOGVkYzgzNTRjYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlU2VydmVyLmNwcApAQCAtMTA4LDYgKzEwOCwxNSBAQCBi
b29sIERhdGFiYXNlU2VydmVyOjpkZWxldGVEYXRhYmFzZShTZWN1cml0eU9yaWdpbiogb3JpZ2lu
LCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgcmV0dXJuIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tl
cigpLmRlbGV0ZURhdGFiYXNlKG9yaWdpbiwgbmFtZSk7CiB9CiAKK3ZvaWQgRGF0YWJhc2VTZXJ2
ZXI6OnNldFBhdXNlQWxsRGF0YWJhc2VzKGJvb2wgcGF1c2VBbGxEYXRhYmFzZXMpCit7CisjaWYg
UExBVEZPUk0oSU9TKQorICAgIERhdGFiYXNlVHJhY2tlcjo6dHJhY2tlcigpLnNldERhdGFiYXNl
c1BhdXNlZChwYXVzZUFsbERhdGFiYXNlcyk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShwYXVz
ZUFsbERhdGFiYXNlcyk7CisjZW5kaWYKK30KKwogdm9pZCBEYXRhYmFzZVNlcnZlcjo6aW50ZXJy
dXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBEYXRhYmFzZUNvbnRleHQqIGNvbnRleHQp
CiB7CiAgICAgRGF0YWJhc2VUcmFja2VyOjp0cmFja2VyKCkuaW50ZXJydXB0QWxsRGF0YWJhc2Vz
Rm9yQ29udGV4dChjb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2VTZXJ2ZXIuaAppbmRleCA1YzU1ZDU1Y2Y5ZGQwMzI3MTE4N2Q5NjRm
NzE1NThkNzYxNmNkODk1Li4zODQ4ODRkZmE1NjQwODc5NTQxYjU4MGQ1Nzk2MzAxYjA5NTExY2Jj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
U2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFz
ZVNlcnZlci5oCkBAIC02MCw2ICs2MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgZGVs
ZXRlT3JpZ2luKFNlY3VyaXR5T3JpZ2luKik7CiAgICAgdmlydHVhbCBib29sIGRlbGV0ZURhdGFi
YXNlKFNlY3VyaXR5T3JpZ2luKiwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAorICAgIHZvaWQgc2V0
UGF1c2VBbGxEYXRhYmFzZXMoYm9vbCkgb3ZlcnJpZGU7CisKICAgICB2aXJ0dWFsIHZvaWQgaW50
ZXJydXB0QWxsRGF0YWJhc2VzRm9yQ29udGV4dChjb25zdCBEYXRhYmFzZUNvbnRleHQqKTsKIAog
cHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGZh
NTc3NzM4NjMxNmI5ZTg1YmI3MTc4YWJiMDNhZDQ2MDYwYTNiN2YuLmVmN2EzYWNlOTdkYzM2NjJh
OTlmZmQ1YzA1MmUwZWNhNzkyMDRlMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKQEAgLTQ5Myw5ICs0OTMsMTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXNzaXN0
ZWROb2RlVmFsdWUoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVWYWx1
ZUFzTnVtYmVyKGRvdWJsZSk7CiAgICAgdm9pZCBzZXRBc3Npc3RlZE5vZGVTZWxlY3RlZEluZGV4
KHVpbnQzMl90IGluZGV4LCBib29sIGFsbG93TXVsdGlwbGVTZWxlY3Rpb24gPSBmYWxzZSk7CisK
ICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpOworICAgIHZvaWQgYXBw
bGljYXRpb25EaWRFbnRlckJhY2tncm91bmQoKTsKICAgICB2b2lkIGFwcGxpY2F0aW9uV2lsbFJl
c2lnbkFjdGl2ZSgpOwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKTsKKwog
ICAgIHZvaWQgem9vbVRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QsIGRvdWJsZSBtaW5pbXVtU2Nh
bGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpOwogICAgIHZvaWQgY29tbWl0UG90ZW50aWFsVGFwRmFp
bGVkKCk7CiAgICAgdm9pZCBkaWROb3RIYW5kbGVUYXBBc0NsaWNrKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29u
dGVudFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcu
bW0KaW5kZXggZGU3MGY2NDYxMjMxNGU1MTIzMDI5OWFkMDE3OTA1ODVhMjkxYjViMC4uNWMzNjNi
YmY0MjcxNGJmZWVmZGM4ZjJkZWFjZjY2OTc5MzI5MDcwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlldy5tbQpAQCAtNTUxLDYgKzU1MSw3IEBAIC0gKHZv
aWQpX2FwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZTooTlNOb3RpZmljYXRpb24qKW5vdGlmaWNh
dGlvbgogLSAodm9pZClfYXBwbGljYXRpb25EaWRFbnRlckJhY2tncm91bmQ6KE5TTm90aWZpY2F0
aW9uKilub3RpZmljYXRpb24KIHsKICAgICBfaXNCYWNrZ3JvdW5kID0gWUVTOworICAgIF9wYWdl
LT5hcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCgpOwogICAgIF9wYWdlLT52aWV3U3RhdGVE
aWRDaGFuZ2UoVmlld1N0YXRlOjpBbGxGbGFncyAmIH5WaWV3U3RhdGU6OklzSW5XaW5kb3cpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CmluZGV4IGMxYTJiOGU1ZGJlNDY3NzE0OTUyZDI0NGMwY2FhYjczYWVjM2JiZTguLmNiNzc1YjM1
MzgwMzlmMDEwZDQ3MGEwZGZjZWUxMGNmNzgwYTI0NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC01OTgsNiArNTk4LDEyIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQoKQogICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6QXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kKCksIG1fcGFnZUlEKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OmFwcGxpY2F0aW9u
RGlkRW50ZXJCYWNrZ3JvdW5kKCkKK3sKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KHN0ZDo6ZnVuY3Rpb248dm9pZCAoQ2FsbGJhY2tCYXNlOjpFcnJvcik+KCksIG1f
cHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5VG9rZW4oKSk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dy
b3VuZChjYWxsYmFja0lEKSwgbV9wYWdlSUQpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBw
bGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCkKIHsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OkFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpLCBtX3BhZ2VJRCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkRh
dGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkRhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggOTI1MjJlMTUzOGFiNTg0NGY1NWY3ODJh
NDRjZGM3OGJmMGFkNWMwMi4uMTMxZjBlMzhkNmJmMTkzOTlmNjFkMmM3YmMwYmU3NDI4MGI0OWRi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJEYXRhYmFzZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmNwcApAQCAtMTM3LDYgKzEzNywxMSBAQCB2
b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6ZGVsZXRlQWxsRGF0YWJhc2VzKCkgY29uc3QKICAgICBE
YXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLmRlbGV0ZUFsbERhdGFiYXNlcygpOwogfQogCit2
b2lkIFdlYkRhdGFiYXNlTWFuYWdlcjo6c2V0UGF1c2VBbGxEYXRhYmFzZXMoYm9vbCBwYXVzZUFs
bERhdGFiYXNlcykKK3sKKyAgICBEYXRhYmFzZU1hbmFnZXI6OnNpbmdsZXRvbigpLnNldFBhdXNl
QWxsRGF0YWJhc2VzKHBhdXNlQWxsRGF0YWJhc2VzKTsKK30KKwogdm9pZCBXZWJEYXRhYmFzZU1h
bmFnZXI6OnNldFF1b3RhRm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwg
dW5zaWduZWQgbG9uZyBsb25nIHF1b3RhKSBjb25zdAogewogICAgIC8vIElmIHRoZSBxdW90YSBp
cyBzZXQgdG8gYSB2YWx1ZSBsb3dlciB0aGFuIHRoZSBjdXJyZW50IHVzYWdlLCB0aGF0IHF1b3Rh
IHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYkRhdGFiYXNlTWFuYWdlci5oCmluZGV4IGE5ZTZiMzEwNTc4NDFhNGNjMzhj
OTM4OTYzYTFjOTkxM2U4ODI4ODUuLjQ4MzhiNzg2ODgwNmUzYTAyZjA2MTM5NzM0N2UwNzhmNDlh
YmI3ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvV2ViRGF0YWJhc2VNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJEYXRhYmFzZU1hbmFnZXIuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRRdW90YUZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50
aWZpZXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBxdW90YSkgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVB
bGxEYXRhYmFzZXMoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0UGF1c2VBbGxEYXRhYmFzZXMoYm9v
bCA9IHRydWUpOworCiBwcml2YXRlOgogICAgIC8vIFdlYlByb2Nlc3NTdXBwbGVtZW50CiAgICAg
dmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmgKaW5kZXggYzVlOWE0Y2ViNTk5ZmU5ODA3ODEzOWM0OGM4MjU2NTI4YzE4MWZhNy4uZDNlNTYy
ZmY2NWEzNjNiNzkyODE2YjA5ZmZjNTg3YWNhZjU1NzMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC03ODMsOSArNzgzLDEyIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3QgVmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlSW5mbyYsIGRvdWJsZSBvbGRlc3RUaW1lc3RhbXApOwogICAgIGJvb2wgc2NhbGVX
YXNTZXRCeVVJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVXYXNTZXRCeVVJUHJvY2Vz
czsgfQogICAgIHZvaWQgd2lsbFN0YXJ0VXNlclRyaWdnZXJlZFpvb21pbmcoKTsKKwogICAgIHZv
aWQgYXBwbGljYXRpb25XaWxsUmVzaWduQWN0aXZlKCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldp
bGxFbnRlckZvcmVncm91bmQoKTsKKyAgICB2b2lkIGFwcGxpY2F0aW9uRGlkRW50ZXJCYWNrZ3Jv
dW5kKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQgYXBwbGljYXRpb25EaWRCZWNvbWVB
Y3RpdmUoKTsKKwogICAgIHZvaWQgem9vbVRvUmVjdChXZWJDb3JlOjpGbG9hdFJlY3QsIGRvdWJs
ZSBtaW5pbXVtU2NhbGUsIGRvdWJsZSBtYXhpbXVtU2NhbGUpOwogICAgIHZvaWQgY29tcGxldGVQ
ZW5kaW5nU3ludGhldGljQ2xpY2tGb3JDb250ZW50Q2hhbmdlT2JzZXJ2ZXIoKTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgppbmRleCBiMzhiYTAxNmE2ZWE2ZDYyZWJjMjhmMzBhNWI3ODk0MGQwNjkxOTllLi4x
Zjc0ZGU2OTgyZTQ1YzNjNDdjZGNiOGE2MDU2MjAwODk1OGI0YjBiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAt
ODcsOSArODcsMTIgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAgICAg
U2V0QXNzaXN0ZWROb2RlVmFsdWUoU3RyaW5nIHZhbHVlKQogICAgIFNldEFzc2lzdGVkTm9kZVZh
bHVlQXNOdW1iZXIoZG91YmxlIHZhbHVlKQogICAgIFNldEFzc2lzdGVkTm9kZVNlbGVjdGVkSW5k
ZXgodWludDMyX3QgaW5kZXgsIGJvb2wgYWxsb3dNdWx0aXBsZVNlbGVjdGlvbikKKwogICAgIEFw
cGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZSgpCiAgICAgQXBwbGljYXRpb25XaWxsRW50ZXJGb3Jl
Z3JvdW5kKCkKKyAgICBBcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3VuZCh1aW50NjRfdCBjYWxs
YmFja0lEKQogICAgIEFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKKwogICAgIENvbnRlbnRT
aXplQ2F0ZWdvcnlEaWRDaGFuZ2UoU3RyaW5nIGNvbnRlbnRTaXplQ2F0ZWdvcnkpCiAgICAgRXhl
Y3V0ZUVkaXRDb21tYW5kV2l0aENhbGxiYWNrKFN0cmluZyBuYW1lLCB1aW50NjRfdCBjYWxsYmFj
a0lEKQogICAgIEdldExvb2t1cENvbnRleHRBdFBvaW50KFdlYkNvcmU6OkludFBvaW50IHBvaW50
LCB1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDIyMDE5ZWU5OWM4ZWE0NjM4YTM3NmE2
NmUxMDFlMzM1NGYxNGQzZmQuLjIwZTAxZmFjYTJhYzljZGNkZmE5OTJiMmIzMTBkM2JlMTVjMjQ2
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW0KQEAgLTQyLDYgKzQyLDcgQEAKICNpbXBvcnQgIldLQWNjZXNzaWJpbGl0eVdl
YlBhZ2VPYmplY3RJT1MuaCIKICNpbXBvcnQgIldlYkNocm9tZUNsaWVudC5oIgogI2ltcG9ydCAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW1wb3J0ICJXZWJEYXRhYmFzZU1hbmFnZXIuaCIK
ICNpbXBvcnQgIldlYkZyYW1lLmgiCiAjaW1wb3J0ICJXZWJJbWFnZS5oIgogI2ltcG9ydCAiV2Vi
S2l0U3lzdGVtSW50ZXJmYWNlLmgiCkBAIC0yNzE3LDkgKzI3MTgsMTYgQEAgdm9pZCBXZWJQYWdl
OjphcHBsaWNhdGlvbldpbGxSZXNpZ25BY3RpdmUoKQogCiB2b2lkIFdlYlBhZ2U6OmFwcGxpY2F0
aW9uV2lsbEVudGVyRm9yZWdyb3VuZCgpCiB7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
c3VwcGxlbWVudDxXZWJEYXRhYmFzZU1hbmFnZXI+KCktPnNldFBhdXNlQWxsRGF0YWJhc2VzKGZh
bHNlKTsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3Rp
ZmljYXRpb25OYW1lOldlYlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kTm90aWZpY2F0
aW9uIG9iamVjdDpuaWxdOwogfQogCit2b2lkIFdlYlBhZ2U6OmFwcGxpY2F0aW9uRGlkRW50ZXJC
YWNrZ3JvdW5kKHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xl
dG9uKCkuc3VwcGxlbWVudDxXZWJEYXRhYmFzZU1hbmFnZXI+KCktPnNldFBhdXNlQWxsRGF0YWJh
c2VzKCk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2soY2Fs
bGJhY2tJRCkpOworfQorCiB2b2lkIFdlYlBhZ2U6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZl
KCkKIHsKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3Rp
ZmljYXRpb25OYW1lOldlYlVJQXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmVOb3RpZmljYXRpb24g
b2JqZWN0Om5pbF07Cg==
</data>
<flag name="review"
          id="277361"
          type_id="1"
          status="+"
          setter="aestes"
    />
          </attachment>
      

    </bug>

</bugzilla>