<?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>95940</bug_id>
          
          <creation_ts>2012-09-06 00:17:57 -0700</creation_ts>
          <short_desc>Make the String initialization on the function side of String::number()</short_desc>
          <delta_ts>2012-09-09 13:50:54 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Template Framework</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>96030</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>benjamin</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>712947</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-06 00:17:57 -0700</bug_when>
    <thetext>Make ref-count done on the function side of String::number()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712952</commentid>
    <comment_count>1</comment_count>
      <attachid>162432</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-06 00:24:04 -0700</bug_when>
    <thetext>Created attachment 162432
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712974</commentid>
    <comment_count>2</comment_count>
      <attachid>162432</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-06 00:43:39 -0700</bug_when>
    <thetext>Comment on attachment 162432
Patch

Attachment 162432 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13770248</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712982</commentid>
    <comment_count>3</comment_count>
      <attachid>162432</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-06 00:47:19 -0700</bug_when>
    <thetext>Comment on attachment 162432
Patch

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

The template generalization taking StringType is not very useful.

This remind me we should have StringBuilder::append(integer). Since you are creating generalizations, could you find a template that could do:
1) String initialization like today
2) If used in StringBuilder, call StringBuilder::append(LChar*, length) on buf.

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        instead of being on the caller side. Keep the conversion code in its own
&gt; +        file so we can reuse the function for AtomicString::number() later too.

I am pretty sure we don&apos;t need AtomicString::number().
But I actually like your idea of keeping that code separated. It will keep WTFString.cpp cleaner.

&gt; Source/WTF/ChangeLog:20
&gt; +        (WTF):

Not useful.

&gt; Source/WTF/ChangeLog:25
&gt; +        (WTF):

Ditto.

&gt; Source/WTF/wtf/text/IntegerToStringConversion.h:46
&gt; +template&lt;typename StringType, typename UnsignedIntegerType, bool Negative&gt;
&gt; +static StringType numberToStringImpl(UnsignedIntegerType number)

I am not a fan of the template parameter for negative numbers.

I understand it is shorter, but do you thing it is clearer?

I am not against it either.

&gt; Source/WTF/wtf/text/WTFString.h:228
&gt; +    WTF_EXPORT_STRING_API static String number(short);

The version taking &quot;short&quot; was not there on purpose.

I don&apos;t remember why I left unsigned short though... Might be related to the KURL works.

&gt; Source/WebKit2/ChangeLog:10
&gt; +        Un-Inline String::number() to make the ref-count done on the function side
&gt; +        instead of being on the caller side. Keep the conversion code in its own
&gt; +        file so we can reuse the function for AtomicString::number() later too.

No need to copy the description.

&gt; Tools/ChangeLog:10
&gt; +        Un-Inline String::number() to make the ref-count done on the function side
&gt; +        instead of being on the caller side. Keep the conversion code in its own
&gt; +        file so we can reuse the function for AtomicString::number() later too.

No need to copy this for Tools.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712992</commentid>
    <comment_count>4</comment_count>
      <attachid>162432</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-06 00:56:54 -0700</bug_when>
    <thetext>Comment on attachment 162432
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        file so we can reuse the function for AtomicString::number() later too.
&gt; 
&gt; I am pretty sure we don&apos;t need AtomicString::number().
&gt; But I actually like your idea of keeping that code separated. It will keep WTFString.cpp cleaner.

When removing the implicit cas from String to AtomicString you get many erros caused by this. So I wanted to add it already a few months ago, but it was too hard without code duplication because of the sprintf stuff. But I can remove the sentence from the ChangeLog, so it is not an issue here.

&gt;&gt; Source/WTF/wtf/text/IntegerToStringConversion.h:46
&gt;&gt; +static StringType numberToStringImpl(UnsignedIntegerType number)
&gt; 
&gt; I am not a fan of the template parameter for negative numbers.
&gt; 
&gt; I understand it is shorter, but do you thing it is clearer?
&gt; 
&gt; I am not against it either.

I am not sure, but I do not like the code duplication. Even of the 8 lines of code

&gt;&gt; Source/WTF/wtf/text/WTFString.h:228
&gt;&gt; +    WTF_EXPORT_STRING_API static String number(short);
&gt; 
&gt; The version taking &quot;short&quot; was not there on purpose.
&gt; 
&gt; I don&apos;t remember why I left unsigned short though... Might be related to the KURL works.

At least there is no sentece about it in the ChangeLog at http://trac.webkit.org/changeset/126658.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712996</commentid>
    <comment_count>5</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-06 01:00:49 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 162432 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=162432&amp;action=review
&gt; 
&gt; The template generalization taking StringType is not very useful.
&gt; 
&gt; This remind me we should have StringBuilder::append(integer). Since you are creating generalizations, could you find a template that could do:
&gt; 1) String initialization like today
&gt; 2) If used in StringBuilder, call StringBuilder::append(LChar*, length) on buf.

I tought about it already too, but didn&apos;t wanted to extend this patch even more. But I can do, if you&apos;re willing to review a bigger one too. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713003</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-06 01:10:51 -0700</bug_when>
    <thetext>Still up to check the bots :)

&gt; &gt; I am pretty sure we don&apos;t need AtomicString::number().
&gt; &gt; But I actually like your idea of keeping that code separated. It will keep WTFString.cpp cleaner.
&gt; 
&gt; When removing the implicit cas from String to AtomicString you get many erros caused by this. So I wanted to add it already a few months ago, but it was too hard without code duplication because of the sprintf stuff. But I can remove the sentence from the ChangeLog, so it is not an issue here.

That is interesting.

Do you remember where do we get AtomicString from numbers?

&gt; &gt; The version taking &quot;short&quot; was not there on purpose.
&gt; 
&gt; At least there is no sentece about it in the ChangeLog at http://trac.webkit.org/changeset/126658.

I remember some of it! :)

That was as performance tweak. Notice there is no numberToStringImpl() for shorts. That is because I could not measure any difference of performance with the version taking a 32bits parameter.

The compiler on the other hand has to generate the functions so we got extra instructions without benefits.

Now, why did I left the unsigned short in WTF::String... I don&apos;t remember. I may simply have overlooked it.


&gt; I tought about it already too, but didn&apos;t wanted to extend this patch even more. But I can do, if you&apos;re willing to review a bigger one too. ;-)

I think this is a really nice change, I&apos;ll take time to do reviews.

Supporting StringBuilder::append(integer) is not a goal of this patch either. If you can make something nice, go for it. If not, we should go with the simpler version you already made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713011</commentid>
    <comment_count>7</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-06 01:19:16 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Still up to check the bots :)
&gt; 
&gt; &gt; &gt; I am pretty sure we don&apos;t need AtomicString::number().
&gt; &gt; &gt; But I actually like your idea of keeping that code separated. It will keep WTFString.cpp cleaner.
&gt; &gt; 
&gt; &gt; When removing the implicit cas from String to AtomicString you get many erros caused by this. So I wanted to add it already a few months ago, but it was too hard without code duplication because of the sprintf stuff. But I can remove the sentence from the ChangeLog, so it is not an issue here.
&gt; 
&gt; That is interesting.
&gt; 
&gt; Do you remember where do we get AtomicString from numbers?

Since all DOM attributes are AtomicString, setting/getting a string from a integer causes an conversion, even most numbers cause doubleTOstring. But I&apos;ll chek again and post the corresponding lines later. Maybe AtomicString::number(dobule) is enough.

&gt; &gt; &gt; The version taking &quot;short&quot; was not there on purpose.
&gt; &gt; 
&gt; &gt; At least there is no sentece about it in the ChangeLog at http://trac.webkit.org/changeset/126658.
&gt; 
&gt; I remember some of it! :)
&gt; 
&gt; That was as performance tweak. Notice there is no numberToStringImpl() for shorts. That is because I could not measure any difference of performance with the version taking a 32bits parameter.
&gt; 
&gt; The compiler on the other hand has to generate the functions so we got extra instructions without benefits.
&gt; 
&gt; Now, why did I left the unsigned short in WTF::String... I don&apos;t remember. I may simply have overlooked it.

I&apos;m ok with removing short, since cpus/compilers are optimized for 32bit, but then we should remove UnsignedIntegerTrait&lt;short&gt; too.

&gt; &gt; I tought about it already too, but didn&apos;t wanted to extend this patch even more. But I can do, if you&apos;re willing to review a bigger one too. ;-)
&gt; 
&gt; I think this is a really nice change, I&apos;ll take time to do reviews.
&gt; 
&gt; Supporting StringBuilder::append(integer) is not a goal of this patch either. If you can make something nice, go for it. If not, we should go with the simpler version you already made.

Ok, I&apos;ll try to find a usefull version first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713570</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-06 12:27:13 -0700</bug_when>
    <thetext>Update the title as the problem is not really a ref-count as I said. The problem is 2 more movq, not a add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713666</commentid>
    <comment_count>9</comment_count>
      <attachid>162577</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-06 14:03:13 -0700</bug_when>
    <thetext>Created attachment 162577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713727</commentid>
    <comment_count>10</comment_count>
      <attachid>162577</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-06 14:42:22 -0700</bug_when>
    <thetext>Comment on attachment 162577
Patch

Attachment 162577 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13770466</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714154</commentid>
    <comment_count>11</comment_count>
      <attachid>162678</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-06 23:08:09 -0700</bug_when>
    <thetext>Created attachment 162678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714192</commentid>
    <comment_count>12</comment_count>
      <attachid>162678</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-06 23:58:53 -0700</bug_when>
    <thetext>Comment on attachment 162678
Patch

Attachment 162678 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13770633</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714327</commentid>
    <comment_count>13</comment_count>
      <attachid>162717</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-07 02:49:48 -0700</bug_when>
    <thetext>Created attachment 162717
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714353</commentid>
    <comment_count>14</comment_count>
      <attachid>162717</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-07 03:31:36 -0700</bug_when>
    <thetext>Comment on attachment 162717
Patch

Attachment 162717 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13769742</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714360</commentid>
    <comment_count>15</comment_count>
      <attachid>162730</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-07 03:39:30 -0700</bug_when>
    <thetext>Created attachment 162730
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714879</commentid>
    <comment_count>16</comment_count>
      <attachid>162730</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-07 12:59:58 -0700</bug_when>
    <thetext>Comment on attachment 162730
Patch

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

Looks good.

&gt; Source/WTF/wtf/text/IntegerToStringConversion.h:56
&gt; +template&lt;typename T, typename UnsignedIntegerType, bool Negative&gt;
&gt; +static typename ConversionTrait&lt;T&gt;::ReturnType numberToStringImpl(UnsignedIntegerType number, typename ConversionTrait&lt;T&gt;::AdditionalArgumentType* additionalArgument)

Can you please change this bool with an enum { PositiveNumber, NegativeNumber }

This way the call site would be :
    numberToStringImpl&lt;T, typename UnsignedIntegerTrait&lt;SignedIntegerType&gt;::Type, NegativeNumber&gt;(-number, additionalArgument);

I think one compiler (MSVC?) have issues with enum values in templates. If that&apos;s a problem, just go with the bool.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714881</commentid>
    <comment_count>17</comment_count>
      <attachid>162730</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-07 13:00:13 -0700</bug_when>
    <thetext>Comment on attachment 162730
Patch

Oops, did not mean to cq+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714886</commentid>
    <comment_count>18</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-07 13:04:54 -0700</bug_when>
    <thetext>I am very surprised by the output. Making the function inline made WebCore grow by over 4k. Reverting the change here reduces WebCore by 400bytes.

I wonder what has changed. Any idea?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715237</commentid>
    <comment_count>19</comment_count>
      <attachid>162935</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-07 19:49:13 -0700</bug_when>
    <thetext>Created attachment 162935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715576</commentid>
    <comment_count>20</comment_count>
      <attachid>162935</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-09 13:50:44 -0700</bug_when>
    <thetext>Comment on attachment 162935
Patch

Clearing flags on attachment: 162935

Committed r127991: &lt;http://trac.webkit.org/changeset/127991&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715577</commentid>
    <comment_count>21</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2012-09-09 13:50:54 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162432</attachid>
            <date>2012-09-06 00:24:04 -0700</date>
            <delta_ts>2012-09-06 14:03:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95940.patch</filename>
            <type>text/plain</type>
            <size>22535</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGNjMGVlMDUuLmQ5ZmE3M2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA5LTA2ICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgcmVmLWNvdW50IGRvbmUg
b24gdGhlIGZ1bmN0aW9uIHNpZGUgb2YgU3RyaW5nOjpudW1iZXIoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5NDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbi1JbmxpbmUgU3RyaW5nOjpudW1iZXIo
KSB0byBtYWtlIHRoZSByZWYtY291bnQgZG9uZSBvbiB0aGUgZnVuY3Rpb24gc2lkZQorICAgICAg
ICBpbnN0ZWFkIG9mIGJlaW5nIG9uIHRoZSBjYWxsZXIgc2lkZS4gS2VlcCB0aGUgY29udmVyc2lv
biBjb2RlIGluIGl0cyBvd24KKyAgICAgICAgZmlsZSBzbyB3ZSBjYW4gcmV1c2UgdGhlIGZ1bmN0
aW9uIGZvciBBdG9taWNTdHJpbmc6Om51bWJlcigpIGxhdGVyIHRvby4KKworICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisK
IDIwMTItMDktMDUgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgRml4IHRoZSB1c2VzIG9mIFN0cmluZzo6b3BlcmF0b3IrPSgpIGZvciBNYWMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKaW5kZXgg
NmE5MDg2Yy4uMTY3YzQ3NCAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTI1NywxMiArMjU3LDYgQEAgRVhQT1JUUwogICAgID9u
dW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nQFdURkBAWUFQQkROSVFBRF9OQFoKICAgICA/bnVt
YmVyVG9GaXhlZFdpZHRoU3RyaW5nQFdURkBAWUFQQkROSVFBREBaCiAgICAgP251bWJlclRvU3Ry
aW5nQFdURkBAWUFQQkROUUFEQFoKLSAgICA/bnVtYmVyVG9TdHJpbmdJbXBsQFdURkBAWUE/QVY/
JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMUBfSkBaCi0gICAgP251bWJlclRvU3RyaW5n
SW1wbEBXVEZAQFlBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDFAX0tAWgotICAg
ID9udW1iZXJUb1N0cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBX
VEZAQEAxQEhAWgotICAgID9udW1iZXJUb1N0cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0
ckBWU3RyaW5nSW1wbEBXVEZAQEAxQElAWgotICAgID9udW1iZXJUb1N0cmluZ0ltcGxAV1RGQEBZ
QT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAxQEpAWgotICAgID9udW1iZXJUb1N0
cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAxQEtAWgog
ICAgID9vYmplY3RBdFNjb3BlQEpTU2NvcGVASlNDQEBTQVBBVkpTT2JqZWN0QDJAUEFWMTJAQFoK
ICAgICA/b2JqZWN0Q291bnRASGVhcEBKU0NAQFFBRUlYWgogICAgID9vYmplY3RQcm90b0Z1bmNU
b1N0cmluZ0BKU0NAQFlJX0pQQVZFeGVjU3RhdGVAMUBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA3ZTVlYWJlLi40MDZjZDk0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA5LTA2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBh
cm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgcmVmLWNvdW50IGRvbmUgb24gdGhlIGZ1
bmN0aW9uIHNpZGUgb2YgU3RyaW5nOjpudW1iZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBVbi1JbmxpbmUgU3RyaW5nOjpudW1iZXIoKSB0byBtYWtl
IHRoZSByZWYtY291bnQgZG9uZSBvbiB0aGUgZnVuY3Rpb24gc2lkZQorICAgICAgICBpbnN0ZWFk
IG9mIGJlaW5nIG9uIHRoZSBjYWxsZXIgc2lkZS4gS2VlcCB0aGUgY29udmVyc2lvbiBjb2RlIGlu
IGl0cyBvd24KKyAgICAgICAgZmlsZSBzbyB3ZSBjYW4gcmV1c2UgdGhlIGZ1bmN0aW9uIGZvciBB
dG9taWNTdHJpbmc6Om51bWJlcigpIGxhdGVyIHRvby4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogV1RGLmd5cGk6CisgICAgICAgICogV1RGLnBybzoKKyAgICAg
ICAgKiBXVEYudmNwcm9qL1dURi52Y3Byb2o6CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0
Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaDoKKyAgICAgICAgKFdURik6Cisg
ICAgICAgIChXVEY6Om51bWJlclRvU3RyaW5nSW1wbCk6CisgICAgICAgIChXVEY6Om51bWJlclRv
U3RyaW5nU2lnbmVkKToKKyAgICAgICAgKFdURjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZCk6Cisg
ICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmNwcDoKKyAgICAgICAgKFdURik6CisgICAgICAg
IChXVEY6OlN0cmluZzo6bnVtYmVyKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoK
KyAgICAgICAgKFN0cmluZyk6CisKIDIwMTItMDktMDUgIEdhYm9yIFJhcGNzYW55aSAgPHJnYWJv
ckB3ZWJraXQub3JnPgogCiAgICAgICAgIERGRyBKSVQgZG9lc24ndCB3b3JrIHByb3Blcmx5IG9u
IEFSTSBoYXJkZnAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XVEYvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAyMjgzZmVkLi5hNDA4MDM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dU
Ri9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0yMDgsNyArMjA4LDYgQEAgd3RmX3NvdXJjZXMgKz0g
XAogICAgIFNvdXJjZS9XVEYvd3RmL3RleHQvQmFzZTY0LmggXAogICAgIFNvdXJjZS9XVEYvd3Rm
L3RleHQvQ1N0cmluZy5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3RmL3RleHQvQ1N0cmluZy5oIFwK
LSAgICBTb3VyY2UvV1RGL3d0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCBcCiAg
ICAgU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdCdWZmZXIuaCBcCiAgICAgU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5n
eXBpIGIvU291cmNlL1dURi9XVEYuZ3lwaQppbmRleCA2Y2ZjZDQyLi5jZGM3M2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL1dURi5neXBpCisrKyBiL1NvdXJjZS9XVEYvV1RGLmd5cGkKQEAgLTIy
NCw3ICsyMjQsNiBAQAogICAgICAgICAgICAgJ3d0Zi90ZXh0L0F0b21pY1N0cmluZy5jcHAnLAog
ICAgICAgICAgICAgJ3d0Zi90ZXh0L0Jhc2U2NC5jcHAnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0
L0NTdHJpbmcuY3BwJywKLSAgICAgICAgICAgICd3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252
ZXJzaW9uLmNwcCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvU3RyaW5nQnVpbGRlci5jcHAnLAog
ICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwJywKICAgICAgICAgICAgICd3dGYv
dGV4dC9TdHJpbmdTdGF0aWNzLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi5wcm8g
Yi9Tb3VyY2UvV1RGL1dURi5wcm8KaW5kZXggMTA2ODg1ZC4uNWQ2YTZlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9XVEYucHJvCisrKyBiL1NvdXJjZS9XVEYvV1RGLnBybwpAQCAtMjE5LDcgKzIx
OSw2IEBAIFNPVVJDRVMgKz0gXAogICAgIHRleHQvQXRvbWljU3RyaW5nLmNwcCBcCiAgICAgdGV4
dC9CYXNlNjQuY3BwIFwKICAgICB0ZXh0L0NTdHJpbmcuY3BwIFwKLSAgICB0ZXh0L0ludGVnZXJU
b1N0cmluZ0NvbnZlcnNpb24uY3BwIFwKICAgICB0ZXh0L1N0cmluZ0J1aWxkZXIuY3BwIFwKICAg
ICB0ZXh0L1N0cmluZ0ltcGwuY3BwIFwKICAgICB0ZXh0L1N0cmluZ1N0YXRpY3MuY3BwIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qIGIvU291cmNlL1dURi9X
VEYudmNwcm9qL1dURi52Y3Byb2oKaW5kZXggZDc4MDM3NS4uNDg1ZDJlMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2oKKysrIGIvU291cmNlL1dURi9XVEYudmNw
cm9qL1dURi52Y3Byb2oKQEAgLTQyNCwxMCArNDI0LDYgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJ
CQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cd3RmXHRleHRcSW50ZWdlclRvU3RyaW5nQ29u
dmVyc2lvbi5jcHAiCi0JCQkJPgotCQkJPC9GaWxlPgotCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXHd0Zlx0ZXh0XEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyODhi
ZGZmLi5kMjM2YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTExLDcgKzExLDYgQEAKIAkJMTQzRjYxMUYxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQzRjYx
MUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovOyB9OwogCQkxNDNGNjEyMDE1NjVG
MEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxNEYzQjBGNzE1
RTQ1RTQ2MDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpYy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTRGM0IwRjYxNUU0NUU0NjAwMjEwMDY5IC8q
IFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwotCQkyNjE0N0IwOTE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3Ry
aW5nQ29udmVyc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNjE0N0IwNzE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVy
c2lvbi5jcHAgKi87IH07CiAJCTI2MTQ3QjBBMTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyNjE0N0IwODE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVy
c2lvbi5oICovOyB9OwogCQkyQzA1Mzg1NDE1QkM4MTkwMDBGMjFCOTYgLyogR3JlZ29yaWFuRGF0
ZVRpbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJD
MDUzODUzMTVCQzgxOTAwMEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5oICovOyB9OwogCQky
Q0NEODkyQTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkNDRDg5MjkxNUMwMzkwMjAw
Mjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVUaW1lLmNwcCAqLzsgfTsKQEAgLTI1OCw3ICsyNTcsNiBA
QAogCQkxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSQU1TaXplLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMTQzRjYxMUUxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUkFNU2l6ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxNEYzQjBGNjE1RTQ1RTQ2MDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRp
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTYXR1cmF0ZWRBcml0aG1ldGlj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTI2MTQ3QjA3MTVERENDREMwMEREQjkw
NyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyNjE0N0IwODE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRl
Z2VyVG9TdHJpbmdDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJD
MDUzODUzMTVCQzgxOTAwMEYyMUI5NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBHcmVnb3JpYW5EYXRlVGltZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyQ0NEODkyOTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0
ZVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JlZ29yaWFu
RGF0ZVRpbWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzk1LDcgKzc5Myw2
IEBACiAJCQkJODEzNDAxMzcxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICovLAogCQkJCUE4
QTQ3MzIxMTUxQTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmNwcCAqLywKIAkJCQlBOEE0NzMyMjE1
MUE4MjVCMDA0MTIzRkYgLyogQ1N0cmluZy5oICovLAotCQkJCTI2MTQ3QjA3MTVERENDREMwMERE
QjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCAqLywKIAkJCQkyNjE0N0IwODE1
RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oICovLAogCQkJCUE4
QTQ3MzIzMTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWZmZXIuaCAqLywKIAkJCQlBOEE0NzMy
NDE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVpbGRlci5jcHAgKi8sCkBAIC0xMTg4LDcgKzEx
ODUsNiBAQAogCQkJCUE4QTQ3M0I1MTUxQTgyNUIwMDQxMjNGRiAvKiBmaXhlZC1kdG9hLmNjIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkNDRDg5MkExNUMwMzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRh
dGVUaW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0Q4MTUxQTgyNUIwMDQxMjNGRiAv
KiBIYXNoVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMjYxNDdCMDkxNUREQ0NEQzAwRERC
OTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
QThBNDczRTUxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5UaHJlYWQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQThBNDczRTQxNTFBODI1QjAwNDEyM0ZGIC8qIE1haW5UaHJlYWRNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQlDRDU0OTdBQzE1ODU3RDAzMDBCNUJDMzAgLyogTWVkaWFUaW1lLmNwcCBp
biBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAppbmRleCAzMjBjODRiLi42NzliMjBlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9DTWFrZUxpc3RzLnR4dApAQCAtMTgzLDcgKzE4Myw2IEBAIFNFVChXVEZfU09VUkNFUwog
ICAgIHRleHQvQXRvbWljU3RyaW5nLmNwcAogICAgIHRleHQvQmFzZTY0LmNwcAogICAgIHRleHQv
Q1N0cmluZy5jcHAKLSAgICB0ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwCiAgICAg
dGV4dC9TdHJpbmdCdWlsZGVyLmNwcAogICAgIHRleHQvU3RyaW5nSW1wbC5jcHAKICAgICB0ZXh0
L1N0cmluZ1N0YXRpY3MuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0ludGVn
ZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk1Yzg4
My4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZl
cnNpb24uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
LSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCIKLQotI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLXRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDsKLQotdGVtcGxhdGU8
PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ8c2hvcnQ+IHsKLSAgICB0eXBlZGVmIHVuc2ln
bmVkIHNob3J0IFR5cGU7Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJh
aXQ8aW50PiB7Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgVHlwZTsKLX07Ci10ZW1wbGF0ZTw+
IHN0cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDxsb25nPiB7Ci0gICAgdHlwZWRlZiB1bnNpZ25l
ZCBsb25nIFR5cGU7Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ8
bG9uZyBsb25nPiB7Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgVHlwZTsKLX07Ci0K
LXRlbXBsYXRlPHR5cGVuYW1lIFNpZ25lZEludGVnZXJUeXBlPgotc3RhdGljIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsU2lnbmVkKFNpZ25lZEludGVnZXJUeXBlIGlu
dGVnZXIpCi17Ci0gICAgTENoYXIgYnVmWzEgKyBzaXplb2YoU2lnbmVkSW50ZWdlclR5cGUpICog
M107Ci0gICAgTENoYXIqIGVuZCA9IGJ1ZiArIFdURl9BUlJBWV9MRU5HVEgoYnVmKTsKLSAgICBM
Q2hhciogcCA9IGVuZDsKLQotICAgIGJvb2wgbmVnYXRpdmUgPSBmYWxzZTsKLSAgICB0eXBlbmFt
ZSBVbnNpZ25lZEludGVnZXJUcmFpdDxTaWduZWRJbnRlZ2VyVHlwZT46OlR5cGUgdW5zaWduZWRJ
bnRlZ2VyOwotICAgIGlmIChpbnRlZ2VyIDwgMCkgewotICAgICAgICBuZWdhdGl2ZSA9IHRydWU7
Ci0gICAgICAgIHVuc2lnbmVkSW50ZWdlciA9IC1pbnRlZ2VyOwotICAgIH0gZWxzZQotICAgICAg
ICB1bnNpZ25lZEludGVnZXIgPSBpbnRlZ2VyOwotCi0gICAgZG8gewotICAgICAgICAqLS1wID0g
c3RhdGljX2Nhc3Q8TENoYXI+KCh1bnNpZ25lZEludGVnZXIgJSAxMCkgKyAnMCcpOwotICAgICAg
ICB1bnNpZ25lZEludGVnZXIgLz0gMTA7Ci0gICAgfSB3aGlsZSAodW5zaWduZWRJbnRlZ2VyKTsK
LQotICAgIGlmIChuZWdhdGl2ZSkKLSAgICAgICAgKi0tcCA9ICctJzsKLQotICAgIHJldHVybiBT
dHJpbmdJbXBsOjpjcmVhdGUocCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHApKTsKLX0K
LQotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwoaW50IGkpCi17Ci0g
ICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbFNpZ25lZChpKTsKLX0KLQotUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwobG9uZyBpKQotewotICAgIHJldHVybiBudW1i
ZXJUb1N0cmluZ0ltcGxTaWduZWQoaSk7Ci19Ci0KLVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVt
YmVyVG9TdHJpbmdJbXBsKGxvbmcgbG9uZyBpKQotewotICAgIHJldHVybiBudW1iZXJUb1N0cmlu
Z0ltcGxTaWduZWQoaSk7Ci19Ci0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVW5zaWduZWRJbnRlZ2Vy
VHlwZT4KLVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsVW5zaWduZWQo
VW5zaWduZWRJbnRlZ2VyVHlwZSBpbnRlZ2VyKQotewotICAgIExDaGFyIGJ1ZltzaXplb2YoVW5z
aWduZWRJbnRlZ2VyVHlwZSkgKiAzXTsKLSAgICBMQ2hhciogZW5kID0gYnVmICsgV1RGX0FSUkFZ
X0xFTkdUSChidWYpOwotICAgIExDaGFyKiBwID0gZW5kOwotCi0gICAgZG8gewotICAgICAgICAq
LS1wID0gc3RhdGljX2Nhc3Q8TENoYXI+KChpbnRlZ2VyICUgMTApICsgJzAnKTsKLSAgICAgICAg
aW50ZWdlciAvPSAxMDsKLSAgICB9IHdoaWxlIChpbnRlZ2VyKTsKLSAgICByZXR1cm4gU3RyaW5n
SW1wbDo6Y3JlYXRlKHAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBwKSk7Ci19Ci0KLVBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKHVuc2lnbmVkIHUpCi17Ci0g
ICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbFVuc2lnbmVkKHUpOwotfQotCi1QYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbCh1bnNpZ25lZCBsb25nIHUpCi17Ci0gICAg
cmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbFVuc2lnbmVkKHUpOwotfQotCi1QYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbCh1bnNpZ25lZCBsb25nIGxvbmcgdSkKLXsKLSAg
ICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsVW5zaWduZWQodSk7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdURgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNp
b24uaAppbmRleCBjMzI1MDU5Li5kZmRkNjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDEyIFBhdHJpY2sgR2Fuc3RlcmVyIDxwYXJvZ2FAcGFyb2dhLmNvbT4KICAqCiAg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYwpAQCAtMjEsMTYgKzIyLDU4IEBACiAjaWZuZGVmIEludGVnZXJUb1N0cmlu
Z0NvbnZlcnNpb25faAogI2RlZmluZSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uX2gKIAotI2lu
Y2x1ZGUgIlN0cmluZ0ltcGwuaCIKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisjaW5j
bHVkZSA8d3RmL3VuaWNvZGUvVW5pY29kZS5oPgogCiBuYW1lc3BhY2UgV1RGIHsKLVdURl9FWFBP
UlRfU1RSSU5HX0FQSSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbChp
bnQpOwotV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVy
VG9TdHJpbmdJbXBsKGxvbmcpOwotV1RGX0VYUE9SVF9TVFJJTkdfQVBJIFBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKGxvbmcgbG9uZyk7CiAKLVdURl9FWFBPUlRfU1RS
SU5HX0FQSSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbCh1bnNpZ25l
ZCk7Ci1XVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBudW1iZXJU
b1N0cmluZ0ltcGwodW5zaWduZWQgbG9uZyk7Ci1XVEZfRVhQT1JUX1NUUklOR19BUEkgUGFzc1Jl
ZlB0cjxTdHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwodW5zaWduZWQgbG9uZyBsb25nKTsK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDsKKwordGVt
cGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ8c2hvcnQ+IHsKKyAgICB0eXBlZGVm
IHVuc2lnbmVkIHNob3J0IFR5cGU7Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRl
Z2VyVHJhaXQ8aW50PiB7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgVHlwZTsKK307Cit0ZW1w
bGF0ZTw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDxsb25nPiB7CisgICAgdHlwZWRlZiB1
bnNpZ25lZCBsb25nIFR5cGU7Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2Vy
VHJhaXQ8bG9uZyBsb25nPiB7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgVHlwZTsK
K307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGUsIHR5cGVuYW1lIFVuc2lnbmVkSW50
ZWdlclR5cGUsIGJvb2wgTmVnYXRpdmU+CitzdGF0aWMgU3RyaW5nVHlwZSBudW1iZXJUb1N0cmlu
Z0ltcGwoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpCit7CisgICAgTENoYXIgYnVmW3NpemVv
ZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMgKyBOZWdhdGl2ZV07CisgICAgTENoYXIqIGVuZCA9
IGJ1ZiArIFdURl9BUlJBWV9MRU5HVEgoYnVmKTsKKyAgICBMQ2hhciogcCA9IGVuZDsKKworICAg
IGRvIHsKKyAgICAgICAgKi0tcCA9IHN0YXRpY19jYXN0PExDaGFyPigobnVtYmVyICUgMTApICsg
JzAnKTsKKyAgICAgICAgbnVtYmVyIC89IDEwOworICAgIH0gd2hpbGUgKG51bWJlcik7CisKKyAg
ICBpZiAoTmVnYXRpdmUpCisgICAgICAgICotLXAgPSAnLSc7CisKKyAgICByZXR1cm4gU3RyaW5n
VHlwZShwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gcCkpOwogfQogCit0ZW1wbGF0ZTx0
eXBlbmFtZSBTdHJpbmdUeXBlLCB0eXBlbmFtZSBTaWduZWRJbnRlZ2VyVHlwZT4KK2lubGluZSBT
dHJpbmdUeXBlIG51bWJlclRvU3RyaW5nU2lnbmVkKFNpZ25lZEludGVnZXJUeXBlIG51bWJlcikK
K3sKKyAgICBpZiAobnVtYmVyIDwgMCkKKyAgICAgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1w
bDxTdHJpbmdUeXBlLCBVbnNpZ25lZEludGVnZXJUcmFpdDxTaWduZWRJbnRlZ2VyVHlwZT46OlR5
cGUsIHRydWU+KC1udW1iZXIpOworICAgIHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGw8U3RyaW5n
VHlwZSwgVW5zaWduZWRJbnRlZ2VyVHJhaXQ8U2lnbmVkSW50ZWdlclR5cGU+OjpUeXBlLCBmYWxz
ZT4obnVtYmVyKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZSwgdHlwZW5hbWUg
VW5zaWduZWRJbnRlZ2VyVHlwZT4KK2lubGluZSBTdHJpbmdUeXBlIG51bWJlclRvU3RyaW5nVW5z
aWduZWQoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJlclRv
U3RyaW5nSW1wbDxTdHJpbmdUeXBlLCBVbnNpZ25lZEludGVnZXJUeXBlLCBmYWxzZT4obnVtYmVy
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1RGCisKICNlbmRpZiAvLyBJbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNw
cCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCAwN2FmY2M3Li44ZjRk
YjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC00MTcsNyArNDE3LDQ3IEBAIFN0
cmluZyBTdHJpbmc6OmZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKICAgICByZXR1cm4g
U3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihidWZmZXIu
ZGF0YSgpKSwgbGVuKTsKICNlbmRpZgogfQotICAgIAorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIo
c2hvcnQgbnVtYmVyKQoreworICAgIHJldHVybiBudW1iZXJUb1N0cmluZ1NpZ25lZDxTdHJpbmc+
KG51bWJlcik7Cit9CisKK1N0cmluZyBTdHJpbmc6Om51bWJlcih1bnNpZ25lZCBzaG9ydCBudW1i
ZXIpCit7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nPihudW1iZXIp
OworfQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIoaW50IG51bWJlcikKK3sKKyAgICByZXR1cm4g
bnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nPihudW1iZXIpOworfQorCitTdHJpbmcgU3RyaW5n
OjpudW1iZXIodW5zaWduZWQgaW50IG51bWJlcikKK3sKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJp
bmdVbnNpZ25lZDxTdHJpbmc+KG51bWJlcik7Cit9CisKK1N0cmluZyBTdHJpbmc6Om51bWJlcihs
b25nIG51bWJlcikKK3sKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nPihu
dW1iZXIpOworfQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIodW5zaWduZWQgbG9uZyBudW1iZXIp
Cit7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nPihudW1iZXIpOwor
fQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIobG9uZyBsb25nIG51bWJlcikKK3sKKyAgICByZXR1
cm4gbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nPihudW1iZXIpOworfQorCitTdHJpbmcgU3Ry
aW5nOjpudW1iZXIodW5zaWduZWQgbG9uZyBsb25nIG51bWJlcikKK3sKKyAgICByZXR1cm4gbnVt
YmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmc+KG51bWJlcik7Cit9CisKIFN0cmluZyBTdHJpbmc6
Om51bWJlcihkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBmbGFncywgdW5zaWduZWQgcHJlY2lzaW9u
KQogewogICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCmluZGV4IDkxZDZkNzMuLmU2YTc0ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAt
MjYsNyArMjYsNiBAQAogLy8gb24gc3lzdGVtcyB3aXRob3V0IGNhc2Utc2Vuc2l0aXZlIGZpbGUg
c3lzdGVtcy4KIAogI2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSW1wbC5oPgogCiAjaWZkZWYgX19PQkpDX18KQEAgLTIyNiwxMyArMjI1LDE0IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuICgqbV9pbXBsKVtpbmRleF07CiAgICAgfQogCi0gICAg
c3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgc2hvcnQgbnVtYmVyKSB7IHJldHVybiBudW1i
ZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGludCBu
dW1iZXIpIHsgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbChudW1iZXIpOyB9Ci0gICAgc3RhdGlj
IFN0cmluZyBudW1iZXIodW5zaWduZWQgbnVtYmVyKSB7IHJldHVybiBudW1iZXJUb1N0cmluZ0lt
cGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbnVtYmVyKSB7IHJl
dHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVt
YmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyKSB7IHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVt
YmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpIHsgcmV0
dXJuIG51bWJlclRvU3RyaW5nSW1wbChudW1iZXIpOyB9Ci0gICAgc3RhdGljIFN0cmluZyBudW1i
ZXIodW5zaWduZWQgbG9uZyBsb25nIG51bWJlcikgeyByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBs
KG51bWJlcik7IH0KKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1i
ZXIoc2hvcnQpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJl
cih1bnNpZ25lZCBzaG9ydCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJp
bmcgbnVtYmVyKGludCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcg
bnVtYmVyKHVuc2lnbmVkIGludCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBT
dHJpbmcgbnVtYmVyKGxvbmcpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3Ry
aW5nIG51bWJlcih1bnNpZ25lZCBsb25nKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3Rh
dGljIFN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKIAogICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcihkb3VibGUsIHVuc2lnbmVkID0gU2hv
dWxkUm91bmRTaWduaWZpY2FudEZpZ3VyZXMgfCBTaG91bGRUcnVuY2F0ZVRyYWlsaW5nWmVyb3Ms
IHVuc2lnbmVkIHByZWNpc2lvbiA9IDYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNTU4OGUxNy4uMTNiZjZk
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA5LTA2ICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgcmVmLWNvdW50IGRvbmUg
b24gdGhlIGZ1bmN0aW9uIHNpZGUgb2YgU3RyaW5nOjpudW1iZXIoKQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5NDAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbi1JbmxpbmUgU3RyaW5nOjpudW1iZXIo
KSB0byBtYWtlIHRoZSByZWYtY291bnQgZG9uZSBvbiB0aGUgZnVuY3Rpb24gc2lkZQorICAgICAg
ICBpbnN0ZWFkIG9mIGJlaW5nIG9uIHRoZSBjYWxsZXIgc2lkZS4gS2VlcCB0aGUgY29udmVyc2lv
biBjb2RlIGluIGl0cyBvd24KKyAgICAgICAgZmlsZSBzbyB3ZSBjYW4gcmV1c2UgdGhlIGZ1bmN0
aW9uIGZvciBBdG9taWNTdHJpbmc6Om51bWJlcigpIGxhdGVyIHRvby4KKworICAgICAgICAqIHdp
bi9XZWJLaXQyLmRlZjoKKwogMjAxMi0wOS0wNSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgW1F0XSBRUmF3V2ViVmlld1ByaXZhdGUgZG9lcyBub3QgaW5p
dGlhbGl6ZSBzb21lIG1lbWJlcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJL
aXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCA2NTFjOThmLi5k
MmU2NjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIv
U291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0xOTUsOCArMTk1LDggQEAgRVhQT1JU
UwogICAgICAgICA/bGFzdENoaWxkQENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBR
QUVYWFoKICAgICAgICAgP25leHRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFB
RVhYWgogICAgICAgICA/cHJldmlvdXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVA
QFFBRVhYWgotICAgICAgICA/bnVtYmVyVG9TdHJpbmdJbXBsQFdURkBAWUE/QVY/JFBhc3NSZWZQ
dHJAVlN0cmluZ0ltcGxAV1RGQEBAMUBIQFoKLSAgICAgICAgP251bWJlclRvU3RyaW5nSW1wbEBX
VEZAQFlBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDFASUBaCisgICAgICAgID9u
dW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBJQFoKKyAgICAgICAgP251bWJlckBTdHJpbmdAV1RG
QEBTQT9BVjEyQEhAWgogICAgICAgICA/b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdl
YkNvcmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAQFoKICAgICAgICAg
P251bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW5ATm9kZUBXZWJDb3JlQEBRQkVJWFoKICAg
ICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAyQFhaCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWQyNmZiNi4uMjYxN2Ri
NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDEyLTA5LTA2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJr
aXQub3JnPgorCisgICAgICAgIE1ha2UgcmVmLWNvdW50IGRvbmUgb24gdGhlIGZ1bmN0aW9uIHNp
ZGUgb2YgU3RyaW5nOjpudW1iZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU5NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBVbi1JbmxpbmUgU3RyaW5nOjpudW1iZXIoKSB0byBtYWtlIHRoZSByZWYt
Y291bnQgZG9uZSBvbiB0aGUgZnVuY3Rpb24gc2lkZQorICAgICAgICBpbnN0ZWFkIG9mIGJlaW5n
IG9uIHRoZSBjYWxsZXIgc2lkZS4gS2VlcCB0aGUgY29udmVyc2lvbiBjb2RlIGluIGl0cyBvd24K
KyAgICAgICAgZmlsZSBzbyB3ZSBjYW4gcmV1c2UgdGhlIGZ1bmN0aW9uIGZvciBBdG9taWNTdHJp
bmc6Om51bWJlcigpIGxhdGVyIHRvby4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwOgorICAgICAgICAodGVzdEJvdW5kYXJp
ZXMpOgorICAgICAgICAodGVzdE51bWJlcnMpOgorCiAyMDEyLTA5LTA0ICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmUgTlJXVCBsb2cgbW9yZSBv
dXRwdXQgd2hlbiBjcmFzaCBsb2dzIGFyZSBtaXNzaW5nCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwCmlu
ZGV4IGEyMDFmNDEuLjZiOWQ4ZGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwCkBAIC0yOCw3ICsy
OCw2IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ2VyVHlwZT4gc3RydWN0IFByaW50ZkZvcm1hdFRyYWl0
IHsgc3RhdGljIGNvbnN0IGNoYXIgZm9ybWF0W107IH07CkBAIC03NSwxMiArNzQsMTIgQEAgdm9p
ZCB0ZXN0Qm91bmRhcmllcygpCiAgICAgYnVmZmVyLnJlc2l6ZShidWZmZXJTaXplKTsKIAogICAg
IGNvbnN0IEludGVnZXJUeXBlIG1pbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8SW50ZWdlclR5cGU+
OjptaW4oKTsKLSAgICBDU3RyaW5nIG1pblN0cmluZ0RhdGEgPSBTdHJpbmcoV1RGOjpudW1iZXJU
b1N0cmluZ0ltcGwobWluKSkubGF0aW4xKCk7CisgICAgQ1N0cmluZyBtaW5TdHJpbmdEYXRhID0g
U3RyaW5nOjpudW1iZXIobWluKS5sYXRpbjEoKTsKICAgICBzbnByaW50ZihidWZmZXIuZGF0YSgp
LCBidWZmZXJTaXplLCBQcmludGZGb3JtYXRUcmFpdDxJbnRlZ2VyVHlwZT46OmZvcm1hdCwgbWlu
KTsKICAgICBBU1NFUlRfU1RSRVEoYnVmZmVyLmRhdGEoKSwgbWluU3RyaW5nRGF0YS5kYXRhKCkp
OwogCiAgICAgY29uc3QgSW50ZWdlclR5cGUgbWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxJbnRl
Z2VyVHlwZT46Om1heCgpOwotICAgIENTdHJpbmcgbWF4U3RyaW5nRGF0YSA9IFN0cmluZyhXVEY6
Om51bWJlclRvU3RyaW5nSW1wbChtYXgpKS5sYXRpbjEoKTsKKyAgICBDU3RyaW5nIG1heFN0cmlu
Z0RhdGEgPSBTdHJpbmc6Om51bWJlcihtYXgpLmxhdGluMSgpOwogICAgIHNucHJpbnRmKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlclNpemUsIFByaW50ZkZvcm1hdFRyYWl0PEludGVnZXJUeXBlPjo6Zm9y
bWF0LCBtYXgpOwogICAgIEFTU0VSVF9TVFJFUShidWZmZXIuZGF0YSgpLCBtYXhTdHJpbmdEYXRh
LmRhdGEoKSk7CiB9CkBAIC05NCw3ICs5Myw3IEBAIHZvaWQgdGVzdE51bWJlcnMoKQogCiAgICAg
Zm9yIChpbnQgaSA9IC0xMDA7IGkgPCAxMDA7ICsraSkgewogICAgICAgICBjb25zdCBJbnRlZ2Vy
VHlwZSBudW1iZXIgPSBzdGF0aWNfY2FzdDxJbnRlZ2VyVHlwZT4oaSk7Ci0gICAgICAgIENTdHJp
bmcgbnVtYmVyU3RyaW5nRGF0YSA9IFN0cmluZyhXVEY6Om51bWJlclRvU3RyaW5nSW1wbChudW1i
ZXIpKS5sYXRpbjEoKTsKKyAgICAgICAgQ1N0cmluZyBudW1iZXJTdHJpbmdEYXRhID0gU3RyaW5n
OjpudW1iZXIobnVtYmVyKS5sYXRpbjEoKTsKICAgICAgICAgc25wcmludGYoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyU2l6ZSwgUHJpbnRmRm9ybWF0VHJhaXQ8SW50ZWdlclR5cGU+Ojpmb3JtYXQsIG51
bWJlcik7CiAgICAgICAgIEFTU0VSVF9TVFJFUShidWZmZXIuZGF0YSgpLCBudW1iZXJTdHJpbmdE
YXRhLmRhdGEoKSk7CiAgICAgfQo=
</data>
<flag name="review"
          id="173547"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162577</attachid>
            <date>2012-09-06 14:03:13 -0700</date>
            <delta_ts>2012-09-06 23:08:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95940.patch</filename>
            <type>text/plain</type>
            <size>22255</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDUyY2E2OWYuLmQ2ZTc5OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTA5LTA2ICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgdGhlIFN0cmluZyBpbml0
aWFsaXphdGlvbiBvbiB0aGUgZnVuY3Rpb24gc2lkZSBvZiBTdHJpbmc6Om51bWJlcigpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk0MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKwogMjAxMi0wOS0w
NiAgWXVxaWFuZyBYaWFuICA8eXVxaWFuZy54aWFuQGludGVsLmNvbT4KIAogICAgICAgICBQZXJm
b3JtYW5jZSByZWdyZXNzaW9ucyBvbiAzMi1iaXQgcGxhdGZvcm1zIHdpdGggcmV2aXNpb25zIDEy
NTYzNyBhbmQgMTI2Mzg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZGVmCmluZGV4IDZhOTA4NmMuLjE2N2M0NzQgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0yNTcsMTIgKzI1
Nyw2IEBAIEVYUE9SVFMKICAgICA/bnVtYmVyVG9GaXhlZFByZWNpc2lvblN0cmluZ0BXVEZAQFlB
UEJETklRQURfTkBaCiAgICAgP251bWJlclRvRml4ZWRXaWR0aFN0cmluZ0BXVEZAQFlBUEJETklR
QURAWgogICAgID9udW1iZXJUb1N0cmluZ0BXVEZAQFlBUEJETlFBREBaCi0gICAgP251bWJlclRv
U3RyaW5nSW1wbEBXVEZAQFlBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDFAX0pA
WgotICAgID9udW1iZXJUb1N0cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5n
SW1wbEBXVEZAQEAxQF9LQFoKLSAgICA/bnVtYmVyVG9TdHJpbmdJbXBsQFdURkBAWUE/QVY/JFBh
c3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMUBIQFoKLSAgICA/bnVtYmVyVG9TdHJpbmdJbXBs
QFdURkBAWUE/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMUBJQFoKLSAgICA/bnVt
YmVyVG9TdHJpbmdJbXBsQFdURkBAWUE/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBA
MUBKQFoKLSAgICA/bnVtYmVyVG9TdHJpbmdJbXBsQFdURkBAWUE/QVY/JFBhc3NSZWZQdHJAVlN0
cmluZ0ltcGxAV1RGQEBAMUBLQFoKICAgICA/b2JqZWN0QXRTY29wZUBKU1Njb3BlQEpTQ0BAU0FQ
QVZKU09iamVjdEAyQFBBVjEyQEBaCiAgICAgP29iamVjdENvdW50QEhlYXBASlNDQEBRQUVJWFoK
ICAgICA/b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmdASlNDQEBZSV9KUEFWRXhlY1N0YXRlQDFAQFoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cK
aW5kZXggNTZhMWY1My4uNzU3OTdjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMCBAQAogMjAxMi0wOS0wNiAg
UGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAorICAgICAgICBNYWtlIHRo
ZSBTdHJpbmcgaW5pdGlhbGl6YXRpb24gb24gdGhlIGZ1bmN0aW9uIHNpZGUgb2YgU3RyaW5nOjpu
dW1iZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTU5NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
bi1JbmxpbmUgU3RyaW5nOjpudW1iZXIoKSB0byBtYWtlIHRoZSBTdHJpbmcgaW5pdGlhbGl6YXRp
b24gZG9uZSBvbiB0aGUgZnVuY3Rpb24gc2lkZQorICAgICAgICBpbnN0ZWFkIG9mIGJlaW5nIG9u
IHRoZSBjYWxsZXIgc2lkZS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAg
ICAgICogV1RGLmd5cGk6CisgICAgICAgICogV1RGLnBybzoKKyAgICAgICAgKiBXVEYudmNwcm9q
L1dURi52Y3Byb2o6CisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi90ZXh0L0ludGVnZXJU
b1N0cmluZ0NvbnZlcnNpb24uY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHd0Zi90ZXh0L0ludGVn
ZXJUb1N0cmluZ0NvbnZlcnNpb24uaDoKKyAgICAgICAgKFdURjo6bnVtYmVyVG9TdHJpbmdJbXBs
KToKKyAgICAgICAgKFdURjo6bnVtYmVyVG9TdHJpbmdTaWduZWQpOgorICAgICAgICAoV1RGOjpu
dW1iZXJUb1N0cmluZ1Vuc2lnbmVkKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3Bw
OgorICAgICAgICAoV1RGOjpTdHJpbmc6Om51bWJlcik6CisgICAgICAgICogd3RmL3RleHQvV1RG
U3RyaW5nLmg6CisKKzIwMTItMDktMDYgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKICAgICAgICAgRml4IGV4cG9ydCBtYWNyb3MgaW4gSW50ZWdlclRvU3RyaW5nQ29u
dmVyc2lvbi5oCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD05NTkwMAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMjI4M2ZlZC4uYTQwODAzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XVEYv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjA4LDcgKzIwOCw2IEBAIHd0Zl9zb3VyY2VzICs9IFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi90
ZXh0L0NTdHJpbmcuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaCBcCi0g
ICAgU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCBcCiAg
ICAgU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggXAogICAg
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVmZmVyLmggXAogICAgIFNvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYuZ3lw
aSBiL1NvdXJjZS9XVEYvV1RGLmd5cGkKaW5kZXggNmNmY2Q0Mi4uY2RjNzNmZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9XVEYuZ3lwaQorKysgYi9Tb3VyY2UvV1RGL1dURi5neXBpCkBAIC0yMjQs
NyArMjI0LDYgQEAKICAgICAgICAgICAgICd3dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwJywKICAg
ICAgICAgICAgICd3dGYvdGV4dC9CYXNlNjQuY3BwJywKICAgICAgICAgICAgICd3dGYvdGV4dC9D
U3RyaW5nLmNwcCcsCi0gICAgICAgICAgICAnd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVy
c2lvbi5jcHAnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwJywKICAg
ICAgICAgICAgICd3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCcsCiAgICAgICAgICAgICAnd3RmL3Rl
eHQvU3RyaW5nU3RhdGljcy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYucHJvIGIv
U291cmNlL1dURi9XVEYucHJvCmluZGV4IDEwNjg4NWQuLjVkNmE2ZTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvV1RGLnBybworKysgYi9Tb3VyY2UvV1RGL1dURi5wcm8KQEAgLTIxOSw3ICsyMTks
NiBAQCBTT1VSQ0VTICs9IFwKICAgICB0ZXh0L0F0b21pY1N0cmluZy5jcHAgXAogICAgIHRleHQv
QmFzZTY0LmNwcCBcCiAgICAgdGV4dC9DU3RyaW5nLmNwcCBcCi0gICAgdGV4dC9JbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uLmNwcCBcCiAgICAgdGV4dC9TdHJpbmdCdWlsZGVyLmNwcCBcCiAgICAg
dGV4dC9TdHJpbmdJbXBsLmNwcCBcCiAgICAgdGV4dC9TdHJpbmdTdGF0aWNzLmNwcCBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvaiBiL1NvdXJjZS9XVEYvV1RG
LnZjcHJvai9XVEYudmNwcm9qCmluZGV4IGQ3ODAzNzUuLjQ4NWQyZTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjcHJv
ai9XVEYudmNwcm9qCkBAIC00MjQsMTAgKzQyNCw2IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJ
PEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0Zlx0ZXh0XEludGVnZXJUb1N0cmluZ0NvbnZl
cnNpb24uY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlx3dGZcdGV4dFxJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgiCiAJCQkJPgogCQkJPC9G
aWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjg4YmRm
Zi4uZDIzNmJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xMSw3ICsxMSw2IEBACiAJCTE0M0Y2MTFGMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0M0Y2MTFE
MTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCAqLzsgfTsKIAkJMTQzRjYxMjAxNTY1RjBG
OTAwREI1MTRBIC8qIFJBTVNpemUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRGM0IwRjcxNUU0
NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RjNCMEY2MTVFNDVFNDYwMDIxMDA2OSAvKiBT
YXR1cmF0ZWRBcml0aG1ldGljLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJMjYxNDdCMDkxNUREQ0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmlu
Z0NvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjYxNDdCMDcxNUREQ0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNp
b24uY3BwICovOyB9OwogCQkyNjE0N0IwQTE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3Ry
aW5nQ29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMjYxNDdCMDgxNUREQ0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNp
b24uaCAqLzsgfTsKIAkJMkMwNTM4NTQxNUJDODE5MDAwRjIxQjk2IC8qIEdyZWdvcmlhbkRhdGVU
aW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQzA1
Mzg1MzE1QkM4MTkwMDBGMjFCOTYgLyogR3JlZ29yaWFuRGF0ZVRpbWUuaCAqLzsgfTsKIAkJMkND
RDg5MkExNUMwMzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVUaW1lLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJDQ0Q4OTI5MTVDMDM5MDIwMDI4
NTA4MyAvKiBHcmVnb3JpYW5EYXRlVGltZS5jcHAgKi87IH07CkBAIC0yNTgsNyArMjU3LDYgQEAK
IAkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUkFNU2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTE0M0Y2MTFFMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJBTVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMTRGM0IwRjYxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2F0dXJhdGVkQXJpdGhtZXRpYy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkyNjE0N0IwNzE1RERDQ0RDMDBEREI5MDcg
LyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMjYxNDdCMDgxNUREQ0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0
cmluZ0NvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQzA1
Mzg1MzE1QkM4MTkwMDBGMjFCOTYgLyogR3JlZ29yaWFuRGF0ZVRpbWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR3JlZ29yaWFuRGF0ZVRpbWUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkNDRDg5MjkxNUMwMzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVU
aW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyZWdvcmlhbkRh
dGVUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5NSw3ICs3OTMsNiBA
QAogCQkJCTgxMzQwMTM3MTVCMDkyRkQwMDFGRjBCOCAvKiBCYXNlNjQuaCAqLywKIAkJCQlBOEE0
NzMyMTE1MUE4MjVCMDA0MTIzRkYgLyogQ1N0cmluZy5jcHAgKi8sCiAJCQkJQThBNDczMjIxNTFB
ODI1QjAwNDEyM0ZGIC8qIENTdHJpbmcuaCAqLywKLQkJCQkyNjE0N0IwNzE1RERDQ0RDMDBEREI5
MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgKi8sCiAJCQkJMjYxNDdCMDgxNURE
Q0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCAqLywKIAkJCQlBOEE0
NzMyMzE1MUE4MjVCMDA0MTIzRkYgLyogU3RyaW5nQnVmZmVyLmggKi8sCiAJCQkJQThBNDczMjQx
NTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1aWxkZXIuY3BwICovLApAQCAtMTE4OCw3ICsxMTg1
LDYgQEAKIAkJCQlBOEE0NzNCNTE1MUE4MjVCMDA0MTIzRkYgLyogZml4ZWQtZHRvYS5jYyBpbiBT
b3VyY2VzICovLAogCQkJCTJDQ0Q4OTJBMTVDMDM5MDIwMDI4NTA4MyAvKiBHcmVnb3JpYW5EYXRl
VGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNEODE1MUE4MjVCMDA0MTIzRkYgLyog
SGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTI2MTQ3QjA5MTVERENDREMwMEREQjkw
NyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
QTQ3M0U1MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE4QTQ3M0U0MTUxQTgyNUIwMDQxMjNGRiAvKiBNYWluVGhyZWFkTWFjLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQ0Q1NDk3QUMxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4g
U291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKaW5kZXggMzIwYzg0Yi4uNjc5YjIwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93
dGYvQ01ha2VMaXN0cy50eHQKQEAgLTE4Myw3ICsxODMsNiBAQCBTRVQoV1RGX1NPVVJDRVMKICAg
ICB0ZXh0L0F0b21pY1N0cmluZy5jcHAKICAgICB0ZXh0L0Jhc2U2NC5jcHAKICAgICB0ZXh0L0NT
dHJpbmcuY3BwCi0gICAgdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcAogICAgIHRl
eHQvU3RyaW5nQnVpbGRlci5jcHAKICAgICB0ZXh0L1N0cmluZ0ltcGwuY3BwCiAgICAgdGV4dC9T
dHJpbmdTdGF0aWNzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2Vy
VG9TdHJpbmdDb252ZXJzaW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3Ry
aW5nQ29udmVyc2lvbi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NWM4ODMu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJz
aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgiCi0KLSNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ7Ci0KLXRlbXBsYXRlPD4g
c3RydWN0IFVuc2lnbmVkSW50ZWdlclRyYWl0PHNob3J0PiB7Ci0gICAgdHlwZWRlZiB1bnNpZ25l
ZCBzaG9ydCBUeXBlOwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlclRyYWl0
PGludD4gewotICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IFR5cGU7Ci19OwotdGVtcGxhdGU8PiBz
dHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ8bG9uZz4gewotICAgIHR5cGVkZWYgdW5zaWduZWQg
bG9uZyBUeXBlOwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlclRyYWl0PGxv
bmcgbG9uZz4gewotICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIFR5cGU7Ci19OwotCi10
ZW1wbGF0ZTx0eXBlbmFtZSBTaWduZWRJbnRlZ2VyVHlwZT4KLXN0YXRpYyBQYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbFNpZ25lZChTaWduZWRJbnRlZ2VyVHlwZSBpbnRl
Z2VyKQotewotICAgIExDaGFyIGJ1ZlsxICsgc2l6ZW9mKFNpZ25lZEludGVnZXJUeXBlKSAqIDNd
OwotICAgIExDaGFyKiBlbmQgPSBidWYgKyBXVEZfQVJSQVlfTEVOR1RIKGJ1Zik7Ci0gICAgTENo
YXIqIHAgPSBlbmQ7Ci0KLSAgICBib29sIG5lZ2F0aXZlID0gZmFsc2U7Ci0gICAgdHlwZW5hbWUg
VW5zaWduZWRJbnRlZ2VyVHJhaXQ8U2lnbmVkSW50ZWdlclR5cGU+OjpUeXBlIHVuc2lnbmVkSW50
ZWdlcjsKLSAgICBpZiAoaW50ZWdlciA8IDApIHsKLSAgICAgICAgbmVnYXRpdmUgPSB0cnVlOwot
ICAgICAgICB1bnNpZ25lZEludGVnZXIgPSAtaW50ZWdlcjsKLSAgICB9IGVsc2UKLSAgICAgICAg
dW5zaWduZWRJbnRlZ2VyID0gaW50ZWdlcjsKLQotICAgIGRvIHsKLSAgICAgICAgKi0tcCA9IHN0
YXRpY19jYXN0PExDaGFyPigodW5zaWduZWRJbnRlZ2VyICUgMTApICsgJzAnKTsKLSAgICAgICAg
dW5zaWduZWRJbnRlZ2VyIC89IDEwOwotICAgIH0gd2hpbGUgKHVuc2lnbmVkSW50ZWdlcik7Ci0K
LSAgICBpZiAobmVnYXRpdmUpCi0gICAgICAgICotLXAgPSAnLSc7Ci0KLSAgICByZXR1cm4gU3Ry
aW5nSW1wbDo6Y3JlYXRlKHAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBwKSk7Ci19Ci0K
LVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKGludCBpKQotewotICAg
IHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGxTaWduZWQoaSk7Ci19Ci0KLVBhc3NSZWZQdHI8U3Ry
aW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKGxvbmcgaSkKLXsKLSAgICByZXR1cm4gbnVtYmVy
VG9TdHJpbmdJbXBsU2lnbmVkKGkpOwotfQotCi1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJl
clRvU3RyaW5nSW1wbChsb25nIGxvbmcgaSkKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJ
bXBsU2lnbmVkKGkpOwotfQotCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5
cGU+Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbFVuc2lnbmVkKFVu
c2lnbmVkSW50ZWdlclR5cGUgaW50ZWdlcikKLXsKLSAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2ln
bmVkSW50ZWdlclR5cGUpICogM107Ci0gICAgTENoYXIqIGVuZCA9IGJ1ZiArIFdURl9BUlJBWV9M
RU5HVEgoYnVmKTsKLSAgICBMQ2hhciogcCA9IGVuZDsKLQotICAgIGRvIHsKLSAgICAgICAgKi0t
cCA9IHN0YXRpY19jYXN0PExDaGFyPigoaW50ZWdlciAlIDEwKSArICcwJyk7Ci0gICAgICAgIGlu
dGVnZXIgLz0gMTA7Ci0gICAgfSB3aGlsZSAoaW50ZWdlcik7Ci0gICAgcmV0dXJuIFN0cmluZ0lt
cGw6OmNyZWF0ZShwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gcCkpOwotfQotCi1QYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbCh1bnNpZ25lZCB1KQotewotICAg
IHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGxVbnNpZ25lZCh1KTsKLX0KLQotUGFzc1JlZlB0cjxT
dHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwodW5zaWduZWQgbG9uZyB1KQotewotICAgIHJl
dHVybiBudW1iZXJUb1N0cmluZ0ltcGxVbnNpZ25lZCh1KTsKLX0KLQotUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwodW5zaWduZWQgbG9uZyBsb25nIHUpCi17Ci0gICAg
cmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbFVuc2lnbmVkKHUpOwotfQotCi19IC8vIG5hbWVzcGFj
ZSBXVEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29u
dmVyc2lvbi5oIGIvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9u
LmgKaW5kZXggNGM2MWNjNi4uYmUxMzhhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9J
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTIxLDE3ICsyMiw2NyBAQAogI2lmbmRlZiBJbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uX2gKICNkZWZpbmUgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbl9oCiAKLSNpbmNs
dWRlICJTdHJpbmdJbXBsLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLVdU
Rl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1w
bChpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVy
VG9TdHJpbmdJbXBsKGxvbmcpOwotV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKGxvbmcgbG9uZyk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ29udmVyc2lvblRyYWl0OwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwodW5zaWduZWQpOwotV1RGX0VYUE9SVF9Q
UklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKHVuc2lnbmVk
IGxvbmcpOwotV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVy
VG9TdHJpbmdJbXBsKHVuc2lnbmVkIGxvbmcgbG9uZyk7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252
ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7CisgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IFJldHVyblR5cGU7CisgICAgdHlwZWRlZiB2b2lkIEFkZGl0aW9uYWxBcmd1bWVudFR5cGU7Cisg
ICAgc3RhdGljIGlubGluZSBSZXR1cm5UeXBlIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgsIHZvaWQqKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVy
cywgbGVuZ3RoKTsgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnNpb25UcmFpdDxTdHJp
bmdCdWlsZGVyPiB7CisgICAgdHlwZWRlZiB2b2lkIFJldHVyblR5cGU7CisgICAgdHlwZWRlZiBT
dHJpbmdCdWlsZGVyIEFkZGl0aW9uYWxBcmd1bWVudFR5cGU7CisgICAgc3RhdGljIGlubGluZSBS
ZXR1cm5UeXBlIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFN0cmlu
Z0J1aWxkZXIqIHN0cmluZ0J1aWxkZXIpIHsgc3RyaW5nQnVpbGRlci0+YXBwZW5kKGNoYXJhY3Rl
cnMsIGxlbmd0aCk7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBVbnNpZ25l
ZEludGVnZXJUcmFpdDsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ8
aW50PiB7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgVHlwZTsKK307Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDxsb25nPiB7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBs
b25nIFR5cGU7Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ8bG9u
ZyBsb25nPiB7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgVHlwZTsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGUsIGJvb2wgTmVn
YXRpdmU+CitzdGF0aWMgdHlwZW5hbWUgQ29udmVyc2lvblRyYWl0PFQ+OjpSZXR1cm5UeXBlIG51
bWJlclRvU3RyaW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlciwgdHlwZW5hbWUgQ29u
dmVyc2lvblRyYWl0PFQ+OjpBZGRpdGlvbmFsQXJndW1lbnRUeXBlKiBhZGRpdGlvbmFsQXJndW1l
bnQpCit7CisgICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMgKyAx
XTsKKyAgICBMQ2hhciogZW5kID0gYnVmICsgV1RGX0FSUkFZX0xFTkdUSChidWYpOworICAgIExD
aGFyKiBwID0gZW5kOworCisgICAgZG8geworICAgICAgICAqLS1wID0gc3RhdGljX2Nhc3Q8TENo
YXI+KChudW1iZXIgJSAxMCkgKyAnMCcpOworICAgICAgICBudW1iZXIgLz0gMTA7CisgICAgfSB3
aGlsZSAobnVtYmVyKTsKKworICAgIGlmIChOZWdhdGl2ZSkKKyAgICAgICAgKi0tcCA9ICctJzsK
KworICAgIHJldHVybiBDb252ZXJzaW9uVHJhaXQ8VD46OmZsdXNoKHAsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihlbmQgLSBwKSwgYWRkaXRpb25hbEFyZ3VtZW50KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgU2lnbmVkSW50ZWdlclR5cGU+CitpbmxpbmUgdHlwZW5hbWUgQ29u
dmVyc2lvblRyYWl0PFQ+OjpSZXR1cm5UeXBlIG51bWJlclRvU3RyaW5nU2lnbmVkKFNpZ25lZElu
dGVnZXJUeXBlIG51bWJlciwgdHlwZW5hbWUgQ29udmVyc2lvblRyYWl0PFQ+OjpBZGRpdGlvbmFs
QXJndW1lbnRUeXBlKiBhZGRpdGlvbmFsQXJndW1lbnQgPSAwKQoreworICAgIGlmIChudW1iZXIg
PCAwKQorICAgICAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsPFQsIHR5cGVuYW1lIFVuc2ln
bmVkSW50ZWdlclRyYWl0PFNpZ25lZEludGVnZXJUeXBlPjo6VHlwZSwgdHJ1ZT4oLW51bWJlciwg
YWRkaXRpb25hbEFyZ3VtZW50KTsKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsPFQsIHR5
cGVuYW1lIFVuc2lnbmVkSW50ZWdlclRyYWl0PFNpZ25lZEludGVnZXJUeXBlPjo6VHlwZSwgZmFs
c2U+KG51bWJlciwgYWRkaXRpb25hbEFyZ3VtZW50KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZT4KK2lubGluZSB0eXBlbmFtZSBDb252ZXJz
aW9uVHJhaXQ8VD46OlJldHVyblR5cGUgbnVtYmVyVG9TdHJpbmdVbnNpZ25lZChVbnNpZ25lZElu
dGVnZXJUeXBlIG51bWJlciwgdHlwZW5hbWUgQ29udmVyc2lvblRyYWl0PFQ+OjpBZGRpdGlvbmFs
QXJndW1lbnRUeXBlKiBhZGRpdGlvbmFsQXJndW1lbnQgPSAwKQoreworICAgIHJldHVybiBudW1i
ZXJUb1N0cmluZ0ltcGw8VCwgVW5zaWduZWRJbnRlZ2VyVHlwZSwgZmFsc2U+KG51bWJlciwgYWRk
aXRpb25hbEFyZ3VtZW50KTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcAppbmRleCAwN2FmY2M3Li42ZjE0YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuY3BwCkBAIC00MTcsNyArNDE3LDM3IEBAIFN0cmluZyBTdHJpbmc6OmZvcm1hdChjb25z
dCBjaGFyICpmb3JtYXQsIC4uLikKICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihidWZmZXIuZGF0YSgpKSwgbGVuKTsKICNlbmRpZgog
fQotICAgIAorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIoaW50IG51bWJlcikKK3sKKyAgICByZXR1
cm4gbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nPihudW1iZXIpOworfQorCitTdHJpbmcgU3Ry
aW5nOjpudW1iZXIodW5zaWduZWQgaW50IG51bWJlcikKK3sKKyAgICByZXR1cm4gbnVtYmVyVG9T
dHJpbmdVbnNpZ25lZDxTdHJpbmc+KG51bWJlcik7Cit9CisKK1N0cmluZyBTdHJpbmc6Om51bWJl
cihsb25nIG51bWJlcikKK3sKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5n
PihudW1iZXIpOworfQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIodW5zaWduZWQgbG9uZyBudW1i
ZXIpCit7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nPihudW1iZXIp
OworfQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIobG9uZyBsb25nIG51bWJlcikKK3sKKyAgICBy
ZXR1cm4gbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nPihudW1iZXIpOworfQorCitTdHJpbmcg
U3RyaW5nOjpudW1iZXIodW5zaWduZWQgbG9uZyBsb25nIG51bWJlcikKK3sKKyAgICByZXR1cm4g
bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmc+KG51bWJlcik7Cit9CisKIFN0cmluZyBTdHJp
bmc6Om51bWJlcihkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBmbGFncywgdW5zaWduZWQgcHJlY2lz
aW9uKQogewogICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCmluZGV4IGUyMDA3ZDYuLjYzNmRiOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApA
QCAtMjYsNyArMjYsNiBAQAogLy8gb24gc3lzdGVtcyB3aXRob3V0IGNhc2Utc2Vuc2l0aXZlIGZp
bGUgc3lzdGVtcy4KIAogI2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJRmFzdFBhdGguaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvU3RyaW5nSW1wbC5oPgogCiAjaWZkZWYgX19PQkpDX18KQEAgLTIyNiwxMyArMjI1LDEy
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICgqbV9pbXBsKVtpbmRleF07CiAgICAgfQogCi0g
ICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgc2hvcnQgbnVtYmVyKSB7IHJldHVybiBu
dW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGlu
dCBudW1iZXIpIHsgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbChudW1iZXIpOyB9Ci0gICAgc3Rh
dGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbnVtYmVyKSB7IHJldHVybiBudW1iZXJUb1N0cmlu
Z0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbnVtYmVyKSB7
IHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcg
bnVtYmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyKSB7IHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGwo
bnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpIHsg
cmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbChudW1iZXIpOyB9Ci0gICAgc3RhdGljIFN0cmluZyBu
dW1iZXIodW5zaWduZWQgbG9uZyBsb25nIG51bWJlcikgeyByZXR1cm4gbnVtYmVyVG9TdHJpbmdJ
bXBsKG51bWJlcik7IH0KKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBu
dW1iZXIoaW50KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1i
ZXIodW5zaWduZWQgaW50KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmlu
ZyBudW1iZXIobG9uZyk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcg
bnVtYmVyKHVuc2lnbmVkIGxvbmcpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMg
U3RyaW5nIG51bWJlcihsb25nIGxvbmcpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0
aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcpOwogCiAgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSwgdW5zaWduZWQgPSBTaG91bGRS
b3VuZFNpZ25pZmljYW50RmlndXJlcyB8IFNob3VsZFRydW5jYXRlVHJhaWxpbmdaZXJvcywgdW5z
aWduZWQgcHJlY2lzaW9uID0gNik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0Yjk4Nzc4Li43MGVmYmEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDktMDYgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSB0aGUgU3RyaW5nIGluaXRpYWxp
emF0aW9uIG9uIHRoZSBmdW5jdGlvbiBzaWRlIG9mIFN0cmluZzo6bnVtYmVyKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTQwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6
CisKIDIwMTItMDktMDUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dLMl0gQW5ub3RhdGUgbXVsdGktcHJvY2VzcyBGSVhNRXMgd2l0aCBidWcgbnVtYmVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IDk3NWE3M2QuLjc5M2U3YzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0Mi5kZWYKQEAgLTE5NSw4ICsxOTUsOCBAQCBFWFBPUlRTCiAgICAgICAgID9sYXN0Q2hp
bGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bmV4
dEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9wcmV2
aW91c0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9u
dW1iZXJUb1N0cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZA
QEAxQEhAWgotICAgICAgICA/bnVtYmVyVG9TdHJpbmdJbXBsQFdURkBAWUE/QVY/JFBhc3NSZWZQ
dHJAVlN0cmluZ0ltcGxAV1RGQEBAMUBJQFoKKyAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBT
QT9BVjEyQElAWgorICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASEBaCiAgICAg
ICAgID9vdmVycmlkZVVzZXJQcmVmZXJyZWRMYW5ndWFnZXNAV2ViQ29yZUBAWUFYQUJWPyRWZWN0
b3JAVlN0cmluZ0BXVEZAQCQwQUBAV1RGQEBAWgogICAgICAgICA/bnVtYmVyT2ZTY29wZWRIVE1M
U3R5bGVDaGlsZHJlbkBOb2RlQFdlYkNvcmVAQFFCRUlYWgogICAgICAgICA/cGFnZUBEb2N1bWVu
dEBXZWJDb3JlQEBRQkVQQVZQYWdlQDJAWFoKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjN2ZmN2U5Li5jNmQzNWJhIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTIt
MDktMDYgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
TWFrZSB0aGUgU3RyaW5nIGluaXRpYWxpemF0aW9uIG9uIHRoZSBmdW5jdGlvbiBzaWRlIG9mIFN0
cmluZzo6bnVtYmVyKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1OTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9u
LmNwcDoKKyAgICAgICAgKHRlc3RCb3VuZGFyaWVzKToKKyAgICAgICAgKHRlc3ROdW1iZXJzKToK
KwogMjAxMi0wOS0wNiAgRmFkeSBTYW11ZWwgIDxmc2FtdWVsQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBGaXggV1RGLkxyaW50IG9uIDMyLWJpdCBwbGF0Zm9ybXMKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5j
cHAKaW5kZXggYTIwMWY0MS4uNmI5ZDhkZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XVEYvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAKQEAgLTI4
LDcgKzI4LDYgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJh
cy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9J
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEludGVnZXJUeXBlPiBzdHJ1Y3QgUHJpbnRmRm9ybWF0
VHJhaXQgeyBzdGF0aWMgY29uc3QgY2hhciBmb3JtYXRbXTsgfTsKQEAgLTc1LDEyICs3NCwxMiBA
QCB2b2lkIHRlc3RCb3VuZGFyaWVzKCkKICAgICBidWZmZXIucmVzaXplKGJ1ZmZlclNpemUpOwog
CiAgICAgY29uc3QgSW50ZWdlclR5cGUgbWluID0gc3RkOjpudW1lcmljX2xpbWl0czxJbnRlZ2Vy
VHlwZT46Om1pbigpOwotICAgIENTdHJpbmcgbWluU3RyaW5nRGF0YSA9IFN0cmluZyhXVEY6Om51
bWJlclRvU3RyaW5nSW1wbChtaW4pKS5sYXRpbjEoKTsKKyAgICBDU3RyaW5nIG1pblN0cmluZ0Rh
dGEgPSBTdHJpbmc6Om51bWJlcihtaW4pLmxhdGluMSgpOwogICAgIHNucHJpbnRmKGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlclNpemUsIFByaW50ZkZvcm1hdFRyYWl0PEludGVnZXJUeXBlPjo6Zm9ybWF0
LCBtaW4pOwogICAgIEFTU0VSVF9TVFJFUShidWZmZXIuZGF0YSgpLCBtaW5TdHJpbmdEYXRhLmRh
dGEoKSk7CiAKICAgICBjb25zdCBJbnRlZ2VyVHlwZSBtYXggPSBzdGQ6Om51bWVyaWNfbGltaXRz
PEludGVnZXJUeXBlPjo6bWF4KCk7Ci0gICAgQ1N0cmluZyBtYXhTdHJpbmdEYXRhID0gU3RyaW5n
KFdURjo6bnVtYmVyVG9TdHJpbmdJbXBsKG1heCkpLmxhdGluMSgpOworICAgIENTdHJpbmcgbWF4
U3RyaW5nRGF0YSA9IFN0cmluZzo6bnVtYmVyKG1heCkubGF0aW4xKCk7CiAgICAgc25wcmludGYo
YnVmZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZSwgUHJpbnRmRm9ybWF0VHJhaXQ8SW50ZWdlclR5cGU+
Ojpmb3JtYXQsIG1heCk7CiAgICAgQVNTRVJUX1NUUkVRKGJ1ZmZlci5kYXRhKCksIG1heFN0cmlu
Z0RhdGEuZGF0YSgpKTsKIH0KQEAgLTk0LDcgKzkzLDcgQEAgdm9pZCB0ZXN0TnVtYmVycygpCiAK
ICAgICBmb3IgKGludCBpID0gLTEwMDsgaSA8IDEwMDsgKytpKSB7CiAgICAgICAgIGNvbnN0IElu
dGVnZXJUeXBlIG51bWJlciA9IHN0YXRpY19jYXN0PEludGVnZXJUeXBlPihpKTsKLSAgICAgICAg
Q1N0cmluZyBudW1iZXJTdHJpbmdEYXRhID0gU3RyaW5nKFdURjo6bnVtYmVyVG9TdHJpbmdJbXBs
KG51bWJlcikpLmxhdGluMSgpOworICAgICAgICBDU3RyaW5nIG51bWJlclN0cmluZ0RhdGEgPSBT
dHJpbmc6Om51bWJlcihudW1iZXIpLmxhdGluMSgpOwogICAgICAgICBzbnByaW50ZihidWZmZXIu
ZGF0YSgpLCBidWZmZXJTaXplLCBQcmludGZGb3JtYXRUcmFpdDxJbnRlZ2VyVHlwZT46OmZvcm1h
dCwgbnVtYmVyKTsKICAgICAgICAgQVNTRVJUX1NUUkVRKGJ1ZmZlci5kYXRhKCksIG51bWJlclN0
cmluZ0RhdGEuZGF0YSgpKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162678</attachid>
            <date>2012-09-06 23:08:09 -0700</date>
            <delta_ts>2012-09-07 02:49:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95940-20120907080748.patch</filename>
            <type>text/plain</type>
            <size>23447</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3Nzg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MmNhNjlmOGY2OGQ4M2FiMzYwZTE2MGYzMDZjNmY5ODA0YjljZTMwLi5kNmU3OThlNTQwZmNhNWIy
NDQ1MjIyYWYxZjczNTY0ZTBjZmNkODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wOS0wNiAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBNYWtlIHRoZSBTdHJpbmcgaW5pdGlhbGl6YXRpb24gb24gdGhlIGZ1
bmN0aW9uIHNpZGUgb2YgU3RyaW5nOjpudW1iZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisKIDIwMTItMDktMDYgIFl1cWlhbmcgWGlhbiAgPHl1
cWlhbmcueGlhbkBpbnRlbC5jb20+CiAKICAgICAgICAgUGVyZm9ybWFuY2UgcmVncmVzc2lvbnMg
b24gMzItYml0IHBsYXRmb3JtcyB3aXRoIHJldmlzaW9ucyAxMjU2MzcgYW5kIDEyNjM4NwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRl
eCA1NmExZjUzYjM0ZWFiOTA0NDIxMDdhZTVmYjI2NTFiMmQ0NmY0NjA2Li43NTc5N2MxNGVmNDEx
NTljZDcyZTQyYzYyNDgyODhmN2JhNGE3ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDEyLTA5
LTA2ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgogCisgICAgICAgIE1h
a2UgdGhlIFN0cmluZyBpbml0aWFsaXphdGlvbiBvbiB0aGUgZnVuY3Rpb24gc2lkZSBvZiBTdHJp
bmc6Om51bWJlcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFVuLUlubGluZSBTdHJpbmc6Om51bWJlcigpIHRvIG1ha2UgdGhlIFN0cmluZyBpbml0aWFs
aXphdGlvbiBkb25lIG9uIHRoZSBmdW5jdGlvbiBzaWRlCisgICAgICAgIGluc3RlYWQgb2YgYmVp
bmcgb24gdGhlIGNhbGxlciBzaWRlLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToK
KyAgICAgICAgKiBXVEYuZ3lwaToKKyAgICAgICAgKiBXVEYucHJvOgorICAgICAgICAqIFdURi52
Y3Byb2ovV1RGLnZjcHJvajoKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL3RleHQvSW50
ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogd3RmL3RleHQv
SW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oOgorICAgICAgICAoV1RGOjpudW1iZXJUb1N0cmlu
Z0ltcGwpOgorICAgICAgICAoV1RGOjpudW1iZXJUb1N0cmluZ1NpZ25lZCk6CisgICAgICAgIChX
VEY6Om51bWJlclRvU3RyaW5nVW5zaWduZWQpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmlu
Zy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6bnVtYmVyKToKKyAgICAgICAgKiB3dGYvdGV4
dC9XVEZTdHJpbmcuaDoKKworMjAxMi0wOS0wNiAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FA
d2Via2l0Lm9yZz4KKwogICAgICAgICBGaXggZXhwb3J0IG1hY3JvcyBpbiBJbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmgKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTk1OTAwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0Yjk4Nzc4NTk5ZjY4OWM0ZTU5Mzc5OTdhYmY3
NDc2MjI1MmMxNWU2Li43MGVmYmEyNmJiMzZhYTAxZmVjNGYzOGE5ZjRjY2ExMDk0NTQ0MDg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDktMDYgIFBhdHJpY2sgR2Fuc3RlcmVy
ICA8cGFyb2dhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSB0aGUgU3RyaW5nIGluaXRpYWxp
emF0aW9uIG9uIHRoZSBmdW5jdGlvbiBzaWRlIG9mIFN0cmluZzo6bnVtYmVyKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1OTQwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi5kZWY6
CisKIDIwMTItMDktMDUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dLMl0gQW5ub3RhdGUgbXVsdGktcHJvY2VzcyBGSVhNRXMgd2l0aCBidWcgbnVtYmVy
cwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRl
ZgppbmRleCA2YTkwODZjOGIyOTE1YWJiZjM4MzhmNWJhYjkyMmM0NmRlNDBlYzZkLi4xNjdjNDc0
ZDRkMTNiMmIyNjk4NTNhNThiMjViZmU4ZjQwNzEyZTVhIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMjU3LDEyICsyNTcsNiBA
QCBFWFBPUlRTCiAgICAgP251bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmdAV1RGQEBZQVBCRE5J
UUFEX05AWgogICAgID9udW1iZXJUb0ZpeGVkV2lkdGhTdHJpbmdAV1RGQEBZQVBCRE5JUUFEQFoK
ICAgICA/bnVtYmVyVG9TdHJpbmdAV1RGQEBZQVBCRE5RQURAWgotICAgID9udW1iZXJUb1N0cmlu
Z0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAxQF9KQFoKLSAg
ICA/bnVtYmVyVG9TdHJpbmdJbXBsQFdURkBAWUE/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxA
V1RGQEBAMUBfS0BaCi0gICAgP251bWJlclRvU3RyaW5nSW1wbEBXVEZAQFlBP0FWPyRQYXNzUmVm
UHRyQFZTdHJpbmdJbXBsQFdURkBAQDFASEBaCi0gICAgP251bWJlclRvU3RyaW5nSW1wbEBXVEZA
QFlBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDFASUBaCi0gICAgP251bWJlclRv
U3RyaW5nSW1wbEBXVEZAQFlBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDFASkBa
Ci0gICAgP251bWJlclRvU3RyaW5nSW1wbEBXVEZAQFlBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJ
bXBsQFdURkBAQDFAS0BaCiAgICAgP29iamVjdEF0U2NvcGVASlNTY29wZUBKU0NAQFNBUEFWSlNP
YmplY3RAMkBQQVYxMkBAWgogICAgID9vYmplY3RDb3VudEBIZWFwQEpTQ0BAUUFFSVhaCiAgICAg
P29iamVjdFByb3RvRnVuY1RvU3RyaW5nQEpTQ0BAWUlfSlBBVkV4ZWNTdGF0ZUAxQEBaCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV1RGL0dOVW1h
a2VmaWxlLmxpc3QuYW0KaW5kZXggMjI4M2ZlZDJjMmRmY2QxZDI4ZGViYTM1MzM5MjVlZjBlNjA1
ZmIzOS4uYTQwODAzNDU1ZjJkNzJjOGJlY2RkNzJmNDBiM2NmZmM1ODA4NDNkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XVEYvR05VbWFr
ZWZpbGUubGlzdC5hbQpAQCAtMjA4LDcgKzIwOCw2IEBAIHd0Zl9zb3VyY2VzICs9IFwKICAgICBT
b3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi90ZXh0L0NT
dHJpbmcuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaCBcCi0gICAgU291
cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCBcCiAgICAgU291
cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggXAogICAgIFNvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVmZmVyLmggXAogICAgIFNvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nQnVpbGRlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYuZ3lwaSBiL1Nv
dXJjZS9XVEYvV1RGLmd5cGkKaW5kZXggNmNmY2Q0MjFhN2RiYjU2Y2U0MzBhODk1M2MyZjdkNmFl
YTA2YTM1NC4uY2RjNzNmZDQ1YmMwODM1MTAzMDhhZGEyY2U3MjRlZmFlZGM1OWMwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dURi9XVEYuZ3lwaQorKysgYi9Tb3VyY2UvV1RGL1dURi5neXBpCkBAIC0y
MjQsNyArMjI0LDYgQEAKICAgICAgICAgICAgICd3dGYvdGV4dC9BdG9taWNTdHJpbmcuY3BwJywK
ICAgICAgICAgICAgICd3dGYvdGV4dC9CYXNlNjQuY3BwJywKICAgICAgICAgICAgICd3dGYvdGV4
dC9DU3RyaW5nLmNwcCcsCi0gICAgICAgICAgICAnd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29u
dmVyc2lvbi5jcHAnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3BwJywK
ICAgICAgICAgICAgICd3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCcsCiAgICAgICAgICAgICAnd3Rm
L3RleHQvU3RyaW5nU3RhdGljcy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYucHJv
IGIvU291cmNlL1dURi9XVEYucHJvCmluZGV4IDEwNjg4NWQ4MzU3NGJlOGIyZDIzZDIwYjk4MDhl
ZjlhODg2OTk2MWIuLjVkNmE2ZTU0ZmY0NjM1YWVjYTlmMzEzMmIzNDIzMDk5ZWE0MGNlMDMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnBybworKysgYi9Tb3VyY2UvV1RGL1dURi5wcm8KQEAg
LTIxOSw3ICsyMTksNiBAQCBTT1VSQ0VTICs9IFwKICAgICB0ZXh0L0F0b21pY1N0cmluZy5jcHAg
XAogICAgIHRleHQvQmFzZTY0LmNwcCBcCiAgICAgdGV4dC9DU3RyaW5nLmNwcCBcCi0gICAgdGV4
dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCBcCiAgICAgdGV4dC9TdHJpbmdCdWlsZGVy
LmNwcCBcCiAgICAgdGV4dC9TdHJpbmdJbXBsLmNwcCBcCiAgICAgdGV4dC9TdHJpbmdTdGF0aWNz
LmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvaiBiL1Nv
dXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCmluZGV4IGQ3ODAzNzVmOWZjZTJmYjRiOGU4
YmU2M2FjNDg1NzdkNzRmOTY4ZjMuLjQ4NWQyZTM1OWQ0MjkxNGVjZTU5ZTVmY2Y4MjA0YTY1Mzhl
MmE0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCisrKyBi
L1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCkBAIC00MjQsMTAgKzQyNCw2IEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0Zlx0ZXh0
XEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4KLQkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcdGV4dFxJbnRlZ2VyVG9TdHJpbmdDb252ZXJz
aW9uLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMjg4YmRmZjRmOWI0ODkzYjA4ZmNlNjkyYmQzZmE0ODBkNzRmYjcyMi4u
ZDIzNmJkNzdjOWIyOGY2YmFjN2U5OWYwNTljMGMzYTgxZjYyMDAzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV1RGL1dU
Ri54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMSw3ICsxMSw2IEBACiAJCTE0M0Y2MTFG
MTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXpl
LmNwcCAqLzsgfTsKIAkJMTQzRjYxMjAxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0M0Y2MTFFMTU2NUYw
RjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMTRGM0IwRjcxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFy
aXRobWV0aWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDE0RjNCMEY2MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMjYxNDdCMDkxNURE
Q0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYxNDdCMDcxNUREQ0NEQzAwRERC
OTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwICovOyB9OwogCQkyNjE0N0IwQTE1
RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYxNDdCMDgxNUREQ0NEQzAwRERC
OTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCAqLzsgfTsKIAkJMkMwNTM4NTQxNUJD
ODE5MDAwRjIxQjk2IC8qIEdyZWdvcmlhbkRhdGVUaW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQzA1Mzg1MzE1QkM4MTkwMDBGMjFCOTYgLyogR3Jl
Z29yaWFuRGF0ZVRpbWUuaCAqLzsgfTsKIAkJMkNDRDg5MkExNUMwMzkwMjAwMjg1MDgzIC8qIEdy
ZWdvcmlhbkRhdGVUaW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDJDQ0Q4OTI5MTVDMDM5MDIwMDI4NTA4MyAvKiBHcmVnb3JpYW5EYXRlVGltZS5j
cHAgKi87IH07CkBAIC0yNTgsNyArMjU3LDYgQEAKIAkJMTQzRjYxMUQxNTY1RjBGOTAwREI1MTRB
IC8qIFJBTVNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUkFN
U2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0M0Y2MTFFMTU2NUYwRjkw
MERCNTE0QSAvKiBSQU1TaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJB
TVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGM0IwRjYxNUU0NUU0NjAw
MjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU2F0dXJhdGVkQXJpdGhtZXRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQkyNjE0N0IwNzE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlZ2VyVG9TdHJp
bmdDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjYxNDdCMDgx
NUREQ0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQzA1Mzg1MzE1QkM4MTkwMDBGMjFCOTYgLyogR3Jl
Z29yaWFuRGF0ZVRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR3JlZ29y
aWFuRGF0ZVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkNDRDg5MjkxNUMw
MzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVUaW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdyZWdvcmlhbkRhdGVUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTc5NSw3ICs3OTMsNiBAQAogCQkJCTgxMzQwMTM3MTVCMDkyRkQwMDFG
RjBCOCAvKiBCYXNlNjQuaCAqLywKIAkJCQlBOEE0NzMyMTE1MUE4MjVCMDA0MTIzRkYgLyogQ1N0
cmluZy5jcHAgKi8sCiAJCQkJQThBNDczMjIxNTFBODI1QjAwNDEyM0ZGIC8qIENTdHJpbmcuaCAq
LywKLQkJCQkyNjE0N0IwNzE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVy
c2lvbi5jcHAgKi8sCiAJCQkJMjYxNDdCMDgxNUREQ0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0
cmluZ0NvbnZlcnNpb24uaCAqLywKIAkJCQlBOEE0NzMyMzE1MUE4MjVCMDA0MTIzRkYgLyogU3Ry
aW5nQnVmZmVyLmggKi8sCiAJCQkJQThBNDczMjQxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1
aWxkZXIuY3BwICovLApAQCAtMTE4OCw3ICsxMTg1LDYgQEAKIAkJCQlBOEE0NzNCNTE1MUE4MjVC
MDA0MTIzRkYgLyogZml4ZWQtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTJDQ0Q4OTJBMTVD
MDM5MDIwMDI4NTA4MyAvKiBHcmVnb3JpYW5EYXRlVGltZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEE0NzNEODE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRhYmxlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTI2MTQ3QjA5MTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJz
aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U1MTUxQTgyNUIwMDQxMjNGRiAvKiBN
YWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U0MTUxQTgyNUIwMDQxMjNG
RiAvKiBNYWluVGhyZWFkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1NDk3QUMxNTg1N0Qw
MzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQKaW5kZXggMzIwYzg0YmU2ODhiMDM5OTEzMTFjN2RkNzA1YzQzMDdjZjk5YTAwMC4uNjc5YjIw
ZTk2YmYwMDFjZWIyZDkzZGY0YjY3M2U5NWE3NTU1ZTY5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dU
Ri93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQK
QEAgLTE4Myw3ICsxODMsNiBAQCBTRVQoV1RGX1NPVVJDRVMKICAgICB0ZXh0L0F0b21pY1N0cmlu
Zy5jcHAKICAgICB0ZXh0L0Jhc2U2NC5jcHAKICAgICB0ZXh0L0NTdHJpbmcuY3BwCi0gICAgdGV4
dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcAogICAgIHRleHQvU3RyaW5nQnVpbGRlci5j
cHAKICAgICB0ZXh0L1N0cmluZ0ltcGwuY3BwCiAgICAgdGV4dC9TdHJpbmdTdGF0aWNzLmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9u
LmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NWM4ODNjNmViMWY0YmYwYzgzYjI0ZmVi
ZTE3NTQxM2YxYmYyNTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LSNpbmNsdWRlICJJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgiCi0KLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdJbXBsLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ7Ci0KLXRlbXBsYXRlPD4gc3RydWN0IFVu
c2lnbmVkSW50ZWdlclRyYWl0PHNob3J0PiB7Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBU
eXBlOwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlclRyYWl0PGludD4gewot
ICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IFR5cGU7Ci19OwotdGVtcGxhdGU8PiBzdHJ1Y3QgVW5z
aWduZWRJbnRlZ2VyVHJhaXQ8bG9uZz4gewotICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBUeXBl
OwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlclRyYWl0PGxvbmcgbG9uZz4g
ewotICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIFR5cGU7Ci19OwotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBTaWduZWRJbnRlZ2VyVHlwZT4KLXN0YXRpYyBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IG51bWJlclRvU3RyaW5nSW1wbFNpZ25lZChTaWduZWRJbnRlZ2VyVHlwZSBpbnRlZ2VyKQotewot
ICAgIExDaGFyIGJ1ZlsxICsgc2l6ZW9mKFNpZ25lZEludGVnZXJUeXBlKSAqIDNdOwotICAgIExD
aGFyKiBlbmQgPSBidWYgKyBXVEZfQVJSQVlfTEVOR1RIKGJ1Zik7Ci0gICAgTENoYXIqIHAgPSBl
bmQ7Ci0KLSAgICBib29sIG5lZ2F0aXZlID0gZmFsc2U7Ci0gICAgdHlwZW5hbWUgVW5zaWduZWRJ
bnRlZ2VyVHJhaXQ8U2lnbmVkSW50ZWdlclR5cGU+OjpUeXBlIHVuc2lnbmVkSW50ZWdlcjsKLSAg
ICBpZiAoaW50ZWdlciA8IDApIHsKLSAgICAgICAgbmVnYXRpdmUgPSB0cnVlOwotICAgICAgICB1
bnNpZ25lZEludGVnZXIgPSAtaW50ZWdlcjsKLSAgICB9IGVsc2UKLSAgICAgICAgdW5zaWduZWRJ
bnRlZ2VyID0gaW50ZWdlcjsKLQotICAgIGRvIHsKLSAgICAgICAgKi0tcCA9IHN0YXRpY19jYXN0
PExDaGFyPigodW5zaWduZWRJbnRlZ2VyICUgMTApICsgJzAnKTsKLSAgICAgICAgdW5zaWduZWRJ
bnRlZ2VyIC89IDEwOwotICAgIH0gd2hpbGUgKHVuc2lnbmVkSW50ZWdlcik7Ci0KLSAgICBpZiAo
bmVnYXRpdmUpCi0gICAgICAgICotLXAgPSAnLSc7Ci0KLSAgICByZXR1cm4gU3RyaW5nSW1wbDo6
Y3JlYXRlKHAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBwKSk7Ci19Ci0KLVBhc3NSZWZQ
dHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKGludCBpKQotewotICAgIHJldHVybiBu
dW1iZXJUb1N0cmluZ0ltcGxTaWduZWQoaSk7Ci19Ci0KLVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
bnVtYmVyVG9TdHJpbmdJbXBsKGxvbmcgaSkKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJ
bXBsU2lnbmVkKGkpOwotfQotCi1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5n
SW1wbChsb25nIGxvbmcgaSkKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsU2lnbmVk
KGkpOwotfQotCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+Ci1QYXNz
UmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbFVuc2lnbmVkKFVuc2lnbmVkSW50
ZWdlclR5cGUgaW50ZWdlcikKLXsKLSAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2lnbmVkSW50ZWdl
clR5cGUpICogM107Ci0gICAgTENoYXIqIGVuZCA9IGJ1ZiArIFdURl9BUlJBWV9MRU5HVEgoYnVm
KTsKLSAgICBMQ2hhciogcCA9IGVuZDsKLQotICAgIGRvIHsKLSAgICAgICAgKi0tcCA9IHN0YXRp
Y19jYXN0PExDaGFyPigoaW50ZWdlciAlIDEwKSArICcwJyk7Ci0gICAgICAgIGludGVnZXIgLz0g
MTA7Ci0gICAgfSB3aGlsZSAoaW50ZWdlcik7Ci0gICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0
ZShwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gcCkpOwotfQotCi1QYXNzUmVmUHRyPFN0
cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbCh1bnNpZ25lZCB1KQotewotICAgIHJldHVybiBu
dW1iZXJUb1N0cmluZ0ltcGxVbnNpZ25lZCh1KTsKLX0KLQotUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBudW1iZXJUb1N0cmluZ0ltcGwodW5zaWduZWQgbG9uZyB1KQotewotICAgIHJldHVybiBudW1i
ZXJUb1N0cmluZ0ltcGxVbnNpZ25lZCh1KTsKLX0KLQotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBu
dW1iZXJUb1N0cmluZ0ltcGwodW5zaWduZWQgbG9uZyBsb25nIHUpCi17Ci0gICAgcmV0dXJuIG51
bWJlclRvU3RyaW5nSW1wbFVuc2lnbmVkKHUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXVEYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKaW5kZXgg
NGM2MWNjNjgwNDk5YjFkNzRiNzFkZTViYThjZTI0MWQ4YjllZWVlZC4uYmUxMzhhODdlZTQzMjRl
Y2Y4ZDkwYTlkMWJhZmNmMTM0MDM0NDY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9J
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTIxLDE3ICsyMiw2NyBAQAogI2lmbmRlZiBJbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uX2gKICNkZWZpbmUgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbl9oCiAKLSNpbmNs
dWRlICJTdHJpbmdJbXBsLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIFdURiB7CiAKLVdU
Rl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1w
bChpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVy
VG9TdHJpbmdJbXBsKGxvbmcpOwotV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKGxvbmcgbG9uZyk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdHJ1Y3QgQ29udmVyc2lvblRyYWl0OwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgUGFzc1JlZlB0
cjxTdHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwodW5zaWduZWQpOwotV1RGX0VYUE9SVF9Q
UklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKHVuc2lnbmVk
IGxvbmcpOwotV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVy
VG9TdHJpbmdJbXBsKHVuc2lnbmVkIGxvbmcgbG9uZyk7Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252
ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7CisgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+
IFJldHVyblR5cGU7CisgICAgdHlwZWRlZiB2b2lkIEFkZGl0aW9uYWxBcmd1bWVudFR5cGU7Cisg
ICAgc3RhdGljIGlubGluZSBSZXR1cm5UeXBlIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNp
Z25lZCBsZW5ndGgsIHZvaWQqKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGUoY2hhcmFjdGVy
cywgbGVuZ3RoKTsgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnNpb25UcmFpdDxTdHJp
bmdCdWlsZGVyPiB7CisgICAgdHlwZWRlZiB2b2lkIFJldHVyblR5cGU7CisgICAgdHlwZWRlZiBT
dHJpbmdCdWlsZGVyIEFkZGl0aW9uYWxBcmd1bWVudFR5cGU7CisgICAgc3RhdGljIGlubGluZSBS
ZXR1cm5UeXBlIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIFN0cmlu
Z0J1aWxkZXIqIHN0cmluZ0J1aWxkZXIpIHsgc3RyaW5nQnVpbGRlci0+YXBwZW5kKGNoYXJhY3Rl
cnMsIGxlbmd0aCk7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBVbnNpZ25l
ZEludGVnZXJUcmFpdDsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ8
aW50PiB7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgVHlwZTsKK307Cit0ZW1wbGF0ZTw+IHN0
cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDxsb25nPiB7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBs
b25nIFR5cGU7Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ8bG9u
ZyBsb25nPiB7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgVHlwZTsKK307CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGUsIGJvb2wgTmVn
YXRpdmU+CitzdGF0aWMgdHlwZW5hbWUgQ29udmVyc2lvblRyYWl0PFQ+OjpSZXR1cm5UeXBlIG51
bWJlclRvU3RyaW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlciwgdHlwZW5hbWUgQ29u
dmVyc2lvblRyYWl0PFQ+OjpBZGRpdGlvbmFsQXJndW1lbnRUeXBlKiBhZGRpdGlvbmFsQXJndW1l
bnQpCit7CisgICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDMgKyAx
XTsKKyAgICBMQ2hhciogZW5kID0gYnVmICsgV1RGX0FSUkFZX0xFTkdUSChidWYpOworICAgIExD
aGFyKiBwID0gZW5kOworCisgICAgZG8geworICAgICAgICAqLS1wID0gc3RhdGljX2Nhc3Q8TENo
YXI+KChudW1iZXIgJSAxMCkgKyAnMCcpOworICAgICAgICBudW1iZXIgLz0gMTA7CisgICAgfSB3
aGlsZSAobnVtYmVyKTsKKworICAgIGlmIChOZWdhdGl2ZSkKKyAgICAgICAgKi0tcCA9ICctJzsK
KworICAgIHJldHVybiBDb252ZXJzaW9uVHJhaXQ8VD46OmZsdXNoKHAsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihlbmQgLSBwKSwgYWRkaXRpb25hbEFyZ3VtZW50KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgU2lnbmVkSW50ZWdlclR5cGU+CitpbmxpbmUgdHlwZW5hbWUgQ29u
dmVyc2lvblRyYWl0PFQ+OjpSZXR1cm5UeXBlIG51bWJlclRvU3RyaW5nU2lnbmVkKFNpZ25lZElu
dGVnZXJUeXBlIG51bWJlciwgdHlwZW5hbWUgQ29udmVyc2lvblRyYWl0PFQ+OjpBZGRpdGlvbmFs
QXJndW1lbnRUeXBlKiBhZGRpdGlvbmFsQXJndW1lbnQgPSAwKQoreworICAgIGlmIChudW1iZXIg
PCAwKQorICAgICAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsPFQsIHR5cGVuYW1lIFVuc2ln
bmVkSW50ZWdlclRyYWl0PFNpZ25lZEludGVnZXJUeXBlPjo6VHlwZSwgdHJ1ZT4oLW51bWJlciwg
YWRkaXRpb25hbEFyZ3VtZW50KTsKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsPFQsIHR5
cGVuYW1lIFVuc2lnbmVkSW50ZWdlclRyYWl0PFNpZ25lZEludGVnZXJUeXBlPjo6VHlwZSwgZmFs
c2U+KG51bWJlciwgYWRkaXRpb25hbEFyZ3VtZW50KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZT4KK2lubGluZSB0eXBlbmFtZSBDb252ZXJz
aW9uVHJhaXQ8VD46OlJldHVyblR5cGUgbnVtYmVyVG9TdHJpbmdVbnNpZ25lZChVbnNpZ25lZElu
dGVnZXJUeXBlIG51bWJlciwgdHlwZW5hbWUgQ29udmVyc2lvblRyYWl0PFQ+OjpBZGRpdGlvbmFs
QXJndW1lbnRUeXBlKiBhZGRpdGlvbmFsQXJndW1lbnQgPSAwKQoreworICAgIHJldHVybiBudW1i
ZXJUb1N0cmluZ0ltcGw8VCwgVW5zaWduZWRJbnRlZ2VyVHlwZSwgZmFsc2U+KG51bWJlciwgYWRk
aXRpb25hbEFyZ3VtZW50KTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmNwcAppbmRleCAwN2FmY2M3ZDA4OWJiNWNkMTBlMTJjYWE0ZTQ3MDNhODUyY2Ux
ZjA4Li42ZjE0YmNmNTY0YTIwZmRkMDI4ZTVmZjBiZmQxZjJjMTljMjg3ODE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuY3BwCkBAIC00MTcsNyArNDE3LDM3IEBAIFN0cmluZyBTdHJpbmc6OmZv
cm1hdChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3Jl
YXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihidWZmZXIuZGF0YSgpKSwgbGVuKTsK
ICNlbmRpZgogfQotICAgIAorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIoaW50IG51bWJlcikKK3sK
KyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nPihudW1iZXIpOworfQorCitT
dHJpbmcgU3RyaW5nOjpudW1iZXIodW5zaWduZWQgaW50IG51bWJlcikKK3sKKyAgICByZXR1cm4g
bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmc+KG51bWJlcik7Cit9CisKK1N0cmluZyBTdHJp
bmc6Om51bWJlcihsb25nIG51bWJlcikKK3sKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdTaWdu
ZWQ8U3RyaW5nPihudW1iZXIpOworfQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIodW5zaWduZWQg
bG9uZyBudW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5n
PihudW1iZXIpOworfQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIobG9uZyBsb25nIG51bWJlcikK
K3sKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nPihudW1iZXIpOworfQor
CitTdHJpbmcgU3RyaW5nOjpudW1iZXIodW5zaWduZWQgbG9uZyBsb25nIG51bWJlcikKK3sKKyAg
ICByZXR1cm4gbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmc+KG51bWJlcik7Cit9CisKIFN0
cmluZyBTdHJpbmc6Om51bWJlcihkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBmbGFncywgdW5zaWdu
ZWQgcHJlY2lzaW9uKQogewogICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCmluZGV4IGUyMDA3ZDY1NjU4MDI5NzMxZTJkMmRhZTkyYzc1MjE3ODIx
NDJkYzAuLjYzNmRiOWNkOTIxZDA3NjRmMWE2YmJlNzIwOGU1NzI0NTY1MzA2NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaApAQCAtMjYsNyArMjYsNiBAQAogLy8gb24gc3lzdGVtcyB3aXRob3V0
IGNhc2Utc2Vuc2l0aXZlIGZpbGUgc3lzdGVtcy4KIAogI2luY2x1ZGUgPHd0Zi90ZXh0L0FTQ0lJ
RmFzdFBhdGguaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiAjaWZkZWYgX19PQkpDX18K
QEAgLTIyNiwxMyArMjI1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICgqbV9pbXBsKVtp
bmRleF07CiAgICAgfQogCi0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgc2hvcnQg
bnVtYmVyKSB7IHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRp
YyBTdHJpbmcgbnVtYmVyKGludCBudW1iZXIpIHsgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbChu
dW1iZXIpOyB9Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbnVtYmVyKSB7IHJl
dHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVt
YmVyKGxvbmcgbnVtYmVyKSB7IHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQot
ICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyKSB7IHJldHVybiBu
dW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxv
bmcgbG9uZyBudW1iZXIpIHsgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbChudW1iZXIpOyB9Ci0g
ICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyBsb25nIG51bWJlcikgeyByZXR1
cm4gbnVtYmVyVG9TdHJpbmdJbXBsKG51bWJlcik7IH0KKyAgICBXVEZfRVhQT1JUX1NUUklOR19B
UEkgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkg
c3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgaW50KTsKKyAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdf
QVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcpOworICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nIGxvbmcpOworICAgIFdURl9FWFBP
UlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nIGxvbmcpOwog
CiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRvdWJsZSwg
dW5zaWduZWQgPSBTaG91bGRSb3VuZFNpZ25pZmljYW50RmlndXJlcyB8IFNob3VsZFRydW5jYXRl
VHJhaWxpbmdaZXJvcywgdW5zaWduZWQgcHJlY2lzaW9uID0gNik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQy
LmRlZgppbmRleCA5NzVhNzNkMzg3NmViNDM2ZWI0YmViOTIwOTg2NWYxOThlYjA1YmMxLi5mYzZl
MGQzNWRlZmM3ZTZiZWRkNTBlNjQ1M2Q0YmY4NzFiZDY0NjkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmCkBAIC0xOTUsOCArMTk1LDkgQEAgRVhQT1JUUwogICAgICAgICA/bGFzdENoaWxkQENvbXBv
c2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP25leHRAQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cHJldmlvdXNAQ29t
cG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/bnVtYmVyVG9T
dHJpbmdJbXBsQFdURkBAWUE/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMUBIQFoK
LSAgICAgICAgP251bWJlclRvU3RyaW5nSW1wbEBXVEZAQFlBP0FWPyRQYXNzUmVmUHRyQFZTdHJp
bmdJbXBsQFdURkBAQDFASUBaCisgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBf
S0BaCisgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBJQFoKKyAgICAgICAgP251
bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgogICAgICAgICA/b3ZlcnJpZGVVc2VyUHJlZmVy
cmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdU
RkBAQFoKICAgICAgICAgP251bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW5ATm9kZUBXZWJD
b3JlQEBRQkVJWFoKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAy
QFhaCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
YzdmZjdlOTIyNmVmZGQ5MjM2OTk2OTdkYjVmZTViMmI3MzM2MTUxOC4uYzZkMzViYTEzOWQ1ZTIw
MGNlODlkMTNlOGI3ZDdlMzBjMjIyZWY1NiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisr
KyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTA2ICBQYXRyaWNr
IEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgdGhlIFN0cmlu
ZyBpbml0aWFsaXphdGlvbiBvbiB0aGUgZnVuY3Rpb24gc2lkZSBvZiBTdHJpbmc6Om51bWJlcigp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk0MAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHA6CisgICAgICAg
ICh0ZXN0Qm91bmRhcmllcyk6CisgICAgICAgICh0ZXN0TnVtYmVycyk6CisKIDIwMTItMDktMDYg
IEZhZHkgU2FtdWVsICA8ZnNhbXVlbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRml4IFdURi5M
cmludCBvbiAzMi1iaXQgcGxhdGZvcm1zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwCmluZGV4IGEyMDFm
NDEyNzU1NTIzZWEzMmEwNzY0Yjg4NzdhYmViOWIxNjljMGYuLjZiOWQ4ZGY3Mjc2ZGViMGI0OWNm
NGY3ZTM1MjA1NzJhNDk1YWE3MGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwCkBAIC0yOCw3ICsy
OCw2IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ2VyVHlwZT4gc3RydWN0IFByaW50ZkZvcm1hdFRyYWl0
IHsgc3RhdGljIGNvbnN0IGNoYXIgZm9ybWF0W107IH07CkBAIC03NSwxMiArNzQsMTIgQEAgdm9p
ZCB0ZXN0Qm91bmRhcmllcygpCiAgICAgYnVmZmVyLnJlc2l6ZShidWZmZXJTaXplKTsKIAogICAg
IGNvbnN0IEludGVnZXJUeXBlIG1pbiA9IHN0ZDo6bnVtZXJpY19saW1pdHM8SW50ZWdlclR5cGU+
OjptaW4oKTsKLSAgICBDU3RyaW5nIG1pblN0cmluZ0RhdGEgPSBTdHJpbmcoV1RGOjpudW1iZXJU
b1N0cmluZ0ltcGwobWluKSkubGF0aW4xKCk7CisgICAgQ1N0cmluZyBtaW5TdHJpbmdEYXRhID0g
U3RyaW5nOjpudW1iZXIobWluKS5sYXRpbjEoKTsKICAgICBzbnByaW50ZihidWZmZXIuZGF0YSgp
LCBidWZmZXJTaXplLCBQcmludGZGb3JtYXRUcmFpdDxJbnRlZ2VyVHlwZT46OmZvcm1hdCwgbWlu
KTsKICAgICBBU1NFUlRfU1RSRVEoYnVmZmVyLmRhdGEoKSwgbWluU3RyaW5nRGF0YS5kYXRhKCkp
OwogCiAgICAgY29uc3QgSW50ZWdlclR5cGUgbWF4ID0gc3RkOjpudW1lcmljX2xpbWl0czxJbnRl
Z2VyVHlwZT46Om1heCgpOwotICAgIENTdHJpbmcgbWF4U3RyaW5nRGF0YSA9IFN0cmluZyhXVEY6
Om51bWJlclRvU3RyaW5nSW1wbChtYXgpKS5sYXRpbjEoKTsKKyAgICBDU3RyaW5nIG1heFN0cmlu
Z0RhdGEgPSBTdHJpbmc6Om51bWJlcihtYXgpLmxhdGluMSgpOwogICAgIHNucHJpbnRmKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlclNpemUsIFByaW50ZkZvcm1hdFRyYWl0PEludGVnZXJUeXBlPjo6Zm9y
bWF0LCBtYXgpOwogICAgIEFTU0VSVF9TVFJFUShidWZmZXIuZGF0YSgpLCBtYXhTdHJpbmdEYXRh
LmRhdGEoKSk7CiB9CkBAIC05NCw3ICs5Myw3IEBAIHZvaWQgdGVzdE51bWJlcnMoKQogCiAgICAg
Zm9yIChpbnQgaSA9IC0xMDA7IGkgPCAxMDA7ICsraSkgewogICAgICAgICBjb25zdCBJbnRlZ2Vy
VHlwZSBudW1iZXIgPSBzdGF0aWNfY2FzdDxJbnRlZ2VyVHlwZT4oaSk7Ci0gICAgICAgIENTdHJp
bmcgbnVtYmVyU3RyaW5nRGF0YSA9IFN0cmluZyhXVEY6Om51bWJlclRvU3RyaW5nSW1wbChudW1i
ZXIpKS5sYXRpbjEoKTsKKyAgICAgICAgQ1N0cmluZyBudW1iZXJTdHJpbmdEYXRhID0gU3RyaW5n
OjpudW1iZXIobnVtYmVyKS5sYXRpbjEoKTsKICAgICAgICAgc25wcmludGYoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyU2l6ZSwgUHJpbnRmRm9ybWF0VHJhaXQ8SW50ZWdlclR5cGU+Ojpmb3JtYXQsIG51
bWJlcik7CiAgICAgICAgIEFTU0VSVF9TVFJFUShidWZmZXIuZGF0YSgpLCBudW1iZXJTdHJpbmdE
YXRhLmRhdGEoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162717</attachid>
            <date>2012-09-07 02:49:48 -0700</date>
            <delta_ts>2012-09-07 03:39:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95940-20120907114927.patch</filename>
            <type>text/plain</type>
            <size>23642</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MGIyZDYzMTJiNzM1MzJhODg3MWJhYjI5NWE0ZjMzZTZjOGI4NDc1Li5mNGJiNzkzNzNlZDYwYjY5
ZGZiMjM0NDc4ZDI0ZGUwMGY2NTNhNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wOS0wNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBNYWtlIHRoZSBTdHJpbmcgaW5pdGlhbGl6YXRpb24gb24gdGhlIGZ1
bmN0aW9uIHNpZGUgb2YgU3RyaW5nOjpudW1iZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisKIDIwMTItMDktMDYgIE1hcmsgSGFobmVuYmVyZyAg
PG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0Mgc2hvdWxkIGhhdmUgYSB6b21i
aWUgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCA1ZGUxZDJhMTgwZjU5YmVlZTcxODE1ZTFkNGU3N2YwODg4YTBmYWMzLi42
NWY1MGM1OTM0ZDIwN2QxM2MwMTRmNWU2NzBlMTdkMGQxYmNiOGIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDEyLTA5LTA3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgor
CisgICAgICAgIE1ha2UgdGhlIFN0cmluZyBpbml0aWFsaXphdGlvbiBvbiB0aGUgZnVuY3Rpb24g
c2lkZSBvZiBTdHJpbmc6Om51bWJlcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVuLUlubGluZSBTdHJpbmc6Om51bWJlcigpIHRvIG1ha2UgdGhlIFN0
cmluZyBpbml0aWFsaXphdGlvbiBkb25lIG9uIHRoZSBmdW5jdGlvbiBzaWRlCisgICAgICAgIGlu
c3RlYWQgb2YgYmVpbmcgb24gdGhlIGNhbGxlciBzaWRlLgorCisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYuZ3lwaToKKyAgICAgICAgKiBXVEYucHJvOgorICAg
ICAgICAqIFdURi52Y3Byb2ovV1RGLnZjcHJvajoKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oOgorICAgICAgICAoV1RGOjpu
dW1iZXJUb1N0cmluZ0ltcGwpOgorICAgICAgICAoV1RGOjpudW1iZXJUb1N0cmluZ1NpZ25lZCk6
CisgICAgICAgIChXVEY6Om51bWJlclRvU3RyaW5nVW5zaWduZWQpOgorICAgICAgICAqIHd0Zi90
ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6bnVtYmVyKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKwogMjAxMi0wOS0wNiAgTWljaGFlbCBTYWJvZmYg
IDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJpbmdCdWlsZGVyOjp0b0F0b21pY1N0
cmluZygpIGNhbiBjcmVhdGUgYW4gMTYgYml0IHN0cmluZyB3aXRoIDggYml0IGNvbnRlbnRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggYWM3YTUyZTA4NTlhMDg5N2JiOWUzZTIxMzI1ZDk4NjkxYjQ1YjIyMC4uZjgy
MGNkNjRlODgzN2FkYzgyYWNiZTEyYjEyMGYyMWI3MWFjZjg4OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEyIEBACisyMDEyLTA5LTA3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQu
b3JnPgorCisgICAgICAgIE1ha2UgdGhlIFN0cmluZyBpbml0aWFsaXphdGlvbiBvbiB0aGUgZnVu
Y3Rpb24gc2lkZSBvZiBTdHJpbmc6Om51bWJlcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorCiAyMDEyLTA5LTA3ICBN
aWtoYWlsIFBvemRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAg
ICAgIFtXSzJdIEFQSUNsaWVudFRyYWl0czxXS1BhZ2VMb2FkZXJDbGllbnQ+IGFuZCBBUElDbGll
bnRUcmFpdHM8V0tCdW5kbGVQYWdlTG9hZGVyQ2xpZW50PiBhcmUgbm90IGluaXRpYWxpemVkIHBy
b3Blcmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUuZGVmCmluZGV4IDZhOTA4NmM4YjI5MTVhYmJmMzgzOGY1YmFiOTIyYzQ2ZGU0MGVjNmQuLjU5
NWNlNmVmNGMwYjU1MjQyMmU2YzY2ZjA3NDZjOWNjZWZkYzAxMGYgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZGVmCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmCkBAIC0yNTMsMTYgKzI1
Myw5IEBAIEVYUE9SVFMKICAgICA/bm90aWZ5V3JpdGVTbG93QFN5bWJvbFRhYmxlRW50cnlASlND
QEBBQUVYWFoKICAgICA/bm90aWZ5V3JpdGVTbG93QFdhdGNocG9pbnRTZXRASlNDQEBRQUVYWFoK
ICAgICA/bnVsbHB0ckBAM1ZudWxscHRyX3RAc3RkQEBBCi0gICAgP251bWJlckBTdHJpbmdAV1RG
QEBTQT9BVjEyQE5JSUBaCiAgICAgP251bWJlclRvRml4ZWRQcmVjaXNpb25TdHJpbmdAV1RGQEBZ
QVBCRE5JUUFEX05AWgogICAgID9udW1iZXJUb0ZpeGVkV2lkdGhTdHJpbmdAV1RGQEBZQVBCRE5J
UUFEQFoKICAgICA/bnVtYmVyVG9TdHJpbmdAV1RGQEBZQVBCRE5RQURAWgotICAgID9udW1iZXJU
b1N0cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAxQF9K
QFoKLSAgICA/bnVtYmVyVG9TdHJpbmdJbXBsQFdURkBAWUE/QVY/JFBhc3NSZWZQdHJAVlN0cmlu
Z0ltcGxAV1RGQEBAMUBfS0BaCi0gICAgP251bWJlclRvU3RyaW5nSW1wbEBXVEZAQFlBP0FWPyRQ
YXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDFASEBaCi0gICAgP251bWJlclRvU3RyaW5nSW1w
bEBXVEZAQFlBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDFASUBaCi0gICAgP251
bWJlclRvU3RyaW5nSW1wbEBXVEZAQFlBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBA
QDFASkBaCi0gICAgP251bWJlclRvU3RyaW5nSW1wbEBXVEZAQFlBP0FWPyRQYXNzUmVmUHRyQFZT
dHJpbmdJbXBsQFdURkBAQDFAS0BaCiAgICAgP29iamVjdEF0U2NvcGVASlNTY29wZUBKU0NAQFNB
UEFWSlNPYmplY3RAMkBQQVYxMkBAWgogICAgID9vYmplY3RDb3VudEBIZWFwQEpTQ0BAUUFFSVha
CiAgICAgP29iamVjdFByb3RvRnVuY1RvU3RyaW5nQEpTQ0BAWUlfSlBBVkV4ZWNTdGF0ZUAxQEBa
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV1RG
L0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggMjI4M2ZlZDJjMmRmY2QxZDI4ZGViYTM1MzM5MjVl
ZjBlNjA1ZmIzOS4uYTQwODAzNDU1ZjJkNzJjOGJlY2RkNzJmNDBiM2NmZmM1ODA4NDNkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XVEYv
R05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMjA4LDcgKzIwOCw2IEBAIHd0Zl9zb3VyY2VzICs9IFwK
ICAgICBTb3VyY2UvV1RGL3d0Zi90ZXh0L0Jhc2U2NC5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi90
ZXh0L0NTdHJpbmcuY3BwIFwKICAgICBTb3VyY2UvV1RGL3d0Zi90ZXh0L0NTdHJpbmcuaCBcCi0g
ICAgU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCBcCiAg
ICAgU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggXAogICAg
IFNvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQnVmZmVyLmggXAogICAgIFNvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQnVpbGRlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9XVEYuZ3lw
aSBiL1NvdXJjZS9XVEYvV1RGLmd5cGkKaW5kZXggNmNmY2Q0MjFhN2RiYjU2Y2U0MzBhODk1M2My
ZjdkNmFlYTA2YTM1NC4uY2RjNzNmZDQ1YmMwODM1MTAzMDhhZGEyY2U3MjRlZmFlZGM1OWMwZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9XVEYuZ3lwaQorKysgYi9Tb3VyY2UvV1RGL1dURi5neXBp
CkBAIC0yMjQsNyArMjI0LDYgQEAKICAgICAgICAgICAgICd3dGYvdGV4dC9BdG9taWNTdHJpbmcu
Y3BwJywKICAgICAgICAgICAgICd3dGYvdGV4dC9CYXNlNjQuY3BwJywKICAgICAgICAgICAgICd3
dGYvdGV4dC9DU3RyaW5nLmNwcCcsCi0gICAgICAgICAgICAnd3RmL3RleHQvSW50ZWdlclRvU3Ry
aW5nQ29udmVyc2lvbi5jcHAnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
Y3BwJywKICAgICAgICAgICAgICd3dGYvdGV4dC9TdHJpbmdJbXBsLmNwcCcsCiAgICAgICAgICAg
ICAnd3RmL3RleHQvU3RyaW5nU3RhdGljcy5jcHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9X
VEYucHJvIGIvU291cmNlL1dURi9XVEYucHJvCmluZGV4IDEwNjg4NWQ4MzU3NGJlOGIyZDIzZDIw
Yjk4MDhlZjlhODg2OTk2MWIuLjVkNmE2ZTU0ZmY0NjM1YWVjYTlmMzEzMmIzNDIzMDk5ZWE0MGNl
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnBybworKysgYi9Tb3VyY2UvV1RGL1dURi5w
cm8KQEAgLTIxOSw3ICsyMTksNiBAQCBTT1VSQ0VTICs9IFwKICAgICB0ZXh0L0F0b21pY1N0cmlu
Zy5jcHAgXAogICAgIHRleHQvQmFzZTY0LmNwcCBcCiAgICAgdGV4dC9DU3RyaW5nLmNwcCBcCi0g
ICAgdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCBcCiAgICAgdGV4dC9TdHJpbmdC
dWlsZGVyLmNwcCBcCiAgICAgdGV4dC9TdHJpbmdJbXBsLmNwcCBcCiAgICAgdGV4dC9TdHJpbmdT
dGF0aWNzLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJv
aiBiL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCmluZGV4IGQ3ODAzNzVmOWZjZTJm
YjRiOGU4YmU2M2FjNDg1NzdkNzRmOTY4ZjMuLjQ4NWQyZTM1OWQ0MjkxNGVjZTU5ZTVmY2Y4MjA0
YTY1MzhlMmE0ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9q
CisrKyBiL1NvdXJjZS9XVEYvV1RGLnZjcHJvai9XVEYudmNwcm9qCkBAIC00MjQsMTAgKzQyNCw2
IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHd0
Zlx0ZXh0XEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIgotCQkJCT4KLQkJCTwvRmlsZT4K
LQkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcdGV4dFxJbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uLmgiCiAJCQkJPgogCQkJPC9GaWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9X
VEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggMjg4YmRmZjRmOWI0ODkzYjA4ZmNlNjkyYmQzZmE0ODBkNzRm
YjcyMi4uZDIzNmJkNzdjOWIyOGY2YmFjN2U5OWYwNTljMGMzYTgxZjYyMDAzMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2Uv
V1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMSw3ICsxMSw2IEBACiAJCTE0
M0Y2MTFGMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBS
QU1TaXplLmNwcCAqLzsgfTsKIAkJMTQzRjYxMjAxNTY1RjBGOTAwREI1MTRBIC8qIFJBTVNpemUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0M0Y2MTFF
MTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTRGM0IwRjcxNUU0NUU0NjAwMjEwMDY5IC8qIFNhdHVy
YXRlZEFyaXRobWV0aWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDE0RjNCMEY2MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMjYxNDdC
MDkxNUREQ0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYxNDdCMDcxNUREQ0NE
QzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwICovOyB9OwogCQkyNjE0
N0IwQTE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjYxNDdCMDgxNUREQ0NE
QzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCAqLzsgfTsKIAkJMkMwNTM4
NTQxNUJDODE5MDAwRjIxQjk2IC8qIEdyZWdvcmlhbkRhdGVUaW1lLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQzA1Mzg1MzE1QkM4MTkwMDBGMjFCOTYg
LyogR3JlZ29yaWFuRGF0ZVRpbWUuaCAqLzsgfTsKIAkJMkNDRDg5MkExNUMwMzkwMjAwMjg1MDgz
IC8qIEdyZWdvcmlhbkRhdGVUaW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJDQ0Q4OTI5MTVDMDM5MDIwMDI4NTA4MyAvKiBHcmVnb3JpYW5EYXRl
VGltZS5jcHAgKi87IH07CkBAIC0yNTgsNyArMjU3LDYgQEAKIAkJMTQzRjYxMUQxNTY1RjBGOTAw
REI1MTRBIC8qIFJBTVNpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gUkFNU2l6ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0M0Y2MTFFMTU2
NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFJBTVNpemUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTRGM0IwRjYxNUU0
NUU0NjAwMjEwMDY5IC8qIFNhdHVyYXRlZEFyaXRobWV0aWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gU2F0dXJhdGVkQXJpdGhtZXRpYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkyNjE0N0IwNzE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29u
dmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnRlZ2Vy
VG9TdHJpbmdDb252ZXJzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMjYx
NDdCMDgxNUREQ0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyQzA1Mzg1MzE1QkM4MTkwMDBGMjFCOTYg
LyogR3JlZ29yaWFuRGF0ZVRpbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
R3JlZ29yaWFuRGF0ZVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkNDRDg5
MjkxNUMwMzkwMjAwMjg1MDgzIC8qIEdyZWdvcmlhbkRhdGVUaW1lLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyZWdvcmlhbkRhdGVUaW1lLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc5NSw3ICs3OTMsNiBAQAogCQkJCTgxMzQwMTM3MTVCMDky
RkQwMDFGRjBCOCAvKiBCYXNlNjQuaCAqLywKIAkJCQlBOEE0NzMyMTE1MUE4MjVCMDA0MTIzRkYg
LyogQ1N0cmluZy5jcHAgKi8sCiAJCQkJQThBNDczMjIxNTFBODI1QjAwNDEyM0ZGIC8qIENTdHJp
bmcuaCAqLywKLQkJCQkyNjE0N0IwNzE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5n
Q29udmVyc2lvbi5jcHAgKi8sCiAJCQkJMjYxNDdCMDgxNUREQ0NEQzAwRERCOTA3IC8qIEludGVn
ZXJUb1N0cmluZ0NvbnZlcnNpb24uaCAqLywKIAkJCQlBOEE0NzMyMzE1MUE4MjVCMDA0MTIzRkYg
LyogU3RyaW5nQnVmZmVyLmggKi8sCiAJCQkJQThBNDczMjQxNTFBODI1QjAwNDEyM0ZGIC8qIFN0
cmluZ0J1aWxkZXIuY3BwICovLApAQCAtMTE4OCw3ICsxMTg1LDYgQEAKIAkJCQlBOEE0NzNCNTE1
MUE4MjVCMDA0MTIzRkYgLyogZml4ZWQtZHRvYS5jYyBpbiBTb3VyY2VzICovLAogCQkJCTJDQ0Q4
OTJBMTVDMDM5MDIwMDI4NTA4MyAvKiBHcmVnb3JpYW5EYXRlVGltZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOEE0NzNEODE1MUE4MjVCMDA0MTIzRkYgLyogSGFzaFRhYmxlLmNwcCBpbiBTb3Vy
Y2VzICovLAotCQkJCTI2MTQ3QjA5MTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U1MTUxQTgyNUIwMDQxMjNG
RiAvKiBNYWluVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3M0U0MTUxQTgyNUIw
MDQxMjNGRiAvKiBNYWluVGhyZWFkTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0Q1NDk3QUMx
NTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dURi93dGYvQ01ha2VM
aXN0cy50eHQKaW5kZXggMzIwYzg0YmU2ODhiMDM5OTEzMTFjN2RkNzA1YzQzMDdjZjk5YTAwMC4u
Njc5YjIwZTk2YmYwMDFjZWIyZDkzZGY0YjY3M2U5NWE3NTU1ZTY5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dURi93dGYvQ01ha2VMaXN0
cy50eHQKQEAgLTE4Myw3ICsxODMsNiBAQCBTRVQoV1RGX1NPVVJDRVMKICAgICB0ZXh0L0F0b21p
Y1N0cmluZy5jcHAKICAgICB0ZXh0L0Jhc2U2NC5jcHAKICAgICB0ZXh0L0NTdHJpbmcuY3BwCi0g
ICAgdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcAogICAgIHRleHQvU3RyaW5nQnVp
bGRlci5jcHAKICAgICB0ZXh0L1N0cmluZ0ltcGwuY3BwCiAgICAgdGV4dC9TdHJpbmdTdGF0aWNz
LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252
ZXJzaW9uLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lv
bi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NWM4ODNjNmViMWY0YmYwYzgz
YjI0ZmViZTE3NTQxM2YxYmYyNTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9u
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVk
IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hB
TlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBH
TlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot
ICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAot
ICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgiCi0KLSNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0
eXBlbmFtZSBUPiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ7Ci0KLXRlbXBsYXRlPD4gc3Ry
dWN0IFVuc2lnbmVkSW50ZWdlclRyYWl0PHNob3J0PiB7Ci0gICAgdHlwZWRlZiB1bnNpZ25lZCBz
aG9ydCBUeXBlOwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlclRyYWl0PGlu
dD4gewotICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IFR5cGU7Ci19OwotdGVtcGxhdGU8PiBzdHJ1
Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ8bG9uZz4gewotICAgIHR5cGVkZWYgdW5zaWduZWQgbG9u
ZyBUeXBlOwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlclRyYWl0PGxvbmcg
bG9uZz4gewotICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIFR5cGU7Ci19OwotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBTaWduZWRJbnRlZ2VyVHlwZT4KLXN0YXRpYyBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbFNpZ25lZChTaWduZWRJbnRlZ2VyVHlwZSBpbnRlZ2Vy
KQotewotICAgIExDaGFyIGJ1ZlsxICsgc2l6ZW9mKFNpZ25lZEludGVnZXJUeXBlKSAqIDNdOwot
ICAgIExDaGFyKiBlbmQgPSBidWYgKyBXVEZfQVJSQVlfTEVOR1RIKGJ1Zik7Ci0gICAgTENoYXIq
IHAgPSBlbmQ7Ci0KLSAgICBib29sIG5lZ2F0aXZlID0gZmFsc2U7Ci0gICAgdHlwZW5hbWUgVW5z
aWduZWRJbnRlZ2VyVHJhaXQ8U2lnbmVkSW50ZWdlclR5cGU+OjpUeXBlIHVuc2lnbmVkSW50ZWdl
cjsKLSAgICBpZiAoaW50ZWdlciA8IDApIHsKLSAgICAgICAgbmVnYXRpdmUgPSB0cnVlOwotICAg
ICAgICB1bnNpZ25lZEludGVnZXIgPSAtaW50ZWdlcjsKLSAgICB9IGVsc2UKLSAgICAgICAgdW5z
aWduZWRJbnRlZ2VyID0gaW50ZWdlcjsKLQotICAgIGRvIHsKLSAgICAgICAgKi0tcCA9IHN0YXRp
Y19jYXN0PExDaGFyPigodW5zaWduZWRJbnRlZ2VyICUgMTApICsgJzAnKTsKLSAgICAgICAgdW5z
aWduZWRJbnRlZ2VyIC89IDEwOwotICAgIH0gd2hpbGUgKHVuc2lnbmVkSW50ZWdlcik7Ci0KLSAg
ICBpZiAobmVnYXRpdmUpCi0gICAgICAgICotLXAgPSAnLSc7Ci0KLSAgICByZXR1cm4gU3RyaW5n
SW1wbDo6Y3JlYXRlKHAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihlbmQgLSBwKSk7Ci19Ci0KLVBh
c3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKGludCBpKQotewotICAgIHJl
dHVybiBudW1iZXJUb1N0cmluZ0ltcGxTaWduZWQoaSk7Ci19Ci0KLVBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKGxvbmcgaSkKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9T
dHJpbmdJbXBsU2lnbmVkKGkpOwotfQotCi1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRv
U3RyaW5nSW1wbChsb25nIGxvbmcgaSkKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBs
U2lnbmVkKGkpOwotfQotCi0KLXRlbXBsYXRlPHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+
Ci1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbFVuc2lnbmVkKFVuc2ln
bmVkSW50ZWdlclR5cGUgaW50ZWdlcikKLXsKLSAgICBMQ2hhciBidWZbc2l6ZW9mKFVuc2lnbmVk
SW50ZWdlclR5cGUpICogM107Ci0gICAgTENoYXIqIGVuZCA9IGJ1ZiArIFdURl9BUlJBWV9MRU5H
VEgoYnVmKTsKLSAgICBMQ2hhciogcCA9IGVuZDsKLQotICAgIGRvIHsKLSAgICAgICAgKi0tcCA9
IHN0YXRpY19jYXN0PExDaGFyPigoaW50ZWdlciAlIDEwKSArICcwJyk7Ci0gICAgICAgIGludGVn
ZXIgLz0gMTA7Ci0gICAgfSB3aGlsZSAoaW50ZWdlcik7Ci0gICAgcmV0dXJuIFN0cmluZ0ltcGw6
OmNyZWF0ZShwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gcCkpOwotfQotCi1QYXNzUmVm
UHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbCh1bnNpZ25lZCB1KQotewotICAgIHJl
dHVybiBudW1iZXJUb1N0cmluZ0ltcGxVbnNpZ25lZCh1KTsKLX0KLQotUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwodW5zaWduZWQgbG9uZyB1KQotewotICAgIHJldHVy
biBudW1iZXJUb1N0cmluZ0ltcGxVbnNpZ25lZCh1KTsKLX0KLQotUGFzc1JlZlB0cjxTdHJpbmdJ
bXBsPiBudW1iZXJUb1N0cmluZ0ltcGwodW5zaWduZWQgbG9uZyBsb25nIHUpCi17Ci0gICAgcmV0
dXJuIG51bWJlclRvU3RyaW5nSW1wbFVuc2lnbmVkKHUpOwotfQotCi19IC8vIG5hbWVzcGFjZSBX
VEYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVy
c2lvbi5oIGIvU291cmNlL1dURi93dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgK
aW5kZXggNGM2MWNjNjgwNDk5YjFkNzRiNzFkZTViYThjZTI0MWQ4YjllZWVlZC4uYmUxMzhhODdl
ZTQzMjRlY2Y4ZDkwYTlkMWJhZmNmMTM0MDM0NDY2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKKysrIGIvU291cmNlL1dURi93dGYv
dGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMiBQYXRyaWNrIEdhbnN0ZXJlciA8cGFyb2dhQHBhcm9nYS5jb20+CiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIxLDE3ICsyMiw2NyBAQAogI2lmbmRlZiBJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uX2gKICNkZWZpbmUgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbl9oCiAK
LSNpbmNsdWRlICJTdHJpbmdJbXBsLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRl
ci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogbmFtZXNwYWNlIFdURiB7
CiAKLVdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3Ry
aW5nSW1wbChpbnQpOwotV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
bnVtYmVyVG9TdHJpbmdJbXBsKGxvbmcpOwotV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8
U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKGxvbmcgbG9uZyk7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPiBzdHJ1Y3QgQ29udmVyc2lvblRyYWl0OwogCi1XVEZfRVhQT1JUX1BSSVZBVEUgUGFz
c1JlZlB0cjxTdHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwodW5zaWduZWQpOwotV1RGX0VY
UE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKHVu
c2lnbmVkIGxvbmcpOwotV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4g
bnVtYmVyVG9TdHJpbmdJbXBsKHVuc2lnbmVkIGxvbmcgbG9uZyk7Cit0ZW1wbGF0ZTw+IHN0cnVj
dCBDb252ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7CisgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFN0cmlu
Z0ltcGw+IFJldHVyblR5cGU7CisgICAgdHlwZWRlZiB2b2lkIEFkZGl0aW9uYWxBcmd1bWVudFR5
cGU7CisgICAgc3RhdGljIGlubGluZSBSZXR1cm5UeXBlIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJz
LCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGUoY2hh
cmFjdGVycywgbGVuZ3RoKTsgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnNpb25UcmFp
dDxTdHJpbmdCdWlsZGVyPiB7CisgICAgdHlwZWRlZiB2b2lkIFJldHVyblR5cGU7CisgICAgdHlw
ZWRlZiBTdHJpbmdCdWlsZGVyIEFkZGl0aW9uYWxBcmd1bWVudFR5cGU7CisgICAgc3RhdGljIGlu
bGluZSBSZXR1cm5UeXBlIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IFN0cmluZ0J1aWxkZXIqIHN0cmluZ0J1aWxkZXIpIHsgc3RyaW5nQnVpbGRlci0+YXBwZW5kKGNo
YXJhY3RlcnMsIGxlbmd0aCk7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBV
bnNpZ25lZEludGVnZXJUcmFpdDsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2Vy
VHJhaXQ8aW50PiB7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgVHlwZTsKK307Cit0ZW1wbGF0
ZTw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDxsb25nPiB7CisgICAgdHlwZWRlZiB1bnNp
Z25lZCBsb25nIFR5cGU7Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJh
aXQ8bG9uZyBsb25nPiB7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgVHlwZTsKK307
CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGUsIGJv
b2wgTmVnYXRpdmU+CitzdGF0aWMgdHlwZW5hbWUgQ29udmVyc2lvblRyYWl0PFQ+OjpSZXR1cm5U
eXBlIG51bWJlclRvU3RyaW5nSW1wbChVbnNpZ25lZEludGVnZXJUeXBlIG51bWJlciwgdHlwZW5h
bWUgQ29udmVyc2lvblRyYWl0PFQ+OjpBZGRpdGlvbmFsQXJndW1lbnRUeXBlKiBhZGRpdGlvbmFs
QXJndW1lbnQpCit7CisgICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAq
IDMgKyAxXTsKKyAgICBMQ2hhciogZW5kID0gYnVmICsgV1RGX0FSUkFZX0xFTkdUSChidWYpOwor
ICAgIExDaGFyKiBwID0gZW5kOworCisgICAgZG8geworICAgICAgICAqLS1wID0gc3RhdGljX2Nh
c3Q8TENoYXI+KChudW1iZXIgJSAxMCkgKyAnMCcpOworICAgICAgICBudW1iZXIgLz0gMTA7Cisg
ICAgfSB3aGlsZSAobnVtYmVyKTsKKworICAgIGlmIChOZWdhdGl2ZSkKKyAgICAgICAgKi0tcCA9
ICctJzsKKworICAgIHJldHVybiBDb252ZXJzaW9uVHJhaXQ8VD46OmZsdXNoKHAsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihlbmQgLSBwKSwgYWRkaXRpb25hbEFyZ3VtZW50KTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU2lnbmVkSW50ZWdlclR5cGU+CitpbmxpbmUgdHlwZW5h
bWUgQ29udmVyc2lvblRyYWl0PFQ+OjpSZXR1cm5UeXBlIG51bWJlclRvU3RyaW5nU2lnbmVkKFNp
Z25lZEludGVnZXJUeXBlIG51bWJlciwgdHlwZW5hbWUgQ29udmVyc2lvblRyYWl0PFQ+OjpBZGRp
dGlvbmFsQXJndW1lbnRUeXBlKiBhZGRpdGlvbmFsQXJndW1lbnQgPSAwKQoreworICAgIGlmIChu
dW1iZXIgPCAwKQorICAgICAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsPFQsIHR5cGVuYW1l
IFVuc2lnbmVkSW50ZWdlclRyYWl0PFNpZ25lZEludGVnZXJUeXBlPjo6VHlwZSwgdHJ1ZT4oLW51
bWJlciwgYWRkaXRpb25hbEFyZ3VtZW50KTsKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBs
PFQsIHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclRyYWl0PFNpZ25lZEludGVnZXJUeXBlPjo6VHlw
ZSwgZmFsc2U+KG51bWJlciwgYWRkaXRpb25hbEFyZ3VtZW50KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVCwgdHlwZW5hbWUgVW5zaWduZWRJbnRlZ2VyVHlwZT4KK2lubGluZSB0eXBlbmFtZSBD
b252ZXJzaW9uVHJhaXQ8VD46OlJldHVyblR5cGUgbnVtYmVyVG9TdHJpbmdVbnNpZ25lZChVbnNp
Z25lZEludGVnZXJUeXBlIG51bWJlciwgdHlwZW5hbWUgQ29udmVyc2lvblRyYWl0PFQ+OjpBZGRp
dGlvbmFsQXJndW1lbnRUeXBlKiBhZGRpdGlvbmFsQXJndW1lbnQgPSAwKQoreworICAgIHJldHVy
biBudW1iZXJUb1N0cmluZ0ltcGw8VCwgVW5zaWduZWRJbnRlZ2VyVHlwZSwgZmFsc2U+KG51bWJl
ciwgYWRkaXRpb25hbEFyZ3VtZW50KTsKK30KIAogfSAvLyBuYW1lc3BhY2UgV1RGCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCAwN2FmY2M3ZDA4OWJiNWNkMTBlMTJjYWE0ZTQ3MDNh
ODUyY2UxZjA4Li42ZjE0YmNmNTY0YTIwZmRkMDI4ZTVmZjBiZmQxZjJjMTljMjg3ODE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC00MTcsNyArNDE3LDM3IEBAIFN0cmluZyBTdHJp
bmc6OmZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKICAgICByZXR1cm4gU3RyaW5nSW1w
bDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihidWZmZXIuZGF0YSgpKSwg
bGVuKTsKICNlbmRpZgogfQotICAgIAorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIoaW50IG51bWJl
cikKK3sKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nPihudW1iZXIpOwor
fQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIodW5zaWduZWQgaW50IG51bWJlcikKK3sKKyAgICBy
ZXR1cm4gbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmc+KG51bWJlcik7Cit9CisKK1N0cmlu
ZyBTdHJpbmc6Om51bWJlcihsb25nIG51bWJlcikKK3sKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJp
bmdTaWduZWQ8U3RyaW5nPihudW1iZXIpOworfQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIodW5z
aWduZWQgbG9uZyBudW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8
U3RyaW5nPihudW1iZXIpOworfQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIobG9uZyBsb25nIG51
bWJlcikKK3sKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdTaWduZWQ8U3RyaW5nPihudW1iZXIp
OworfQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIodW5zaWduZWQgbG9uZyBsb25nIG51bWJlcikK
K3sKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxTdHJpbmc+KG51bWJlcik7Cit9
CisKIFN0cmluZyBTdHJpbmc6Om51bWJlcihkb3VibGUgbnVtYmVyLCB1bnNpZ25lZCBmbGFncywg
dW5zaWduZWQgcHJlY2lzaW9uKQogewogICAgIE51bWJlclRvU3RyaW5nQnVmZmVyIGJ1ZmZlcjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IGUyMDA3ZDY1NjU4MDI5NzMxZTJkMmRhZTkyYzc1
MjE3ODIxNDJkYzAuLjYzNmRiOWNkOTIxZDA3NjRmMWE2YmJlNzIwOGU1NzI0NTY1MzA2NDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtMjYsNyArMjYsNiBAQAogLy8gb24gc3lzdGVtcyB3
aXRob3V0IGNhc2Utc2Vuc2l0aXZlIGZpbGUgc3lzdGVtcy4KIAogI2luY2x1ZGUgPHd0Zi90ZXh0
L0FTQ0lJRmFzdFBhdGguaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9JbnRlZ2VyVG9TdHJpbmdDb252
ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgogCiAjaWZkZWYgX19P
QkpDX18KQEAgLTIyNiwxMyArMjI1LDEyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICgqbV9p
bXBsKVtpbmRleF07CiAgICAgfQogCi0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQg
c2hvcnQgbnVtYmVyKSB7IHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAg
IHN0YXRpYyBTdHJpbmcgbnVtYmVyKGludCBudW1iZXIpIHsgcmV0dXJuIG51bWJlclRvU3RyaW5n
SW1wbChudW1iZXIpOyB9Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbnVtYmVy
KSB7IHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJp
bmcgbnVtYmVyKGxvbmcgbnVtYmVyKSB7IHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVtYmVy
KTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyKSB7IHJl
dHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVt
YmVyKGxvbmcgbG9uZyBudW1iZXIpIHsgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbChudW1iZXIp
OyB9Ci0gICAgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyBsb25nIG51bWJlcikg
eyByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsKG51bWJlcik7IH0KKyAgICBXVEZfRVhQT1JUX1NU
UklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIoaW50KTsKKyAgICBXVEZfRVhQT1JUX1NUUklO
R19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgaW50KTsKKyAgICBXVEZfRVhQT1JU
X1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIobG9uZyk7CisgICAgV1RGX0VYUE9SVF9T
VFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGxvbmcpOworICAgIFdURl9F
WFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nIGxvbmcpOworICAgIFdU
Rl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25lZCBsb25nIGxv
bmcpOwogCiAgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGRv
dWJsZSwgdW5zaWduZWQgPSBTaG91bGRSb3VuZFNpZ25pZmljYW50RmlndXJlcyB8IFNob3VsZFRy
dW5jYXRlVHJhaWxpbmdaZXJvcywgdW5zaWduZWQgcHJlY2lzaW9uID0gNik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyLmRlZgppbmRleCA5NzVhNzNkMzg3NmViNDM2ZWI0YmViOTIwOTg2NWYxOThlYjA1YmMx
Li5mYzZlMGQzNWRlZmM3ZTZiZWRkNTBlNjQ1M2Q0YmY4NzFiZDY0NjkyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDIuZGVmCkBAIC0xOTUsOCArMTk1LDkgQEAgRVhQT1JUUwogICAgICAgICA/bGFzdENoaWxk
QENvbXBvc2VkU2hhZG93VHJlZVdhbGtlckBXZWJDb3JlQEBRQUVYWFoKICAgICAgICAgP25leHRA
Q29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/cHJldmlv
dXNAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgotICAgICAgICA/bnVt
YmVyVG9TdHJpbmdJbXBsQFdURkBAWUE/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBA
MUBIQFoKLSAgICAgICAgP251bWJlclRvU3RyaW5nSW1wbEBXVEZAQFlBP0FWPyRQYXNzUmVmUHRy
QFZTdHJpbmdJbXBsQFdURkBAQDFASUBaCisgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/
QVYxMkBfS0BaCisgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBJQFoKKyAgICAg
ICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgogICAgICAgICA/b3ZlcnJpZGVVc2Vy
UHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAk
MEFAQFdURkBAQFoKICAgICAgICAgP251bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW5ATm9k
ZUBXZWJDb3JlQEBRQkVJWFoKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFW
UGFnZUAyQFhaCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggNDFlOWQ4MjI1MTVjYzJmMDc2YmI4OWQxOWU5MmMyMWM1ZGFhMDY5OS4uN2M4ZjE1Njg0
NzRhYjFmZWMwNGFhNjE4YTYyZDBkYjkwN2QxYzA1NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTA3ICBQ
YXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgdGhl
IFN0cmluZyBpbml0aWFsaXphdGlvbiBvbiB0aGUgZnVuY3Rpb24gc2lkZSBvZiBTdHJpbmc6Om51
bWJlcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHA6Cisg
ICAgICAgICh0ZXN0Qm91bmRhcmllcyk6CisgICAgICAgICh0ZXN0TnVtYmVycyk6CisKIDIwMTIt
MDktMDYgIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIElu
dHJvZHVjZSB0aGUgQ2hyb21pdW0gQW5kcm9pZCBSZWxlYXNlIChUZXN0cykgYm90CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9JbnRlZ2VyVG9TdHJpbmdDb252ZXJz
aW9uLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ludGVnZXJUb1N0cmluZ0Nv
bnZlcnNpb24uY3BwCmluZGV4IGEyMDFmNDEyNzU1NTIzZWEzMmEwNzY0Yjg4NzdhYmViOWIxNjlj
MGYuLjZiOWQ4ZGY3Mjc2ZGViMGI0OWNmNGY3ZTM1MjA1NzJhNDk1YWE3MGQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24u
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ludGVnZXJUb1N0cmluZ0Nv
bnZlcnNpb24uY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1
ZGUgPHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0j
aW5jbHVkZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ2VyVHlwZT4g
c3RydWN0IFByaW50ZkZvcm1hdFRyYWl0IHsgc3RhdGljIGNvbnN0IGNoYXIgZm9ybWF0W107IH07
CkBAIC03NSwxMiArNzQsMTIgQEAgdm9pZCB0ZXN0Qm91bmRhcmllcygpCiAgICAgYnVmZmVyLnJl
c2l6ZShidWZmZXJTaXplKTsKIAogICAgIGNvbnN0IEludGVnZXJUeXBlIG1pbiA9IHN0ZDo6bnVt
ZXJpY19saW1pdHM8SW50ZWdlclR5cGU+OjptaW4oKTsKLSAgICBDU3RyaW5nIG1pblN0cmluZ0Rh
dGEgPSBTdHJpbmcoV1RGOjpudW1iZXJUb1N0cmluZ0ltcGwobWluKSkubGF0aW4xKCk7CisgICAg
Q1N0cmluZyBtaW5TdHJpbmdEYXRhID0gU3RyaW5nOjpudW1iZXIobWluKS5sYXRpbjEoKTsKICAg
ICBzbnByaW50ZihidWZmZXIuZGF0YSgpLCBidWZmZXJTaXplLCBQcmludGZGb3JtYXRUcmFpdDxJ
bnRlZ2VyVHlwZT46OmZvcm1hdCwgbWluKTsKICAgICBBU1NFUlRfU1RSRVEoYnVmZmVyLmRhdGEo
KSwgbWluU3RyaW5nRGF0YS5kYXRhKCkpOwogCiAgICAgY29uc3QgSW50ZWdlclR5cGUgbWF4ID0g
c3RkOjpudW1lcmljX2xpbWl0czxJbnRlZ2VyVHlwZT46Om1heCgpOwotICAgIENTdHJpbmcgbWF4
U3RyaW5nRGF0YSA9IFN0cmluZyhXVEY6Om51bWJlclRvU3RyaW5nSW1wbChtYXgpKS5sYXRpbjEo
KTsKKyAgICBDU3RyaW5nIG1heFN0cmluZ0RhdGEgPSBTdHJpbmc6Om51bWJlcihtYXgpLmxhdGlu
MSgpOwogICAgIHNucHJpbnRmKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlclNpemUsIFByaW50ZkZvcm1h
dFRyYWl0PEludGVnZXJUeXBlPjo6Zm9ybWF0LCBtYXgpOwogICAgIEFTU0VSVF9TVFJFUShidWZm
ZXIuZGF0YSgpLCBtYXhTdHJpbmdEYXRhLmRhdGEoKSk7CiB9CkBAIC05NCw3ICs5Myw3IEBAIHZv
aWQgdGVzdE51bWJlcnMoKQogCiAgICAgZm9yIChpbnQgaSA9IC0xMDA7IGkgPCAxMDA7ICsraSkg
ewogICAgICAgICBjb25zdCBJbnRlZ2VyVHlwZSBudW1iZXIgPSBzdGF0aWNfY2FzdDxJbnRlZ2Vy
VHlwZT4oaSk7Ci0gICAgICAgIENTdHJpbmcgbnVtYmVyU3RyaW5nRGF0YSA9IFN0cmluZyhXVEY6
Om51bWJlclRvU3RyaW5nSW1wbChudW1iZXIpKS5sYXRpbjEoKTsKKyAgICAgICAgQ1N0cmluZyBu
dW1iZXJTdHJpbmdEYXRhID0gU3RyaW5nOjpudW1iZXIobnVtYmVyKS5sYXRpbjEoKTsKICAgICAg
ICAgc25wcmludGYoYnVmZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZSwgUHJpbnRmRm9ybWF0VHJhaXQ8
SW50ZWdlclR5cGU+Ojpmb3JtYXQsIG51bWJlcik7CiAgICAgICAgIEFTU0VSVF9TVFJFUShidWZm
ZXIuZGF0YSgpLCBudW1iZXJTdHJpbmdEYXRhLmRhdGEoKSk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162730</attachid>
            <date>2012-09-07 03:39:30 -0700</date>
            <delta_ts>2012-09-07 19:49:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95940-20120907123908.patch</filename>
            <type>text/plain</type>
            <size>24608</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MGIyZDYzMTJiNzM1MzJhODg3MWJhYjI5NWE0ZjMzZTZjOGI4NDc1Li5mNGJiNzkzNzNlZDYwYjY5
ZGZiMjM0NDc4ZDI0ZGUwMGY2NTNhNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wOS0wNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBNYWtlIHRoZSBTdHJpbmcgaW5pdGlhbGl6YXRpb24gb24gdGhlIGZ1
bmN0aW9uIHNpZGUgb2YgU3RyaW5nOjpudW1iZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5NDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWY6CisKIDIwMTItMDktMDYgIE1hcmsgSGFobmVuYmVyZyAg
PG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0Mgc2hvdWxkIGhhdmUgYSB6b21i
aWUgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0No
YW5nZUxvZwppbmRleCA1ZGUxZDJhMTgwZjU5YmVlZTcxODE1ZTFkNGU3N2YwODg4YTBmYWMzLi42
NWY1MGM1OTM0ZDIwN2QxM2MwMTRmNWU2NzBlMTdkMGQxYmNiOGIyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDEyLTA5LTA3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgor
CisgICAgICAgIE1ha2UgdGhlIFN0cmluZyBpbml0aWFsaXphdGlvbiBvbiB0aGUgZnVuY3Rpb24g
c2lkZSBvZiBTdHJpbmc6Om51bWJlcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFVuLUlubGluZSBTdHJpbmc6Om51bWJlcigpIHRvIG1ha2UgdGhlIFN0
cmluZyBpbml0aWFsaXphdGlvbiBkb25lIG9uIHRoZSBmdW5jdGlvbiBzaWRlCisgICAgICAgIGlu
c3RlYWQgb2YgYmVpbmcgb24gdGhlIGNhbGxlciBzaWRlLgorCisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBXVEYuZ3lwaToKKyAgICAgICAgKiBXVEYucHJvOgorICAg
ICAgICAqIFdURi52Y3Byb2ovV1RGLnZjcHJvajoKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICog
d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHA6IFJlbW92ZWQuCisgICAgICAg
ICogd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oOgorICAgICAgICAoV1RGOjpu
dW1iZXJUb1N0cmluZ0ltcGwpOgorICAgICAgICAoV1RGOjpudW1iZXJUb1N0cmluZ1NpZ25lZCk6
CisgICAgICAgIChXVEY6Om51bWJlclRvU3RyaW5nVW5zaWduZWQpOgorICAgICAgICAqIHd0Zi90
ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgIChXVEY6OlN0cmluZzo6bnVtYmVyKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuaDoKKwogMjAxMi0wOS0wNiAgTWljaGFlbCBTYWJvZmYg
IDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJpbmdCdWlsZGVyOjp0b0F0b21pY1N0
cmluZygpIGNhbiBjcmVhdGUgYW4gMTYgYml0IHN0cmluZyB3aXRoIDggYml0IGNvbnRlbnRzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggYWM3YTUyZTA4NTlhMDg5N2JiOWUzZTIxMzI1ZDk4NjkxYjQ1YjIyMC4uNDJi
YjFhNDc2ODcwN2ViYjNiYmY1YTczYjFmMDM5ZjI1Nzg0YjA1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEyLTA5LTA3ICBQYXRyaWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQu
b3JnPgorCisgICAgICAgIE1ha2UgdGhlIFN0cmluZyBpbml0aWFsaXphdGlvbiBvbiB0aGUgZnVu
Y3Rpb24gc2lkZSBvZiBTdHJpbmc6Om51bWJlcigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk0MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAqIHdpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0wOS0wNyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlr
aGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXSBBUElDbGllbnRUcmFp
dHM8V0tQYWdlTG9hZGVyQ2xpZW50PiBhbmQgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxlUGFnZUxv
YWRlckNsaWVudD4gYXJlIG5vdCBpbml0aWFsaXplZCBwcm9wZXJseQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCA2YTkwODZjOGIy
OTE1YWJiZjM4MzhmNWJhYjkyMmM0NmRlNDBlYzZkLi41OTVjZTZlZjRjMGI1NTI0MjJlNmM2NmYw
NzQ2YzljY2VmZGMwMTBmIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMjUzLDE2ICsyNTMsOSBAQCBFWFBPUlRTCiAgICAgP25v
dGlmeVdyaXRlU2xvd0BTeW1ib2xUYWJsZUVudHJ5QEpTQ0BAQUFFWFhaCiAgICAgP25vdGlmeVdy
aXRlU2xvd0BXYXRjaHBvaW50U2V0QEpTQ0BAUUFFWFhaCiAgICAgP251bGxwdHJAQDNWbnVsbHB0
cl90QHN0ZEBAQQotICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBOSUlAWgogICAgID9u
dW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nQFdURkBAWUFQQkROSVFBRF9OQFoKICAgICA/bnVt
YmVyVG9GaXhlZFdpZHRoU3RyaW5nQFdURkBAWUFQQkROSVFBREBaCiAgICAgP251bWJlclRvU3Ry
aW5nQFdURkBAWUFQQkROUUFEQFoKLSAgICA/bnVtYmVyVG9TdHJpbmdJbXBsQFdURkBAWUE/QVY/
JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMUBfSkBaCi0gICAgP251bWJlclRvU3RyaW5n
SW1wbEBXVEZAQFlBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDFAX0tAWgotICAg
ID9udW1iZXJUb1N0cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBX
VEZAQEAxQEhAWgotICAgID9udW1iZXJUb1N0cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0
ckBWU3RyaW5nSW1wbEBXVEZAQEAxQElAWgotICAgID9udW1iZXJUb1N0cmluZ0ltcGxAV1RGQEBZ
QT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAxQEpAWgotICAgID9udW1iZXJUb1N0
cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAxQEtAWgog
ICAgID9vYmplY3RBdFNjb3BlQEpTU2NvcGVASlNDQEBTQVBBVkpTT2JqZWN0QDJAUEFWMTJAQFoK
ICAgICA/b2JqZWN0Q291bnRASGVhcEBKU0NAQFFBRUlYWgogICAgID9vYmplY3RQcm90b0Z1bmNU
b1N0cmluZ0BKU0NAQFlJX0pQQVZFeGVjU3RhdGVAMUBAWgpkaWZmIC0tZ2l0IGEvU291cmNlL1dU
Ri9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtCmlu
ZGV4IDIyODNmZWQyYzJkZmNkMWQyOGRlYmEzNTMzOTI1ZWYwZTYwNWZiMzkuLmE0MDgwMzQ1NWYy
ZDcyYzhiZWNkZDcyZjQwYjNjZmZjNTgwODQzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvR05V
bWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAg
LTIwOCw3ICsyMDgsNiBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93dGYvdGV4
dC9CYXNlNjQuaCBcCiAgICAgU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcCBcCiAgICAg
U291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmggXAotICAgIFNvdXJjZS9XVEYvd3RmL3RleHQv
SW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3RmL3RleHQv
SW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ0J1ZmZlci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuY3Bw
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLmd5cGkgYi9Tb3VyY2UvV1RGL1dURi5neXBp
CmluZGV4IDZjZmNkNDIxYTdkYmI1NmNlNDMwYTg5NTNjMmY3ZDZhZWEwNmEzNTQuLmNkYzczZmQ0
NWJjMDgzNTEwMzA4YWRhMmNlNzI0ZWZhZWRjNTljMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
V1RGLmd5cGkKKysrIGIvU291cmNlL1dURi9XVEYuZ3lwaQpAQCAtMjI0LDcgKzIyNCw2IEBACiAg
ICAgICAgICAgICAnd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCcsCiAgICAgICAgICAgICAnd3Rm
L3RleHQvQmFzZTY0LmNwcCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvQ1N0cmluZy5jcHAnLAot
ICAgICAgICAgICAgJ3d0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwJywKICAg
ICAgICAgICAgICd3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcCcsCiAgICAgICAgICAgICAnd3Rm
L3RleHQvU3RyaW5nSW1wbC5jcHAnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmluZ1N0YXRp
Y3MuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnBybyBiL1NvdXJjZS9XVEYvV1RG
LnBybwppbmRleCAxMDY4ODVkODM1NzRiZThiMmQyM2QyMGI5ODA4ZWY5YTg4Njk5NjFiLi41ZDZh
NmU1NGZmNDYzNWFlY2E5ZjMxMzJiMzQyMzA5OWVhNDBjZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL1dURi5wcm8KKysrIGIvU291cmNlL1dURi9XVEYucHJvCkBAIC0yMTksNyArMjE5LDYgQEAg
U09VUkNFUyArPSBcCiAgICAgdGV4dC9BdG9taWNTdHJpbmcuY3BwIFwKICAgICB0ZXh0L0Jhc2U2
NC5jcHAgXAogICAgIHRleHQvQ1N0cmluZy5jcHAgXAotICAgIHRleHQvSW50ZWdlclRvU3RyaW5n
Q29udmVyc2lvbi5jcHAgXAogICAgIHRleHQvU3RyaW5nQnVpbGRlci5jcHAgXAogICAgIHRleHQv
U3RyaW5nSW1wbC5jcHAgXAogICAgIHRleHQvU3RyaW5nU3RhdGljcy5jcHAgXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2ogYi9Tb3VyY2UvV1RGL1dURi52Y3By
b2ovV1RGLnZjcHJvagppbmRleCBkNzgwMzc1ZjlmY2UyZmI0YjhlOGJlNjNhYzQ4NTc3ZDc0Zjk2
OGYzLi40ODVkMmUzNTlkNDI5MTRlY2U1OWU1ZmNmODIwNGE2NTM4ZTJhNGZiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagorKysgYi9Tb3VyY2UvV1RGL1dURi52
Y3Byb2ovV1RGLnZjcHJvagpAQCAtNDI0LDEwICs0MjQsNiBAQAogCQkJCT4KIAkJCTwvRmlsZT4K
IAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcdGV4dFxJbnRlZ2VyVG9TdHJpbmdD
b252ZXJzaW9uLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cd3RmXHRleHRcSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIgogCQkJCT4KIAkJ
CTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDI4
OGJkZmY0ZjliNDg5M2IwOGZjZTY5MmJkM2ZhNDgwZDc0ZmI3MjIuLmQyMzZiZDc3YzliMjhmNmJh
YzdlOTlmMDU5YzBjM2E4MWY2MjAwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RGLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagpAQCAtMTEsNyArMTEsNiBAQAogCQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEg
LyogUkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi87IH07CiAJCTE0
M0Y2MTIwMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFN
U2l6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTE0RjNCMEY3MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEYzQjBGNjE1RTQ1RTQ2
MDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTI2MTQ3QjA5MTVERENDREMwMEREQjkwNyAvKiBJ
bnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI2MTQ3QjA3MTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uLmNwcCAqLzsgfTsKIAkJMjYxNDdCMEExNUREQ0NEQzAwRERCOTA3IC8q
IEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDI2MTQ3QjA4MTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uLmggKi87IH07CiAJCTJDMDUzODU0MTVCQzgxOTAwMEYyMUI5NiAvKiBH
cmVnb3JpYW5EYXRlVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkMwNTM4NTMxNUJDODE5MDAwRjIxQjk2IC8qIEdyZWdvcmlhbkRhdGVUaW1lLmgg
Ki87IH07CiAJCTJDQ0Q4OTJBMTVDMDM5MDIwMDI4NTA4MyAvKiBHcmVnb3JpYW5EYXRlVGltZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyQ0NEODky
OTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwICovOyB9OwpAQCAtMjU4
LDcgKzI1Nyw2IEBACiAJCTE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJBTVNpemUuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSQU1TaXplLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RjNCMEY2MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0
ZWRBcml0aG1ldGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNhdHVyYXRl
ZEFyaXRobWV0aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjYxNDdCMDcxNURE
Q0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MTQ3QjA4MTVERENDREMwMEREQjkwNyAv
KiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkMwNTM4NTMxNUJDODE5MDAwRjIxQjk2IC8qIEdyZWdvcmlhbkRhdGVUaW1lLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyZWdvcmlhbkRhdGVUaW1lLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJDQ0Q4OTI5MTVDMDM5MDIwMDI4NTA4MyAvKiBH
cmVnb3JpYW5EYXRlVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHcmVnb3JpYW5EYXRlVGltZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03
OTUsNyArNzkzLDYgQEAKIAkJCQk4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjggLyogQmFzZTY0Lmgg
Ki8sCiAJCQkJQThBNDczMjExNTFBODI1QjAwNDEyM0ZGIC8qIENTdHJpbmcuY3BwICovLAogCQkJ
CUE4QTQ3MzIyMTUxQTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmggKi8sCi0JCQkJMjYxNDdCMDcx
NUREQ0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwICovLAogCQkJ
CTI2MTQ3QjA4MTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmgg
Ki8sCiAJCQkJQThBNDczMjMxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1ZmZlci5oICovLAog
CQkJCUE4QTQ3MzI0MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWlsZGVyLmNwcCAqLywKQEAg
LTExODgsNyArMTE4NSw2IEBACiAJCQkJQThBNDczQjUxNTFBODI1QjAwNDEyM0ZGIC8qIGZpeGVk
LWR0b2EuY2MgaW4gU291cmNlcyAqLywKIAkJCQkyQ0NEODkyQTE1QzAzOTAyMDAyODUwODMgLyog
R3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRDgxNTFBODI1
QjAwNDEyM0ZGIC8qIEhhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyNjE0N0IwOTE1
RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzNFNTE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzNFNDE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZE1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRp
YVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDMyMGM4NGJl
Njg4YjAzOTkxMzExYzdkZDcwNWM0MzA3Y2Y5OWEwMDAuLjY3OWIyMGU5NmJmMDAxY2ViMmQ5M2Rm
NGI2NzNlOTVhNzU1NWU2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xODMsNyArMTgzLDYg
QEAgU0VUKFdURl9TT1VSQ0VTCiAgICAgdGV4dC9BdG9taWNTdHJpbmcuY3BwCiAgICAgdGV4dC9C
YXNlNjQuY3BwCiAgICAgdGV4dC9DU3RyaW5nLmNwcAotICAgIHRleHQvSW50ZWdlclRvU3RyaW5n
Q29udmVyc2lvbi5jcHAKICAgICB0ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCiAgICAgdGV4dC9TdHJp
bmdJbXBsLmNwcAogICAgIHRleHQvU3RyaW5nU3RhdGljcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkOTVjODgzYzZlYjFmNGJmMGM4M2IyNGZlYmUxNzU0MTNmMWJmMjU2Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwxMTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAy
IG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot
ICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
Ci0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwg
NTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW50ZWdl
clRvU3RyaW5nQ29udmVyc2lvbi5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5o
PgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IFVuc2ln
bmVkSW50ZWdlclRyYWl0OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXJUcmFp
dDxzaG9ydD4gewotICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgVHlwZTsKLX07Ci10ZW1wbGF0
ZTw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDxpbnQ+IHsKLSAgICB0eXBlZGVmIHVuc2ln
bmVkIGludCBUeXBlOwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlclRyYWl0
PGxvbmc+IHsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVHlwZTsKLX07Ci10ZW1wbGF0ZTw+
IHN0cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDxsb25nIGxvbmc+IHsKLSAgICB0eXBlZGVmIHVu
c2lnbmVkIGxvbmcgbG9uZyBUeXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgU2lnbmVkSW50
ZWdlclR5cGU+Ci1zdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0lt
cGxTaWduZWQoU2lnbmVkSW50ZWdlclR5cGUgaW50ZWdlcikKLXsKLSAgICBMQ2hhciBidWZbMSAr
IHNpemVvZihTaWduZWRJbnRlZ2VyVHlwZSkgKiAzXTsKLSAgICBMQ2hhciogZW5kID0gYnVmICsg
V1RGX0FSUkFZX0xFTkdUSChidWYpOwotICAgIExDaGFyKiBwID0gZW5kOwotCi0gICAgYm9vbCBu
ZWdhdGl2ZSA9IGZhbHNlOwotICAgIHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclRyYWl0PFNpZ25l
ZEludGVnZXJUeXBlPjo6VHlwZSB1bnNpZ25lZEludGVnZXI7Ci0gICAgaWYgKGludGVnZXIgPCAw
KSB7Ci0gICAgICAgIG5lZ2F0aXZlID0gdHJ1ZTsKLSAgICAgICAgdW5zaWduZWRJbnRlZ2VyID0g
LWludGVnZXI7Ci0gICAgfSBlbHNlCi0gICAgICAgIHVuc2lnbmVkSW50ZWdlciA9IGludGVnZXI7
Ci0KLSAgICBkbyB7Ci0gICAgICAgICotLXAgPSBzdGF0aWNfY2FzdDxMQ2hhcj4oKHVuc2lnbmVk
SW50ZWdlciAlIDEwKSArICcwJyk7Ci0gICAgICAgIHVuc2lnbmVkSW50ZWdlciAvPSAxMDsKLSAg
ICB9IHdoaWxlICh1bnNpZ25lZEludGVnZXIpOwotCi0gICAgaWYgKG5lZ2F0aXZlKQotICAgICAg
ICAqLS1wID0gJy0nOwotCi0gICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZShwLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZW5kIC0gcCkpOwotfQotCi1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51
bWJlclRvU3RyaW5nSW1wbChpbnQgaSkKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBs
U2lnbmVkKGkpOwotfQotCi1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1w
bChsb25nIGkpCi17Ci0gICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbFNpZ25lZChpKTsKLX0K
LQotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwobG9uZyBsb25nIGkp
Ci17Ci0gICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbFNpZ25lZChpKTsKLX0KLQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPgotUGFzc1JlZlB0cjxTdHJpbmdJbXBs
PiBudW1iZXJUb1N0cmluZ0ltcGxVbnNpZ25lZChVbnNpZ25lZEludGVnZXJUeXBlIGludGVnZXIp
Ci17Ci0gICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDNdOwotICAg
IExDaGFyKiBlbmQgPSBidWYgKyBXVEZfQVJSQVlfTEVOR1RIKGJ1Zik7Ci0gICAgTENoYXIqIHAg
PSBlbmQ7Ci0KLSAgICBkbyB7Ci0gICAgICAgICotLXAgPSBzdGF0aWNfY2FzdDxMQ2hhcj4oKGlu
dGVnZXIgJSAxMCkgKyAnMCcpOwotICAgICAgICBpbnRlZ2VyIC89IDEwOwotICAgIH0gd2hpbGUg
KGludGVnZXIpOwotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGUocCwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGVuZCAtIHApKTsKLX0KLQotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBudW1iZXJU
b1N0cmluZ0ltcGwodW5zaWduZWQgdSkKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBs
VW5zaWduZWQodSk7Ci19Ci0KLVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJ
bXBsKHVuc2lnbmVkIGxvbmcgdSkKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsVW5z
aWduZWQodSk7Ci19Ci0KLVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBs
KHVuc2lnbmVkIGxvbmcgbG9uZyB1KQotewotICAgIHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGxV
bnNpZ25lZCh1KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oCmluZGV4IDRjNjFjYzY4MDQ5OWIxZDc0
YjcxZGU1YmE4Y2UyNDFkOGI5ZWVlZWQuLmJlMTM4YTg3ZWU0MzI0ZWNmOGQ5MGE5ZDFiYWZjZjEz
NDAzNDQ2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5n
Q29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29u
dmVyc2lvbi5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgUGF0cmlj
ayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0y
MSwxNyArMjIsNjcgQEAKICNpZm5kZWYgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbl9oCiAjZGVm
aW5lIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25faAogCi0jaW5jbHVkZSAiU3RyaW5nSW1wbC5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCi1XVEZfRVhQT1JUX1BSSVZBVEUg
UGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwoaW50KTsKLVdURl9FWFBP
UlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbChsb25n
KTsKLVdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3Ry
aW5nSW1wbChsb25nIGxvbmcpOwordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnNp
b25UcmFpdDsKIAotV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVt
YmVyVG9TdHJpbmdJbXBsKHVuc2lnbmVkKTsKLVdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbCh1bnNpZ25lZCBsb25nKTsKLVdURl9FWFBP
UlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1wbCh1bnNp
Z25lZCBsb25nIGxvbmcpOwordGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVyc2lvblRyYWl0PFN0cmlu
Zz4geworICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBSZXR1cm5UeXBlOworICAg
IHR5cGVkZWYgdm9pZCBBZGRpdGlvbmFsQXJndW1lbnRUeXBlOworICAgIHN0YXRpYyBpbmxpbmUg
UmV0dXJuVHlwZSBmbHVzaChMQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCB2b2lk
KikgeyByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlKGNoYXJhY3RlcnMsIGxlbmd0aCk7IH0KK307
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJzaW9uVHJhaXQ8U3RyaW5nQnVpbGRlcj4geworICAg
IHR5cGVkZWYgdm9pZCBSZXR1cm5UeXBlOworICAgIHR5cGVkZWYgU3RyaW5nQnVpbGRlciBBZGRp
dGlvbmFsQXJndW1lbnRUeXBlOworICAgIHN0YXRpYyBpbmxpbmUgUmV0dXJuVHlwZSBmbHVzaChM
Q2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdCdWlsZGVyKiBzdHJpbmdC
dWlsZGVyKSB7IHN0cmluZ0J1aWxkZXItPmFwcGVuZChjaGFyYWN0ZXJzLCBsZW5ndGgpOyB9Cit9
OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgVW5zaWduZWRJbnRlZ2VyVHJhaXQ7CisK
K3RlbXBsYXRlPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlclRyYWl0PGludD4geworICAgIHR5cGVk
ZWYgdW5zaWduZWQgaW50IFR5cGU7Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRl
Z2VyVHJhaXQ8bG9uZz4geworICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBUeXBlOworfTsKK3Rl
bXBsYXRlPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdlclRyYWl0PGxvbmcgbG9uZz4geworICAgIHR5
cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIFR5cGU7Cit9OworCit0ZW1wbGF0ZTx0eXBlbmFtZSBU
LCB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlLCBib29sIE5lZ2F0aXZlPgorc3RhdGljIHR5
cGVuYW1lIENvbnZlcnNpb25UcmFpdDxUPjo6UmV0dXJuVHlwZSBudW1iZXJUb1N0cmluZ0ltcGwo
VW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIsIHR5cGVuYW1lIENvbnZlcnNpb25UcmFpdDxUPjo6
QWRkaXRpb25hbEFyZ3VtZW50VHlwZSogYWRkaXRpb25hbEFyZ3VtZW50KQoreworICAgIExDaGFy
IGJ1ZltzaXplb2YoVW5zaWduZWRJbnRlZ2VyVHlwZSkgKiAzICsgMV07CisgICAgTENoYXIqIGVu
ZCA9IGJ1ZiArIFdURl9BUlJBWV9MRU5HVEgoYnVmKTsKKyAgICBMQ2hhciogcCA9IGVuZDsKKwor
ICAgIGRvIHsKKyAgICAgICAgKi0tcCA9IHN0YXRpY19jYXN0PExDaGFyPigobnVtYmVyICUgMTAp
ICsgJzAnKTsKKyAgICAgICAgbnVtYmVyIC89IDEwOworICAgIH0gd2hpbGUgKG51bWJlcik7CisK
KyAgICBpZiAoTmVnYXRpdmUpCisgICAgICAgICotLXAgPSAnLSc7CisKKyAgICByZXR1cm4gQ29u
dmVyc2lvblRyYWl0PFQ+OjpmbHVzaChwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gcCks
IGFkZGl0aW9uYWxBcmd1bWVudCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1l
IFNpZ25lZEludGVnZXJUeXBlPgoraW5saW5lIHR5cGVuYW1lIENvbnZlcnNpb25UcmFpdDxUPjo6
UmV0dXJuVHlwZSBudW1iZXJUb1N0cmluZ1NpZ25lZChTaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIs
IHR5cGVuYW1lIENvbnZlcnNpb25UcmFpdDxUPjo6QWRkaXRpb25hbEFyZ3VtZW50VHlwZSogYWRk
aXRpb25hbEFyZ3VtZW50ID0gMCkKK3sKKyAgICBpZiAobnVtYmVyIDwgMCkKKyAgICAgICAgcmV0
dXJuIG51bWJlclRvU3RyaW5nSW1wbDxULCB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUcmFpdDxT
aWduZWRJbnRlZ2VyVHlwZT46OlR5cGUsIHRydWU+KC1udW1iZXIsIGFkZGl0aW9uYWxBcmd1bWVu
dCk7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbDxULCB0eXBlbmFtZSBVbnNpZ25lZElu
dGVnZXJUcmFpdDxTaWduZWRJbnRlZ2VyVHlwZT46OlR5cGUsIGZhbHNlPihudW1iZXIsIGFkZGl0
aW9uYWxBcmd1bWVudCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFVuc2ln
bmVkSW50ZWdlclR5cGU+CitpbmxpbmUgdHlwZW5hbWUgQ29udmVyc2lvblRyYWl0PFQ+OjpSZXR1
cm5UeXBlIG51bWJlclRvU3RyaW5nVW5zaWduZWQoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIs
IHR5cGVuYW1lIENvbnZlcnNpb25UcmFpdDxUPjo6QWRkaXRpb25hbEFyZ3VtZW50VHlwZSogYWRk
aXRpb25hbEFyZ3VtZW50ID0gMCkKK3sKKyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsPFQs
IFVuc2lnbmVkSW50ZWdlclR5cGUsIGZhbHNlPihudW1iZXIsIGFkZGl0aW9uYWxBcmd1bWVudCk7
Cit9CiAKIH0gLy8gbmFtZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5k
ZXggMDdhZmNjN2QwODliYjVjZDEwZTEyY2FhNGU0NzAzYTg1MmNlMWYwOC4uNmYxNGJjZjU2NGEy
MGZkZDAyOGU1ZmYwYmZkMWYyYzE5YzI4NzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNw
cApAQCAtNDE3LDcgKzQxNywzNyBAQCBTdHJpbmcgU3RyaW5nOjpmb3JtYXQoY29uc3QgY2hhciAq
Zm9ybWF0LCAuLi4pCiAgICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oYnVmZmVyLmRhdGEoKSksIGxlbik7CiAjZW5kaWYKIH0KLSAgICAK
KworU3RyaW5nIFN0cmluZzo6bnVtYmVyKGludCBudW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJl
clRvU3RyaW5nU2lnbmVkPFN0cmluZz4obnVtYmVyKTsKK30KKworU3RyaW5nIFN0cmluZzo6bnVt
YmVyKHVuc2lnbmVkIGludCBudW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nVW5z
aWduZWQ8U3RyaW5nPihudW1iZXIpOworfQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIobG9uZyBu
dW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nU2lnbmVkPFN0cmluZz4obnVtYmVy
KTsKK30KKworU3RyaW5nIFN0cmluZzo6bnVtYmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyKQorewor
ICAgIHJldHVybiBudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFN0cmluZz4obnVtYmVyKTsKK30KKwor
U3RyaW5nIFN0cmluZzo6bnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpCit7CisgICAgcmV0dXJuIG51
bWJlclRvU3RyaW5nU2lnbmVkPFN0cmluZz4obnVtYmVyKTsKK30KKworU3RyaW5nIFN0cmluZzo6
bnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyBudW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJlclRv
U3RyaW5nVW5zaWduZWQ8U3RyaW5nPihudW1iZXIpOworfQorCiBTdHJpbmcgU3RyaW5nOjpudW1i
ZXIoZG91YmxlIG51bWJlciwgdW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVkIHByZWNpc2lvbikKIHsK
ICAgICBOdW1iZXJUb1N0cmluZ0J1ZmZlciBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApp
bmRleCBlMjAwN2Q2NTY1ODAyOTczMWUyZDJkYWU5MmM3NTIxNzgyMTQyZGMwLi42MzZkYjljZDky
MWQwNzY0ZjFhNmJiZTcyMDhlNTcyNDU2NTMwNjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgK
QEAgLTI2LDcgKzI2LDYgQEAKIC8vIG9uIHN5c3RlbXMgd2l0aG91dCBjYXNlLXNlbnNpdGl2ZSBm
aWxlIHN5c3RlbXMuCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0ltcGwuaD4KIAogI2lmZGVmIF9fT0JKQ19fCkBAIC0yMjYsMTMgKzIyNSwx
MiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAoKm1faW1wbClbaW5kZXhdOwogICAgIH0KIAot
ICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIHNob3J0IG51bWJlcikgeyByZXR1cm4g
bnVtYmVyVG9TdHJpbmdJbXBsKG51bWJlcik7IH0KLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihp
bnQgbnVtYmVyKSB7IHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0
YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIG51bWJlcikgeyByZXR1cm4gbnVtYmVyVG9TdHJp
bmdJbXBsKG51bWJlcik7IH0KLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nIG51bWJlcikg
eyByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsKG51bWJlcik7IH0KLSAgICBzdGF0aWMgU3RyaW5n
IG51bWJlcih1bnNpZ25lZCBsb25nIG51bWJlcikgeyByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBs
KG51bWJlcik7IH0KLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nIGxvbmcgbnVtYmVyKSB7
IHJldHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcg
bnVtYmVyKHVuc2lnbmVkIGxvbmcgbG9uZyBudW1iZXIpIHsgcmV0dXJuIG51bWJlclRvU3RyaW5n
SW1wbChudW1iZXIpOyB9CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcg
bnVtYmVyKGludCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVt
YmVyKHVuc2lnbmVkIGludCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJp
bmcgbnVtYmVyKGxvbmcpOworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5n
IG51bWJlcih1bnNpZ25lZCBsb25nKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGlj
IFN0cmluZyBudW1iZXIobG9uZyBsb25nKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3Rh
dGljIFN0cmluZyBudW1iZXIodW5zaWduZWQgbG9uZyBsb25nKTsKIAogICAgIFdURl9FWFBPUlRf
U1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcihkb3VibGUsIHVuc2lnbmVkID0gU2hvdWxk
Um91bmRTaWduaWZpY2FudEZpZ3VyZXMgfCBTaG91bGRUcnVuY2F0ZVRyYWlsaW5nWmVyb3MsIHVu
c2lnbmVkIHByZWNpc2lvbiA9IDYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4v
V2ViS2l0Mi5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggOTc1YTcz
ZDM4NzZlYjQzNmViNGJlYjkyMDk4NjVmMTk4ZWIwNWJjMS4uNjgwMWJmNzlmZjFjMTAxM2Q2ODA0
ZTJkYWM4YTYxZGM4ZWJkOGYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMTk1LDggKzE5
NSwxMCBAQCBFWFBPUlRTCiAgICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fs
a2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bmV4dEBDb21wb3NlZFNoYWRvd1RyZWVXYWxr
ZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9wcmV2aW91c0BDb21wb3NlZFNoYWRvd1RyZWVX
YWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9udW1iZXJUb1N0cmluZ0ltcGxAV1RGQEBZ
QT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAxQEhAWgotICAgICAgICA/bnVtYmVy
VG9TdHJpbmdJbXBsQFdURkBAWUE/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMUBJ
QFoKKyAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9LQFoKKyAgICAgICAgP251
bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgorICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZA
QFNBP0FWMTJASUBaCisgICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBOSUlAWgog
ICAgICAgICA/b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBWEFCVj8k
VmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAQFoKICAgICAgICAgP251bWJlck9mU2NvcGVk
SFRNTFN0eWxlQ2hpbGRyZW5ATm9kZUBXZWJDb3JlQEBRQkVJWFoKICAgICAgICAgP3BhZ2VARG9j
dW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAyQFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0
ZS5kZWYKaW5kZXggMzNlOGRlYjgwNzgzOWQzNGFhYWNiNDU1MTlmMDgzZGQzOWE2YTZjYS4uMjIw
YTNmZGRhMTdjNGI3NzQyZTIyMjRkZDJkY2VhMjkzNTI0YTQyZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9X
ZWJLaXQyQ0ZMaXRlLmRlZgpAQCAtMTkyLDggKzE5MiwxMCBAQCBFWFBPUlRTCiAgICAgICAgID9s
YXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAg
ICA/bmV4dEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAg
ID9wcmV2aW91c0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAg
ICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBJQFoKKyAgICAgICAgP251bWJlckBTdHJp
bmdAV1RGQEBTQT9BVjEyQF9LQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEy
QEhAWgorICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASUBaCisgICAgICAgID9u
dW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBOSUlAWgogICAgICAgICA/b3ZlcnJpZGVVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFA
QFdURkBAQFoKICAgICAgICAgP251bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW5ATm9kZUBX
ZWJDb3JlQEBRQkVJWFoKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFn
ZUAyQFhaCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNDFlOWQ4MjI1MTVjYzJmMDc2YmI4OWQxOWU5MmMyMWM1ZGFhMDY5OS4uN2M4ZjE1Njg0NzRh
YjFmZWMwNGFhNjE4YTYyZDBkYjkwN2QxYzA1NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTA3ICBQYXRy
aWNrIEdhbnN0ZXJlciAgPHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgdGhlIFN0
cmluZyBpbml0aWFsaXphdGlvbiBvbiB0aGUgZnVuY3Rpb24gc2lkZSBvZiBTdHJpbmc6Om51bWJl
cigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk0
MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHA6CisgICAg
ICAgICh0ZXN0Qm91bmRhcmllcyk6CisgICAgICAgICh0ZXN0TnVtYmVycyk6CisKIDIwMTItMDkt
MDYgIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEludHJv
ZHVjZSB0aGUgQ2hyb21pdW0gQW5kcm9pZCBSZWxlYXNlIChUZXN0cykgYm90CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9u
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ludGVnZXJUb1N0cmluZ0NvbnZl
cnNpb24uY3BwCmluZGV4IGEyMDFmNDEyNzU1NTIzZWEzMmEwNzY0Yjg4NzdhYmViOWIxNjljMGYu
LjZiOWQ4ZGY3Mjc2ZGViMGI0OWNmNGY3ZTM1MjA1NzJhNDk1YWE3MGQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ludGVnZXJUb1N0cmluZ0NvbnZl
cnNpb24uY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAjaW5jbHVkZSA8bGltaXRzPgogI2luY2x1ZGUg
PHd0Zi9TdHJpbmdFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbnRlZ2VyVHlwZT4gc3Ry
dWN0IFByaW50ZkZvcm1hdFRyYWl0IHsgc3RhdGljIGNvbnN0IGNoYXIgZm9ybWF0W107IH07CkBA
IC03NSwxMiArNzQsMTIgQEAgdm9pZCB0ZXN0Qm91bmRhcmllcygpCiAgICAgYnVmZmVyLnJlc2l6
ZShidWZmZXJTaXplKTsKIAogICAgIGNvbnN0IEludGVnZXJUeXBlIG1pbiA9IHN0ZDo6bnVtZXJp
Y19saW1pdHM8SW50ZWdlclR5cGU+OjptaW4oKTsKLSAgICBDU3RyaW5nIG1pblN0cmluZ0RhdGEg
PSBTdHJpbmcoV1RGOjpudW1iZXJUb1N0cmluZ0ltcGwobWluKSkubGF0aW4xKCk7CisgICAgQ1N0
cmluZyBtaW5TdHJpbmdEYXRhID0gU3RyaW5nOjpudW1iZXIobWluKS5sYXRpbjEoKTsKICAgICBz
bnByaW50ZihidWZmZXIuZGF0YSgpLCBidWZmZXJTaXplLCBQcmludGZGb3JtYXRUcmFpdDxJbnRl
Z2VyVHlwZT46OmZvcm1hdCwgbWluKTsKICAgICBBU1NFUlRfU1RSRVEoYnVmZmVyLmRhdGEoKSwg
bWluU3RyaW5nRGF0YS5kYXRhKCkpOwogCiAgICAgY29uc3QgSW50ZWdlclR5cGUgbWF4ID0gc3Rk
OjpudW1lcmljX2xpbWl0czxJbnRlZ2VyVHlwZT46Om1heCgpOwotICAgIENTdHJpbmcgbWF4U3Ry
aW5nRGF0YSA9IFN0cmluZyhXVEY6Om51bWJlclRvU3RyaW5nSW1wbChtYXgpKS5sYXRpbjEoKTsK
KyAgICBDU3RyaW5nIG1heFN0cmluZ0RhdGEgPSBTdHJpbmc6Om51bWJlcihtYXgpLmxhdGluMSgp
OwogICAgIHNucHJpbnRmKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlclNpemUsIFByaW50ZkZvcm1hdFRy
YWl0PEludGVnZXJUeXBlPjo6Zm9ybWF0LCBtYXgpOwogICAgIEFTU0VSVF9TVFJFUShidWZmZXIu
ZGF0YSgpLCBtYXhTdHJpbmdEYXRhLmRhdGEoKSk7CiB9CkBAIC05NCw3ICs5Myw3IEBAIHZvaWQg
dGVzdE51bWJlcnMoKQogCiAgICAgZm9yIChpbnQgaSA9IC0xMDA7IGkgPCAxMDA7ICsraSkgewog
ICAgICAgICBjb25zdCBJbnRlZ2VyVHlwZSBudW1iZXIgPSBzdGF0aWNfY2FzdDxJbnRlZ2VyVHlw
ZT4oaSk7Ci0gICAgICAgIENTdHJpbmcgbnVtYmVyU3RyaW5nRGF0YSA9IFN0cmluZyhXVEY6Om51
bWJlclRvU3RyaW5nSW1wbChudW1iZXIpKS5sYXRpbjEoKTsKKyAgICAgICAgQ1N0cmluZyBudW1i
ZXJTdHJpbmdEYXRhID0gU3RyaW5nOjpudW1iZXIobnVtYmVyKS5sYXRpbjEoKTsKICAgICAgICAg
c25wcmludGYoYnVmZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZSwgUHJpbnRmRm9ybWF0VHJhaXQ8SW50
ZWdlclR5cGU+Ojpmb3JtYXQsIG51bWJlcik7CiAgICAgICAgIEFTU0VSVF9TVFJFUShidWZmZXIu
ZGF0YSgpLCBudW1iZXJTdHJpbmdEYXRhLmRhdGEoKSk7CiAgICAgfQo=
</data>
<flag name="review"
          id="173952"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162935</attachid>
            <date>2012-09-07 19:49:13 -0700</date>
            <delta_ts>2012-09-09 13:50:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95940.patch</filename>
            <type>text/plain</type>
            <size>24766</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3ODQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
MGIyZDYzMTJiNzM1MzJhODg3MWJhYjI5NWE0ZjMzZTZjOGI4NDc1Li5mNGJiNzkzNzNlZDYwYjY5
ZGZiMjM0NDc4ZDI0ZGUwMGY2NTNhNzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxMi0wOS0wNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0
Lm9yZz4KKworICAgICAgICBNYWtlIHRoZSBTdHJpbmcgaW5pdGlhbGl6YXRpb24gb24gdGhlIGZ1
bmN0aW9uIHNpZGUgb2YgU3RyaW5nOjpudW1iZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5NDAKKworICAgICAgICBSZXZpZXdlZCBieSBCZW5q
YW1pbiBQb3VsYWluLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZjoKKwogMjAxMi0wOS0wNiAgTWFyayBIYWhuZW5iZXJn
ICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIEpTQyBzaG91bGQgaGF2ZSBhIHpv
bWJpZSBtb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYv
Q2hhbmdlTG9nCmluZGV4IDVkZTFkMmExODBmNTliZWVlNzE4MTVlMWQ0ZTc3ZjA4ODhhMGZhYzMu
LjY1ZjUwYzU5MzRkMjA3ZDEzYzAxNGY1ZTY3MGUxN2QwZDFiY2I4YjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjggQEAKKzIwMTItMDktMDcgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgTWFrZSB0aGUgU3RyaW5nIGluaXRpYWxpemF0aW9uIG9uIHRoZSBmdW5jdGlv
biBzaWRlIG9mIFN0cmluZzo6bnVtYmVyKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk1OTQwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQmVuamFtaW4g
UG91bGFpbi4KKworICAgICAgICBVbi1JbmxpbmUgU3RyaW5nOjpudW1iZXIoKSB0byBtYWtlIHRo
ZSBTdHJpbmcgaW5pdGlhbGl6YXRpb24gZG9uZSBvbiB0aGUgZnVuY3Rpb24gc2lkZQorICAgICAg
ICBpbnN0ZWFkIG9mIGJlaW5nIG9uIHRoZSBjYWxsZXIgc2lkZS4KKworICAgICAgICAqIEdOVW1h
a2VmaWxlLmxpc3QuYW06CisgICAgICAgICogV1RGLmd5cGk6CisgICAgICAgICogV1RGLnBybzoK
KyAgICAgICAgKiBXVEYudmNwcm9qL1dURi52Y3Byb2o6CisgICAgICAgICogV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAg
ICAqIHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwOiBSZW1vdmVkLgorICAg
ICAgICAqIHd0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaDoKKyAgICAgICAgKFdU
Rjo6bnVtYmVyVG9TdHJpbmdJbXBsKToKKyAgICAgICAgKFdURjo6bnVtYmVyVG9TdHJpbmdTaWdu
ZWQpOgorICAgICAgICAoV1RGOjpudW1iZXJUb1N0cmluZ1Vuc2lnbmVkKToKKyAgICAgICAgKiB3
dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6Om51bWJlcik6Cisg
ICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMTItMDktMDYgIE1pY2hhZWwgU2Fi
b2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgU3RyaW5nQnVpbGRlcjo6dG9BdG9t
aWNTdHJpbmcoKSBjYW4gY3JlYXRlIGFuIDE2IGJpdCBzdHJpbmcgd2l0aCA4IGJpdCBjb250ZW50
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGFjN2E1MmUwODU5YTA4OTdiYjllM2UyMTMyNWQ5ODY5MWI0NWIyMjAu
LjQyYmIxYTQ3Njg3MDdlYmIzYmJmNWE3M2IxZjAzOWYyNTc4NGIwNTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMi0wOS0wNyAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBNYWtlIHRoZSBTdHJpbmcgaW5pdGlhbGl6YXRpb24gb24gdGhl
IGZ1bmN0aW9uIHNpZGUgb2YgU3RyaW5nOjpudW1iZXIoKQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU5NDAKKworICAgICAgICBSZXZpZXdlZCBieSBC
ZW5qYW1pbiBQb3VsYWluLgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorICAgICAgICAq
IHdpbi9XZWJLaXQyQ0ZMaXRlLmRlZjoKKwogMjAxMi0wOS0wNyAgTWlraGFpbCBQb3pkbnlha292
ICA8bWlraGFpbC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbV0syXSBBUElDbGll
bnRUcmFpdHM8V0tQYWdlTG9hZGVyQ2xpZW50PiBhbmQgQVBJQ2xpZW50VHJhaXRzPFdLQnVuZGxl
UGFnZUxvYWRlckNsaWVudD4gYXJlIG5vdCBpbml0aWFsaXplZCBwcm9wZXJseQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRleCA2YTkw
ODZjOGIyOTE1YWJiZjM4MzhmNWJhYjkyMmM0NmRlNDBlYzZkLi41OTVjZTZlZjRjMGI1NTI0MjJl
NmM2NmYwNzQ2YzljY2VmZGMwMTBmIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtMjUzLDE2ICsyNTMsOSBAQCBFWFBPUlRTCiAg
ICAgP25vdGlmeVdyaXRlU2xvd0BTeW1ib2xUYWJsZUVudHJ5QEpTQ0BAQUFFWFhaCiAgICAgP25v
dGlmeVdyaXRlU2xvd0BXYXRjaHBvaW50U2V0QEpTQ0BAUUFFWFhaCiAgICAgP251bGxwdHJAQDNW
bnVsbHB0cl90QHN0ZEBAQQotICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBOSUlAWgog
ICAgID9udW1iZXJUb0ZpeGVkUHJlY2lzaW9uU3RyaW5nQFdURkBAWUFQQkROSVFBRF9OQFoKICAg
ICA/bnVtYmVyVG9GaXhlZFdpZHRoU3RyaW5nQFdURkBAWUFQQkROSVFBREBaCiAgICAgP251bWJl
clRvU3RyaW5nQFdURkBAWUFQQkROUUFEQFoKLSAgICA/bnVtYmVyVG9TdHJpbmdJbXBsQFdURkBA
WUE/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMUBfSkBaCi0gICAgP251bWJlclRv
U3RyaW5nSW1wbEBXVEZAQFlBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQDFAX0tA
WgotICAgID9udW1iZXJUb1N0cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5n
SW1wbEBXVEZAQEAxQEhAWgotICAgID9udW1iZXJUb1N0cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFz
c1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAxQElAWgotICAgID9udW1iZXJUb1N0cmluZ0ltcGxA
V1RGQEBZQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAxQEpAWgotICAgID9udW1i
ZXJUb1N0cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEAx
QEtAWgogICAgID9vYmplY3RBdFNjb3BlQEpTU2NvcGVASlNDQEBTQVBBVkpTT2JqZWN0QDJAUEFW
MTJAQFoKICAgICA/b2JqZWN0Q291bnRASGVhcEBKU0NAQFFBRUlYWgogICAgID9vYmplY3RQcm90
b0Z1bmNUb1N0cmluZ0BKU0NAQFlJX0pQQVZFeGVjU3RhdGVAMUBAWgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dURi9HTlVtYWtlZmlsZS5saXN0
LmFtCmluZGV4IDIyODNmZWQyYzJkZmNkMWQyOGRlYmEzNTMzOTI1ZWYwZTYwNWZiMzkuLmE0MDgw
MzQ1NWYyZDcyYzhiZWNkZDcyZjQwYjNjZmZjNTgwODQzZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
VEYvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV1RGL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KQEAgLTIwOCw3ICsyMDgsNiBAQCB3dGZfc291cmNlcyArPSBcCiAgICAgU291cmNlL1dURi93
dGYvdGV4dC9CYXNlNjQuaCBcCiAgICAgU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmNwcCBc
CiAgICAgU291cmNlL1dURi93dGYvdGV4dC9DU3RyaW5nLmggXAotICAgIFNvdXJjZS9XVEYvd3Rm
L3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgXAogICAgIFNvdXJjZS9XVEYvd3Rm
L3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ0J1ZmZlci5oIFwKICAgICBTb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0J1aWxk
ZXIuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLmd5cGkgYi9Tb3VyY2UvV1RGL1dU
Ri5neXBpCmluZGV4IDZjZmNkNDIxYTdkYmI1NmNlNDMwYTg5NTNjMmY3ZDZhZWEwNmEzNTQuLmNk
YzczZmQ0NWJjMDgzNTEwMzA4YWRhMmNlNzI0ZWZhZWRjNTljMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvV1RGLmd5cGkKKysrIGIvU291cmNlL1dURi9XVEYuZ3lwaQpAQCAtMjI0LDcgKzIyNCw2
IEBACiAgICAgICAgICAgICAnd3RmL3RleHQvQXRvbWljU3RyaW5nLmNwcCcsCiAgICAgICAgICAg
ICAnd3RmL3RleHQvQmFzZTY0LmNwcCcsCiAgICAgICAgICAgICAnd3RmL3RleHQvQ1N0cmluZy5j
cHAnLAotICAgICAgICAgICAgJ3d0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3Bw
JywKICAgICAgICAgICAgICd3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmNwcCcsCiAgICAgICAgICAg
ICAnd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAnLAogICAgICAgICAgICAgJ3d0Zi90ZXh0L1N0cmlu
Z1N0YXRpY3MuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnBybyBiL1NvdXJjZS9X
VEYvV1RGLnBybwppbmRleCAxMDY4ODVkODM1NzRiZThiMmQyM2QyMGI5ODA4ZWY5YTg4Njk5NjFi
Li41ZDZhNmU1NGZmNDYzNWFlY2E5ZjMxMzJiMzQyMzA5OWVhNDBjZTAzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL1dURi5wcm8KKysrIGIvU291cmNlL1dURi9XVEYucHJvCkBAIC0yMTksNyArMjE5
LDYgQEAgU09VUkNFUyArPSBcCiAgICAgdGV4dC9BdG9taWNTdHJpbmcuY3BwIFwKICAgICB0ZXh0
L0Jhc2U2NC5jcHAgXAogICAgIHRleHQvQ1N0cmluZy5jcHAgXAotICAgIHRleHQvSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvbi5jcHAgXAogICAgIHRleHQvU3RyaW5nQnVpbGRlci5jcHAgXAogICAg
IHRleHQvU3RyaW5nSW1wbC5jcHAgXAogICAgIHRleHQvU3RyaW5nU3RhdGljcy5jcHAgXApkaWZm
IC0tZ2l0IGEvU291cmNlL1dURi9XVEYudmNwcm9qL1dURi52Y3Byb2ogYi9Tb3VyY2UvV1RGL1dU
Ri52Y3Byb2ovV1RGLnZjcHJvagppbmRleCBkNzgwMzc1ZjlmY2UyZmI0YjhlOGJlNjNhYzQ4NTc3
ZDc0Zjk2OGYzLi40ODVkMmUzNTlkNDI5MTRlY2U1OWU1ZmNmODIwNGE2NTM4ZTJhNGZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL1dURi52Y3Byb2ovV1RGLnZjcHJvagorKysgYi9Tb3VyY2UvV1RG
L1dURi52Y3Byb2ovV1RGLnZjcHJvagpAQCAtNDI0LDEwICs0MjQsNiBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlx3dGZcdGV4dFxJbnRlZ2VyVG9T
dHJpbmdDb252ZXJzaW9uLmNwcCIKLQkJCQk+Ci0JCQk8L0ZpbGU+Ci0JCQk8RmlsZQogCQkJCVJl
bGF0aXZlUGF0aD0iLi5cd3RmXHRleHRcSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIgogCQkJ
CT4KIAkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDI4OGJkZmY0ZjliNDg5M2IwOGZjZTY5MmJkM2ZhNDgwZDc0ZmI3MjIuLmQyMzZiZDc3Yzli
MjhmNmJhYzdlOTlmMDU5YzBjM2E4MWY2MjAwMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvV1RG
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTEsNyArMTEsNiBAQAogCQkxNDNGNjExRjE1NjVGMEY5MDBE
QjUxNEEgLyogUkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNDNGNjExRDE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgKi87IH07
CiAJCTE0M0Y2MTIwMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXplLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEg
LyogUkFNU2l6ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTE0RjNCMEY3MTVFNDVFNDYwMDIxMDA2OSAvKiBTYXR1cmF0ZWRBcml0aG1ldGljLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEYzQjBGNjE1
RTQ1RTQ2MDAyMTAwNjkgLyogU2F0dXJhdGVkQXJpdGhtZXRpYy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTI2MTQ3QjA5MTVERENDREMwMEREQjkw
NyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MTQ3QjA3MTVERENDREMwMEREQjkwNyAvKiBJbnRl
Z2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcCAqLzsgfTsKIAkJMjYxNDdCMEExNUREQ0NEQzAwRERC
OTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI2MTQ3QjA4MTVERENDREMwMEREQjkwNyAvKiBJbnRl
Z2VyVG9TdHJpbmdDb252ZXJzaW9uLmggKi87IH07CiAJCTJDMDUzODU0MTVCQzgxOTAwMEYyMUI5
NiAvKiBHcmVnb3JpYW5EYXRlVGltZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkMwNTM4NTMxNUJDODE5MDAwRjIxQjk2IC8qIEdyZWdvcmlhbkRhdGVU
aW1lLmggKi87IH07CiAJCTJDQ0Q4OTJBMTVDMDM5MDIwMDI4NTA4MyAvKiBHcmVnb3JpYW5EYXRl
VGltZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
Q0NEODkyOTE1QzAzOTAyMDAyODUwODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwICovOyB9OwpA
QCAtMjU4LDcgKzI1Nyw2IEBACiAJCTE0M0Y2MTFEMTU2NUYwRjkwMERCNTE0QSAvKiBSQU1TaXpl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJBTVNpemUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxNDNGNjExRTE1NjVGMEY5MDBEQjUxNEEgLyog
UkFNU2l6ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSQU1TaXplLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0RjNCMEY2MTVFNDVFNDYwMDIxMDA2OSAvKiBT
YXR1cmF0ZWRBcml0aG1ldGljLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNh
dHVyYXRlZEFyaXRobWV0aWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMjYxNDdC
MDcxNUREQ0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW50ZWdlclRvU3RyaW5nQ29udmVyc2lv
bi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTI2MTQ3QjA4MTVERENDREMwMERE
QjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMkMwNTM4NTMxNUJDODE5MDAwRjIxQjk2IC8qIEdyZWdvcmlhbkRhdGVU
aW1lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdyZWdvcmlhbkRhdGVUaW1l
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJDQ0Q4OTI5MTVDMDM5MDIwMDI4NTA4
MyAvKiBHcmVnb3JpYW5EYXRlVGltZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBHcmVnb3JpYW5EYXRlVGltZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC03OTUsNyArNzkzLDYgQEAKIAkJCQk4MTM0MDEzNzE1QjA5MkZEMDAxRkYwQjggLyogQmFz
ZTY0LmggKi8sCiAJCQkJQThBNDczMjExNTFBODI1QjAwNDEyM0ZGIC8qIENTdHJpbmcuY3BwICov
LAogCQkJCUE4QTQ3MzIyMTUxQTgyNUIwMDQxMjNGRiAvKiBDU3RyaW5nLmggKi8sCi0JCQkJMjYx
NDdCMDcxNUREQ0NEQzAwRERCOTA3IC8qIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwICov
LAogCQkJCTI2MTQ3QjA4MTVERENDREMwMEREQjkwNyAvKiBJbnRlZ2VyVG9TdHJpbmdDb252ZXJz
aW9uLmggKi8sCiAJCQkJQThBNDczMjMxNTFBODI1QjAwNDEyM0ZGIC8qIFN0cmluZ0J1ZmZlci5o
ICovLAogCQkJCUE4QTQ3MzI0MTUxQTgyNUIwMDQxMjNGRiAvKiBTdHJpbmdCdWlsZGVyLmNwcCAq
LywKQEAgLTExODgsNyArMTE4NSw2IEBACiAJCQkJQThBNDczQjUxNTFBODI1QjAwNDEyM0ZGIC8q
IGZpeGVkLWR0b2EuY2MgaW4gU291cmNlcyAqLywKIAkJCQkyQ0NEODkyQTE1QzAzOTAyMDAyODUw
ODMgLyogR3JlZ29yaWFuRGF0ZVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThBNDczRDgx
NTFBODI1QjAwNDEyM0ZGIC8qIEhhc2hUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkyNjE0
N0IwOTE1RERDQ0RDMDBEREI5MDcgLyogSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlBOEE0NzNFNTE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRocmVhZC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzNFNDE1MUE4MjVCMDA0MTIzRkYgLyogTWFpblRo
cmVhZE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNENTQ5N0FDMTU4NTdEMDMwMEI1QkMzMCAv
KiBNZWRpYVRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CmluZGV4IDMy
MGM4NGJlNjg4YjAzOTkxMzExYzdkZDcwNWM0MzA3Y2Y5OWEwMDAuLjY3OWIyMGU5NmJmMDAxY2Vi
MmQ5M2RmNGI2NzNlOTVhNzU1NWU2OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CkBAIC0xODMsNyAr
MTgzLDYgQEAgU0VUKFdURl9TT1VSQ0VTCiAgICAgdGV4dC9BdG9taWNTdHJpbmcuY3BwCiAgICAg
dGV4dC9CYXNlNjQuY3BwCiAgICAgdGV4dC9DU3RyaW5nLmNwcAotICAgIHRleHQvSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvbi5jcHAKICAgICB0ZXh0L1N0cmluZ0J1aWxkZXIuY3BwCiAgICAgdGV4
dC9TdHJpbmdJbXBsLmNwcAogICAgIHRleHQvU3RyaW5nU3RhdGljcy5jcHAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkOTVjODgzYzZlYjFmNGJmMGM4M2IyNGZlYmUxNzU0MTNmMWJm
MjU2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwxMTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
SW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oIgotCi0jaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
SW1wbC5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0
IFVuc2lnbmVkSW50ZWdlclRyYWl0OwotCi10ZW1wbGF0ZTw+IHN0cnVjdCBVbnNpZ25lZEludGVn
ZXJUcmFpdDxzaG9ydD4gewotICAgIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgVHlwZTsKLX07Ci10
ZW1wbGF0ZTw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDxpbnQ+IHsKLSAgICB0eXBlZGVm
IHVuc2lnbmVkIGludCBUeXBlOwotfTsKLXRlbXBsYXRlPD4gc3RydWN0IFVuc2lnbmVkSW50ZWdl
clRyYWl0PGxvbmc+IHsKLSAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgVHlwZTsKLX07Ci10ZW1w
bGF0ZTw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDxsb25nIGxvbmc+IHsKLSAgICB0eXBl
ZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBUeXBlOwotfTsKLQotdGVtcGxhdGU8dHlwZW5hbWUgU2ln
bmVkSW50ZWdlclR5cGU+Ci1zdGF0aWMgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBudW1iZXJUb1N0
cmluZ0ltcGxTaWduZWQoU2lnbmVkSW50ZWdlclR5cGUgaW50ZWdlcikKLXsKLSAgICBMQ2hhciBi
dWZbMSArIHNpemVvZihTaWduZWRJbnRlZ2VyVHlwZSkgKiAzXTsKLSAgICBMQ2hhciogZW5kID0g
YnVmICsgV1RGX0FSUkFZX0xFTkdUSChidWYpOwotICAgIExDaGFyKiBwID0gZW5kOwotCi0gICAg
Ym9vbCBuZWdhdGl2ZSA9IGZhbHNlOwotICAgIHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclRyYWl0
PFNpZ25lZEludGVnZXJUeXBlPjo6VHlwZSB1bnNpZ25lZEludGVnZXI7Ci0gICAgaWYgKGludGVn
ZXIgPCAwKSB7Ci0gICAgICAgIG5lZ2F0aXZlID0gdHJ1ZTsKLSAgICAgICAgdW5zaWduZWRJbnRl
Z2VyID0gLWludGVnZXI7Ci0gICAgfSBlbHNlCi0gICAgICAgIHVuc2lnbmVkSW50ZWdlciA9IGlu
dGVnZXI7Ci0KLSAgICBkbyB7Ci0gICAgICAgICotLXAgPSBzdGF0aWNfY2FzdDxMQ2hhcj4oKHVu
c2lnbmVkSW50ZWdlciAlIDEwKSArICcwJyk7Ci0gICAgICAgIHVuc2lnbmVkSW50ZWdlciAvPSAx
MDsKLSAgICB9IHdoaWxlICh1bnNpZ25lZEludGVnZXIpOwotCi0gICAgaWYgKG5lZ2F0aXZlKQot
ICAgICAgICAqLS1wID0gJy0nOwotCi0gICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZShwLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gcCkpOwotfQotCi1QYXNzUmVmUHRyPFN0cmluZ0lt
cGw+IG51bWJlclRvU3RyaW5nSW1wbChpbnQgaSkKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJp
bmdJbXBsU2lnbmVkKGkpOwotfQotCi1QYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3Ry
aW5nSW1wbChsb25nIGkpCi17Ci0gICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbFNpZ25lZChp
KTsKLX0KLQotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwobG9uZyBs
b25nIGkpCi17Ci0gICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbFNpZ25lZChpKTsKLX0KLQot
Ci10ZW1wbGF0ZTx0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUeXBlPgotUGFzc1JlZlB0cjxTdHJp
bmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGxVbnNpZ25lZChVbnNpZ25lZEludGVnZXJUeXBlIGlu
dGVnZXIpCi17Ci0gICAgTENoYXIgYnVmW3NpemVvZihVbnNpZ25lZEludGVnZXJUeXBlKSAqIDNd
OwotICAgIExDaGFyKiBlbmQgPSBidWYgKyBXVEZfQVJSQVlfTEVOR1RIKGJ1Zik7Ci0gICAgTENo
YXIqIHAgPSBlbmQ7Ci0KLSAgICBkbyB7Ci0gICAgICAgICotLXAgPSBzdGF0aWNfY2FzdDxMQ2hh
cj4oKGludGVnZXIgJSAxMCkgKyAnMCcpOwotICAgICAgICBpbnRlZ2VyIC89IDEwOwotICAgIH0g
d2hpbGUgKGludGVnZXIpOwotICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGUocCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHApKTsKLX0KLQotUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBu
dW1iZXJUb1N0cmluZ0ltcGwodW5zaWduZWQgdSkKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJp
bmdJbXBsVW5zaWduZWQodSk7Ci19Ci0KLVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9T
dHJpbmdJbXBsKHVuc2lnbmVkIGxvbmcgdSkKLXsKLSAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJ
bXBsVW5zaWduZWQodSk7Ci19Ci0KLVBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJp
bmdJbXBsKHVuc2lnbmVkIGxvbmcgbG9uZyB1KQotewotICAgIHJldHVybiBudW1iZXJUb1N0cmlu
Z0ltcGxVbnNpZ25lZCh1KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oCmluZGV4IDRjNjFjYzY4MDQ5
OWIxZDc0YjcxZGU1YmE4Y2UyNDFkOGI5ZWVlZWQuLmJlMTM4YTg3ZWU0MzI0ZWNmOGQ5MGE5ZDFi
YWZjZjEzNDAzNDQ2NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRv
U3RyaW5nQ29udmVyc2lvbi5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvSW50ZWdlclRvU3Ry
aW5nQ29udmVyc2lvbi5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
UGF0cmljayBHYW5zdGVyZXIgPHBhcm9nYUBwYXJvZ2EuY29tPgogICoKICAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CkBAIC0yMSwxNyArMjIsNzIgQEAKICNpZm5kZWYgSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbl9o
CiAjZGVmaW5lIEludGVnZXJUb1N0cmluZ0NvbnZlcnNpb25faAogCi0jaW5jbHVkZSAiU3RyaW5n
SW1wbC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdJbXBsLmg+CiAKIG5hbWVzcGFjZSBXVEYgewogCi1XVEZfRVhQT1JUX1BS
SVZBVEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwoaW50KTsKLVdU
Rl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJlclRvU3RyaW5nSW1w
bChsb25nKTsKLVdURl9FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IG51bWJl
clRvU3RyaW5nSW1wbChsb25nIGxvbmcpOworZW51bSBQb3NpdGl2ZU9yTmVnYXRpdmVOdW1iZXIg
eworICAgIFBvc2l0aXZlTnVtYmVyLAorICAgIE5lZ2F0aXZlTnVtYmVyCit9OworCit0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVyc2lvblRyYWl0OwogCi1XVEZfRVhQT1JUX1BSSVZB
VEUgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBudW1iZXJUb1N0cmluZ0ltcGwodW5zaWduZWQpOwot
V1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gbnVtYmVyVG9TdHJpbmdJ
bXBsKHVuc2lnbmVkIGxvbmcpOwotV1RGX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8U3RyaW5n
SW1wbD4gbnVtYmVyVG9TdHJpbmdJbXBsKHVuc2lnbmVkIGxvbmcgbG9uZyk7Cit0ZW1wbGF0ZTw+
IHN0cnVjdCBDb252ZXJzaW9uVHJhaXQ8U3RyaW5nPiB7CisgICAgdHlwZWRlZiBQYXNzUmVmUHRy
PFN0cmluZ0ltcGw+IFJldHVyblR5cGU7CisgICAgdHlwZWRlZiB2b2lkIEFkZGl0aW9uYWxBcmd1
bWVudFR5cGU7CisgICAgc3RhdGljIGlubGluZSBSZXR1cm5UeXBlIGZsdXNoKExDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIHZvaWQqKSB7IHJldHVybiBTdHJpbmdJbXBsOjpjcmVh
dGUoY2hhcmFjdGVycywgbGVuZ3RoKTsgfQorfTsKK3RlbXBsYXRlPD4gc3RydWN0IENvbnZlcnNp
b25UcmFpdDxTdHJpbmdCdWlsZGVyPiB7CisgICAgdHlwZWRlZiB2b2lkIFJldHVyblR5cGU7Cisg
ICAgdHlwZWRlZiBTdHJpbmdCdWlsZGVyIEFkZGl0aW9uYWxBcmd1bWVudFR5cGU7CisgICAgc3Rh
dGljIGlubGluZSBSZXR1cm5UeXBlIGZsdXNoKExDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgsIFN0cmluZ0J1aWxkZXIqIHN0cmluZ0J1aWxkZXIpIHsgc3RyaW5nQnVpbGRlci0+YXBw
ZW5kKGNoYXJhY3RlcnMsIGxlbmd0aCk7IH0KK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0
cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDsKKwordGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJ
bnRlZ2VyVHJhaXQ8aW50PiB7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgVHlwZTsKK307Cit0
ZW1wbGF0ZTw+IHN0cnVjdCBVbnNpZ25lZEludGVnZXJUcmFpdDxsb25nPiB7CisgICAgdHlwZWRl
ZiB1bnNpZ25lZCBsb25nIFR5cGU7Cit9OwordGVtcGxhdGU8PiBzdHJ1Y3QgVW5zaWduZWRJbnRl
Z2VyVHJhaXQ8bG9uZyBsb25nPiB7CisgICAgdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgVHlw
ZTsKK307CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5
cGUsIFBvc2l0aXZlT3JOZWdhdGl2ZU51bWJlciBOdW1iZXJUeXBlPgorc3RhdGljIHR5cGVuYW1l
IENvbnZlcnNpb25UcmFpdDxUPjo6UmV0dXJuVHlwZSBudW1iZXJUb1N0cmluZ0ltcGwoVW5zaWdu
ZWRJbnRlZ2VyVHlwZSBudW1iZXIsIHR5cGVuYW1lIENvbnZlcnNpb25UcmFpdDxUPjo6QWRkaXRp
b25hbEFyZ3VtZW50VHlwZSogYWRkaXRpb25hbEFyZ3VtZW50KQoreworICAgIExDaGFyIGJ1Zltz
aXplb2YoVW5zaWduZWRJbnRlZ2VyVHlwZSkgKiAzICsgMV07CisgICAgTENoYXIqIGVuZCA9IGJ1
ZiArIFdURl9BUlJBWV9MRU5HVEgoYnVmKTsKKyAgICBMQ2hhciogcCA9IGVuZDsKKworICAgIGRv
IHsKKyAgICAgICAgKi0tcCA9IHN0YXRpY19jYXN0PExDaGFyPigobnVtYmVyICUgMTApICsgJzAn
KTsKKyAgICAgICAgbnVtYmVyIC89IDEwOworICAgIH0gd2hpbGUgKG51bWJlcik7CisKKyAgICBp
ZiAoTnVtYmVyVHlwZSA9PSBOZWdhdGl2ZU51bWJlcikKKyAgICAgICAgKi0tcCA9ICctJzsKKwor
ICAgIHJldHVybiBDb252ZXJzaW9uVHJhaXQ8VD46OmZsdXNoKHAsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihlbmQgLSBwKSwgYWRkaXRpb25hbEFyZ3VtZW50KTsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgU2lnbmVkSW50ZWdlclR5cGU+CitpbmxpbmUgdHlwZW5hbWUgQ29udmVy
c2lvblRyYWl0PFQ+OjpSZXR1cm5UeXBlIG51bWJlclRvU3RyaW5nU2lnbmVkKFNpZ25lZEludGVn
ZXJUeXBlIG51bWJlciwgdHlwZW5hbWUgQ29udmVyc2lvblRyYWl0PFQ+OjpBZGRpdGlvbmFsQXJn
dW1lbnRUeXBlKiBhZGRpdGlvbmFsQXJndW1lbnQgPSAwKQoreworICAgIGlmIChudW1iZXIgPCAw
KQorICAgICAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsPFQsIHR5cGVuYW1lIFVuc2lnbmVk
SW50ZWdlclRyYWl0PFNpZ25lZEludGVnZXJUeXBlPjo6VHlwZSwgTmVnYXRpdmVOdW1iZXI+KC1u
dW1iZXIsIGFkZGl0aW9uYWxBcmd1bWVudCk7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1w
bDxULCB0eXBlbmFtZSBVbnNpZ25lZEludGVnZXJUcmFpdDxTaWduZWRJbnRlZ2VyVHlwZT46OlR5
cGUsIFBvc2l0aXZlTnVtYmVyPihudW1iZXIsIGFkZGl0aW9uYWxBcmd1bWVudCk7Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFVuc2lnbmVkSW50ZWdlclR5cGU+CitpbmxpbmUg
dHlwZW5hbWUgQ29udmVyc2lvblRyYWl0PFQ+OjpSZXR1cm5UeXBlIG51bWJlclRvU3RyaW5nVW5z
aWduZWQoVW5zaWduZWRJbnRlZ2VyVHlwZSBudW1iZXIsIHR5cGVuYW1lIENvbnZlcnNpb25UcmFp
dDxUPjo6QWRkaXRpb25hbEFyZ3VtZW50VHlwZSogYWRkaXRpb25hbEFyZ3VtZW50ID0gMCkKK3sK
KyAgICByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsPFQsIFVuc2lnbmVkSW50ZWdlclR5cGUsIFBv
c2l0aXZlTnVtYmVyPihudW1iZXIsIGFkZGl0aW9uYWxBcmd1bWVudCk7Cit9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdURgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5j
cHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggMDdhZmNjN2QwODli
YjVjZDEwZTEyY2FhNGU0NzAzYTg1MmNlMWYwOC4uNmYxNGJjZjU2NGEyMGZkZDAyOGU1ZmYwYmZk
MWYyYzE5YzI4NzgxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtNDE3LDcgKzQx
NywzNyBAQCBTdHJpbmcgU3RyaW5nOjpmb3JtYXQoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiAg
ICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oYnVmZmVyLmRhdGEoKSksIGxlbik7CiAjZW5kaWYKIH0KLSAgICAKKworU3RyaW5nIFN0cmlu
Zzo6bnVtYmVyKGludCBudW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nU2lnbmVk
PFN0cmluZz4obnVtYmVyKTsKK30KKworU3RyaW5nIFN0cmluZzo6bnVtYmVyKHVuc2lnbmVkIGlu
dCBudW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8U3RyaW5nPihu
dW1iZXIpOworfQorCitTdHJpbmcgU3RyaW5nOjpudW1iZXIobG9uZyBudW1iZXIpCit7CisgICAg
cmV0dXJuIG51bWJlclRvU3RyaW5nU2lnbmVkPFN0cmluZz4obnVtYmVyKTsKK30KKworU3RyaW5n
IFN0cmluZzo6bnVtYmVyKHVuc2lnbmVkIGxvbmcgbnVtYmVyKQoreworICAgIHJldHVybiBudW1i
ZXJUb1N0cmluZ1Vuc2lnbmVkPFN0cmluZz4obnVtYmVyKTsKK30KKworU3RyaW5nIFN0cmluZzo6
bnVtYmVyKGxvbmcgbG9uZyBudW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nU2ln
bmVkPFN0cmluZz4obnVtYmVyKTsKK30KKworU3RyaW5nIFN0cmluZzo6bnVtYmVyKHVuc2lnbmVk
IGxvbmcgbG9uZyBudW1iZXIpCit7CisgICAgcmV0dXJuIG51bWJlclRvU3RyaW5nVW5zaWduZWQ8
U3RyaW5nPihudW1iZXIpOworfQorCiBTdHJpbmcgU3RyaW5nOjpudW1iZXIoZG91YmxlIG51bWJl
ciwgdW5zaWduZWQgZmxhZ3MsIHVuc2lnbmVkIHByZWNpc2lvbikKIHsKICAgICBOdW1iZXJUb1N0
cmluZ0J1ZmZlciBidWZmZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBlMjAwN2Q2NTY1
ODAyOTczMWUyZDJkYWU5MmM3NTIxNzgyMTQyZGMwLi42MzZkYjljZDkyMWQwNzY0ZjFhNmJiZTcy
MDhlNTcyNDU2NTMwNjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTI2LDcgKzI2LDYg
QEAKIC8vIG9uIHN5c3RlbXMgd2l0aG91dCBjYXNlLXNlbnNpdGl2ZSBmaWxlIHN5c3RlbXMuCiAK
ICNpbmNsdWRlIDx3dGYvdGV4dC9BU0NJSUZhc3RQYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
SW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0lt
cGwuaD4KIAogI2lmZGVmIF9fT0JKQ19fCkBAIC0yMjYsMTMgKzIyNSwxMiBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiAoKm1faW1wbClbaW5kZXhdOwogICAgIH0KIAotICAgIHN0YXRpYyBTdHJp
bmcgbnVtYmVyKHVuc2lnbmVkIHNob3J0IG51bWJlcikgeyByZXR1cm4gbnVtYmVyVG9TdHJpbmdJ
bXBsKG51bWJlcik7IH0KLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihpbnQgbnVtYmVyKSB7IHJl
dHVybiBudW1iZXJUb1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVt
YmVyKHVuc2lnbmVkIG51bWJlcikgeyByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsKG51bWJlcik7
IH0KLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nIG51bWJlcikgeyByZXR1cm4gbnVtYmVy
VG9TdHJpbmdJbXBsKG51bWJlcik7IH0KLSAgICBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25l
ZCBsb25nIG51bWJlcikgeyByZXR1cm4gbnVtYmVyVG9TdHJpbmdJbXBsKG51bWJlcik7IH0KLSAg
ICBzdGF0aWMgU3RyaW5nIG51bWJlcihsb25nIGxvbmcgbnVtYmVyKSB7IHJldHVybiBudW1iZXJU
b1N0cmluZ0ltcGwobnVtYmVyKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVk
IGxvbmcgbG9uZyBudW1iZXIpIHsgcmV0dXJuIG51bWJlclRvU3RyaW5nSW1wbChudW1iZXIpOyB9
CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGludCk7Cisg
ICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKHVuc2lnbmVkIGlu
dCk7CisgICAgV1RGX0VYUE9SVF9TVFJJTkdfQVBJIHN0YXRpYyBTdHJpbmcgbnVtYmVyKGxvbmcp
OworICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0aWMgU3RyaW5nIG51bWJlcih1bnNpZ25l
ZCBsb25nKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1iZXIo
bG9uZyBsb25nKTsKKyAgICBXVEZfRVhQT1JUX1NUUklOR19BUEkgc3RhdGljIFN0cmluZyBudW1i
ZXIodW5zaWduZWQgbG9uZyBsb25nKTsKIAogICAgIFdURl9FWFBPUlRfU1RSSU5HX0FQSSBzdGF0
aWMgU3RyaW5nIG51bWJlcihkb3VibGUsIHVuc2lnbmVkID0gU2hvdWxkUm91bmRTaWduaWZpY2Fu
dEZpZ3VyZXMgfCBTaG91bGRUcnVuY2F0ZVRyYWlsaW5nWmVyb3MsIHVuc2lnbmVkIHByZWNpc2lv
biA9IDYpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYgYi9T
b3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKaW5kZXggOTc1YTczZDM4NzZlYjQzNmViNGJl
YjkyMDk4NjVmMTk4ZWIwNWJjMS4uNjgwMWJmNzlmZjFjMTAxM2Q2ODA0ZTJkYWM4YTYxZGM4ZWJk
OGYyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgpAQCAtMTk1LDggKzE5NSwxMCBAQCBFWFBPUlRT
CiAgICAgICAgID9sYXN0Q2hpbGRAQ29tcG9zZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFB
RVhYWgogICAgICAgICA/bmV4dEBDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFF
WFhaCiAgICAgICAgID9wcmV2aW91c0BDb21wb3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBA
UUFFWFhaCi0gICAgICAgID9udW1iZXJUb1N0cmluZ0ltcGxAV1RGQEBZQT9BVj8kUGFzc1JlZlB0
ckBWU3RyaW5nSW1wbEBXVEZAQEAxQEhAWgotICAgICAgICA/bnVtYmVyVG9TdHJpbmdJbXBsQFdU
RkBAWUE/QVY/JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAMUBJQFoKKyAgICAgICAgP251
bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQF9LQFoKKyAgICAgICAgP251bWJlckBTdHJpbmdAV1RG
QEBTQT9BVjEyQEhAWgorICAgICAgICA/bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASUBaCisg
ICAgICAgID9udW1iZXJAU3RyaW5nQFdURkBAU0E/QVYxMkBOSUlAWgogICAgICAgICA/b3ZlcnJp
ZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzQFdlYkNvcmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJpbmdA
V1RGQEAkMEFAQFdURkBAQFoKICAgICAgICAgP251bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRy
ZW5ATm9kZUBXZWJDb3JlQEBRQkVJWFoKICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBA
UUJFUEFWUGFnZUAyQFhaCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNG
TGl0ZS5kZWYgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0MkNGTGl0ZS5kZWYKaW5kZXggMzNl
OGRlYjgwNzgzOWQzNGFhYWNiNDU1MTlmMDgzZGQzOWE2YTZjYS4uMjIwYTNmZGRhMTdjNGI3NzQy
ZTIyMjRkZDJkY2VhMjkzNTI0YTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvd2luL1dl
YktpdDJDRkxpdGUuZGVmCisrKyBiL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRl
ZgpAQCAtMTkyLDggKzE5MiwxMCBAQCBFWFBPUlRTCiAgICAgICAgID9sYXN0Q2hpbGRAQ29tcG9z
ZWRTaGFkb3dUcmVlV2Fsa2VyQFdlYkNvcmVAQFFBRVhYWgogICAgICAgICA/bmV4dEBDb21wb3Nl
ZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCiAgICAgICAgID9wcmV2aW91c0BDb21w
b3NlZFNoYWRvd1RyZWVXYWxrZXJAV2ViQ29yZUBAUUFFWFhaCi0gICAgICAgID9udW1iZXJAU3Ry
aW5nQFdURkBAU0E/QVYxMkBJQFoKKyAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEy
QF9LQFoKICAgICAgICAgP251bWJlckBTdHJpbmdAV1RGQEBTQT9BVjEyQEhAWgorICAgICAgICA/
bnVtYmVyQFN0cmluZ0BXVEZAQFNBP0FWMTJASUBaCisgICAgICAgID9udW1iZXJAU3RyaW5nQFdU
RkBAU0E/QVYxMkBOSUlAWgogICAgICAgICA/b3ZlcnJpZGVVc2VyUHJlZmVycmVkTGFuZ3VhZ2Vz
QFdlYkNvcmVAQFlBWEFCVj8kVmVjdG9yQFZTdHJpbmdAV1RGQEAkMEFAQFdURkBAQFoKICAgICAg
ICAgP251bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW5ATm9kZUBXZWJDb3JlQEBRQkVJWFoK
ICAgICAgICAgP3BhZ2VARG9jdW1lbnRAV2ViQ29yZUBAUUJFUEFWUGFnZUAyQFhaCmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDFlOWQ4MjI1MTVj
YzJmMDc2YmI4OWQxOWU5MmMyMWM1ZGFhMDY5OS4uN2M4ZjE1Njg0NzRhYjFmZWMwNGFhNjE4YTYy
ZDBkYjkwN2QxYzA1NSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEyLTA5LTA3ICBQYXRyaWNrIEdhbnN0ZXJlciAg
PHBhcm9nYUB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgdGhlIFN0cmluZyBpbml0aWFsaXph
dGlvbiBvbiB0aGUgZnVuY3Rpb24gc2lkZSBvZiBTdHJpbmc6Om51bWJlcigpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTk0MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEJlbmphbWluIFBvdWxhaW4uCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKHRlc3RCb3Vu
ZGFyaWVzKToKKyAgICAgICAgKHRlc3ROdW1iZXJzKToKKwogMjAxMi0wOS0wNiAgUGV0ZXIgQmV2
ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW50cm9kdWNlIHRoZSBDaHJv
bWl1bSBBbmRyb2lkIFJlbGVhc2UgKFRlc3RzKSBib3QKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL0ludGVnZXJUb1N0cmluZ0NvbnZlcnNpb24uY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAKaW5k
ZXggYTIwMWY0MTI3NTU1MjNlYTMyYTA3NjRiODg3N2FiZWI5YjE2OWMwZi4uNmI5ZDhkZjcyNzZk
ZWIwYjQ5Y2Y0ZjdlMzUyMDU3MmE0OTVhYTcwZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvSW50ZWdlclRvU3RyaW5nQ29udmVyc2lvbi5jcHAKQEAg
LTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4
dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLSNpbmNsdWRlIDx3dGYvdGV4
dC9JbnRlZ2VyVG9TdHJpbmdDb252ZXJzaW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEludGVnZXJUeXBlPiBzdHJ1Y3QgUHJpbnRmRm9y
bWF0VHJhaXQgeyBzdGF0aWMgY29uc3QgY2hhciBmb3JtYXRbXTsgfTsKQEAgLTc1LDEyICs3NCwx
MiBAQCB2b2lkIHRlc3RCb3VuZGFyaWVzKCkKICAgICBidWZmZXIucmVzaXplKGJ1ZmZlclNpemUp
OwogCiAgICAgY29uc3QgSW50ZWdlclR5cGUgbWluID0gc3RkOjpudW1lcmljX2xpbWl0czxJbnRl
Z2VyVHlwZT46Om1pbigpOwotICAgIENTdHJpbmcgbWluU3RyaW5nRGF0YSA9IFN0cmluZyhXVEY6
Om51bWJlclRvU3RyaW5nSW1wbChtaW4pKS5sYXRpbjEoKTsKKyAgICBDU3RyaW5nIG1pblN0cmlu
Z0RhdGEgPSBTdHJpbmc6Om51bWJlcihtaW4pLmxhdGluMSgpOwogICAgIHNucHJpbnRmKGJ1ZmZl
ci5kYXRhKCksIGJ1ZmZlclNpemUsIFByaW50ZkZvcm1hdFRyYWl0PEludGVnZXJUeXBlPjo6Zm9y
bWF0LCBtaW4pOwogICAgIEFTU0VSVF9TVFJFUShidWZmZXIuZGF0YSgpLCBtaW5TdHJpbmdEYXRh
LmRhdGEoKSk7CiAKICAgICBjb25zdCBJbnRlZ2VyVHlwZSBtYXggPSBzdGQ6Om51bWVyaWNfbGlt
aXRzPEludGVnZXJUeXBlPjo6bWF4KCk7Ci0gICAgQ1N0cmluZyBtYXhTdHJpbmdEYXRhID0gU3Ry
aW5nKFdURjo6bnVtYmVyVG9TdHJpbmdJbXBsKG1heCkpLmxhdGluMSgpOworICAgIENTdHJpbmcg
bWF4U3RyaW5nRGF0YSA9IFN0cmluZzo6bnVtYmVyKG1heCkubGF0aW4xKCk7CiAgICAgc25wcmlu
dGYoYnVmZmVyLmRhdGEoKSwgYnVmZmVyU2l6ZSwgUHJpbnRmRm9ybWF0VHJhaXQ8SW50ZWdlclR5
cGU+Ojpmb3JtYXQsIG1heCk7CiAgICAgQVNTRVJUX1NUUkVRKGJ1ZmZlci5kYXRhKCksIG1heFN0
cmluZ0RhdGEuZGF0YSgpKTsKIH0KQEAgLTk0LDcgKzkzLDcgQEAgdm9pZCB0ZXN0TnVtYmVycygp
CiAKICAgICBmb3IgKGludCBpID0gLTEwMDsgaSA8IDEwMDsgKytpKSB7CiAgICAgICAgIGNvbnN0
IEludGVnZXJUeXBlIG51bWJlciA9IHN0YXRpY19jYXN0PEludGVnZXJUeXBlPihpKTsKLSAgICAg
ICAgQ1N0cmluZyBudW1iZXJTdHJpbmdEYXRhID0gU3RyaW5nKFdURjo6bnVtYmVyVG9TdHJpbmdJ
bXBsKG51bWJlcikpLmxhdGluMSgpOworICAgICAgICBDU3RyaW5nIG51bWJlclN0cmluZ0RhdGEg
PSBTdHJpbmc6Om51bWJlcihudW1iZXIpLmxhdGluMSgpOwogICAgICAgICBzbnByaW50ZihidWZm
ZXIuZGF0YSgpLCBidWZmZXJTaXplLCBQcmludGZGb3JtYXRUcmFpdDxJbnRlZ2VyVHlwZT46OmZv
cm1hdCwgbnVtYmVyKTsKICAgICAgICAgQVNTRVJUX1NUUkVRKGJ1ZmZlci5kYXRhKCksIG51bWJl
clN0cmluZ0RhdGEuZGF0YSgpKTsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>