<?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>143452</bug_id>
          
          <creation_ts>2015-04-06 12:38:18 -0700</creation_ts>
          <short_desc>[Mac] WebKit is not honoring operating system preferences for secondary click behavior</short_desc>
          <delta_ts>2015-04-08 22:55:29 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>ap</cc>
    
    <cc>bdakin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1083144</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-06 12:38:18 -0700</bug_when>
    <thetext>Users can adjust their system preference for how secondary click is interpreted by the operating system. WebKit is improperly hard-coding the button number for these mouse events, resulting in improper behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083145</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-06 12:38:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/20437483&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083146</commentid>
    <comment_count>2</comment_count>
      <attachid>250222</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-06 12:42:04 -0700</bug_when>
    <thetext>Created attachment 250222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083200</commentid>
    <comment_count>3</comment_count>
      <attachid>250240</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-06 16:24:59 -0700</bug_when>
    <thetext>Created attachment 250240
Patch (Corrects WK1 and WK2 cases)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083314</commentid>
    <comment_count>4</comment_count>
      <attachid>250267</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-07 08:55:32 -0700</bug_when>
    <thetext>Created attachment 250267
Patch (v3: iOS Fixes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083354</commentid>
    <comment_count>5</comment_count>
      <attachid>250267</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-07 11:13:17 -0700</bug_when>
    <thetext>Comment on attachment 250267
Patch (v3: iOS Fixes)

I don&apos;t think this is the right solution. You&apos;ll note that Ctrl-Click hands the DOM a &quot;left mouse down&quot;, so clearly context menus do not require a &quot;right mouse button&quot; click. And, we should lie and re-map what AppKit says about which button went down. So, please find a solution that doesn&apos;t involve remapping the buttons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083446</commentid>
    <comment_count>6</comment_count>
      <attachid>250306</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-07 14:45:21 -0700</bug_when>
    <thetext>Created attachment 250306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083448</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-07 14:48:38 -0700</bug_when>
    <thetext>Attachment 250306 did not pass style-queue:


ERROR: Source/WebCore/platform/PlatformMouseEvent.h:75:  Wrong number of spaces before statement. (expected: 31)  [whitespace/indent] [4]
Total errors found: 1 in 13 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>1083450</commentid>
    <comment_count>8</comment_count>
      <attachid>250306</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-07 15:02:45 -0700</bug_when>
    <thetext>Comment on attachment 250306
Patch

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

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:1268
&gt; +bool WebPage::shouldBeHandledAsContextClick(const PlatformMouseEvent&amp; event)

Can this be static and can it live in WebEventFactory, right near typeForEvent?

&gt; Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm:1271
&gt; +    if (event.button() == WebCore::LeftButton &amp;&amp; event.ctrlKey())
&gt; +        return true;

Can we make sure that event.menuTypeForEvent is NSMenuTypeContextMenu and get rid of this logic?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083468</commentid>
    <comment_count>9</comment_count>
      <attachid>250313</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-07 16:16:59 -0700</bug_when>
    <thetext>Created attachment 250313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083470</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-07 16:19:13 -0700</bug_when>
    <thetext>Attachment 250313 did not pass style-queue:


ERROR: Source/WebCore/platform/PlatformMouseEvent.h:75:  Wrong number of spaces before statement. (expected: 31)  [whitespace/indent] [4]
Total errors found: 1 in 12 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>1083549</commentid>
    <comment_count>11</comment_count>
      <attachid>250334</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-07 22:23:22 -0700</bug_when>
    <thetext>Created attachment 250334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083550</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-07 22:25:49 -0700</bug_when>
    <thetext>Attachment 250334 did not pass style-queue:


ERROR: Source/WebCore/platform/PlatformMouseEvent.h:75:  Wrong number of spaces before statement. (expected: 31)  [whitespace/indent] [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>1083734</commentid>
    <comment_count>13</comment_count>
      <attachid>250385</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-08 14:19:05 -0700</bug_when>
    <thetext>Created attachment 250385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083737</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-08 14:22:30 -0700</bug_when>
    <thetext>Attachment 250385 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:46:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:47:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:48:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:50:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:51:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:52:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/platform/PlatformMouseEvent.h:75:  Wrong number of spaces before statement. (expected: 31)  [whitespace/indent] [4]
ERROR: Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm:230:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm:231:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm:232:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm:234:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm:235:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm:236:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 13 in 19 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>1083759</commentid>
    <comment_count>15</comment_count>
      <attachid>250385</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-08 16:00:35 -0700</bug_when>
    <thetext>Comment on attachment 250385
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKit2/MenuTypesForMouseEvents.cpp:72
&gt; +TEST(WebKit2, NormalLeftClick)

these should have better names. The concatenated name WebKit2.NormalLeftClick will show up as the name of the test in the test runner. Maybe add something like NormalLeftClickMenuType or something?

&gt; Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:49
&gt; +                                    windowNumber:[[webView.get() window] windowNumber]

No .get()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083814</commentid>
    <comment_count>16</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-08 19:42:24 -0700</bug_when>
    <thetext>Committed r182581: &lt;http://trac.webkit.org/changeset/182581&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083823</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-08 20:18:21 -0700</bug_when>
    <thetext>The new API tests fail everywhere: https://build.webkit.org/builders/Apple%20Yosemite%20Release%20WK1%20%28Tests%29/builds/4301/steps/run-api-tests/logs/stdio

/Volumes/Data/slave/yosemite-release/build/Tools/TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:59
Value of: pme.menuTypeForEvent()
  Actual: 0
Expected: expectedMenu
Which is: 1

Should we roll out?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083831</commentid>
    <comment_count>18</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-08 20:39:40 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; The new API tests fail everywhere:
&gt; https://build.webkit.org/builders/
&gt; Apple%20Yosemite%20Release%20WK1%20%28Tests%29/builds/4301/steps/run-api-
&gt; tests/logs/stdio
&gt; 
&gt; /Volumes/Data/slave/yosemite-release/build/Tools/TestWebKitAPI/Tests/mac/
&gt; MenuTypesForMouseEvents.mm:59
&gt; Value of: pme.menuTypeForEvent()
&gt;   Actual: 0
&gt; Expected: expectedMenu
&gt; Which is: 1
&gt; 
&gt; Should we roll out?

I&apos;ll check in a fix. This is apparently a system preference, which I didn&apos;t notice when I tested locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083836</commentid>
    <comment_count>19</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-08 20:43:36 -0700</bug_when>
    <thetext>Attempted fix checked in as r182584:

Committed r182584: &lt;http://trac.webkit.org/changeset/182584&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083838</commentid>
    <comment_count>20</comment_count>
    <who name="">mitz</who>
    <bug_when>2015-04-08 20:44:58 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; Attempted fix checked in as r182584:
&gt; 
&gt; Committed r182584: &lt;http://trac.webkit.org/changeset/182584&gt;

Normally we set up consistent user defaults for testing so that the tests pass no matter what the global system preferences are. Can’t we do that here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083858</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-08 21:33:47 -0700</bug_when>
    <thetext>We certainly can&apos;t expect one who sees a failing test to look for comments in the code. The tests should just pass unconditionally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083875</commentid>
    <comment_count>22</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-08 22:41:46 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; We certainly can&apos;t expect one who sees a failing test to look for comments
&gt; in the code. The tests should just pass unconditionally.

It turns out that this was not related to system preferences; it was an improper bitwise comparison. Interesting that the EWS did not catch this.

Does EWS not run the API tests?

Fix committed in r182589 &lt;https://trac.webkit.org/changeset/182589&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1083876</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-04-08 22:55:29 -0700</bug_when>
    <thetext>&gt; Does EWS not run the API tests?

It does not.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250222</attachid>
            <date>2015-04-06 12:42:04 -0700</date>
            <delta_ts>2015-04-06 16:24:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143452-20150406124128.patch</filename>
            <type>text/plain</type>
            <size>3649</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBpcyBu
b3QgaG9ub3JpbmcgT1MgcHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50J3Mg
YnV0dG9uIG51bWJlciB0byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdodCBo
YXZlCisgICAgICAgIG1hcHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRjLiBJ
bnN0ZWFkLCB3ZSBzaG91bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAgICB0
aGUgcHJvcGVyIGJ1dHRvbiBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vdXNl
QnV0dG9uRm9yRXZlbnQpOiBBc2sgTlNNZW51IHdoYXQga2luZCBvZiBidXR0b24gcHJlc3Mgd2Ug
aGF2ZSByZWNlaXZlZC4KKwogMjAxNS0wNC0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYSBSZW5kZXJPYmplY3QgYml0IGZvciBpc1JlbmRl
ckZsb3dUaHJlYWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
RXZlbnRGYWN0b3J5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQkocmV2aXNpb24gMTgyNDMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIktleUV2ZW50Q29jb2EuaCIK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIk5TTWVudVNQSS5oIgogI2ltcG9ydCAiUGxh
dGZvcm1TY3JlZW4uaCIKICNpbXBvcnQgIlNjcm9sbGJhci5oIgogI2ltcG9ydCAiV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oIgpAQCAtOTcsNiArOTgsOSBAQCBzdGF0aWMgSW50UG9pbnQgcG9pbnRG
b3JFdmVudChOU0V2ZW50ICplCiAKIHN0YXRpYyBNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbkZvckV2
ZW50KE5TRXZlbnQgKmV2ZW50KQogeworICAgIGlmIChbTlNNZW51IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IobWVudVR5cGVGb3JFdmVudDopXSAmJiBbTlNNZW51IG1lbnVUeXBlRm9yRXZl
bnQ6ZXZlbnRdID09IE5TTWVudVR5cGVDb250ZXh0TWVudSkKKyAgICAgICAgcmV0dXJuIFJpZ2h0
QnV0dG9uOworCiAgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKICAgICAgICAgY2FzZSBOU0xl
ZnRNb3VzZURvd246CiAgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBpcyBub3QgaG9ub3JpbmcgT1Mg
cHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlvcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1MgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50J3MgYnV0dG9uIG51bWJlciB0
byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdodCBoYXZlCisgICAgICAgIG1h
cHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRjLiBJbnN0ZWFkLCB3ZSBzaG91
bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAgICB0aGUgcHJvcGVyIGJ1dHRv
biBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIFNoYXJlZC9tYWMvV2ViRXZlbnRGYWN0
b3J5Lm1tOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUJ1dHRvbkZvckV2ZW50KTogQXNrIE5TTWVu
dSB3aGF0IGtpbmQgb2YgYnV0dG9uIHByZXNzIHdlIGhhdmUgcmVjZWl2ZWQuCisKIDIwMTUtMDQt
MDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODIyOTYuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQkocmV2aXNpb24gMTgyNDMwKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTlNNZW51U1BJ
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dzS2V5Ym9hcmRD
b2Rlcy5oPgpAQCAtNjIsNiArNjMsOSBAQCBzdGF0aWMgV2ViTW91c2VFdmVudDo6QnV0dG9uIGN1
cnJlbnRNb3VzCiAKIHN0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b25Gb3JF
dmVudChOU0V2ZW50ICpldmVudCkKIHsKKyAgICBpZiAoW05TTWVudSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKG1lbnVUeXBlRm9yRXZlbnQ6KV0gJiYgW05TTWVudSBtZW51VHlwZUZvckV2
ZW50OmV2ZW50XSA9PSBOU01lbnVUeXBlQ29udGV4dE1lbnUpCisgICAgICAgIHJldHVybiBXZWJN
b3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKwogICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CiAg
ICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgogICAgICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250240</attachid>
            <date>2015-04-06 16:24:59 -0700</date>
            <delta_ts>2015-04-07 08:55:28 -0700</delta_ts>
            <desc>Patch (Corrects WK1 and WK2 cases)</desc>
            <filename>bug-143452-20150406162410.patch</filename>
            <type>text/plain</type>
            <size>5675</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBpcyBu
b3QgaG9ub3JpbmcgT1MgcHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50J3Mg
YnV0dG9uIG51bWJlciB0byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdodCBo
YXZlCisgICAgICAgIG1hcHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRjLiBJ
bnN0ZWFkLCB3ZSBzaG91bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAgICB0
aGUgcHJvcGVyIGJ1dHRvbiBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vdXNl
QnV0dG9uRm9yRXZlbnQpOiBBc2sgTlNNZW51IHdoYXQga2luZCBvZiBidXR0b24gcHJlc3Mgd2Ug
aGF2ZSByZWNlaXZlZC4KKwogMjAxNS0wNC0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYSBSZW5kZXJPYmplY3QgYml0IGZvciBpc1JlbmRl
ckZsb3dUaHJlYWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
RXZlbnRGYWN0b3J5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQkocmV2aXNpb24gMTgyNDMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIktleUV2ZW50Q29jb2EuaCIK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIk5TTWVudVNQSS5oIgogI2ltcG9ydCAiUGxh
dGZvcm1TY3JlZW4uaCIKICNpbXBvcnQgIlNjcm9sbGJhci5oIgogI2ltcG9ydCAiV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oIgpAQCAtOTcsNiArOTgsOSBAQCBzdGF0aWMgSW50UG9pbnQgcG9pbnRG
b3JFdmVudChOU0V2ZW50ICplCiAKIHN0YXRpYyBNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbkZvckV2
ZW50KE5TRXZlbnQgKmV2ZW50KQogeworICAgIGlmIChbTlNNZW51IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IobWVudVR5cGVGb3JFdmVudDopXSAmJiBbTlNNZW51IG1lbnVUeXBlRm9yRXZl
bnQ6ZXZlbnRdID09IE5TTWVudVR5cGVDb250ZXh0TWVudSkKKyAgICAgICAgcmV0dXJuIFJpZ2h0
QnV0dG9uOworCiAgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKICAgICAgICAgY2FzZSBOU0xl
ZnRNb3VzZURvd246CiAgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBpcyBub3QgaG9ub3JpbmcgT1Mg
cHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlvcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1MgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50J3MgYnV0dG9uIG51bWJlciB0
byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdodCBoYXZlCisgICAgICAgIG1h
cHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRjLiBJbnN0ZWFkLCB3ZSBzaG91
bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAgICB0aGUgcHJvcGVyIGJ1dHRv
biBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIFNoYXJlZC9tYWMvV2ViRXZlbnRGYWN0
b3J5Lm1tOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUJ1dHRvbkZvckV2ZW50KTogQXNrIE5TTWVu
dSB3aGF0IGtpbmQgb2YgYnV0dG9uIHByZXNzIHdlIGhhdmUgcmVjZWl2ZWQuCisKIDIwMTUtMDQt
MDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODIyOTYuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQkocmV2aXNpb24gMTgyNDMwKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTlNNZW51U1BJ
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dzS2V5Ym9hcmRD
b2Rlcy5oPgpAQCAtNjIsNiArNjMsOSBAQCBzdGF0aWMgV2ViTW91c2VFdmVudDo6QnV0dG9uIGN1
cnJlbnRNb3VzCiAKIHN0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b25Gb3JF
dmVudChOU0V2ZW50ICpldmVudCkKIHsKKyAgICBpZiAoW05TTWVudSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKG1lbnVUeXBlRm9yRXZlbnQ6KV0gJiYgW05TTWVudSBtZW51VHlwZUZvckV2
ZW50OmV2ZW50XSA9PSBOU01lbnVUeXBlQ29udGV4dE1lbnUpCisgICAgICAgIHJldHVybiBXZWJN
b3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKwogICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CiAg
ICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgogICAgICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI0NDUpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0wNC0w
NiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBX
ZWJLaXQgaXMgbm90IGhvbm9yaW5nIE9TIHByZWZlcmVuY2VzIGZvciBzZWNvbmRhcnkgY2xpY2sg
YmVoYXZpb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDM0NTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwNDM3NDgzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdlcmUgaW1wcm9wZXJseSBp
bnRlcmNlcHRpbmcgY29udGV4dHVhbCBtZW51IGNsaWNrcyBhbmQgcGFzc2luZyB0aGVtIHRocm91
Z2gKKyAgICAgICAgdGhlIG1vdXNlRG93biBoYW5kbGVyLCByYXRoZXIgdGhhbiBwcm9jZXNzaW5n
IHZpYSBOU1ZpZXcncyBtZW51IGhhbmRsaW5nIGNvZGUuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBvdGhlck1vdXNlRG93bjpdKTog
VHJlYXQgY29udGV4dCBtZW51IGV2ZW50cyB0aGUgc2FtZSBhcyB0aGUgYWN0aW9uCisgICAgICAg
IG1lbnUgY2FzZSwgYW5kIHBhc3MgaXQgdG8gQXBwS2l0IGZvciBub3JtYWwgbWVudSBwcm9jZXNz
aW5nLiAKKwogMjAxNS0wNC0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgImdvIGFoZWFkIGFuZCIgZnJvbSBjb21tZW50cwpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAxODI0MzAp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDYsNiArMTA2LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvTGVnYWN5V2ViQXJjaGl2
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9NSU1FVHlwZVJlZ2lzdHJ5Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL01haW5GcmFtZS5oPgorI2ltcG9ydCA8V2ViQ29yZS9OU01lbnVTUEkuaD4KICNpbXBvcnQg
PFdlYkNvcmUvTlNVUkxGaWxlVHlwZU1hcHBpbmdzU1BJLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Bh
Z2UuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmFuZ2UuaD4KQEAgLTUzOTIsNyArNTM5Myw4IEBAIC0g
KHZvaWQpX3dpbmRvd0NoYW5nZWRLZXlTdGF0ZQogI2lmICFQTEFURk9STShJT1MpCiAtICh2b2lk
KW90aGVyTW91c2VEb3duOihOU0V2ZW50ICopZXZlbnQKIHsKLSAgICBpZiAoW2V2ZW50IGJ1dHRv
bk51bWJlcl0gIT0gMiB8fCAoW05TTWVudSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG1l
bnVUeXBlRm9yRXZlbnQ6KV0gJiYgW05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSA9PSBO
U01lbnVUeXBlQWN0aW9uTWVudSkpIHsKKyAgICBpZiAoW2V2ZW50IGJ1dHRvbk51bWJlcl0gIT0g
MiB8fCAoW05TTWVudSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG1lbnVUeXBlRm9yRXZl
bnQ6KV0KKyAgICAgICAgJiYgKFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0gPT0gTlNN
ZW51VHlwZUFjdGlvbk1lbnUgfHwgW05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSA9PSBO
U01lbnVUeXBlQ29udGV4dE1lbnUpKSkgewogICAgICAgICBbc3VwZXIgb3RoZXJNb3VzZURvd246
ZXZlbnRdOwogICAgICAgICByZXR1cm47CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250267</attachid>
            <date>2015-04-07 08:55:32 -0700</date>
            <delta_ts>2015-04-07 14:45:17 -0700</delta_ts>
            <desc>Patch (v3: iOS Fixes)</desc>
            <filename>bug-143452-20150407085445.patch</filename>
            <type>text/plain</type>
            <size>5418</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA2ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBpcyBu
b3QgaG9ub3JpbmcgT1MgcHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50J3Mg
YnV0dG9uIG51bWJlciB0byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdodCBo
YXZlCisgICAgICAgIG1hcHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRjLiBJ
bnN0ZWFkLCB3ZSBzaG91bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAgICB0
aGUgcHJvcGVyIGJ1dHRvbiBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vdXNl
QnV0dG9uRm9yRXZlbnQpOiBBc2sgTlNNZW51IHdoYXQga2luZCBvZiBidXR0b24gcHJlc3Mgd2Ug
aGF2ZSByZWNlaXZlZC4KKwogMjAxNS0wNC0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYSBSZW5kZXJPYmplY3QgYml0IGZvciBpc1JlbmRl
ckZsb3dUaHJlYWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3Jt
RXZlbnRGYWN0b3J5TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQkocmV2aXNpb24gMTgyNDMwKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbXBvcnQgIktleUV2ZW50Q29jb2EuaCIK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKKyNpbXBvcnQgIk5TTWVudVNQSS5oIgogI2ltcG9ydCAiUGxh
dGZvcm1TY3JlZW4uaCIKICNpbXBvcnQgIlNjcm9sbGJhci5oIgogI2ltcG9ydCAiV2ViQ29yZVN5
c3RlbUludGVyZmFjZS5oIgpAQCAtOTcsNiArOTgsOSBAQCBzdGF0aWMgSW50UG9pbnQgcG9pbnRG
b3JFdmVudChOU0V2ZW50ICplCiAKIHN0YXRpYyBNb3VzZUJ1dHRvbiBtb3VzZUJ1dHRvbkZvckV2
ZW50KE5TRXZlbnQgKmV2ZW50KQogeworICAgIGlmIChbTlNNZW51IHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IobWVudVR5cGVGb3JFdmVudDopXSAmJiBbTlNNZW51IG1lbnVUeXBlRm9yRXZl
bnQ6ZXZlbnRdID09IE5TTWVudVR5cGVDb250ZXh0TWVudSkKKyAgICAgICAgcmV0dXJuIFJpZ2h0
QnV0dG9uOworCiAgICAgc3dpdGNoIChbZXZlbnQgdHlwZV0pIHsKICAgICAgICAgY2FzZSBOU0xl
ZnRNb3VzZURvd246CiAgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA2ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdo
YW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBpcyBub3QgaG9ub3JpbmcgT1Mg
cHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlvcnMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1MgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50J3MgYnV0dG9uIG51bWJlciB0
byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdodCBoYXZlCisgICAgICAgIG1h
cHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRjLiBJbnN0ZWFkLCB3ZSBzaG91
bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAgICB0aGUgcHJvcGVyIGJ1dHRv
biBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIFNoYXJlZC9tYWMvV2ViRXZlbnRGYWN0
b3J5Lm1tOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUJ1dHRvbkZvckV2ZW50KTogQXNrIE5TTWVu
dSB3aGF0IGtpbmQgb2YgYnV0dG9uIHByZXNzIHdlIGhhdmUgcmVjZWl2ZWQuCisKIDIwMTUtMDQt
MDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODIyOTYuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbQkocmV2aXNpb24gMTgyNDMwKQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0JKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAKIAogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNlLmgiCiAjaW1w
b3J0IDxXZWJDb3JlL0tleWJvYXJkRXZlbnQuaD4KKyNpbXBvcnQgPFdlYkNvcmUvTlNNZW51U1BJ
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtRXZlbnRGYWN0b3J5TWFjLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2ltcG9ydCA8V2ViQ29yZS9XaW5kb3dzS2V5Ym9hcmRD
b2Rlcy5oPgpAQCAtNjIsNiArNjMsOSBAQCBzdGF0aWMgV2ViTW91c2VFdmVudDo6QnV0dG9uIGN1
cnJlbnRNb3VzCiAKIHN0YXRpYyBXZWJNb3VzZUV2ZW50OjpCdXR0b24gbW91c2VCdXR0b25Gb3JF
dmVudChOU0V2ZW50ICpldmVudCkKIHsKKyAgICBpZiAoW05TTWVudSByZXNwb25kc1RvU2VsZWN0
b3I6QHNlbGVjdG9yKG1lbnVUeXBlRm9yRXZlbnQ6KV0gJiYgW05TTWVudSBtZW51VHlwZUZvckV2
ZW50OmV2ZW50XSA9PSBOU01lbnVUeXBlQ29udGV4dE1lbnUpCisgICAgICAgIHJldHVybiBXZWJN
b3VzZUV2ZW50OjpSaWdodEJ1dHRvbjsKKwogICAgIHN3aXRjaCAoW2V2ZW50IHR5cGVdKSB7CiAg
ICAgICAgIGNhc2UgTlNMZWZ0TW91c2VEb3duOgogICAgICAgICBjYXNlIE5TTGVmdE1vdXNlVXA6
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI0NDUpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0wNC0w
NiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBX
ZWJLaXQgaXMgbm90IGhvbm9yaW5nIE9TIHByZWZlcmVuY2VzIGZvciBzZWNvbmRhcnkgY2xpY2sg
YmVoYXZpb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDM0NTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwNDM3NDgzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdlcmUgaW1wcm9wZXJseSBp
bnRlcmNlcHRpbmcgY29udGV4dHVhbCBtZW51IGNsaWNrcyBhbmQgcGFzc2luZyB0aGVtIHRocm91
Z2gKKyAgICAgICAgdGhlIG1vdXNlRG93biBoYW5kbGVyLCByYXRoZXIgdGhhbiBwcm9jZXNzaW5n
IHZpYSBOU1ZpZXcncyBtZW51IGhhbmRsaW5nIGNvZGUuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBvdGhlck1vdXNlRG93bjpdKTog
VHJlYXQgY29udGV4dCBtZW51IGV2ZW50cyB0aGUgc2FtZSBhcyB0aGUgYWN0aW9uCisgICAgICAg
IG1lbnUgY2FzZSwgYW5kIHBhc3MgaXQgdG8gQXBwS2l0IGZvciBub3JtYWwgbWVudSBwcm9jZXNz
aW5nLiAKKwogMjAxNS0wNC0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgImdvIGFoZWFkIGFuZCIgZnJvbSBjb21tZW50cwpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAxODI0MzAp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01MzkyLDcgKzUzOTIsOCBAQCAtICh2b2lkKV93aW5kb3dDaGFuZ2VkS2V5U3RhdGUK
ICNpZiAhUExBVEZPUk0oSU9TKQogLSAodm9pZClvdGhlck1vdXNlRG93bjooTlNFdmVudCAqKWV2
ZW50CiB7Ci0gICAgaWYgKFtldmVudCBidXR0b25OdW1iZXJdICE9IDIgfHwgKFtOU01lbnUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildICYmIFtOU01lbnUg
bWVudVR5cGVGb3JFdmVudDpldmVudF0gPT0gTlNNZW51VHlwZUFjdGlvbk1lbnUpKSB7CisgICAg
aWYgKFtldmVudCBidXR0b25OdW1iZXJdICE9IDIgfHwgKFtOU01lbnUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildCisgICAgICAgICYmIChbTlNNZW51IG1l
bnVUeXBlRm9yRXZlbnQ6ZXZlbnRdID09IE5TTWVudVR5cGVBY3Rpb25NZW51IHx8IFtOU01lbnUg
bWVudVR5cGVGb3JFdmVudDpldmVudF0gPT0gTlNNZW51VHlwZUNvbnRleHRNZW51KSkpIHsKICAg
ICAgICAgW3N1cGVyIG90aGVyTW91c2VEb3duOmV2ZW50XTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250306</attachid>
            <date>2015-04-07 14:45:21 -0700</date>
            <delta_ts>2015-04-07 16:16:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143452-20150407144431.patch</filename>
            <type>text/plain</type>
            <size>13518</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA3ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBpcyBu
b3QgaG9ub3JpbmcgT1MgcHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50J3Mg
YnV0dG9uIG51bWJlciB0byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdodCBo
YXZlCisgICAgICAgIG1hcHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRjLiBJ
bnN0ZWFkLCB3ZSBzaG91bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAgICB0
aGUgcHJvcGVyIGJ1dHRvbiBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vdXNl
QnV0dG9uRm9yRXZlbnQpOiBBc2sgTlNNZW51IHdoYXQga2luZCBvZiBidXR0b24gcHJlc3Mgd2Ug
aGF2ZSByZWNlaXZlZC4KKwogMjAxNS0wNC0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYSBSZW5kZXJPYmplY3QgYml0IGZvciBpc1JlbmRl
ckZsb3dUaHJlYWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3Vz
ZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1N
b3VzZUV2ZW50LmgJKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtTW91c2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9tb2RpZmllckZsYWdzKDApCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgICAgICAgICAgLCBtX2V2ZW50TnVtYmVyKDApCisgICAgICAgICAg
ICAsIG1fbWVudVR5cGVGb3JFdmVudCgwKQogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgICAgICAg
ICAgLCBtX2RpZEFjdGl2YXRlV2ViVmlldyhmYWxzZSkKICNlbmRpZgpAQCAtNzEsNiArNzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fbW9kaWZpZXJGbGFncygwKQog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgICAgICwgbV9ldmVudE51bWJlcigwKQorICAgICAg
ICAgICAgLCBtX21lbnVUeXBlRm9yRXZlbnQoMCkKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICAg
ICAgICAgICwgbV9kaWRBY3RpdmF0ZVdlYlZpZXcoZmFsc2UpCiAjZW5kaWYKQEAgLTEwMyw2ICsx
MDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAg
IGludCBldmVudE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnROdW1iZXI7IH0KKyAgICAg
ICAgaW50IG1lbnVUeXBlRm9yRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX21lbnVUeXBlRm9yRXZl
bnQ7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTIzLDYgKzEyNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgaW50IG1fZXZl
bnROdW1iZXI7CisgICAgICAgIGludCBtX21lbnVUeXBlRm9yRXZlbnQ7CiAjZWxpZiBQTEFURk9S
TShXSU4pCiAgICAgICAgIGJvb2wgbV9kaWRBY3RpdmF0ZVdlYlZpZXc7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZh
Y3RvcnlNYWMubW0JKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW1wb3J0ICJLZXlFdmVudENvY29hLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CisjaW1wb3J0ICJOU01lbnVTUEkuaCIKICNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1w
b3J0ICJTY3JvbGxiYXIuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKQEAg
LTM5NCw3ICszOTUsMTQgQEAgc3RhdGljIGlubGluZSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMg
bQogICAgIHJldHVybiAoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzKW1vZGlmaWVyczsKIH0KIAor
c3RhdGljIGludCB0eXBlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKCFbTlNN
ZW51IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IobWVudVR5cGVGb3JFdmVudDopXSkKKyAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZU5vbmUpOwogCisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGludD4oW05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSk7Cit9
CisgICAgCiBjbGFzcyBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyIDogcHVibGljIFBsYXRmb3Jt
TW91c2VFdmVudCB7CiBwdWJsaWM6CiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcihOU0V2
ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3KQpAQCAtNDEzLDYgKzQyMSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gTWFjIHNwZWNpZmljCiAgICAgICAgIG1fbW9kaWZpZXJGbGFncyAgICAg
ICAgICAgICAgICAgICAgID0gW2V2ZW50IG1vZGlmaWVyRmxhZ3NdOwogICAgICAgICBtX2V2ZW50
TnVtYmVyICAgICAgICAgICAgICAgICAgICAgICA9IFtldmVudCBldmVudE51bWJlcl07CisgICAg
ICAgIG1fbWVudVR5cGVGb3JFdmVudCAgICAgICAgICAgICAgICAgID0gdHlwZUZvckV2ZW50KGV2
ZW50KTsKICAgICB9CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI0MzMpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAor
MjAxNS0wNC0wNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAg
ICBbTWFjXSBXZWJLaXQgaXMgbm90IGhvbm9yaW5nIE9TIHByZWZlcmVuY2VzIGZvciBzZWNvbmRh
cnkgY2xpY2sgYmVoYXZpb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDM0NTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwNDM3NDgzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGNhbm5vdCBy
ZWx5IG9uIHRoZSBldmVudCdzIGJ1dHRvbiBudW1iZXIgdG8gZGVjaWRlIGJlaGF2aW9yLiBUaGUg
T1Mgc2V0dGluZ3MgbWlnaHQgaGF2ZQorICAgICAgICBtYXBwZWQgbWlkZGxlIGJ1dHRvbiB0byBj
b250ZXh0IG1lbnUsIGV0Yy4gSW5zdGVhZCwgd2Ugc2hvdWxkIGFzayB0aGUgT1MgKHZpYSBOU01l
bnUpIHdoYXQKKyAgICAgICAgdGhlIHByb3BlciBidXR0b24gcHJlc3MgYmVoYXZpb3IgaXMuCisK
KyAgICAgICAgKiBTaGFyZWQvbWFjL1dlYkV2ZW50RmFjdG9yeS5tbToKKyAgICAgICAgKFdlYktp
dDo6bW91c2VCdXR0b25Gb3JFdmVudCk6IEFzayBOU01lbnUgd2hhdCBraW5kIG9mIGJ1dHRvbiBw
cmVzcyB3ZSBoYXZlIHJlY2VpdmVkLgorCiAyMDE1LTA0LTA2ICBDb21taXQgUXVldWUgIDxjb21t
aXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCBy
MTgyMjk2LgpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50LmgJKHJldmlzaW9uIDE4MjQzMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjQsNyArMTI0LDcgQEAgcHVibGljOgogICAgIFdlYk1vdXNlRXZlbnQoKTsKIAogI2lmIFBMQVRG
T1JNKE1BQykKLSAgICBXZWJNb3VzZUV2ZW50KFR5cGUsIEJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRp
b24sIGZsb2F0IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9hdCBkZWx0YVosIGludCBjbGlja0Nv
dW50LCBNb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXAsIGludCBldmVudE51bWJlciA9IC0xKTsK
KyAgICBXZWJNb3VzZUV2ZW50KFR5cGUsIEJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGZsb2F0
IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9hdCBkZWx0YVosIGludCBjbGlja0NvdW50LCBNb2Rp
ZmllcnMsIGRvdWJsZSB0aW1lc3RhbXAsIGludCBldmVudE51bWJlciA9IC0xLCBpbnQgbWVudVR5
cGUgPSAwKTsKICNlbHNlCiAgICAgV2ViTW91c2VFdmVudChUeXBlLCBCdXR0b24sIGNvbnN0IFdl
YkNvcmU6OkludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGdsb2Jh
bFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBpbnQg
Y2xpY2tDb3VudCwgTW9kaWZpZXJzLCBkb3VibGUgdGltZXN0YW1wKTsKICNlbmRpZgpAQCAtMTM4
LDYgKzEzOCw3IEBAIHB1YmxpYzoKICAgICBpbnQzMl90IGNsaWNrQ291bnQoKSBjb25zdCB7IHJl
dHVybiBtX2NsaWNrQ291bnQ7IH0KICNpZiBQTEFURk9STShNQUMpCiAgICAgaW50MzJfdCBldmVu
dE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnROdW1iZXI7IH0KKyAgICBpbnQzMl90IG1l
bnVUeXBlRm9yRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX21lbnVUeXBlRm9yRXZlbnQ7IH0KICNl
bmRpZgogCiAgICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKQEAg
LTE1NSw2ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIGludDMyX3QgbV9jbGlja0NvdW50OwogI2lm
IFBMQVRGT1JNKE1BQykKICAgICBpbnQzMl90IG1fZXZlbnROdW1iZXI7CisgICAgaW50MzJfdCBt
X21lbnVUeXBlRm9yRXZlbnQ7CiAjZW5kaWYKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCShyZXZpc2lvbiAxODI0MzApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnRDb252ZXJzaW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODQsNiArODQsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fY2xpY2tDb3VudCA9IHdlYkV2ZW50
LmNsaWNrQ291bnQoKTsKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAgIG1fZXZlbnROdW1iZXIg
PSB3ZWJFdmVudC5ldmVudE51bWJlcigpOworICAgICAgICBtX21lbnVUeXBlRm9yRXZlbnQgPSB3
ZWJFdmVudC5tZW51VHlwZUZvckV2ZW50KCk7CiAjZW5kaWYKIAogICAgICAgICBtX21vZGlmaWVy
RmxhZ3MgPSAwOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJNb3VzZUV2ZW50LmNwcAko
cmV2aXNpb24gMTgyNDMwKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk1vdXNlRXZlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MiwxMiArNDIsMTMgQEAgV2ViTW91c2VFdmVudDo6V2Vi
TW91c2VFdmVudCgpCiAgICAgLCBtX2NsaWNrQ291bnQoMCkKICNpZiBQTEFURk9STShNQUMpCiAg
ICAgLCBtX2V2ZW50TnVtYmVyKC0xKQorICAgICwgbV9tZW51VHlwZUZvckV2ZW50KDApCiAjZW5k
aWYKIHsKIH0KIAogI2lmIFBMQVRGT1JNKE1BQykKLVdlYk1vdXNlRXZlbnQ6OldlYk1vdXNlRXZl
bnQoVHlwZSB0eXBlLCBCdXR0b24gYnV0dG9uLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNv
bnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVks
IGZsb2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQsIE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJs
ZSB0aW1lc3RhbXAsIGludCBldmVudE51bWJlcikKK1dlYk1vdXNlRXZlbnQ6OldlYk1vdXNlRXZl
bnQoVHlwZSB0eXBlLCBCdXR0b24gYnV0dG9uLCBjb25zdCBJbnRQb2ludCYgcG9zaXRpb24sIGNv
bnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBkZWx0YVks
IGZsb2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQsIE1vZGlmaWVycyBtb2RpZmllcnMsIGRvdWJs
ZSB0aW1lc3RhbXAsIGludCBldmVudE51bWJlciwgaW50IG1lbnVUeXBlKQogI2Vsc2UKIFdlYk1v
dXNlRXZlbnQ6OldlYk1vdXNlRXZlbnQoVHlwZSB0eXBlLCBCdXR0b24gYnV0dG9uLCBjb25zdCBJ
bnRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgZmxvYXQg
ZGVsdGFYLCBmbG9hdCBkZWx0YVksIGZsb2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQsIE1vZGlm
aWVycyBtb2RpZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApCiAjZW5kaWYKQEAgLTYxLDYgKzYyLDcg
QEAgV2ViTW91c2VFdmVudDo6V2ViTW91c2VFdmVudChUeXBlIHR5cGUsIAogICAgICwgbV9jbGlj
a0NvdW50KGNsaWNrQ291bnQpCiAjaWYgUExBVEZPUk0oTUFDKQogICAgICwgbV9ldmVudE51bWJl
cihldmVudE51bWJlcikKKyAgICAsIG1fbWVudVR5cGVGb3JFdmVudChtZW51VHlwZSkKICNlbmRp
ZgogewogICAgIEFTU0VSVChpc01vdXNlRXZlbnRUeXBlKHR5cGUpKTsKQEAgLTc5LDYgKzgxLDcg
QEAgdm9pZCBXZWJNb3VzZUV2ZW50OjplbmNvZGUoSVBDOjpBcmd1bWVudAogICAgIGVuY29kZXIg
PDwgbV9jbGlja0NvdW50OwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBlbmNvZGVyIDw8IG1fZXZl
bnROdW1iZXI7CisgICAgZW5jb2RlciA8PCBtX21lbnVUeXBlRm9yRXZlbnQ7CiAjZW5kaWYKIH0K
IApAQCAtMTA0LDYgKzEwNyw4IEBAIGJvb2wgV2ViTW91c2VFdmVudDo6ZGVjb2RlKElQQzo6QXJn
dW1lbnQKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
bV9ldmVudE51bWJlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5tX21lbnVUeXBlRm9yRXZlbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9XZWJFdmVudEZhY3RvcnkubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hh
cmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0JKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBACiAKICNpbXBvcnQgIldlYktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9y
dCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL05TTWVudVNQSS5o
PgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2luZG93c0tleWJvYXJkQ29k
ZXMuaD4KQEAgLTMzOCw2ICszMzksMTQgQEAgc3RhdGljIGlubGluZSBXZWJFdmVudDo6TW9kaWZp
ZXJzIG1vZGlmaQogICAgIHJldHVybiAoV2ViRXZlbnQ6Ok1vZGlmaWVycyltb2RpZmllcnM7CiB9
CiAKK3N0YXRpYyBpbnQgdHlwZUZvckV2ZW50KE5TRXZlbnQgKmV2ZW50KQoreworICAgIGlmICgh
W05TTWVudSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKG1lbnVUeXBlRm9yRXZlbnQ6KV0p
CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxpbnQ+KE5TTWVudVR5cGVOb25lKTsKKyAgICAK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZl
bnRdKTsKK30KKyAgICAKIFdlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJN
b3VzZUV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCiB7CiAgICAgTlNQ
b2ludCBwb3NpdGlvbiA9IHBvaW50Rm9yRXZlbnQoZXZlbnQsIHdpbmRvd1ZpZXcpOwpAQCAtMzUy
LDggKzM2MSw5IEBAIFdlYk1vdXNlRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWIKICAg
ICBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaWVycyAgICAgICAgICAgPSBtb2RpZmllcnNGb3JF
dmVudChldmVudCk7CiAgICAgZG91YmxlIHRpbWVzdGFtcCAgICAgICAgICAgICAgICAgICAgICAg
ID0gZXZlbnRUaW1lU3RhbXBTaW5jZTE5NzAoZXZlbnQpOwogICAgIGludCBldmVudE51bWJlciAg
ICAgICAgICAgICAgICAgICAgICAgICA9IFtldmVudCBldmVudE51bWJlcl07CisgICAgaW50IG1l
bnVUeXBlRm9yRXZlbnQgICAgICAgICAgICAgICAgICAgID0gdHlwZUZvckV2ZW50KGV2ZW50KTsK
IAotICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgSW50UG9pbnQocG9zaXRp
b24pLCBJbnRQb2ludChnbG9iYWxQb3NpdGlvbiksIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVosIGNs
aWNrQ291bnQsIG1vZGlmaWVycywgdGltZXN0YW1wLCBldmVudE51bWJlcik7CisgICAgcmV0dXJu
IFdlYk1vdXNlRXZlbnQodHlwZSwgYnV0dG9uLCBJbnRQb2ludChwb3NpdGlvbiksIEludFBvaW50
KGdsb2JhbFBvc2l0aW9uKSwgZGVsdGFYLCBkZWx0YVksIGRlbHRhWiwgY2xpY2tDb3VudCwgbW9k
aWZpZXJzLCB0aW1lc3RhbXAsIGV2ZW50TnVtYmVyLCBtZW51VHlwZUZvckV2ZW50KTsKIH0KIAog
V2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoTlNFdmVu
dCAqZXZlbnQsIE5TVmlldyAqd2luZG93VmlldykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgyMSw4ICsxODIxLDcgQEAgc3RhdGljIGJvb2wgaXNDb250ZXh0Q2xpY2soY29uc3QgUGxh
dGZvcgogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIC8v
IEZJWE1FOiB0aGlzIHJlYWxseSBzaG91bGQgYmUgYWJvdXQgT1NYLXN0eWxlIFVJLCBub3QgYWJv
dXQgdGhlIE1hYyBwb3J0Ci0gICAgaWYgKGV2ZW50LmJ1dHRvbigpID09IFdlYkNvcmU6OkxlZnRC
dXR0b24gJiYgZXZlbnQuY3RybEtleSgpKQorICAgIGlmIChXZWJQYWdlOjpzaG91bGRCZUhhbmRs
ZWRBc0NvbnRleHRDbGljayhldmVudCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2
aXNpb24gMTgyNDMwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDEzLDYgKzQxMyw3IEBAIHB1YmxpYzoKICNlbmRpZiAv
LyAhUExBVEZPUk0oSU9TKQogCiAgICAgdm9pZCB1cGRhdGVIZWFkZXJBbmRGb290ZXJMYXllcnNG
b3JEZXZpY2VTY2FsZUNoYW5nZShmbG9hdCBzY2FsZUZhY3Rvcik7CisgICAgc3RhdGljIGJvb2wg
c2hvdWxkQmVIYW5kbGVkQXNDb250ZXh0Q2xpY2soY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CiAjZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICAgICBib29sIHdpbmRvd0lz
Rm9jdXNlZCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkocmV2aXNpb24gMTgyNDMwKQorKysgU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC05MSw2ICs5MSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFQbGF5YmFja1Rh
cmdldC5oPgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKKyNpbmNsdWRlIDxX
ZWJDb3JlL05TTWVudVNQSS5oPgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTEyNjAsNiArMTI2NCwxOCBAQCB2b2lkIFdlYlBhZ2U6
OnBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQorYm9vbCBXZWJQYWdlOjpzaG91bGRCZUhhbmRsZWRBc0NvbnRleHRDbGljayhj
b25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIGlmIChldmVudC5idXR0b24o
KSA9PSBXZWJDb3JlOjpMZWZ0QnV0dG9uICYmIGV2ZW50LmN0cmxLZXkoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8TlNNZW51VHlwZT4oZXZlbnQubWVudVR5
cGVGb3JFdmVudCgpKSA9PSBOU01lbnVUeXBlQ29udGV4dE1lbnUpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI0NDUpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAx
NS0wNC0wNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBb
TWFjXSBXZWJLaXQgaXMgbm90IGhvbm9yaW5nIE9TIHByZWZlcmVuY2VzIGZvciBzZWNvbmRhcnkg
Y2xpY2sgYmVoYXZpb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNDM0NTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwNDM3NDgzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdlcmUgaW1wcm9w
ZXJseSBpbnRlcmNlcHRpbmcgY29udGV4dHVhbCBtZW51IGNsaWNrcyBhbmQgcGFzc2luZyB0aGVt
IHRocm91Z2gKKyAgICAgICAgdGhlIG1vdXNlRG93biBoYW5kbGVyLCByYXRoZXIgdGhhbiBwcm9j
ZXNzaW5nIHZpYSBOU1ZpZXcncyBtZW51IGhhbmRsaW5nIGNvZGUuCisKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBvdGhlck1vdXNlRG93
bjpdKTogVHJlYXQgY29udGV4dCBtZW51IGV2ZW50cyB0aGUgc2FtZSBhcyB0aGUgYWN0aW9uCisg
ICAgICAgIG1lbnUgY2FzZSwgYW5kIHBhc3MgaXQgdG8gQXBwS2l0IGZvciBub3JtYWwgbWVudSBw
cm9jZXNzaW5nLiAKKwogMjAxNS0wNC0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFw
cGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgImdvIGFoZWFkIGFuZCIgZnJvbSBjb21tZW50cwpJ
bmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAx
ODI0MzApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MzkyLDcgKzUzOTIsOCBAQCAtICh2b2lkKV93aW5kb3dDaGFuZ2VkS2V5
U3RhdGUKICNpZiAhUExBVEZPUk0oSU9TKQogLSAodm9pZClvdGhlck1vdXNlRG93bjooTlNFdmVu
dCAqKWV2ZW50CiB7Ci0gICAgaWYgKFtldmVudCBidXR0b25OdW1iZXJdICE9IDIgfHwgKFtOU01l
bnUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildICYmIFtO
U01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0gPT0gTlNNZW51VHlwZUFjdGlvbk1lbnUpKSB7
CisgICAgaWYgKFtldmVudCBidXR0b25OdW1iZXJdICE9IDIgfHwgKFtOU01lbnUgcmVzcG9uZHNU
b1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildCisgICAgICAgICYmIChbTlNN
ZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdID09IE5TTWVudVR5cGVBY3Rpb25NZW51IHx8IFtO
U01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0gPT0gTlNNZW51VHlwZUNvbnRleHRNZW51KSkp
IHsKICAgICAgICAgW3N1cGVyIG90aGVyTW91c2VEb3duOmV2ZW50XTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250313</attachid>
            <date>2015-04-07 16:16:59 -0700</date>
            <delta_ts>2015-04-07 22:23:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143452-20150407161610.patch</filename>
            <type>text/plain</type>
            <size>14196</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA3ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBpcyBu
b3QgaG9ub3JpbmcgT1MgcHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50J3Mg
YnV0dG9uIG51bWJlciB0byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdodCBo
YXZlCisgICAgICAgIG1hcHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRjLiBJ
bnN0ZWFkLCB3ZSBzaG91bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAgICB0
aGUgcHJvcGVyIGJ1dHRvbiBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vdXNl
QnV0dG9uRm9yRXZlbnQpOiBBc2sgTlNNZW51IHdoYXQga2luZCBvZiBidXR0b24gcHJlc3Mgd2Ug
aGF2ZSByZWNlaXZlZC4KKwogMjAxNS0wNC0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYSBSZW5kZXJPYmplY3QgYml0IGZvciBpc1JlbmRl
ckZsb3dUaHJlYWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3Vz
ZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1N
b3VzZUV2ZW50LmgJKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtTW91c2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9tb2RpZmllckZsYWdzKDApCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgICAgICAgICAgLCBtX2V2ZW50TnVtYmVyKDApCisgICAgICAgICAg
ICAsIG1fbWVudVR5cGVGb3JFdmVudCgwKQogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgICAgICAg
ICAgLCBtX2RpZEFjdGl2YXRlV2ViVmlldyhmYWxzZSkKICNlbmRpZgpAQCAtNzEsNiArNzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fbW9kaWZpZXJGbGFncygwKQog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgICAgICwgbV9ldmVudE51bWJlcigwKQorICAgICAg
ICAgICAgLCBtX21lbnVUeXBlRm9yRXZlbnQoMCkKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICAg
ICAgICAgICwgbV9kaWRBY3RpdmF0ZVdlYlZpZXcoZmFsc2UpCiAjZW5kaWYKQEAgLTEwMyw2ICsx
MDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAg
IGludCBldmVudE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnROdW1iZXI7IH0KKyAgICAg
ICAgaW50IG1lbnVUeXBlRm9yRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX21lbnVUeXBlRm9yRXZl
bnQ7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTIzLDYgKzEyNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgaW50IG1fZXZl
bnROdW1iZXI7CisgICAgICAgIGludCBtX21lbnVUeXBlRm9yRXZlbnQ7CiAjZWxpZiBQTEFURk9S
TShXSU4pCiAgICAgICAgIGJvb2wgbV9kaWRBY3RpdmF0ZVdlYlZpZXc7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZh
Y3RvcnlNYWMubW0JKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW1wb3J0ICJLZXlFdmVudENvY29hLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CisjaW1wb3J0ICJOU01lbnVTUEkuaCIKICNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1w
b3J0ICJTY3JvbGxiYXIuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKQEAg
LTM5NCw3ICszOTUsMjAgQEAgc3RhdGljIGlubGluZSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMg
bQogICAgIHJldHVybiAoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzKW1vZGlmaWVyczsKIH0KIAor
c3RhdGljIGludCB0eXBlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKFtOU01l
bnUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildKQorICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZl
bnRdKTsKKworICAgIGlmIChtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KSA9PSBSaWdodEJ1dHRv
bikKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZUNvbnRleHRNZW51
KTsKKworICAgIGlmIChtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KSA9PSBMZWZ0QnV0dG9uICYm
IChtb2RpZmllcnNGb3JFdmVudChldmVudCkgJiBOU0NvbnRyb2xLZXlNYXNrKSkKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZUNvbnRleHRNZW51KTsKIAorICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KE5TTWVudVR5cGVOb25lKTsKK30KKyAgICAKIGNsYXNzIFBs
YXRmb3JtTW91c2VFdmVudEJ1aWxkZXIgOiBwdWJsaWMgUGxhdGZvcm1Nb3VzZUV2ZW50IHsKIHB1
YmxpYzoKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKE5TRXZlbnQgKmV2ZW50LCBOU1Zp
ZXcgKndpbmRvd1ZpZXcpCkBAIC00MTMsNiArNDI3LDcgQEAgcHVibGljOgogICAgICAgICAvLyBN
YWMgc3BlY2lmaWMKICAgICAgICAgbV9tb2RpZmllckZsYWdzICAgICAgICAgICAgICAgICAgICAg
PSBbZXZlbnQgbW9kaWZpZXJGbGFnc107CiAgICAgICAgIG1fZXZlbnROdW1iZXIgICAgICAgICAg
ICAgICAgICAgICAgID0gW2V2ZW50IGV2ZW50TnVtYmVyXTsKKyAgICAgICAgbV9tZW51VHlwZUZv
ckV2ZW50ICAgICAgICAgICAgICAgICAgPSB0eXBlRm9yRXZlbnQoZXZlbnQpOwogICAgIH0KIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA3ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBp
cyBub3QgaG9ub3JpbmcgT1MgcHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlv
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50
J3MgYnV0dG9uIG51bWJlciB0byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdo
dCBoYXZlCisgICAgICAgIG1hcHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRj
LiBJbnN0ZWFkLCB3ZSBzaG91bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAg
ICB0aGUgcHJvcGVyIGJ1dHRvbiBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIFNoYXJl
ZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUJ1dHRvbkZv
ckV2ZW50KTogQXNrIE5TTWVudSB3aGF0IGtpbmQgb2YgYnV0dG9uIHByZXNzIHdlIGhhdmUgcmVj
ZWl2ZWQuCisKIDIwMTUtMDQtMDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODIyOTYuCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViRXZlbnQuaAkocmV2aXNpb24gMTgyNDMwKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBw
dWJsaWM6CiAgICAgV2ViTW91c2VFdmVudCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFdl
Yk1vdXNlRXZlbnQoVHlwZSwgQnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFY
LCBmbG9hdCBkZWx0YVksIGZsb2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQsIE1vZGlmaWVycywg
ZG91YmxlIHRpbWVzdGFtcCwgaW50IGV2ZW50TnVtYmVyID0gLTEpOworICAgIFdlYk1vdXNlRXZl
bnQoVHlwZSwgQnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBk
ZWx0YVksIGZsb2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQsIE1vZGlmaWVycywgZG91YmxlIHRp
bWVzdGFtcCwgaW50IGV2ZW50TnVtYmVyID0gLTEsIGludCBtZW51VHlwZSA9IDApOwogI2Vsc2UK
ICAgICBXZWJNb3VzZUV2ZW50KFR5cGUsIEJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGZsb2F0
IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9hdCBkZWx0YVosIGludCBjbGlja0NvdW50LCBNb2Rp
ZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOwogI2VuZGlmCkBAIC0xMzgsNiArMTM4LDcgQEAgcHVi
bGljOgogICAgIGludDMyX3QgY2xpY2tDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpY2tDb3Vu
dDsgfQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpbnQzMl90IGV2ZW50TnVtYmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9ldmVudE51bWJlcjsgfQorICAgIGludDMyX3QgbWVudVR5cGVGb3JFdmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVudVR5cGVGb3JFdmVudDsgfQogI2VuZGlmCiAKICAgICB2b2lk
IGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwpAQCAtMTU1LDYgKzE1Niw3IEBA
IHByaXZhdGU6CiAgICAgaW50MzJfdCBtX2NsaWNrQ291bnQ7CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIGludDMyX3QgbV9ldmVudE51bWJlcjsKKyAgICBpbnQzMl90IG1fbWVudVR5cGVGb3JFdmVu
dDsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29u
dmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50
Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9jbGlja0NvdW50ID0gd2ViRXZlbnQuY2xpY2tDb3VudCgpOwog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgbV9ldmVudE51bWJlciA9IHdlYkV2ZW50LmV2ZW50
TnVtYmVyKCk7CisgICAgICAgIG1fbWVudVR5cGVGb3JFdmVudCA9IHdlYkV2ZW50Lm1lbnVUeXBl
Rm9yRXZlbnQoKTsKICNlbmRpZgogCiAgICAgICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTW91c2VFdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwCShyZXZpc2lvbiAxODI0MzAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTW91c2VFdmVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDEyICs0MiwxMyBAQCBXZWJNb3VzZUV2ZW50OjpXZWJNb3VzZUV2ZW50KCkKICAg
ICAsIG1fY2xpY2tDb3VudCgwKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fZXZlbnROdW1i
ZXIoLTEpCisgICAgLCBtX21lbnVUeXBlRm9yRXZlbnQoMCkKICNlbmRpZgogewogfQogCiAjaWYg
UExBVEZPUk0oTUFDKQotV2ViTW91c2VFdmVudDo6V2ViTW91c2VFdmVudChUeXBlIHR5cGUsIEJ1
dHRvbiBidXR0b24sIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBp
bnQgY2xpY2tDb3VudCwgTW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCwgaW50
IGV2ZW50TnVtYmVyKQorV2ViTW91c2VFdmVudDo6V2ViTW91c2VFdmVudChUeXBlIHR5cGUsIEJ1
dHRvbiBidXR0b24sIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBp
bnQgY2xpY2tDb3VudCwgTW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCwgaW50
IGV2ZW50TnVtYmVyLCBpbnQgbWVudVR5cGUpCiAjZWxzZQogV2ViTW91c2VFdmVudDo6V2ViTW91
c2VFdmVudChUeXBlIHR5cGUsIEJ1dHRvbiBidXR0b24sIGNvbnN0IEludFBvaW50JiBwb3NpdGlv
biwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRl
bHRhWSwgZmxvYXQgZGVsdGFaLCBpbnQgY2xpY2tDb3VudCwgTW9kaWZpZXJzIG1vZGlmaWVycywg
ZG91YmxlIHRpbWVzdGFtcCkKICNlbmRpZgpAQCAtNjEsNiArNjIsNyBAQCBXZWJNb3VzZUV2ZW50
OjpXZWJNb3VzZUV2ZW50KFR5cGUgdHlwZSwgCiAgICAgLCBtX2NsaWNrQ291bnQoY2xpY2tDb3Vu
dCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX2V2ZW50TnVtYmVyKGV2ZW50TnVtYmVyKQor
ICAgICwgbV9tZW51VHlwZUZvckV2ZW50KG1lbnVUeXBlKQogI2VuZGlmCiB7CiAgICAgQVNTRVJU
KGlzTW91c2VFdmVudFR5cGUodHlwZSkpOwpAQCAtNzksNiArODEsNyBAQCB2b2lkIFdlYk1vdXNl
RXZlbnQ6OmVuY29kZShJUEM6OkFyZ3VtZW50CiAgICAgZW5jb2RlciA8PCBtX2NsaWNrQ291bnQ7
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgbV9ldmVudE51bWJlcjsKKyAgICBl
bmNvZGVyIDw8IG1fbWVudVR5cGVGb3JFdmVudDsKICNlbmRpZgogfQogCkBAIC0xMDQsNiArMTA3
LDggQEAgYm9vbCBXZWJNb3VzZUV2ZW50OjpkZWNvZGUoSVBDOjpBcmd1bWVudAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2V2ZW50TnVtYmVyKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1f
bWVudVR5cGVGb3JFdmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCiAgICAg
cmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkV2ZW50RmFj
dG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRG
YWN0b3J5LmgJKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
V2ViRXZlbnRGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEyIEBACiAKICNp
bXBvcnQgIldlYkV2ZW50LmgiCiAKKyNpZiBVU0UoQVBQS0lUKQorbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiAvLyBGSVhNRTogVGhpcyBpcyBub3QgbmVlZGVkIGluIHRoZSBXZWJQcm9jZXNzIGFu
ZCBzaG91bGQgYmUgbW92ZWQgdG8gYmUgYSBwZWVyCkBAIC0zOSw2ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KE5TRXZlbnQgKiwg
TlNWaWV3ICp3aW5kb3dWaWV3KTsKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJX
aGVlbEV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKICAgICBzdGF0aWMgV2Vi
S2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KE5TRXZlbnQgKiwgYm9vbCBoYW5k
bGVkQnlJbnB1dE1ldGhvZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4m
KTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRCZUhhbmRsZWRBc0NvbnRleHRDbGljayhjb25zdCBX
ZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICNlbmRpZiAvLyBVU0UoQVBQS0lUKQogfTsK
IApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0J
KHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRG
YWN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIldl
YktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL05TTWVudVNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9y
bUV2ZW50RmFjdG9yeU1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2luZG93c0tleWJvYXJkQ29kZXMuaD4KQEAgLTMzOCw2ICszMzksMjUgQEAg
c3RhdGljIGlubGluZSBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaQogICAgIHJldHVybiAoV2Vi
RXZlbnQ6Ok1vZGlmaWVycyltb2RpZmllcnM7CiB9CiAKK3N0YXRpYyBpbnQgdHlwZUZvckV2ZW50
KE5TRXZlbnQgKmV2ZW50KQoreworICAgIGlmIChbTlNNZW51IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IobWVudVR5cGVGb3JFdmVudDopXSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oW05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSk7CisgICAgCisgICAgaWYgKG1v
dXNlQnV0dG9uRm9yRXZlbnQoZXZlbnQpID09IFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihOU01lbnVUeXBlQ29udGV4dE1lbnUpOwor
ICAgIAorICAgIGlmIChtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KSA9PSBXZWJNb3VzZUV2ZW50
OjpMZWZ0QnV0dG9uICYmIChtb2RpZmllcnNGb3JFdmVudChldmVudCkgJiBOU0NvbnRyb2xLZXlN
YXNrKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZUNvbnRleHRN
ZW51KTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihOU01lbnVUeXBlTm9uZSk7
Cit9CisKK2Jvb2wgV2ViRXZlbnRGYWN0b3J5OjpzaG91bGRCZUhhbmRsZWRBc0NvbnRleHRDbGlj
ayhjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIHJldHVy
biAoc3RhdGljX2Nhc3Q8TlNNZW51VHlwZT4oZXZlbnQubWVudVR5cGVGb3JFdmVudCgpKSA9PSBO
U01lbnVUeXBlQ29udGV4dE1lbnUpOworfQorCiBXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViTW91c2VFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3
KQogewogICAgIE5TUG9pbnQgcG9zaXRpb24gPSBwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dW
aWV3KTsKQEAgLTM1Miw4ICszNzIsOSBAQCBXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViCiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMgICAgICAgICAgID0g
bW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpOwogICAgIGRvdWJsZSB0aW1lc3RhbXAgICAgICAgICAg
ICAgICAgICAgICAgICA9IGV2ZW50VGltZVN0YW1wU2luY2UxOTcwKGV2ZW50KTsKICAgICBpbnQg
ZXZlbnROdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgZXZlbnROdW1iZXJd
OworICAgIGludCBtZW51VHlwZUZvckV2ZW50ICAgICAgICAgICAgICAgICAgICA9IHR5cGVGb3JF
dmVudChldmVudCk7CiAKLSAgICByZXR1cm4gV2ViTW91c2VFdmVudCh0eXBlLCBidXR0b24sIElu
dFBvaW50KHBvc2l0aW9uKSwgSW50UG9pbnQoZ2xvYmFsUG9zaXRpb24pLCBkZWx0YVgsIGRlbHRh
WSwgZGVsdGFaLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIHRpbWVzdGFtcCwgZXZlbnROdW1iZXIp
OworICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgSW50UG9pbnQocG9zaXRp
b24pLCBJbnRQb2ludChnbG9iYWxQb3NpdGlvbiksIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVosIGNs
aWNrQ291bnQsIG1vZGlmaWVycywgdGltZXN0YW1wLCBldmVudE51bWJlciwgbWVudVR5cGVGb3JF
dmVudCk7CiB9CiAKIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVl
bEV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxODI0
MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlICJXZWJFZGl0b3JDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYkV2ZW50Q29udmVyc2lvbi5o
IgorI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVu
TWFuYWdlci5oIgpAQCAtMTgxNywxNCArMTgxOCwxMyBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQogc3RhdGljIGJvb2wgaXNDb250ZXh0Q2xpY2soY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoZXZlbnQuYnV0dG9uKCkgPT0gV2ViQ29yZTo6
UmlnaHRCdXR0b24pCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgLy8gRklYTUU6IHRoaXMgcmVhbGx5IHNob3VsZCBiZSBhYm91dCBPU1gtc3R5bGUgVUks
IG5vdCBhYm91dCB0aGUgTWFjIHBvcnQKLSAgICBpZiAoZXZlbnQuYnV0dG9uKCkgPT0gV2ViQ29y
ZTo6TGVmdEJ1dHRvbiAmJiBldmVudC5jdHJsS2V5KCkpCisgICAgaWYgKFdlYkV2ZW50RmFjdG9y
eTo6c2hvdWxkQmVIYW5kbGVkQXNDb250ZXh0Q2xpY2soZXZlbnQpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICNlbmRpZgorICAgIAorICAgIGlmIChldmVudC5idXR0b24oKSA9PSBXZWJDb3JlOjpS
aWdodEJ1dHRvbikKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODI0NDUpCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxNS0wNC0w
NyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBX
ZWJLaXQgaXMgbm90IGhvbm9yaW5nIE9TIHByZWZlcmVuY2VzIGZvciBzZWNvbmRhcnkgY2xpY2sg
YmVoYXZpb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDM0NTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzIwNDM3NDgzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIHdlcmUgaW1wcm9wZXJseSBp
bnRlcmNlcHRpbmcgY29udGV4dHVhbCBtZW51IGNsaWNrcyBhbmQgcGFzc2luZyB0aGVtIHRocm91
Z2gKKyAgICAgICAgdGhlIG1vdXNlRG93biBoYW5kbGVyLCByYXRoZXIgdGhhbiBwcm9jZXNzaW5n
IHZpYSBOU1ZpZXcncyBtZW51IGhhbmRsaW5nIGNvZGUuCisKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBvdGhlck1vdXNlRG93bjpdKTog
VHJlYXQgY29udGV4dCBtZW51IGV2ZW50cyB0aGUgc2FtZSBhcyB0aGUgYWN0aW9uCisgICAgICAg
IG1lbnUgY2FzZSwgYW5kIHBhc3MgaXQgdG8gQXBwS2l0IGZvciBub3JtYWwgbWVudSBwcm9jZXNz
aW5nLiAKKwogMjAxNS0wNC0wNSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZW1vdmUgImdvIGFoZWFkIGFuZCIgZnJvbSBjb21tZW50cwpJbmRleDog
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCShyZXZpc2lvbiAxODI0MzAp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC01MzkyLDcgKzUzOTIsOCBAQCAtICh2b2lkKV93aW5kb3dDaGFuZ2VkS2V5U3RhdGUK
ICNpZiAhUExBVEZPUk0oSU9TKQogLSAodm9pZClvdGhlck1vdXNlRG93bjooTlNFdmVudCAqKWV2
ZW50CiB7Ci0gICAgaWYgKFtldmVudCBidXR0b25OdW1iZXJdICE9IDIgfHwgKFtOU01lbnUgcmVz
cG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildICYmIFtOU01lbnUg
bWVudVR5cGVGb3JFdmVudDpldmVudF0gPT0gTlNNZW51VHlwZUFjdGlvbk1lbnUpKSB7CisgICAg
aWYgKFtldmVudCBidXR0b25OdW1iZXJdICE9IDIgfHwgKFtOU01lbnUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildCisgICAgICAgICYmIChbTlNNZW51IG1l
bnVUeXBlRm9yRXZlbnQ6ZXZlbnRdID09IE5TTWVudVR5cGVBY3Rpb25NZW51IHx8IFtOU01lbnUg
bWVudVR5cGVGb3JFdmVudDpldmVudF0gPT0gTlNNZW51VHlwZUNvbnRleHRNZW51KSkpIHsKICAg
ICAgICAgW3N1cGVyIG90aGVyTW91c2VEb3duOmV2ZW50XTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250334</attachid>
            <date>2015-04-07 22:23:22 -0700</date>
            <delta_ts>2015-04-08 14:18:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143452-20150407222232.patch</filename>
            <type>text/plain</type>
            <size>25779</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA3ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBpcyBu
b3QgaG9ub3JpbmcgT1MgcHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50J3Mg
YnV0dG9uIG51bWJlciB0byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdodCBo
YXZlCisgICAgICAgIG1hcHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRjLiBJ
bnN0ZWFkLCB3ZSBzaG91bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAgICB0
aGUgcHJvcGVyIGJ1dHRvbiBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vdXNl
QnV0dG9uRm9yRXZlbnQpOiBBc2sgTlNNZW51IHdoYXQga2luZCBvZiBidXR0b24gcHJlc3Mgd2Ug
aGF2ZSByZWNlaXZlZC4KKwogMjAxNS0wNC0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYSBSZW5kZXJPYmplY3QgYml0IGZvciBpc1JlbmRl
ckZsb3dUaHJlYWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3Vz
ZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1N
b3VzZUV2ZW50LmgJKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtTW91c2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9tb2RpZmllckZsYWdzKDApCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgICAgICAgICAgLCBtX2V2ZW50TnVtYmVyKDApCisgICAgICAgICAg
ICAsIG1fbWVudVR5cGVGb3JFdmVudCgwKQogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgICAgICAg
ICAgLCBtX2RpZEFjdGl2YXRlV2ViVmlldyhmYWxzZSkKICNlbmRpZgpAQCAtNzEsNiArNzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fbW9kaWZpZXJGbGFncygwKQog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgICAgICwgbV9ldmVudE51bWJlcigwKQorICAgICAg
ICAgICAgLCBtX21lbnVUeXBlRm9yRXZlbnQoMCkKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICAg
ICAgICAgICwgbV9kaWRBY3RpdmF0ZVdlYlZpZXcoZmFsc2UpCiAjZW5kaWYKQEAgLTEwMyw2ICsx
MDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAg
IGludCBldmVudE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnROdW1iZXI7IH0KKyAgICAg
ICAgaW50IG1lbnVUeXBlRm9yRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX21lbnVUeXBlRm9yRXZl
bnQ7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTIzLDYgKzEyNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgaW50IG1fZXZl
bnROdW1iZXI7CisgICAgICAgIGludCBtX21lbnVUeXBlRm9yRXZlbnQ7CiAjZWxpZiBQTEFURk9S
TShXSU4pCiAgICAgICAgIGJvb2wgbV9kaWRBY3RpdmF0ZVdlYlZpZXc7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZh
Y3RvcnlNYWMubW0JKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW1wb3J0ICJLZXlFdmVudENvY29hLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CisjaW1wb3J0ICJOU01lbnVTUEkuaCIKICNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1w
b3J0ICJTY3JvbGxiYXIuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKQEAg
LTM5NCw3ICszOTUsMjAgQEAgc3RhdGljIGlubGluZSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMg
bQogICAgIHJldHVybiAoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzKW1vZGlmaWVyczsKIH0KIAor
c3RhdGljIGludCB0eXBlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKFtOU01l
bnUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildKQorICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZl
bnRdKTsKKworICAgIGlmIChtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KSA9PSBSaWdodEJ1dHRv
bikKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZUNvbnRleHRNZW51
KTsKKworICAgIGlmIChtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KSA9PSBMZWZ0QnV0dG9uICYm
IChtb2RpZmllcnNGb3JFdmVudChldmVudCkgJiBOU0NvbnRyb2xLZXlNYXNrKSkKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZUNvbnRleHRNZW51KTsKIAorICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KE5TTWVudVR5cGVOb25lKTsKK30KKyAgICAKIGNsYXNzIFBs
YXRmb3JtTW91c2VFdmVudEJ1aWxkZXIgOiBwdWJsaWMgUGxhdGZvcm1Nb3VzZUV2ZW50IHsKIHB1
YmxpYzoKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKE5TRXZlbnQgKmV2ZW50LCBOU1Zp
ZXcgKndpbmRvd1ZpZXcpCkBAIC00MTMsNiArNDI3LDcgQEAgcHVibGljOgogICAgICAgICAvLyBN
YWMgc3BlY2lmaWMKICAgICAgICAgbV9tb2RpZmllckZsYWdzICAgICAgICAgICAgICAgICAgICAg
PSBbZXZlbnQgbW9kaWZpZXJGbGFnc107CiAgICAgICAgIG1fZXZlbnROdW1iZXIgICAgICAgICAg
ICAgICAgICAgICAgID0gW2V2ZW50IGV2ZW50TnVtYmVyXTsKKyAgICAgICAgbV9tZW51VHlwZUZv
ckV2ZW50ICAgICAgICAgICAgICAgICAgPSB0eXBlRm9yRXZlbnQoZXZlbnQpOwogICAgIH0KIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA3ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBp
cyBub3QgaG9ub3JpbmcgT1MgcHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlv
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50
J3MgYnV0dG9uIG51bWJlciB0byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdo
dCBoYXZlCisgICAgICAgIG1hcHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRj
LiBJbnN0ZWFkLCB3ZSBzaG91bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAg
ICB0aGUgcHJvcGVyIGJ1dHRvbiBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIFNoYXJl
ZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUJ1dHRvbkZv
ckV2ZW50KTogQXNrIE5TTWVudSB3aGF0IGtpbmQgb2YgYnV0dG9uIHByZXNzIHdlIGhhdmUgcmVj
ZWl2ZWQuCisKIDIwMTUtMDQtMDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODIyOTYuCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViRXZlbnQuaAkocmV2aXNpb24gMTgyNDMwKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBw
dWJsaWM6CiAgICAgV2ViTW91c2VFdmVudCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFdl
Yk1vdXNlRXZlbnQoVHlwZSwgQnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFY
LCBmbG9hdCBkZWx0YVksIGZsb2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQsIE1vZGlmaWVycywg
ZG91YmxlIHRpbWVzdGFtcCwgaW50IGV2ZW50TnVtYmVyID0gLTEpOworICAgIFdlYk1vdXNlRXZl
bnQoVHlwZSwgQnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBk
ZWx0YVksIGZsb2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQsIE1vZGlmaWVycywgZG91YmxlIHRp
bWVzdGFtcCwgaW50IGV2ZW50TnVtYmVyID0gLTEsIGludCBtZW51VHlwZSA9IDApOwogI2Vsc2UK
ICAgICBXZWJNb3VzZUV2ZW50KFR5cGUsIEJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGZsb2F0
IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9hdCBkZWx0YVosIGludCBjbGlja0NvdW50LCBNb2Rp
ZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOwogI2VuZGlmCkBAIC0xMzgsNiArMTM4LDcgQEAgcHVi
bGljOgogICAgIGludDMyX3QgY2xpY2tDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpY2tDb3Vu
dDsgfQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpbnQzMl90IGV2ZW50TnVtYmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9ldmVudE51bWJlcjsgfQorICAgIGludDMyX3QgbWVudVR5cGVGb3JFdmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVudVR5cGVGb3JFdmVudDsgfQogI2VuZGlmCiAKICAgICB2b2lk
IGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwpAQCAtMTU1LDYgKzE1Niw3IEBA
IHByaXZhdGU6CiAgICAgaW50MzJfdCBtX2NsaWNrQ291bnQ7CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIGludDMyX3QgbV9ldmVudE51bWJlcjsKKyAgICBpbnQzMl90IG1fbWVudVR5cGVGb3JFdmVu
dDsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29u
dmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50
Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9jbGlja0NvdW50ID0gd2ViRXZlbnQuY2xpY2tDb3VudCgpOwog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgbV9ldmVudE51bWJlciA9IHdlYkV2ZW50LmV2ZW50
TnVtYmVyKCk7CisgICAgICAgIG1fbWVudVR5cGVGb3JFdmVudCA9IHdlYkV2ZW50Lm1lbnVUeXBl
Rm9yRXZlbnQoKTsKICNlbmRpZgogCiAgICAgICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTW91c2VFdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwCShyZXZpc2lvbiAxODI0MzAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTW91c2VFdmVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDEyICs0MiwxMyBAQCBXZWJNb3VzZUV2ZW50OjpXZWJNb3VzZUV2ZW50KCkKICAg
ICAsIG1fY2xpY2tDb3VudCgwKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fZXZlbnROdW1i
ZXIoLTEpCisgICAgLCBtX21lbnVUeXBlRm9yRXZlbnQoMCkKICNlbmRpZgogewogfQogCiAjaWYg
UExBVEZPUk0oTUFDKQotV2ViTW91c2VFdmVudDo6V2ViTW91c2VFdmVudChUeXBlIHR5cGUsIEJ1
dHRvbiBidXR0b24sIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBp
bnQgY2xpY2tDb3VudCwgTW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCwgaW50
IGV2ZW50TnVtYmVyKQorV2ViTW91c2VFdmVudDo6V2ViTW91c2VFdmVudChUeXBlIHR5cGUsIEJ1
dHRvbiBidXR0b24sIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBp
bnQgY2xpY2tDb3VudCwgTW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCwgaW50
IGV2ZW50TnVtYmVyLCBpbnQgbWVudVR5cGUpCiAjZWxzZQogV2ViTW91c2VFdmVudDo6V2ViTW91
c2VFdmVudChUeXBlIHR5cGUsIEJ1dHRvbiBidXR0b24sIGNvbnN0IEludFBvaW50JiBwb3NpdGlv
biwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRl
bHRhWSwgZmxvYXQgZGVsdGFaLCBpbnQgY2xpY2tDb3VudCwgTW9kaWZpZXJzIG1vZGlmaWVycywg
ZG91YmxlIHRpbWVzdGFtcCkKICNlbmRpZgpAQCAtNjEsNiArNjIsNyBAQCBXZWJNb3VzZUV2ZW50
OjpXZWJNb3VzZUV2ZW50KFR5cGUgdHlwZSwgCiAgICAgLCBtX2NsaWNrQ291bnQoY2xpY2tDb3Vu
dCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX2V2ZW50TnVtYmVyKGV2ZW50TnVtYmVyKQor
ICAgICwgbV9tZW51VHlwZUZvckV2ZW50KG1lbnVUeXBlKQogI2VuZGlmCiB7CiAgICAgQVNTRVJU
KGlzTW91c2VFdmVudFR5cGUodHlwZSkpOwpAQCAtNzksNiArODEsNyBAQCB2b2lkIFdlYk1vdXNl
RXZlbnQ6OmVuY29kZShJUEM6OkFyZ3VtZW50CiAgICAgZW5jb2RlciA8PCBtX2NsaWNrQ291bnQ7
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgbV9ldmVudE51bWJlcjsKKyAgICBl
bmNvZGVyIDw8IG1fbWVudVR5cGVGb3JFdmVudDsKICNlbmRpZgogfQogCkBAIC0xMDQsNiArMTA3
LDggQEAgYm9vbCBXZWJNb3VzZUV2ZW50OjpkZWNvZGUoSVBDOjpBcmd1bWVudAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2V2ZW50TnVtYmVyKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1f
bWVudVR5cGVGb3JFdmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCiAgICAg
cmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkV2ZW50RmFj
dG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRG
YWN0b3J5LmgJKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
V2ViRXZlbnRGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEyIEBACiAKICNp
bXBvcnQgIldlYkV2ZW50LmgiCiAKKyNpZiBVU0UoQVBQS0lUKQorbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiAvLyBGSVhNRTogVGhpcyBpcyBub3QgbmVlZGVkIGluIHRoZSBXZWJQcm9jZXNzIGFu
ZCBzaG91bGQgYmUgbW92ZWQgdG8gYmUgYSBwZWVyCkBAIC0zOSw2ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KE5TRXZlbnQgKiwg
TlNWaWV3ICp3aW5kb3dWaWV3KTsKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJX
aGVlbEV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKICAgICBzdGF0aWMgV2Vi
S2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KE5TRXZlbnQgKiwgYm9vbCBoYW5k
bGVkQnlJbnB1dE1ldGhvZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4m
KTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRCZUhhbmRsZWRBc0NvbnRleHRDbGljayhjb25zdCBX
ZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICNlbmRpZiAvLyBVU0UoQVBQS0lUKQogfTsK
IApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0J
KHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRG
YWN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIldl
YktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL05TTWVudVNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9y
bUV2ZW50RmFjdG9yeU1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2luZG93c0tleWJvYXJkQ29kZXMuaD4KQEAgLTMzOCw2ICszMzksMjUgQEAg
c3RhdGljIGlubGluZSBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaQogICAgIHJldHVybiAoV2Vi
RXZlbnQ6Ok1vZGlmaWVycyltb2RpZmllcnM7CiB9CiAKK3N0YXRpYyBpbnQgdHlwZUZvckV2ZW50
KE5TRXZlbnQgKmV2ZW50KQoreworICAgIGlmIChbTlNNZW51IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IobWVudVR5cGVGb3JFdmVudDopXSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oW05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSk7CisgICAgCisgICAgaWYgKG1v
dXNlQnV0dG9uRm9yRXZlbnQoZXZlbnQpID09IFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihOU01lbnVUeXBlQ29udGV4dE1lbnUpOwor
ICAgIAorICAgIGlmIChtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KSA9PSBXZWJNb3VzZUV2ZW50
OjpMZWZ0QnV0dG9uICYmIChtb2RpZmllcnNGb3JFdmVudChldmVudCkgJiBOU0NvbnRyb2xLZXlN
YXNrKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZUNvbnRleHRN
ZW51KTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihOU01lbnVUeXBlTm9uZSk7
Cit9CisKK2Jvb2wgV2ViRXZlbnRGYWN0b3J5OjpzaG91bGRCZUhhbmRsZWRBc0NvbnRleHRDbGlj
ayhjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIHJldHVy
biAoc3RhdGljX2Nhc3Q8TlNNZW51VHlwZT4oZXZlbnQubWVudVR5cGVGb3JFdmVudCgpKSA9PSBO
U01lbnVUeXBlQ29udGV4dE1lbnUpOworfQorCiBXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViTW91c2VFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3
KQogewogICAgIE5TUG9pbnQgcG9zaXRpb24gPSBwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dW
aWV3KTsKQEAgLTM1Miw4ICszNzIsOSBAQCBXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViCiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMgICAgICAgICAgID0g
bW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpOwogICAgIGRvdWJsZSB0aW1lc3RhbXAgICAgICAgICAg
ICAgICAgICAgICAgICA9IGV2ZW50VGltZVN0YW1wU2luY2UxOTcwKGV2ZW50KTsKICAgICBpbnQg
ZXZlbnROdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgZXZlbnROdW1iZXJd
OworICAgIGludCBtZW51VHlwZUZvckV2ZW50ICAgICAgICAgICAgICAgICAgICA9IHR5cGVGb3JF
dmVudChldmVudCk7CiAKLSAgICByZXR1cm4gV2ViTW91c2VFdmVudCh0eXBlLCBidXR0b24sIElu
dFBvaW50KHBvc2l0aW9uKSwgSW50UG9pbnQoZ2xvYmFsUG9zaXRpb24pLCBkZWx0YVgsIGRlbHRh
WSwgZGVsdGFaLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIHRpbWVzdGFtcCwgZXZlbnROdW1iZXIp
OworICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgSW50UG9pbnQocG9zaXRp
b24pLCBJbnRQb2ludChnbG9iYWxQb3NpdGlvbiksIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVosIGNs
aWNrQ291bnQsIG1vZGlmaWVycywgdGltZXN0YW1wLCBldmVudE51bWJlciwgbWVudVR5cGVGb3JF
dmVudCk7CiB9CiAKIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVl
bEV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxODI0
MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlICJXZWJFZGl0b3JDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYkV2ZW50Q29udmVyc2lvbi5o
IgorI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVu
TWFuYWdlci5oIgpAQCAtMTgxNywxNiArMTgxOCwxMSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQogc3RhdGljIGJvb2wgaXNDb250ZXh0Q2xpY2soY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoZXZlbnQuYnV0dG9uKCkgPT0gV2ViQ29yZTo6
UmlnaHRCdXR0b24pCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgLy8gRklYTUU6IHRoaXMgcmVhbGx5IHNob3VsZCBiZSBhYm91dCBPU1gtc3R5bGUgVUks
IG5vdCBhYm91dCB0aGUgTWFjIHBvcnQKLSAgICBpZiAoZXZlbnQuYnV0dG9uKCkgPT0gV2ViQ29y
ZTo6TGVmdEJ1dHRvbiAmJiBldmVudC5jdHJsS2V5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBXZWJFdmVudEZhY3Rvcnk6OnNob3VsZEJlSGFuZGxlZEFzQ29udGV4dENsaWNr
KGV2ZW50KTsKKyNlbHNlCisgICAgcmV0dXJuIGV2ZW50LmJ1dHRvbigpID09IFdlYkNvcmU6OlJp
Z2h0QnV0dG9uOwogI2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBib29s
IGhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9y
bU1vdXNlRXZlbnQsIFdlYlBhZ2UqIHBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxODI0NDUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOCBAQAorMjAxNS0wNC0wNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBbTWFjXSBXZWJLaXQgaXMgbm90IGhvbm9yaW5nIE9TIHByZWZl
cmVuY2VzIGZvciBzZWNvbmRhcnkgY2xpY2sgYmVoYXZpb3JzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM0NTIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzIwNDM3NDgzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIHdlcmUgaW1wcm9wZXJseSBpbnRlcmNlcHRpbmcgY29udGV4dHVhbCBtZW51IGNs
aWNrcyBhbmQgcGFzc2luZyB0aGVtIHRocm91Z2gKKyAgICAgICAgdGhlIG1vdXNlRG93biBoYW5k
bGVyLCByYXRoZXIgdGhhbiBwcm9jZXNzaW5nIHZpYSBOU1ZpZXcncyBtZW51IGhhbmRsaW5nIGNv
ZGUuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBvdGhlck1vdXNlRG93bjpdKTogVHJlYXQgY29udGV4dCBtZW51IGV2ZW50cyB0aGUg
c2FtZSBhcyB0aGUgYWN0aW9uCisgICAgICAgIG1lbnUgY2FzZSwgYW5kIHBhc3MgaXQgdG8gQXBw
S2l0IGZvciBub3JtYWwgbWVudSBwcm9jZXNzaW5nLiAKKwogMjAxNS0wNC0wNSAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgImdvIGFoZWFk
IGFuZCIgZnJvbSBjb21tZW50cwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCShyZXZpc2lvbiAxODI0MzApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MzkyLDcgKzUzOTIsOCBAQCAtICh2
b2lkKV93aW5kb3dDaGFuZ2VkS2V5U3RhdGUKICNpZiAhUExBVEZPUk0oSU9TKQogLSAodm9pZClv
dGhlck1vdXNlRG93bjooTlNFdmVudCAqKWV2ZW50CiB7Ci0gICAgaWYgKFtldmVudCBidXR0b25O
dW1iZXJdICE9IDIgfHwgKFtOU01lbnUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51
VHlwZUZvckV2ZW50OildICYmIFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0gPT0gTlNN
ZW51VHlwZUFjdGlvbk1lbnUpKSB7CisgICAgaWYgKFtldmVudCBidXR0b25OdW1iZXJdICE9IDIg
fHwgKFtOU01lbnUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50
OildCisgICAgICAgICYmIChbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdID09IE5TTWVu
dVR5cGVBY3Rpb25NZW51IHx8IFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0gPT0gTlNN
ZW51VHlwZUNvbnRleHRNZW51KSkpIHsKICAgICAgICAgW3N1cGVyIG90aGVyTW91c2VEb3duOmV2
ZW50XTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjUxNykKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA0LTA3ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBp
cyBub3QgaG9ub3JpbmcgT1MgcHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlv
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSB0ZXN0IHRvIGNvbmZp
cm0gdGhhdCBDb2NvYSBtb3VzZSBidXR0b24gcHJlc3MgZXZlbnRzIGFyZSBwcm9wZXJseQorICAg
ICAgICB0YWdnZWQgd2l0aCB0aGUgZGVzaXJlZCBtZW51IGJlaGF2aW9yIChpLmUuLCAnTm9uZScs
ICdDb250ZXh0Jywgb3IgJ0FjdGlvbicuKQorCisgICAgICAgIFRoZSB0ZXN0IGNyZWF0ZXMgYSBi
YXNlIENHRXZlbnQgd2l0aCB0aGUgZGVzaXJlZCBidXR0b24gcHJlc3Mgc3RhdGUsIGNvbnZlcnRz
CisgICAgICAgIHRoaXMgdG8gYW4gTlNFdmVudCwgYW5kIHRoZW4gdXNlcyBXZWJDb3JlOjpQbGF0
Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1Nb3VzZUV2ZW50LgorICAgICAgICBXZSBj
aGVjayB0aGUgcmVzdWx0aW5nIFBsYXRmb3JtTW91c2VFdmVudCBmb3IgcHJvcGVyIHN0YXRlLgor
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6IEFkZCBuZXcgdGVzdCBmaWxlLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvbWFjL01lbnVUeXBlc0Zvck1vdXNlRXZlbnRzLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OmNhbkNhbGxNZW51VHlwZUZvckV2ZW50KTogSGVscGVyIGZ1bmN0aW9uLgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6YnVpbGRBbmRQZXJmb3JtVGVzdE5vTW9kaWZpZXIpOiBEaXR0
by4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmJ1aWxkQW5kUGVyZm9ybVRlc3QpOiBEaXR0by4K
KwogMjAxNS0wNC0wNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMgc2hvdWxkIG9ubHkgYmUg
ZW5hYmxlZCBvbiBZb3NlbWl0ZQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9u
IDE4MjQzMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiAJCTc2NzM0
OTlEMTkzMEM1QkIwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25h
bExvYWRfYnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDc2NzM0OTlBMTkzMDE4MkUwMEU0NERGOSAvKiBTdG9wTG9hZGluZ0R1cmluZ0RpZEZh
aWxQcm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZFMTgyREQxNTQ3NTY5MTAw
RjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRDMTU0NzU2OTEwMEYxRkFERCAv
KiBXaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAgKi87IH07CiAJCTc2RTE4MkRGMTU0NzY3
RTYwMEYxRkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2RTE4MkRFMTU0NzVBODMwMEYx
RkFERCAvKiBhdXRvLXN1Ym1pdHRpbmctZm9ybS5odG1sICovOyB9OworCQk3QTk5RDk5NDFBRDRB
MjlEMDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTk5RDk5MzFBRDRBMjlEMDAzNzMxNDEg
LyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0gKi87IH07CiAJCTdBQTAyMUJCMUFCMDlFQTcw
MDUyOTUzRiAvKiBEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3QUEwMjFCQTFBQjA5RUE3MDA1Mjk1M0YgLyogRGF0ZU1hdGguY3BwICov
OyB9OwogCQk3QUE2QTE1MjFBQUMwQjMxMDAyQjJFRDMgLyogV29ya1F1ZXVlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTZBMTUxMUFBQzBCMzEw
MDJCMkVEMyAvKiBXb3JrUXVldWUuY3BwICovOyB9OwogCQk3QzQ4NkJBMTFBQTEyNTY3MDAzRjZG
OUIgLyogYnVuZGxlLWZpbGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzQ4NkJBMDFBQTEyNTRCMDAzRjZGOUIgLyogYnVuZGxlLWZp
bGUuaHRtbCAqLzsgfTsKQEAgLTUxOSw2ICs1MjAsNyBAQAogCQk3NkUxODJEOTE1NDc1NTAxMDBG
MUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZl
bnRfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdpbGxT
ZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzZFMTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXV0by1zdWJtaXR0aW5nLWZvcm0uaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBOTlEOTkzMUFENEEyOUQwMDM3MzE0MSAvKiBN
ZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IE1lbnVUeXBlc0Zvck1vdXNlRXZlbnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QUEwMjFCQTFBQjA5RUE3MDA1Mjk1M0YgLyogRGF0ZU1hdGguY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZU1hdGguY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3QUE2QTE1MTFBQUMwQjMxMDAyQjJFRDMgLyogV29ya1F1ZXVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtRdWV1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDNDg2QkEwMUFBMTI1NEIwMDNGNkY5QiAv
KiBidW5kbGUtZmlsZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImJ1bmRsZS1maWxlLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE3MSw2ICsxMTczLDcgQEAKIAkJCQk0QkI0MTYwMTE2
ODE1QjI2MDA4MjQyMzggLyogSlNXcmFwcGVyRm9yTm9kZUluV2ViRnJhbWUubW0gKi8sCiAJCQkJ
RTEyMjBEOUYxNTVCMjU0ODAwMTNFMkZDIC8qIE1lbW9yeUNhY2hlRGlzYWJsZVdpdGhpblJlc291
cmNlTG9hZERlbGVnYXRlLm1tICovLAogCQkJCTUxN0U3REZCMTUxMTBFQTYwMEQwQjAwOCAvKiBN
ZW1vcnlDYWNoZVBydW5lV2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8sCisJCQkJN0E5
OUQ5OTMxQUQ0QTI5RDAwMzczMTQxIC8qIE1lbnVUeXBlc0Zvck1vdXNlRXZlbnRzLm1tICovLAog
CQkJCUE1N0EzNEVGMTZBRjY3NzIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdp
bmRvd0NoYW5nZXMubW0gKi8sCiAJCQkJMDBCQzE2ODUxNjgwRkU4MTAwNjVGMUU1IC8qIFB1Ymxp
Y1N1ZmZpeC5tbSAqLywKIAkJCQkzN0M3ODRERTE5N0M4RjJFMDAxMEE0OTYgLyogUmVuZGVyZWRJ
bWFnZUZyb21ET01Ob2RlLm1tICovLApAQCAtMTU2Niw2ICsxNTY5LDcgQEAKIAkJCQkyRTc3NjVD
RDE2QzREODBBMDBCQTJCQjEgLyogbWFpbklPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdBQTZB
MTUyMUFBQzBCMzEwMDJCMkVEMyAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MkU3NzY1Q0YxNkM0RDgxMTAwQkEyQkIxIC8qIG1haW5NYWMubW0gaW4gU291cmNlcyAqLywKKwkJ
CQk3QTk5RDk5NDFBRDRBMjlEMDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0g
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbnVU
eXBlc0Zvck1vdXNlRXZlbnRzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvbWFjL01lbnVUeXBlc0Zvck1vdXNlRXZlbnRzLm1tCShyZXZpc2lvbiAwKQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0JKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxXZWJDb3JlL05T
TWVudVNQSS5oPgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5oPgor
I2ltcG9ydCA8d3RmL0F1dG9kcmFpbmVkUG9vbC5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK3N0YXRpYyBib29sIGNhbkNhbGxNZW51
VHlwZUZvckV2ZW50KCkKK3sKKyAgICByZXR1cm4gW05TTWVudSByZXNwb25kc1RvU2VsZWN0b3I6
QHNlbGVjdG9yKG1lbnVUeXBlRm9yRXZlbnQ6KV07Cit9CisKK3N0YXRpYyB2b2lkIGJ1aWxkQW5k
UGVyZm9ybVRlc3ROb01vZGlmaWVyKENHRXZlbnRUeXBlIGJ1dHRvbkV2ZW50LCBDR01vdXNlQnV0
dG9uIGJ1dHRvbiwgV2ViQ29yZTo6TW91c2VCdXR0b24gZXhwZWN0ZWRCdXR0b24sIE5TTWVudVR5
cGUgZXhwZWN0ZWRNZW51KQoreworICAgIEF1dG9kcmFpbmVkUG9vbCBwb29sOworICAgIFJldGFp
blB0cjxXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dlYlZpZXcgYWxsb2NdIGluaXRdKTsK
KyAgICBSZXRhaW5QdHI8Q0dFdmVudFJlZj4gY2dNb3VzZUV2ZW50ID0gYWRvcHRDRihDR0V2ZW50
Q3JlYXRlTW91c2VFdmVudChudWxscHRyLCBidXR0b25FdmVudCwgQ0dQb2ludE1ha2UoMTAwLCAx
MDApLCBidXR0b24pKTsKKyAgICBOU0V2ZW50ICpldmVudCA9IFtOU0V2ZW50IGV2ZW50V2l0aENH
RXZlbnQ6Y2dNb3VzZUV2ZW50LmdldCgpXTsKKworICAgIGF1dG8gcG1lID0gV2ViQ29yZTo6UGxh
dGZvcm1FdmVudEZhY3Rvcnk6OmNyZWF0ZVBsYXRmb3JtTW91c2VFdmVudChldmVudCwgd2ViVmll
dy5nZXQoKSk7CisKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRCdXR0b24sIHBtZS5idXR0b24oKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHBtZS5tb2RpZmllckZsYWdzKCkgJiBrQ0dFdmVudEZsYWdNYXNr
Q29udHJvbCk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkTWVudSwgcG1lLm1lbnVUeXBlRm9yRXZl
bnQoKSk7CisgICAgaWYgKGNhbkNhbGxNZW51VHlwZUZvckV2ZW50KCkpCisgICAgICAgIEVYUEVD
VF9FUShleHBlY3RlZE1lbnUsIFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0pOworfQor
ICAgIAorVEVTVChXZWJLaXQxLCBOb3JtYWxMZWZ0Q2xpY2spCit7CisgICAgYnVpbGRBbmRQZXJm
b3JtVGVzdE5vTW9kaWZpZXIoa0NHRXZlbnRMZWZ0TW91c2VEb3duLCBrQ0dNb3VzZUJ1dHRvbkxl
ZnQsIFdlYkNvcmU6OkxlZnRCdXR0b24sIE5TTWVudVR5cGVOb25lKTsKK30KKworVEVTVChXZWJL
aXQxLCBOb3JtYWxSaWdodENsaWNrKQoreworICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3ROb01vZGlm
aWVyKGtDR0V2ZW50UmlnaHRNb3VzZURvd24sIGtDR01vdXNlQnV0dG9uUmlnaHQsIFdlYkNvcmU6
OlJpZ2h0QnV0dG9uLCBOU01lbnVUeXBlQ29udGV4dE1lbnUpOworfQorCitURVNUKFdlYktpdDEs
IE5vcm1hbE1pZGRsZUNsaWNrKQoreworICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3ROb01vZGlmaWVy
KGtDR0V2ZW50T3RoZXJNb3VzZURvd24sIGtDR01vdXNlQnV0dG9uQ2VudGVyLCBXZWJDb3JlOjpN
aWRkbGVCdXR0b24sIE5TTWVudVR5cGVOb25lKTsKK30KKworc3RhdGljIHZvaWQgYnVpbGRBbmRQ
ZXJmb3JtVGVzdChDR0V2ZW50VHlwZSBidXR0b25FdmVudCwgQ0dNb3VzZUJ1dHRvbiBidXR0b24s
IENHRXZlbnRGbGFncyBldmVudEZsYWdzLCBXZWJDb3JlOjpNb3VzZUJ1dHRvbiBleHBlY3RlZEJ1
dHRvbiwgTlNNZW51VHlwZSBleHBlY3RlZE1lbnUpCit7CisgICAgQXV0b2RyYWluZWRQb29sIHBv
b2w7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV2ViVmlldyBh
bGxvY10gaW5pdF0pOworICAgIFJldGFpblB0cjxDR0V2ZW50UmVmPiBjZ01vdXNlRXZlbnQgPSBh
ZG9wdENGKENHRXZlbnRDcmVhdGVNb3VzZUV2ZW50KG51bGxwdHIsIGJ1dHRvbkV2ZW50LCBDR1Bv
aW50TWFrZSgxMDAsIDEwMCksIGJ1dHRvbikpOworICAgIENHRXZlbnRGbGFncyBmbGFncyA9IENH
RXZlbnRHZXRGbGFncyhjZ01vdXNlRXZlbnQuZ2V0KCkpOworICAgIENHRXZlbnRTZXRGbGFncyhj
Z01vdXNlRXZlbnQuZ2V0KCksIGZsYWdzIHwgZXZlbnRGbGFncyk7CisgICAgTlNFdmVudCAqZXZl
bnQgPSBbTlNFdmVudCBldmVudFdpdGhDR0V2ZW50OmNnTW91c2VFdmVudC5nZXQoKV07CisgICAg
CisgICAgYXV0byBwbWUgPSBXZWJDb3JlOjpQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxh
dGZvcm1Nb3VzZUV2ZW50KGV2ZW50LCB3ZWJWaWV3LmdldCgpKTsKKyAgICAKKyAgICBFWFBFQ1Rf
RVEoZXhwZWN0ZWRCdXR0b24sIHBtZS5idXR0b24oKSk7CisgICAgRVhQRUNUX1RSVUUocG1lLm1v
ZGlmaWVyRmxhZ3MoKSAmIGV2ZW50RmxhZ3MpOworICAgIEVYUEVDVF9FUShleHBlY3RlZE1lbnUs
IHBtZS5tZW51VHlwZUZvckV2ZW50KCkpOworICAgIGlmIChjYW5DYWxsTWVudVR5cGVGb3JFdmVu
dCgpKQorICAgICAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRNZW51LCBbTlNNZW51IG1lbnVUeXBlRm9y
RXZlbnQ6ZXZlbnRdKTsKK30KKworVEVTVChXZWJLaXQxLCBDb250cm9sTGVmdENsaWNrKQorewor
ICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3Qoa0NHRXZlbnRMZWZ0TW91c2VEb3duLCBrQ0dNb3VzZUJ1
dHRvbkxlZnQsIGtDR0V2ZW50RmxhZ01hc2tDb250cm9sLCBXZWJDb3JlOjpMZWZ0QnV0dG9uLCBO
U01lbnVUeXBlQ29udGV4dE1lbnUpOworfQorCitURVNUKFdlYktpdDEsIENvbnRyb2xSaWdodENs
aWNrKQoreworICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3Qoa0NHRXZlbnRSaWdodE1vdXNlRG93biwg
a0NHTW91c2VCdXR0b25SaWdodCwga0NHRXZlbnRGbGFnTWFza0NvbnRyb2wsIFdlYkNvcmU6OlJp
Z2h0QnV0dG9uLCBOU01lbnVUeXBlQ29udGV4dE1lbnUpOworfQorCitURVNUKFdlYktpdDEsIENv
bnRyb2xNaWRkbGVDbGljaykKK3sKKyAgICBidWlsZEFuZFBlcmZvcm1UZXN0KGtDR0V2ZW50T3Ro
ZXJNb3VzZURvd24sIGtDR01vdXNlQnV0dG9uQ2VudGVyLCBrQ0dFdmVudEZsYWdNYXNrQ29udHJv
bCwgV2ViQ29yZTo6TWlkZGxlQnV0dG9uLCBOU01lbnVUeXBlTm9uZSk7Cit9CisgICAgCitURVNU
KFdlYktpdDEsIFNoaWZ0TGVmdENsaWNrKQoreworICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3Qoa0NH
RXZlbnRMZWZ0TW91c2VEb3duLCBrQ0dNb3VzZUJ1dHRvbkxlZnQsIGtDR0V2ZW50RmxhZ01hc2tT
aGlmdCwgV2ViQ29yZTo6TGVmdEJ1dHRvbiwgTlNNZW51VHlwZU5vbmUpOworfQorCitURVNUKFdl
YktpdDEsIFNoaWZ0UmlnaHRDbGljaykKK3sKKyAgICBidWlsZEFuZFBlcmZvcm1UZXN0KGtDR0V2
ZW50UmlnaHRNb3VzZURvd24sIGtDR01vdXNlQnV0dG9uUmlnaHQsIGtDR0V2ZW50RmxhZ01hc2tT
aGlmdCwgV2ViQ29yZTo6UmlnaHRCdXR0b24sIE5TTWVudVR5cGVDb250ZXh0TWVudSk7Cit9CisK
K1RFU1QoV2ViS2l0MSwgU2hpZnRNaWRkbGVDbGljaykKK3sKKyAgICBidWlsZEFuZFBlcmZvcm1U
ZXN0KGtDR0V2ZW50T3RoZXJNb3VzZURvd24sIGtDR01vdXNlQnV0dG9uQ2VudGVyLCBrQ0dFdmVu
dEZsYWdNYXNrU2hpZnQsIFdlYkNvcmU6Ok1pZGRsZUJ1dHRvbiwgTlNNZW51VHlwZU5vbmUpOwor
fQorCitURVNUKFdlYktpdDEsIENvbW1hbmRMZWZ0Q2xpY2spCit7CisgICAgYnVpbGRBbmRQZXJm
b3JtVGVzdChrQ0dFdmVudExlZnRNb3VzZURvd24sIGtDR01vdXNlQnV0dG9uTGVmdCwga0NHRXZl
bnRGbGFnTWFza0NvbW1hbmQsIFdlYkNvcmU6OkxlZnRCdXR0b24sIE5TTWVudVR5cGVOb25lKTsK
K30KKworVEVTVChXZWJLaXQxLCBDb21tYW5kUmlnaHRDbGljaykKK3sKKyAgICBidWlsZEFuZFBl
cmZvcm1UZXN0KGtDR0V2ZW50UmlnaHRNb3VzZURvd24sIGtDR01vdXNlQnV0dG9uUmlnaHQsIGtD
R0V2ZW50RmxhZ01hc2tDb21tYW5kLCBXZWJDb3JlOjpSaWdodEJ1dHRvbiwgTlNNZW51VHlwZUNv
bnRleHRNZW51KTsKK30KKworVEVTVChXZWJLaXQxLCBDb21tYW5kTWlkZGxlQ2xpY2spCit7Cisg
ICAgYnVpbGRBbmRQZXJmb3JtVGVzdChrQ0dFdmVudE90aGVyTW91c2VEb3duLCBrQ0dNb3VzZUJ1
dHRvbkNlbnRlciwga0NHRXZlbnRGbGFnTWFza0NvbW1hbmQsIFdlYkNvcmU6Ok1pZGRsZUJ1dHRv
biwgTlNNZW51VHlwZU5vbmUpOworfQorCitURVNUKFdlYktpdDEsIEFsdExlZnRDbGljaykKK3sK
KyAgICBidWlsZEFuZFBlcmZvcm1UZXN0KGtDR0V2ZW50TGVmdE1vdXNlRG93biwga0NHTW91c2VC
dXR0b25MZWZ0LCBrQ0dFdmVudEZsYWdNYXNrQWx0ZXJuYXRlLCBXZWJDb3JlOjpMZWZ0QnV0dG9u
LCBOU01lbnVUeXBlTm9uZSk7Cit9CisKK1RFU1QoV2ViS2l0MSwgQWx0UmlnaHRDbGljaykKK3sK
KyAgICBidWlsZEFuZFBlcmZvcm1UZXN0KGtDR0V2ZW50UmlnaHRNb3VzZURvd24sIGtDR01vdXNl
QnV0dG9uUmlnaHQsIGtDR0V2ZW50RmxhZ01hc2tBbHRlcm5hdGUsIFdlYkNvcmU6OlJpZ2h0QnV0
dG9uLCBOU01lbnVUeXBlQ29udGV4dE1lbnUpOworfQorCitURVNUKFdlYktpdDEsIEFsdE1pZGRs
ZUNsaWNrKQoreworICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3Qoa0NHRXZlbnRPdGhlck1vdXNlRG93
biwga0NHTW91c2VCdXR0b25DZW50ZXIsIGtDR0V2ZW50RmxhZ01hc2tBbHRlcm5hdGUsIFdlYkNv
cmU6Ok1pZGRsZUJ1dHRvbiwgTlNNZW51VHlwZU5vbmUpOworfQorCisKK30gLy8gbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>250385</attachid>
            <date>2015-04-08 14:19:05 -0700</date>
            <delta_ts>2015-04-08 16:00:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-143452-20150408141814.patch</filename>
            <type>text/plain</type>
            <size>36194</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA3ICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBpcyBu
b3QgaG9ub3JpbmcgT1MgcHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlvcnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50J3Mg
YnV0dG9uIG51bWJlciB0byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdodCBo
YXZlCisgICAgICAgIG1hcHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRjLiBJ
bnN0ZWFkLCB3ZSBzaG91bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAgICB0
aGUgcHJvcGVyIGJ1dHRvbiBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIHBsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1vdXNl
QnV0dG9uRm9yRXZlbnQpOiBBc2sgTlNNZW51IHdoYXQga2luZCBvZiBidXR0b24gcHJlc3Mgd2Ug
aGF2ZSByZWNlaXZlZC4KKwogMjAxNS0wNC0wNiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2Vy
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgYSBSZW5kZXJPYmplY3QgYml0IGZvciBpc1JlbmRl
ckZsb3dUaHJlYWQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1Nb3Vz
ZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1N
b3VzZUV2ZW50LmgJKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1BsYXRmb3JtTW91c2VFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9tb2RpZmllckZsYWdzKDApCiAjaWYg
UExBVEZPUk0oTUFDKQogICAgICAgICAgICAgLCBtX2V2ZW50TnVtYmVyKDApCisgICAgICAgICAg
ICAsIG1fbWVudVR5cGVGb3JFdmVudCgwKQogI2VsaWYgUExBVEZPUk0oV0lOKQogICAgICAgICAg
ICAgLCBtX2RpZEFjdGl2YXRlV2ViVmlldyhmYWxzZSkKICNlbmRpZgpAQCAtNzEsNiArNzIsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICAsIG1fbW9kaWZpZXJGbGFncygwKQog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgICAgICwgbV9ldmVudE51bWJlcigwKQorICAgICAg
ICAgICAgLCBtX21lbnVUeXBlRm9yRXZlbnQoMCkKICNlbGlmIFBMQVRGT1JNKFdJTikKICAgICAg
ICAgICAgICwgbV9kaWRBY3RpdmF0ZVdlYlZpZXcoZmFsc2UpCiAjZW5kaWYKQEAgLTEwMyw2ICsx
MDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgICAg
IGludCBldmVudE51bWJlcigpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnROdW1iZXI7IH0KKyAgICAg
ICAgaW50IG1lbnVUeXBlRm9yRXZlbnQoKSBjb25zdCB7IHJldHVybiBtX21lbnVUeXBlRm9yRXZl
bnQ7IH0KICNlbmRpZgogCiAjaWYgUExBVEZPUk0oV0lOKQpAQCAtMTIzLDYgKzEyNiw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgaW50IG1fZXZl
bnROdW1iZXI7CisgICAgICAgIGludCBtX21lbnVUeXBlRm9yRXZlbnQ7CiAjZWxpZiBQTEFURk9S
TShXSU4pCiAgICAgICAgIGJvb2wgbV9kaWRBY3RpdmF0ZVdlYlZpZXc7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxhdGZvcm1FdmVudEZh
Y3RvcnlNYWMubW0JKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QbGF0Zm9ybUV2ZW50RmFjdG9yeU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW1wb3J0ICJLZXlFdmVudENvY29hLmgiCiAjaW1wb3J0ICJMb2dnaW5nLmgi
CisjaW1wb3J0ICJOU01lbnVTUEkuaCIKICNpbXBvcnQgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW1w
b3J0ICJTY3JvbGxiYXIuaCIKICNpbXBvcnQgIldlYkNvcmVTeXN0ZW1JbnRlcmZhY2UuaCIKQEAg
LTM5NCw3ICszOTUsMjAgQEAgc3RhdGljIGlubGluZSBQbGF0Zm9ybUV2ZW50OjpNb2RpZmllcnMg
bQogICAgIHJldHVybiAoUGxhdGZvcm1FdmVudDo6TW9kaWZpZXJzKW1vZGlmaWVyczsKIH0KIAor
c3RhdGljIGludCB0eXBlRm9yRXZlbnQoTlNFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKFtOU01l
bnUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildKQorICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZl
bnRdKTsKKworICAgIGlmIChtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KSA9PSBSaWdodEJ1dHRv
bikKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZUNvbnRleHRNZW51
KTsKKworICAgIGlmIChtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KSA9PSBMZWZ0QnV0dG9uICYm
IChtb2RpZmllcnNGb3JFdmVudChldmVudCkgJiBOU0NvbnRyb2xLZXlNYXNrKSkKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZUNvbnRleHRNZW51KTsKIAorICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxpbnQ+KE5TTWVudVR5cGVOb25lKTsKK30KKyAgICAKIGNsYXNzIFBs
YXRmb3JtTW91c2VFdmVudEJ1aWxkZXIgOiBwdWJsaWMgUGxhdGZvcm1Nb3VzZUV2ZW50IHsKIHB1
YmxpYzoKICAgICBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKE5TRXZlbnQgKmV2ZW50LCBOU1Zp
ZXcgKndpbmRvd1ZpZXcpCkBAIC00MTMsNiArNDI3LDcgQEAgcHVibGljOgogICAgICAgICAvLyBN
YWMgc3BlY2lmaWMKICAgICAgICAgbV9tb2RpZmllckZsYWdzICAgICAgICAgICAgICAgICAgICAg
PSBbZXZlbnQgbW9kaWZpZXJGbGFnc107CiAgICAgICAgIG1fZXZlbnROdW1iZXIgICAgICAgICAg
ICAgICAgICAgICAgID0gW2V2ZW50IGV2ZW50TnVtYmVyXTsKKyAgICAgICAgbV9tZW51VHlwZUZv
ckV2ZW50ICAgICAgICAgICAgICAgICAgPSB0eXBlRm9yRXZlbnQoZXZlbnQpOwogICAgIH0KIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjQzMykKKysrIFNvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTA3ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBp
cyBub3QgaG9ub3JpbmcgT1MgcHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlv
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgY2Fubm90IHJlbHkgb24gdGhlIGV2ZW50
J3MgYnV0dG9uIG51bWJlciB0byBkZWNpZGUgYmVoYXZpb3IuIFRoZSBPUyBzZXR0aW5ncyBtaWdo
dCBoYXZlCisgICAgICAgIG1hcHBlZCBtaWRkbGUgYnV0dG9uIHRvIGNvbnRleHQgbWVudSwgZXRj
LiBJbnN0ZWFkLCB3ZSBzaG91bGQgYXNrIHRoZSBPUyAodmlhIE5TTWVudSkgd2hhdAorICAgICAg
ICB0aGUgcHJvcGVyIGJ1dHRvbiBwcmVzcyBiZWhhdmlvciBpcy4KKworICAgICAgICAqIFNoYXJl
ZC9tYWMvV2ViRXZlbnRGYWN0b3J5Lm1tOgorICAgICAgICAoV2ViS2l0Ojptb3VzZUJ1dHRvbkZv
ckV2ZW50KTogQXNrIE5TTWVudSB3aGF0IGtpbmQgb2YgYnV0dG9uIHByZXNzIHdlIGhhdmUgcmVj
ZWl2ZWQuCisKIDIwMTUtMDQtMDYgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODIyOTYuCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2ViRXZlbnQuaAkocmV2aXNpb24gMTgyNDMwKQorKysgU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYkV2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBw
dWJsaWM6CiAgICAgV2ViTW91c2VFdmVudCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgIFdl
Yk1vdXNlRXZlbnQoVHlwZSwgQnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRp
b24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFY
LCBmbG9hdCBkZWx0YVksIGZsb2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQsIE1vZGlmaWVycywg
ZG91YmxlIHRpbWVzdGFtcCwgaW50IGV2ZW50TnVtYmVyID0gLTEpOworICAgIFdlYk1vdXNlRXZl
bnQoVHlwZSwgQnV0dG9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9zaXRpb24sIGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiBnbG9iYWxQb3NpdGlvbiwgZmxvYXQgZGVsdGFYLCBmbG9hdCBk
ZWx0YVksIGZsb2F0IGRlbHRhWiwgaW50IGNsaWNrQ291bnQsIE1vZGlmaWVycywgZG91YmxlIHRp
bWVzdGFtcCwgaW50IGV2ZW50TnVtYmVyID0gLTEsIGludCBtZW51VHlwZSA9IDApOwogI2Vsc2UK
ICAgICBXZWJNb3VzZUV2ZW50KFR5cGUsIEJ1dHRvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQm
IHBvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgZ2xvYmFsUG9zaXRpb24sIGZsb2F0
IGRlbHRhWCwgZmxvYXQgZGVsdGFZLCBmbG9hdCBkZWx0YVosIGludCBjbGlja0NvdW50LCBNb2Rp
ZmllcnMsIGRvdWJsZSB0aW1lc3RhbXApOwogI2VuZGlmCkBAIC0xMzgsNiArMTM4LDcgQEAgcHVi
bGljOgogICAgIGludDMyX3QgY2xpY2tDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpY2tDb3Vu
dDsgfQogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpbnQzMl90IGV2ZW50TnVtYmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9ldmVudE51bWJlcjsgfQorICAgIGludDMyX3QgbWVudVR5cGVGb3JFdmVudCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVudVR5cGVGb3JFdmVudDsgfQogI2VuZGlmCiAKICAgICB2b2lk
IGVuY29kZShJUEM6OkFyZ3VtZW50RW5jb2RlciYpIGNvbnN0OwpAQCAtMTU1LDYgKzE1Niw3IEBA
IHByaXZhdGU6CiAgICAgaW50MzJfdCBtX2NsaWNrQ291bnQ7CiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIGludDMyX3QgbV9ldmVudE51bWJlcjsKKyAgICBpbnQzMl90IG1fbWVudVR5cGVGb3JFdmVu
dDsKICNlbmRpZgogfTsKIApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50Q29u
dmVyc2lvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkV2ZW50
Q29udmVyc2lvbi5jcHAJKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJFdmVudENvbnZlcnNpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw2ICs4NCw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9jbGlja0NvdW50ID0gd2ViRXZlbnQuY2xpY2tDb3VudCgpOwog
I2lmIFBMQVRGT1JNKE1BQykKICAgICAgICAgbV9ldmVudE51bWJlciA9IHdlYkV2ZW50LmV2ZW50
TnVtYmVyKCk7CisgICAgICAgIG1fbWVudVR5cGVGb3JFdmVudCA9IHdlYkV2ZW50Lm1lbnVUeXBl
Rm9yRXZlbnQoKTsKICNlbmRpZgogCiAgICAgICAgIG1fbW9kaWZpZXJGbGFncyA9IDA7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTW91c2VFdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvU2hhcmVkL1dlYk1vdXNlRXZlbnQuY3BwCShyZXZpc2lvbiAxODI0MzAp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViTW91c2VFdmVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDEyICs0MiwxMyBAQCBXZWJNb3VzZUV2ZW50OjpXZWJNb3VzZUV2ZW50KCkKICAg
ICAsIG1fY2xpY2tDb3VudCgwKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fZXZlbnROdW1i
ZXIoLTEpCisgICAgLCBtX21lbnVUeXBlRm9yRXZlbnQoMCkKICNlbmRpZgogewogfQogCiAjaWYg
UExBVEZPUk0oTUFDKQotV2ViTW91c2VFdmVudDo6V2ViTW91c2VFdmVudChUeXBlIHR5cGUsIEJ1
dHRvbiBidXR0b24sIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBp
bnQgY2xpY2tDb3VudCwgTW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCwgaW50
IGV2ZW50TnVtYmVyKQorV2ViTW91c2VFdmVudDo6V2ViTW91c2VFdmVudChUeXBlIHR5cGUsIEJ1
dHRvbiBidXR0b24sIGNvbnN0IEludFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50UG9pbnQmIGds
b2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSwgZmxvYXQgZGVsdGFaLCBp
bnQgY2xpY2tDb3VudCwgTW9kaWZpZXJzIG1vZGlmaWVycywgZG91YmxlIHRpbWVzdGFtcCwgaW50
IGV2ZW50TnVtYmVyLCBpbnQgbWVudVR5cGUpCiAjZWxzZQogV2ViTW91c2VFdmVudDo6V2ViTW91
c2VFdmVudChUeXBlIHR5cGUsIEJ1dHRvbiBidXR0b24sIGNvbnN0IEludFBvaW50JiBwb3NpdGlv
biwgY29uc3QgSW50UG9pbnQmIGdsb2JhbFBvc2l0aW9uLCBmbG9hdCBkZWx0YVgsIGZsb2F0IGRl
bHRhWSwgZmxvYXQgZGVsdGFaLCBpbnQgY2xpY2tDb3VudCwgTW9kaWZpZXJzIG1vZGlmaWVycywg
ZG91YmxlIHRpbWVzdGFtcCkKICNlbmRpZgpAQCAtNjEsNiArNjIsNyBAQCBXZWJNb3VzZUV2ZW50
OjpXZWJNb3VzZUV2ZW50KFR5cGUgdHlwZSwgCiAgICAgLCBtX2NsaWNrQ291bnQoY2xpY2tDb3Vu
dCkKICNpZiBQTEFURk9STShNQUMpCiAgICAgLCBtX2V2ZW50TnVtYmVyKGV2ZW50TnVtYmVyKQor
ICAgICwgbV9tZW51VHlwZUZvckV2ZW50KG1lbnVUeXBlKQogI2VuZGlmCiB7CiAgICAgQVNTRVJU
KGlzTW91c2VFdmVudFR5cGUodHlwZSkpOwpAQCAtNzksNiArODEsNyBAQCB2b2lkIFdlYk1vdXNl
RXZlbnQ6OmVuY29kZShJUEM6OkFyZ3VtZW50CiAgICAgZW5jb2RlciA8PCBtX2NsaWNrQ291bnQ7
CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXIgPDwgbV9ldmVudE51bWJlcjsKKyAgICBl
bmNvZGVyIDw8IG1fbWVudVR5cGVGb3JFdmVudDsKICNlbmRpZgogfQogCkBAIC0xMDQsNiArMTA3
LDggQEAgYm9vbCBXZWJNb3VzZUV2ZW50OjpkZWNvZGUoSVBDOjpBcmd1bWVudAogI2lmIFBMQVRG
T1JNKE1BQykKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tX2V2ZW50TnVtYmVyKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lm1f
bWVudVR5cGVGb3JFdmVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCiAgICAg
cmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1dlYkV2ZW50RmFj
dG9yeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRG
YWN0b3J5LmgJKHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
V2ViRXZlbnRGYWN0b3J5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDEyIEBACiAKICNp
bXBvcnQgIldlYkV2ZW50LmgiCiAKKyNpZiBVU0UoQVBQS0lUKQorbmFtZXNwYWNlIFdlYkNvcmUg
eworY2xhc3MgUGxhdGZvcm1Nb3VzZUV2ZW50OworfQorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiAvLyBGSVhNRTogVGhpcyBpcyBub3QgbmVlZGVkIGluIHRoZSBXZWJQcm9jZXNzIGFu
ZCBzaG91bGQgYmUgbW92ZWQgdG8gYmUgYSBwZWVyCkBAIC0zOSw2ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV2ViTW91c2VFdmVudCBjcmVhdGVXZWJNb3VzZUV2ZW50KE5TRXZlbnQgKiwg
TlNWaWV3ICp3aW5kb3dWaWV3KTsKICAgICBzdGF0aWMgV2ViV2hlZWxFdmVudCBjcmVhdGVXZWJX
aGVlbEV2ZW50KE5TRXZlbnQgKiwgTlNWaWV3ICp3aW5kb3dWaWV3KTsKICAgICBzdGF0aWMgV2Vi
S2V5Ym9hcmRFdmVudCBjcmVhdGVXZWJLZXlib2FyZEV2ZW50KE5TRXZlbnQgKiwgYm9vbCBoYW5k
bGVkQnlJbnB1dE1ldGhvZCwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OktleXByZXNzQ29tbWFuZD4m
KTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRCZUhhbmRsZWRBc0NvbnRleHRDbGljayhjb25zdCBX
ZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKICNlbmRpZiAvLyBVU0UoQVBQS0lUKQogfTsK
IApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9XZWJFdmVudEZhY3RvcnkubW0J
KHJldmlzaW9uIDE4MjQzMCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvV2ViRXZlbnRG
YWN0b3J5Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbXBvcnQgIldl
YktpdFN5c3RlbUludGVyZmFjZS5oIgogI2ltcG9ydCA8V2ViQ29yZS9LZXlib2FyZEV2ZW50Lmg+
CisjaW1wb3J0IDxXZWJDb3JlL05TTWVudVNQSS5oPgogI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9y
bUV2ZW50RmFjdG9yeU1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvV2luZG93c0tleWJvYXJkQ29kZXMuaD4KQEAgLTMzOCw2ICszMzksMjUgQEAg
c3RhdGljIGlubGluZSBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlmaQogICAgIHJldHVybiAoV2Vi
RXZlbnQ6Ok1vZGlmaWVycyltb2RpZmllcnM7CiB9CiAKK3N0YXRpYyBpbnQgdHlwZUZvckV2ZW50
KE5TRXZlbnQgKmV2ZW50KQoreworICAgIGlmIChbTlNNZW51IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IobWVudVR5cGVGb3JFdmVudDopXSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGludD4oW05TTWVudSBtZW51VHlwZUZvckV2ZW50OmV2ZW50XSk7CisgICAgCisgICAgaWYgKG1v
dXNlQnV0dG9uRm9yRXZlbnQoZXZlbnQpID09IFdlYk1vdXNlRXZlbnQ6OlJpZ2h0QnV0dG9uKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihOU01lbnVUeXBlQ29udGV4dE1lbnUpOwor
ICAgIAorICAgIGlmIChtb3VzZUJ1dHRvbkZvckV2ZW50KGV2ZW50KSA9PSBXZWJNb3VzZUV2ZW50
OjpMZWZ0QnV0dG9uICYmIChtb2RpZmllcnNGb3JFdmVudChldmVudCkgJiBOU0NvbnRyb2xLZXlN
YXNrKSkKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oTlNNZW51VHlwZUNvbnRleHRN
ZW51KTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihOU01lbnVUeXBlTm9uZSk7
Cit9CisKK2Jvb2wgV2ViRXZlbnRGYWN0b3J5OjpzaG91bGRCZUhhbmRsZWRBc0NvbnRleHRDbGlj
ayhjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQoreworICAgIHJldHVy
biAoc3RhdGljX2Nhc3Q8TlNNZW51VHlwZT4oZXZlbnQubWVudVR5cGVGb3JFdmVudCgpKSA9PSBO
U01lbnVUeXBlQ29udGV4dE1lbnUpOworfQorCiBXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9y
eTo6Y3JlYXRlV2ViTW91c2VFdmVudChOU0V2ZW50ICpldmVudCwgTlNWaWV3ICp3aW5kb3dWaWV3
KQogewogICAgIE5TUG9pbnQgcG9zaXRpb24gPSBwb2ludEZvckV2ZW50KGV2ZW50LCB3aW5kb3dW
aWV3KTsKQEAgLTM1Miw4ICszNzIsOSBAQCBXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViCiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMgICAgICAgICAgID0g
bW9kaWZpZXJzRm9yRXZlbnQoZXZlbnQpOwogICAgIGRvdWJsZSB0aW1lc3RhbXAgICAgICAgICAg
ICAgICAgICAgICAgICA9IGV2ZW50VGltZVN0YW1wU2luY2UxOTcwKGV2ZW50KTsKICAgICBpbnQg
ZXZlbnROdW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgPSBbZXZlbnQgZXZlbnROdW1iZXJd
OworICAgIGludCBtZW51VHlwZUZvckV2ZW50ICAgICAgICAgICAgICAgICAgICA9IHR5cGVGb3JF
dmVudChldmVudCk7CiAKLSAgICByZXR1cm4gV2ViTW91c2VFdmVudCh0eXBlLCBidXR0b24sIElu
dFBvaW50KHBvc2l0aW9uKSwgSW50UG9pbnQoZ2xvYmFsUG9zaXRpb24pLCBkZWx0YVgsIGRlbHRh
WSwgZGVsdGFaLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIHRpbWVzdGFtcCwgZXZlbnROdW1iZXIp
OworICAgIHJldHVybiBXZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgSW50UG9pbnQocG9zaXRp
b24pLCBJbnRQb2ludChnbG9iYWxQb3NpdGlvbiksIGRlbHRhWCwgZGVsdGFZLCBkZWx0YVosIGNs
aWNrQ291bnQsIG1vZGlmaWVycywgdGltZXN0YW1wLCBldmVudE51bWJlciwgbWVudVR5cGVGb3JF
dmVudCk7CiB9CiAKIFdlYldoZWVsRXZlbnQgV2ViRXZlbnRGYWN0b3J5OjpjcmVhdGVXZWJXaGVl
bEV2ZW50KE5TRXZlbnQgKmV2ZW50LCBOU1ZpZXcgKndpbmRvd1ZpZXcpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxODI0
MzApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlICJXZWJFZGl0b3JDbGllbnQu
aCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgogI2luY2x1ZGUgIldlYkV2ZW50Q29udmVyc2lvbi5o
IgorI2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVu
TWFuYWdlci5oIgpAQCAtMTgxNywxNiArMTgxOCwxMSBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShD
T05URVhUX01FTlVTKQogc3RhdGljIGJvb2wgaXNDb250ZXh0Q2xpY2soY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JiBldmVudCkKIHsKLSAgICBpZiAoZXZlbnQuYnV0dG9uKCkgPT0gV2ViQ29yZTo6
UmlnaHRCdXR0b24pCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAjaWYgUExBVEZPUk0oQ09DT0Ep
Ci0gICAgLy8gRklYTUU6IHRoaXMgcmVhbGx5IHNob3VsZCBiZSBhYm91dCBPU1gtc3R5bGUgVUks
IG5vdCBhYm91dCB0aGUgTWFjIHBvcnQKLSAgICBpZiAoZXZlbnQuYnV0dG9uKCkgPT0gV2ViQ29y
ZTo6TGVmdEJ1dHRvbiAmJiBldmVudC5jdHJsS2V5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwor
ICAgIHJldHVybiBXZWJFdmVudEZhY3Rvcnk6OnNob3VsZEJlSGFuZGxlZEFzQ29udGV4dENsaWNr
KGV2ZW50KTsKKyNlbHNlCisgICAgcmV0dXJuIGV2ZW50LmJ1dHRvbigpID09IFdlYkNvcmU6OlJp
Z2h0QnV0dG9uOwogI2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKIHN0YXRpYyBib29s
IGhhbmRsZUNvbnRleHRNZW51RXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBwbGF0Zm9y
bU1vdXNlRXZlbnQsIFdlYlBhZ2UqIHBhZ2UpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxODI0NDUpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOCBAQAorMjAxNS0wNC0wNyAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFw
cGxlLmNvbT4KKworICAgICAgICBbTWFjXSBXZWJLaXQgaXMgbm90IGhvbm9yaW5nIE9TIHByZWZl
cmVuY2VzIGZvciBzZWNvbmRhcnkgY2xpY2sgYmVoYXZpb3JzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDM0NTIKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzIwNDM3NDgzPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIHdlcmUgaW1wcm9wZXJseSBpbnRlcmNlcHRpbmcgY29udGV4dHVhbCBtZW51IGNs
aWNrcyBhbmQgcGFzc2luZyB0aGVtIHRocm91Z2gKKyAgICAgICAgdGhlIG1vdXNlRG93biBoYW5k
bGVyLCByYXRoZXIgdGhhbiBwcm9jZXNzaW5nIHZpYSBOU1ZpZXcncyBtZW51IGhhbmRsaW5nIGNv
ZGUuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtXZWJI
VE1MVmlldyBvdGhlck1vdXNlRG93bjpdKTogVHJlYXQgY29udGV4dCBtZW51IGV2ZW50cyB0aGUg
c2FtZSBhcyB0aGUgYWN0aW9uCisgICAgICAgIG1lbnUgY2FzZSwgYW5kIHBhc3MgaXQgdG8gQXBw
S2l0IGZvciBub3JtYWwgbWVudSBwcm9jZXNzaW5nLiAKKwogMjAxNS0wNC0wNSAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgImdvIGFoZWFk
IGFuZCIgZnJvbSBjb21tZW50cwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhU
TUxWaWV3Lm1tCShyZXZpc2lvbiAxODI0MzApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkhUTUxWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MzkyLDcgKzUzOTIsOCBAQCAtICh2
b2lkKV93aW5kb3dDaGFuZ2VkS2V5U3RhdGUKICNpZiAhUExBVEZPUk0oSU9TKQogLSAodm9pZClv
dGhlck1vdXNlRG93bjooTlNFdmVudCAqKWV2ZW50CiB7Ci0gICAgaWYgKFtldmVudCBidXR0b25O
dW1iZXJdICE9IDIgfHwgKFtOU01lbnUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51
VHlwZUZvckV2ZW50OildICYmIFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0gPT0gTlNN
ZW51VHlwZUFjdGlvbk1lbnUpKSB7CisgICAgaWYgKFtldmVudCBidXR0b25OdW1iZXJdICE9IDIg
fHwgKFtOU01lbnUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50
OildCisgICAgICAgICYmIChbTlNNZW51IG1lbnVUeXBlRm9yRXZlbnQ6ZXZlbnRdID09IE5TTWVu
dVR5cGVBY3Rpb25NZW51IHx8IFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0gPT0gTlNN
ZW51VHlwZUNvbnRleHRNZW51KSkpIHsKICAgICAgICAgW3N1cGVyIG90aGVyTW91c2VEb3duOmV2
ZW50XTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MjUxNykKKysrIFRvb2xzL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBACisyMDE1LTA0LTA3ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIFdlYktpdCBp
cyBub3QgaG9ub3JpbmcgT1MgcHJlZmVyZW5jZXMgZm9yIHNlY29uZGFyeSBjbGljayBiZWhhdmlv
cnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzQ1
MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjA0Mzc0ODM+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSB0ZXN0IHRvIGNvbmZp
cm0gdGhhdCBDb2NvYSBtb3VzZSBidXR0b24gcHJlc3MgZXZlbnRzIGFyZSBwcm9wZXJseQorICAg
ICAgICB0YWdnZWQgd2l0aCB0aGUgZGVzaXJlZCBtZW51IGJlaGF2aW9yIChpLmUuLCAnTm9uZScs
ICdDb250ZXh0Jywgb3IgJ0FjdGlvbicuKQorCisgICAgICAgIFRoZSBXSzIgdGVzdCBkaXNwYXRj
aGVzIG1vdXNlIGRvd24gZXZlbnRzIHRvIGEgUGxhdGZvcm1XZWJWaWV3LCBhbmQgY2hlY2tzIHdp
dGgKKyAgICAgICAgc29tZSByZWdpc3RlcmVkIGV2ZW50IGhhbmRsZXJzIHRoYXQgdGhlIGV4cGVj
dGVkIGJ1dHRvbiBwcmVzcyBhbmQgY29udGV4dCBtZW51CisgICAgICAgIGV2ZW50cyBhcmUgcmVj
ZWl2ZWQuCisKKyAgICAgICAgVGhlIFdLMSB1bml0IHRlc3QgY3JlYXRlcyBhbiBOU0V2ZW50IHdp
dGggdGhlIGRlc2lyZWQgYnV0dG9uIHByZXNzIHN0YXRlLCBhbmQgdGhlbgorICAgICAgICB1c2Vz
IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVhdGVQbGF0Zm9ybU1vdXNlRXZlbnQg
dG8gY3JlYXRlIGEgV2ViQ29yZSBldmVudC4KKyAgICAgICAgV2UgY2hlY2sgdGhlIHJlc3VsdGlu
ZyBQbGF0Zm9ybU1vdXNlRXZlbnQgZm9yIHByb3BlciBzdGF0ZS4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGQgbmV3
IHRlc3QgZmlsZXMuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL01lbnVU
eXBlc0Zvck1vdXNlRXZlbnRzLmNwcDogQWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpi
dWlsZEFuZFBlcmZvcm1UZXN0KTogSGVscGVyIGZ1bmN0aW9uIHRvIGJ1aWxkL3J1biBhbiBpbmRp
dmlkdWFsIHRlc3QuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21vdXNl
LWJ1dHRvbi1saXN0ZW5lci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL21hYy9NZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5tbTogQWRkZWQuCisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpjYW5DYWxsTWVudVR5cGVGb3JFdmVudCk6IEhlbHBlciBmdW5jdGlvbi4KKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OmJ1aWxkQW5kUGVyZm9ybVRlc3QpOiBIZWxwZXIgZnVuY3Rp
b24gdG8gYnVpbGQvcnVuIGFuIGluZGl2aWR1YWwgdGVzdC4KKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL21hYy9QbGF0Zm9ybVdlYlZpZXdNYWMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpQ
bGF0Zm9ybVdlYlZpZXc6OnNpbXVsYXRlQnV0dG9uQ2xpY2spOiBBZGRlZCBtZXRob2QgdG8gc3Vw
cG9ydCBmaXJpbmcKKyAgICAgICAgbW91c2UgZG93biBldmVudHMuCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLmg6CisKIDIwMTUtMDQtMDcgIEFsZXhleSBQ
cm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUGFnZVZpc2liaWxpdHlTdGF0
ZVdpdGhXaW5kb3dDaGFuZ2VzIHNob3VsZCBvbmx5IGJlIGVuYWJsZWQgb24gWW9zZW1pdGUKSW5k
ZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1XZWJWaWV3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAkocmV2aXNpb24gMTgyNDMwKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVdlYlZpZXcuaAkod29ya2luZyBjb3B5KQpA
QCAtNzMsNiArNzMsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaW11bGF0ZUFsdEtleVByZXNzKCk7
CiAgICAgdm9pZCBzaW11bGF0ZVJpZ2h0Q2xpY2sodW5zaWduZWQgeCwgdW5zaWduZWQgeSk7CiAg
ICAgdm9pZCBzaW11bGF0ZU1vdXNlTW92ZSh1bnNpZ25lZCB4LCB1bnNpZ25lZCB5KTsKKyNpZiBQ
TEFURk9STShNQUMpCisgICAgdm9pZCBzaW11bGF0ZUJ1dHRvbkNsaWNrKFdLRXZlbnRNb3VzZUJ1
dHRvbiwgdW5zaWduZWQgeCwgdW5zaWduZWQgeSwgV0tFdmVudE1vZGlmaWVycyk7CisjZW5kaWYK
IAogcHJpdmF0ZToKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMTgyNDMwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDkg
QEAKIAkJNzY3MzQ5OUQxOTMwQzVCQjAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzY3MzQ5OUExOTMwMTgyRTAwRTQ0REY5IC8qIFN0b3BMb2FkaW5n
RHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5kbGUuY3BwICovOyB9OwogCQk3NkUxODJE
RDE1NDc1NjkxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudF9CdW5kbGUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREMxNTQ3NTY5
MTAwRjFGQUREIC8qIFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLzsgfTsKIAkJNzZF
MTgyREYxNTQ3NjdFNjAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzZFMTgyREUx
NTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0dGluZy1mb3JtLmh0bWwgKi87IH07CisJCTdB
MTQ1OEZDMUFENUMwNzAwMEUwNjc3MiAvKiBtb3VzZS1idXR0b24tbGlzdGVuZXIuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTE0NThG
QjFBRDVDMDM1MDBFMDY3NzIgLyogbW91c2UtYnV0dG9uLWxpc3RlbmVyLmh0bWwgKi87IH07CisJ
CTdBNTYyMzExMUFENUFGM0UwMDk2QjkyMCAvKiBNZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTU2MjMxMDFB
RDVBRjNFMDA5NkI5MjAgLyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMuY3BwICovOyB9OworCQk3
QTk5RDk5NDFBRDRBMjlEMDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTk5RDk5MzFBRDRB
MjlEMDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0gKi87IH07CiAJCTdBQTAy
MUJCMUFCMDlFQTcwMDUyOTUzRiAvKiBEYXRlTWF0aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QUEwMjFCQTFBQjA5RUE3MDA1Mjk1M0YgLyogRGF0
ZU1hdGguY3BwICovOyB9OwogCQk3QUE2QTE1MjFBQUMwQjMxMDAyQjJFRDMgLyogV29ya1F1ZXVl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdBQTZB
MTUxMUFBQzBCMzEwMDJCMkVEMyAvKiBXb3JrUXVldWUuY3BwICovOyB9OwogCQk3QzQ4NkJBMTFB
QTEyNTY3MDAzRjZGOUIgLyogYnVuZGxlLWZpbGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzQ4NkJBMDFBQTEyNTRCMDAzRjZGOUIg
LyogYnVuZGxlLWZpbGUuaHRtbCAqLzsgfTsKQEAgLTMyNCw2ICszMjcsNyBAQAogCQkJZHN0UGF0
aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJ
CQlmaWxlcyA9ICgKKwkJCQk3QTE0NThGQzFBRDVDMDcwMDBFMDY3NzIgLyogbW91c2UtYnV0dG9u
LWxpc3RlbmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJN0M0ODZCQTExQUExMjU2
NzAwM0Y2RjlCIC8qIGJ1bmRsZS1maWxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
MUE5RTUyQzkxM0U2NUVGNDAwNjkxN0Y1IC8qIDE4LWNoYXJhY3RlcnMuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQkzNzkwMjhCOTE0RkFDMjRDMDA3RTZCNDMgLyogYWNjZXB0c0ZpcnN0
TW91c2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTUxOSw2ICs1MjMsOSBAQAogCQk3
NkUxODJEOTE1NDc1NTAxMDBGMUZBREQgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzZFMTgyREMxNTQ3NTY5MTAwRjFGQUREIC8q
IFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFdpbGxTZW5kU3VibWl0RXZlbnRfQnVuZGxlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNzZFMTgyREUxNTQ3NUE4MzAwRjFGQUREIC8qIGF1dG8tc3VibWl0
dGluZy1mb3JtLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiYXV0by1zdWJtaXR0
aW5nLWZvcm0uaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdBMTQ1OEZCMUFE
NUMwMzUwMEUwNjc3MiAvKiBtb3VzZS1idXR0b24tbGlzdGVuZXIuaHRtbCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQuaHRtbDsgcGF0aCA9ICJtb3VzZS1idXR0b24tbGlzdGVuZXIuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTdBNTYyMzEwMUFENUFGM0UwMDk2QjkyMCAvKiBNZW51VHlwZXNG
b3JNb3VzZUV2ZW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTdBOTlEOTkzMUFENEEyOUQwMDM3MzE0MSAvKiBNZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE1lbnVUeXBlc0Zvck1vdXNl
RXZlbnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUEwMjFCQTFBQjA5RUE3
MDA1Mjk1M0YgLyogRGF0ZU1hdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGF0ZU1hdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QUE2QTE1
MTFBQUMwQjMxMDAyQjJFRDMgLyogV29ya1F1ZXVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdvcmtRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTdDNDg2QkEwMUFBMTI1NEIwMDNGNkY5QiAvKiBidW5kbGUtZmlsZS5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gImJ1bmRsZS1maWxlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAw
OCw2ICsxMDE1LDcgQEAKIAkJCQk3QzU0QTRCQzFBQTExQ0NBMDAzODBGNzggLyogV0tCdW5kbGVG
aWxlSGFuZGxlLmNwcCAqLywKIAkJCQk3QzU0QTRCRjFBQTExQ0U0MDAzODBGNzggLyogV0tCdW5k
bGVGaWxlSGFuZGxlX0J1bmRsZS5jcHAgKi8sCiAJCQkJQTFGREZEMkUxOUMyODhCQjAwNTE0OEE0
IC8qIFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3BwICovLAorCQkJCTdBNTYyMzEwMUFENUFG
M0UwMDk2QjkyMCAvKiBNZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5jcHAgKi8sCiAJCQkJN0M4OUQy
QUExQTY5QjgwRDAwM0E1RkRFIC8qIFdLUGFnZUNvbmZpZ3VyYXRpb24uY3BwICovLAogCQkJCTUx
RTkzMDE2MTU2QjEzRTEwMDRDOTlERiAvKiBXS1BhZ2VHZXRTY2FsZUZhY3Rvck5vdFplcm8uY3Bw
ICovLAogCQkJCTUyNEJCQzlDMTlERjM3N0EwMDJGMUFGMSAvKiBXS1BhZ2VJc1BsYXlpbmdBdWRp
by5jcHAgKi8sCkBAIC0xMDY1LDYgKzEwNzMsNyBAQAogCQlCQzkwOTc3QjEyNTU3MUFFMDAwODM3
NTYgLyogUmVzb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQk3QTE0NThGQjFBRDVDMDM1MDBFMDY3NzIgLyogbW91c2UtYnV0dG9uLWxpc3RlbmVy
Lmh0bWwgKi8sCiAJCQkJQzA0NUY5NDYxMzg1QzJGODAwQzBGM0NEIC8qIDE4LWNoYXJhY3RlcnMu
aHRtbCAqLywKIAkJCQkyRDk1MEZCRjFBMjMwQzFFMDAwMTI0MzQgLyogYWN0aW9uLW1lbnUtdGFy
Z2V0cy5odG1sICovLAogCQkJCTkzRDNEMTlCMTdCMUE3QjAwMEM3QzQxNSAvKiBhbGwtY29udGVu
dC1pbi1vbmUtaWZyYW1lLmh0bWwgKi8sCkBAIC0xMTcxLDYgKzExODAsNyBAQAogCQkJCTRCQjQx
NjAxMTY4MTVCMjYwMDgyNDIzOCAvKiBKU1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5tbSAqLywK
IAkJCQlFMTIyMEQ5RjE1NUIyNTQ4MDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGlu
UmVzb3VyY2VMb2FkRGVsZWdhdGUubW0gKi8sCiAJCQkJNTE3RTdERkIxNTExMEVBNjAwRDBCMDA4
IC8qIE1lbW9yeUNhY2hlUHJ1bmVXaXRoaW5SZXNvdXJjZUxvYWREZWxlZ2F0ZS5tbSAqLywKKwkJ
CQk3QTk5RDk5MzFBRDRBMjlEMDAzNzMxNDEgLyogTWVudVR5cGVzRm9yTW91c2VFdmVudHMubW0g
Ki8sCiAJCQkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVX
aXRoV2luZG93Q2hhbmdlcy5tbSAqLywKIAkJCQkwMEJDMTY4NTE2ODBGRTgxMDA2NUYxRTUgLyog
UHVibGljU3VmZml4Lm1tICovLAogCQkJCTM3Qzc4NERFMTk3QzhGMkUwMDEwQTQ5NiAvKiBSZW5k
ZXJlZEltYWdlRnJvbURPTU5vZGUubW0gKi8sCkBAIC0xNTY2LDYgKzE1NzYsOCBAQAogCQkJCTJF
Nzc2NUNEMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0FBNkExNTIxQUFDMEIzMTAwMkIyRUQzIC8qIFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkyRTc3NjVDRjE2QzREODExMDBCQTJCQjEgLyogbWFpbk1hYy5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTdBNTYyMzExMUFENUFGM0UwMDk2QjkyMCAvKiBNZW51VHlwZXNGb3JNb3VzZUV2ZW50
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3QTk5RDk5NDFBRDRBMjlEMDAzNzMxNDEgLyogTWVu
dVR5cGVzRm9yTW91c2VFdmVudHMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9NZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL01lbnVUeXBlc0Zvck1v
dXNlRXZlbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9NZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBXS19I
QVZFX0NfU1BJCisKKyNpbmNsdWRlICJKYXZhU2NyaXB0VGVzdC5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworc3RhdGljIGJvb2wgZGlkRmluaXNoTG9hZDsKKworc3RhdGlj
IHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBl
UmVmLCBjb25zdCB2b2lkKikKK3sKKyAgICBkaWRGaW5pc2hMb2FkID0gdHJ1ZTsKK30KKworc3Rh
dGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkKK3sKKyAgICBXS1Bh
Z2VMb2FkZXJDbGllbnRWMCBsb2FkZXJDbGllbnQ7CisgICAgbWVtc2V0KCZsb2FkZXJDbGllbnQs
IDAsIHNpemVvZihsb2FkZXJDbGllbnQpKTsKKworICAgIGxvYWRlckNsaWVudC5iYXNlLnZlcnNp
b24gPSAwOworICAgIGxvYWRlckNsaWVudC5kaWRGaW5pc2hMb2FkRm9yRnJhbWUgPSBkaWRGaW5p
c2hMb2FkRm9yRnJhbWU7CisKKyAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2UsICZs
b2FkZXJDbGllbnQuYmFzZSk7Cit9CisKK3N0YXRpYyB2b2lkIGJ1aWxkQW5kUGVyZm9ybVRlc3Qo
V0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIGNv
bnN0IGNoYXIqIGV4cGVjdGVkQnV0dG9uLCBjb25zdCBjaGFyKiBleHBlY3RlZE1lbnVUeXBlKQor
eworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBXS0NvbnRl
eHRDcmVhdGUoKSk7CisgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7
CisgICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CisKKyAgICBXS1JldGFp
blB0cjxXS1VSTFJlZj4gdXJsKEFkb3B0V0ssIFV0aWw6OmNyZWF0ZVVSTEZvclJlc291cmNlKCJt
b3VzZS1idXR0b24tbGlzdGVuZXIiLCAiaHRtbCIpKTsKKyAgICBXS1BhZ2VMb2FkVVJMKHdlYlZp
ZXcucGFnZSgpLCB1cmwuZ2V0KCkpOworICAgIFV0aWw6OnJ1bigmZGlkRmluaXNoTG9hZCk7CisK
KyAgICBkaWRGaW5pc2hMb2FkID0gZmFsc2U7CisKKyAgICB3ZWJWaWV3LnNpbXVsYXRlQnV0dG9u
Q2xpY2soYnV0dG9uLCAxMCwgMTAsIG1vZGlmaWVycyk7CisKKyAgICBFWFBFQ1RfSlNfRVEod2Vi
Vmlldy5wYWdlKCksICJwcmVzc2VkTW91c2VCdXR0b24oKSIsIGV4cGVjdGVkQnV0dG9uKTsKKyAg
ICBFWFBFQ1RfSlNfRVEod2ViVmlldy5wYWdlKCksICJkaXNwbGF5ZWRNZW51KCkiLCBleHBlY3Rl
ZE1lbnVUeXBlKTsKK30KKworVEVTVChXZWJLaXQyLCBOb3JtYWxMZWZ0Q2xpY2spCit7CisgICAg
YnVpbGRBbmRQZXJmb3JtVGVzdChrV0tFdmVudE1vdXNlQnV0dG9uTGVmdEJ1dHRvbiwgMCwgIjAi
LCAibm9uZSIpOworfQorCitURVNUKFdlYktpdDIsIE5vcm1hbFJpZ2h0Q2xpY2spCit7CisgICAg
YnVpbGRBbmRQZXJmb3JtVGVzdChrV0tFdmVudE1vdXNlQnV0dG9uUmlnaHRCdXR0b24sIDAsICIy
IiwgImNvbnRleHQiKTsKK30KKworVEVTVChXZWJLaXQyLCBOb3JtYWxNaWRkbGVDbGljaykKK3sK
KyAgICBidWlsZEFuZFBlcmZvcm1UZXN0KGtXS0V2ZW50TW91c2VCdXR0b25NaWRkbGVCdXR0b24s
IDAsICIxIiwgIm5vbmUiKTsKK30KKworVEVTVChXZWJLaXQyLCBDb250cm9sTGVmdENsaWNrKQor
eworICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3Qoa1dLRXZlbnRNb3VzZUJ1dHRvbkxlZnRCdXR0b24s
IGtXS0V2ZW50TW9kaWZpZXJzQ29udHJvbEtleSwgIjAiLCAiY29udGV4dCIpOworfQorCitURVNU
KFdlYktpdDIsIENvbnRyb2xSaWdodENsaWNrKQoreworICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3Qo
a1dLRXZlbnRNb3VzZUJ1dHRvblJpZ2h0QnV0dG9uLCBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xL
ZXksICIyIiwgImNvbnRleHQiKTsKK30KKworVEVTVChXZWJLaXQyLCBDb250cm9sTWlkZGxlQ2xp
Y2spCit7CisgICAgYnVpbGRBbmRQZXJmb3JtVGVzdChrV0tFdmVudE1vdXNlQnV0dG9uTWlkZGxl
QnV0dG9uLCBrV0tFdmVudE1vZGlmaWVyc0NvbnRyb2xLZXksICIxIiwgIm5vbmUiKTsKK30KKwor
VEVTVChXZWJLaXQyLCBTaGlmdExlZnRDbGljaykKK3sKKyAgICBidWlsZEFuZFBlcmZvcm1UZXN0
KGtXS0V2ZW50TW91c2VCdXR0b25MZWZ0QnV0dG9uLCBrV0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5
LCAiMCIsICJub25lIik7Cit9CisKK1RFU1QoV2ViS2l0MiwgU2hpZnRSaWdodENsaWNrKQorewor
ICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3Qoa1dLRXZlbnRNb3VzZUJ1dHRvblJpZ2h0QnV0dG9uLCBr
V0tFdmVudE1vZGlmaWVyc1NoaWZ0S2V5LCAiMiIsICJjb250ZXh0Iik7Cit9CisKK1RFU1QoV2Vi
S2l0MiwgU2hpZnRNaWRkbGVDbGljaykKK3sKKyAgICBidWlsZEFuZFBlcmZvcm1UZXN0KGtXS0V2
ZW50TW91c2VCdXR0b25NaWRkbGVCdXR0b24sIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXksICIx
IiwgIm5vbmUiKTsKK30KKworVEVTVChXZWJLaXQyLCBDb21tYW5kTGVmdENsaWNrKQoreworICAg
IGJ1aWxkQW5kUGVyZm9ybVRlc3Qoa1dLRXZlbnRNb3VzZUJ1dHRvbkxlZnRCdXR0b24sIGtXS0V2
ZW50TW9kaWZpZXJzTWV0YUtleSwgIjAiLCAibm9uZSIpOworfQorCitURVNUKFdlYktpdDIsIENv
bW1hbmRSaWdodENsaWNrKQoreworICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3Qoa1dLRXZlbnRNb3Vz
ZUJ1dHRvblJpZ2h0QnV0dG9uLCBrV0tFdmVudE1vZGlmaWVyc01ldGFLZXksICIyIiwgImNvbnRl
eHQiKTsKK30KKworVEVTVChXZWJLaXQyLCBDb21tYW5kTWlkZGxlQ2xpY2spCit7CisgICAgYnVp
bGRBbmRQZXJmb3JtVGVzdChrV0tFdmVudE1vdXNlQnV0dG9uTWlkZGxlQnV0dG9uLCBrV0tFdmVu
dE1vZGlmaWVyc01ldGFLZXksICIxIiwgIm5vbmUiKTsKK30KKworVEVTVChXZWJLaXQyLCBBbHRM
ZWZ0Q2xpY2spCit7CisgICAgYnVpbGRBbmRQZXJmb3JtVGVzdChrV0tFdmVudE1vdXNlQnV0dG9u
TGVmdEJ1dHRvbiwga1dLRXZlbnRNb2RpZmllcnNBbHRLZXksICIwIiwgIm5vbmUiKTsKK30KKwor
VEVTVChXZWJLaXQyLCBBbHRSaWdodENsaWNrKQoreworICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3Qo
a1dLRXZlbnRNb3VzZUJ1dHRvblJpZ2h0QnV0dG9uLCBrV0tFdmVudE1vZGlmaWVyc0FsdEtleSwg
IjIiLCAiY29udGV4dCIpOworfQorCitURVNUKFdlYktpdDIsIEFsdE1pZGRsZUNsaWNrKQorewor
ICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3Qoa1dLRXZlbnRNb3VzZUJ1dHRvbk1pZGRsZUJ1dHRvbiwg
a1dLRXZlbnRNb2RpZmllcnNBbHRLZXksICIxIiwgIm5vbmUiKTsKK30KKyAgICAKK30gLy8gbmFt
ZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvbW91c2UtYnV0dG9uLWxpc3RlbmVyLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21vdXNlLWJ1dHRvbi1saXN0ZW5lci5o
dG1sCShyZXZpc2lvbiAwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21v
dXNlLWJ1dHRvbi1saXN0ZW5lci5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzAgQEAK
KzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdD4KKyAgICB2YXIgbW91c2VCdXR0b24gPSAtMTsKKyAg
ICB2YXIgbWVudVR5cGUgPSAibm9uZSI7CisKKyAgICBmdW5jdGlvbiBtb3VzZURvd25IYW5kbGVy
KGV2ZW50KQorICAgIHsKKyAgICAgICAgbW91c2VCdXR0b24gPSBldmVudC5idXR0b247CisgICAg
ICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHBy
ZXNzZWRNb3VzZUJ1dHRvbigpCisgICAgeworICAgICAgICByZXR1cm4gbW91c2VCdXR0b247Cisg
ICAgfQorIAorICAgIGZ1bmN0aW9uIGNvbnRleHRNZW51SGFuZGxlcihldmVudCkKKyAgICB7Cisg
ICAgICAgIG1lbnVUeXBlID0gImNvbnRleHQiOworICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVs
dCgpOworICAgIH0KKyAgCisgICAgZnVuY3Rpb24gZGlzcGxheWVkTWVudSgpCisgICAgeworICAg
ICAgICByZXR1cm4gbWVudVR5cGU7CisgICAgfQorCisgICAgYWRkRXZlbnRMaXN0ZW5lcigibW91
c2Vkb3duIiwgbW91c2VEb3duSGFuZGxlcik7CisgICAgYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4
dG1lbnUiLCBjb250ZXh0TWVudUhhbmRsZXIpOworPC9zY3JpcHQ+CkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW51VHlwZXNGb3JNb3VzZUV2ZW50cy5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9NZW51VHlwZXNGb3JNb3VzZUV2ZW50
cy5tbQkocmV2aXNpb24gMCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL01lbnVU
eXBlc0Zvck1vdXNlRXZlbnRzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTQwIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGll
cy5oIgorI2ltcG9ydCA8Q2FyYm9uL0NhcmJvbi5oPiAvLyBGb3IgR2V0Q3VycmVudEV2ZW50VGlt
ZQorI2ltcG9ydCA8V2ViQ29yZS9OU01lbnVTUEkuaD4KKyNpbXBvcnQgPFdlYkNvcmUvUGxhdGZv
cm1FdmVudEZhY3RvcnlNYWMuaD4KKyNpbXBvcnQgPHd0Zi9BdXRvZHJhaW5lZFBvb2wuaD4KKyNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitz
dGF0aWMgYm9vbCBjYW5DYWxsTWVudVR5cGVGb3JFdmVudCgpCit7CisgICAgcmV0dXJuIFtOU01l
bnUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihtZW51VHlwZUZvckV2ZW50OildOworfQor
CitzdGF0aWMgdm9pZCBidWlsZEFuZFBlcmZvcm1UZXN0KE5TRXZlbnRUeXBlIGJ1dHRvbkV2ZW50
LCBOU0V2ZW50TW9kaWZpZXJGbGFncyBtb2RpZmllckZsYWdzLCBXZWJDb3JlOjpNb3VzZUJ1dHRv
biBleHBlY3RlZEJ1dHRvbiwgTlNNZW51VHlwZSBleHBlY3RlZE1lbnUpCit7CisgICAgQXV0b2Ry
YWluZWRQb29sIHBvb2w7CisgICAgUmV0YWluUHRyPFdlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbV2ViVmlldyBhbGxvY10gaW5pdF0pOworICAgIE5TRXZlbnQgKmV2ZW50ID0gW05TRXZlbnQg
bW91c2VFdmVudFdpdGhUeXBlOmJ1dHRvbkV2ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbG9jYXRpb246TlNNYWtlUG9pbnQoMTAwLCAxMDApCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyRmxhZ3M6bW9kaWZpZXJGbGFncworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOkdldEN1cnJlbnRF
dmVudFRpbWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93TnVt
YmVyOltbd2ViVmlldy5nZXQoKSB3aW5kb3ddIHdpbmRvd051bWJlcl0KKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3Vy
cmVudENvbnRleHRdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRO
dW1iZXI6MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlja0NvdW50
OjAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzc3VyZTowXTsK
KyAgICAKKyAgICBhdXRvIHBtZSA9IFdlYkNvcmU6OlBsYXRmb3JtRXZlbnRGYWN0b3J5OjpjcmVh
dGVQbGF0Zm9ybU1vdXNlRXZlbnQoZXZlbnQsIHdlYlZpZXcuZ2V0KCkpOworICAgIAorICAgIEVY
UEVDVF9FUShleHBlY3RlZEJ1dHRvbiwgcG1lLmJ1dHRvbigpKTsKKyAgICBFWFBFQ1RfVFJVRSgh
bW9kaWZpZXJGbGFncyB8fCBwbWUubW9kaWZpZXJGbGFncygpICYgbW9kaWZpZXJGbGFncyk7Cisg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkTWVudSwgcG1lLm1lbnVUeXBlRm9yRXZlbnQoKSk7CisgICAg
aWYgKGNhbkNhbGxNZW51VHlwZUZvckV2ZW50KCkpCisgICAgICAgIEVYUEVDVF9FUShleHBlY3Rl
ZE1lbnUsIFtOU01lbnUgbWVudVR5cGVGb3JFdmVudDpldmVudF0pOworfQorCitURVNUKFdlYktp
dDEsIE5vcm1hbExlZnRDbGljaykKK3sKKyAgICBidWlsZEFuZFBlcmZvcm1UZXN0KE5TTGVmdE1v
dXNlRG93biwgMCwgV2ViQ29yZTo6TGVmdEJ1dHRvbiwgTlNNZW51VHlwZU5vbmUpOworfQorCitU
RVNUKFdlYktpdDEsIE5vcm1hbFJpZ2h0Q2xpY2spCit7CisgICAgYnVpbGRBbmRQZXJmb3JtVGVz
dChOU1JpZ2h0TW91c2VEb3duLCAwLCBXZWJDb3JlOjpSaWdodEJ1dHRvbiwgTlNNZW51VHlwZUNv
bnRleHRNZW51KTsKK30KKworVEVTVChXZWJLaXQxLCBOb3JtYWxNaWRkbGVDbGljaykKK3sKKyAg
ICBidWlsZEFuZFBlcmZvcm1UZXN0KE5TT3RoZXJNb3VzZURvd24sIDAsIFdlYkNvcmU6Ok1pZGRs
ZUJ1dHRvbiwgTlNNZW51VHlwZU5vbmUpOworfQorCitURVNUKFdlYktpdDEsIENvbnRyb2xMZWZ0
Q2xpY2spCit7CisgICAgYnVpbGRBbmRQZXJmb3JtVGVzdChOU0xlZnRNb3VzZURvd24sIE5TQ29u
dHJvbEtleU1hc2ssIFdlYkNvcmU6OkxlZnRCdXR0b24sIE5TTWVudVR5cGVDb250ZXh0TWVudSk7
Cit9CisKK1RFU1QoV2ViS2l0MSwgQ29udHJvbFJpZ2h0Q2xpY2spCit7CisgICAgYnVpbGRBbmRQ
ZXJmb3JtVGVzdChOU1JpZ2h0TW91c2VEb3duLCBOU0NvbnRyb2xLZXlNYXNrLCBXZWJDb3JlOjpS
aWdodEJ1dHRvbiwgTlNNZW51VHlwZUNvbnRleHRNZW51KTsKK30KKworVEVTVChXZWJLaXQxLCBD
b250cm9sTWlkZGxlQ2xpY2spCit7CisgICAgYnVpbGRBbmRQZXJmb3JtVGVzdChOU090aGVyTW91
c2VEb3duLCBOU0NvbnRyb2xLZXlNYXNrLCBXZWJDb3JlOjpNaWRkbGVCdXR0b24sIE5TTWVudVR5
cGVOb25lKTsKK30KKyAgICAKK1RFU1QoV2ViS2l0MSwgU2hpZnRMZWZ0Q2xpY2spCit7CisgICAg
YnVpbGRBbmRQZXJmb3JtVGVzdChOU0xlZnRNb3VzZURvd24sIE5TU2hpZnRLZXlNYXNrLCBXZWJD
b3JlOjpMZWZ0QnV0dG9uLCBOU01lbnVUeXBlTm9uZSk7Cit9CisKK1RFU1QoV2ViS2l0MSwgU2hp
ZnRSaWdodENsaWNrKQoreworICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3QoTlNSaWdodE1vdXNlRG93
biwgTlNTaGlmdEtleU1hc2ssIFdlYkNvcmU6OlJpZ2h0QnV0dG9uLCBOU01lbnVUeXBlQ29udGV4
dE1lbnUpOworfQorCitURVNUKFdlYktpdDEsIFNoaWZ0TWlkZGxlQ2xpY2spCit7CisgICAgYnVp
bGRBbmRQZXJmb3JtVGVzdChOU090aGVyTW91c2VEb3duLCBOU1NoaWZ0S2V5TWFzaywgV2ViQ29y
ZTo6TWlkZGxlQnV0dG9uLCBOU01lbnVUeXBlTm9uZSk7Cit9CisKK1RFU1QoV2ViS2l0MSwgQ29t
bWFuZExlZnRDbGljaykKK3sKKyAgICBidWlsZEFuZFBlcmZvcm1UZXN0KE5TTGVmdE1vdXNlRG93
biwgTlNDb21tYW5kS2V5TWFzaywgV2ViQ29yZTo6TGVmdEJ1dHRvbiwgTlNNZW51VHlwZU5vbmUp
OworfQorCitURVNUKFdlYktpdDEsIENvbW1hbmRSaWdodENsaWNrKQoreworICAgIGJ1aWxkQW5k
UGVyZm9ybVRlc3QoTlNSaWdodE1vdXNlRG93biwgTlNDb21tYW5kS2V5TWFzaywgV2ViQ29yZTo6
UmlnaHRCdXR0b24sIE5TTWVudVR5cGVDb250ZXh0TWVudSk7Cit9CisKK1RFU1QoV2ViS2l0MSwg
Q29tbWFuZE1pZGRsZUNsaWNrKQoreworICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3QoTlNPdGhlck1v
dXNlRG93biwgTlNDb21tYW5kS2V5TWFzaywgV2ViQ29yZTo6TWlkZGxlQnV0dG9uLCBOU01lbnVU
eXBlTm9uZSk7Cit9CisKK1RFU1QoV2ViS2l0MSwgQWx0TGVmdENsaWNrKQoreworICAgIGJ1aWxk
QW5kUGVyZm9ybVRlc3QoTlNMZWZ0TW91c2VEb3duLCBOU0FsdGVybmF0ZUtleU1hc2ssIFdlYkNv
cmU6OkxlZnRCdXR0b24sIE5TTWVudVR5cGVOb25lKTsKK30KKworVEVTVChXZWJLaXQxLCBBbHRS
aWdodENsaWNrKQoreworICAgIGJ1aWxkQW5kUGVyZm9ybVRlc3QoTlNSaWdodE1vdXNlRG93biwg
TlNBbHRlcm5hdGVLZXlNYXNrLCBXZWJDb3JlOjpSaWdodEJ1dHRvbiwgTlNNZW51VHlwZUNvbnRl
eHRNZW51KTsKK30KKworVEVTVChXZWJLaXQxLCBBbHRNaWRkbGVDbGljaykKK3sKKyAgICBidWls
ZEFuZFBlcmZvcm1UZXN0KE5TT3RoZXJNb3VzZURvd24sIE5TQWx0ZXJuYXRlS2V5TWFzaywgV2Vi
Q29yZTo6TWlkZGxlQnV0dG9uLCBOU01lbnVUeXBlTm9uZSk7Cit9CisKKworfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9tYWMvUGxhdGZvcm1X
ZWJWaWV3TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL1BsYXRm
b3JtV2ViVmlld01hYy5tbQkocmV2aXNpb24gMTgyNDMwKQorKysgVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xOTMsNCArMTkz
LDUwIEBAIHZvaWQgUGxhdGZvcm1XZWJWaWV3OjpzaW11bGF0ZU1vdXNlTW92ZSgKICAgICAKIH0K
IAorc3RhdGljIE5TRXZlbnRUeXBlIGV2ZW50VHlwZUZvckJ1dHRvbihXS0V2ZW50TW91c2VCdXR0
b24gYnV0dG9uKQoreworICAgIHN3aXRjaCAoYnV0dG9uKSB7CisgICAgY2FzZSBrV0tFdmVudE1v
dXNlQnV0dG9uTGVmdEJ1dHRvbjoKKyAgICAgICAgcmV0dXJuIE5TTGVmdE1vdXNlRG93bjsKKyAg
ICBjYXNlIGtXS0V2ZW50TW91c2VCdXR0b25SaWdodEJ1dHRvbjoKKyAgICAgICAgcmV0dXJuIE5T
UmlnaHRNb3VzZURvd247CisgICAgY2FzZSBrV0tFdmVudE1vdXNlQnV0dG9uTWlkZGxlQnV0dG9u
OgorICAgICAgICByZXR1cm4gTlNPdGhlck1vdXNlRG93bjsKKyAgICBjYXNlIGtXS0V2ZW50TW91
c2VCdXR0b25Ob0J1dHRvbjoKKyAgICAgICAgcmV0dXJuIE5TTGVmdE1vdXNlRG93bjsKKyAgICB9
CisKKyAgICByZXR1cm4gTlNMZWZ0TW91c2VEb3duOworfQorCitzdGF0aWMgTlNFdmVudE1vZGlm
aWVyRmxhZ3MgbW9kaWZpZXJGbGFnc0ZvcldLTW9kaWZpZXJzKFdLRXZlbnRNb2RpZmllcnMgbW9k
aWZpZXJzKQoreworICAgIE5TRXZlbnRNb2RpZmllckZsYWdzIHJldHVyblZhbCA9IDA7CisgICAg
aWYgKG1vZGlmaWVycyAmIGtXS0V2ZW50TW9kaWZpZXJzU2hpZnRLZXkpCisgICAgICAgIHJldHVy
blZhbCB8PSBOU1NoaWZ0S2V5TWFzazsKKyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRNb2Rp
ZmllcnNDb250cm9sS2V5KQorICAgICAgICByZXR1cm5WYWwgfD0gTlNDb250cm9sS2V5TWFzazsK
KyAgICBpZiAobW9kaWZpZXJzICYga1dLRXZlbnRNb2RpZmllcnNBbHRLZXkpCisgICAgICAgIHJl
dHVyblZhbCB8PSBOU0FsdGVybmF0ZUtleU1hc2s7CisgICAgaWYgKG1vZGlmaWVycyAmIGtXS0V2
ZW50TW9kaWZpZXJzTWV0YUtleSkKKyAgICAgICAgcmV0dXJuVmFsIHw9IE5TQ29tbWFuZEtleU1h
c2s7CisKKyAgICByZXR1cm4gcmV0dXJuVmFsOworfQorICAgIAordm9pZCBQbGF0Zm9ybVdlYlZp
ZXc6OnNpbXVsYXRlQnV0dG9uQ2xpY2soV0tFdmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgdW5zaWdu
ZWQgeCwgdW5zaWduZWQgeSwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMpCit7CisgICAgTlNF
dmVudCAqZXZlbnQgPSBbTlNFdmVudCBtb3VzZUV2ZW50V2l0aFR5cGU6ZXZlbnRUeXBlRm9yQnV0
dG9uKGJ1dHRvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2Nh
dGlvbjpOU01ha2VQb2ludCh4LCB5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtb2RpZmllckZsYWdzOm1vZGlmaWVyRmxhZ3NGb3JXS01vZGlmaWVycyhtb2RpZmllcnMpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lc3RhbXA6R2V0Q3VycmVu
dEV2ZW50VGltZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dO
dW1iZXI6W21fd2luZG93IHdpbmRvd051bWJlcl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGV4dDpbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnROdW1iZXI6MAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlja0NvdW50OjAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzc3VyZTowXTsKKworICAgIFttX3Zp
ZXcgbW91c2VEb3duOmV2ZW50XTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQo=
</data>
<flag name="review"
          id="275169"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>