<?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>71753</bug_id>
          
          <creation_ts>2011-11-07 17:18:36 -0800</creation_ts>
          <short_desc>IDL changes for gamepad support</short_desc>
          <delta_ts>2011-11-18 19:10:25 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dvcs.w3.org/hg/webevents/raw-file/default/gamepad.html</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71518</dependson>
    
    <dependson>71763</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Scott Graham">scottmg</reporter>
          <assigned_to name="Scott Graham">scottmg</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gregsimon</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>497618</commentid>
    <comment_count>0</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-07 17:18:36 -0800</bug_when>
    <thetext>Just the IDL changes and supporting glue code for gamepad support.

Full patch is https://bugs.webkit.org/show_bug.cgi?id=69451

This patch doesn&apos;t include plumbing through to platform (the top level access point is in Navigator and is stubbed to return null in the patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497625</commentid>
    <comment_count>1</comment_count>
      <attachid>113964</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-07 17:28:01 -0800</bug_when>
    <thetext>Created attachment 113964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497639</commentid>
    <comment_count>2</comment_count>
      <attachid>113964</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-07 17:43:10 -0800</bug_when>
    <thetext>Comment on attachment 113964
Patch

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

&gt; Source/WebCore/bindings/v8/custom/V8GamepadCustom.cpp:37
&gt; +static v8::Handle&lt;v8::Value&gt; createNumberArray(const Gamepad::FloatVector&amp; vector)

You should teach the code generator how to do this instead of writing custom bindings.  All custom bindings are fully of bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497732</commentid>
    <comment_count>3</comment_count>
      <attachid>113964</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-07 21:51:57 -0800</bug_when>
    <thetext>Comment on attachment 113964
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/custom/V8GamepadCustom.cpp:37
&gt;&gt; +static v8::Handle&lt;v8::Value&gt; createNumberArray(const Gamepad::FloatVector&amp; vector)
&gt; 
&gt; You should teach the code generator how to do this instead of writing custom bindings.  All custom bindings are fully of bugs.

OK. WIP here: https://bugs.webkit.org/show_bug.cgi?id=71763</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499140</commentid>
    <comment_count>4</comment_count>
      <attachid>114314</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-09 10:53:23 -0800</bug_when>
    <thetext>Created attachment 114314
remove custom binding code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>500080</commentid>
    <comment_count>5</comment_count>
      <attachid>114533</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-10 11:48:01 -0800</bug_when>
    <thetext>Created attachment 114533
add basic test + harness</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>501024</commentid>
    <comment_count>6</comment_count>
      <attachid>114533</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-11 13:08:03 -0800</bug_when>
    <thetext>Comment on attachment 114533
add basic test + harness

Attachment 114533 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10450568</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503137</commentid>
    <comment_count>7</comment_count>
      <attachid>115215</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-15 12:13:49 -0800</bug_when>
    <thetext>Created attachment 115215
reupload to re-EWS now that pipelined change 71518 is landed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503263</commentid>
    <comment_count>8</comment_count>
      <attachid>115215</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-15 14:16:37 -0800</bug_when>
    <thetext>Comment on attachment 115215
reupload to re-EWS now that pipelined change 71518 is landed

Attachment 115215 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10483453

New failing tests:
fast/dom/navigator-detached-no-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503285</commentid>
    <comment_count>9</comment_count>
      <attachid>115247</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-15 14:28:26 -0800</bug_when>
    <thetext>Created attachment 115247
test rebase for navigator addition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505961</commentid>
    <comment_count>10</comment_count>
      <attachid>115845</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-18 12:09:07 -0800</bug_when>
    <thetext>Created attachment 115845
vendor prefix, update Skippeds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505963</commentid>
    <comment_count>11</comment_count>
      <attachid>115845</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 12:12:50 -0800</bug_when>
    <thetext>Comment on attachment 115845
vendor prefix, update Skippeds

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

&gt; Source/WebCore/WebCore.gypi:2954
&gt; +            &apos;page/Gamepad.cpp&apos;,
&gt; +            &apos;page/Gamepad.h&apos;,
&gt; +            &apos;page/GamepadList.cpp&apos;,
&gt; +            &apos;page/GamepadList.h&apos;,

Drive by: &quot;page&quot; isn&apos;t really the right place for these objects because they have document-scope, not page-scope.  I realize that there isn&apos;t a good place to put them at the moment.  It&apos;s fine to put them here for now, but we&apos;ll probably end up moving them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>505976</commentid>
    <comment_count>12</comment_count>
      <attachid>115845</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-18 12:38:51 -0800</bug_when>
    <thetext>Comment on attachment 115845
vendor prefix, update Skippeds

Attachment 115845 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10517207

New failing tests:
fast/dom/navigator-detached-no-crash.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506001</commentid>
    <comment_count>13</comment_count>
      <attachid>115857</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-18 13:17:21 -0800</bug_when>
    <thetext>Created attachment 115857
rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506097</commentid>
    <comment_count>14</comment_count>
      <attachid>115857</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 15:03:20 -0800</bug_when>
    <thetext>Comment on attachment 115857
rebase

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

If it&apos;s not too much trouble, would you be willing to put these files in Source/WebCore/Modules/gamepad ?  We&apos;ve been discussing creating a Modules directory to hold these sorts of features, and your patch seems well timed to be the guinea pig.  (If you&apos;d rather not be a guinea pig, we can keep these in page.)

Some minor nits below.

&gt; Source/WebCore/page/Gamepad.h:26
&gt; +

Please include ENABLE(GAMEPAD) guards in these header files.

&gt; Source/WebCore/page/GamepadList.h:26
&gt; +

ENABLE(GAMEPAD)

&gt; Source/WebCore/page/Navigator.idl:66
&gt; +        readonly attribute [EnabledAtRuntime] GamepadList webkitGamepads;

You can use Conditional=GAMEPAD rather than #if statements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506144</commentid>
    <comment_count>15</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-18 15:36:11 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 115857 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=115857&amp;action=review
&gt; 
&gt; If it&apos;s not too much trouble, would you be willing to put these files in Source/WebCore/Modules/gamepad ?  We&apos;ve been discussing creating a Modules directory to hold these sorts of features, and your patch seems well timed to be the guinea pig.  (If you&apos;d rather not be a guinea pig, we can keep these in page.)

Sure, I can do that if we can get it done soon-ish (I would like to get moving, as there&apos;s a lot of dependent code in Chromium). Are we decided on &quot;Modules&quot;?

Moved various to Modules/gamepad/, and changed WebCore.gypi and WebCore.gyp/WebCore.gyp for includes.

&gt; 
&gt; Some minor nits below.
&gt; 
&gt; &gt; Source/WebCore/page/Gamepad.h:26
&gt; &gt; +
&gt; 
&gt; Please include ENABLE(GAMEPAD) guards in these header files.
&gt; 
&gt; &gt; Source/WebCore/page/GamepadList.h:26
&gt; &gt; +

Done (but moved of course)

 
&gt; ENABLE(GAMEPAD)
&gt; 
&gt; &gt; Source/WebCore/page/Navigator.idl:66
&gt; &gt; +        readonly attribute [EnabledAtRuntime] GamepadList webkitGamepads;
&gt; 
&gt; You can use Conditional=GAMEPAD rather than #if statements.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506145</commentid>
    <comment_count>16</comment_count>
      <attachid>115894</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-18 15:36:46 -0800</bug_when>
    <thetext>Created attachment 115894
review fixes, move to Modules</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506150</commentid>
    <comment_count>17</comment_count>
      <attachid>115894</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-18 15:48:43 -0800</bug_when>
    <thetext>Comment on attachment 115894
review fixes, move to Modules

Attachment 115894 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10518233</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506154</commentid>
    <comment_count>18</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-18 15:51:49 -0800</bug_when>
    <thetext>Hmm... so there&apos;s a lot of include dirs to update for the various ports. Do you think it might make more sense to do the move to Modules as a separate patch instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506158</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 15:54:00 -0800</bug_when>
    <thetext>&gt; Hmm... so there&apos;s a lot of include dirs to update for the various ports. Do you think it might make more sense to do the move to Modules as a separate patch instead?

Sure, that&apos;s fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506163</commentid>
    <comment_count>20</comment_count>
      <attachid>115898</attachid>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-18 15:59:19 -0800</bug_when>
    <thetext>Created attachment 115898
retreat on Modules</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506164</commentid>
    <comment_count>21</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-18 16:00:27 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; Hmm... so there&apos;s a lot of include dirs to update for the various ports. Do you think it might make more sense to do the move to Modules as a separate patch instead?
&gt; 
&gt; Sure, that&apos;s fine.

OK, as soon as this one lands I&apos;ll work up a guinea pig move-to-Modules and hunt down all the necessary places to change include dirs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506210</commentid>
    <comment_count>22</comment_count>
      <attachid>115898</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 16:48:22 -0800</bug_when>
    <thetext>Comment on attachment 115898
retreat on Modules

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

&gt; Source/WebCore/page/Navigator.cpp:35
&gt; +#include &quot;GamepadList.h&quot;

Usually we put ifdefs around these sorts of headers so that folks who don&apos;t enable this feature don&apos;t need to include it.  This file is missing a bunch of those ifdefs, which is probably why you didn&apos;t add them.

&gt; LayoutTests/gamepad/gamepad-api.html:3
&gt; +&lt;script src=&quot;gamepad-test.js&quot;&gt;&lt;/script&gt;

Is there some reason to use a gamepad-specific test harness rather than the usual script test harness?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506211</commentid>
    <comment_count>23</comment_count>
      <attachid>115898</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-18 16:49:08 -0800</bug_when>
    <thetext>Comment on attachment 115898
retreat on Modules

This is fine to land as-is, but consider moving the test to use the usual fast/js testing helper functions as you add more gamepad tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506258</commentid>
    <comment_count>24</comment_count>
      <attachid>115898</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-18 18:03:30 -0800</bug_when>
    <thetext>Comment on attachment 115898
retreat on Modules

Clearing flags on attachment: 115898

Committed r100833: &lt;http://trac.webkit.org/changeset/100833&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506259</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-18 18:03:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506295</commentid>
    <comment_count>26</comment_count>
    <who name="Scott Graham">scottmg</who>
    <bug_when>2011-11-18 19:10:25 -0800</bug_when>
    <thetext>Followup cleanup here: https://bugs.webkit.org/show_bug.cgi?id=72785</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113964</attachid>
            <date>2011-11-07 17:28:01 -0800</date>
            <delta_ts>2011-11-09 10:53:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71753-20111107172800.patch</filename>
            <type>text/plain</type>
            <size>21529</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk1MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2YjViOTZkZjNkYjFkNzg5
YjIxODliZGIxZmE5MDY0NGIwNDVjZDNkLi4xOGQ2OTIxYmQyNGE2YWViZmY5ZjBmZjJmODAyMDE3
ZjQzN2UzOTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDMgQEAKKzIwMTEtMTEtMDcgIFNjb3R0
IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIElETCBjaGFuZ2VzIGZv
ciBnYW1lcGFkIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxNzUzCisKKyAgICAgICAgSURMIGNoYW5nZXMgYW5kIGFzc29jaWF0ZWQgcGx1
bWJpbmcgdG8gZXhwb3NlIGxpc3Qgb2YgZ2FtZXBhZCBvYmplY3RzCisgICAgICAgIG9uIG5hdmln
YXRvciBvYmplY3QgKHBlciBjdXJyZW50IHNwZWMpLiBGdWxsIHBhdGNoIGlzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ1MS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBwbHVtYmluZyB0aHJvdWdo
IHRvIHBsYXRmb3JtIGxldmVsIHlldCBpbiB0aGlzIHBhdGNoIHRvIGdpdmUgdGVzdAorICAgICAg
ICBjb2RlIGFjY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhHYW1lcGFkQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpjcmVhdGVOdW1iZXJBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpWOEdhbWVwYWQ6OmF4
ZXNBY2Nlc3NvckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOEdhbWVwYWQ6OmJ1dHRvbnNB
Y2Nlc3NvckdldHRlcik6CisgICAgICAgICogcGFnZS9HYW1lcGFkLmNwcDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpHYW1lcGFkOjpHYW1lcGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWQ6OmF4ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6YnV0dG9ucyk6CisgICAgICAg
IChXZWJDb3JlOjpHYW1lcGFkOjp+R2FtZXBhZCk6CisgICAgICAgICogcGFnZS9HYW1lcGFkLmg6
IEFkZGVkLgorICAgICAgICAqIHBhZ2UvR2FtZXBhZC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBh
Z2UvR2FtZXBhZExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0
Ojp+R2FtZXBhZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6OnNldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OkdhbWVwYWRMaXN0OjppdGVtKToKKyAgICAgICAgKiBwYWdlL0dhbWVwYWRMaXN0Lmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHYW1lcGFkTGlzdDo6R2FtZXBhZExpc3QpOgorICAgICAgICAqIHBhZ2UvR2FtZXBhZExp
c3QuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpOYXZpZ2F0b3I6OmdhbWVwYWRzKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5o
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmlkbDoKKwogMjAxMS0xMS0wNyAgRG1pdHJ5IExv
bW92ICA8ZHNsb21vdkBnb29nbGUuY29tPgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03MTUzNApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGE5YjE2MGMwMGNj
YWIyM2U3YmQ1N2M0NzJmNzBkY2FhZDA4MzRmY2EuLjA3NDk5MDVhMmYwMmIwNGM5NDhkNWFmMTg0
NjUzNDJiOTg1ZmQwMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTEzOTcsNiArMTM5Nyw4IEBACiAg
ICAgICAgICAgICAncGFnZS9ET01TZWxlY3Rpb24uaWRsJywKICAgICAgICAgICAgICdwYWdlL0RP
TVdpbmRvdy5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRXZlbnRTb3VyY2UuaWRsJywKKyAgICAg
ICAgICAgICdwYWdlL0dhbWVwYWQuaWRsJywKKyAgICAgICAgICAgICdwYWdlL0dhbWVwYWRMaXN0
LmlkbCcsCiAgICAgICAgICAgICAncGFnZS9HZW9sb2NhdGlvbi5pZGwnLAogICAgICAgICAgICAg
J3BhZ2UvR2VvcG9zaXRpb24uaWRsJywKICAgICAgICAgICAgICdwYWdlL0hpc3RvcnkuaWRsJywK
QEAgLTIxODMsNiArMjE4NSw3IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RmlsZVJlYWRlckN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEZsb2F0MzJBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEZsb2F0NjRBcnJheUN1c3RvbS5jcHAnLAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEdhbWVwYWRDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhHZW9sb2NhdGlvbkN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTEF1ZGlvRWxlbWVudENvbnN0cnVjdG9yLmNwcCcsCkBAIC0yOTQ4
LDYgKzI5NTEsMTAgQEAKICAgICAgICAgICAgICdwYWdlL0ZyYW1lQWN0aW9uU2NoZWR1bGVyLmgn
LAogICAgICAgICAgICAgJ3BhZ2UvRnJhbWVUcmVlLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9G
cmFtZVZpZXcuY3BwJywKKyAgICAgICAgICAgICdwYWdlL0dhbWVwYWQuY3BwJywKKyAgICAgICAg
ICAgICdwYWdlL0dhbWVwYWQuaCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlzdC5jcHAn
LAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZExpc3QuaCcsCiAgICAgICAgICAgICAncGFnZS9H
ZW9sb2NhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVy
LmNwcCcsCiAgICAgICAgICAgICAncGFnZS9Hcm91cFNldHRpbmdzLmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHYW1lcGFkQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEdhbWVwYWRDdXN0b20uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjYwM2M5YTA5ZTdlZWY2ZTU1NGJkYTliM2Q0NmZjZWUwYjFmZjI3NWEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhHYW1lcGFk
Q3VzdG9tLmNwcApAQCAtMCwwICsxLDY0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8v
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8v
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVjhHYW1lcGFkLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUg
IlY4QmluZGluZy5oIgorI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgorI2luY2x1ZGUgIlY4
UHJveHkuaCIKKworI2luY2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjcmVhdGVOdW1iZXJBcnJheShjb25zdCBHYW1lcGFk
OjpGbG9hdFZlY3RvciYgdmVjdG9yKQoreworICAgIHVuc2lnbmVkIHNpemUgPSB2ZWN0b3Iuc2l6
ZSgpOworICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IHJldCA9IHY4OjpBcnJheTo6TmV3KHNpemUp
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgIHJldC0+
U2V0KGksIHY4OjpOdW1iZXI6Ok5ldyh2ZWN0b3JbaV0pKTsKKyAgICByZXR1cm4gcmV0OworfQor
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhHYW1lcGFkOjpheGVzQWNjZXNzb3JHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgSU5DX1NUQVRTKCJET00uR2FtZXBhZC5heGVzLl9nZXQiKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uSG9sZGVyKCk7CisgICAgR2FtZXBhZCogaW1wID0g
VjhHYW1lcGFkOjp0b05hdGl2ZShob2xkZXIpOworICAgIHJldHVybiBjcmVhdGVOdW1iZXJBcnJh
eShpbXAtPmF4ZXMoKSk7Cit9CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdhbWVwYWQ6OmJ1
dHRvbnNBY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5HYW1lcGFkLmJ1dHRv
bnMuX2dldCIpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5Ib2xk
ZXIoKTsKKyAgICBHYW1lcGFkKiBpbXAgPSBWOEdhbWVwYWQ6OnRvTmF0aXZlKGhvbGRlcik7Cisg
ICAgcmV0dXJuIGNyZWF0ZU51bWJlckFycmF5KGltcC0+YnV0dG9ucygpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9H
YW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWVkMThkZGRlMWM3YTZhYjAzYWEyMjhkZWUxYzcyZDQ4
YjU2MmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmNw
cApAQCAtMCwwICsxLDU1IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1l
dDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8v
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
CisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R2FtZXBhZC5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHYW1lcGFkOjpHYW1lcGFkKCkK
K3sKK30KKwordm9pZCBHYW1lcGFkOjpheGVzKHVuc2lnbmVkIGNvdW50LCBmbG9hdCogZGF0YSkK
K3sKKyAgICBtX2F4ZXMucmVzaXplKGNvdW50KTsKKyAgICBzdGQ6OmNvcHkoZGF0YSwgZGF0YSAr
IGNvdW50LCBtX2F4ZXMuYmVnaW4oKSk7Cit9CisKK3ZvaWQgR2FtZXBhZDo6YnV0dG9ucyh1bnNp
Z25lZCBjb3VudCwgZmxvYXQqIGRhdGEpCit7CisgICAgbV9idXR0b25zLnJlc2l6ZShjb3VudCk7
CisgICAgc3RkOjpjb3B5KGRhdGEsIGRhdGEgKyBjb3VudCwgbV9idXR0b25zLmJlZ2luKCkpOwor
fQorCitHYW1lcGFkOjp+R2FtZXBhZCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9HYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45NTM2YWQ3N2UwODM3Y2MwYzc1YmY5MDFlNGNiMDVkYTk1ZjRkMzkzCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmgKQEAgLTAsMCArMSw2OSBAQAorLy8g
Q29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
Ky8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
CisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4K
KworI2lmbmRlZiBHYW1lcGFkX2gKKyNkZWZpbmUgR2FtZXBhZF9oCisKKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lcGFkOiBw
dWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8R2FtZXBhZD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
R2FtZXBhZCk7CisgICAgfQorICAgIH5HYW1lcGFkKCk7CisKKyAgICB0eXBlZGVmIFZlY3Rvcjxm
bG9hdCwgMTY+IEZsb2F0VmVjdG9yOworCisgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIGlkKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9pZCA9IGlk
OyB9CisKKyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAg
ICB2b2lkIGluZGV4KHVuc2lnbmVkIHZhbCkgeyBtX2luZGV4ID0gdmFsOyB9CisKKyAgICB1bnNp
Z25lZCBsb25nIGxvbmcgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0K
KyAgICB2b2lkIHRpbWVzdGFtcCh1bnNpZ25lZCBsb25nIGxvbmcgdmFsKSB7IG1fdGltZXN0YW1w
ID0gdmFsOyB9CisKKyAgICBjb25zdCBGbG9hdFZlY3RvciYgYXhlcygpIGNvbnN0IHsgcmV0dXJu
IG1fYXhlczsgfQorICAgIHZvaWQgYXhlcyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpOwor
CisgICAgY29uc3QgRmxvYXRWZWN0b3ImIGJ1dHRvbnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRv
bnM7IH0KKyAgICB2b2lkIGJ1dHRvbnModW5zaWduZWQgY291bnQsIGZsb2F0KiBkYXRhKTsKKwor
cHJpdmF0ZToKKyAgICBHYW1lcGFkKCk7CisgICAgU3RyaW5nIG1faWQ7CisgICAgdW5zaWduZWQg
bV9pbmRleDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV90aW1lc3RhbXA7CisgICAgRmxvYXRW
ZWN0b3IgbV9heGVzOworICAgIEZsb2F0VmVjdG9yIG1fYnV0dG9uczsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdhbWVwYWRfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9HYW1lcGFkLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5p
ZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYjc5YmFmOTA2MzIzOGRlMjQ3ZDMxZTVkNzk1NDI4ZmFmZjVhYjM1Ywot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5pZGwKQEAgLTAs
MCArMSwzNiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLwor
Ly8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0gKKy8vIERBTUFHRS4KKworbW9kdWxlIGRvbSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAg
ICBDb25kaXRpb25hbD1HQU1FUEFECisgICAgXSBHYW1lcGFkIHsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBpZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgaW5kZXg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25n
IGxvbmcgdGltZXN0YW1wOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0N1c3RvbUdldHRl
cl0gQXJyYXkgYXhlczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21HZXR0ZXJd
IEFycmF5IGJ1dHRvbnM7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9HYW1lcGFkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xNjkzNGVkZDI1NDQ4NjEzNzkwZjg5NjM2MDEyMjRkNTQxMWMwZGEwCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5jcHAKQEAg
LTAsMCArMSw1NiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Cisv
LworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8g
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0gKKy8vIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVw
YWRMaXN0LmgiCisKKyNpbmNsdWRlICJHYW1lcGFkLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHYW1lcGFkTGlzdDo6fkdhbWVwYWRMaXN0KCkKK3sK
K30KKwordm9pZCBHYW1lcGFkTGlzdDo6c2V0KHVuc2lnbmVkIGluZGV4LCBQYXNzUmVmUHRyPEdh
bWVwYWQ+IGdhbWVwYWQpCit7CisgICAgaWYgKGluZGV4ID49IGtNYXhpbXVtR2FtZXBhZHMpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX2l0ZW1zW2luZGV4XSA9IGdhbWVwYWQ7Cit9CisKK3Vuc2ln
bmVkIEdhbWVwYWRMaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBrTWF4aW11bUdh
bWVwYWRzOworfQorCitHYW1lcGFkKiBHYW1lcGFkTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkK
K3sKKyAgICByZXR1cm4gaW5kZXggPCBsZW5ndGgoKSA/IG1faXRlbXNbaW5kZXhdLmdldCgpIDog
MDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQ
QUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E0MmU3OWZmNWM2OTE4
N2NmMjQ5YjBmN2QwZThiNWI1MmVjNDUyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvR2FtZXBhZExpc3QuaApAQCAtMCwwICsxLDUzIEBACisvLyBDb3B5cmlnaHQgKEMp
IDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
Ky8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaWZuZGVmIEdh
bWVwYWRMaXN0X2gKKyNkZWZpbmUgR2FtZXBhZExpc3RfaAorCisjaW5jbHVkZSAiR2FtZXBhZC5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlw
ZWRlZiBWZWN0b3I8UmVmUHRyPEdhbWVwYWQ+ID4gR2FtZXBhZFZlY3RvcjsKKworY2xhc3MgR2Ft
ZXBhZExpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkTGlzdD4geworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEdhbWVwYWRMaXN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJl
ZihuZXcgR2FtZXBhZExpc3QpOyB9CisgICAgfkdhbWVwYWRMaXN0KCk7CisKKyAgICB2b2lkIHNl
dCh1bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0cjxHYW1lcGFkPik7CisgICAgR2FtZXBhZCogaXRl
bSh1bnNpZ25lZCBpbmRleCk7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgZW51bSB7IGtNYXhpbXVtR2FtZXBhZHMgPSA0IH07CisgICAgR2FtZXBhZExpc3Qo
KSB7IH0KKyAgICBSZWZQdHI8R2FtZXBhZD4gbV9pdGVtc1trTWF4aW11bUdhbWVwYWRzXTsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdhbWVwYWRMaXN0X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRsIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQyYjgxNWRmYWY0Mjc4NjU3
M2JmNTFhYjUzOGVmNGZhM2RmNTQyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2FtZXBhZExpc3QuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8vIENvcHlyaWdodCAoQykg
MjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQor
Ly8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKK21vZHVsZSBkb20g
eworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9R0FNRVBBRCwKKyAgICAg
ICAgSGFzSW5kZXhHZXR0ZXIKKyAgICBdIEdhbWVwYWRMaXN0IHsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICBHYW1lcGFkIGl0ZW0oaW4g
W09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAg
ICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggNTM1NzVhZmQ2ZmNiYjk5
YzA3ODA0MTIwM2Y5MDY2M2I3Y2U3MTUyMC4uYmU3NmNlYTMwMTViZWFjMzA5MGRkMThjODc1YWFl
ZDY1MmIzOTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMzIsNiArMzIsNyBA
QAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCiAjaW5jbHVk
ZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2Uu
aCIKQEAgLTI4OCw0ICsyODksMTIgQEAgdm9pZCBOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRp
YShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXMKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKEdBTUVQQUQpCitHYW1lcGFkTGlzdCogTmF2aWdhdG9yOjpnYW1lcGFk
cygpCit7CisgICAgLy8gU3R1YmJlZCB1bnRpbCBwbGF0Zm9ybS8gY2hhbmdlcyBsYW5kZWQuCisg
ICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmgKaW5kZXggM2ExZTA0MmJiNGJkNzAzNDcxZWMzMGU3ODc3OThhNDczZThm
NzZkMy4uZDk2OTk3NjJhYzkyMmRmZTUyYjkzOWIzNWU0MTUyOTc2OTRiMTAyNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNs
YXNzIERPTU1pbWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKIGNsYXNzIEZyYW1l
OworY2xhc3MgR2FtZXBhZExpc3Q7CiBjbGFzcyBHZW9sb2NhdGlvbjsKIGNsYXNzIE5hdmlnYXRv
clVzZXJNZWRpYUVycm9yQ2FsbGJhY2s7CiBjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFTdWNjZXNz
Q2FsbGJhY2s7CkBAIC02OSw2ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdl
YmtpdEdldFVzZXJNZWRpYShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdh
dG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVk
aWFFcnJvckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
R0FNRVBBRCkKKyAgICBHYW1lcGFkTGlzdCogZ2FtZXBhZHMoKTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIE5hdmlnYXRvcihGcmFtZSopOwogICAgIEZyYW1lKiBtX2ZyYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuaWRsCmluZGV4IDJmNjkxYzMwZWU3YzY1MDQyZDk5NjcxODRiMmU1MWUzM2Ey
YzlkMzAuLmI0YmYxNzVjMWI0NDAzMzRkNzM3M2M1MjEyZmVkMDM1NTRjNTFjNWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5pZGwKQEAgLTU3LDYgKzU3LDEwIEBAIG1vZHVsZSB3aW5kb3cgewog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBbQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LCBPcHRpb25hbF0gTmF2aWdhdG9yVXNlck1lZGlh
RXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2Vw
dGlvbik7CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxFX0dBTUVQQUQpICYmIEVOQUJMRV9H
QU1FUEFECisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRW5hYmxlZEF0UnVudGltZV0gR2Ft
ZXBhZExpc3QgZ2FtZXBhZHM7CisjZW5kaWYKICAgICB9OwogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114314</attachid>
            <date>2011-11-09 10:53:23 -0800</date>
            <delta_ts>2011-11-10 11:47:58 -0800</delta_ts>
            <desc>remove custom binding code</desc>
            <filename>bug-71753-20111109105322.patch</filename>
            <type>text/plain</type>
            <size>17996</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3MzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjY2YzMDk0ODUzMjkxODE2
MDVlNmM5NjIwZWY3ZTBlMTBiMTFmYTUxLi44ODFhNjJjODU0NmUzNmJmNDE4NTRlMjI4ZDkzMjVh
NDg2NjYzMzkzIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMTEtMDkgIFNjb3R0
IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIElETCBjaGFuZ2VzIGZv
ciBnYW1lcGFkIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxNzUzCisKKyAgICAgICAgSURMIGNoYW5nZXMgYW5kIGFzc29jaWF0ZWQgcGx1
bWJpbmcgdG8gZXhwb3NlIGxpc3Qgb2YgZ2FtZXBhZCBvYmplY3RzCisgICAgICAgIG9uIG5hdmln
YXRvciBvYmplY3QgKHBlciBjdXJyZW50IHNwZWMpLiBGdWxsIHBhdGNoIGlzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ1MS4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyBwbHVtYmluZyB0aHJvdWdo
IHRvIHBsYXRmb3JtIGxldmVsIHlldCBpbiB0aGlzIHBhdGNoIHRvIGdpdmUgdGVzdAorICAgICAg
ICBjb2RlIGFjY2Vzcy4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdl
L0dhbWVwYWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6OkdhbWVwYWQp
OgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6YXhlcyk6CisgICAgICAgIChXZWJDb3JlOjpH
YW1lcGFkOjpidXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6On5HYW1lcGFkKToK
KyAgICAgICAgKiBwYWdlL0dhbWVwYWQuaDogQWRkZWQuCisgICAgICAgICogcGFnZS9HYW1lcGFk
LmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9HYW1lcGFkTGlzdC5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6On5HYW1lcGFkTGlzdCk6CisgICAgICAgIChXZWJD
b3JlOjpHYW1lcGFkTGlzdDo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0Ojps
ZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6Oml0ZW0pOgorICAgICAgICAq
IHBhZ2UvR2FtZXBhZExpc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTGlz
dDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpHYW1lcGFkTGlzdCk6
CisgICAgICAgICogcGFnZS9HYW1lcGFkTGlzdC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uv
TmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6Z2FtZXBhZHMpOgor
ICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaWRs
OgorCiAyMDExLTExLTA5ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZW1vdmUgcmVkdW5kYW50IFtDYW5CZUNvbnN0cnVjdGVkXSBJRExzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggNDgyNmM1YTU4ODRkZGQ5MWE5ZDZiZDQ5YWRjMTEyZTg0NThhNTE1Mi4uNzNl
MmVjMDI1NDI2ODE2MDJmOGVkZDc1NGVmNzA3YTk1YTNlNjhhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMTM5OSw2ICsxMzk5LDggQEAKICAgICAgICAgICAgICdwYWdlL0RPTVNlbGVjdGlvbi5pZGwn
LAogICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93LmlkbCcsCiAgICAgICAgICAgICAncGFnZS9F
dmVudFNvdXJjZS5pZGwnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZC5pZGwnLAorICAgICAg
ICAgICAgJ3BhZ2UvR2FtZXBhZExpc3QuaWRsJywKICAgICAgICAgICAgICdwYWdlL0dlb2xvY2F0
aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9HZW9wb3NpdGlvbi5pZGwnLAogICAgICAgICAg
ICAgJ3BhZ2UvSGlzdG9yeS5pZGwnLApAQCAtMjk1MCw2ICsyOTUyLDEwIEBACiAgICAgICAgICAg
ICAncGFnZS9GcmFtZUFjdGlvblNjaGVkdWxlci5oJywKICAgICAgICAgICAgICdwYWdlL0ZyYW1l
VHJlZS5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvRnJhbWVWaWV3LmNwcCcsCisgICAgICAgICAg
ICAncGFnZS9HYW1lcGFkLmNwcCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkLmgnLAorICAg
ICAgICAgICAgJ3BhZ2UvR2FtZXBhZExpc3QuY3BwJywKKyAgICAgICAgICAgICdwYWdlL0dhbWVw
YWRMaXN0LmgnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRpb24uY3BwJywKICAgICAgICAg
ICAgICdwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAnLAogICAgICAgICAgICAgJ3BhZ2Uv
R3JvdXBTZXR0aW5ncy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1l
cGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVl
ZDE4ZGRkZTFjN2E2YWIwM2FhMjI4ZGVlMWM3MmQ0OGI1NjJkNAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5jcHAKQEAgLTAsMCArMSw1NSBAQAorLy8gQ29w
eXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8v
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisv
LyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWQuaCIKKworI2lmIEVOQUJMRShH
QU1FUEFEKQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworR2FtZXBhZDo6R2FtZXBhZCgpCit7Cit9CisKK3ZvaWQgR2FtZXBhZDo6YXhl
cyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpCit7CisgICAgbV9heGVzLnJlc2l6ZShjb3Vu
dCk7CisgICAgc3RkOjpjb3B5KGRhdGEsIGRhdGEgKyBjb3VudCwgbV9heGVzLmJlZ2luKCkpOwor
fQorCit2b2lkIEdhbWVwYWQ6OmJ1dHRvbnModW5zaWduZWQgY291bnQsIGZsb2F0KiBkYXRhKQor
eworICAgIG1fYnV0dG9ucy5yZXNpemUoY291bnQpOworICAgIHN0ZDo6Y29weShkYXRhLCBkYXRh
ICsgY291bnQsIG1fYnV0dG9ucy5iZWdpbigpKTsKK30KKworR2FtZXBhZDo6fkdhbWVwYWQoKQor
eworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBB
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5oIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9HYW1lcGFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I1ZjE5YzM0OTA5NmRjNGQwZjg4MTZi
OTUxOGMxZjg5OThiZmFjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2FtZXBhZC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8g
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8g
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKKyNpZm5kZWYgR2FtZXBhZF9oCisjZGVm
aW5lIEdhbWVwYWRfaAorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworY2xhc3MgR2FtZXBhZDogcHVibGljIFJlZkNvdW50ZWQ8R2FtZXBhZD4g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdhbWVwYWQ+IGNyZWF0ZSgpCisgICAg
eworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdhbWVwYWQpOworICAgIH0KKyAgICB+R2Ft
ZXBhZCgpOworCisgICAgdHlwZWRlZiBWZWN0b3I8ZmxvYXQ+IEZsb2F0VmVjdG9yOworCisgICAg
Y29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICB2b2lkIGlkKGNv
bnN0IFN0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisKKyAgICB1bnNpZ25lZCBpbmRleCgpIGNv
bnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICB2b2lkIGluZGV4KHVuc2lnbmVkIHZhbCkgeyBt
X2luZGV4ID0gdmFsOyB9CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0YW1wKCkgY29u
c3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KKyAgICB2b2lkIHRpbWVzdGFtcCh1bnNpZ25lZCBs
b25nIGxvbmcgdmFsKSB7IG1fdGltZXN0YW1wID0gdmFsOyB9CisKKyAgICBjb25zdCBGbG9hdFZl
Y3RvciYgYXhlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXhlczsgfQorICAgIHZvaWQgYXhlcyh1bnNp
Z25lZCBjb3VudCwgZmxvYXQqIGRhdGEpOworCisgICAgY29uc3QgRmxvYXRWZWN0b3ImIGJ1dHRv
bnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KKyAgICB2b2lkIGJ1dHRvbnModW5zaWdu
ZWQgY291bnQsIGZsb2F0KiBkYXRhKTsKKworcHJpdmF0ZToKKyAgICBHYW1lcGFkKCk7CisgICAg
U3RyaW5nIG1faWQ7CisgICAgdW5zaWduZWQgbV9pbmRleDsKKyAgICB1bnNpZ25lZCBsb25nIGxv
bmcgbV90aW1lc3RhbXA7CisgICAgRmxvYXRWZWN0b3IgbV9heGVzOworICAgIEZsb2F0VmVjdG9y
IG1fYnV0dG9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdh
bWVwYWRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE0OWIwNWY1ZTUyYjlk
ZWE1ZDU0OWFhZjcxZjM0NmY1MzczZDA3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvR2FtZXBhZC5pZGwKQEAgLTAsMCArMSwzNiBAQAorLy8gQ29weXJpZ2h0IChDKSAy
MDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisv
LyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworbW9kdWxlIGRvbSB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1HQU1FUEFECisgICAgXSBH
YW1lcGFkIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaW5kZXg7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0YW1wOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgZmxvYXRbXSBheGVzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
ZmxvYXRbXSBidXR0b25zOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2FtZXBhZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTY5MzRlZGQyNTQ0ODYxMzc5MGY4OTYzNjAxMjI0ZDU0MTFjMGRhMAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuY3BwCkBA
IC0wLDAgKzEsNTYgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0Ogor
Ly8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8v
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNICisvLyBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHYW1l
cGFkTGlzdC5oIgorCisjaW5jbHVkZSAiR2FtZXBhZC5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQp
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2FtZXBhZExpc3Q6On5HYW1lcGFkTGlzdCgpCit7
Cit9CisKK3ZvaWQgR2FtZXBhZExpc3Q6OnNldCh1bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0cjxH
YW1lcGFkPiBnYW1lcGFkKQoreworICAgIGlmIChpbmRleCA+PSBrTWF4aW11bUdhbWVwYWRzKQor
ICAgICAgICByZXR1cm47CisgICAgbV9pdGVtc1tpbmRleF0gPSBnYW1lcGFkOworfQorCit1bnNp
Z25lZCBHYW1lcGFkTGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4ga01heGltdW1H
YW1lcGFkczsKK30KKworR2FtZXBhZCogR2FtZXBhZExpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgp
Cit7CisgICAgcmV0dXJuIGluZGV4IDwgbGVuZ3RoKCkgPyBtX2l0ZW1zW2luZGV4XS5nZXQoKSA6
IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1F
UEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNhNDJlNzlmZjVjNjkx
ODdjZjI0OWIwZjdkMGU4YjViNTJlYzQ1MmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0dhbWVwYWRMaXN0LmgKQEAgLTAsMCArMSw1MyBAQAorLy8gQ29weXJpZ2h0IChD
KSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
CisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2lmbmRlZiBH
YW1lcGFkTGlzdF9oCisjZGVmaW5lIEdhbWVwYWRMaXN0X2gKKworI2luY2x1ZGUgIkdhbWVwYWQu
aCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5
cGVkZWYgVmVjdG9yPFJlZlB0cjxHYW1lcGFkPiA+IEdhbWVwYWRWZWN0b3I7CisKK2NsYXNzIEdh
bWVwYWRMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8R2FtZXBhZExpc3Q+IHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxHYW1lcGFkTGlzdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IEdhbWVwYWRMaXN0KTsgfQorICAgIH5HYW1lcGFkTGlzdCgpOworCisgICAgdm9pZCBz
ZXQodW5zaWduZWQgaW5kZXgsIFBhc3NSZWZQdHI8R2FtZXBhZD4pOworICAgIEdhbWVwYWQqIGl0
ZW0odW5zaWduZWQgaW5kZXgpOworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OworCitwcml2
YXRlOgorICAgIGVudW0geyBrTWF4aW11bUdhbWVwYWRzID0gNCB9OworICAgIEdhbWVwYWRMaXN0
KCkgeyB9CisgICAgUmVmUHRyPEdhbWVwYWQ+IG1faXRlbXNba01heGltdW1HYW1lcGFkc107Cit9
OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHYW1lcGFkTGlzdF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MmI4MTVkZmFmNDI3ODY1
NzNiZjUxYWI1MzhlZjRmYTNkZjU0MjgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0dhbWVwYWRMaXN0LmlkbApAQCAtMCwwICsxLDM0IEBACisvLyBDb3B5cmlnaHQgKEMp
IDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8g
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8g
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UK
Ky8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCittb2R1bGUgZG9t
IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUdBTUVQQUQsCisgICAg
ICAgIEhhc0luZGV4R2V0dGVyCisgICAgXSBHYW1lcGFkTGlzdCB7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICAgICAgR2FtZXBhZCBpdGVtKGlu
IFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gdW5zaWduZWQgbG9uZyBpbmRleCk7Cisg
ICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4IDUzNTc1YWZkNmZjYmI5
OWMwNzgwNDEyMDNmOTA2NjNiN2NlNzE1MjAuLmJlNzZjZWEzMDE1YmVhYzMwOTBkZDE4Yzg3NWFh
ZWQ2NTJiMzk1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgogI2luY2x1
ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIkxhbmd1YWdl
LmgiCkBAIC0yODgsNCArMjg5LDEyIEBAIHZvaWQgTmF2aWdhdG9yOjp3ZWJraXRHZXRVc2VyTWVk
aWEoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzCiB9CiAjZW5k
aWYKIAorI2lmIEVOQUJMRShHQU1FUEFEKQorR2FtZXBhZExpc3QqIE5hdmlnYXRvcjo6Z2FtZXBh
ZHMoKQoreworICAgIC8vIFN0dWJiZWQgdW50aWwgcGxhdGZvcm0vIGNoYW5nZXMgbGFuZGVkLgor
ICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5oCmluZGV4IDNhMWUwNDJiYjRiZDcwMzQ3MWVjMzBlNzg3Nzk4YTQ3M2U4
Zjc2ZDMuLmQ5Njk5NzYyYWM5MjJkZmU1MmI5MzliMzVlNDE1Mjk3Njk0YjEwMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBET01NaW1lVHlwZUFycmF5OwogY2xhc3MgRE9NUGx1Z2luQXJyYXk7CiBjbGFzcyBGcmFt
ZTsKK2NsYXNzIEdhbWVwYWRMaXN0OwogY2xhc3MgR2VvbG9jYXRpb247CiBjbGFzcyBOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOwogY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vz
c0NhbGxiYWNrOwpAQCAtNjksNiArNzAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3
ZWJraXRHZXRVc2VyTWVkaWEoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmln
YXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3JDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgogCisjaWYgRU5BQkxF
KEdBTUVQQUQpCisgICAgR2FtZXBhZExpc3QqIGdhbWVwYWRzKCk7CisjZW5kaWYKKwogcHJpdmF0
ZToKICAgICBOYXZpZ2F0b3IoRnJhbWUqKTsKICAgICBGcmFtZSogbV9mcmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmlkbAppbmRleCAyZjY5MWMzMGVlN2M2NTA0MmQ5OTY3MTg0YjJlNTFlMzNh
MmM5ZDMwLi5iNGJmMTc1YzFiNDQwMzM0ZDczNzNjNTIxMmZlZDAzNTU0YzUxYzVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9OYXZpZ2F0b3IuaWRsCkBAIC01Nyw2ICs1NywxMCBAQCBtb2R1bGUgd2luZG93IHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gW0NhbGxiYWNrPUZ1bmN0aW9uT25seSwgT3B0aW9uYWxdIE5hdmlnYXRvclVzZXJNZWRp
YUVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaykKICAgICAgICAgICAgIHJhaXNlcyhET01FeGNl
cHRpb24pOwogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9HQU1FUEFEKSAmJiBFTkFCTEVf
R0FNRVBBRAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0VuYWJsZWRBdFJ1bnRpbWVdIEdh
bWVwYWRMaXN0IGdhbWVwYWRzOworI2VuZGlmCiAgICAgfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114533</attachid>
            <date>2011-11-10 11:48:01 -0800</date>
            <delta_ts>2011-11-15 12:13:46 -0800</delta_ts>
            <desc>add basic test + harness</desc>
            <filename>bug-71753-20111110114800.patch</filename>
            <type>text/plain</type>
            <size>24837</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3MzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjY2YzMDk0ODUzMjkxODE2
MDVlNmM5NjIwZWY3ZTBlMTBiMTFmYTUxLi45MzJjYWE2N2JkNDE0MDc1YzkwMGY3Yjc1YTg2NGEz
OGQ1M2M0MDA3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMTEtMTAgIFNjb3R0
IEdyYWhhbSAgPHNjb3R0bWdAZ29vZ2xlLmNvbT4KKworICAgICAgICBJREwgY2hhbmdlcyBmb3Ig
Z2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03MTc1MworCisgICAgICAgIElETCBjaGFuZ2VzIGFuZCBhc3NvY2lhdGVkIHBsdW1i
aW5nIHRvIGV4cG9zZSBsaXN0IG9mIGdhbWVwYWQgb2JqZWN0cworICAgICAgICBvbiBuYXZpZ2F0
b3Igb2JqZWN0IChwZXIgY3VycmVudCBzcGVjKS4gRnVsbCBwYXRjaCBpcworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEuIE9ubHkgYmFzaWMgZXhp
c3RlbmNlCisgICAgICAgIHRlc3QgdW50aWwgbW9yZSBwbHVtYmluZyBpbiBmdXR1cmUgcGF0Y2hl
cy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
OiBnYW1lcGFkL2dhbWVwYWQtYXBpLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBwYWdlL0dhbWVwYWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVw
YWQ6OkdhbWVwYWQpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6YXhlcyk6CisgICAgICAg
IChXZWJDb3JlOjpHYW1lcGFkOjpidXR0b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6
On5HYW1lcGFkKToKKyAgICAgICAgKiBwYWdlL0dhbWVwYWQuaDogQWRkZWQuCisgICAgICAgICog
cGFnZS9HYW1lcGFkLmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9HYW1lcGFkTGlzdC5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6On5HYW1lcGFkTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTGlzdDo6c2V0KToKKyAgICAgICAgKFdlYkNvcmU6Okdh
bWVwYWRMaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6Oml0ZW0p
OgorICAgICAgICAqIHBhZ2UvR2FtZXBhZExpc3QuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHYW1lcGFkTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpH
YW1lcGFkTGlzdCk6CisgICAgICAgICogcGFnZS9HYW1lcGFkTGlzdC5pZGw6IEFkZGVkLgorICAg
ICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6
Z2FtZXBhZHMpOgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuaWRsOgorCiAyMDExLTExLTA5ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZW1vdmUgcmVkdW5kYW50IFtDYW5CZUNvbnN0cnVjdGVkXSBJ
RExzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNDgyNmM1YTU4ODRkZGQ5MWE5ZDZiZDQ5YWRjMTEyZTg0
NThhNTE1Mi4uNzNlMmVjMDI1NDI2ODE2MDJmOGVkZDc1NGVmNzA3YTk1YTNlNjhhMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQpAQCAtMTM5OSw2ICsxMzk5LDggQEAKICAgICAgICAgICAgICdwYWdlL0RPTVNl
bGVjdGlvbi5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRE9NV2luZG93LmlkbCcsCiAgICAgICAg
ICAgICAncGFnZS9FdmVudFNvdXJjZS5pZGwnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZC5p
ZGwnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZExpc3QuaWRsJywKICAgICAgICAgICAgICdw
YWdlL0dlb2xvY2F0aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9HZW9wb3NpdGlvbi5pZGwn
LAogICAgICAgICAgICAgJ3BhZ2UvSGlzdG9yeS5pZGwnLApAQCAtMjk1MCw2ICsyOTUyLDEwIEBA
CiAgICAgICAgICAgICAncGFnZS9GcmFtZUFjdGlvblNjaGVkdWxlci5oJywKICAgICAgICAgICAg
ICdwYWdlL0ZyYW1lVHJlZS5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvRnJhbWVWaWV3LmNwcCcs
CisgICAgICAgICAgICAncGFnZS9HYW1lcGFkLmNwcCcsCisgICAgICAgICAgICAncGFnZS9HYW1l
cGFkLmgnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZExpc3QuY3BwJywKKyAgICAgICAgICAg
ICdwYWdlL0dhbWVwYWRMaXN0LmgnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRpb24uY3Bw
JywKICAgICAgICAgICAgICdwYWdlL0dlb2xvY2F0aW9uQ29udHJvbGxlci5jcHAnLAogICAgICAg
ICAgICAgJ3BhZ2UvR3JvdXBTZXR0aW5ncy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9HYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDVlZDE4ZGRkZTFjN2E2YWIwM2FhMjI4ZGVlMWM3MmQ0OGI1NjJkNAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5jcHAKQEAgLTAsMCArMSw1
NSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
Ky8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8g
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8v
IERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWQuaCIKKwor
I2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2FtZXBhZDo6R2FtZXBhZCgpCit7Cit9CisKK3ZvaWQg
R2FtZXBhZDo6YXhlcyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpCit7CisgICAgbV9heGVz
LnJlc2l6ZShjb3VudCk7CisgICAgc3RkOjpjb3B5KGRhdGEsIGRhdGEgKyBjb3VudCwgbV9heGVz
LmJlZ2luKCkpOworfQorCit2b2lkIEdhbWVwYWQ6OmJ1dHRvbnModW5zaWduZWQgY291bnQsIGZs
b2F0KiBkYXRhKQoreworICAgIG1fYnV0dG9ucy5yZXNpemUoY291bnQpOworICAgIHN0ZDo6Y29w
eShkYXRhLCBkYXRhICsgY291bnQsIG1fYnV0dG9ucy5iZWdpbigpKTsKK30KKworR2FtZXBhZDo6
fkdhbWVwYWQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2I1ZjE5YzM0OTA5
NmRjNGQwZjg4MTZiOTUxOGMxZjg5OThiZmFjOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvR2FtZXBhZC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8vIENvcHlyaWdodCAoQykg
MjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQor
Ly8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKKyNpZm5kZWYgR2Ft
ZXBhZF9oCisjZGVmaW5lIEdhbWVwYWRfaAorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2FtZXBhZDogcHVibGljIFJlZkNvdW50
ZWQ8R2FtZXBhZD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdhbWVwYWQ+IGNy
ZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdhbWVwYWQpOworICAg
IH0KKyAgICB+R2FtZXBhZCgpOworCisgICAgdHlwZWRlZiBWZWN0b3I8ZmxvYXQ+IEZsb2F0VmVj
dG9yOworCisgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAg
ICB2b2lkIGlkKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisKKyAgICB1bnNpZ25l
ZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICB2b2lkIGluZGV4KHVuc2ln
bmVkIHZhbCkgeyBtX2luZGV4ID0gdmFsOyB9CisKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGlt
ZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KKyAgICB2b2lkIHRpbWVzdGFt
cCh1bnNpZ25lZCBsb25nIGxvbmcgdmFsKSB7IG1fdGltZXN0YW1wID0gdmFsOyB9CisKKyAgICBj
b25zdCBGbG9hdFZlY3RvciYgYXhlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXhlczsgfQorICAgIHZv
aWQgYXhlcyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpOworCisgICAgY29uc3QgRmxvYXRW
ZWN0b3ImIGJ1dHRvbnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0KKyAgICB2b2lkIGJ1
dHRvbnModW5zaWduZWQgY291bnQsIGZsb2F0KiBkYXRhKTsKKworcHJpdmF0ZToKKyAgICBHYW1l
cGFkKCk7CisgICAgU3RyaW5nIG1faWQ7CisgICAgdW5zaWduZWQgbV9pbmRleDsKKyAgICB1bnNp
Z25lZCBsb25nIGxvbmcgbV90aW1lc3RhbXA7CisgICAgRmxvYXRWZWN0b3IgbV9heGVzOworICAg
IEZsb2F0VmVjdG9yIG1fYnV0dG9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEdhbWVwYWRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1l
cGFkLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE0
OWIwNWY1ZTUyYjlkZWE1ZDU0OWFhZjcxZjM0NmY1MzczZDA3ZQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5pZGwKQEAgLTAsMCArMSwzNiBAQAorLy8gQ29w
eXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8v
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisv
LyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKwor
bW9kdWxlIGRvbSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1HQU1F
UEFECisgICAgXSBHYW1lcGFkIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyBpZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaW5kZXg7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0YW1wOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXRbXSBheGVzOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgZmxvYXRbXSBidXR0b25zOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9H
YW1lcGFkTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY5MzRlZGQyNTQ0ODYxMzc5MGY4OTYzNjAxMjI0
ZDU0MTFjMGRhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBh
ZExpc3QuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8g
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8g
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJHYW1lcGFkTGlzdC5oIgorCisjaW5jbHVkZSAiR2FtZXBhZC5oIgorCisjaWYgRU5B
QkxFKEdBTUVQQUQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2FtZXBhZExpc3Q6On5HYW1l
cGFkTGlzdCgpCit7Cit9CisKK3ZvaWQgR2FtZXBhZExpc3Q6OnNldCh1bnNpZ25lZCBpbmRleCwg
UGFzc1JlZlB0cjxHYW1lcGFkPiBnYW1lcGFkKQoreworICAgIGlmIChpbmRleCA+PSBrTWF4aW11
bUdhbWVwYWRzKQorICAgICAgICByZXR1cm47CisgICAgbV9pdGVtc1tpbmRleF0gPSBnYW1lcGFk
OworfQorCit1bnNpZ25lZCBHYW1lcGFkTGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1
cm4ga01heGltdW1HYW1lcGFkczsKK30KKworR2FtZXBhZCogR2FtZXBhZExpc3Q6Oml0ZW0odW5z
aWduZWQgaW5kZXgpCit7CisgICAgcmV0dXJuIGluZGV4IDwgbGVuZ3RoKCkgPyBtX2l0ZW1zW2lu
ZGV4XS5nZXQoKSA6IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFk
TGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNh
NDJlNzlmZjVjNjkxODdjZjI0OWIwZjdkMGU4YjViNTJlYzQ1MmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmgKQEAgLTAsMCArMSw1MyBAQAorLy8g
Q29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8K
Ky8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8v
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwK
Ky8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
CisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4K
KworI2lmbmRlZiBHYW1lcGFkTGlzdF9oCisjZGVmaW5lIEdhbWVwYWRMaXN0X2gKKworI2luY2x1
ZGUgIkdhbWVwYWQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxHYW1lcGFkPiA+IEdhbWVwYWRWZWN0b3I7
CisKK2NsYXNzIEdhbWVwYWRMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8R2FtZXBhZExpc3Q+IHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHYW1lcGFkTGlzdD4gY3JlYXRlKCkgeyBy
ZXR1cm4gYWRvcHRSZWYobmV3IEdhbWVwYWRMaXN0KTsgfQorICAgIH5HYW1lcGFkTGlzdCgpOwor
CisgICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIFBhc3NSZWZQdHI8R2FtZXBhZD4pOworICAg
IEdhbWVwYWQqIGl0ZW0odW5zaWduZWQgaW5kZXgpOworICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNv
bnN0OworCitwcml2YXRlOgorICAgIGVudW0geyBrTWF4aW11bUdhbWVwYWRzID0gNCB9OworICAg
IEdhbWVwYWRMaXN0KCkgeyB9CisgICAgUmVmUHRyPEdhbWVwYWQ+IG1faXRlbXNba01heGltdW1H
YW1lcGFkc107Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHYW1l
cGFkTGlzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRsCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI0MmI4
MTVkZmFmNDI3ODY1NzNiZjUxYWI1MzhlZjRmYTNkZjU0MjgKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmlkbApAQCAtMCwwICsxLDM0IEBACisvLyBD
b3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
Ly8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QK
Ky8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgor
Cittb2R1bGUgZG9tIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUdB
TUVQQUQsCisgICAgICAgIEhhc0luZGV4R2V0dGVyCisgICAgXSBHYW1lcGFkTGlzdCB7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsKKyAgICAgICAgR2Ft
ZXBhZCBpdGVtKGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0gdW5zaWduZWQgbG9u
ZyBpbmRleCk7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9O
YXZpZ2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4IDUz
NTc1YWZkNmZjYmI5OWMwNzgwNDEyMDNmOTA2NjNiN2NlNzE1MjAuLmJlNzZjZWEzMDE1YmVhYzMw
OTBkZDE4Yzg3NWFhZWQ2NTJiMzk1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKQEAg
LTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJHYW1lcGFkTGlz
dC5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgogI2luY2x1
ZGUgIkxhbmd1YWdlLmgiCkBAIC0yODgsNCArMjg5LDEyIEBAIHZvaWQgTmF2aWdhdG9yOjp3ZWJr
aXRHZXRVc2VyTWVkaWEoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRv
clVzCiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHQU1FUEFEKQorR2FtZXBhZExpc3QqIE5hdmln
YXRvcjo6Z2FtZXBhZHMoKQoreworICAgIC8vIFN0dWJiZWQgdW50aWwgcGxhdGZvcm0vIGNoYW5n
ZXMgbGFuZGVkLgorICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IDNhMWUwNDJiYjRiZDcwMzQ3MWVjMzBl
Nzg3Nzk4YTQ3M2U4Zjc2ZDMuLmQ5Njk5NzYyYWM5MjJkZmU1MmI5MzliMzVlNDE1Mjk3Njk0YjEw
MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBET01NaW1lVHlwZUFycmF5OwogY2xhc3MgRE9NUGx1Z2luQXJyYXk7
CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEdhbWVwYWRMaXN0OwogY2xhc3MgR2VvbG9jYXRpb247CiBj
bGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOwogY2xhc3MgTmF2aWdhdG9yVXNl
ck1lZGlhU3VjY2Vzc0NhbGxiYWNrOwpAQCAtNjksNiArNzAsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgdm9pZCB3ZWJraXRHZXRVc2VyTWVkaWEoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQYXNz
UmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8TmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRpZgog
CisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgR2FtZXBhZExpc3QqIGdhbWVwYWRzKCk7CisjZW5k
aWYKKwogcHJpdmF0ZToKICAgICBOYXZpZ2F0b3IoRnJhbWUqKTsKICAgICBGcmFtZSogbV9mcmFt
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAppbmRleCAyZjY5MWMzMGVlN2M2NTA0MmQ5OTY3
MTg0YjJlNTFlMzNhMmM5ZDMwLi5iNGJmMTc1YzFiNDQwMzM0ZDczNzNjNTIxMmZlZDAzNTU0YzUx
YzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCkBAIC01Nyw2ICs1NywxMCBAQCBtb2R1
bGUgd2luZG93IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gW0NhbGxiYWNrPUZ1bmN0aW9uT25seSwgT3B0aW9uYWxdIE5hdmln
YXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaykKICAgICAgICAgICAgIHJh
aXNlcyhET01FeGNlcHRpb24pOwogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9HQU1FUEFE
KSAmJiBFTkFCTEVfR0FNRVBBRAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0VuYWJsZWRB
dFJ1bnRpbWVdIEdhbWVwYWRMaXN0IGdhbWVwYWRzOworI2VuZGlmCiAgICAgfTsKIAogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGM1NGRlYzAy
OTRiZjQ2MWI1Y2UyMWFjYTI2ZmRlNjVmNDhjMjg0ZWIuLjcyNzdhMDE2ZDAxM2E0YTliMDkxZWYx
ODJkNDNiNDE4MDI5OGY0ZTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0xMCAgU2NvdHQgR3JhaGFtICA8
c2NvdHRtZ0Bnb29nbGUuY29tPgorCisgICAgICAgIElETCBjaGFuZ2VzIGZvciBnYW1lcGFkIHN1
cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
NzUzCisKKyAgICAgICAgUnVudGltZSBlbmFibGUgZ2FtZXBhZCBpbiBjaHJvbWl1bS4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OlRlc3RTaGVs
bCk6CisKIDIwMTEtMTEtMDkgIEFuZHkgV2luZ28gIDx3aW5nb0BpZ2FsaWEuY29tPgogCiAgICAg
ICAgIEFkZCB3ZWJraXRkaXJzLnBtOmdldEFyY2hpdGVjdHVyZSBpbXBsZW1lbnRhdGlvbiBmb3Ig
R1RLCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwu
Y3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCBk
ZTJmMmM4YTI0ZGI1OTg2M2Y2MmFmYTZhMTA5NWMwMmIxYjYwODI1Li4wYTBkYTE2ZjUyZDA5YzNj
MWI4OGM5OGFhYmZhYjU4MGM5OGM1YjAxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTEyMiw2ICsxMjIsNyBAQCBUZXN0U2hlbGw6OlRlc3RTaGVs
bChib29sIHRlc3RTaGVsbE1vZGUpCiAgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVNZWRp
YVN0cmVhbSh0cnVlKTsKICAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZVdlYkF1ZGlvKHRy
dWUpOyAKICAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZVZpZGVvVHJhY2sodHJ1ZSk7Cisg
ICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVHYW1lcGFkKHRydWUpOwogCiAgICAgbV93ZWJQ
ZXJtaXNzaW9ucyA9IGFkb3B0UHRyKG5ldyBXZWJQZXJtaXNzaW9ucyh0aGlzKSk7CiAgICAgbV9h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcih0aGlzKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggZGU0OTU5ZTA0ZGYwZGIzYWYyNjEwNWJlZmRjYTI3YjdmNzJk
YmQ1YS4uMWZhZDliOWUwNzdkZDhhYTQxMGE4MTFiZDJhNmRkM2Y5MzdjMzBlNCAxMDA3NTUKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI2IEBACisyMDExLTExLTEwICBTY290dCBHcmFoYW0gIDxzY290dG1nQGdvb2dsZS5j
b20+CisKKyAgICAgICAgSURMIGNoYW5nZXMgZm9yIGdhbWVwYWQgc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGdhbWVwYWQvZ2FtZXBhZC1h
cGktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBnYW1lcGFkL2dhbWVwYWQtYXBpLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGdhbWVwYWQvZ2FtZXBhZC10ZXN0LmpzOiBBZGRlZC4KKyAg
ICAgICAgKGxvZ0NvbnNvbGUpOgorICAgICAgICAodGVzdEV4cGVjdGVkKToKKyAgICAgICAgKHJl
cG9ydEV4cGVjdGVkKToKKyAgICAgICAgKHdhaXRGb3JFdmVudEFuZEVuZCk6CisgICAgICAgICh3
YWl0Rm9yRXZlbnQuX2V2ZW50Q2FsbGJhY2spOgorICAgICAgICAod2FpdEZvckV2ZW50KToKKyAg
ICAgICAgKHdhaXRGb3JFdmVudEFuZFRlc3QuX2V2ZW50Q2FsbGJhY2spOgorICAgICAgICAod2Fp
dEZvckV2ZW50QW5kVGVzdCk6CisgICAgICAgICh3YWl0Rm9yRXZlbnRUZXN0QW5kRW5kKToKKyAg
ICAgICAgKGVuZFRlc3QpOgorICAgICAgICAobG9nUmVzdWx0KToKKyAgICAgICAgKGNvbnNvbGVX
cml0ZSk6CisKIDIwMTEtMTEtMDkgIEtlbiBCdWNoYW5hbiA8a2VucmJAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIFNWRyBmb3JlaWduT2JqZWN0IHdyb25nIGNvbnRhaW5lcgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9nYW1lcGFkL2dhbWVwYWQtYXBpLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjhmNDBhZjM2
NDJmNThlMGI3NGE0NWZiY2UyMjkxZThkOTU0MTBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFwaS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitF
WFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRzICE9PSAndW5kZWZpbmVkJykgT0sKK0VORCBPRiBU
RVNUCitNYWtlIHN1cmUgdGhlIG1haW4gcG9sbGluZyBhY2Nlc3MgcG9pbnQgZXhpc3RzIG9uIG5h
dmlnYXRvci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGkuaHRt
bCBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjI3
M2FmYzAwMTFmYWYzOTdhNzlhZDNiOTkxZWRhOTAwZDU1NDcxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFwaS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJnYW1lcGFkLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdD4KKyAgICB0ZXN0RXhwZWN0ZWQoIm5hdmlnYXRvci5nYW1lcGFkcyIsIHVu
ZGVmaW5lZCwgIiE9PSIpOworICAgIGVuZFRlc3QoKTsKKzwvc2NyaXB0PgorPHA+TWFrZSBzdXJl
IHRoZSBtYWluIHBvbGxpbmcgYWNjZXNzIHBvaW50IGV4aXN0cyBvbiBuYXZpZ2F0b3IuPC9wPgor
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXRlc3QuanMg
Yi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjAxYTk3
MWY2NTRjYmYxNDA1ZWU4YmRlZjIxMGUxZjkwYzQ2M2I0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXRlc3QuanMKQEAgLTAsMCArMSwxMjYgQEAKK3ZhciBj
b25zb2xlID0gbnVsbDsKK3ZhciBwcmludEZ1bGxUZXN0RGV0YWlscyA9IHRydWU7IC8vIFRoaXMg
aXMgb3B0aW9uYWx5IHN3aXRjaGVkIG9mIGJ5IHRlc3Qgd2hvc2UgdGVzdGVkIHZhbHVlcyBjYW4g
ZGlmZmVyLiAoc2VlIGRpc2FibGVGdWxsVGVzdERldGFpbHNQcmludGluZygpKQorCitsb2dDb25z
b2xlKCk7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2Fp
dFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2dDb25zb2xlKCkKK3sKKyAgICBpZiAoIWNv
bnNvbGUgJiYgZG9jdW1lbnQuYm9keSkgeworICAgICAgICBjb25zb2xlID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29u
c29sZSk7CisgICAgfQorICAgIHJldHVybiBjb25zb2xlOworfQorCitmdW5jdGlvbiB0ZXN0RXhw
ZWN0ZWQodGVzdEZ1bmNTdHJpbmcsIGV4cGVjdGVkLCBjb21wYXJpc29uKQoreworICAgIHRyeSB7
CisgICAgICAgIHZhciBvYnNlcnZlZCA9IGV2YWwodGVzdEZ1bmNTdHJpbmcpOworICAgIH0gY2F0
Y2ggKGV4KSB7CisgICAgICAgIGNvbnNvbGVXcml0ZShleCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgaWYgKGNvbXBhcmlzb24gPT09IHVuZGVmaW5lZCkKKyAgICAgICAgY29t
cGFyaXNvbiA9ICc9PSc7CisKKyAgICB2YXIgc3VjY2VzcyA9IGZhbHNlOworICAgIHN3aXRjaCAo
Y29tcGFyaXNvbikKKyAgICB7CisgICAgICAgIGNhc2UgJzwnOiAgc3VjY2VzcyA9IG9ic2VydmVk
IDwgIGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPD0nOiBzdWNjZXNzID0gb2JzZXJ2
ZWQgPD0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc+JzogIHN1Y2Nlc3MgPSBvYnNl
cnZlZCA+ICBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz49Jzogc3VjY2VzcyA9IG9i
c2VydmVkID49IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnIT0nOiBzdWNjZXNzID0g
b2JzZXJ2ZWQgIT0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICchPT0nOiBzdWNjZXNz
ID0gb2JzZXJ2ZWQgIT09IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPT0nOiBzdWNj
ZXNzID0gb2JzZXJ2ZWQgPT0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc9PT0nOiBz
dWNjZXNzID0gb2JzZXJ2ZWQgPT09IGV4cGVjdGVkOyBicmVhazsKKyAgICB9CisgICAgCisgICAg
cmVwb3J0RXhwZWN0ZWQoc3VjY2VzcywgdGVzdEZ1bmNTdHJpbmcsIGNvbXBhcmlzb24sIGV4cGVj
dGVkLCBvYnNlcnZlZCkKK30KKwordmFyIHRlc3ROdW1iZXIgPSAwOworCitmdW5jdGlvbiByZXBv
cnRFeHBlY3RlZChzdWNjZXNzLCB0ZXN0RnVuY1N0cmluZywgY29tcGFyaXNvbiwgZXhwZWN0ZWQs
IG9ic2VydmVkKQoreworICAgIHRlc3ROdW1iZXIrKzsKKworICAgIHZhciBtc2cgPSAiVGVzdCAi
ICsgdGVzdE51bWJlcjsKKworICAgIGlmIChwcmludEZ1bGxUZXN0RGV0YWlscyB8fCAhc3VjY2Vz
cykKKyAgICAgICAgbXNnID0gIkVYUEVDVEVEICg8ZW0+IiArIHRlc3RGdW5jU3RyaW5nICsgIiA8
L2VtPiIgKyBjb21wYXJpc29uICsgIiAnPGVtPiIgKyBleHBlY3RlZCArICI8L2VtPicpIjsKKwor
ICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgbXNnICs9ICAiLCBPQlNFUlZFRCAnPGVtPiIgKyBv
YnNlcnZlZCArICI8L2VtPiciOworCisgICAgbG9nUmVzdWx0KHN1Y2Nlc3MsIG1zZyk7Cit9CisK
K2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZEVuZChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmNTdHJp
bmcpCit7CisgICAgd2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuY1N0cmluZywg
dHJ1ZSkKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVu
YywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQpCisgICAgewor
ICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudE5hbWUgKyAiKSIpOworCisgICAg
ICAgIGlmIChmdW5jKQorICAgICAgICAgICAgZnVuYyhldmVudCk7CisgICAgICAgIAorICAgICAg
ICBpZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0KCk7ICAgIAorICAgIH0KKworICAgIGVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF9ldmVudENhbGxiYWNrKTsKK30KKwor
ZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kVGVzdChlbGVtZW50LCBldmVudE5hbWUsIHRlc3RGdW5j
U3RyaW5nLCBlbmRpdCkKK3sKKyAgICBmdW5jdGlvbiBfZXZlbnRDYWxsYmFjayhldmVudCkKKyAg
ICB7CisgICAgICAgIGxvZ1Jlc3VsdChldmFsKHRlc3RGdW5jU3RyaW5nKSwgIkVWRU5UKCIgKyBl
dmVudE5hbWUgKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIik7CisgICAgICAgIGlm
IChlbmRpdCkKKyAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCisgICAgfQorCisgICAgZWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2spOworfQorCitmdW5j
dGlvbiB3YWl0Rm9yRXZlbnRUZXN0QW5kRW5kKGVsZW1lbnQsIGV2ZW50TmFtZSwgdGVzdEZ1bmNT
dHJpbmcpCit7CisgICAgd2FpdEZvckV2ZW50QW5kVGVzdChlbGVtZW50LCBldmVudE5hbWUsIHRl
c3RGdW5jU3RyaW5nLCB0cnVlKTsKK30KKyAgCit2YXIgdGVzdEVuZGVkID0gZmFsc2U7CisKK2Z1
bmN0aW9uIGVuZFRlc3QoKQoreworICAgIGNvbnNvbGVXcml0ZSgiRU5EIE9GIFRFU1QiKTsKKyAg
ICB0ZXN0RW5kZWQgPSB0cnVlOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgICAgIAorfQorCitm
dW5jdGlvbiBsb2dSZXN1bHQoc3VjY2VzcywgdGV4dCkKK3sKKyAgICBpZiAoc3VjY2VzcykKKyAg
ICAgICAgY29uc29sZVdyaXRlKHRleHQgKyAiIDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+T0s8
L3NwYW4+Iik7CisgICAgZWxzZQorICAgICAgICBjb25zb2xlV3JpdGUodGV4dCArICIgPHNwYW4g
c3R5bGU9J2NvbG9yOnJlZCc+RkFJTDwvc3Bhbj4iKTsKK30KKworZnVuY3Rpb24gY29uc29sZVdy
aXRlKHRleHQpCit7CisgICAgaWYgKHRlc3RFbmRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGxv
Z0NvbnNvbGUoKS5pbm5lckhUTUwgKz0gdGV4dCArICI8YnI+IjsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115215</attachid>
            <date>2011-11-15 12:13:49 -0800</date>
            <delta_ts>2011-11-15 14:28:22 -0800</delta_ts>
            <desc>reupload to re-EWS now that pipelined change 71518 is landed</desc>
            <filename>bug-71753-20111115121348.patch</filename>
            <type>text/plain</type>
            <size>24843</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTk3MzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjY2YzMDk0ODUzMjkxODE2
MDVlNmM5NjIwZWY3ZTBlMTBiMTFmYTUxLi5kNzc4ZmIyMmUwMzMxNmIzZDI3ODI5YjQzZDQ0ZDAy
OTRhMTJjZmM5IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMTEtMTAgIFNjb3R0
IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIElETCBjaGFuZ2VzIGZv
ciBnYW1lcGFkIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxNzUzCisKKyAgICAgICAgSURMIGNoYW5nZXMgYW5kIGFzc29jaWF0ZWQgcGx1
bWJpbmcgdG8gZXhwb3NlIGxpc3Qgb2YgZ2FtZXBhZCBvYmplY3RzCisgICAgICAgIG9uIG5hdmln
YXRvciBvYmplY3QgKHBlciBjdXJyZW50IHNwZWMpLiBGdWxsIHBhdGNoIGlzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTQ1MS4gT25seSBiYXNpYyBl
eGlzdGVuY2UKKyAgICAgICAgdGVzdCB1bnRpbCBtb3JlIHBsdW1iaW5nIGluIGZ1dHVyZSBwYXRj
aGVzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRl
c3Q6IGdhbWVwYWQvZ2FtZXBhZC1hcGkuaHRtbAorCisgICAgICAgICogV2ViQ29yZS5neXBpOgor
ICAgICAgICAqIHBhZ2UvR2FtZXBhZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2Ft
ZXBhZDo6R2FtZXBhZCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkOjpheGVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkdhbWVwYWQ6OmJ1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBh
ZDo6fkdhbWVwYWQpOgorICAgICAgICAqIHBhZ2UvR2FtZXBhZC5oOiBBZGRlZC4KKyAgICAgICAg
KiBwYWdlL0dhbWVwYWQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0dhbWVwYWRMaXN0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTGlzdDo6fkdhbWVwYWRMaXN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
R2FtZXBhZExpc3Q6Omxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTGlzdDo6aXRl
bSk6CisgICAgICAgICogcGFnZS9HYW1lcGFkTGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkdhbWVwYWRMaXN0OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6
OkdhbWVwYWRMaXN0KToKKyAgICAgICAgKiBwYWdlL0dhbWVwYWRMaXN0LmlkbDogQWRkZWQuCisg
ICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9y
OjpnYW1lcGFkcyk6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwYWdl
L05hdmlnYXRvci5pZGw6CisKIDIwMTEtMTEtMDkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSByZWR1bmRhbnQgW0NhbkJlQ29uc3RydWN0ZWRd
IElETHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCA0ODI2YzVhNTg4NGRkZDkxYTlkNmJkNDlhZGMxMTJl
ODQ1OGE1MTUyLi43M2UyZWMwMjU0MjY4MTYwMmY4ZWRkNzU0ZWY3MDdhOTVhM2U2OGEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0xMzk5LDYgKzEzOTksOCBAQAogICAgICAgICAgICAgJ3BhZ2UvRE9N
U2VsZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9ET01XaW5kb3cuaWRsJywKICAgICAg
ICAgICAgICdwYWdlL0V2ZW50U291cmNlLmlkbCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFk
LmlkbCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlzdC5pZGwnLAogICAgICAgICAgICAg
J3BhZ2UvR2VvbG9jYXRpb24uaWRsJywKICAgICAgICAgICAgICdwYWdlL0dlb3Bvc2l0aW9uLmlk
bCcsCiAgICAgICAgICAgICAncGFnZS9IaXN0b3J5LmlkbCcsCkBAIC0yOTUwLDYgKzI5NTIsMTAg
QEAKICAgICAgICAgICAgICdwYWdlL0ZyYW1lQWN0aW9uU2NoZWR1bGVyLmgnLAogICAgICAgICAg
ICAgJ3BhZ2UvRnJhbWVUcmVlLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9GcmFtZVZpZXcuY3Bw
JywKKyAgICAgICAgICAgICdwYWdlL0dhbWVwYWQuY3BwJywKKyAgICAgICAgICAgICdwYWdlL0dh
bWVwYWQuaCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlzdC5jcHAnLAorICAgICAgICAg
ICAgJ3BhZ2UvR2FtZXBhZExpc3QuaCcsCiAgICAgICAgICAgICAncGFnZS9HZW9sb2NhdGlvbi5j
cHAnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCcsCiAgICAg
ICAgICAgICAncGFnZS9Hcm91cFNldHRpbmdzLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0dhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNWVkMThkZGRlMWM3YTZhYjAzYWEyMjhkZWUxYzcyZDQ4YjU2MmQ0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmNwcApAQCAtMCwwICsx
LDU1IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8v
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisv
LyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAor
Ly8gREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZC5oIgor
CisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHYW1lcGFkOjpHYW1lcGFkKCkKK3sKK30KKwordm9p
ZCBHYW1lcGFkOjpheGVzKHVuc2lnbmVkIGNvdW50LCBmbG9hdCogZGF0YSkKK3sKKyAgICBtX2F4
ZXMucmVzaXplKGNvdW50KTsKKyAgICBzdGQ6OmNvcHkoZGF0YSwgZGF0YSArIGNvdW50LCBtX2F4
ZXMuYmVnaW4oKSk7Cit9CisKK3ZvaWQgR2FtZXBhZDo6YnV0dG9ucyh1bnNpZ25lZCBjb3VudCwg
ZmxvYXQqIGRhdGEpCit7CisgICAgbV9idXR0b25zLnJlc2l6ZShjb3VudCk7CisgICAgc3RkOjpj
b3B5KGRhdGEsIGRhdGEgKyBjb3VudCwgbV9idXR0b25zLmJlZ2luKCkpOworfQorCitHYW1lcGFk
Ojp+R2FtZXBhZCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFk
LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjVmMTljMzQ5
MDk2ZGM0ZDBmODgxNmI5NTE4YzFmODk5OGJmYWM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9HYW1lcGFkLmgKQEAgLTAsMCArMSw2OSBAQAorLy8gQ29weXJpZ2h0IChD
KSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8v
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8v
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
CisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2lmbmRlZiBH
YW1lcGFkX2gKKyNkZWZpbmUgR2FtZXBhZF9oCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBHYW1lcGFkOiBwdWJsaWMgUmVmQ291
bnRlZDxHYW1lcGFkPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2FtZXBhZD4g
Y3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2FtZXBhZCk7Cisg
ICAgfQorICAgIH5HYW1lcGFkKCk7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxmbG9hdD4gRmxvYXRW
ZWN0b3I7CisKKyAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQor
ICAgIHZvaWQgaWQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KKworICAgIHVuc2ln
bmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIHZvaWQgaW5kZXgodW5z
aWduZWQgdmFsKSB7IG1faW5kZXggPSB2YWw7IH0KKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0
aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQorICAgIHZvaWQgdGltZXN0
YW1wKHVuc2lnbmVkIGxvbmcgbG9uZyB2YWwpIHsgbV90aW1lc3RhbXAgPSB2YWw7IH0KKworICAg
IGNvbnN0IEZsb2F0VmVjdG9yJiBheGVzKCkgY29uc3QgeyByZXR1cm4gbV9heGVzOyB9CisgICAg
dm9pZCBheGVzKHVuc2lnbmVkIGNvdW50LCBmbG9hdCogZGF0YSk7CisKKyAgICBjb25zdCBGbG9h
dFZlY3RvciYgYnV0dG9ucygpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uczsgfQorICAgIHZvaWQg
YnV0dG9ucyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpOworCitwcml2YXRlOgorICAgIEdh
bWVwYWQoKTsKKyAgICBTdHJpbmcgbV9pZDsKKyAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBtX3RpbWVzdGFtcDsKKyAgICBGbG9hdFZlY3RvciBtX2F4ZXM7Cisg
ICAgRmxvYXRWZWN0b3IgbV9idXR0b25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gR2FtZXBhZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dh
bWVwYWQuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmlkbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MTQ5YjA1ZjVlNTJiOWRlYTVkNTQ5YWFmNzFmMzQ2ZjUzNzNkMDdlCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmlkbApAQCAtMCwwICsxLDM2IEBACisvLyBD
b3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
Ly8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QK
Ky8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgor
Cittb2R1bGUgZG9tIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUdB
TUVQQUQKKyAgICBdIEdhbWVwYWQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGlkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBpbmRleDsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdFtdIGF4ZXM7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBmbG9hdFtdIGJ1dHRvbnM7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dhbWVwYWRMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjkzNGVkZDI1NDQ4NjEzNzkwZjg5NjM2MDEy
MjRkNTQxMWMwZGEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1l
cGFkTGlzdC5jcHAKQEAgLTAsMCArMSw1NiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisv
LyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisv
LyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisKKyNpbmNsdWRlICJHYW1lcGFkLmgiCisKKyNpZiBF
TkFCTEUoR0FNRVBBRCkKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHYW1lcGFkTGlzdDo6fkdh
bWVwYWRMaXN0KCkKK3sKK30KKwordm9pZCBHYW1lcGFkTGlzdDo6c2V0KHVuc2lnbmVkIGluZGV4
LCBQYXNzUmVmUHRyPEdhbWVwYWQ+IGdhbWVwYWQpCit7CisgICAgaWYgKGluZGV4ID49IGtNYXhp
bXVtR2FtZXBhZHMpCisgICAgICAgIHJldHVybjsKKyAgICBtX2l0ZW1zW2luZGV4XSA9IGdhbWVw
YWQ7Cit9CisKK3Vuc2lnbmVkIEdhbWVwYWRMaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJl
dHVybiBrTWF4aW11bUdhbWVwYWRzOworfQorCitHYW1lcGFkKiBHYW1lcGFkTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkKK3sKKyAgICByZXR1cm4gaW5kZXggPCBsZW5ndGgoKSA/IG1faXRlbXNb
aW5kZXhdLmdldCgpIDogMDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVw
YWRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Y2E0MmU3OWZmNWM2OTE4N2NmMjQ5YjBmN2QwZThiNWI1MmVjNDUyYgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaApAQCAtMCwwICsxLDUzIEBACisv
LyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
Ly8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdF
LgorCisjaWZuZGVmIEdhbWVwYWRMaXN0X2gKKyNkZWZpbmUgR2FtZXBhZExpc3RfaAorCisjaW5j
bHVkZSAiR2FtZXBhZC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPEdhbWVwYWQ+ID4gR2FtZXBhZFZlY3Rv
cjsKKworY2xhc3MgR2FtZXBhZExpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkTGlzdD4g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdhbWVwYWRMaXN0PiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgR2FtZXBhZExpc3QpOyB9CisgICAgfkdhbWVwYWRMaXN0KCk7
CisKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0cjxHYW1lcGFkPik7Cisg
ICAgR2FtZXBhZCogaXRlbSh1bnNpZ25lZCBpbmRleCk7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgZW51bSB7IGtNYXhpbXVtR2FtZXBhZHMgPSA0IH07Cisg
ICAgR2FtZXBhZExpc3QoKSB7IH0KKyAgICBSZWZQdHI8R2FtZXBhZD4gbV9pdGVtc1trTWF4aW11
bUdhbWVwYWRzXTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdh
bWVwYWRMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3Qu
aWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQy
YjgxNWRmYWY0Mjc4NjU3M2JmNTFhYjUzOGVmNGZhM2RmNTQyOAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8v
IENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0Uu
CisKK21vZHVsZSBkb20geworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9
R0FNRVBBRCwKKyAgICAgICAgSGFzSW5kZXhHZXR0ZXIKKyAgICBdIEdhbWVwYWRMaXN0IHsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICBH
YW1lcGFkIGl0ZW0oaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSB1bnNpZ25lZCBs
b25nIGluZGV4KTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXgg
NTM1NzVhZmQ2ZmNiYjk5YzA3ODA0MTIwM2Y5MDY2M2I3Y2U3MTUyMC4uYmU3NmNlYTMwMTViZWFj
MzA5MGRkMThjODc1YWFlZDY1MmIzOTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkdhbWVwYWRM
aXN0LmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5j
bHVkZSAiTGFuZ3VhZ2UuaCIKQEAgLTI4OCw0ICsyODksMTIgQEAgdm9pZCBOYXZpZ2F0b3I6Ondl
YmtpdEdldFVzZXJNZWRpYShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdh
dG9yVXMKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEdBTUVQQUQpCitHYW1lcGFkTGlzdCogTmF2
aWdhdG9yOjpnYW1lcGFkcygpCit7CisgICAgLy8gU3R1YmJlZCB1bnRpbCBwbGF0Zm9ybS8gY2hh
bmdlcyBsYW5kZWQuCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggM2ExZTA0MmJiNGJkNzAzNDcxZWMz
MGU3ODc3OThhNDczZThmNzZkMy4uZDk2OTk3NjJhYzkyMmRmZTUyYjkzOWIzNWU0MTUyOTc2OTRi
MTAyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIERPTU1pbWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJh
eTsKIGNsYXNzIEZyYW1lOworY2xhc3MgR2FtZXBhZExpc3Q7CiBjbGFzcyBHZW9sb2NhdGlvbjsK
IGNsYXNzIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s7CiBjbGFzcyBOYXZpZ2F0b3JV
c2VyTWVkaWFTdWNjZXNzQ2FsbGJhY2s7CkBAIC02OSw2ICs3MCwxMCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHdlYmtpdEdldFVzZXJNZWRpYShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBh
c3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxO
YXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlm
CiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBHYW1lcGFkTGlzdCogZ2FtZXBhZHMoKTsKKyNl
bmRpZgorCiBwcml2YXRlOgogICAgIE5hdmlnYXRvcihGcmFtZSopOwogICAgIEZyYW1lKiBtX2Zy
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCmluZGV4IDJmNjkxYzMwZWU3YzY1MDQyZDk5
NjcxODRiMmU1MWUzM2EyYzlkMzAuLmI0YmYxNzVjMWI0NDAzMzRkNzM3M2M1MjEyZmVkMDM1NTRj
NTFjNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKQEAgLTU3LDYgKzU3LDEwIEBAIG1v
ZHVsZSB3aW5kb3cgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBbQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LCBPcHRpb25hbF0gTmF2
aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKQogICAgICAgICAgICAg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxFX0dBTUVQ
QUQpICYmIEVOQUJMRV9HQU1FUEFECisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbRW5hYmxl
ZEF0UnVudGltZV0gR2FtZXBhZExpc3QgZ2FtZXBhZHM7CisjZW5kaWYKICAgICB9OwogCiB9CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzU0ZGVj
MDI5NGJmNDYxYjVjZTIxYWNhMjZmZGU2NWY0OGMyODRlYi4uMWUxMjM5ZWJlMjFmY2Y3ZGM0YzRi
NTRjY2NlNjBmYTFlMGUyZTRlOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTExLTEwICBTY290dCBHcmFoYW0g
IDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBJREwgY2hhbmdlcyBmb3IgZ2FtZXBh
ZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTc1MworCisgICAgICAgIFJ1bnRpbWUgZW5hYmxlIGdhbWVwYWQgaW4gY2hyb21pdW0uCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjpUZXN0
U2hlbGwpOgorCiAyMDExLTExLTA5ICBBbmR5IFdpbmdvICA8d2luZ29AaWdhbGlhLmNvbT4KIAog
ICAgICAgICBBZGQgd2Via2l0ZGlycy5wbTpnZXRBcmNoaXRlY3R1cmUgaW1wbGVtZW50YXRpb24g
Zm9yIEdUSwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKaW5k
ZXggZGUyZjJjOGEyNGRiNTk4NjNmNjJhZmE2YTEwOTVjMDJiMWI2MDgyNS4uMGEwZGExNmY1MmQw
OWMzYzFiODhjOThhYWJmYWI1ODBjOThjNWIwMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC0xMjIsNiArMTIyLDcgQEAgVGVzdFNoZWxsOjpUZXN0
U2hlbGwoYm9vbCB0ZXN0U2hlbGxNb2RlKQogICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxl
TWVkaWFTdHJlYW0odHJ1ZSk7CiAgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVXZWJBdWRp
byh0cnVlKTsgCiAgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVWaWRlb1RyYWNrKHRydWUp
OworICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlR2FtZXBhZCh0cnVlKTsKIAogICAgIG1f
d2ViUGVybWlzc2lvbnMgPSBhZG9wdFB0cihuZXcgV2ViUGVybWlzc2lvbnModGhpcykpOwogICAg
IG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIodGhpcykpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGRlNDk1OWUwNGRmMGRiM2FmMjYxMDViZWZkY2EyN2I3
ZjcyZGJkNWEuLjAwNTI1YWYxODIzNTZjYWY5YWJjZGE4NjhkMDkxNDc0ZmMyMmU0OGYgMTAwNzU1
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNiBAQAorMjAxMS0xMS0xMCAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgSURMIGNoYW5nZXMgZm9yIGdhbWVwYWQgc3VwcG9ydAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGdhbWVwYWQvZ2Ft
ZXBhZC1hcGktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBnYW1lcGFkL2dhbWVwYWQt
YXBpLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGdhbWVwYWQvZ2FtZXBhZC10ZXN0LmpzOiBBZGRl
ZC4KKyAgICAgICAgKGxvZ0NvbnNvbGUpOgorICAgICAgICAodGVzdEV4cGVjdGVkKToKKyAgICAg
ICAgKHJlcG9ydEV4cGVjdGVkKToKKyAgICAgICAgKHdhaXRGb3JFdmVudEFuZEVuZCk6CisgICAg
ICAgICh3YWl0Rm9yRXZlbnQuX2V2ZW50Q2FsbGJhY2spOgorICAgICAgICAod2FpdEZvckV2ZW50
KToKKyAgICAgICAgKHdhaXRGb3JFdmVudEFuZFRlc3QuX2V2ZW50Q2FsbGJhY2spOgorICAgICAg
ICAod2FpdEZvckV2ZW50QW5kVGVzdCk6CisgICAgICAgICh3YWl0Rm9yRXZlbnRUZXN0QW5kRW5k
KToKKyAgICAgICAgKGVuZFRlc3QpOgorICAgICAgICAobG9nUmVzdWx0KToKKyAgICAgICAgKGNv
bnNvbGVXcml0ZSk6CisKIDIwMTEtMTEtMDkgIEtlbiBCdWNoYW5hbiA8a2VucmJAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFNWRyBmb3JlaWduT2JqZWN0IHdyb25nIGNvbnRhaW5lcgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFwaS1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBpLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjhm
NDBhZjM2NDJmNThlMGI3NGE0NWZiY2UyMjkxZThkOTU0MTBiCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFwaS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwz
IEBACitFWFBFQ1RFRCAobmF2aWdhdG9yLmdhbWVwYWRzICE9PSAndW5kZWZpbmVkJykgT0sKK0VO
RCBPRiBURVNUCitNYWtlIHN1cmUgdGhlIG1haW4gcG9sbGluZyBhY2Nlc3MgcG9pbnQgZXhpc3Rz
IG9uIG5hdmlnYXRvci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1h
cGkuaHRtbCBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGkuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5iMjI3M2FmYzAwMTFmYWYzOTdhNzlhZDNiOTkxZWRhOTAwZDU1NDcxCi0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFwaS5odG1sCkBAIC0wLDAgKzEsOSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJnYW1lcGFkLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICB0ZXN0RXhwZWN0ZWQoIm5hdmlnYXRvci5nYW1lcGFk
cyIsIHVuZGVmaW5lZCwgIiE9PSIpOworICAgIGVuZFRlc3QoKTsKKzwvc2NyaXB0PgorPHA+TWFr
ZSBzdXJlIHRoZSBtYWluIHBvbGxpbmcgYWNjZXNzIHBvaW50IGV4aXN0cyBvbiBuYXZpZ2F0b3Iu
PC9wPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXRl
c3QuanMgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtdGVzdC5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4y
MjAxYTk3MWY2NTRjYmYxNDA1ZWU4YmRlZjIxMGUxZjkwYzQ2M2I0Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXRlc3QuanMKQEAgLTAsMCArMSwxMjYgQEAK
K3ZhciBjb25zb2xlID0gbnVsbDsKK3ZhciBwcmludEZ1bGxUZXN0RGV0YWlscyA9IHRydWU7IC8v
IFRoaXMgaXMgb3B0aW9uYWx5IHN3aXRjaGVkIG9mIGJ5IHRlc3Qgd2hvc2UgdGVzdGVkIHZhbHVl
cyBjYW4gZGlmZmVyLiAoc2VlIGRpc2FibGVGdWxsVGVzdERldGFpbHNQcmludGluZygpKQorCits
b2dDb25zb2xlKCk7CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2dDb25zb2xlKCkKK3sKKyAgICBp
ZiAoIWNvbnNvbGUgJiYgZG9jdW1lbnQuYm9keSkgeworICAgICAgICBjb25zb2xlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp
bGQoY29uc29sZSk7CisgICAgfQorICAgIHJldHVybiBjb25zb2xlOworfQorCitmdW5jdGlvbiB0
ZXN0RXhwZWN0ZWQodGVzdEZ1bmNTdHJpbmcsIGV4cGVjdGVkLCBjb21wYXJpc29uKQoreworICAg
IHRyeSB7CisgICAgICAgIHZhciBvYnNlcnZlZCA9IGV2YWwodGVzdEZ1bmNTdHJpbmcpOworICAg
IH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGNvbnNvbGVXcml0ZShleCk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgaWYgKGNvbXBhcmlzb24gPT09IHVuZGVmaW5lZCkKKyAgICAg
ICAgY29tcGFyaXNvbiA9ICc9PSc7CisKKyAgICB2YXIgc3VjY2VzcyA9IGZhbHNlOworICAgIHN3
aXRjaCAoY29tcGFyaXNvbikKKyAgICB7CisgICAgICAgIGNhc2UgJzwnOiAgc3VjY2VzcyA9IG9i
c2VydmVkIDwgIGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPD0nOiBzdWNjZXNzID0g
b2JzZXJ2ZWQgPD0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc+JzogIHN1Y2Nlc3Mg
PSBvYnNlcnZlZCA+ICBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz49Jzogc3VjY2Vz
cyA9IG9ic2VydmVkID49IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnIT0nOiBzdWNj
ZXNzID0gb2JzZXJ2ZWQgIT0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICchPT0nOiBz
dWNjZXNzID0gb2JzZXJ2ZWQgIT09IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPT0n
OiBzdWNjZXNzID0gb2JzZXJ2ZWQgPT0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc9
PT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPT09IGV4cGVjdGVkOyBicmVhazsKKyAgICB9CisgICAg
CisgICAgcmVwb3J0RXhwZWN0ZWQoc3VjY2VzcywgdGVzdEZ1bmNTdHJpbmcsIGNvbXBhcmlzb24s
IGV4cGVjdGVkLCBvYnNlcnZlZCkKK30KKwordmFyIHRlc3ROdW1iZXIgPSAwOworCitmdW5jdGlv
biByZXBvcnRFeHBlY3RlZChzdWNjZXNzLCB0ZXN0RnVuY1N0cmluZywgY29tcGFyaXNvbiwgZXhw
ZWN0ZWQsIG9ic2VydmVkKQoreworICAgIHRlc3ROdW1iZXIrKzsKKworICAgIHZhciBtc2cgPSAi
VGVzdCAiICsgdGVzdE51bWJlcjsKKworICAgIGlmIChwcmludEZ1bGxUZXN0RGV0YWlscyB8fCAh
c3VjY2VzcykKKyAgICAgICAgbXNnID0gIkVYUEVDVEVEICg8ZW0+IiArIHRlc3RGdW5jU3RyaW5n
ICsgIiA8L2VtPiIgKyBjb21wYXJpc29uICsgIiAnPGVtPiIgKyBleHBlY3RlZCArICI8L2VtPicp
IjsKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgbXNnICs9ICAiLCBPQlNFUlZFRCAnPGVt
PiIgKyBvYnNlcnZlZCArICI8L2VtPiciOworCisgICAgbG9nUmVzdWx0KHN1Y2Nlc3MsIG1zZyk7
Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZEVuZChlbGVtZW50LCBldmVudE5hbWUsIGZ1
bmNTdHJpbmcpCit7CisgICAgd2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuY1N0
cmluZywgdHJ1ZSkKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFt
ZSwgZnVuYywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQpCisg
ICAgeworICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudE5hbWUgKyAiKSIpOwor
CisgICAgICAgIGlmIChmdW5jKQorICAgICAgICAgICAgZnVuYyhldmVudCk7CisgICAgICAgIAor
ICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0KCk7ICAgIAorICAgIH0KKwor
ICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF9ldmVudENhbGxiYWNrKTsK
K30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kVGVzdChlbGVtZW50LCBldmVudE5hbWUsIHRl
c3RGdW5jU3RyaW5nLCBlbmRpdCkKK3sKKyAgICBmdW5jdGlvbiBfZXZlbnRDYWxsYmFjayhldmVu
dCkKKyAgICB7CisgICAgICAgIGxvZ1Jlc3VsdChldmFsKHRlc3RGdW5jU3RyaW5nKSwgIkVWRU5U
KCIgKyBldmVudE5hbWUgKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIik7CisgICAg
ICAgIGlmIChlbmRpdCkKKyAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCisgICAgfQorCisgICAg
ZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2spOworfQor
CitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRUZXN0QW5kRW5kKGVsZW1lbnQsIGV2ZW50TmFtZSwgdGVz
dEZ1bmNTdHJpbmcpCit7CisgICAgd2FpdEZvckV2ZW50QW5kVGVzdChlbGVtZW50LCBldmVudE5h
bWUsIHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsKK30KKyAgCit2YXIgdGVzdEVuZGVkID0gZmFsc2U7
CisKK2Z1bmN0aW9uIGVuZFRlc3QoKQoreworICAgIGNvbnNvbGVXcml0ZSgiRU5EIE9GIFRFU1Qi
KTsKKyAgICB0ZXN0RW5kZWQgPSB0cnVlOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgICAgIAor
fQorCitmdW5jdGlvbiBsb2dSZXN1bHQoc3VjY2VzcywgdGV4dCkKK3sKKyAgICBpZiAoc3VjY2Vz
cykKKyAgICAgICAgY29uc29sZVdyaXRlKHRleHQgKyAiIDxzcGFuIHN0eWxlPSdjb2xvcjpncmVl
bic+T0s8L3NwYW4+Iik7CisgICAgZWxzZQorICAgICAgICBjb25zb2xlV3JpdGUodGV4dCArICIg
PHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+RkFJTDwvc3Bhbj4iKTsKK30KKworZnVuY3Rpb24gY29u
c29sZVdyaXRlKHRleHQpCit7CisgICAgaWYgKHRlc3RFbmRlZCkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGxvZ0NvbnNvbGUoKS5pbm5lckhUTUwgKz0gdGV4dCArICI8YnI+IjsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115247</attachid>
            <date>2011-11-15 14:28:26 -0800</date>
            <delta_ts>2011-11-18 12:09:03 -0800</delta_ts>
            <desc>test rebase for navigator addition</desc>
            <filename>bug-71753-20111115142825.patch</filename>
            <type>text/plain</type>
            <size>25871</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFmMGEyZjRmNDQ5ZWMy
YmY0NjdiNDEwMmVjNjIzOTg3MWQ4ZjZmZC4uZGIyZWUwODZkZjljMzc3YzBkYzg0ODE0NmFlMjM4
NWNmZjQ5NWY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTExLTE1ICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBJREwgY2hhbmdlcyBm
b3IgZ2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MTc1MworCisgICAgICAgIElETCBjaGFuZ2VzIGFuZCBhc3NvY2lhdGVkIHBs
dW1iaW5nIHRvIGV4cG9zZSBsaXN0IG9mIGdhbWVwYWQgb2JqZWN0cworICAgICAgICBvbiBuYXZp
Z2F0b3Igb2JqZWN0IChwZXIgY3VycmVudCBzcGVjKS4gRnVsbCBwYXRjaCBpcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEuIE9ubHkgYmFzaWMg
ZXhpc3RlbmNlCisgICAgICAgIHRlc3QgdW50aWwgbW9yZSBwbHVtYmluZyBpbiBmdXR1cmUgcGF0
Y2hlcy4KKyAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGVzdDogZ2FtZXBhZC9nYW1lcGFkLWFwaS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogcGFnZS9HYW1lcGFkLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpH
YW1lcGFkOjpHYW1lcGFkKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6OmF4ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6YnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHYW1l
cGFkOjp+R2FtZXBhZCk6CisgICAgICAgICogcGFnZS9HYW1lcGFkLmg6IEFkZGVkLgorICAgICAg
ICAqIHBhZ2UvR2FtZXBhZC5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvR2FtZXBhZExpc3Qu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0Ojp+R2FtZXBhZExpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6OnNldCk6CisgICAgICAgIChXZWJDb3Jl
OjpHYW1lcGFkTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0Ojpp
dGVtKToKKyAgICAgICAgKiBwYWdlL0dhbWVwYWRMaXN0Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R2FtZXBhZExpc3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTGlz
dDo6R2FtZXBhZExpc3QpOgorICAgICAgICAqIHBhZ2UvR2FtZXBhZExpc3QuaWRsOiBBZGRlZC4K
KyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0
b3I6OmdhbWVwYWRzKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5oOgorICAgICAgICAqIHBh
Z2UvTmF2aWdhdG9yLmlkbDoKKwogMjAxMS0xMS0xNSAgTmF0ZSBDaGFwaW4gIDxqYXBoZXRAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBpcyBub3cgdGhlIG9u
bHkgU3VicmVzb3VyY2VMb2FkZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjMDJkZjZjOWJi
ZjVhZTU2Zjc2ZTZiZGU0OTdjODdmMDVmYjRkYjdlLi4wNjQ0MzRkZGM3NDQ5MzNkZDA1YWM1NGNk
NmJiNmU2NmYwZTliNjUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xMzk4LDYgKzEzOTgsOCBAQAog
ICAgICAgICAgICAgJ3BhZ2UvRE9NU2VsZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9E
T01XaW5kb3cuaWRsJywKICAgICAgICAgICAgICdwYWdlL0V2ZW50U291cmNlLmlkbCcsCisgICAg
ICAgICAgICAncGFnZS9HYW1lcGFkLmlkbCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlz
dC5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRpb24uaWRsJywKICAgICAgICAgICAg
ICdwYWdlL0dlb3Bvc2l0aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9IaXN0b3J5LmlkbCcs
CkBAIC0yOTQ2LDYgKzI5NDgsMTAgQEAKICAgICAgICAgICAgICdwYWdlL0ZyYW1lQWN0aW9uU2No
ZWR1bGVyLmgnLAogICAgICAgICAgICAgJ3BhZ2UvRnJhbWVUcmVlLmNwcCcsCiAgICAgICAgICAg
ICAncGFnZS9GcmFtZVZpZXcuY3BwJywKKyAgICAgICAgICAgICdwYWdlL0dhbWVwYWQuY3BwJywK
KyAgICAgICAgICAgICdwYWdlL0dhbWVwYWQuaCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFk
TGlzdC5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZExpc3QuaCcsCiAgICAgICAgICAg
ICAncGFnZS9HZW9sb2NhdGlvbi5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRpb25D
b250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9Hcm91cFNldHRpbmdzLmNwcCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9HYW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWVkMThkZGRlMWM3YTZhYjAzYWEyMjhk
ZWUxYzcyZDQ4YjU2MmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9H
YW1lcGFkLmNwcApAQCAtMCwwICsxLDU1IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
Ky8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8v
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8v
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiR2FtZXBhZC5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHYW1lcGFkOjpH
YW1lcGFkKCkKK3sKK30KKwordm9pZCBHYW1lcGFkOjpheGVzKHVuc2lnbmVkIGNvdW50LCBmbG9h
dCogZGF0YSkKK3sKKyAgICBtX2F4ZXMucmVzaXplKGNvdW50KTsKKyAgICBzdGQ6OmNvcHkoZGF0
YSwgZGF0YSArIGNvdW50LCBtX2F4ZXMuYmVnaW4oKSk7Cit9CisKK3ZvaWQgR2FtZXBhZDo6YnV0
dG9ucyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpCit7CisgICAgbV9idXR0b25zLnJlc2l6
ZShjb3VudCk7CisgICAgc3RkOjpjb3B5KGRhdGEsIGRhdGEgKyBjb3VudCwgbV9idXR0b25zLmJl
Z2luKCkpOworfQorCitHYW1lcGFkOjp+R2FtZXBhZCgpCit7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9HYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zYjVmMTljMzQ5MDk2ZGM0ZDBmODgxNmI5NTE4YzFmODk5OGJmYWM4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmgKQEAgLTAsMCArMSw2
OSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
Ky8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8g
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8v
IERBTUFHRS4KKworI2lmbmRlZiBHYW1lcGFkX2gKKyNkZWZpbmUgR2FtZXBhZF9oCisKKyNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBH
YW1lcGFkOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkPiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8R2FtZXBhZD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgR2FtZXBhZCk7CisgICAgfQorICAgIH5HYW1lcGFkKCk7CisKKyAgICB0eXBlZGVm
IFZlY3RvcjxmbG9hdD4gRmxvYXRWZWN0b3I7CisKKyAgICBjb25zdCBTdHJpbmcmIGlkKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHZvaWQgaWQoY29uc3QgU3RyaW5nJiBpZCkgeyBtX2lk
ID0gaWQ7IH0KKworICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyByZXR1cm4gbV9pbmRleDsg
fQorICAgIHZvaWQgaW5kZXgodW5zaWduZWQgdmFsKSB7IG1faW5kZXggPSB2YWw7IH0KKworICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFt
cDsgfQorICAgIHZvaWQgdGltZXN0YW1wKHVuc2lnbmVkIGxvbmcgbG9uZyB2YWwpIHsgbV90aW1l
c3RhbXAgPSB2YWw7IH0KKworICAgIGNvbnN0IEZsb2F0VmVjdG9yJiBheGVzKCkgY29uc3QgeyBy
ZXR1cm4gbV9heGVzOyB9CisgICAgdm9pZCBheGVzKHVuc2lnbmVkIGNvdW50LCBmbG9hdCogZGF0
YSk7CisKKyAgICBjb25zdCBGbG9hdFZlY3RvciYgYnV0dG9ucygpIGNvbnN0IHsgcmV0dXJuIG1f
YnV0dG9uczsgfQorICAgIHZvaWQgYnV0dG9ucyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEp
OworCitwcml2YXRlOgorICAgIEdhbWVwYWQoKTsKKyAgICBTdHJpbmcgbV9pZDsKKyAgICB1bnNp
Z25lZCBtX2luZGV4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBtX3RpbWVzdGFtcDsKKyAgICBG
bG9hdFZlY3RvciBtX2F4ZXM7CisgICAgRmxvYXRWZWN0b3IgbV9idXR0b25zOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR2FtZXBhZF9oCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1l
cGFkLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yMTQ5YjA1ZjVlNTJiOWRlYTVkNTQ5YWFmNzFmMzQ2ZjUzNzNk
MDdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmlkbApA
QCAtMCwwICsxLDM2IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoK
Ky8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisv
LyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSAorLy8gREFNQUdFLgorCittb2R1bGUgZG9tIHsKKworICAgIGludGVyZmFjZSBbCisg
ICAgICAgIENvbmRpdGlvbmFsPUdBTUVQQUQKKyAgICBdIEdhbWVwYWQgeworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBpbmRleDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgbG9uZyB0aW1lc3RhbXA7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdFtd
IGF4ZXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdFtdIGJ1dHRvbnM7CisgICAg
fTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjkzNGVk
ZDI1NDQ4NjEzNzkwZjg5NjM2MDEyMjRkNTQxMWMwZGEwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5jcHAKQEAgLTAsMCArMSw1NiBAQAorLy8gQ29w
eXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8v
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisv
LyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCisKKyNpbmNsdWRl
ICJHYW1lcGFkLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitHYW1lcGFkTGlzdDo6fkdhbWVwYWRMaXN0KCkKK3sKK30KKwordm9pZCBHYW1lcGFkTGlz
dDo6c2V0KHVuc2lnbmVkIGluZGV4LCBQYXNzUmVmUHRyPEdhbWVwYWQ+IGdhbWVwYWQpCit7Cisg
ICAgaWYgKGluZGV4ID49IGtNYXhpbXVtR2FtZXBhZHMpCisgICAgICAgIHJldHVybjsKKyAgICBt
X2l0ZW1zW2luZGV4XSA9IGdhbWVwYWQ7Cit9CisKK3Vuc2lnbmVkIEdhbWVwYWRMaXN0OjpsZW5n
dGgoKSBjb25zdAoreworICAgIHJldHVybiBrTWF4aW11bUdhbWVwYWRzOworfQorCitHYW1lcGFk
KiBHYW1lcGFkTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKK3sKKyAgICByZXR1cm4gaW5kZXgg
PCBsZW5ndGgoKSA/IG1faXRlbXNbaW5kZXhdLmdldCgpIDogMDsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVw
YWRMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E0MmU3OWZmNWM2OTE4N2NmMjQ5YjBmN2QwZThiNWI1MmVj
NDUyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3Qu
aApAQCAtMCwwICsxLDUzIEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1l
dDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8v
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
CisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaWZuZGVmIEdhbWVwYWRMaXN0X2gKKyNkZWZpbmUg
R2FtZXBhZExpc3RfaAorCisjaW5jbHVkZSAiR2FtZXBhZC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPEdh
bWVwYWQ+ID4gR2FtZXBhZFZlY3RvcjsKKworY2xhc3MgR2FtZXBhZExpc3QgOiBwdWJsaWMgUmVm
Q291bnRlZDxHYW1lcGFkTGlzdD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdh
bWVwYWRMaXN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgR2FtZXBhZExpc3QpOyB9
CisgICAgfkdhbWVwYWRMaXN0KCk7CisKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgUGFz
c1JlZlB0cjxHYW1lcGFkPik7CisgICAgR2FtZXBhZCogaXRlbSh1bnNpZ25lZCBpbmRleCk7Cisg
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZW51bSB7IGtNYXhp
bXVtR2FtZXBhZHMgPSA0IH07CisgICAgR2FtZXBhZExpc3QoKSB7IH0KKyAgICBSZWZQdHI8R2Ft
ZXBhZD4gbV9pdGVtc1trTWF4aW11bUdhbWVwYWRzXTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEdhbWVwYWRMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlz
dC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjQyYjgxNWRmYWY0Mjc4NjU3M2JmNTFhYjUzOGVmNGZhM2RmNTQy
OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRs
CkBAIC0wLDAgKzEsMzQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0
OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8g
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUK
Ky8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNICisvLyBEQU1BR0UuCisKK21vZHVsZSBkb20geworCisgICAgaW50ZXJmYWNlIFsK
KyAgICAgICAgQ29uZGl0aW9uYWw9R0FNRVBBRCwKKyAgICAgICAgSGFzSW5kZXhHZXR0ZXIKKyAg
ICBdIEdhbWVwYWRMaXN0IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOworICAgICAgICBHYW1lcGFkIGl0ZW0oaW4gW09wdGlvbmFsPUNhbGxXaXRoRGVm
YXVsdFZhbHVlXSB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB9OworCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5jcHAKaW5kZXggNTdkMzhmZjAzNDgyNDNlNGFjNDUwMGNhMTBlOTRlNzBhYTVl
YzFjNS4uMjUzZmQ0ZmFmMDhjNmVjNGNiYzhjZGI2NmIyNGEwMTI4ZmNjZTY1NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5o
IgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCiAjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNp
bmNsdWRlICJNb3VzZUxvY2thYmxlLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtMjg5LDQgKzI5
MCwxMiBAQCB2b2lkIE5hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKGNvbnN0IFN0cmluZyYg
b3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVcwogfQogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
R0FNRVBBRCkKK0dhbWVwYWRMaXN0KiBOYXZpZ2F0b3I6OmdhbWVwYWRzKCkKK3sKKyAgICAvLyBT
dHViYmVkIHVudGlsIHBsYXRmb3JtLyBjaGFuZ2VzIGxhbmRlZC4KKyAgICByZXR1cm4gMDsKK30K
KyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApp
bmRleCBkYWYwOWQ3OTY3ZTc1M2IxM2E3NWI2ZGYyZmY5MTc4ZTg3N2ZkZDg2Li5lZDNkMDY0OTU0
Nzg1MjhhNmNmM2U3ZjEwZWQ1YzM1ZWEyOGI5NjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgK
QEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRE9NTWltZVR5cGVB
cnJheTsKIGNsYXNzIERPTVBsdWdpbkFycmF5OwogY2xhc3MgRnJhbWU7CitjbGFzcyBHYW1lcGFk
TGlzdDsKIGNsYXNzIEdlb2xvY2F0aW9uOwogY2xhc3MgTW91c2VMb2NrYWJsZTsKIGNsYXNzIE5h
dmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s7CkBAIC03NCw2ICs3NSwxMCBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdlYmtpdEdldFVzZXJNZWRpYShjb25zdCBTdHJpbmcmIG9wdGlv
bnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1Jl
ZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKyAgICBHYW1lcGFkTGlzdCogZ2FtZXBhZHMo
KTsKKyNlbmRpZgorCiBwcml2YXRlOgogICAgIE5hdmlnYXRvcihGcmFtZSopOwogICAgIEZyYW1l
KiBtX2ZyYW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRs
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCmluZGV4IDY1OTFhYmU1YmExZmU0
MjU0Y2UzNWYzZjgzYzNmYTQ2ZTY5YjQ1NjcuLjY5YmJjY2QyMDQzNTNkOTIwNGJkNzliMjNjZDU3
MzAyYTlkOTE2OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKQEAgLTYxLDYgKzYxLDEw
IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBbQ2FsbGJhY2s9RnVuY3Rpb25Pbmx5LCBPcHRpb25h
bF0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrKQogICAgICAg
ICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxF
X0dBTUVQQUQpICYmIEVOQUJMRV9HQU1FUEFECisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBb
RW5hYmxlZEF0UnVudGltZV0gR2FtZXBhZExpc3QgZ2FtZXBhZHM7CisjZW5kaWYKICAgICB9Owog
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YmM0OWY1OTk3ODYxZGRjYjUzODdhZjE0ZTdjN2ZmODE2ZTgwZTY2Yy4uMjg5OTYwMjEzNzJlNWQ5
M2ZhOWNkMmM1ZjFlM2IzZmNhYWM5ODFiYyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDExLTExLTE1ICBTY290dCBH
cmFoYW0gIDxzY290dG1nQGdvb2dsZS5jb20+CisKKyAgICAgICAgSURMIGNoYW5nZXMgZm9yIGdh
bWVwYWQgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzE3NTMKKworICAgICAgICBSdW50aW1lIGVuYWJsZSBnYW1lcGFkcyBpbiBDaHJvbWl1
bS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6
OlRlc3RTaGVsbCk6CisKIDIwMTEtMTEtMTUgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBEb24ndCB1c2UgRmlsZTo6U2x1cnAgZm9yIHJ1bi1sZWFrcyB1bml0
IHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hl
bGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRl
eCBkZTJmMmM4YTI0ZGI1OTg2M2Y2MmFmYTZhMTA5NWMwMmIxYjYwODI1Li4wYTBkYTE2ZjUyZDA5
YzNjMWI4OGM5OGFhYmZhYjU4MGM5OGM1YjAxIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTEyMiw2ICsxMjIsNyBAQCBUZXN0U2hlbGw6OlRlc3RT
aGVsbChib29sIHRlc3RTaGVsbE1vZGUpCiAgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVN
ZWRpYVN0cmVhbSh0cnVlKTsKICAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZVdlYkF1ZGlv
KHRydWUpOyAKICAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZVZpZGVvVHJhY2sodHJ1ZSk7
CisgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVHYW1lcGFkKHRydWUpOwogCiAgICAgbV93
ZWJQZXJtaXNzaW9ucyA9IGFkb3B0UHRyKG5ldyBXZWJQZXJtaXNzaW9ucyh0aGlzKSk7CiAgICAg
bV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcih0aGlzKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjA0Yzc3MGNkNDE4MWRmNzY2NTVlNjdmODU1NWU5YWUx
MjcwYzk2NS4uNDA5OWNjMTg5NWU5NDUwNGQwNmViNGI0NWEzMzFmNjRiYjAyYzFkYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI3IEBACisyMDExLTExLTE1ICBTY290dCBHcmFoYW0gIDxzY290dG1nQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBJREwgY2hhbmdlcyBmb3IgZ2FtZXBhZCBzdXBwb3J0CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc1MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZ2FtZXBhZC9nYW1l
cGFkLWFwaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGdhbWVwYWQvZ2FtZXBhZC1h
cGkuaHRtbDogQWRkZWQuCisgICAgICAgICogZ2FtZXBhZC9nYW1lcGFkLXRlc3QuanM6IEFkZGVk
LgorICAgICAgICAobG9nQ29uc29sZSk6CisgICAgICAgICh0ZXN0RXhwZWN0ZWQpOgorICAgICAg
ICAocmVwb3J0RXhwZWN0ZWQpOgorICAgICAgICAod2FpdEZvckV2ZW50QW5kRW5kKToKKyAgICAg
ICAgKHdhaXRGb3JFdmVudC5fZXZlbnRDYWxsYmFjayk6CisgICAgICAgICh3YWl0Rm9yRXZlbnQp
OgorICAgICAgICAod2FpdEZvckV2ZW50QW5kVGVzdC5fZXZlbnRDYWxsYmFjayk6CisgICAgICAg
ICh3YWl0Rm9yRXZlbnRBbmRUZXN0KToKKyAgICAgICAgKHdhaXRGb3JFdmVudFRlc3RBbmRFbmQp
OgorICAgICAgICAoZW5kVGVzdCk6CisgICAgICAgIChsb2dSZXN1bHQpOgorICAgICAgICAoY29u
c29sZVdyaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9uYXZpZ2F0
b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorCiAyMDExLTExLTE1ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTAwMjkxLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9n
YW1lcGFkLWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBp
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjhmNDBhZjM2NDJmNThlMGI3NGE0NWZiY2UyMjkx
ZThkOTU0MTBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFk
LWFwaS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitFWFBFQ1RFRCAobmF2aWdhdG9yLmdh
bWVwYWRzICE9PSAndW5kZWZpbmVkJykgT0sKK0VORCBPRiBURVNUCitNYWtlIHN1cmUgdGhlIG1h
aW4gcG9sbGluZyBhY2Nlc3MgcG9pbnQgZXhpc3RzIG9uIG5hdmlnYXRvci4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGkuaHRtbCBiL0xheW91dFRlc3RzL2dhbWVw
YWQvZ2FtZXBhZC1hcGkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMjI3M2FmYzAwMTFmYWYzOTdhNzlhZDNi
OTkxZWRhOTAwZDU1NDcxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9n
YW1lcGFkLWFwaS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4K
KzxzY3JpcHQgc3JjPSJnYW1lcGFkLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICB0
ZXN0RXhwZWN0ZWQoIm5hdmlnYXRvci5nYW1lcGFkcyIsIHVuZGVmaW5lZCwgIiE9PSIpOworICAg
IGVuZFRlc3QoKTsKKzwvc2NyaXB0PgorPHA+TWFrZSBzdXJlIHRoZSBtYWluIHBvbGxpbmcgYWNj
ZXNzIHBvaW50IGV4aXN0cyBvbiBuYXZpZ2F0b3IuPC9wPgorPC9ib2R5PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9nYW1lcGFk
L2dhbWVwYWQtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjAxYTk3MWY2NTRjYmYxNDA1ZWU4YmRlZjIx
MGUxZjkwYzQ2M2I0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1l
cGFkLXRlc3QuanMKQEAgLTAsMCArMSwxMjYgQEAKK3ZhciBjb25zb2xlID0gbnVsbDsKK3ZhciBw
cmludEZ1bGxUZXN0RGV0YWlscyA9IHRydWU7IC8vIFRoaXMgaXMgb3B0aW9uYWx5IHN3aXRjaGVk
IG9mIGJ5IHRlc3Qgd2hvc2UgdGVzdGVkIHZhbHVlcyBjYW4gZGlmZmVyLiAoc2VlIGRpc2FibGVG
dWxsVGVzdERldGFpbHNQcmludGluZygpKQorCitsb2dDb25zb2xlKCk7CisKK2lmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCitm
dW5jdGlvbiBsb2dDb25zb2xlKCkKK3sKKyAgICBpZiAoIWNvbnNvbGUgJiYgZG9jdW1lbnQuYm9k
eSkgeworICAgICAgICBjb25zb2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZSk7CisgICAgfQorICAgIHJl
dHVybiBjb25zb2xlOworfQorCitmdW5jdGlvbiB0ZXN0RXhwZWN0ZWQodGVzdEZ1bmNTdHJpbmcs
IGV4cGVjdGVkLCBjb21wYXJpc29uKQoreworICAgIHRyeSB7CisgICAgICAgIHZhciBvYnNlcnZl
ZCA9IGV2YWwodGVzdEZ1bmNTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGNv
bnNvbGVXcml0ZShleCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGNv
bXBhcmlzb24gPT09IHVuZGVmaW5lZCkKKyAgICAgICAgY29tcGFyaXNvbiA9ICc9PSc7CisKKyAg
ICB2YXIgc3VjY2VzcyA9IGZhbHNlOworICAgIHN3aXRjaCAoY29tcGFyaXNvbikKKyAgICB7Cisg
ICAgICAgIGNhc2UgJzwnOiAgc3VjY2VzcyA9IG9ic2VydmVkIDwgIGV4cGVjdGVkOyBicmVhazsK
KyAgICAgICAgY2FzZSAnPD0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPD0gZXhwZWN0ZWQ7IGJyZWFr
OworICAgICAgICBjYXNlICc+JzogIHN1Y2Nlc3MgPSBvYnNlcnZlZCA+ICBleHBlY3RlZDsgYnJl
YWs7CisgICAgICAgIGNhc2UgJz49Jzogc3VjY2VzcyA9IG9ic2VydmVkID49IGV4cGVjdGVkOyBi
cmVhazsKKyAgICAgICAgY2FzZSAnIT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgIT0gZXhwZWN0ZWQ7
IGJyZWFrOworICAgICAgICBjYXNlICchPT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgIT09IGV4cGVj
dGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPT0gZXhw
ZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc9PT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPT09
IGV4cGVjdGVkOyBicmVhazsKKyAgICB9CisgICAgCisgICAgcmVwb3J0RXhwZWN0ZWQoc3VjY2Vz
cywgdGVzdEZ1bmNTdHJpbmcsIGNvbXBhcmlzb24sIGV4cGVjdGVkLCBvYnNlcnZlZCkKK30KKwor
dmFyIHRlc3ROdW1iZXIgPSAwOworCitmdW5jdGlvbiByZXBvcnRFeHBlY3RlZChzdWNjZXNzLCB0
ZXN0RnVuY1N0cmluZywgY29tcGFyaXNvbiwgZXhwZWN0ZWQsIG9ic2VydmVkKQoreworICAgIHRl
c3ROdW1iZXIrKzsKKworICAgIHZhciBtc2cgPSAiVGVzdCAiICsgdGVzdE51bWJlcjsKKworICAg
IGlmIChwcmludEZ1bGxUZXN0RGV0YWlscyB8fCAhc3VjY2VzcykKKyAgICAgICAgbXNnID0gIkVY
UEVDVEVEICg8ZW0+IiArIHRlc3RGdW5jU3RyaW5nICsgIiA8L2VtPiIgKyBjb21wYXJpc29uICsg
IiAnPGVtPiIgKyBleHBlY3RlZCArICI8L2VtPicpIjsKKworICAgIGlmICghc3VjY2VzcykKKyAg
ICAgICAgbXNnICs9ICAiLCBPQlNFUlZFRCAnPGVtPiIgKyBvYnNlcnZlZCArICI8L2VtPiciOwor
CisgICAgbG9nUmVzdWx0KHN1Y2Nlc3MsIG1zZyk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVu
dEFuZEVuZChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmNTdHJpbmcpCit7CisgICAgd2FpdEZvckV2
ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuY1N0cmluZywgdHJ1ZSkKK30KKworZnVuY3Rpb24g
d2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCit7CisgICAgZnVu
Y3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQpCisgICAgeworICAgICAgICBjb25zb2xlV3JpdGUo
IkVWRU5UKCIgKyBldmVudE5hbWUgKyAiKSIpOworCisgICAgICAgIGlmIChmdW5jKQorICAgICAg
ICAgICAgZnVuYyhldmVudCk7CisgICAgICAgIAorICAgICAgICBpZiAoZW5kaXQpCisgICAgICAg
ICAgICBlbmRUZXN0KCk7ICAgIAorICAgIH0KKworICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cihldmVudE5hbWUsIF9ldmVudENhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50
QW5kVGVzdChlbGVtZW50LCBldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nLCBlbmRpdCkKK3sKKyAg
ICBmdW5jdGlvbiBfZXZlbnRDYWxsYmFjayhldmVudCkKKyAgICB7CisgICAgICAgIGxvZ1Jlc3Vs
dChldmFsKHRlc3RGdW5jU3RyaW5nKSwgIkVWRU5UKCIgKyBldmVudE5hbWUgKyAiKSBURVNUKCIg
KyB0ZXN0RnVuY1N0cmluZyArICIpIik7CisgICAgICAgIGlmIChlbmRpdCkKKyAgICAgICAgICAg
IGVuZFRlc3QoKTsgICAgCisgICAgfQorCisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2spOworfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRUZXN0
QW5kRW5kKGVsZW1lbnQsIGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcpCit7CisgICAgd2FpdEZv
ckV2ZW50QW5kVGVzdChlbGVtZW50LCBldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsK
K30KKyAgCit2YXIgdGVzdEVuZGVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIGVuZFRlc3QoKQorewor
ICAgIGNvbnNvbGVXcml0ZSgiRU5EIE9GIFRFU1QiKTsKKyAgICB0ZXN0RW5kZWQgPSB0cnVlOwor
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLm5vdGlmeURvbmUoKTsgICAgIAorfQorCitmdW5jdGlvbiBsb2dSZXN1bHQoc3Vj
Y2VzcywgdGV4dCkKK3sKKyAgICBpZiAoc3VjY2VzcykKKyAgICAgICAgY29uc29sZVdyaXRlKHRl
eHQgKyAiIDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+T0s8L3NwYW4+Iik7CisgICAgZWxzZQor
ICAgICAgICBjb25zb2xlV3JpdGUodGV4dCArICIgPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+RkFJ
TDwvc3Bhbj4iKTsKK30KKworZnVuY3Rpb24gY29uc29sZVdyaXRlKHRleHQpCit7CisgICAgaWYg
KHRlc3RFbmRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGxvZ0NvbnNvbGUoKS5pbm5lckhUTUwg
Kz0gdGV4dCArICI8YnI+IjsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNo
ZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CmluZGV4IDc1NDI1YTFmNzhhMzk4MThjM2QxNTUxODNj
MjFjYTA3YzVjZjdiOGYuLjVjZGE0ZGFjZTlmOGNlMjNhOGUxNmE1OTQzOTg3MDk5ZDIyM2JmMWIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL25hdmln
YXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVj
dGVkLnR4dApAQCAtNCw2ICs0LDcgQEAgbmF2aWdhdG9yLmFwcENvZGVOYW1lIGlzIE9LCiBuYXZp
Z2F0b3IuYXBwTmFtZSBpcyBPSwogbmF2aWdhdG9yLmFwcFZlcnNpb24gaXMgT0sKIG5hdmlnYXRv
ci5jb29raWVFbmFibGVkIGlzIE9LCituYXZpZ2F0b3IuZ2FtZXBhZHMgaXMgT0sKIG5hdmlnYXRv
ci5nZXRTdG9yYWdlVXBkYXRlcygpIGlzIE9LCiBuYXZpZ2F0b3IuamF2YUVuYWJsZWQoKSBpcyBP
SwogbmF2aWdhdG9yLmxhbmd1YWdlIGlzIE9LCkBAIC0yMSw2ICsyMiw3IEBAIG5hdmlnYXRvci5h
cHBDb2RlTmFtZSBpcyBPSwogbmF2aWdhdG9yLmFwcE5hbWUgaXMgT0sKIG5hdmlnYXRvci5hcHBW
ZXJzaW9uIGlzIE9LCiBuYXZpZ2F0b3IuY29va2llRW5hYmxlZCBpcyBPSworbmF2aWdhdG9yLmdh
bWVwYWRzIGlzIE9LCiBuYXZpZ2F0b3IuZ2V0U3RvcmFnZVVwZGF0ZXMoKSBpcyBPSwogbmF2aWdh
dG9yLmphdmFFbmFibGVkKCkgaXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZSBpcyBPSwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115845</attachid>
            <date>2011-11-18 12:09:07 -0800</date>
            <delta_ts>2011-11-18 13:17:17 -0800</delta_ts>
            <desc>vendor prefix, update Skippeds</desc>
            <filename>bug-71753-20111118120906.patch</filename>
            <type>text/plain</type>
            <size>31375</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwMzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDFmMGEyZjRmNDQ5ZWMy
YmY0NjdiNDEwMmVjNjIzOTg3MWQ4ZjZmZC4uNzRmZmI2MDRkNzQ2Mjc5ZjgyMWEwZDJmMDUxZGIy
MDI2OWQ4Y2NmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTE4ICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBJREwgY2hhbmdlcyBm
b3IgZ2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MTc1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElETCBjaGFuZ2VzIGFuZCBhc3NvY2lhdGVkIHBsdW1iaW5nIHRvIGV4cG9zZSBs
aXN0IG9mIGdhbWVwYWQgb2JqZWN0cworICAgICAgICBvbiBuYXZpZ2F0b3Igb2JqZWN0IChwZXIg
Y3VycmVudCBzcGVjKS4gRnVsbCBwYXRjaCBpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEuIE9ubHkgYmFzaWMgZXhpc3RlbmNlCisgICAgICAg
IHRlc3QgdW50aWwgbW9yZSBwbHVtYmluZyBpbiBmdXR1cmUgcGF0Y2hlcy4KKworICAgICAgICBU
ZXN0OiBnYW1lcGFkL2dhbWVwYWQtYXBpLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdEdhbWVwYWRz
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRHYW1lcGFkc0VuYWJsZWQpOgorICAgICAgICAqIHBhZ2UvR2FtZXBhZC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6R2FtZXBhZCk6CisgICAgICAgIChXZWJDb3JlOjpH
YW1lcGFkOjpheGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6OmJ1dHRvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6fkdhbWVwYWQpOgorICAgICAgICAqIHBhZ2UvR2FtZXBh
ZC5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0dhbWVwYWQuaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBwYWdlL0dhbWVwYWRMaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFk
TGlzdDo6fkdhbWVwYWRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6Omxlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpHYW1lcGFkTGlzdDo6aXRlbSk6CisgICAgICAgICogcGFnZS9HYW1lcGFkTGlzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6R2FtZXBhZExpc3Q6OkdhbWVwYWRMaXN0KToKKyAgICAgICAgKiBwYWdlL0dhbWVw
YWRMaXN0LmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRHYW1lcGFkcyk6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6CisKIDIwMTEtMTEtMTUg
IE5hdGUgQ2hhcGluICA8amFwaGV0QGNocm9taXVtLm9yZz4KIAogICAgICAgICBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QgaXMgbm93IHRoZSBvbmx5IFN1YnJlc291cmNlTG9hZGVyQ2xpZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDA4YTMwNDNlNzNlNDYzMmNiNDRiZTMxNjgzNTEzYTE1
ZjU4NzZkMzcuLmJmZjhiMmRiMWY5YmQ3YTZmMTMyYjNiNmMwODZlNmIwNDA2MGFjNzQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTEtMTggIFNjb3R0
IEdyYWhhbSAgPHNjb3R0bWdAY2hyb21pdW0ub3JnPgorCisgICAgICAgIElETCBjaGFuZ2VzIGZv
ciBnYW1lcGFkIHN1cHBvcnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxNzUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVXBkYXRlIHRvIHVzZSB2ZW5kb3ItcHJlZml4ZWQgZW5hYmxlLgorCisgICAgICAg
ICogc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJ1bnRp
bWVGZWF0dXJlczo6ZW5hYmxlR2FtZXBhZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJ1bnRpbWVG
ZWF0dXJlczo6aXNHYW1lcGFkRW5hYmxlZCk6CisKIDIwMTEtMTEtMTUgIEFuZGVycyBDYXJsc3Nv
biAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBIb3N0V2luZG93IHNjcmVlblRvV2lu
ZG93L3dpbmRvd1RvU2NyZWVuIHNob3VsZCBiZSBzY3JlZW5Ub1Jvb3RWaWV3L3Jvb3RWaWV3VG9T
Y3JlZW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBjMDJkZjZjOWJiZjVhZTU2Zjc2ZTZiZGU0OTdjODdm
MDVmYjRkYjdlLi4wNjQ0MzRkZGM3NDQ5MzNkZDA1YWM1NGNkNmJiNmU2NmYwZTliNjUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS5neXBpCkBAIC0xMzk4LDYgKzEzOTgsOCBAQAogICAgICAgICAgICAgJ3BhZ2UvRE9N
U2VsZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAncGFnZS9ET01XaW5kb3cuaWRsJywKICAgICAg
ICAgICAgICdwYWdlL0V2ZW50U291cmNlLmlkbCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFk
LmlkbCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlzdC5pZGwnLAogICAgICAgICAgICAg
J3BhZ2UvR2VvbG9jYXRpb24uaWRsJywKICAgICAgICAgICAgICdwYWdlL0dlb3Bvc2l0aW9uLmlk
bCcsCiAgICAgICAgICAgICAncGFnZS9IaXN0b3J5LmlkbCcsCkBAIC0yOTQ2LDYgKzI5NDgsMTAg
QEAKICAgICAgICAgICAgICdwYWdlL0ZyYW1lQWN0aW9uU2NoZWR1bGVyLmgnLAogICAgICAgICAg
ICAgJ3BhZ2UvRnJhbWVUcmVlLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9GcmFtZVZpZXcuY3Bw
JywKKyAgICAgICAgICAgICdwYWdlL0dhbWVwYWQuY3BwJywKKyAgICAgICAgICAgICdwYWdlL0dh
bWVwYWQuaCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlzdC5jcHAnLAorICAgICAgICAg
ICAgJ3BhZ2UvR2FtZXBhZExpc3QuaCcsCiAgICAgICAgICAgICAncGFnZS9HZW9sb2NhdGlvbi5j
cHAnLAogICAgICAgICAgICAgJ3BhZ2UvR2VvbG9jYXRpb25Db250cm9sbGVyLmNwcCcsCiAgICAg
ICAgICAgICAncGFnZS9Hcm91cFNldHRpbmdzLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IGEw
NjNlMDQyMWQ0OTg5ZTkxYTlkZjg2YmQxNDhmN2ZjMTQ2NDUwM2UuLjg1NDY3NTA3MjhmMThhZTg1
MzBhNjE5NTA0NzJiZmM4Mzk4NmFiYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oCkBAIC0xNzAsOCArMTcw
LDggQEAgcHVibGljOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoR0FNRVBBRCkKLSAgICBzdGF0aWMg
dm9pZCBzZXRHYW1lcGFkc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNHYW1lcGFkRW5hYmxl
ZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRpYyBib29sIGdhbWVwYWRzRW5hYmxlZCgpIHsgcmV0
dXJuIGlzR2FtZXBhZEVuYWJsZWQ7IH0KKyAgICBzdGF0aWMgdm9pZCBzZXRXZWJraXRHYW1lcGFk
c0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsgaXNHYW1lcGFkRW5hYmxlZCA9IGlzRW5hYmxlZDsg
fQorICAgIHN0YXRpYyBib29sIHdlYmtpdEdhbWVwYWRzRW5hYmxlZCgpIHsgcmV0dXJuIGlzR2Ft
ZXBhZEVuYWJsZWQ7IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKFFVT1RBKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2Ft
ZXBhZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDVlZDE4ZGRkZTFjN2E2YWIwM2FhMjI4ZGVlMWM3MmQ0OGI1
NjJkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5jcHAK
QEAgLTAsMCArMSw1NSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6
CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQor
Ly8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdh
bWVwYWQuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2FtZXBhZDo6R2FtZXBhZCgpCit7
Cit9CisKK3ZvaWQgR2FtZXBhZDo6YXhlcyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpCit7
CisgICAgbV9heGVzLnJlc2l6ZShjb3VudCk7CisgICAgc3RkOjpjb3B5KGRhdGEsIGRhdGEgKyBj
b3VudCwgbV9heGVzLmJlZ2luKCkpOworfQorCit2b2lkIEdhbWVwYWQ6OmJ1dHRvbnModW5zaWdu
ZWQgY291bnQsIGZsb2F0KiBkYXRhKQoreworICAgIG1fYnV0dG9ucy5yZXNpemUoY291bnQpOwor
ICAgIHN0ZDo6Y29weShkYXRhLCBkYXRhICsgY291bnQsIG1fYnV0dG9ucy5iZWdpbigpKTsKK30K
KworR2FtZXBhZDo6fkdhbWVwYWQoKQoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2FtZXBhZC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2I1ZjE5YzM0OTA5NmRjNGQwZjg4MTZiOTUxOGMxZjg5OThiZmFjOAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8vIENv
cHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisv
LyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisv
LyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAor
Ly8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisK
KyNpZm5kZWYgR2FtZXBhZF9oCisjZGVmaW5lIEdhbWVwYWRfaAorCisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2FtZXBhZDogcHVi
bGljIFJlZkNvdW50ZWQ8R2FtZXBhZD4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEdhbWVwYWQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEdh
bWVwYWQpOworICAgIH0KKyAgICB+R2FtZXBhZCgpOworCisgICAgdHlwZWRlZiBWZWN0b3I8Zmxv
YXQ+IEZsb2F0VmVjdG9yOworCisgICAgY29uc3QgU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faWQ7IH0KKyAgICB2b2lkIGlkKGNvbnN0IFN0cmluZyYgaWQpIHsgbV9pZCA9IGlkOyB9CisK
KyAgICB1bnNpZ25lZCBpbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1faW5kZXg7IH0KKyAgICB2b2lk
IGluZGV4KHVuc2lnbmVkIHZhbCkgeyBtX2luZGV4ID0gdmFsOyB9CisKKyAgICB1bnNpZ25lZCBs
b25nIGxvbmcgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KKyAgICB2
b2lkIHRpbWVzdGFtcCh1bnNpZ25lZCBsb25nIGxvbmcgdmFsKSB7IG1fdGltZXN0YW1wID0gdmFs
OyB9CisKKyAgICBjb25zdCBGbG9hdFZlY3RvciYgYXhlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXhl
czsgfQorICAgIHZvaWQgYXhlcyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpOworCisgICAg
Y29uc3QgRmxvYXRWZWN0b3ImIGJ1dHRvbnMoKSBjb25zdCB7IHJldHVybiBtX2J1dHRvbnM7IH0K
KyAgICB2b2lkIGJ1dHRvbnModW5zaWduZWQgY291bnQsIGZsb2F0KiBkYXRhKTsKKworcHJpdmF0
ZToKKyAgICBHYW1lcGFkKCk7CisgICAgU3RyaW5nIG1faWQ7CisgICAgdW5zaWduZWQgbV9pbmRl
eDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgbV90aW1lc3RhbXA7CisgICAgRmxvYXRWZWN0b3Ig
bV9heGVzOworICAgIEZsb2F0VmVjdG9yIG1fYnV0dG9uczsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEdhbWVwYWRfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9HYW1lcGFkLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5pZGwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjE0OWIwNWY1ZTUyYjlkZWE1ZDU0OWFhZjcxZjM0NmY1MzczZDA3ZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZC5pZGwKQEAgLTAsMCArMSwz
NiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
Ky8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8g
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8v
IERBTUFHRS4KKworbW9kdWxlIGRvbSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25k
aXRpb25hbD1HQU1FUEFECisgICAgXSBHYW1lcGFkIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBpZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgaW5kZXg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcg
dGltZXN0YW1wOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXRbXSBheGVzOworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXRbXSBidXR0b25zOworICAgIH07CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY5MzRlZGQyNTQ0ODYxMzc5
MGY4OTYzNjAxMjI0ZDU0MTFjMGRhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2FtZXBhZExpc3QuY3BwCkBAIC0wLDAgKzEsNTYgQEAKKy8vIENvcHlyaWdodCAoQykg
MjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQor
Ly8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgorCisjaW5jbHVkZSAiR2FtZXBhZC5o
IgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2FtZXBh
ZExpc3Q6On5HYW1lcGFkTGlzdCgpCit7Cit9CisKK3ZvaWQgR2FtZXBhZExpc3Q6OnNldCh1bnNp
Z25lZCBpbmRleCwgUGFzc1JlZlB0cjxHYW1lcGFkPiBnYW1lcGFkKQoreworICAgIGlmIChpbmRl
eCA+PSBrTWF4aW11bUdhbWVwYWRzKQorICAgICAgICByZXR1cm47CisgICAgbV9pdGVtc1tpbmRl
eF0gPSBnYW1lcGFkOworfQorCit1bnNpZ25lZCBHYW1lcGFkTGlzdDo6bGVuZ3RoKCkgY29uc3QK
K3sKKyAgICByZXR1cm4ga01heGltdW1HYW1lcGFkczsKK30KKworR2FtZXBhZCogR2FtZXBhZExp
c3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpCit7CisgICAgcmV0dXJuIGluZGV4IDwgbGVuZ3RoKCkg
PyBtX2l0ZW1zW2luZGV4XS5nZXQoKSA6IDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9HYW1lcGFkTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNhNDJlNzlmZjVjNjkxODdjZjI0OWIwZjdkMGU4YjViNTJlYzQ1MmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmgKQEAgLTAsMCAr
MSw1MyBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8g
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisv
LyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgor
Ly8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gK
Ky8vIERBTUFHRS4KKworI2lmbmRlZiBHYW1lcGFkTGlzdF9oCisjZGVmaW5lIEdhbWVwYWRMaXN0
X2gKKworI2luY2x1ZGUgIkdhbWVwYWQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxHYW1lcGFkPiA+IEdh
bWVwYWRWZWN0b3I7CisKK2NsYXNzIEdhbWVwYWRMaXN0IDogcHVibGljIFJlZkNvdW50ZWQ8R2Ft
ZXBhZExpc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHYW1lcGFkTGlzdD4g
Y3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEdhbWVwYWRMaXN0KTsgfQorICAgIH5HYW1l
cGFkTGlzdCgpOworCisgICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIFBhc3NSZWZQdHI8R2Ft
ZXBhZD4pOworICAgIEdhbWVwYWQqIGl0ZW0odW5zaWduZWQgaW5kZXgpOworICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIGVudW0geyBrTWF4aW11bUdhbWVwYWRz
ID0gNCB9OworICAgIEdhbWVwYWRMaXN0KCkgeyB9CisgICAgUmVmUHRyPEdhbWVwYWQ+IG1faXRl
bXNba01heGltdW1HYW1lcGFkc107Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBHYW1lcGFkTGlzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dh
bWVwYWRMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRsCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI0MmI4MTVkZmFmNDI3ODY1NzNiZjUxYWI1MzhlZjRmYTNkZjU0MjgKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmlkbApAQCAtMCwwICsx
LDM0IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8v
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisv
LyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAor
Ly8gREFNQUdFLgorCittb2R1bGUgZG9tIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENv
bmRpdGlvbmFsPUdBTUVQQUQsCisgICAgICAgIEhhc0luZGV4R2V0dGVyCisgICAgXSBHYW1lcGFk
TGlzdCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGxlbmd0aDsK
KyAgICAgICAgR2FtZXBhZCBpdGVtKGluIFtPcHRpb25hbD1DYWxsV2l0aERlZmF1bHRWYWx1ZV0g
dW5zaWduZWQgbG9uZyBpbmRleCk7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
Y3BwCmluZGV4IDU3ZDM4ZmYwMzQ4MjQzZTRhYzQ1MDBjYTEwZTk0ZTcwYWE1ZWMxYzUuLjMyOTQ2
NzEzYzBiNmNlMjE3MmRjYjZlMjMxOTU4NzcyN2M3OTg2MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmln
YXRvci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUg
IkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRl
ICJHYW1lcGFkTGlzdC5oIgogI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTW91
c2VMb2NrYWJsZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKQEAgLTI4OSw0ICsyOTAsMTIgQEAgdm9p
ZCBOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRpYShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBh
c3NSZWZQdHI8TmF2aWdhdG9yVXMKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKEdBTUVQQUQpCitH
YW1lcGFkTGlzdCogTmF2aWdhdG9yOjp3ZWJraXRHYW1lcGFkcygpCit7CisgICAgLy8gU3R1YmJl
ZCB1bnRpbCBwbGF0Zm9ybS8gY2hhbmdlcyBsYW5kZWQuCisgICAgcmV0dXJuIDA7Cit9CisjZW5k
aWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXgg
ZGFmMDlkNzk2N2U3NTNiMTNhNzViNmRmMmZmOTE3OGU4NzdmZGQ4Ni4uOTY0OGE5YjRiNTE2NjQ1
NWUzNWY2MDgxZjc4ZGM1NmUyZDAzYTQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC0z
MSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIERPTU1pbWVUeXBlQXJyYXk7
CiBjbGFzcyBET01QbHVnaW5BcnJheTsKIGNsYXNzIEZyYW1lOworY2xhc3MgR2FtZXBhZExpc3Q7
CiBjbGFzcyBHZW9sb2NhdGlvbjsKIGNsYXNzIE1vdXNlTG9ja2FibGU7CiBjbGFzcyBOYXZpZ2F0
b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOwpAQCAtNzQsNiArNzUsMTAgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCB3ZWJraXRHZXRVc2VyTWVkaWEoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQ
YXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFjaz4sIFBhc3NSZWZQdHI8
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKICNlbmRp
ZgogCisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgR2FtZXBhZExpc3QqIHdlYmtpdEdhbWVwYWRz
KCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOYXZpZ2F0b3IoRnJhbWUqKTsKICAgICBGcmFt
ZSogbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAppbmRleCA2NTkxYWJlNWJhMWZl
NDI1NGNlMzVmM2Y4M2MzZmE0NmU2OWI0NTY3Li45NzgwYjc5OWI4N2RjNjYwMjU1NzJjYzRmNDcx
ODliMjg1ZTZlNTQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCkBAIC02MSw2ICs2MSwx
MCBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW4gW0NhbGxiYWNrPUZ1bmN0aW9uT25seSwgT3B0aW9u
YWxdIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaykKICAgICAg
ICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEVOQUJM
RV9HQU1FUEFEKSAmJiBFTkFCTEVfR0FNRVBBRAorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
W0VuYWJsZWRBdFJ1bnRpbWVdIEdhbWVwYWRMaXN0IHdlYmtpdEdhbWVwYWRzOworI2VuZGlmCiAg
ICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVu
dGltZUZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVG
ZWF0dXJlcy5jcHAKaW5kZXggMTI4YTZmYWUxOGVmYzMxMjNhOGY4M2EwMjc2NjFlMzFiYzQxODhm
OC4uNjc1ZTJhMmQxNWM1MGEzOTMwZjQ2MTExNGJmY2YyNjIyMTk3MWY2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCkBAIC00MTcs
NyArNDE3LDcgQEAgYm9vbCBXZWJSdW50aW1lRmVhdHVyZXM6OmlzVmlkZW9UcmFja0VuYWJsZWQo
KQogdm9pZCBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZUdhbWVwYWQoYm9vbCBlbmFibGUpCiB7
CiAjaWYgRU5BQkxFKEdBTUVQQUQpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0R2Ft
ZXBhZHNFbmFibGVkKGVuYWJsZSk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0V2Vi
a2l0R2FtZXBhZHNFbmFibGVkKGVuYWJsZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFi
bGUpOwogI2VuZGlmCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJSdW50aW1lRmVhdHVyZXM6
OmVuYWJsZUdhbWVwYWQoYm9vbCBlbmFibGUpCiBib29sIFdlYlJ1bnRpbWVGZWF0dXJlczo6aXNH
YW1lcGFkRW5hYmxlZCgpCiB7CiAjaWYgRU5BQkxFKEdBTUVQQUQpCi0gICAgcmV0dXJuIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmdhbWVwYWRzRW5hYmxlZCgpOworICAgIHJldHVybiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRHYW1lcGFkc0VuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggYmM0OWY1OTk3ODYxZGRjYjUzODdhZjE0ZTdjN2ZmODE2ZTgwZTY2Yy4u
MWE0ZDk3NzVkZWY1NTA1ODMzNWJjZmJlYThhZmY2ODg1YjIwNmIwZSAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEx
LTExLTE4ICBTY290dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBJ
REwgY2hhbmdlcyBmb3IgZ2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJ1bnRpbWUgZW5hYmxlIGdhbWVwYWQgc3VwcG9ydC4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHA6CisgICAgICAg
IChUZXN0U2hlbGw6OlRlc3RTaGVsbCk6CisKIDIwMTEtMTEtMTUgIERhdmlkIEtpbHplciAgPGRk
a2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCB1c2UgRmlsZTo6U2x1cnAgZm9yIHJ1
bi1sZWFrcyB1bml0IHRlc3RzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsLmNwcAppbmRleCBkZTJmMmM4YTI0ZGI1OTg2M2Y2MmFmYTZhMTA5NWMwMmIxYjYwODI1Li4w
YTBkYTE2ZjUyZDA5YzNjMWI4OGM5OGFhYmZhYjU4MGM5OGM1YjAxIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTEyMiw2ICsxMjIsNyBAQCBUZXN0
U2hlbGw6OlRlc3RTaGVsbChib29sIHRlc3RTaGVsbE1vZGUpCiAgICAgV2ViUnVudGltZUZlYXR1
cmVzOjplbmFibGVNZWRpYVN0cmVhbSh0cnVlKTsKICAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVu
YWJsZVdlYkF1ZGlvKHRydWUpOyAKICAgICBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZVZpZGVv
VHJhY2sodHJ1ZSk7CisgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVHYW1lcGFkKHRydWUp
OwogCiAgICAgbV93ZWJQZXJtaXNzaW9ucyA9IGFkb3B0UHRyKG5ldyBXZWJQZXJtaXNzaW9ucyh0
aGlzKSk7CiAgICAgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcih0aGlzKSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjA0Yzc3MGNkNDE4MWRmNzY2NTVl
NjdmODU1NWU5YWUxMjcwYzk2NS4uYzViNGJkMDZjMWZjOWViN2FmODU5NmYzNzZlNzY3MjAyMTk3
NjZkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDExLTExLTE4ICBTY290dCBHcmFoYW0gIDxz
Y290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBJREwgY2hhbmdlcyBmb3IgZ2FtZXBhZCBz
dXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MTc1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Z2FtZXBhZC9nYW1lcGFkLWFwaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGdhbWVw
YWQvZ2FtZXBhZC1hcGkuaHRtbDogQWRkZWQuCisgICAgICAgICogZ2FtZXBhZC9nYW1lcGFkLXRl
c3QuanM6IEFkZGVkLgorICAgICAgICAobG9nQ29uc29sZSk6CisgICAgICAgICh0ZXN0RXhwZWN0
ZWQpOgorICAgICAgICAocmVwb3J0RXhwZWN0ZWQpOgorICAgICAgICAod2FpdEZvckV2ZW50QW5k
RW5kKToKKyAgICAgICAgKHdhaXRGb3JFdmVudC5fZXZlbnRDYWxsYmFjayk6CisgICAgICAgICh3
YWl0Rm9yRXZlbnQpOgorICAgICAgICAod2FpdEZvckV2ZW50QW5kVGVzdC5fZXZlbnRDYWxsYmFj
ayk6CisgICAgICAgICh3YWl0Rm9yRXZlbnRBbmRUZXN0KToKKyAgICAgICAgKHdhaXRGb3JFdmVu
dFRlc3RBbmRFbmQpOgorICAgICAgICAoZW5kVGVzdCk6CisgICAgICAgIChsb2dSZXN1bHQpOgor
ICAgICAgICAoY29uc29sZVdyaXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0
L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Nr
aXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZv
cm0vd2luY2Fpcm8vU2tpcHBlZDoKKwogMjAxMS0xMS0xNSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEwMDI5MS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGktZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFwaS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZDkwMGViZjNhZWQ3ZDA1MGJlZDgzMmVhZmNjMDRmMGE1NGQwNWM0ZgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGktZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMyBAQAorRVhQRUNURUQgKG5hdmlnYXRvci53ZWJraXRHYW1lcGFkcyAh
PT0gJ3VuZGVmaW5lZCcpIE9LCitFTkQgT0YgVEVTVAorTWFrZSBzdXJlIHRoZSBtYWluIHBvbGxp
bmcgYWNjZXNzIHBvaW50IGV4aXN0cyBvbiBuYXZpZ2F0b3IuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBpLmh0bWwgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVw
YWQtYXBpLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjVmMGUzNDY0NGI2YzFjZGVkNjk5MDJkMDVkMzdmM2M1
MDdhOWZhZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1h
cGkuaHRtbApAQCAtMCwwICsxLDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJvZHk+Cis8c2NyaXB0
IHNyYz0iZ2FtZXBhZC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgdGVzdEV4cGVj
dGVkKCJuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHMiLCB1bmRlZmluZWQsICIhPT0iKTsKKyAgICBl
bmRUZXN0KCk7Cis8L3NjcmlwdD4KKzxwPk1ha2Ugc3VyZSB0aGUgbWFpbiBwb2xsaW5nIGFjY2Vz
cyBwb2ludCBleGlzdHMgb24gbmF2aWdhdG9yLjwvcD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9n
YW1lcGFkLXRlc3QuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjIwMWE5NzFmNjU0Y2JmMTQwNWVlOGJkZWYyMTBl
MWY5MGM0NjNiNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBh
ZC10ZXN0LmpzCkBAIC0wLDAgKzEsMTI2IEBACit2YXIgY29uc29sZSA9IG51bGw7Cit2YXIgcHJp
bnRGdWxsVGVzdERldGFpbHMgPSB0cnVlOyAvLyBUaGlzIGlzIG9wdGlvbmFseSBzd2l0Y2hlZCBv
ZiBieSB0ZXN0IHdob3NlIHRlc3RlZCB2YWx1ZXMgY2FuIGRpZmZlci4gKHNlZSBkaXNhYmxlRnVs
bFRlc3REZXRhaWxzUHJpbnRpbmcoKSkKKworbG9nQ29uc29sZSgpOworCitpZiAod2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVu
Y3Rpb24gbG9nQ29uc29sZSgpCit7CisgICAgaWYgKCFjb25zb2xlICYmIGRvY3VtZW50LmJvZHkp
IHsKKyAgICAgICAgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAg
ICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOworICAgIH0KKyAgICByZXR1
cm4gY29uc29sZTsKK30KKworZnVuY3Rpb24gdGVzdEV4cGVjdGVkKHRlc3RGdW5jU3RyaW5nLCBl
eHBlY3RlZCwgY29tcGFyaXNvbikKK3sKKyAgICB0cnkgeworICAgICAgICB2YXIgb2JzZXJ2ZWQg
PSBldmFsKHRlc3RGdW5jU3RyaW5nKTsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBjb25z
b2xlV3JpdGUoZXgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChjb21w
YXJpc29uID09PSB1bmRlZmluZWQpCisgICAgICAgIGNvbXBhcmlzb24gPSAnPT0nOworCisgICAg
dmFyIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBzd2l0Y2ggKGNvbXBhcmlzb24pCisgICAgeworICAg
ICAgICBjYXNlICc8JzogIHN1Y2Nlc3MgPSBvYnNlcnZlZCA8ICBleHBlY3RlZDsgYnJlYWs7Cisg
ICAgICAgIGNhc2UgJzw9Jzogc3VjY2VzcyA9IG9ic2VydmVkIDw9IGV4cGVjdGVkOyBicmVhazsK
KyAgICAgICAgY2FzZSAnPic6ICBzdWNjZXNzID0gb2JzZXJ2ZWQgPiAgZXhwZWN0ZWQ7IGJyZWFr
OworICAgICAgICBjYXNlICc+PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA+PSBleHBlY3RlZDsgYnJl
YWs7CisgICAgICAgIGNhc2UgJyE9Jzogc3VjY2VzcyA9IG9ic2VydmVkICE9IGV4cGVjdGVkOyBi
cmVhazsKKyAgICAgICAgY2FzZSAnIT09Jzogc3VjY2VzcyA9IG9ic2VydmVkICE9PSBleHBlY3Rl
ZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz09Jzogc3VjY2VzcyA9IG9ic2VydmVkID09IGV4cGVj
dGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPT09Jzogc3VjY2VzcyA9IG9ic2VydmVkID09PSBl
eHBlY3RlZDsgYnJlYWs7CisgICAgfQorICAgIAorICAgIHJlcG9ydEV4cGVjdGVkKHN1Y2Nlc3Ms
IHRlc3RGdW5jU3RyaW5nLCBjb21wYXJpc29uLCBleHBlY3RlZCwgb2JzZXJ2ZWQpCit9CisKK3Zh
ciB0ZXN0TnVtYmVyID0gMDsKKworZnVuY3Rpb24gcmVwb3J0RXhwZWN0ZWQoc3VjY2VzcywgdGVz
dEZ1bmNTdHJpbmcsIGNvbXBhcmlzb24sIGV4cGVjdGVkLCBvYnNlcnZlZCkKK3sKKyAgICB0ZXN0
TnVtYmVyKys7CisKKyAgICB2YXIgbXNnID0gIlRlc3QgIiArIHRlc3ROdW1iZXI7CisKKyAgICBp
ZiAocHJpbnRGdWxsVGVzdERldGFpbHMgfHwgIXN1Y2Nlc3MpCisgICAgICAgIG1zZyA9ICJFWFBF
Q1RFRCAoPGVtPiIgKyB0ZXN0RnVuY1N0cmluZyArICIgPC9lbT4iICsgY29tcGFyaXNvbiArICIg
JzxlbT4iICsgZXhwZWN0ZWQgKyAiPC9lbT4nKSI7CisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAg
ICAgIG1zZyArPSAgIiwgT0JTRVJWRUQgJzxlbT4iICsgb2JzZXJ2ZWQgKyAiPC9lbT4nIjsKKwor
ICAgIGxvZ1Jlc3VsdChzdWNjZXNzLCBtc2cpOworfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRB
bmRFbmQoZWxlbWVudCwgZXZlbnROYW1lLCBmdW5jU3RyaW5nKQoreworICAgIHdhaXRGb3JFdmVu
dChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmNTdHJpbmcsIHRydWUpCit9CisKK2Z1bmN0aW9uIHdh
aXRGb3JFdmVudChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQoreworICAgIGZ1bmN0
aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZVdyaXRlKCJF
VkVOVCgiICsgZXZlbnROYW1lICsgIikiKTsKKworICAgICAgICBpZiAoZnVuYykKKyAgICAgICAg
ICAgIGZ1bmMoZXZlbnQpOworICAgICAgICAKKyAgICAgICAgaWYgKGVuZGl0KQorICAgICAgICAg
ICAgZW5kVGVzdCgpOyAgICAKKyAgICB9CisKKyAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFu
ZFRlc3QoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZywgZW5kaXQpCit7CisgICAg
ZnVuY3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQpCisgICAgeworICAgICAgICBsb2dSZXN1bHQo
ZXZhbCh0ZXN0RnVuY1N0cmluZyksICJFVkVOVCgiICsgZXZlbnROYW1lICsgIikgVEVTVCgiICsg
dGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAgICBl
bmRUZXN0KCk7ICAgIAorICAgIH0KKworICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWUsIF9ldmVudENhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50VGVzdEFu
ZEVuZChlbGVtZW50LCBldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nKQoreworICAgIHdhaXRGb3JF
dmVudEFuZFRlc3QoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZywgdHJ1ZSk7Cit9
CisgIAordmFyIHRlc3RFbmRlZCA9IGZhbHNlOworCitmdW5jdGlvbiBlbmRUZXN0KCkKK3sKKyAg
ICBjb25zb2xlV3JpdGUoIkVORCBPRiBURVNUIik7CisgICAgdGVzdEVuZGVkID0gdHJ1ZTsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7ICAgICAKK30KKworZnVuY3Rpb24gbG9nUmVzdWx0KHN1Y2Nl
c3MsIHRleHQpCit7CisgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgIGNvbnNvbGVXcml0ZSh0ZXh0
ICsgIiA8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPk9LPC9zcGFuPiIpOworICAgIGVsc2UKKyAg
ICAgICAgY29uc29sZVdyaXRlKHRleHQgKyAiIDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPkZBSUw8
L3NwYW4+Iik7Cit9CisKK2Z1bmN0aW9uIGNvbnNvbGVXcml0ZSh0ZXh0KQoreworICAgIGlmICh0
ZXN0RW5kZWQpCisgICAgICAgIHJldHVybjsKKyAgICBsb2dDb25zb2xlKCkuaW5uZXJIVE1MICs9
IHRleHQgKyAiPGJyPiI7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVk
LW5vLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCA3NTQyNWExZjc4YTM5ODE4YzNkMTU1MTgzYzIx
Y2EwN2M1Y2Y3YjhmLi4zY2Y1MDhhZTZmNzg1NGEyMzYxOGNjODcwYjU3MzA4NDU2MzYwN2Y1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9uYXZpZ2F0
b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3Rl
ZC50eHQKQEAgLTQsNiArNCw3IEBAIG5hdmlnYXRvci5hcHBDb2RlTmFtZSBpcyBPSwogbmF2aWdh
dG9yLmFwcE5hbWUgaXMgT0sKIG5hdmlnYXRvci5hcHBWZXJzaW9uIGlzIE9LCiBuYXZpZ2F0b3Iu
Y29va2llRW5hYmxlZCBpcyBPSworbmF2aWdhdG9yLndlYmtpdEdhbWVwYWRzIGlzIE9LCiBuYXZp
Z2F0b3IuZ2V0U3RvcmFnZVVwZGF0ZXMoKSBpcyBPSwogbmF2aWdhdG9yLmphdmFFbmFibGVkKCkg
aXMgT0sKIG5hdmlnYXRvci5sYW5ndWFnZSBpcyBPSwpAQCAtMjEsNiArMjIsNyBAQCBuYXZpZ2F0
b3IuYXBwQ29kZU5hbWUgaXMgT0sKIG5hdmlnYXRvci5hcHBOYW1lIGlzIE9LCiBuYXZpZ2F0b3Iu
YXBwVmVyc2lvbiBpcyBPSwogbmF2aWdhdG9yLmNvb2tpZUVuYWJsZWQgaXMgT0sKK25hdmlnYXRv
ci53ZWJraXRHYW1lcGFkcyBpcyBPSwogbmF2aWdhdG9yLmdldFN0b3JhZ2VVcGRhdGVzKCkgaXMg
T0sKIG5hdmlnYXRvci5qYXZhRW5hYmxlZCgpIGlzIE9LCiBuYXZpZ2F0b3IubGFuZ3VhZ2UgaXMg
T0sKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKaW5kZXggMDJmMDI2Mzk0ZmQ5MThhNWJhZTFjYmU0
MDE1MWRlMjdhYjNmNDZmNi4uMGEyZjA0ODJhOWI0MzY4MDFkOTk0ZTlkOGZlMjA3ZTNjMWJjNmQy
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1NraXBwZWQKQEAgLTE5MDYsNiArMTkwNiw5IEBAIGZhc3Qv
Zm9ybXMvbW9udGgKIGZhc3QvZm9ybXMvdGltZQogZmFzdC9mb3Jtcy93ZWVrCiAKKyMgRU5BQkxF
X0dBTUVQQUQgbm90IGVuYWJsZWQuCitnYW1lcGFkLworCiAjIE11dGF0aW9uT2JzZXJ2ZXJzIGFy
ZSBuZXQgeWV0IGVuYWJsZWQuIGh0dHA6Ly93ZWJraXQub3JnL2IvNjg3MjkKIGZhc3QvbXV0YXRp
b24KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAppbmRleCA2ZTFlOGUxMTI5ODAwMDhmNmE4OWFj
M2NhZDQ3ZjE0M2ZlZjIzOTdlLi5jMGM2NTgxMWExYmJmZjIyMGY3MTNhZTRiNTM0N2UxMTdmZjFk
MTM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApAQCAtMjYxLDYgKzI2MSw5IEBAIGZhc3Qv
Zm9ybXMvbW9udGgKIGZhc3QvZm9ybXMvdGltZQogZmFzdC9mb3Jtcy93ZWVrCiAKKyMgRU5BQkxF
X0dBTUVQQUQgbm90IGVuYWJsZWQuCitnYW1lcGFkLworCiAjIFNwZWVjaCBpbnB1dCBpcyBub3Qg
eWV0IGVuYWJsZWQuCiBmYXN0L3NwZWVjaAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCmluZGV4
IDgzZjQ0MGU3M2Q1MDY2NDliMDMzMGNjOGMzMDlmOWFhYjBkNzNkZGYuLjg5NjNiZThkYmViYmNh
MTc4ZGU1ZWFlMWY3OTJmMTBjMjE0NDI3OTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCkBA
IC0yMTEsNiArMjExLDkgQEAgZmFzdC9mb3Jtcy9tb250aAogZmFzdC9mb3Jtcy90aW1lCiBmYXN0
L2Zvcm1zL3dlZWsKIAorIyBFTkFCTEVfR0FNRVBBRCBub3QgZW5hYmxlZC4KK2dhbWVwYWQvCisK
ICMgU3BlZWNoIGlucHV0IGlzIG5vdCB5ZXQgZW5hYmxlZC4KIGZhc3Qvc3BlZWNoCiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDI0NTQ1ZThmMWU3MGQzOWQ0ZTMwZWNmNzlmZjA1M2ZiZGQz
NWFhOWMuLjYzZTZlNDdmMTQxMWVkZmNiZmFlMDExMDdkMjE4M2M4Y2NiMmMwZWQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvU2tpcHBlZApAQCAtODksNiArODksOSBAQCBmYXN0L2Zvcm1zL21vbnRoCiBmYXN0
L2Zvcm1zL3RpbWUKIGZhc3QvZm9ybXMvd2VlawogCisjIEVOQUJMRV9HQU1FUEFEIG5vdCBlbmFi
bGVkLgorZ2FtZXBhZC8KKwogIyBFTkFCTEUoSU5QVVRfU1BFRUNIKSBpcyBkaXNhYmxlZC4KIGZh
c3Qvc3BlZWNoCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVk
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKaW5kZXggYWNiOTIwY2RmZjE4MzMy
OTEzOTlhY2FmNTQ2NzQ3ZTAzNTAwMjM2My4uMGJiN2JjMGM1OTkzOGNiNGNmMzgxOWI1MWVkNGE0
Yzk0NWU2ZGVjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQKQEAgLTExMjIsNiArMTEyMiw5
IEBAIGZhc3QvZm9ybXMvbW9udGgKIGZhc3QvZm9ybXMvdGltZQogZmFzdC9mb3Jtcy93ZWVrCiAK
KyMgRU5BQkxFX0dBTUVQQUQgbm90IGVuYWJsZWQuCitnYW1lcGFkLworCiAjIFNwZWVjaCBpbnB1
dCBpcyBub3QgeWV0IGVuYWJsZWQuCiBmYXN0L3NwZWVjaAogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2lu
Y2Fpcm8vU2tpcHBlZAppbmRleCAyMGY5YTYwNGM2ZGVhNjA5YWUwMTNjYjA5YzYzMDVjYjE5YTBj
YjRlLi45MDkxMTA0MDQ2Zjg1MDQzNGFjYTc0MTFiNjlmODJhY2UwYjQzYmQ3IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQKQEAgLTE2MzksNiArMTYzOSw5IEBAIGZhc3QvZm9y
bXMvbW9udGgKIGZhc3QvZm9ybXMvdGltZQogZmFzdC9mb3Jtcy93ZWVrCiAKKyMgRU5BQkxFX0dB
TUVQQUQgbm90IGVuYWJsZWQuCitnYW1lcGFkLworCiAjIFNwZWVjaCBpbnB1dCBpcyBub3QgeWV0
IGVuYWJsZWQuCiBmYXN0L3NwZWVjaAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115857</attachid>
            <date>2011-11-18 13:17:21 -0800</date>
            <delta_ts>2011-11-18 15:36:42 -0800</delta_ts>
            <desc>rebase</desc>
            <filename>bug-71753-20111118131720.patch</filename>
            <type>text/plain</type>
            <size>31449</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVlMTU2MGVlNDA1OTJj
NjVmMTdlZWIwMTQ2OWIyZjgyZDVkNTBhOS4uZDA2MWMxN2M0YTQ1ZTZlODQ1MjNmNWFmNTZiZDJm
YzY1ZTc0ZjViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTE4ICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBJREwgY2hhbmdlcyBm
b3IgZ2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MTc1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElETCBjaGFuZ2VzIGFuZCBhc3NvY2lhdGVkIHBsdW1iaW5nIHRvIGV4cG9zZSBs
aXN0IG9mIGdhbWVwYWQgb2JqZWN0cworICAgICAgICBvbiBuYXZpZ2F0b3Igb2JqZWN0IChwZXIg
Y3VycmVudCBzcGVjKS4gRnVsbCBwYXRjaCBpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEuIE9ubHkgYmFzaWMgZXhpc3RlbmNlCisgICAgICAg
IHRlc3QgdW50aWwgbW9yZSBwbHVtYmluZyBpbiBmdXR1cmUgcGF0Y2hlcy4KKworICAgICAgICBU
ZXN0OiBnYW1lcGFkL2dhbWVwYWQtYXBpLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdEdhbWVwYWRz
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRHYW1lcGFkc0VuYWJsZWQpOgorICAgICAgICAqIHBhZ2UvR2FtZXBhZC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6R2FtZXBhZCk6CisgICAgICAgIChXZWJDb3JlOjpH
YW1lcGFkOjpheGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6OmJ1dHRvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6fkdhbWVwYWQpOgorICAgICAgICAqIHBhZ2UvR2FtZXBh
ZC5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0dhbWVwYWQuaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBwYWdlL0dhbWVwYWRMaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFk
TGlzdDo6fkdhbWVwYWRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6Omxlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpHYW1lcGFkTGlzdDo6aXRlbSk6CisgICAgICAgICogcGFnZS9HYW1lcGFkTGlzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6R2FtZXBhZExpc3Q6OkdhbWVwYWRMaXN0KToKKyAgICAgICAgKiBwYWdlL0dhbWVw
YWRMaXN0LmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRHYW1lcGFkcyk6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6CisKIDIwMTEtMTEtMTgg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQXBwZWFy
YW5jZSBvZiBjb21wb3VuZCB0cmFuc2Zvcm0gYW5pbWF0aW9ucyB1bmRlciBhcHBzIGxpbmtlZCBv
biBTbm93TGVvcGFyZCBpcyBpbmNvcnJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
ODRmM2E5YWNiNDI4ODFiMjkwZTRiNWU0YjBiZDZhYmY1NTdjY2ViMS4uMmMyMDM2MTZhMGYyMmVm
MjZjYjViOGIwNjNjZGJmOWExY2FmM2Q1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxMS0xMS0xOCAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSURMIGNoYW5nZXMgZm9yIGdhbWVwYWQgc3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdG8gdXNlIHZl
bmRvci1wcmVmaXhlZCBlbmFibGUuCisKKyAgICAgICAgKiBzcmMvV2ViUnVudGltZUZlYXR1cmVz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVHYW1lcGFk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUnVudGltZUZlYXR1cmVzOjppc0dhbWVwYWRFbmFibGVk
KToKKwogMjAxMS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzcGF0Y2ggbWVzc2FnZXMgZnJvbSB0aGUgZnJvbnQt
ZW5kIHRvIHRoZSBiYWNrZW5kIGFzeW5jaHJvbm91c2x5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDg4
ZDQ1NmM0MzMwNmY1ZWFkMTkyMDAzMGQxNDAzN2Q1N2IxODg4MzIuLjFmNTI2OGUyODRjNjhmZmVj
N2M5MjIzMDM2OGU2YzQzNDE5NjE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE0MDIsNiArMTQw
Miw4IEBACiAgICAgICAgICAgICAncGFnZS9ET01TZWxlY3Rpb24uaWRsJywKICAgICAgICAgICAg
ICdwYWdlL0RPTVdpbmRvdy5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRXZlbnRTb3VyY2UuaWRs
JywKKyAgICAgICAgICAgICdwYWdlL0dhbWVwYWQuaWRsJywKKyAgICAgICAgICAgICdwYWdlL0dh
bWVwYWRMaXN0LmlkbCcsCiAgICAgICAgICAgICAncGFnZS9HZW9sb2NhdGlvbi5pZGwnLAogICAg
ICAgICAgICAgJ3BhZ2UvR2VvcG9zaXRpb24uaWRsJywKICAgICAgICAgICAgICdwYWdlL0hpc3Rv
cnkuaWRsJywKQEAgLTI5NDksNiArMjk1MSwxMCBAQAogICAgICAgICAgICAgJ3BhZ2UvRnJhbWVB
Y3Rpb25TY2hlZHVsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9GcmFtZVRyZWUuY3BwJywKICAg
ICAgICAgICAgICdwYWdlL0ZyYW1lVmlldy5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBh
ZC5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZC5oJywKKyAgICAgICAgICAgICdwYWdl
L0dhbWVwYWRMaXN0LmNwcCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlzdC5oJywKICAg
ICAgICAgICAgICdwYWdlL0dlb2xvY2F0aW9uLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9HZW9s
b2NhdGlvbkNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdwYWdlL0dyb3VwU2V0dGluZ3Mu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggOWZmMmJmYzZhZDMzNWY4MGE3OTA3MWQ3NGUyZmIw
MTI1NTI1NTkzNC4uY2UyZWU0MzljNzJhOGFmNTg0NDRlNDI5NDIwNjM2YmVhOTgxZDk4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgKQEAgLTE3Miw4ICsxNzIsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShHQU1FUEFEKQotICAgIHN0YXRpYyB2b2lkIHNldEdhbWVwYWRzRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBpc0dhbWVwYWRFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGlj
IGJvb2wgZ2FtZXBhZHNFbmFibGVkKCkgeyByZXR1cm4gaXNHYW1lcGFkRW5hYmxlZDsgfQorICAg
IHN0YXRpYyB2b2lkIHNldFdlYmtpdEdhbWVwYWRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c0dhbWVwYWRFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgd2Via2l0R2Ft
ZXBhZHNFbmFibGVkKCkgeyByZXR1cm4gaXNHYW1lcGFkRW5hYmxlZDsgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoUVVPVEEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWVkMThk
ZGRlMWM3YTZhYjAzYWEyMjhkZWUxYzcyZDQ4YjU2MmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmNwcApAQCAtMCwwICsxLDU1IEBACisvLyBDb3B5cmln
aHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZC5oIgorCisjaWYgRU5BQkxFKEdBTUVQ
QUQpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHYW1lcGFkOjpHYW1lcGFkKCkKK3sKK30KKwordm9pZCBHYW1lcGFkOjpheGVzKHVu
c2lnbmVkIGNvdW50LCBmbG9hdCogZGF0YSkKK3sKKyAgICBtX2F4ZXMucmVzaXplKGNvdW50KTsK
KyAgICBzdGQ6OmNvcHkoZGF0YSwgZGF0YSArIGNvdW50LCBtX2F4ZXMuYmVnaW4oKSk7Cit9CisK
K3ZvaWQgR2FtZXBhZDo6YnV0dG9ucyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpCit7Cisg
ICAgbV9idXR0b25zLnJlc2l6ZShjb3VudCk7CisgICAgc3RkOjpjb3B5KGRhdGEsIGRhdGEgKyBj
b3VudCwgbV9idXR0b25zLmJlZ2luKCkpOworfQorCitHYW1lcGFkOjp+R2FtZXBhZCgpCit7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0dhbWVwYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjVmMTljMzQ5MDk2ZGM0ZDBmODgxNmI5NTE4
YzFmODk5OGJmYWM4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1l
cGFkLmgKQEAgLTAsMCArMSw2OSBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2lmbmRlZiBHYW1lcGFkX2gKKyNkZWZpbmUg
R2FtZXBhZF9oCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBHYW1lcGFkOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkPiB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2FtZXBhZD4gY3JlYXRlKCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2FtZXBhZCk7CisgICAgfQorICAgIH5HYW1lcGFk
KCk7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxmbG9hdD4gRmxvYXRWZWN0b3I7CisKKyAgICBjb25z
dCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHZvaWQgaWQoY29uc3Qg
U3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KKworICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3Qg
eyByZXR1cm4gbV9pbmRleDsgfQorICAgIHZvaWQgaW5kZXgodW5zaWduZWQgdmFsKSB7IG1faW5k
ZXggPSB2YWw7IH0KKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXAoKSBjb25zdCB7
IHJldHVybiBtX3RpbWVzdGFtcDsgfQorICAgIHZvaWQgdGltZXN0YW1wKHVuc2lnbmVkIGxvbmcg
bG9uZyB2YWwpIHsgbV90aW1lc3RhbXAgPSB2YWw7IH0KKworICAgIGNvbnN0IEZsb2F0VmVjdG9y
JiBheGVzKCkgY29uc3QgeyByZXR1cm4gbV9heGVzOyB9CisgICAgdm9pZCBheGVzKHVuc2lnbmVk
IGNvdW50LCBmbG9hdCogZGF0YSk7CisKKyAgICBjb25zdCBGbG9hdFZlY3RvciYgYnV0dG9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uczsgfQorICAgIHZvaWQgYnV0dG9ucyh1bnNpZ25lZCBj
b3VudCwgZmxvYXQqIGRhdGEpOworCitwcml2YXRlOgorICAgIEdhbWVwYWQoKTsKKyAgICBTdHJp
bmcgbV9pZDsKKyAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBt
X3RpbWVzdGFtcDsKKyAgICBGbG9hdFZlY3RvciBtX2F4ZXM7CisgICAgRmxvYXRWZWN0b3IgbV9i
dXR0b25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR2FtZXBh
ZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQuaWRsIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9HYW1lcGFkLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTQ5YjA1ZjVlNTJiOWRlYTVk
NTQ5YWFmNzFmMzQ2ZjUzNzNkMDdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9HYW1lcGFkLmlkbApAQCAtMCwwICsxLDM2IEBACisvLyBDb3B5cmlnaHQgKEMpIDIwMTEs
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisvLyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8vIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCittb2R1bGUgZG9tIHsKKwor
ICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPUdBTUVQQUQKKyAgICBdIEdhbWVw
YWQgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlkOworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBpbmRleDsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXA7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBmbG9hdFtdIGF4ZXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9h
dFtdIGJ1dHRvbnM7CisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9HYW1lcGFkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xNjkzNGVkZDI1NDQ4NjEzNzkwZjg5NjM2MDEyMjRkNTQxMWMwZGEwCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5jcHAKQEAgLTAs
MCArMSw1NiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLwor
Ly8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0gKKy8vIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWRM
aXN0LmgiCisKKyNpbmNsdWRlICJHYW1lcGFkLmgiCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitHYW1lcGFkTGlzdDo6fkdhbWVwYWRMaXN0KCkKK3sKK30K
Kwordm9pZCBHYW1lcGFkTGlzdDo6c2V0KHVuc2lnbmVkIGluZGV4LCBQYXNzUmVmUHRyPEdhbWVw
YWQ+IGdhbWVwYWQpCit7CisgICAgaWYgKGluZGV4ID49IGtNYXhpbXVtR2FtZXBhZHMpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2l0ZW1zW2luZGV4XSA9IGdhbWVwYWQ7Cit9CisKK3Vuc2lnbmVk
IEdhbWVwYWRMaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBrTWF4aW11bUdhbWVw
YWRzOworfQorCitHYW1lcGFkKiBHYW1lcGFkTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkKK3sK
KyAgICByZXR1cm4gaW5kZXggPCBsZW5ndGgoKSA/IG1faXRlbXNbaW5kZXhdLmdldCgpIDogMDsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEdBTUVQQUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0dhbWVwYWRMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2E0MmU3OWZmNWM2OTE4N2Nm
MjQ5YjBmN2QwZThiNWI1MmVjNDUyYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvR2FtZXBhZExpc3QuaApAQCAtMCwwICsxLDUzIEBACisvLyBDb3B5cmlnaHQgKEMpIDIw
MTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisv
LyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorLy8gMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisvLworLy8gVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKy8v
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaWZuZGVmIEdhbWVw
YWRMaXN0X2gKKyNkZWZpbmUgR2FtZXBhZExpc3RfaAorCisjaW5jbHVkZSAiR2FtZXBhZC5oIgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRl
ZiBWZWN0b3I8UmVmUHRyPEdhbWVwYWQ+ID4gR2FtZXBhZFZlY3RvcjsKKworY2xhc3MgR2FtZXBh
ZExpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkTGlzdD4geworcHVibGljOgorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEdhbWVwYWRMaXN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgR2FtZXBhZExpc3QpOyB9CisgICAgfkdhbWVwYWRMaXN0KCk7CisKKyAgICB2b2lkIHNldCh1
bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0cjxHYW1lcGFkPik7CisgICAgR2FtZXBhZCogaXRlbSh1
bnNpZ25lZCBpbmRleCk7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisKK3ByaXZhdGU6
CisgICAgZW51bSB7IGtNYXhpbXVtR2FtZXBhZHMgPSA0IH07CisgICAgR2FtZXBhZExpc3QoKSB7
IH0KKyAgICBSZWZQdHI8R2FtZXBhZD4gbV9pdGVtc1trTWF4aW11bUdhbWVwYWRzXTsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdhbWVwYWRMaXN0X2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuaWRsIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9HYW1lcGFkTGlzdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjQyYjgxNWRmYWY0Mjc4NjU3M2Jm
NTFhYjUzOGVmNGZhM2RmNTQyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvR2FtZXBhZExpc3QuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAx
MSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8v
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8g
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKK21vZHVsZSBkb20gewor
CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9R0FNRVBBRCwKKyAgICAgICAg
SGFzSW5kZXhHZXR0ZXIKKyAgICBdIEdhbWVwYWRMaXN0IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgbGVuZ3RoOworICAgICAgICBHYW1lcGFkIGl0ZW0oaW4gW09w
dGlvbmFsPUNhbGxXaXRoRGVmYXVsdFZhbHVlXSB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB9
OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKaW5kZXggMTA1MjA5ODQxYjhhMWY3MDY4
ODQ1NDAwMGE0MzI3MzAzZmY5OTViNC4uZjNiZTBjYzQ4ZmE0ODY3NDEyMzY3ZTc0ZGQ3NTE3M2I3
YThmOGFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJG
cmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkdhbWVwYWRMaXN0LmgiCiAjaW5jbHVkZSAi
R2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJQb2ludGVyTG9jay5oIgogI2luY2x1ZGUgIktVUkwu
aCIKQEAgLTMwNCw0ICszMDUsMTIgQEAgdm9pZCBOYXZpZ2F0b3I6OndlYmtpdEdldFVzZXJNZWRp
YShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXMKIH0KICNlbmRp
ZgogCisjaWYgRU5BQkxFKEdBTUVQQUQpCitHYW1lcGFkTGlzdCogTmF2aWdhdG9yOjp3ZWJraXRH
YW1lcGFkcygpCit7CisgICAgLy8gU3R1YmJlZCB1bnRpbCBwbGF0Zm9ybS8gY2hhbmdlcyBsYW5k
ZWQuCisgICAgcmV0dXJuIDA7Cit9CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmgKaW5kZXggNDljNTQ4OGM1YjIzOGQwNmFmYjdlNTQxZGE1ZTky
MTllMzZhMzdkNy4uNWJhYmRjNWRkOGYyZjlkYzI1YTkxMDBjZDJiZjVmZmY3ZWJiZmVhZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5oCkBAIC0zMSw2ICszMSw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIERPTU1pbWVUeXBlQXJyYXk7CiBjbGFzcyBET01QbHVnaW5BcnJheTsKIGNsYXNz
IEZyYW1lOworY2xhc3MgR2FtZXBhZExpc3Q7CiBjbGFzcyBHZW9sb2NhdGlvbjsKIGNsYXNzIFBv
aW50ZXJMb2NrOwogY2xhc3MgTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjazsKQEAgLTc0
LDYgKzc1LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2Via2l0R2V0VXNlck1lZGlh
KGNvbnN0IFN0cmluZyYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFTdWNj
ZXNzQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2s+
LCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHQU1FUEFEKQorICAgIEdh
bWVwYWRMaXN0KiB3ZWJraXRHYW1lcGFkcygpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgTmF2
aWdhdG9yKEZyYW1lKik7CiAgICAgRnJhbWUqIG1fZnJhbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5pZGwKaW5kZXggNmZlNDNlNjYwYTg1MDczMzE0ODUzZjU4MTYxMzE3YTZkYmZhMjM4NS4uMmI2
MWM1YTRiZWY3MDQ2YWQ5ZGQ0NTkyN2NhMmQyNWExYTA0MzgwZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yLmlkbApAQCAtNjEsNiArNjEsMTAgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtDYWxs
YmFjaz1GdW5jdGlvbk9ubHksIE9wdGlvbmFsXSBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxi
YWNrIGVycm9yQ2FsbGJhY2spCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICNl
bmRpZgorCisjaWYgZGVmaW5lZChFTkFCTEVfR0FNRVBBRCkgJiYgRU5BQkxFX0dBTUVQQUQKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtFbmFibGVkQXRSdW50aW1lXSBHYW1lcGFkTGlzdCB3
ZWJraXRHYW1lcGFkczsKKyNlbmRpZgogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCmluZGV4IDEyOGE2ZmFlMThlZmMz
MTIzYThmODNhMDI3NjYxZTMxYmM0MTg4ZjguLjY3NWUyYTJkMTVjNTBhMzkzMGY0NjExMTRiZmNm
MjYyMjE5NzFmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1
bnRpbWVGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVu
dGltZUZlYXR1cmVzLmNwcApAQCAtNDE3LDcgKzQxNyw3IEBAIGJvb2wgV2ViUnVudGltZUZlYXR1
cmVzOjppc1ZpZGVvVHJhY2tFbmFibGVkKCkKIHZvaWQgV2ViUnVudGltZUZlYXR1cmVzOjplbmFi
bGVHYW1lcGFkKGJvb2wgZW5hYmxlKQogewogI2lmIEVOQUJMRShHQU1FUEFEKQotICAgIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldEdhbWVwYWRzRW5hYmxlZChlbmFibGUpOworICAgIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdEdhbWVwYWRzRW5hYmxlZChlbmFibGUpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlKTsKICNlbmRpZgpAQCAtNDI2LDcgKzQyNiw3IEBA
IHZvaWQgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVHYW1lcGFkKGJvb2wgZW5hYmxlKQogYm9v
bCBXZWJSdW50aW1lRmVhdHVyZXM6OmlzR2FtZXBhZEVuYWJsZWQoKQogewogI2lmIEVOQUJMRShH
QU1FUEFEKQotICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpnYW1lcGFkc0VuYWJs
ZWQoKTsKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Via2l0R2FtZXBhZHNF
bmFibGVkKCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViZTY0YWI2YzY1OTc3MTMx
MjFjNzExNTUzMDFmMmViYzA5MDdiNGYuLjcxMWRmZmIyNWY0ZmQ4YzBhYjEwN2ZmZDkxMTdkNjkx
ZTNhMWY4OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0xOCAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgSURMIGNoYW5nZXMgZm9yIGdhbWVwYWQgc3VwcG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSdW50aW1lIGVu
YWJsZSBnYW1lcGFkIGluIGNocm9taXVtIHRlc3Qgc2hlbGwuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwOgorICAgICAgICAoVGVzdFNoZWxsOjpUZXN0
U2hlbGwpOgorCiAyMDExLTExLTE4ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBJZ25vcmUgYW4gQU5HTEUgbGVhayB0aGF0IGlzIG5vdCBXZWJLaXQncyBmYXVsdApk
aWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKaW5kZXggY2IxZTIx
OWIwNzY2YjhiOTA5ZTYzYzBkOGRiMDEyYzMyOGZiZDQ5OC4uODUwN2YyNGMwMjIzM2JjZDEwODgx
MWYwYmM3MTdiNTYzZGU3Y2YwOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGwuY3BwCkBAIC0xMjIsNiArMTIyLDcgQEAgVGVzdFNoZWxsOjpUZXN0U2hlbGwoYm9v
bCB0ZXN0U2hlbGxNb2RlKQogICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlTWVkaWFTdHJl
YW0odHJ1ZSk7CiAgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVXZWJBdWRpbyh0cnVlKTsg
CiAgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVWaWRlb1RyYWNrKHRydWUpOworICAgIFdl
YlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlR2FtZXBhZCh0cnVlKTsKIAogICAgIG1fd2ViUGVybWlz
c2lvbnMgPSBhZG9wdFB0cihuZXcgV2ViUGVybWlzc2lvbnModGhpcykpOwogICAgIG1fYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIo
dGhpcykpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDk5ZWYwYTJhOGVjYjk3ZTk5MDc5MzQ3NzkwOWQ1MzRmNTQwZDUwYTku
LmUyMTkwODQzNTE5ZDg3MTBhMmM0MGMxMWZhNzUxZDA4ZjRiZjIxYzkgMTAwNzU1Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzNSBAQAorMjAxMS0xMS0xOCAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgSURMIGNoYW5nZXMgZm9yIGdhbWVwYWQgc3VwcG9ydAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYmFzaWMgYXBpIGV4aXN0ZW5j
ZSB0ZXN0LgorCisgICAgICAgICogZ2FtZXBhZC9nYW1lcGFkLWFwaS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGdhbWVwYWQvZ2FtZXBhZC1hcGkuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZ2FtZXBhZC9nYW1lcGFkLXRlc3QuanM6IEFkZGVkLgorICAgICAgICAobG9nQ29uc29sZSk6
CisgICAgICAgICh0ZXN0RXhwZWN0ZWQpOgorICAgICAgICAocmVwb3J0RXhwZWN0ZWQpOgorICAg
ICAgICAod2FpdEZvckV2ZW50QW5kRW5kKToKKyAgICAgICAgKHdhaXRGb3JFdmVudC5fZXZlbnRD
YWxsYmFjayk6CisgICAgICAgICh3YWl0Rm9yRXZlbnQpOgorICAgICAgICAod2FpdEZvckV2ZW50
QW5kVGVzdC5fZXZlbnRDYWxsYmFjayk6CisgICAgICAgICh3YWl0Rm9yRXZlbnRBbmRUZXN0KToK
KyAgICAgICAgKHdhaXRGb3JFdmVudFRlc3RBbmRFbmQpOgorICAgICAgICAoZW5kVGVzdCk6Cisg
ICAgICAgIChsb2dSZXN1bHQpOgorICAgICAgICAoY29uc29sZVdyaXRlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9Ta2lwcGVkOgorICAg
ICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luL1NraXBw
ZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZDoKKwogMjAxMS0xMS0xOCAg
QWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBMYXlvdXQgVGVzdCBh
Y2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXNlbmRzLW5vdGlmaWNhdGlvbi5odG1sIGlzIHNs
b3cgb24gV2luIGRiZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFw
aS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBpLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kOTAwZWJmM2FlZDdkMDUwYmVkODMyZWFmY2MwNGYwYTU0ZDA1YzRm
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFwaS1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitFWFBFQ1RFRCAobmF2aWdhdG9yLndlYmtpdEdhbWVw
YWRzICE9PSAndW5kZWZpbmVkJykgT0sKK0VORCBPRiBURVNUCitNYWtlIHN1cmUgdGhlIG1haW4g
cG9sbGluZyBhY2Nlc3MgcG9pbnQgZXhpc3RzIG9uIG5hdmlnYXRvci4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGkuaHRtbCBiL0xheW91dFRlc3RzL2dhbWVwYWQv
Z2FtZXBhZC1hcGkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWYwZTM0NjQ0YjZjMWNkZWQ2OTkwMmQwNWQz
N2YzYzUwN2E5ZmFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1l
cGFkLWFwaS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJnYW1lcGFkLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICB0ZXN0
RXhwZWN0ZWQoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkcyIsIHVuZGVmaW5lZCwgIiE9PSIpOwor
ICAgIGVuZFRlc3QoKTsKKzwvc2NyaXB0PgorPHA+TWFrZSBzdXJlIHRoZSBtYWluIHBvbGxpbmcg
YWNjZXNzIHBvaW50IGV4aXN0cyBvbiBuYXZpZ2F0b3IuPC9wPgorPC9ib2R5PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9nYW1l
cGFkL2dhbWVwYWQtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjFiNGYzYzMwZTk5Y2YzNDZlN2Q3ZDRj
ZjRhY2Y2OWU0NjJlZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9n
YW1lcGFkLXRlc3QuanMKQEAgLTAsMCArMSwxMjYgQEAKK3ZhciBjb25zb2xlID0gbnVsbDsKK3Zh
ciBwcmludEZ1bGxUZXN0RGV0YWlscyA9IHRydWU7IC8vIFRoaXMgaXMgb3B0aW9uYWx5IHN3aXRj
aGVkIG9mIGJ5IHRlc3Qgd2hvc2UgdGVzdGVkIHZhbHVlcyBjYW4gZGlmZmVyLiAoc2VlIGRpc2Fi
bGVGdWxsVGVzdERldGFpbHNQcmludGluZygpKQorCitsb2dDb25zb2xlKCk7CisKK2lmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQor
CitmdW5jdGlvbiBsb2dDb25zb2xlKCkKK3sKKyAgICBpZiAoIWNvbnNvbGUgJiYgZG9jdW1lbnQu
Ym9keSkgeworICAgICAgICBjb25zb2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZSk7CisgICAgfQorICAg
IHJldHVybiBjb25zb2xlOworfQorCitmdW5jdGlvbiB0ZXN0RXhwZWN0ZWQodGVzdEZ1bmNTdHJp
bmcsIGV4cGVjdGVkLCBjb21wYXJpc29uKQoreworICAgIHRyeSB7CisgICAgICAgIHZhciBvYnNl
cnZlZCA9IGV2YWwodGVzdEZ1bmNTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAg
IGNvbnNvbGVXcml0ZShleCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoY29t
cGFyaXNvbiA9PT0gdW5kZWZpbmVkKQorICAgICAgICBjb21wYXJpc29uID0gJz09JzsKKworICAg
IHZhciBzdWNjZXNzID0gZmFsc2U7CisgICAgc3dpdGNoIChjb21wYXJpc29uKQorICAgIHsKKyAg
ICAgICAgY2FzZSAnPCc6ICBzdWNjZXNzID0gb2JzZXJ2ZWQgPCAgZXhwZWN0ZWQ7IGJyZWFrOwor
ICAgICAgICBjYXNlICc8PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA8PSBleHBlY3RlZDsgYnJlYWs7
CisgICAgICAgIGNhc2UgJz4nOiAgc3VjY2VzcyA9IG9ic2VydmVkID4gIGV4cGVjdGVkOyBicmVh
azsKKyAgICAgICAgY2FzZSAnPj0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPj0gZXhwZWN0ZWQ7IGJy
ZWFrOworICAgICAgICBjYXNlICchPSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCAhPSBleHBlY3RlZDsg
YnJlYWs7CisgICAgICAgIGNhc2UgJyE9PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCAhPT0gZXhwZWN0
ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc9PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA9PSBleHBl
Y3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz09PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA9PT0g
ZXhwZWN0ZWQ7IGJyZWFrOworICAgIH0KKworICAgIHJlcG9ydEV4cGVjdGVkKHN1Y2Nlc3MsIHRl
c3RGdW5jU3RyaW5nLCBjb21wYXJpc29uLCBleHBlY3RlZCwgb2JzZXJ2ZWQpCit9CisKK3ZhciB0
ZXN0TnVtYmVyID0gMDsKKworZnVuY3Rpb24gcmVwb3J0RXhwZWN0ZWQoc3VjY2VzcywgdGVzdEZ1
bmNTdHJpbmcsIGNvbXBhcmlzb24sIGV4cGVjdGVkLCBvYnNlcnZlZCkKK3sKKyAgICB0ZXN0TnVt
YmVyKys7CisKKyAgICB2YXIgbXNnID0gIlRlc3QgIiArIHRlc3ROdW1iZXI7CisKKyAgICBpZiAo
cHJpbnRGdWxsVGVzdERldGFpbHMgfHwgIXN1Y2Nlc3MpCisgICAgICAgIG1zZyA9ICJFWFBFQ1RF
RCAoPGVtPiIgKyB0ZXN0RnVuY1N0cmluZyArICIgPC9lbT4iICsgY29tcGFyaXNvbiArICIgJzxl
bT4iICsgZXhwZWN0ZWQgKyAiPC9lbT4nKSI7CisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAg
IG1zZyArPSAgIiwgT0JTRVJWRUQgJzxlbT4iICsgb2JzZXJ2ZWQgKyAiPC9lbT4nIjsKKworICAg
IGxvZ1Jlc3VsdChzdWNjZXNzLCBtc2cpOworfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRF
bmQoZWxlbWVudCwgZXZlbnROYW1lLCBmdW5jU3RyaW5nKQoreworICAgIHdhaXRGb3JFdmVudChl
bGVtZW50LCBldmVudE5hbWUsIGZ1bmNTdHJpbmcsIHRydWUpCit9CisKK2Z1bmN0aW9uIHdhaXRG
b3JFdmVudChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQoreworICAgIGZ1bmN0aW9u
IF9ldmVudENhbGxiYWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZVdyaXRlKCJFVkVO
VCgiICsgZXZlbnROYW1lICsgIikiKTsKKworICAgICAgICBpZiAoZnVuYykKKyAgICAgICAgICAg
IGZ1bmMoZXZlbnQpOworCisgICAgICAgIGlmIChlbmRpdCkKKyAgICAgICAgICAgIGVuZFRlc3Qo
KTsKKyAgICB9CisKKyAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZl
bnRDYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZFRlc3QoZWxlbWVudCwg
ZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24gX2V2ZW50
Q2FsbGJhY2soZXZlbnQpCisgICAgeworICAgICAgICBsb2dSZXN1bHQoZXZhbCh0ZXN0RnVuY1N0
cmluZyksICJFVkVOVCgiICsgZXZlbnROYW1lICsgIikgVEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcg
KyAiKSIpOworICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAg
fQorCisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJh
Y2spOworfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRUZXN0QW5kRW5kKGVsZW1lbnQsIGV2ZW50
TmFtZSwgdGVzdEZ1bmNTdHJpbmcpCit7CisgICAgd2FpdEZvckV2ZW50QW5kVGVzdChlbGVtZW50
LCBldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsKK30KKwordmFyIHRlc3RFbmRlZCA9
IGZhbHNlOworCitmdW5jdGlvbiBlbmRUZXN0KCkKK3sKKyAgICBjb25zb2xlV3JpdGUoIkVORCBP
RiBURVNUIik7CisgICAgdGVzdEVuZGVkID0gdHJ1ZTsKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7
Cit9CisKK2Z1bmN0aW9uIGxvZ1Jlc3VsdChzdWNjZXNzLCB0ZXh0KQoreworICAgIGlmIChzdWNj
ZXNzKQorICAgICAgICBjb25zb2xlV3JpdGUodGV4dCArICIgPHNwYW4gc3R5bGU9J2NvbG9yOmdy
ZWVuJz5PSzwvc3Bhbj4iKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnNvbGVXcml0ZSh0ZXh0ICsg
IiA8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlMPC9zcGFuPiIpOworfQorCitmdW5jdGlvbiBj
b25zb2xlV3JpdGUodGV4dCkKK3sKKyAgICBpZiAodGVzdEVuZGVkKQorICAgICAgICByZXR1cm47
CisgICAgbG9nQ29uc29sZSgpLmlubmVySFRNTCArPSB0ZXh0ICsgIjxicj4iOworfQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vbmF2aWdhdG9yLWRl
dGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQKaW5k
ZXggNzU0MjVhMWY3OGEzOTgxOGMzZDE1NTE4M2MyMWNhMDdjNWNmN2I4Zi4uNzA5NzNiMmJhYTU2
ZmIxMzg1MmU5MDIxODhkN2RhOGJiODBmZmFmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9uYXZp
Z2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0xNyw2ICsxNyw3IEBAIG5h
dmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpIHRocmV3IGVyciBUeXBlRXJyb3I6IE5v
dCBlbm91Z2ggYXJndW1lbnRzCiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9LCiBuYXZpZ2F0b3Iu
dmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCituYXZpZ2F0b3Iud2Via2l0
R2FtZXBhZHMgaXMgT0sKIG5hdmlnYXRvci5hcHBDb2RlTmFtZSBpcyBPSwogbmF2aWdhdG9yLmFw
cE5hbWUgaXMgT0sKIG5hdmlnYXRvci5hcHBWZXJzaW9uIGlzIE9LCkBAIC0zNCw0ICszNSw1IEBA
IG5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpIHRocmV3IGVyciBUeXBlRXJyb3I6
IE5vdCBlbm91Z2ggYXJndW1lbnRzCiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9LCiBuYXZpZ2F0
b3IudmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCituYXZpZ2F0b3Iud2Vi
a2l0R2FtZXBhZHMgaXMgT0sKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZAppbmRleCA1ZjgxNDQz
MjcwZWNhMDE5ZTQyZmQ3Zjg5OWYzNzVmNjVmNmM4MDNhLi5kNTY0OTljOTNhNmUwZWU2NTkwODZl
NTljYmFlY2NiOTY4MGM4YjUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwv
U2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApAQCAtMTkwOSw2
ICsxOTA5LDkgQEAgZmFzdC9mb3Jtcy9tb250aAogZmFzdC9mb3Jtcy90aW1lCiBmYXN0L2Zvcm1z
L3dlZWsKIAorIyBFTkFCTEVfR0FNRVBBRCBub3QgZW5hYmxlZC4KK2dhbWVwYWQvCisKICMgTXV0
YXRpb25PYnNlcnZlcnMgYXJlIG5ldCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dlYmtpdC5vcmcvYi82
ODcyOQogZmFzdC9tdXRhdGlvbgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCmluZGV4IDcxOThm
M2E0NjUwMGExYmZmYmIzNDNiOTUwZTRmZTZiMWY5ODFmOTQuLjZmMDQxOGZkMjJmOTc0ZTk5Njc0
ODdlN2IyNDNlZDRlMTEyNDNlMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkCkBAIC0yNTgs
NiArMjU4LDkgQEAgZmFzdC9mb3Jtcy9tb250aAogZmFzdC9mb3Jtcy90aW1lCiBmYXN0L2Zvcm1z
L3dlZWsKIAorIyBFTkFCTEVfR0FNRVBBRCBub3QgZW5hYmxlZC4KK2dhbWVwYWQvCisKICMgU3Bl
ZWNoIGlucHV0IGlzIG5vdCB5ZXQgZW5hYmxlZC4KIGZhc3Qvc3BlZWNoCiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL1NraXBwZWQKaW5kZXggMGQwMTM4MTg5NzRlYzZhZWU3Y2NhYTQ4Y2YyZGNiMGM3YmEzNDc3
Ni4uNGZmNzg1NjdkY2U2MTRiY2IzYmRmZjI1ZmI3Zjc0ZjZhNmYxMTkyMCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1NraXBwZWQKQEAgLTIxNCw2ICsyMTQsOSBAQCBmYXN0L2Zvcm1zL21vbnRoCiBmYXN0
L2Zvcm1zL3RpbWUKIGZhc3QvZm9ybXMvd2VlawogCisjIEVOQUJMRV9HQU1FUEFEIG5vdCBlbmFi
bGVkLgorZ2FtZXBhZC8KKwogIyBTcGVlY2ggaW5wdXQgaXMgbm90IHlldCBlbmFibGVkLgogZmFz
dC9zcGVlY2gKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggMmJjM2VmNjZmM2FlNWRkMWI3
YjFiYmZiZjFhMWIxMDMyYzYwMjVlMS4uYWRhZWJjZTljMmE2Y2ZiYTg2MjI5ZmRjZTM5Mzk4Zjg2
ODhkYWRiYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC04OSw2ICs4OSw5IEBAIGZhc3Qv
Zm9ybXMvbW9udGgKIGZhc3QvZm9ybXMvdGltZQogZmFzdC9mb3Jtcy93ZWVrCiAKKyMgRU5BQkxF
X0dBTUVQQUQgbm90IGVuYWJsZWQuCitnYW1lcGFkLworCiAjIEVOQUJMRShJTlBVVF9TUEVFQ0gp
IGlzIGRpc2FibGVkLgogZmFzdC9zcGVlY2gKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAppbmRl
eCAyOGE1MzBjN2NmMDNmMjg3ZmU3NWIyYWQ0MjdlYzlmMTQxNWIwMmI0Li40YzM0YjQ5M2U1NzA1
ZDVmODRmMjRlZmNmNDljZGFiM2ViZjJkZjQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZApA
QCAtMTEyMiw2ICsxMTIyLDkgQEAgZmFzdC9mb3Jtcy9tb250aAogZmFzdC9mb3Jtcy90aW1lCiBm
YXN0L2Zvcm1zL3dlZWsKIAorIyBFTkFCTEVfR0FNRVBBRCBub3QgZW5hYmxlZC4KK2dhbWVwYWQv
CisKICMgU3BlZWNoIGlucHV0IGlzIG5vdCB5ZXQgZW5hYmxlZC4KIGZhc3Qvc3BlZWNoCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCmluZGV4IDg2YTQ0N2MwZDlkNTM1MTE1NDMy
NzJiMWIxNjhiOWZmMmViY2FkNWYuLjZiYTIzMDk4MTM0NjEwY2Y3OGJkMzgyMTIwOTA4YmIxNmNk
MWM3YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBwZWQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZApAQCAtMTYzOSw2ICsx
NjM5LDkgQEAgZmFzdC9mb3Jtcy9tb250aAogZmFzdC9mb3Jtcy90aW1lCiBmYXN0L2Zvcm1zL3dl
ZWsKIAorIyBFTkFCTEVfR0FNRVBBRCBub3QgZW5hYmxlZC4KK2dhbWVwYWQvCisKICMgU3BlZWNo
IGlucHV0IGlzIG5vdCB5ZXQgZW5hYmxlZC4KIGZhc3Qvc3BlZWNoCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115894</attachid>
            <date>2011-11-18 15:36:46 -0800</date>
            <delta_ts>2011-11-18 15:59:15 -0800</delta_ts>
            <desc>review fixes, move to Modules</desc>
            <filename>bug-71753-20111118153645.patch</filename>
            <type>text/plain</type>
            <size>32336</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVlMTU2MGVlNDA1OTJj
NjVmMTdlZWIwMTQ2OWIyZjgyZDVkNTBhOS4uYjA3NzA2OTIzNzgxZjBiZTU1ZDVmNzAzZmZiMWZh
NjhjZmYxMDA1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTE4ICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBJREwgY2hhbmdlcyBm
b3IgZ2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MTc1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElETCBjaGFuZ2VzIGFuZCBhc3NvY2lhdGVkIHBsdW1iaW5nIHRvIGV4cG9zZSBs
aXN0IG9mIGdhbWVwYWQgb2JqZWN0cworICAgICAgICBvbiBuYXZpZ2F0b3Igb2JqZWN0IChwZXIg
Y3VycmVudCBzcGVjKS4gRnVsbCBwYXRjaCBpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEuIE9ubHkgYmFzaWMgZXhpc3RlbmNlCisgICAgICAg
IHRlc3QgdW50aWwgbW9yZSBwbHVtYmluZyBpbiBmdXR1cmUgcGF0Y2hlcy4KKworICAgICAgICBU
ZXN0OiBnYW1lcGFkL2dhbWVwYWQtYXBpLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdEdhbWVwYWRz
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRHYW1lcGFkc0VuYWJsZWQpOgorICAgICAgICAqIE1vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkOjpHYW1lcGFkKToKKyAgICAgICAg
KFdlYkNvcmU6OkdhbWVwYWQ6OmF4ZXMpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6YnV0
dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkOjp+R2FtZXBhZCk6CisgICAgICAgICog
TW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaDogQWRkZWQuCisgICAgICAgICogTW9kdWxlcy9nYW1l
cGFkL0dhbWVwYWQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvR2FtZXBh
ZExpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0Ojp+R2FtZXBh
ZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6OnNldCk6CisgICAgICAgIChX
ZWJDb3JlOjpHYW1lcGFkTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRM
aXN0OjppdGVtKToKKyAgICAgICAgKiBNb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFkTGlzdDo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdhbWVwYWRMaXN0OjpHYW1lcGFkTGlzdCk6CisgICAgICAgICogTW9kdWxlcy9nYW1l
cGFkL0dhbWVwYWRMaXN0LmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRHYW1lcGFkcyk6CisgICAgICAg
ICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6CisKIDIw
MTEtMTEtMTggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAg
ICAgQXBwZWFyYW5jZSBvZiBjb21wb3VuZCB0cmFuc2Zvcm0gYW5pbWF0aW9ucyB1bmRlciBhcHBz
IGxpbmtlZCBvbiBTbm93TGVvcGFyZCBpcyBpbmNvcnJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKaW5kZXggODRmM2E5YWNiNDI4ODFiMjkwZTRiNWU0YjBiZDZhYmY1NTdjY2ViMS4uMmMyMDM2
MTZhMGYyMmVmMjZjYjViOGIwNjNjZGJmOWExY2FmM2Q1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0xMS0xOCAgU2NvdHQgR3JhaGFtICA8c2NvdHRt
Z0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSURMIGNoYW5nZXMgZm9yIGdhbWVwYWQgc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUg
dG8gdXNlIHZlbmRvci1wcmVmaXhlZCBlbmFibGUuCisKKyAgICAgICAgKiBzcmMvV2ViUnVudGlt
ZUZlYXR1cmVzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUnVudGltZUZlYXR1cmVzOjplbmFi
bGVHYW1lcGFkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUnVudGltZUZlYXR1cmVzOjppc0dhbWVw
YWRFbmFibGVkKToKKwogMjAxMS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzcGF0Y2ggbWVzc2FnZXMgZnJvbSB0
aGUgZnJvbnQtZW5kIHRvIHRoZSBiYWNrZW5kIGFzeW5jaHJvbm91c2x5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ZWQxOGRkZGUxYzdh
NmFiMDNhYTIyOGRlZTFjNzJkNDhiNTYyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5jcHAKQEAgLTAsMCArMSw1NSBAQAorLy8gQ29w
eXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8v
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8v
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisv
LyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdhbWVwYWQuaCIKKworI2lmIEVOQUJMRShH
QU1FUEFEKQorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworR2FtZXBhZDo6R2FtZXBhZCgpCit7Cit9CisKK3ZvaWQgR2FtZXBhZDo6YXhl
cyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpCit7CisgICAgbV9heGVzLnJlc2l6ZShjb3Vu
dCk7CisgICAgc3RkOjpjb3B5KGRhdGEsIGRhdGEgKyBjb3VudCwgbV9heGVzLmJlZ2luKCkpOwor
fQorCit2b2lkIEdhbWVwYWQ6OmJ1dHRvbnModW5zaWduZWQgY291bnQsIGZsb2F0KiBkYXRhKQor
eworICAgIG1fYnV0dG9ucy5yZXNpemUoY291bnQpOworICAgIHN0ZDo6Y29weShkYXRhLCBkYXRh
ICsgY291bnQsIG1fYnV0dG9ucy5iZWdpbigpKTsKK30KKworR2FtZXBhZDo6fkdhbWVwYWQoKQor
eworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBB
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZm
M2IwNzcwZDJkNmRjZmNkNmYzMGFlN2JjMDdjYWZiYmQyMzZjNDYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZC5oCkBAIC0wLDAgKzEsNzMg
QEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisv
LyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBE
QU1BR0UuCisKKyNpZm5kZWYgR2FtZXBhZF9oCisjZGVmaW5lIEdhbWVwYWRfaAorCisjaWYgRU5B
QkxFKEdBTUVQQUQpCisKKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBHYW1lcGFkOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2FtZXBhZD4gY3JlYXRlKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgR2FtZXBhZCk7CisgICAgfQorICAgIH5HYW1l
cGFkKCk7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxmbG9hdD4gRmxvYXRWZWN0b3I7CisKKyAgICBj
b25zdCBTdHJpbmcmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHZvaWQgaWQoY29u
c3QgU3RyaW5nJiBpZCkgeyBtX2lkID0gaWQ7IH0KKworICAgIHVuc2lnbmVkIGluZGV4KCkgY29u
c3QgeyByZXR1cm4gbV9pbmRleDsgfQorICAgIHZvaWQgaW5kZXgodW5zaWduZWQgdmFsKSB7IG1f
aW5kZXggPSB2YWw7IH0KKworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB0aW1lc3RhbXAoKSBjb25z
dCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQorICAgIHZvaWQgdGltZXN0YW1wKHVuc2lnbmVkIGxv
bmcgbG9uZyB2YWwpIHsgbV90aW1lc3RhbXAgPSB2YWw7IH0KKworICAgIGNvbnN0IEZsb2F0VmVj
dG9yJiBheGVzKCkgY29uc3QgeyByZXR1cm4gbV9heGVzOyB9CisgICAgdm9pZCBheGVzKHVuc2ln
bmVkIGNvdW50LCBmbG9hdCogZGF0YSk7CisKKyAgICBjb25zdCBGbG9hdFZlY3RvciYgYnV0dG9u
cygpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uczsgfQorICAgIHZvaWQgYnV0dG9ucyh1bnNpZ25l
ZCBjb3VudCwgZmxvYXQqIGRhdGEpOworCitwcml2YXRlOgorICAgIEdhbWVwYWQoKTsKKyAgICBT
dHJpbmcgbV9pZDsKKyAgICB1bnNpZ25lZCBtX2luZGV4OworICAgIHVuc2lnbmVkIGxvbmcgbG9u
ZyBtX3RpbWVzdGFtcDsKKyAgICBGbG9hdFZlY3RvciBtX2F4ZXM7CisgICAgRmxvYXRWZWN0b3Ig
bV9idXR0b25zOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKEdBTUVQQUQpCisKKyNlbmRpZiAvLyBHYW1lcGFkX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTQ5YjA1ZjVlNTJiOWRlYTVkNTQ5
YWFmNzFmMzQ2ZjUzNzNkMDdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nYW1lcGFkL0dhbWVwYWQuaWRsCkBAIC0wLDAgKzEsMzYgQEAKKy8vIENvcHlyaWdodCAo
QykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisv
LyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKK21vZHVsZSBk
b20geworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9R0FNRVBBRAorICAg
IF0gR2FtZXBhZCB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGluZGV4OworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcDsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGZsb2F0W10gYXhlczsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGZsb2F0W10gYnV0dG9uczsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNjkzNGVkZDI1NDQ4NjEz
NzkwZjg5NjM2MDEyMjRkNTQxMWMwZGEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNwcApAQCAtMCwwICsxLDU2IEBACisvLyBD
b3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLwor
Ly8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAor
Ly8gREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QK
Ky8vIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKKworI2luY2x1
ZGUgIkdhbWVwYWQuaCIKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0dhbWVwYWRMaXN0Ojp+R2FtZXBhZExpc3QoKQoreworfQorCit2b2lkIEdhbWVwYWRM
aXN0OjpzZXQodW5zaWduZWQgaW5kZXgsIFBhc3NSZWZQdHI8R2FtZXBhZD4gZ2FtZXBhZCkKK3sK
KyAgICBpZiAoaW5kZXggPj0ga01heGltdW1HYW1lcGFkcykKKyAgICAgICAgcmV0dXJuOworICAg
IG1faXRlbXNbaW5kZXhdID0gZ2FtZXBhZDsKK30KKwordW5zaWduZWQgR2FtZXBhZExpc3Q6Omxl
bmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGtNYXhpbXVtR2FtZXBhZHM7Cit9CisKK0dhbWVw
YWQqIEdhbWVwYWRMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KQoreworICAgIHJldHVybiBpbmRl
eCA8IGxlbmd0aCgpID8gbV9pdGVtc1tpbmRleF0uZ2V0KCkgOiAwOworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjMzZjhmZWQwYWQz
NjcyZjE0NTJiYjg3NTQ1Y2UyODRjY2JjMjY5MgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkTGlzdC5oCkBAIC0wLDAgKzEsNTcgQEAKKy8v
IENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
CisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
CisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0Uu
CisKKyNpZm5kZWYgR2FtZXBhZExpc3RfaAorI2RlZmluZSBHYW1lcGFkTGlzdF9oCisKKyNpZiBF
TkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgIkdhbWVwYWQuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgVmVjdG9yPFJlZlB0cjxH
YW1lcGFkPiA+IEdhbWVwYWRWZWN0b3I7CisKK2NsYXNzIEdhbWVwYWRMaXN0IDogcHVibGljIFJl
ZkNvdW50ZWQ8R2FtZXBhZExpc3Q+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxH
YW1lcGFkTGlzdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEdhbWVwYWRMaXN0KTsg
fQorICAgIH5HYW1lcGFkTGlzdCgpOworCisgICAgdm9pZCBzZXQodW5zaWduZWQgaW5kZXgsIFBh
c3NSZWZQdHI8R2FtZXBhZD4pOworICAgIEdhbWVwYWQqIGl0ZW0odW5zaWduZWQgaW5kZXgpOwor
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OworCitwcml2YXRlOgorICAgIGVudW0geyBrTWF4
aW11bUdhbWVwYWRzID0gNCB9OworICAgIEdhbWVwYWRMaXN0KCkgeyB9CisgICAgUmVmUHRyPEdh
bWVwYWQ+IG1faXRlbXNba01heGltdW1HYW1lcGFkc107Cit9OworCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKKworI2VuZGlmIC8vIEdhbWVwYWRM
aXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFk
TGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExpc3QuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjI0MmI4MTVkZmFmNDI3ODY1NzNiZjUxYWI1MzhlZjRmYTNkZjU0MjgKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dhbWVwYWQvR2FtZXBhZExp
c3QuaWRsCkBAIC0wLDAgKzEsMzQgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUgbWV0OgorLy8KKy8vIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8g
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorLy8gICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RAorLy8gQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUKKy8vIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKKy8vIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNICisvLyBEQU1BR0UuCisKK21vZHVsZSBkb20geworCisgICAgaW50ZXJm
YWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9R0FNRVBBRCwKKyAgICAgICAgSGFzSW5kZXhHZXR0
ZXIKKyAgICBdIEdhbWVwYWRMaXN0IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbGVuZ3RoOworICAgICAgICBHYW1lcGFkIGl0ZW0oaW4gW09wdGlvbmFsPUNhbGxX
aXRoRGVmYXVsdFZhbHVlXSB1bnNpZ25lZCBsb25nIGluZGV4KTsKKyAgICB9OworCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCmluZGV4IGRlZTkxMTQ1ZjY3NjU1NzZhMTgz
NDY2ZDA5MTYxNTE5NmViZmZiZGMuLjZkOTM1OWFkZDViMTY4MjYzODg2ZjZhYTk4YTBiYjMwMzc5
Y2M2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwCkBAIC00OCw2ICs0
OCw3IEBACiAgICAgJ3dlYmNvcmVfaW5jbHVkZV9kaXJzJzogWwogICAgICAgJy4uLycsCiAgICAg
ICAnLi4vLi4nLAorICAgICAgJy4uL01vZHVsZXMvZ2FtZXBhZCcsCiAgICAgICAnLi4vYWNjZXNz
aWJpbGl0eScsCiAgICAgICAnLi4vYWNjZXNzaWJpbGl0eS9jaHJvbWl1bScsCiAgICAgICAnLi4v
YmluZGluZ3MnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDg4ZDQ1NmM0MzMwNmY1ZWFkMTkyMDAzMGQx
NDAzN2Q1N2IxODg4MzIuLmNkNWYyNTY1MTUzN2VhODNkMWZjMzA2NTljODg1ZjA3MWM4NzkxYzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTExMjksNiArMTEyOSw4IEBACiAgICAgICAgICAgICAnc3Zn
L3Byb3BlcnRpZXMvU1ZHVHJhbnNmb3JtTGlzdFByb3BlcnR5VGVhck9mZi5oJywKICAgICAgICAg
XSwKICAgICAgICAgJ3dlYmNvcmVfYmluZGluZ3NfaWRsX2ZpbGVzJzogWworICAgICAgICAgICAg
J01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmlkbCcsCisgICAgICAgICAgICAnTW9kdWxlcy9nYW1l
cGFkL0dhbWVwYWRMaXN0LmlkbCcsCiAgICAgICAgICAgICAnY3NzL0NTU0NoYXJzZXRSdWxlLmlk
bCcsCiAgICAgICAgICAgICAnY3NzL0NTU0ZvbnRGYWNlUnVsZS5pZGwnLAogICAgICAgICAgICAg
J2Nzcy9DU1NJbXBvcnRSdWxlLmlkbCcsCkBAIC0xNjY1LDYgKzE2NjcsMTAgQEAKICAgICAgICAg
ICAgICdzdmcvU1ZHWm9vbUV2ZW50LmlkbCcsCiAgICAgICAgIF0sCiAgICAgICAgICd3ZWJjb3Jl
X2ZpbGVzJzogWworICAgICAgICAgICAgJ01vZHVsZXMvZ2FtZXBhZC9HYW1lcGFkLmNwcCcsCisg
ICAgICAgICAgICAnTW9kdWxlcy9nYW1lcGFkL0dhbWVwYWQuaCcsCisgICAgICAgICAgICAnTW9k
dWxlcy9nYW1lcGFkL0dhbWVwYWRMaXN0LmNwcCcsCisgICAgICAgICAgICAnTW9kdWxlcy9nYW1l
cGFkL0dhbWVwYWRMaXN0LmgnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmNwcCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdy
aWQuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL1J1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVu
dGltZUVuYWJsZWRGZWF0dXJlcy5oCmluZGV4IDlmZjJiZmM2YWQzMzVmODBhNzkwNzFkNzRlMmZi
MDEyNTUyNTU5MzQuLmNlMmVlNDM5YzcyYThhZjU4NDQ0ZTQyOTQyMDYzNmJlYTk4MWQ5OGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVuYWJsZWRG
ZWF0dXJlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGltZUVu
YWJsZWRGZWF0dXJlcy5oCkBAIC0xNzIsOCArMTcyLDggQEAgcHVibGljOgogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoR0FNRVBBRCkKLSAgICBzdGF0aWMgdm9pZCBzZXRHYW1lcGFkc0VuYWJsZWQoYm9v
bCBpc0VuYWJsZWQpIHsgaXNHYW1lcGFkRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQotICAgIHN0YXRp
YyBib29sIGdhbWVwYWRzRW5hYmxlZCgpIHsgcmV0dXJuIGlzR2FtZXBhZEVuYWJsZWQ7IH0KKyAg
ICBzdGF0aWMgdm9pZCBzZXRXZWJraXRHYW1lcGFkc0VuYWJsZWQoYm9vbCBpc0VuYWJsZWQpIHsg
aXNHYW1lcGFkRW5hYmxlZCA9IGlzRW5hYmxlZDsgfQorICAgIHN0YXRpYyBib29sIHdlYmtpdEdh
bWVwYWRzRW5hYmxlZCgpIHsgcmV0dXJuIGlzR2FtZXBhZEVuYWJsZWQ7IH0KICNlbmRpZgogCiAj
aWYgRU5BQkxFKFFVT1RBKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4IDEwNTIwOTg0
MWI4YTFmNzA2ODg0NTQwMDBhNDMyNzMwM2ZmOTk1YjQuLmYzYmUwY2M0OGZhNDg2NzQxMjM2N2U3
NGRkNzUxNzNiN2E4ZjhhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKQEAgLTMyLDYg
KzMyLDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJHYW1lcGFkTGlzdC5oIgog
I2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2suaCIKICNpbmNs
dWRlICJLVVJMLmgiCkBAIC0zMDQsNCArMzA1LDEyIEBAIHZvaWQgTmF2aWdhdG9yOjp3ZWJraXRH
ZXRVc2VyTWVkaWEoY29uc3QgU3RyaW5nJiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVz
CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShHQU1FUEFEKQorR2FtZXBhZExpc3QqIE5hdmlnYXRv
cjo6d2Via2l0R2FtZXBhZHMoKQoreworICAgIC8vIFN0dWJiZWQgdW50aWwgcGxhdGZvcm0vIGNo
YW5nZXMgbGFuZGVkLgorICAgIHJldHVybiAwOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCmluZGV4IDQ5YzU0ODhjNWIyMzhkMDZhZmI3
ZTU0MWRhNWU5MjE5ZTM2YTM3ZDcuLjViYWJkYzVkZDhmMmY5ZGMyNWE5MTAwY2QyYmY1ZmZmN2Vi
YmZlYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaApAQCAtMzEsNiArMzEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBET01NaW1lVHlwZUFycmF5OwogY2xhc3MgRE9NUGx1Z2luQXJy
YXk7CiBjbGFzcyBGcmFtZTsKK2NsYXNzIEdhbWVwYWRMaXN0OwogY2xhc3MgR2VvbG9jYXRpb247
CiBjbGFzcyBQb2ludGVyTG9jazsKIGNsYXNzIE5hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJh
Y2s7CkBAIC03NCw2ICs3NSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdlYmtpdEdl
dFVzZXJNZWRpYShjb25zdCBTdHJpbmcmIG9wdGlvbnMsIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNl
ck1lZGlhU3VjY2Vzc0NhbGxiYWNrPiwgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVc2VyTWVkaWFFcnJv
ckNhbGxiYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoR0FNRVBB
RCkKKyAgICBHYW1lcGFkTGlzdCogd2Via2l0R2FtZXBhZHMoKTsKKyNlbmRpZgorCiBwcml2YXRl
OgogICAgIE5hdmlnYXRvcihGcmFtZSopOwogICAgIEZyYW1lKiBtX2ZyYW1lOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuaWRsCmluZGV4IDZmZTQzZTY2MGE4NTA3MzMxNDg1M2Y1ODE2MTMxN2E2ZGJm
YTIzODUuLjA4NDdjOGM0NGFjNTIzMGQ4MmM1ZTRhMjE2NTZkNDE5OTk2ODI2OGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5pZGwKQEAgLTYxLDYgKzYxLDggQEAgbW9kdWxlIHdpbmRvdyB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIFtDYWxsYmFjaz1GdW5jdGlvbk9ubHksIE9wdGlvbmFsXSBOYXZpZ2F0b3JVc2VyTWVkaWFF
cnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKICNlbmRpZgorCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9
R0FNRVBBRCwgRW5hYmxlZEF0UnVudGltZV0gR2FtZXBhZExpc3Qgd2Via2l0R2FtZXBhZHM7CiAg
ICAgfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVu
dGltZUZlYXR1cmVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVG
ZWF0dXJlcy5jcHAKaW5kZXggMTI4YTZmYWUxOGVmYzMxMjNhOGY4M2EwMjc2NjFlMzFiYzQxODhm
OC4uNjc1ZTJhMmQxNWM1MGEzOTMwZjQ2MTExNGJmY2YyNjIyMTk3MWY2YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCkBAIC00MTcs
NyArNDE3LDcgQEAgYm9vbCBXZWJSdW50aW1lRmVhdHVyZXM6OmlzVmlkZW9UcmFja0VuYWJsZWQo
KQogdm9pZCBXZWJSdW50aW1lRmVhdHVyZXM6OmVuYWJsZUdhbWVwYWQoYm9vbCBlbmFibGUpCiB7
CiAjaWYgRU5BQkxFKEdBTUVQQUQpCi0gICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0R2Ft
ZXBhZHNFbmFibGVkKGVuYWJsZSk7CisgICAgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2V0V2Vi
a2l0R2FtZXBhZHNFbmFibGVkKGVuYWJsZSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShlbmFi
bGUpOwogI2VuZGlmCkBAIC00MjYsNyArNDI2LDcgQEAgdm9pZCBXZWJSdW50aW1lRmVhdHVyZXM6
OmVuYWJsZUdhbWVwYWQoYm9vbCBlbmFibGUpCiBib29sIFdlYlJ1bnRpbWVGZWF0dXJlczo6aXNH
YW1lcGFkRW5hYmxlZCgpCiB7CiAjaWYgRU5BQkxFKEdBTUVQQUQpCi0gICAgcmV0dXJuIFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmdhbWVwYWRzRW5hYmxlZCgpOworICAgIHJldHVybiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjp3ZWJraXRHYW1lcGFkc0VuYWJsZWQoKTsKICNlbHNlCiAgICAgcmV0
dXJuIGZhbHNlOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9D
aGFuZ2VMb2cKaW5kZXggNWJlNjRhYjZjNjU5NzcxMzEyMWM3MTE1NTMwMWYyZWJjMDkwN2I0Zi4u
NzExZGZmYjI1ZjRmZDhjMGFiMTA3ZmZkOTExN2Q2OTFlM2ExZjg5NyAxMDA2NDQKLS0tIGEvVG9v
bHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEx
LTExLTE4ICBTY290dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBJ
REwgY2hhbmdlcyBmb3IgZ2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJ1bnRpbWUgZW5hYmxlIGdhbWVwYWQgaW4gY2hyb21pdW0g
dGVzdCBzaGVsbC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bC5jcHA6CisgICAgICAgIChUZXN0U2hlbGw6OlRlc3RTaGVsbCk6CisKIDIwMTEtMTEtMTggIEFk
YW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIElnbm9yZSBhbiBBTkdMRSBs
ZWFrIHRoYXQgaXMgbm90IFdlYktpdCdzIGZhdWx0CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCBjYjFlMjE5YjA3NjZiOGI5MDllNjNjMGQ4ZGIwMTJj
MzI4ZmJkNDk4Li44NTA3ZjI0YzAyMjMzYmNkMTA4ODExZjBiYzcxN2I1NjNkZTdjZjA4IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKQEAgLTEyMiw2ICsx
MjIsNyBAQCBUZXN0U2hlbGw6OlRlc3RTaGVsbChib29sIHRlc3RTaGVsbE1vZGUpCiAgICAgV2Vi
UnVudGltZUZlYXR1cmVzOjplbmFibGVNZWRpYVN0cmVhbSh0cnVlKTsKICAgICBXZWJSdW50aW1l
RmVhdHVyZXM6OmVuYWJsZVdlYkF1ZGlvKHRydWUpOyAKICAgICBXZWJSdW50aW1lRmVhdHVyZXM6
OmVuYWJsZVZpZGVvVHJhY2sodHJ1ZSk7CisgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVH
YW1lcGFkKHRydWUpOwogCiAgICAgbV93ZWJQZXJtaXNzaW9ucyA9IGFkb3B0UHRyKG5ldyBXZWJQ
ZXJtaXNzaW9ucyh0aGlzKSk7CiAgICAgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlciA9IGFkb3B0
UHRyKG5ldyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcih0aGlzKSk7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTllZjBhMmE4
ZWNiOTdlOTkwNzkzNDc3OTA5ZDUzNGY1NDBkNTBhOS4uZTIxOTA4NDM1MTlkODcxMGEyYzQwYzEx
ZmE3NTFkMDhmNGJmMjFjOSAxMDA3NTUKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDExLTExLTE4ICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBJREwgY2hhbmdlcyBm
b3IgZ2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MTc1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCBiYXNpYyBhcGkgZXhpc3RlbmNlIHRlc3QuCisKKyAgICAgICAgKiBnYW1l
cGFkL2dhbWVwYWQtYXBpLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZ2FtZXBhZC9n
YW1lcGFkLWFwaS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBnYW1lcGFkL2dhbWVwYWQtdGVzdC5q
czogQWRkZWQuCisgICAgICAgIChsb2dDb25zb2xlKToKKyAgICAgICAgKHRlc3RFeHBlY3RlZCk6
CisgICAgICAgIChyZXBvcnRFeHBlY3RlZCk6CisgICAgICAgICh3YWl0Rm9yRXZlbnRBbmRFbmQp
OgorICAgICAgICAod2FpdEZvckV2ZW50Ll9ldmVudENhbGxiYWNrKToKKyAgICAgICAgKHdhaXRG
b3JFdmVudCk6CisgICAgICAgICh3YWl0Rm9yRXZlbnRBbmRUZXN0Ll9ldmVudENhbGxiYWNrKToK
KyAgICAgICAgKHdhaXRGb3JFdmVudEFuZFRlc3QpOgorICAgICAgICAod2FpdEZvckV2ZW50VGVz
dEFuZEVuZCk6CisgICAgICAgIChlbmRUZXN0KToKKyAgICAgICAgKGxvZ1Jlc3VsdCk6CisgICAg
ICAgIChjb25zb2xlV3JpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9t
L25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxh
dGZvcm0vZWZsL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1NraXBwZWQ6CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vcXQvU2tpcHBl
ZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vU2tpcHBlZDoKKyAgICAgICAgKiBwbGF0Zm9ybS93
aW5jYWlyby9Ta2lwcGVkOgorCiAyMDExLTExLTE4ICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIExheW91dCBUZXN0IGFjY2Vzc2liaWxpdHkvbG9hZGluZy1pZnJh
bWUtc2VuZHMtbm90aWZpY2F0aW9uLmh0bWwgaXMgc2xvdyBvbiBXaW4gZGJnCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBpLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5MDBlYmYz
YWVkN2QwNTBiZWQ4MzJlYWZjYzA0ZjBhNTRkMDVjNGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBpLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAK
K0VYUEVDVEVEIChuYXZpZ2F0b3Iud2Via2l0R2FtZXBhZHMgIT09ICd1bmRlZmluZWQnKSBPSwor
RU5EIE9GIFRFU1QKK01ha2Ugc3VyZSB0aGUgbWFpbiBwb2xsaW5nIGFjY2VzcyBwb2ludCBleGlz
dHMgb24gbmF2aWdhdG9yLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFk
LWFwaS5odG1sIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLWFwaS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI1ZjBlMzQ2NDRiNmMxY2RlZDY5OTAyZDA1ZDM3ZjNjNTA3YTlmYWUKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtYXBpLmh0bWwKQEAgLTAsMCArMSw5
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxib2R5PgorPHNjcmlwdCBzcmM9ImdhbWVwYWQtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHRlc3RFeHBlY3RlZCgibmF2aWdhdG9yLndlYmtp
dEdhbWVwYWRzIiwgdW5kZWZpbmVkLCAiIT09Iik7CisgICAgZW5kVGVzdCgpOworPC9zY3JpcHQ+
Cis8cD5NYWtlIHN1cmUgdGhlIG1haW4gcG9sbGluZyBhY2Nlc3MgcG9pbnQgZXhpc3RzIG9uIG5h
dmlnYXRvci48L3A+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9nYW1lcGFkL2dh
bWVwYWQtdGVzdC5qcyBiL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC10ZXN0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjI2MWI0ZjNjMzBlOTljZjM0NmU3ZDdkNGNmNGFjZjY5ZTQ2MmVkMjQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtdGVzdC5qcwpAQCAtMCwwICsx
LDEyNiBAQAordmFyIGNvbnNvbGUgPSBudWxsOwordmFyIHByaW50RnVsbFRlc3REZXRhaWxzID0g
dHJ1ZTsgLy8gVGhpcyBpcyBvcHRpb25hbHkgc3dpdGNoZWQgb2YgYnkgdGVzdCB3aG9zZSB0ZXN0
ZWQgdmFsdWVzIGNhbiBkaWZmZXIuIChzZWUgZGlzYWJsZUZ1bGxUZXN0RGV0YWlsc1ByaW50aW5n
KCkpCisKK2xvZ0NvbnNvbGUoKTsKKworaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZ0NvbnNvbGUoKQor
eworICAgIGlmICghY29uc29sZSAmJiBkb2N1bWVudC5ib2R5KSB7CisgICAgICAgIGNvbnNvbGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChjb25zb2xlKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnNvbGU7Cit9CisKK2Z1
bmN0aW9uIHRlc3RFeHBlY3RlZCh0ZXN0RnVuY1N0cmluZywgZXhwZWN0ZWQsIGNvbXBhcmlzb24p
Cit7CisgICAgdHJ5IHsKKyAgICAgICAgdmFyIG9ic2VydmVkID0gZXZhbCh0ZXN0RnVuY1N0cmlu
Zyk7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgY29uc29sZVdyaXRlKGV4KTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChjb21wYXJpc29uID09PSB1bmRlZmluZWQpCisg
ICAgICAgIGNvbXBhcmlzb24gPSAnPT0nOworCisgICAgdmFyIHN1Y2Nlc3MgPSBmYWxzZTsKKyAg
ICBzd2l0Y2ggKGNvbXBhcmlzb24pCisgICAgeworICAgICAgICBjYXNlICc8JzogIHN1Y2Nlc3Mg
PSBvYnNlcnZlZCA8ICBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJzw9Jzogc3VjY2Vz
cyA9IG9ic2VydmVkIDw9IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPic6ICBzdWNj
ZXNzID0gb2JzZXJ2ZWQgPiAgZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc+PSc6IHN1
Y2Nlc3MgPSBvYnNlcnZlZCA+PSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJyE9Jzog
c3VjY2VzcyA9IG9ic2VydmVkICE9IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnIT09
Jzogc3VjY2VzcyA9IG9ic2VydmVkICE9PSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2Ug
Jz09Jzogc3VjY2VzcyA9IG9ic2VydmVkID09IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2Fz
ZSAnPT09Jzogc3VjY2VzcyA9IG9ic2VydmVkID09PSBleHBlY3RlZDsgYnJlYWs7CisgICAgfQor
CisgICAgcmVwb3J0RXhwZWN0ZWQoc3VjY2VzcywgdGVzdEZ1bmNTdHJpbmcsIGNvbXBhcmlzb24s
IGV4cGVjdGVkLCBvYnNlcnZlZCkKK30KKwordmFyIHRlc3ROdW1iZXIgPSAwOworCitmdW5jdGlv
biByZXBvcnRFeHBlY3RlZChzdWNjZXNzLCB0ZXN0RnVuY1N0cmluZywgY29tcGFyaXNvbiwgZXhw
ZWN0ZWQsIG9ic2VydmVkKQoreworICAgIHRlc3ROdW1iZXIrKzsKKworICAgIHZhciBtc2cgPSAi
VGVzdCAiICsgdGVzdE51bWJlcjsKKworICAgIGlmIChwcmludEZ1bGxUZXN0RGV0YWlscyB8fCAh
c3VjY2VzcykKKyAgICAgICAgbXNnID0gIkVYUEVDVEVEICg8ZW0+IiArIHRlc3RGdW5jU3RyaW5n
ICsgIiA8L2VtPiIgKyBjb21wYXJpc29uICsgIiAnPGVtPiIgKyBleHBlY3RlZCArICI8L2VtPicp
IjsKKworICAgIGlmICghc3VjY2VzcykKKyAgICAgICAgbXNnICs9ICAiLCBPQlNFUlZFRCAnPGVt
PiIgKyBvYnNlcnZlZCArICI8L2VtPiciOworCisgICAgbG9nUmVzdWx0KHN1Y2Nlc3MsIG1zZyk7
Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZEVuZChlbGVtZW50LCBldmVudE5hbWUsIGZ1
bmNTdHJpbmcpCit7CisgICAgd2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuY1N0
cmluZywgdHJ1ZSkKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFt
ZSwgZnVuYywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQpCisg
ICAgeworICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudE5hbWUgKyAiKSIpOwor
CisgICAgICAgIGlmIChmdW5jKQorICAgICAgICAgICAgZnVuYyhldmVudCk7CisKKyAgICAgICAg
aWYgKGVuZGl0KQorICAgICAgICAgICAgZW5kVGVzdCgpOworICAgIH0KKworICAgIGVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF9ldmVudENhbGxiYWNrKTsKK30KKworZnVuY3Rp
b24gd2FpdEZvckV2ZW50QW5kVGVzdChlbGVtZW50LCBldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5n
LCBlbmRpdCkKK3sKKyAgICBmdW5jdGlvbiBfZXZlbnRDYWxsYmFjayhldmVudCkKKyAgICB7Cisg
ICAgICAgIGxvZ1Jlc3VsdChldmFsKHRlc3RGdW5jU3RyaW5nKSwgIkVWRU5UKCIgKyBldmVudE5h
bWUgKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIik7CisgICAgICAgIGlmIChlbmRp
dCkKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICBlbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHdhaXRG
b3JFdmVudFRlc3RBbmRFbmQoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZykKK3sK
KyAgICB3YWl0Rm9yRXZlbnRBbmRUZXN0KGVsZW1lbnQsIGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJp
bmcsIHRydWUpOworfQorCit2YXIgdGVzdEVuZGVkID0gZmFsc2U7CisKK2Z1bmN0aW9uIGVuZFRl
c3QoKQoreworICAgIGNvbnNvbGVXcml0ZSgiRU5EIE9GIFRFU1QiKTsKKyAgICB0ZXN0RW5kZWQg
PSB0cnVlOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nUmVzdWx0
KHN1Y2Nlc3MsIHRleHQpCit7CisgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgIGNvbnNvbGVXcml0
ZSh0ZXh0ICsgIiA8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPk9LPC9zcGFuPiIpOworICAgIGVs
c2UKKyAgICAgICAgY29uc29sZVdyaXRlKHRleHQgKyAiIDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQn
PkZBSUw8L3NwYW4+Iik7Cit9CisKK2Z1bmN0aW9uIGNvbnNvbGVXcml0ZSh0ZXh0KQoreworICAg
IGlmICh0ZXN0RW5kZWQpCisgICAgICAgIHJldHVybjsKKyAgICBsb2dDb25zb2xlKCkuaW5uZXJI
VE1MICs9IHRleHQgKyAiPGJyPiI7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vbmF2aWdhdG9yLWRl
dGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dAppbmRleCA3NTQyNWExZjc4YTM5ODE4YzNkMTU1
MTgzYzIxY2EwN2M1Y2Y3YjhmLi43MDk3M2IyYmFhNTZmYjEzODUyZTkwMjE4OGQ3ZGE4YmI4MGZm
YWY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9u
YXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1l
eHBlY3RlZC50eHQKQEAgLTE3LDYgKzE3LDcgQEAgbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xI
YW5kbGVyKCkgdGhyZXcgZXJyIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMKIG5hdmln
YXRvci51c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRvci52
ZW5kb3JTdWIgaXMgT0sKK25hdmlnYXRvci53ZWJraXRHYW1lcGFkcyBpcyBPSwogbmF2aWdhdG9y
LmFwcENvZGVOYW1lIGlzIE9LCiBuYXZpZ2F0b3IuYXBwTmFtZSBpcyBPSwogbmF2aWdhdG9yLmFw
cFZlcnNpb24gaXMgT0sKQEAgLTM0LDQgKzM1LDUgQEAgbmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9j
b2xIYW5kbGVyKCkgdGhyZXcgZXJyIFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMKIG5h
dmlnYXRvci51c2VyQWdlbnQgaXMgT0sKIG5hdmlnYXRvci52ZW5kb3IgaXMgT0sKIG5hdmlnYXRv
ci52ZW5kb3JTdWIgaXMgT0sKK25hdmlnYXRvci53ZWJraXRHYW1lcGFkcyBpcyBPSwogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2VmbC9Ta2lwcGVkCmluZGV4IDVmODE0NDMyNzBlY2EwMTllNDJmZDdmODk5ZjM3NWY2
NWY2YzgwM2EuLmQ1NjQ5OWM5M2E2ZTBlZTY1OTA4NmU1OWNiYWVjY2I5NjgwYzhiNTIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9Ta2lwcGVkCkBAIC0xOTA5LDYgKzE5MDksOSBAQCBmYXN0L2Zvcm1zL21v
bnRoCiBmYXN0L2Zvcm1zL3RpbWUKIGZhc3QvZm9ybXMvd2VlawogCisjIEVOQUJMRV9HQU1FUEFE
IG5vdCBlbmFibGVkLgorZ2FtZXBhZC8KKwogIyBNdXRhdGlvbk9ic2VydmVycyBhcmUgbmV0IHll
dCBlbmFibGVkLiBodHRwOi8vd2Via2l0Lm9yZy9iLzY4NzI5CiBmYXN0L211dGF0aW9uCiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL1NraXBwZWQKaW5kZXggNzE5OGYzYTQ2NTAwYTFiZmZiYjM0M2I5NTBlNGZl
NmIxZjk4MWY5NC4uNmYwNDE4ZmQyMmY5NzRlOTk2NzQ4N2U3YjI0M2VkNGUxMTI0M2UwOSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKQEAgLTI1OCw2ICsyNTgsOSBAQCBmYXN0L2Zvcm1zL21v
bnRoCiBmYXN0L2Zvcm1zL3RpbWUKIGZhc3QvZm9ybXMvd2VlawogCisjIEVOQUJMRV9HQU1FUEFE
IG5vdCBlbmFibGVkLgorZ2FtZXBhZC8KKwogIyBTcGVlY2ggaW5wdXQgaXMgbm90IHlldCBlbmFi
bGVkLgogZmFzdC9zcGVlY2gKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAppbmRleCAwZDAxMzgx
ODk3NGVjNmFlZTdjY2FhNDhjZjJkY2IwYzdiYTM0Nzc2Li40ZmY3ODU2N2RjZTYxNGJjYjNiZGZm
MjVmYjdmNzRmNmE2ZjExOTIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
U2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZApAQCAtMjE0LDYg
KzIxNCw5IEBAIGZhc3QvZm9ybXMvbW9udGgKIGZhc3QvZm9ybXMvdGltZQogZmFzdC9mb3Jtcy93
ZWVrCiAKKyMgRU5BQkxFX0dBTUVQQUQgbm90IGVuYWJsZWQuCitnYW1lcGFkLworCiAjIFNwZWVj
aCBpbnB1dCBpcyBub3QgeWV0IGVuYWJsZWQuCiBmYXN0L3NwZWVjaAogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZAppbmRleCAyYmMzZWY2NmYzYWU1ZGQxYjdiMWJiZmJmMWExYjEwMzJjNjAyNWUxLi5h
ZGFlYmNlOWMyYTZjZmJhODYyMjlmZGNlMzkzOThmODY4OGRhZGJiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L1NraXBwZWQKQEAgLTg5LDYgKzg5LDkgQEAgZmFzdC9mb3Jtcy9tb250aAogZmFzdC9mb3Jtcy90
aW1lCiBmYXN0L2Zvcm1zL3dlZWsKIAorIyBFTkFCTEVfR0FNRVBBRCBub3QgZW5hYmxlZC4KK2dh
bWVwYWQvCisKICMgRU5BQkxFKElOUFVUX1NQRUVDSCkgaXMgZGlzYWJsZWQuCiBmYXN0L3NwZWVj
aAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCmluZGV4IDI4YTUzMGM3Y2YwM2YyODdmZTc1YjJh
ZDQyN2VjOWYxNDE1YjAyYjQuLjRjMzRiNDkzZTU3MDVkNWY4NGYyNGVmY2Y0OWNkYWIzZWJmMmRm
NDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3dpbi9Ta2lwcGVkCkBAIC0xMTIyLDYgKzExMjIsOSBAQCBmYXN0
L2Zvcm1zL21vbnRoCiBmYXN0L2Zvcm1zL3RpbWUKIGZhc3QvZm9ybXMvd2VlawogCisjIEVOQUJM
RV9HQU1FUEFEIG5vdCBlbmFibGVkLgorZ2FtZXBhZC8KKwogIyBTcGVlY2ggaW5wdXQgaXMgbm90
IHlldCBlbmFibGVkLgogZmFzdC9zcGVlY2gKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luY2Fpcm8vU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1Nr
aXBwZWQKaW5kZXggODZhNDQ3YzBkOWQ1MzUxMTU0MzI3MmIxYjE2OGI5ZmYyZWJjYWQ1Zi4uNmJh
MjMwOTgxMzQ2MTBjZjc4YmQzODIxMjA5MDhiYjE2Y2QxYzdhNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW5jYWlyby9Ta2lwcGVkCkBAIC0xNjM5LDYgKzE2MzksOSBAQCBmYXN0L2Zvcm1zL21vbnRo
CiBmYXN0L2Zvcm1zL3RpbWUKIGZhc3QvZm9ybXMvd2VlawogCisjIEVOQUJMRV9HQU1FUEFEIG5v
dCBlbmFibGVkLgorZ2FtZXBhZC8KKwogIyBTcGVlY2ggaW5wdXQgaXMgbm90IHlldCBlbmFibGVk
LgogZmFzdC9zcGVlY2gKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115898</attachid>
            <date>2011-11-18 15:59:19 -0800</date>
            <delta_ts>2011-11-18 18:03:30 -0800</delta_ts>
            <desc>retreat on Modules</desc>
            <filename>bug-71753-20111118155918.patch</filename>
            <type>text/plain</type>
            <size>31518</size>
            <attacher name="Scott Graham">scottmg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAwODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjVlMTU2MGVlNDA1OTJj
NjVmMTdlZWIwMTQ2OWIyZjgyZDVkNTBhOS4uZDA2MWMxN2M0YTQ1ZTZlODQ1MjNmNWFmNTZiZDJm
YzY1ZTc0ZjViMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTExLTE4ICBTY290
dCBHcmFoYW0gIDxzY290dG1nQGNocm9taXVtLm9yZz4KKworICAgICAgICBJREwgY2hhbmdlcyBm
b3IgZ2FtZXBhZCBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MTc1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElETCBjaGFuZ2VzIGFuZCBhc3NvY2lhdGVkIHBsdW1iaW5nIHRvIGV4cG9zZSBs
aXN0IG9mIGdhbWVwYWQgb2JqZWN0cworICAgICAgICBvbiBuYXZpZ2F0b3Igb2JqZWN0IChwZXIg
Y3VycmVudCBzcGVjKS4gRnVsbCBwYXRjaCBpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njk0NTEuIE9ubHkgYmFzaWMgZXhpc3RlbmNlCisgICAgICAg
IHRlc3QgdW50aWwgbW9yZSBwbHVtYmluZyBpbiBmdXR1cmUgcGF0Y2hlcy4KKworICAgICAgICBU
ZXN0OiBnYW1lcGFkL2dhbWVwYWQtYXBpLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
KyAgICAgICAgKiBiaW5kaW5ncy9nZW5lcmljL1J1bnRpbWVFbmFibGVkRmVhdHVyZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdEdhbWVwYWRz
RW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjp3ZWJr
aXRHYW1lcGFkc0VuYWJsZWQpOgorICAgICAgICAqIHBhZ2UvR2FtZXBhZC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6R2FtZXBhZCk6CisgICAgICAgIChXZWJDb3JlOjpH
YW1lcGFkOjpheGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWQ6OmJ1dHRvbnMpOgorICAg
ICAgICAoV2ViQ29yZTo6R2FtZXBhZDo6fkdhbWVwYWQpOgorICAgICAgICAqIHBhZ2UvR2FtZXBh
ZC5oOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0dhbWVwYWQuaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBwYWdlL0dhbWVwYWRMaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHYW1lcGFk
TGlzdDo6fkdhbWVwYWRMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpzZXQp
OgorICAgICAgICAoV2ViQ29yZTo6R2FtZXBhZExpc3Q6Omxlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpHYW1lcGFkTGlzdDo6aXRlbSk6CisgICAgICAgICogcGFnZS9HYW1lcGFkTGlzdC5oOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkdhbWVwYWRMaXN0OjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6R2FtZXBhZExpc3Q6OkdhbWVwYWRMaXN0KToKKyAgICAgICAgKiBwYWdlL0dhbWVw
YWRMaXN0LmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TmF2aWdhdG9yOjp3ZWJraXRHYW1lcGFkcyk6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6CisKIDIwMTEtMTEtMTgg
IFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQXBwZWFy
YW5jZSBvZiBjb21wb3VuZCB0cmFuc2Zvcm0gYW5pbWF0aW9ucyB1bmRlciBhcHBzIGxpbmtlZCBv
biBTbm93TGVvcGFyZCBpcyBpbmNvcnJlY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXgg
ODRmM2E5YWNiNDI4ODFiMjkwZTRiNWU0YjBiZDZhYmY1NTdjY2ViMS4uMmMyMDM2MTZhMGYyMmVm
MjZjYjViOGIwNjNjZGJmOWExY2FmM2Q1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNiBAQAorMjAxMS0xMS0xOCAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgSURMIGNoYW5nZXMgZm9yIGdhbWVwYWQgc3VwcG9ydAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgdG8gdXNlIHZl
bmRvci1wcmVmaXhlZCBlbmFibGUuCisKKyAgICAgICAgKiBzcmMvV2ViUnVudGltZUZlYXR1cmVz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVHYW1lcGFk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUnVudGltZUZlYXR1cmVzOjppc0dhbWVwYWRFbmFibGVk
KToKKwogMjAxMS0xMS0xNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogZGlzcGF0Y2ggbWVzc2FnZXMgZnJvbSB0aGUgZnJvbnQt
ZW5kIHRvIHRoZSBiYWNrZW5kIGFzeW5jaHJvbm91c2x5LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IDg4
ZDQ1NmM0MzMwNmY1ZWFkMTkyMDAzMGQxNDAzN2Q1N2IxODg4MzIuLjFmNTI2OGUyODRjNjhmZmVj
N2M5MjIzMDM2OGU2YzQzNDE5NjE0YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTE0MDIsNiArMTQw
Miw4IEBACiAgICAgICAgICAgICAncGFnZS9ET01TZWxlY3Rpb24uaWRsJywKICAgICAgICAgICAg
ICdwYWdlL0RPTVdpbmRvdy5pZGwnLAogICAgICAgICAgICAgJ3BhZ2UvRXZlbnRTb3VyY2UuaWRs
JywKKyAgICAgICAgICAgICdwYWdlL0dhbWVwYWQuaWRsJywKKyAgICAgICAgICAgICdwYWdlL0dh
bWVwYWRMaXN0LmlkbCcsCiAgICAgICAgICAgICAncGFnZS9HZW9sb2NhdGlvbi5pZGwnLAogICAg
ICAgICAgICAgJ3BhZ2UvR2VvcG9zaXRpb24uaWRsJywKICAgICAgICAgICAgICdwYWdlL0hpc3Rv
cnkuaWRsJywKQEAgLTI5NDksNiArMjk1MSwxMCBAQAogICAgICAgICAgICAgJ3BhZ2UvRnJhbWVB
Y3Rpb25TY2hlZHVsZXIuaCcsCiAgICAgICAgICAgICAncGFnZS9GcmFtZVRyZWUuY3BwJywKICAg
ICAgICAgICAgICdwYWdlL0ZyYW1lVmlldy5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBh
ZC5jcHAnLAorICAgICAgICAgICAgJ3BhZ2UvR2FtZXBhZC5oJywKKyAgICAgICAgICAgICdwYWdl
L0dhbWVwYWRMaXN0LmNwcCcsCisgICAgICAgICAgICAncGFnZS9HYW1lcGFkTGlzdC5oJywKICAg
ICAgICAgICAgICdwYWdlL0dlb2xvY2F0aW9uLmNwcCcsCiAgICAgICAgICAgICAncGFnZS9HZW9s
b2NhdGlvbkNvbnRyb2xsZXIuY3BwJywKICAgICAgICAgICAgICdwYWdlL0dyb3VwU2V0dGluZ3Mu
Y3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvUnVudGlt
ZUVuYWJsZWRGZWF0dXJlcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgKaW5kZXggOWZmMmJmYzZhZDMzNWY4MGE3OTA3MWQ3NGUyZmIw
MTI1NTI1NTkzNC4uY2UyZWU0MzljNzJhOGFmNTg0NDRlNDI5NDIwNjM2YmVhOTgxZDk4YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5hYmxlZEZl
YXR1cmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9SdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgKQEAgLTE3Miw4ICsxNzIsOCBAQCBwdWJsaWM6CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShHQU1FUEFEKQotICAgIHN0YXRpYyB2b2lkIHNldEdhbWVwYWRzRW5hYmxlZChib29s
IGlzRW5hYmxlZCkgeyBpc0dhbWVwYWRFbmFibGVkID0gaXNFbmFibGVkOyB9Ci0gICAgc3RhdGlj
IGJvb2wgZ2FtZXBhZHNFbmFibGVkKCkgeyByZXR1cm4gaXNHYW1lcGFkRW5hYmxlZDsgfQorICAg
IHN0YXRpYyB2b2lkIHNldFdlYmtpdEdhbWVwYWRzRW5hYmxlZChib29sIGlzRW5hYmxlZCkgeyBp
c0dhbWVwYWRFbmFibGVkID0gaXNFbmFibGVkOyB9CisgICAgc3RhdGljIGJvb2wgd2Via2l0R2Ft
ZXBhZHNFbmFibGVkKCkgeyByZXR1cm4gaXNHYW1lcGFkRW5hYmxlZDsgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoUVVPVEEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dhbWVwYWQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWVkMThk
ZGRlMWM3YTZhYjAzYWEyMjhkZWUxYzcyZDQ4YjU2MmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmNwcApAQCAtMCwwICsxLDU1IEBACisvLyBDb3B5cmln
aHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLworLy8gUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKy8vCisvLyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorLy8gMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKy8vICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisv
LworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKy8vIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorLy8gSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UKKy8vIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFCisvLyBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorLy8gREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IKKy8vIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisvLyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKy8vIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkKKy8vIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorLy8gREFNQUdFLgorCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2FtZXBhZC5oIgorCisjaWYgRU5BQkxFKEdBTUVQ
QUQpCisKKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitHYW1lcGFkOjpHYW1lcGFkKCkKK3sKK30KKwordm9pZCBHYW1lcGFkOjpheGVzKHVu
c2lnbmVkIGNvdW50LCBmbG9hdCogZGF0YSkKK3sKKyAgICBtX2F4ZXMucmVzaXplKGNvdW50KTsK
KyAgICBzdGQ6OmNvcHkoZGF0YSwgZGF0YSArIGNvdW50LCBtX2F4ZXMuYmVnaW4oKSk7Cit9CisK
K3ZvaWQgR2FtZXBhZDo6YnV0dG9ucyh1bnNpZ25lZCBjb3VudCwgZmxvYXQqIGRhdGEpCit7Cisg
ICAgbV9idXR0b25zLnJlc2l6ZShjb3VudCk7CisgICAgc3RkOjpjb3B5KGRhdGEsIGRhdGEgKyBj
b3VudCwgbV9idXR0b25zLmJlZ2luKCkpOworfQorCitHYW1lcGFkOjp+R2FtZXBhZCgpCit7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0dhbWVwYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjNiMDc3MGQyZDZkY2ZjZDZmMzBhZTdiYzA3
Y2FmYmJkMjM2YzQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1l
cGFkLmgKQEAgLTAsMCArMSw3MyBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
CisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2lmbmRlZiBHYW1lcGFkX2gKKyNkZWZpbmUg
R2FtZXBhZF9oCisKKyNpZiBFTkFCTEUoR0FNRVBBRCkKKworI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdhbWVwYWQ6IHB1YmxpYyBS
ZWZDb3VudGVkPEdhbWVwYWQ+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxHYW1l
cGFkPiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBHYW1lcGFk
KTsKKyAgICB9CisgICAgfkdhbWVwYWQoKTsKKworICAgIHR5cGVkZWYgVmVjdG9yPGZsb2F0PiBG
bG9hdFZlY3RvcjsKKworICAgIGNvbnN0IFN0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBtX2lk
OyB9CisgICAgdm9pZCBpZChjb25zdCBTdHJpbmcmIGlkKSB7IG1faWQgPSBpZDsgfQorCisgICAg
dW5zaWduZWQgaW5kZXgoKSBjb25zdCB7IHJldHVybiBtX2luZGV4OyB9CisgICAgdm9pZCBpbmRl
eCh1bnNpZ25lZCB2YWwpIHsgbV9pbmRleCA9IHZhbDsgfQorCisgICAgdW5zaWduZWQgbG9uZyBs
b25nIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CisgICAgdm9pZCB0
aW1lc3RhbXAodW5zaWduZWQgbG9uZyBsb25nIHZhbCkgeyBtX3RpbWVzdGFtcCA9IHZhbDsgfQor
CisgICAgY29uc3QgRmxvYXRWZWN0b3ImIGF4ZXMoKSBjb25zdCB7IHJldHVybiBtX2F4ZXM7IH0K
KyAgICB2b2lkIGF4ZXModW5zaWduZWQgY291bnQsIGZsb2F0KiBkYXRhKTsKKworICAgIGNvbnN0
IEZsb2F0VmVjdG9yJiBidXR0b25zKCkgY29uc3QgeyByZXR1cm4gbV9idXR0b25zOyB9CisgICAg
dm9pZCBidXR0b25zKHVuc2lnbmVkIGNvdW50LCBmbG9hdCogZGF0YSk7CisKK3ByaXZhdGU6Cisg
ICAgR2FtZXBhZCgpOworICAgIFN0cmluZyBtX2lkOworICAgIHVuc2lnbmVkIG1faW5kZXg7Cisg
ICAgdW5zaWduZWQgbG9uZyBsb25nIG1fdGltZXN0YW1wOworICAgIEZsb2F0VmVjdG9yIG1fYXhl
czsKKyAgICBGbG9hdFZlY3RvciBtX2J1dHRvbnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoR0FNRVBBRCkKKworI2VuZGlmIC8vIEdhbWVwYWRfaApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvR2FtZXBhZC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE0OWIwNWY1ZTUyYjlkZWE1ZDU0OWFh
ZjcxZjM0NmY1MzczZDA3ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
R2FtZXBhZC5pZGwKQEAgLTAsMCArMSwzNiBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisv
LyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisv
LyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworbW9kdWxlIGRvbSB7CisKKyAgICBp
bnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1HQU1FUEFECisgICAgXSBHYW1lcGFkIHsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaW5kZXg7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0YW1wOworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgZmxvYXRbXSBheGVzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZmxvYXRbXSBi
dXR0b25zOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2Ft
ZXBhZExpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTY5MzRlZGQyNTQ0ODYxMzc5MGY4OTYzNjAxMjI0ZDU0MTFjMGRhMAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvR2FtZXBhZExpc3QuY3BwCkBAIC0wLDAgKzEs
NTYgQEAKKy8vIENvcHlyaWdodCAoQykgMjAxMSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorLy8KKy8vIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisvLyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorLy8gICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorLy8g
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorLy8gQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisvLyBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorLy8gQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKy8vIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMCisvLyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorLy8gU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKy8v
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVAorLy8gTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorLy8gT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICisv
LyBEQU1BR0UuCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHYW1lcGFkTGlzdC5o
IgorCisjaW5jbHVkZSAiR2FtZXBhZC5oIgorCisjaWYgRU5BQkxFKEdBTUVQQUQpCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworR2FtZXBhZExpc3Q6On5HYW1lcGFkTGlzdCgpCit7Cit9CisKK3Zv
aWQgR2FtZXBhZExpc3Q6OnNldCh1bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0cjxHYW1lcGFkPiBn
YW1lcGFkKQoreworICAgIGlmIChpbmRleCA+PSBrTWF4aW11bUdhbWVwYWRzKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9pdGVtc1tpbmRleF0gPSBnYW1lcGFkOworfQorCit1bnNpZ25lZCBHYW1l
cGFkTGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4ga01heGltdW1HYW1lcGFkczsK
K30KKworR2FtZXBhZCogR2FtZXBhZExpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpCit7CisgICAg
cmV0dXJuIGluZGV4IDwgbGVuZ3RoKCkgPyBtX2l0ZW1zW2luZGV4XS5nZXQoKSA6IDA7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShHQU1FUEFEKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9HYW1lcGFkTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIzM2Y4ZmVkMGFkMzY3MmYxNDUyYmI4
NzU0NWNlMjg0Y2NiYzI2OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0dhbWVwYWRMaXN0LmgKQEAgLTAsMCArMSw1NyBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
CisvLyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
CisvLyBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworI2lmbmRlZiBHYW1lcGFkTGlz
dF9oCisjZGVmaW5lIEdhbWVwYWRMaXN0X2gKKworI2lmIEVOQUJMRShHQU1FUEFEKQorCisjaW5j
bHVkZSAiR2FtZXBhZC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKwordHlwZWRlZiBWZWN0b3I8UmVmUHRyPEdhbWVwYWQ+ID4gR2FtZXBhZFZlY3Rv
cjsKKworY2xhc3MgR2FtZXBhZExpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxHYW1lcGFkTGlzdD4g
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdhbWVwYWRMaXN0PiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgR2FtZXBhZExpc3QpOyB9CisgICAgfkdhbWVwYWRMaXN0KCk7
CisKKyAgICB2b2lkIHNldCh1bnNpZ25lZCBpbmRleCwgUGFzc1JlZlB0cjxHYW1lcGFkPik7Cisg
ICAgR2FtZXBhZCogaXRlbSh1bnNpZ25lZCBpbmRleCk7CisgICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3Q7CisKK3ByaXZhdGU6CisgICAgZW51bSB7IGtNYXhpbXVtR2FtZXBhZHMgPSA0IH07Cisg
ICAgR2FtZXBhZExpc3QoKSB7IH0KKyAgICBSZWZQdHI8R2FtZXBhZD4gbV9pdGVtc1trTWF4aW11
bUdhbWVwYWRzXTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVO
QUJMRShHQU1FUEFEKQorCisjZW5kaWYgLy8gR2FtZXBhZExpc3RfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFkTGlzdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0dh
bWVwYWRMaXN0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNDJiODE1ZGZhZjQyNzg2NTczYmY1MWFiNTM4ZWY0
ZmEzZGY1NDI4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9HYW1lcGFk
TGlzdC5pZGwKQEAgLTAsMCArMSwzNCBAQAorLy8gQ29weXJpZ2h0IChDKSAyMDExLCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZSBtZXQ6CisvLworLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5ECisvLyBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKy8vIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisvLyBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRQorLy8gRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKy8vIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisvLyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorLy8gQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisvLyBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisvLyBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0gKKy8vIERBTUFHRS4KKworbW9kdWxlIGRvbSB7CisKKyAgICBpbnRl
cmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1HQU1FUEFELAorICAgICAgICBIYXNJbmRleEdl
dHRlcgorICAgIF0gR2FtZXBhZExpc3QgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBsZW5ndGg7CisgICAgICAgIEdhbWVwYWQgaXRlbShpbiBbT3B0aW9uYWw9Q2Fs
bFdpdGhEZWZhdWx0VmFsdWVdIHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgIH07CisKK30KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCAxMDUyMDk4NDFiOGExZjcwNjg4NDU0MDAwYTQz
MjczMDNmZjk5NWI0Li5mM2JlMGNjNDhmYTQ4Njc0MTIzNjdlNzRkZDc1MTczYjdhOGY4YWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
Q2xpZW50LmgiCisjaW5jbHVkZSAiR2FtZXBhZExpc3QuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlv
bi5oIgogI2luY2x1ZGUgIlBvaW50ZXJMb2NrLmgiCiAjaW5jbHVkZSAiS1VSTC5oIgpAQCAtMzA0
LDQgKzMwNSwxMiBAQCB2b2lkIE5hdmlnYXRvcjo6d2Via2l0R2V0VXNlck1lZGlhKGNvbnN0IFN0
cmluZyYgb3B0aW9ucywgUGFzc1JlZlB0cjxOYXZpZ2F0b3JVcwogfQogI2VuZGlmCiAKKyNpZiBF
TkFCTEUoR0FNRVBBRCkKK0dhbWVwYWRMaXN0KiBOYXZpZ2F0b3I6OndlYmtpdEdhbWVwYWRzKCkK
K3sKKyAgICAvLyBTdHViYmVkIHVudGlsIHBsYXRmb3JtLyBjaGFuZ2VzIGxhbmRlZC4KKyAgICBy
ZXR1cm4gMDsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9O
YXZpZ2F0b3IuaAppbmRleCA0OWM1NDg4YzViMjM4ZDA2YWZiN2U1NDFkYTVlOTIxOWUzNmEzN2Q3
Li41YmFiZGM1ZGQ4ZjJmOWRjMjVhOTEwMGNkMmJmNWZmZjdlYmJmZWFlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmgKQEAgLTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
RE9NTWltZVR5cGVBcnJheTsKIGNsYXNzIERPTVBsdWdpbkFycmF5OwogY2xhc3MgRnJhbWU7Citj
bGFzcyBHYW1lcGFkTGlzdDsKIGNsYXNzIEdlb2xvY2F0aW9uOwogY2xhc3MgUG9pbnRlckxvY2s7
CiBjbGFzcyBOYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrOwpAQCAtNzQsNiArNzUsMTAg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3ZWJraXRHZXRVc2VyTWVkaWEoY29uc3QgU3Ry
aW5nJiBvcHRpb25zLCBQYXNzUmVmUHRyPE5hdmlnYXRvclVzZXJNZWRpYVN1Y2Nlc3NDYWxsYmFj
az4sIFBhc3NSZWZQdHI8TmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjaz4sIEV4Y2VwdGlv
bkNvZGUmKTsKICNlbmRpZgogCisjaWYgRU5BQkxFKEdBTUVQQUQpCisgICAgR2FtZXBhZExpc3Qq
IHdlYmtpdEdhbWVwYWRzKCk7CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICBOYXZpZ2F0b3IoRnJh
bWUqKTsKICAgICBGcmFtZSogbV9mcmFtZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAppbmRl
eCA2ZmU0M2U2NjBhODUwNzMzMTQ4NTNmNTgxNjEzMTdhNmRiZmEyMzg1Li4wODQ3YzhjNDRhYzUy
MzBkODJjNWU0YTIxNjU2ZDQxOTk5NjgyNjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRs
CkBAIC02MSw2ICs2MSw4IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbQ2FsbGJhY2s9RnVuY3Rp
b25Pbmx5LCBPcHRpb25hbF0gTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjayBlcnJvckNh
bGxiYWNrKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAjZW5kaWYKKworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPUdBTUVQQUQsIEVuYWJsZWRBdFJ1
bnRpbWVdIEdhbWVwYWRMaXN0IHdlYmtpdEdhbWVwYWRzOwogICAgIH07CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJSdW50aW1lRmVhdHVyZXMuY3BwCmluZGV4IDEy
OGE2ZmFlMThlZmMzMTIzYThmODNhMDI3NjYxZTMxYmM0MTg4ZjguLjY3NWUyYTJkMTVjNTBhMzkz
MGY0NjExMTRiZmNmMjYyMjE5NzFmNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlJ1bnRpbWVGZWF0dXJlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViUnVudGltZUZlYXR1cmVzLmNwcApAQCAtNDE3LDcgKzQxNyw3IEBAIGJvb2wgV2Vi
UnVudGltZUZlYXR1cmVzOjppc1ZpZGVvVHJhY2tFbmFibGVkKCkKIHZvaWQgV2ViUnVudGltZUZl
YXR1cmVzOjplbmFibGVHYW1lcGFkKGJvb2wgZW5hYmxlKQogewogI2lmIEVOQUJMRShHQU1FUEFE
KQotICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldEdhbWVwYWRzRW5hYmxlZChlbmFibGUp
OworICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldFdlYmtpdEdhbWVwYWRzRW5hYmxlZChl
bmFibGUpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlKTsKICNlbmRpZgpAQCAtNDI2
LDcgKzQyNiw3IEBAIHZvaWQgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVHYW1lcGFkKGJvb2wg
ZW5hYmxlKQogYm9vbCBXZWJSdW50aW1lRmVhdHVyZXM6OmlzR2FtZXBhZEVuYWJsZWQoKQogewog
I2lmIEVOQUJMRShHQU1FUEFEKQotICAgIHJldHVybiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpn
YW1lcGFkc0VuYWJsZWQoKTsKKyAgICByZXR1cm4gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6d2Vi
a2l0R2FtZXBhZHNFbmFibGVkKCk7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDViZTY0
YWI2YzY1OTc3MTMxMjFjNzExNTUzMDFmMmViYzA5MDdiNGYuLjcxMWRmZmIyNWY0ZmQ4YzBhYjEw
N2ZmZDkxMTdkNjkxZTNhMWY4OTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMS0xOCAgU2NvdHQgR3JhaGFt
ICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSURMIGNoYW5nZXMgZm9yIGdhbWVw
YWQgc3VwcG9ydAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzE3NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBSdW50aW1lIGVuYWJsZSBnYW1lcGFkIGluIGNocm9taXVtIHRlc3Qgc2hlbGwuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwOgorICAgICAgICAoVGVz
dFNoZWxsOjpUZXN0U2hlbGwpOgorCiAyMDExLTExLTE4ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBJZ25vcmUgYW4gQU5HTEUgbGVhayB0aGF0IGlzIG5vdCBXZWJL
aXQncyBmYXVsdApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFNoZWxsLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAK
aW5kZXggY2IxZTIxOWIwNzY2YjhiOTA5ZTYzYzBkOGRiMDEyYzMyOGZiZDQ5OC4uODUwN2YyNGMw
MjIzM2JjZDEwODgxMWYwYmM3MTdiNTYzZGU3Y2YwOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwCkBAIC0xMjIsNiArMTIyLDcgQEAgVGVzdFNoZWxsOjpU
ZXN0U2hlbGwoYm9vbCB0ZXN0U2hlbGxNb2RlKQogICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5h
YmxlTWVkaWFTdHJlYW0odHJ1ZSk7CiAgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVXZWJB
dWRpbyh0cnVlKTsgCiAgICAgV2ViUnVudGltZUZlYXR1cmVzOjplbmFibGVWaWRlb1RyYWNrKHRy
dWUpOworICAgIFdlYlJ1bnRpbWVGZWF0dXJlczo6ZW5hYmxlR2FtZXBhZCh0cnVlKTsKIAogICAg
IG1fd2ViUGVybWlzc2lvbnMgPSBhZG9wdFB0cihuZXcgV2ViUGVybWlzc2lvbnModGhpcykpOwog
ICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIodGhpcykpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk5ZWYwYTJhOGVjYjk3ZTk5MDc5MzQ3NzkwOWQ1
MzRmNTQwZDUwYTkuLmUyMTkwODQzNTE5ZDg3MTBhMmM0MGMxMWZhNzUxZDA4ZjRiZjIxYzkgMTAw
NzU1Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNSBAQAorMjAxMS0xMS0xOCAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0Bj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgSURMIGNoYW5nZXMgZm9yIGdhbWVwYWQgc3VwcG9ydAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYmFzaWMg
YXBpIGV4aXN0ZW5jZSB0ZXN0LgorCisgICAgICAgICogZ2FtZXBhZC9nYW1lcGFkLWFwaS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGdhbWVwYWQvZ2FtZXBhZC1hcGkuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZ2FtZXBhZC9nYW1lcGFkLXRlc3QuanM6IEFkZGVkLgorICAgICAgICAo
bG9nQ29uc29sZSk6CisgICAgICAgICh0ZXN0RXhwZWN0ZWQpOgorICAgICAgICAocmVwb3J0RXhw
ZWN0ZWQpOgorICAgICAgICAod2FpdEZvckV2ZW50QW5kRW5kKToKKyAgICAgICAgKHdhaXRGb3JF
dmVudC5fZXZlbnRDYWxsYmFjayk6CisgICAgICAgICh3YWl0Rm9yRXZlbnQpOgorICAgICAgICAo
d2FpdEZvckV2ZW50QW5kVGVzdC5fZXZlbnRDYWxsYmFjayk6CisgICAgICAgICh3YWl0Rm9yRXZl
bnRBbmRUZXN0KToKKyAgICAgICAgKHdhaXRGb3JFdmVudFRlc3RBbmRFbmQpOgorICAgICAgICAo
ZW5kVGVzdCk6CisgICAgICAgIChsb2dSZXN1bHQpOgorICAgICAgICAoY29uc29sZVdyaXRlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQt
bm8tY3Jhc2gtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9Ta2lwcGVkOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9T
a2lwcGVkOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1NraXBwZWQ6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1NraXBwZWQ6CisgICAgICAgICogcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZDoKKwog
MjAxMS0xMS0xOCAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBM
YXlvdXQgVGVzdCBhY2Nlc3NpYmlsaXR5L2xvYWRpbmctaWZyYW1lLXNlbmRzLW5vdGlmaWNhdGlv
bi5odG1sIGlzIHNsb3cgb24gV2luIGRiZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBh
ZC9nYW1lcGFkLWFwaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQt
YXBpLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTAwZWJmM2FlZDdkMDUwYmVkODMyZWFmY2Mw
NGYwYTU0ZDA1YzRmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1l
cGFkLWFwaS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitFWFBFQ1RFRCAobmF2aWdhdG9y
LndlYmtpdEdhbWVwYWRzICE9PSAndW5kZWZpbmVkJykgT0sKK0VORCBPRiBURVNUCitNYWtlIHN1
cmUgdGhlIG1haW4gcG9sbGluZyBhY2Nlc3MgcG9pbnQgZXhpc3RzIG9uIG5hdmlnYXRvci4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGkuaHRtbCBiL0xheW91dFRl
c3RzL2dhbWVwYWQvZ2FtZXBhZC1hcGkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNWYwZTM0NjQ0YjZjMWNk
ZWQ2OTkwMmQwNWQzN2YzYzUwN2E5ZmFlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
Z2FtZXBhZC9nYW1lcGFkLWFwaS5odG1sCkBAIC0wLDAgKzEsOSBAQAorPCFET0NUWVBFIGh0bWw+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJnYW1lcGFkLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dD4KKyAgICB0ZXN0RXhwZWN0ZWQoIm5hdmlnYXRvci53ZWJraXRHYW1lcGFkcyIsIHVuZGVmaW5l
ZCwgIiE9PSIpOworICAgIGVuZFRlc3QoKTsKKzwvc2NyaXB0PgorPHA+TWFrZSBzdXJlIHRoZSBt
YWluIHBvbGxpbmcgYWNjZXNzIHBvaW50IGV4aXN0cyBvbiBuYXZpZ2F0b3IuPC9wPgorPC9ib2R5
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZ2FtZXBhZC9nYW1lcGFkLXRlc3QuanMgYi9MYXlv
dXRUZXN0cy9nYW1lcGFkL2dhbWVwYWQtdGVzdC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjFiNGYzYzMwZTk5
Y2YzNDZlN2Q3ZDRjZjRhY2Y2OWU0NjJlZDI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZ2FtZXBhZC9nYW1lcGFkLXRlc3QuanMKQEAgLTAsMCArMSwxMjYgQEAKK3ZhciBjb25zb2xl
ID0gbnVsbDsKK3ZhciBwcmludEZ1bGxUZXN0RGV0YWlscyA9IHRydWU7IC8vIFRoaXMgaXMgb3B0
aW9uYWx5IHN3aXRjaGVkIG9mIGJ5IHRlc3Qgd2hvc2UgdGVzdGVkIHZhbHVlcyBjYW4gZGlmZmVy
LiAoc2VlIGRpc2FibGVGdWxsVGVzdERldGFpbHNQcmludGluZygpKQorCitsb2dDb25zb2xlKCk7
CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGls
RG9uZSgpOworfQorCitmdW5jdGlvbiBsb2dDb25zb2xlKCkKK3sKKyAgICBpZiAoIWNvbnNvbGUg
JiYgZG9jdW1lbnQuYm9keSkgeworICAgICAgICBjb25zb2xlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZSk7
CisgICAgfQorICAgIHJldHVybiBjb25zb2xlOworfQorCitmdW5jdGlvbiB0ZXN0RXhwZWN0ZWQo
dGVzdEZ1bmNTdHJpbmcsIGV4cGVjdGVkLCBjb21wYXJpc29uKQoreworICAgIHRyeSB7CisgICAg
ICAgIHZhciBvYnNlcnZlZCA9IGV2YWwodGVzdEZ1bmNTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4
KSB7CisgICAgICAgIGNvbnNvbGVXcml0ZShleCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoY29tcGFyaXNvbiA9PT0gdW5kZWZpbmVkKQorICAgICAgICBjb21wYXJpc29uID0g
Jz09JzsKKworICAgIHZhciBzdWNjZXNzID0gZmFsc2U7CisgICAgc3dpdGNoIChjb21wYXJpc29u
KQorICAgIHsKKyAgICAgICAgY2FzZSAnPCc6ICBzdWNjZXNzID0gb2JzZXJ2ZWQgPCAgZXhwZWN0
ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc8PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA8PSBleHBl
Y3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz4nOiAgc3VjY2VzcyA9IG9ic2VydmVkID4gIGV4
cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPj0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPj0g
ZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICchPSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCAh
PSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJyE9PSc6IHN1Y2Nlc3MgPSBvYnNlcnZl
ZCAhPT0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc9PSc6IHN1Y2Nlc3MgPSBvYnNl
cnZlZCA9PSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz09PSc6IHN1Y2Nlc3MgPSBv
YnNlcnZlZCA9PT0gZXhwZWN0ZWQ7IGJyZWFrOworICAgIH0KKworICAgIHJlcG9ydEV4cGVjdGVk
KHN1Y2Nlc3MsIHRlc3RGdW5jU3RyaW5nLCBjb21wYXJpc29uLCBleHBlY3RlZCwgb2JzZXJ2ZWQp
Cit9CisKK3ZhciB0ZXN0TnVtYmVyID0gMDsKKworZnVuY3Rpb24gcmVwb3J0RXhwZWN0ZWQoc3Vj
Y2VzcywgdGVzdEZ1bmNTdHJpbmcsIGNvbXBhcmlzb24sIGV4cGVjdGVkLCBvYnNlcnZlZCkKK3sK
KyAgICB0ZXN0TnVtYmVyKys7CisKKyAgICB2YXIgbXNnID0gIlRlc3QgIiArIHRlc3ROdW1iZXI7
CisKKyAgICBpZiAocHJpbnRGdWxsVGVzdERldGFpbHMgfHwgIXN1Y2Nlc3MpCisgICAgICAgIG1z
ZyA9ICJFWFBFQ1RFRCAoPGVtPiIgKyB0ZXN0RnVuY1N0cmluZyArICIgPC9lbT4iICsgY29tcGFy
aXNvbiArICIgJzxlbT4iICsgZXhwZWN0ZWQgKyAiPC9lbT4nKSI7CisKKyAgICBpZiAoIXN1Y2Nl
c3MpCisgICAgICAgIG1zZyArPSAgIiwgT0JTRVJWRUQgJzxlbT4iICsgb2JzZXJ2ZWQgKyAiPC9l
bT4nIjsKKworICAgIGxvZ1Jlc3VsdChzdWNjZXNzLCBtc2cpOworfQorCitmdW5jdGlvbiB3YWl0
Rm9yRXZlbnRBbmRFbmQoZWxlbWVudCwgZXZlbnROYW1lLCBmdW5jU3RyaW5nKQoreworICAgIHdh
aXRGb3JFdmVudChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmNTdHJpbmcsIHRydWUpCit9CisKK2Z1
bmN0aW9uIHdhaXRGb3JFdmVudChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQorewor
ICAgIGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29s
ZVdyaXRlKCJFVkVOVCgiICsgZXZlbnROYW1lICsgIikiKTsKKworICAgICAgICBpZiAoZnVuYykK
KyAgICAgICAgICAgIGZ1bmMoZXZlbnQpOworCisgICAgICAgIGlmIChlbmRpdCkKKyAgICAgICAg
ICAgIGVuZFRlc3QoKTsKKyAgICB9CisKKyAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lLCBfZXZlbnRDYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZFRl
c3QoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZywgZW5kaXQpCit7CisgICAgZnVu
Y3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQpCisgICAgeworICAgICAgICBsb2dSZXN1bHQoZXZh
bCh0ZXN0RnVuY1N0cmluZyksICJFVkVOVCgiICsgZXZlbnROYW1lICsgIikgVEVTVCgiICsgdGVz
dEZ1bmNTdHJpbmcgKyAiKSIpOworICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRU
ZXN0KCk7CisgICAgfQorCisgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwg
X2V2ZW50Q2FsbGJhY2spOworfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRUZXN0QW5kRW5kKGVs
ZW1lbnQsIGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcpCit7CisgICAgd2FpdEZvckV2ZW50QW5k
VGVzdChlbGVtZW50LCBldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsKK30KKwordmFy
IHRlc3RFbmRlZCA9IGZhbHNlOworCitmdW5jdGlvbiBlbmRUZXN0KCkKK3sKKyAgICBjb25zb2xl
V3JpdGUoIkVORCBPRiBURVNUIik7CisgICAgdGVzdEVuZGVkID0gdHJ1ZTsKKyAgICBpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIGxvZ1Jlc3VsdChzdWNjZXNzLCB0ZXh0KQorewor
ICAgIGlmIChzdWNjZXNzKQorICAgICAgICBjb25zb2xlV3JpdGUodGV4dCArICIgPHNwYW4gc3R5
bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bhbj4iKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnNvbGVX
cml0ZSh0ZXh0ICsgIiA8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlMPC9zcGFuPiIpOworfQor
CitmdW5jdGlvbiBjb25zb2xlV3JpdGUodGV4dCkKK3sKKyAgICBpZiAodGVzdEVuZGVkKQorICAg
ICAgICByZXR1cm47CisgICAgbG9nQ29uc29sZSgpLmlubmVySFRNTCArPSB0ZXh0ICsgIjxicj4i
OworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20v
bmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNoLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2Zhc3QvZG9tL25hdmlnYXRvci1kZXRhY2hlZC1uby1jcmFzaC1leHBl
Y3RlZC50eHQKaW5kZXggNzU0MjVhMWY3OGEzOTgxOGMzZDE1NTE4M2MyMWNhMDdjNWNmN2I4Zi4u
NzA5NzNiMmJhYTU2ZmIxMzg1MmU5MDIxODhkN2RhOGJiODBmZmFmNiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5v
LWNyYXNoLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9m
YXN0L2RvbS9uYXZpZ2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0xNyw2
ICsxNyw3IEBAIG5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpIHRocmV3IGVyciBU
eXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzCiBuYXZpZ2F0b3IudXNlckFnZW50IGlzIE9L
CiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCituYXZp
Z2F0b3Iud2Via2l0R2FtZXBhZHMgaXMgT0sKIG5hdmlnYXRvci5hcHBDb2RlTmFtZSBpcyBPSwog
bmF2aWdhdG9yLmFwcE5hbWUgaXMgT0sKIG5hdmlnYXRvci5hcHBWZXJzaW9uIGlzIE9LCkBAIC0z
NCw0ICszNSw1IEBAIG5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpIHRocmV3IGVy
ciBUeXBlRXJyb3I6IE5vdCBlbm91Z2ggYXJndW1lbnRzCiBuYXZpZ2F0b3IudXNlckFnZW50IGlz
IE9LCiBuYXZpZ2F0b3IudmVuZG9yIGlzIE9LCiBuYXZpZ2F0b3IudmVuZG9yU3ViIGlzIE9LCitu
YXZpZ2F0b3Iud2Via2l0R2FtZXBhZHMgaXMgT0sKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBlZApp
bmRleCA1ZjgxNDQzMjcwZWNhMDE5ZTQyZmQ3Zjg5OWYzNzVmNjVmNmM4MDNhLi5kNTY0OTljOTNh
NmUwZWU2NTkwODZlNTljYmFlY2NiOTY4MGM4YjUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9lZmwvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvU2tpcHBl
ZApAQCAtMTkwOSw2ICsxOTA5LDkgQEAgZmFzdC9mb3Jtcy9tb250aAogZmFzdC9mb3Jtcy90aW1l
CiBmYXN0L2Zvcm1zL3dlZWsKIAorIyBFTkFCTEVfR0FNRVBBRCBub3QgZW5hYmxlZC4KK2dhbWVw
YWQvCisKICMgTXV0YXRpb25PYnNlcnZlcnMgYXJlIG5ldCB5ZXQgZW5hYmxlZC4gaHR0cDovL3dl
YmtpdC5vcmcvYi82ODcyOQogZmFzdC9tdXRhdGlvbgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lwcGVk
CmluZGV4IDcxOThmM2E0NjUwMGExYmZmYmIzNDNiOTUwZTRmZTZiMWY5ODFmOTQuLjZmMDQxOGZk
MjJmOTc0ZTk5Njc0ODdlN2IyNDNlZDRlMTEyNDNlMDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9Ta2lwcGVkCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9Ta2lw
cGVkCkBAIC0yNTgsNiArMjU4LDkgQEAgZmFzdC9mb3Jtcy9tb250aAogZmFzdC9mb3Jtcy90aW1l
CiBmYXN0L2Zvcm1zL3dlZWsKIAorIyBFTkFCTEVfR0FNRVBBRCBub3QgZW5hYmxlZC4KK2dhbWVw
YWQvCisKICMgU3BlZWNoIGlucHV0IGlzIG5vdCB5ZXQgZW5hYmxlZC4KIGZhc3Qvc3BlZWNoCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKaW5kZXggMGQwMTM4MTg5NzRlYzZhZWU3Y2NhYTQ4Y2Yy
ZGNiMGM3YmEzNDc3Ni4uNGZmNzg1NjdkY2U2MTRiY2IzYmRmZjI1ZmI3Zjc0ZjZhNmYxMTkyMCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKQEAgLTIxNCw2ICsyMTQsOSBAQCBmYXN0L2Zvcm1z
L21vbnRoCiBmYXN0L2Zvcm1zL3RpbWUKIGZhc3QvZm9ybXMvd2VlawogCisjIEVOQUJMRV9HQU1F
UEFEIG5vdCBlbmFibGVkLgorZ2FtZXBhZC8KKwogIyBTcGVlY2ggaW5wdXQgaXMgbm90IHlldCBl
bmFibGVkLgogZmFzdC9zcGVlY2gKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
cXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKaW5kZXggMmJjM2Vm
NjZmM2FlNWRkMWI3YjFiYmZiZjFhMWIxMDMyYzYwMjVlMS4uYWRhZWJjZTljMmE2Y2ZiYTg2MjI5
ZmRjZTM5Mzk4Zjg2ODhkYWRiYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCkBAIC04OSw2ICs4
OSw5IEBAIGZhc3QvZm9ybXMvbW9udGgKIGZhc3QvZm9ybXMvdGltZQogZmFzdC9mb3Jtcy93ZWVr
CiAKKyMgRU5BQkxFX0dBTUVQQUQgbm90IGVuYWJsZWQuCitnYW1lcGFkLworCiAjIEVOQUJMRShJ
TlBVVF9TUEVFQ0gpIGlzIGRpc2FibGVkLgogZmFzdC9zcGVlY2gKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vd2luL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAppbmRleCAyOGE1MzBjN2NmMDNmMjg3ZmU3NWIyYWQ0MjdlYzlmMTQxNWIwMmI0Li40
YzM0YjQ5M2U1NzA1ZDVmODRmMjRlZmNmNDljZGFiM2ViZjJkZjQwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vU2tpcHBlZApAQCAtMTEyMiw2ICsxMTIyLDkgQEAgZmFzdC9mb3Jtcy9tb250aAogZmFzdC9m
b3Jtcy90aW1lCiBmYXN0L2Zvcm1zL3dlZWsKIAorIyBFTkFCTEVfR0FNRVBBRCBub3QgZW5hYmxl
ZC4KK2dhbWVwYWQvCisKICMgU3BlZWNoIGlucHV0IGlzIG5vdCB5ZXQgZW5hYmxlZC4KIGZhc3Qv
c3BlZWNoCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNhaXJvL1NraXBw
ZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW5jYWlyby9Ta2lwcGVkCmluZGV4IDg2YTQ0N2Mw
ZDlkNTM1MTE1NDMyNzJiMWIxNjhiOWZmMmViY2FkNWYuLjZiYTIzMDk4MTM0NjEwY2Y3OGJkMzgy
MTIwOTA4YmIxNmNkMWM3YTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbmNh
aXJvL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luY2Fpcm8vU2tpcHBlZApA
QCAtMTYzOSw2ICsxNjM5LDkgQEAgZmFzdC9mb3Jtcy9tb250aAogZmFzdC9mb3Jtcy90aW1lCiBm
YXN0L2Zvcm1zL3dlZWsKIAorIyBFTkFCTEVfR0FNRVBBRCBub3QgZW5hYmxlZC4KK2dhbWVwYWQv
CisKICMgU3BlZWNoIGlucHV0IGlzIG5vdCB5ZXQgZW5hYmxlZC4KIGZhc3Qvc3BlZWNoCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>