<?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>141162</bug_id>
          
          <creation_ts>2015-02-02 08:28:06 -0800</creation_ts>
          <short_desc>[Streams API] ReadableStream constructor start function should be able to error the stream</short_desc>
          <delta_ts>2015-05-08 03:45:37 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>141045</dependson>
    
    <dependson>141160</dependson>
    
    <dependson>142435</dependson>
          <blocked>142478</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1066104</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-02-02 08:28:06 -0800</bug_when>
    <thetext>As per https://streams.spec.whatwg.org/#rs-constructor, the start parameter function should be able to throw.
In that case, the error should be rethrown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1066108</commentid>
    <comment_count>1</comment_count>
      <attachid>245880</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-02-02 08:43:48 -0800</bug_when>
    <thetext>Created attachment 245880
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1067338</commentid>
    <comment_count>2</comment_count>
      <attachid>246158</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-02-06 03:34:50 -0800</bug_when>
    <thetext>Created attachment 246158
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074984</commentid>
    <comment_count>3</comment_count>
      <attachid>248074</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-03-06 10:00:15 -0800</bug_when>
    <thetext>Created attachment 248074
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075520</commentid>
    <comment_count>4</comment_count>
      <attachid>248074</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-03-08 21:09:51 -0700</bug_when>
    <thetext>Comment on attachment 248074
Rebasing

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

Quick look:

&gt; Source/WebCore/ChangeLog:3
&gt; +        [Streams API] ReadableStream constructor  start function should be able to error the stream

Two spaces between &quot;constructor&quot; and &quot;start&quot;.

&gt; Source/WebCore/ChangeLog:12
&gt; +        Calling error callback from the JS start function.
&gt; +        Rejecting closed promise when readablestream is errored.
&gt; +        Adding support to reject promise with any JSValue.
&gt; +        Added isJS to ReadableStreamSource so that JSReadableStream can get access to more meaningful errors (generic JSValue) 
&gt; +        instead of Strings without the JSValue to transit through ReadableStream.

In this part of the changelog, before detailing the changes, it is best to use paragraph explaining the global goal of the patch.

&gt; Source/WebCore/Modules/streams/ReadableStreamSource.h:63
&gt; +    virtual const String&amp; errorDescription() = 0;
&gt; +
&gt; +    virtual bool isJS() { return false; }

Shouldn&apos;t those be const?

&gt; Source/WebCore/bindings/js/ReadableStreamJSSource.h:61
&gt; +    virtual bool isJS() { return true; }
&gt; +    virtual const String&amp; errorDescription();

Missing override here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1075658</commentid>
    <comment_count>5</comment_count>
      <attachid>248257</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-03-09 10:57:45 -0700</bug_when>
    <thetext>Created attachment 248257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1076547</commentid>
    <comment_count>6</comment_count>
      <attachid>248485</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-03-11 21:19:01 -0700</bug_when>
    <thetext>Created attachment 248485
Cleaning things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080599</commentid>
    <comment_count>7</comment_count>
      <attachid>249570</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-03-27 08:10:04 -0700</bug_when>
    <thetext>Created attachment 249570
Adding reader support</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092126</commentid>
    <comment_count>8</comment_count>
      <attachid>252465</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-06 03:36:32 -0700</bug_when>
    <thetext>Created attachment 252465
Rebasing for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092572</commentid>
    <comment_count>9</comment_count>
      <attachid>252588</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-07 05:45:10 -0700</bug_when>
    <thetext>Created attachment 252588
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092603</commentid>
    <comment_count>10</comment_count>
      <attachid>252588</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-05-07 09:10:24 -0700</bug_when>
    <thetext>Comment on attachment 252588
Rebasing

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

&gt; Source/WebCore/Modules/streams/ReadableStreamReader.cpp:126
&gt; +    if (m_closedErrorCallback) {
&gt; +        ClosedErrorCallback closedErrorCallback = WTF::move(m_closedErrorCallback);
&gt; +        closedErrorCallback();
&gt; +    }
&gt; +    ASSERT(!m_closedErrorCallback);
&gt; +    m_closedSuccessCallback = nullptr;

Even though this matches the old code. I’m not sure I like it written this way. Is it important to null out the callback before we call it? If so, then the WTF::move is OK, but if not we should do the more straightforward:

    if (m_closedErrorCallback)
        m_closedErrorCallback();
    m_closedErrorCallback = nullptr;
    m_closedSuccessCallback = nullptr;

The local variable, the move, and the assertion all seem like overkill that unnecessarily obscure the logic.

It would also be nice to share the code that nulls out both callbacks and releases the stream rather than including it twice.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:144
&gt; +    Ref&lt;Reader&gt; reader =  Reader::create(*this);

Extra space here.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:147
&gt; +    return reader.get();

Do we really need the &quot;.get()&quot; here? I’m surprised. In fact, I think that adds in reference count churn that we’d like to avoid.

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:176
&gt; +    Reader* reader = static_cast&lt;Reader*&gt;(this-&gt;reader());
&gt; +    if (reader)
&gt; +        reader-&gt;storeError(exec, error);

Is this typecast really needed? Could we override the reader() function to know the more specific type? That’s a pattern we use elsewhere, such as in the render tree classes.

Would be nice to declare this inside the if rather than just before it:

    if (auto reader = this-&gt;reader())</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093149</commentid>
    <comment_count>11</comment_count>
      <attachid>252713</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-08 02:49:35 -0700</bug_when>
    <thetext>Created attachment 252713
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093151</commentid>
    <comment_count>12</comment_count>
      <attachid>252714</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-08 02:52:38 -0700</bug_when>
    <thetext>Created attachment 252714
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093152</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-05-08 02:56:04 -0700</bug_when>
    <thetext>Thanks for the review.
See inline for some comments.

(In reply to comment #10)
&gt; Comment on attachment 252588 [details]
&gt; Rebasing
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252588&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/streams/ReadableStreamReader.cpp:126
&gt; &gt; +    if (m_closedErrorCallback) {
&gt; &gt; +        ClosedErrorCallback closedErrorCallback = WTF::move(m_closedErrorCallback);
&gt; &gt; +        closedErrorCallback();
&gt; &gt; +    }
&gt; &gt; +    ASSERT(!m_closedErrorCallback);
&gt; &gt; +    m_closedSuccessCallback = nullptr;
&gt; 
&gt; Even though this matches the old code. I’m not sure I like it written this
&gt; way. Is it important to null out the callback before we call it? If so, then
&gt; the WTF::move is OK, but if not we should do the more straightforward:
&gt; 
&gt;     if (m_closedErrorCallback)
&gt;         m_closedErrorCallback();
&gt;     m_closedErrorCallback = nullptr;
&gt;     m_closedSuccessCallback = nullptr;
&gt; 
&gt; The local variable, the move, and the assertion all seem like overkill that
&gt; unnecessarily obscure the logic.
&gt; 
&gt; It would also be nice to share the code that nulls out both callbacks and
&gt; releases the stream rather than including it twice.

I like that. Let&apos;s do that as a follow-up patch.

&gt; &gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:144
&gt; &gt; +    Ref&lt;Reader&gt; reader =  Reader::create(*this);
&gt; 
&gt; Extra space here.

Fixed.

&gt; &gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:147
&gt; &gt; +    return reader.get();
&gt; 
&gt; Do we really need the &quot;.get()&quot; here? I’m surprised. In fact, I think that
&gt; adds in reference count churn that we’d like to avoid.

Fixed using static_reference_cast instead.

&gt; &gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:176
&gt; &gt; +    Reader* reader = static_cast&lt;Reader*&gt;(this-&gt;reader());
&gt; &gt; +    if (reader)
&gt; &gt; +        reader-&gt;storeError(exec, error);
&gt; 
&gt; Is this typecast really needed? Could we override the reader() function to
&gt; know the more specific type? That’s a pattern we use elsewhere, such as in
&gt; the render tree classes.

AFAICT, it will be the only case where we will need to do this cast.
Let&apos;s refactor it if more cases happen.

&gt; Would be nice to declare this inside the if rather than just before it:
&gt; 
&gt;     if (auto reader = this-&gt;reader())

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093161</commentid>
    <comment_count>14</comment_count>
      <attachid>252714</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-08 03:45:30 -0700</bug_when>
    <thetext>Comment on attachment 252714
Patch for landing

Clearing flags on attachment: 252714

Committed r183991: &lt;http://trac.webkit.org/changeset/183991&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1093162</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-05-08 03:45:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245880</attachid>
            <date>2015-02-02 08:43:48 -0800</date>
            <delta_ts>2015-02-06 03:34:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141162-20150202174357.patch</filename>
            <type>text/plain</type>
            <size>8237</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5NDczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTEyYzIwOWViYmJmYzY2
MmI4YjQzZWMzZjJhMTYxN2I4MzkwNTU5OC4uOTU4Njk0MjM1ODBlNjc0MDRhODRlMTIwNTc0Mzlk
NzI0OTQ2NGM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAyLTAyICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVh
bXMgQVBJXSBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciAgc3RhcnQgZnVuY3Rpb24gc2hvdWxk
IGJlIGFibGUgdG8gZXJyb3IgdGhlIHN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUGF0Y2ggaXMgY292ZXJlZCBieSBhZGRlZCB0ZXN0IGluIHJl
YWRhYmtlc3RyZWFtLXN0YXJ0Lmh0bWwuCisKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnJlc29s
dmVDbG9zZWRDYWxsYmFjayk6IEFsbG93IGNsb3NpbmcgaW4gZXJyb3Igc3RhdGUuCisgICAgICAg
IChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlUmVhZGFibGVTdHJlYW1FcnJvckZ1bmN0
aW9uKTogUHV0IHRoZSBzdHJlYW0gaW4gZXJyb3Igc3RhdGUgYW5kIGNhbGxzIHJlbGF0ZWQgY2Fs
bGJhY2tzLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OnNvdXJjZSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Jl
YWRhYmxlU3RyZWFtU291cmNlOjpzdG9yZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OmVycm9y
RnJvbVZhbHVlUmVhZGFibGVTdHJlYW0pOiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZXJyb3IgZnVu
Y3Rpb24uCisgICAgICAgIChXZWJDb3JlOjplcnJvclJlYWRhYmxlU3RyZWFtRnVuY3Rpb24pOiBU
aGUgZXJyb3IgSlMgZnVuY3Rpb24gd3JhcHBlci4KKyAgICAgICAgKFdlYkNvcmU6OkpTUmVhZGFi
bGVTdHJlYW1Tb3VyY2U6OnN0YXJ0KTogSWYgZXJyb3IgZnVuY3Rpb24gaXMgY2FsbGVkLCBkbyBu
b3QgdGhyb3cuCisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVNvdXJjZS5o
OgorCiAyMDE1LTAxLTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+IGFuZCBYYWJpZXIgUm9kcmlndWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbU3RyZWFtcyBBUEldIEltcGxlbWVudCBhIGJhcmVib25lIFJlYWRhYmxlU3RyZWFt
IGludGVyZmFjZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5jcHAKaW5kZXggZDIzMDk4MGFkYWQyNTRjNDJmNWU4MmNmMjkzNjdkNGRhNjA5NmNi
YS4uYmM5ODMxODAzYzNhYWU5ZGM5YWFiOTk4NzMyMmFhOGUyNjYyYzA4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCkBAIC04Miw3
ICs4Miw3IEBAIFN0cmluZyBSZWFkYWJsZVN0cmVhbTo6c3RhdGUoKSBjb25zdAogCiB2b2lkIFJl
YWRhYmxlU3RyZWFtOjpyZXNvbHZlQ2xvc2VkQ2FsbGJhY2soKQogewotICAgIEFTU0VSVChtX3N0
YXRlID09IFN0YXRlOjpDbG9zZWQpOworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpDbG9z
ZWQgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCk7CiAgICAgaWYgKCFtX2Nsb3NlZENhbGxi
YWNrKQogICAgICAgICByZXR1cm47CiAgICAgY2FsbE9uTWFpblRocmVhZChzdGQ6OmJpbmQoV1RG
Ojptb3ZlKG1fY2xvc2VkQ2FsbGJhY2spLCBudWxscHRyKSk7CkBAIC0xMDUsNiArMTA1LDEzIEBA
IHZvaWQgUmVhZGFibGVTdHJlYW06OmNyZWF0ZVJlYWRhYmxlU3RyZWFtQ2xvc2VGdW5jdGlvbigp
CiAgICAgLy8gRklYTUU6IEhhbmRsZSBTdGF0ZTo6UmVhZGFibGUgd2hlbiBlbnF1ZXVlIGlzIHN1
cHBvcnRlZC4KIH0KIAordm9pZCBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlUmVhZGFibGVTdHJlYW1F
cnJvckZ1bmN0aW9uKCkKK3sKKyAgICBtX3N0YXRlID0gU3RhdGU6OkVycm9yZWQ7CisgICAgcmVz
b2x2ZVJlYWR5Q2FsbGJhY2soKTsKKyAgICByZXNvbHZlQ2xvc2VkQ2FsbGJhY2soKTsKK30KKwog
dm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVzb2x2ZVJlYWR5Q2FsbGJhY2soKQogewogICAgIGlmICgh
bV9yZWFkeUNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW0uaAppbmRleCA0MWM3NWZjNjU4ZmY3YTVhZGU2ZjI4OTgwZWE2M2FlNzIxMGYx
MmI1Li44Nzg3Yzc1ZDQxYTNlZTBmOTA0ZmM1M2JmYzA3YzcyNmI1ZGE3ZDM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaApAQCAtNzEsNiAr
NzEsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdGFydCgpOwogCiAgICAgdm9pZCBjcmVhdGVSZWFk
YWJsZVN0cmVhbUNsb3NlRnVuY3Rpb24oKTsKKyAgICB2b2lkIGNyZWF0ZVJlYWRhYmxlU3RyZWFt
RXJyb3JGdW5jdGlvbigpOworCisgICAgUmVhZGFibGVTdHJlYW1Tb3VyY2UmIHNvdXJjZSgpIHsg
cmV0dXJuIG1fc291cmNlLmdldCgpOyB9CiAKIHByaXZhdGU6CiAgICAgUmVhZGFibGVTdHJlYW0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxSZWFkYWJsZVN0cmVhbVNvdXJjZT4mJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Tb3Vy
Y2UuY3BwCmluZGV4IDUyMTM5NjQ1MzJkZWI3NDRmMTM0NjFmYTk4N2MzMTgwMzcyZjM3MjQuLmI5
ZWMwNmRmZmU0YzE5MTEyYjU2MDViOGU3NzBlNGI3YTlkNTdlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Tb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Tb3VyY2UuY3BwCkBAIC0x
MzksNiArMTM5LDExIEBAIHZvaWQgSlNSZWFkYWJsZVN0cmVhbVNvdXJjZTo6c2V0SW50ZXJuYWxF
cnJvcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nCiAgICAgbV9lcnJvci5zZXQo
ZXhlYy0+dm0oKSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKIH0KIAordm9pZCBK
U1JlYWRhYmxlU3RyZWFtU291cmNlOjpzdG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGVycm9yKQoreworICAgIG1fZXJyb3Iuc2V0KGV4ZWMtPnZtKCksIGVycm9yKTsKK30K
Kwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZW5xdWV1ZVJlYWRhYmxlU3Ry
ZWFtRnVuY3Rpb24oRXhlY1N0YXRlKikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMg
bWV0aG9kLgpAQCAtMTYyLDkgKzE2NywyMCBAQCBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlUmVh
ZGFibGVTdHJlYW1DbG9zZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gSlNG
dW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3Qo
KSwgMCwgQVNDSUlMaXRlcmFsKCJDcmVhdGVSZWFkYWJsZVN0cmVhbUNsb3NlRnVuY3Rpb24iKSwg
Y2xvc2VSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZXJyb3JSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKEV4ZWNTdGF0ZSopCitz
dGF0aWMgdm9pZCBlcnJvckZyb21WYWx1ZVJlYWRhYmxlU3RyZWFtKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBlcnJvcikKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgbWV0aG9kLgor
ICAgIEFTU0VSVCghZXJyb3IuaXNVbmRlZmluZWQoKSk7CisKKyAgICBKU1JlYWRhYmxlU3RyZWFt
KiBqc1JlYWRhYmxlU3RyZWFtID0gZ2V0SlNSZWFkYWJsZVN0cmVhbShleGVjKTsKKyAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHJldHJpZXZlIEpTUmVhZGFibGVTdHJlYW1Tb3VyY2UgZGlyZWN0bHkg
ZnJvbSBKU1JlYWRhYmxlU3RyZWFtIGFuZCByZW1vdmUgUmVhZGFibGVTdHJlYW06OnNvdXJjZSgp
LgorICAgIHN0YXRpY19jYXN0PEpTUmVhZGFibGVTdHJlYW1Tb3VyY2UmPihqc1JlYWRhYmxlU3Ry
ZWFtLT5pbXBsKCkuc291cmNlKCkpLnN0b3JlRXJyb3IoZXhlYywgZXJyb3IpOworICAgIGpzUmVh
ZGFibGVTdHJlYW0tPmltcGwoKS5jcmVhdGVSZWFkYWJsZVN0cmVhbUVycm9yRnVuY3Rpb24oKTsK
K30KKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JSZWFkYWJsZVN0
cmVhbUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIGVycm9yID0gZXhl
Yy0+YXJndW1lbnRDb3VudCgpID8gZXhlYy0+YXJndW1lbnQoMCkgOiBjcmVhdGVFcnJvcihleGVj
LCBBU0NJSUxpdGVyYWwoIkVycm9yIGZ1bmN0aW9uIGNhbGxlZC4iKSk7CisgICAgZXJyb3JGcm9t
VmFsdWVSZWFkYWJsZVN0cmVhbShleGVjLCBlcnJvcik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMjE1LDcgKzIzMSw4IEBAIGJvb2wgSlNSZWFk
YWJsZVN0cmVhbVNvdXJjZTo6c3RhcnQoKQogCiAgICAgY2FsbEZ1bmN0aW9uKGV4ZWMsIG1fc3Rh
cnRGdW5jdGlvbi5nZXQoKSwgYXJndW1lbnRzKTsKIAotICAgIGlmICghbV9lcnJvci5nZXQoKS5p
c1VuZGVmaW5lZCgpKQorICAgIC8vIFRocm93IGV4Y2VwdCBpZiBtX2Vycm9yRnVuY3Rpb24gd2Fz
IGNhbGxlZAorICAgIGlmICghbV9lcnJvci5nZXQoKS5pc1VuZGVmaW5lZCgpICYmIG1fcmVhZGFi
bGVTdHJlYW0tPmltcGwoKS5zdGF0ZSgpICE9ICJlcnJvcmVkIikKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBoYW5kbGluZyBwcm9taXNlIGFzIHJlc3Vs
dCBvZiBjYWxsaW5nIHN0YXJ0IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtU291cmNlLmgKaW5kZXggMjIwYWQwYmUyNDI0OTQ5NTM5
NWY1ZmQ4YjQ1MmNiNmEyOTQwMzY2Yi4uM2E4MmViN2E5MWQ5NWI2NTU0MDY0Y2M3Y2U1MDMwODE2
ZGM5MGM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbVNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFi
bGVTdHJlYW1Tb3VyY2UuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRT
dHJlYW0oSlNDOjpFeGVjU3RhdGUqLCBKU1JlYWRhYmxlU3RyZWFtKik7CiAKICAgICBKU0M6OkpT
VmFsdWUgZXJyb3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9CisgICAgdm9pZCBzdG9yZUVy
cm9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKICAgICBib29sIHN0YXJ0KCk7CiAK
ICAgICAvLyBSZWFkYWJsZVN0cmVhbVNvdXJjZSBBUEkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjQxOWUwMDYxOWI2NDRj
YmRmN2ExOTZmYmQ1OTdjZDdmMDE2MTEwZC4uNTQ5M2RmNzFhNGJmZDQxZTQ2NDkzMTViZGFlMWM1
MGE5OTgzYjE0OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAyLTAyICBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJ
XSBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciAgc3RhcnQgZnVuY3Rpb24gc2hvdWxkIGJlIGFi
bGUgdG8gdGhyb3cgYW4gZXJyb3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MTE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1zdGFydC1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1zdGFydC5odG1sOgorCiAyMDE1LTAx
LTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+IGFuZCBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbU3Ry
ZWFtcyBBUEldIEltcGxlbWVudCBhIGJhcmVib25lIFJlYWRhYmxlU3RyZWFtIGludGVyZmFjZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1zdGFydC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3RyZWFtLXN0YXJ0LWV4cGVj
dGVkLnR4dAppbmRleCAwODIxZmVkNDQ0MWE5OWQzNDkyNThiYWRlYTk2YWU3ZjExOTVjYWU5Li44
N2JhZWM2YmIwZTE5MjQ2Y2UwNDM0NTA5NDIxMTI4YjVhNmM2Yzc5IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3RyZWFtLXN0YXJ0LWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3RyZWFtLXN0YXJ0LWV4cGVjdGVkLnR4dApAQCAt
Miw0ICsyLDUgQEAKIFBBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8g
dGhyb3cgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHNob3VsZCBnZXQgYSBmdW5j
dGlvbiBhcyBzdGFydCAgYXJndW1lbnQgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3Vs
ZCBiZSBhYmxlIHRvIGNsb3NlIHRoZSBzdHJlYW0gCitQQVNTIFJlYWRhYmxlU3RyZWFtIHJlYWRp
bmcgYW4gZXJyb3JlZCBzdHJlYW0gdGhyb3dzIHRoZSBzdG9yZWQgZXJyb3IgCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGVzdHJlYW0tc3RhcnQuaHRtbCBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVhZGFibGVzdHJlYW0tc3RhcnQuaHRtbAppbmRleCAyYTk2MjYxMGJk
ZmVjYjc4MGRhYmVjOTNiM2E5NzYyZWRlMzUxOTA3Li5hZTg2NmM2NTkzYmJjMDIyY2JlYmQ1MmE4
NDg1OTcyNDg1MGEwYzBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxl
c3RyZWFtLXN0YXJ0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZXN0cmVh
bS1zdGFydC5odG1sCkBAIC00Niw1ICs0NiwxNyBAQCB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkKICAg
ICB9KTsKIH0pOwogCi08L3NjcmlwdD4KK3Rlc3QoZnVuY3Rpb24oKSB7CisgICAgdmFyIHBhc3Nl
ZEVycm9yID0gbmV3IEVycm9yKCdhYWF1Z2ghIScpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJs
ZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihlbnF1ZXVlLCBjbG9zZSwgZXJyb3Ip
IHsKKyAgICAgICAgICAgIGVycm9yKHBhc3NlZEVycm9yKTsKKyAgICAgICAgfQorICAgIH0pOwor
ICAgIGFzc2VydF9lcXVhbHMocnMuc3RhdGUsICdlcnJvcmVkJyk7CisgICAgYXNzZXJ0X3Rocm93
cyhwYXNzZWRFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIHJzLnJlYWQoKTsKKyAgICB9KTsK
K30sICdSZWFkYWJsZVN0cmVhbSByZWFkaW5nIGFuIGVycm9yZWQgc3RyZWFtIHRocm93cyB0aGUg
c3RvcmVkIGVycm9yJyk7CiAKKzwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246158</attachid>
            <date>2015-02-06 03:34:50 -0800</date>
            <delta_ts>2015-03-06 10:00:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141162-20150206123448.patch</filename>
            <type>text/plain</type>
            <size>8550</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5Njg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGYzY2I4ODgzYzM5NjRm
MWY2MWM3ODU5N2FjYmI1YzA0MzRkYjhhZi4uYWEyY2ExMGY3OTc1MzFkMzhiYTdhYjc1Y2U5YmIw
ZjY4ZDc2ODU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAyLTA2ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yICBzdGFydCBmdW5jdGlvbiBzaG91bGQgYmUgYWJs
ZSB0byBlcnJvciB0aGUgc3RyZWFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDExNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBQYXRjaCBpcyBjb3ZlcmVkIGJ5IGFkZGVkIHRlc3QgaW4gcmVhZGFia2Vz
dHJlYW0tc3RhcnQuaHRtbC4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6cmVzb2x2ZUNsb3Nl
ZENhbGxiYWNrKTogIEFsbG93IGNsb3NpbmcgaW4gZXJyb3Igc3RhdGUuCisgICAgICAgIChXZWJD
b3JlOjpSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQpOiBQdXQgdGhlIHN0cmVh
bSBpbiBlcnJvciBzdGF0ZSBhbmQgY2FsbHMgcmVsYXRlZCBjYWxsYmFja3MuCisgICAgICAgICog
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFk
YWJsZVN0cmVhbTo6c291cmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVh
bUpTU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtSlNTb3VyY2U6
OnN0b3JlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6ZXJyb3JGcm9tVmFsdWVSZWFkYWJsZVN0
cmVhbSk6IEJpbmRpbmcgZnJvbSBKUyBlcnJvciBmdW5jdGlvbiBjYWxsIHRvIFJlYWRhYmxlU3Ry
ZWFtLgorICAgICAgICAoV2ViQ29yZTo6ZXJyb3JSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKTogVGhl
IGVycm9yIEpTIGZ1bmN0aW9uIHdyYXBwZXIuCisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0
cmVhbUpTU291cmNlOjpzdGFydCk6ICBJZiBlcnJvciBmdW5jdGlvbiBpcyBjYWxsZWQsIGRvIG5v
dCB0aHJvdy4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmg6
CisKIDIwMTUtMDItMDUgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyIDxjYWx2YXJpc0BpZ2FsaWEu
Y29tPiBhbmQgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAg
ICAgICAgIFtTdHJlYW1zIEFQSV0gU3VwcG9ydCB0aGUgc3RhcnQgZnVuY3Rpb24gcGFyYW1ldGVy
IGluIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAppbmRleCBjM2E2MDNiYzRlZmVhYmFkMTNk
MjJjNjI1NGIwMjNmZTFkMWM4Yzc0Li44OTkxNDVhY2VlODQ3NzM5MTQwNTlmMTNmZmUwMDIzN2E5
MTAzM2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgU3RyaW5nIFJlYWRhYmxlU3RyZWFtOjpzdGF0
ZSgpIGNvbnN0CiAKIHZvaWQgUmVhZGFibGVTdHJlYW06OnJlc29sdmVDbG9zZWRDYWxsYmFjaygp
CiB7Ci0gICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCk7CisgICAgQVNTRVJUKG1f
c3RhdGUgPT0gU3RhdGU6OkNsb3NlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpFcnJvcmVkKTsKICAg
ICBpZiAoIW1fY2xvc2VkQ2FsbGJhY2spCiAgICAgICAgIHJldHVybjsKICAgICBjYWxsT25NYWlu
VGhyZWFkKHN0ZDo6YmluZChXVEY6Om1vdmUobV9jbG9zZWRDYWxsYmFjaykpKTsKQEAgLTEwNiw2
ICsxMDYsMTMgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpCiAg
ICAgLy8gRklYTUU6IEhhbmRsZSBTdGF0ZTo6UmVhZGFibGUgd2hlbiBlbnF1ZXVlIGlzIHN1cHBv
cnRlZC4KIH0KIAordm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQoKQor
eworICAgIG1fc3RhdGUgPSBTdGF0ZTo6RXJyb3JlZDsKKyAgICByZXNvbHZlUmVhZHlDYWxsYmFj
aygpOworICAgIHJlc29sdmVDbG9zZWRDYWxsYmFjaygpOworfQorCiB2b2lkIFJlYWRhYmxlU3Ry
ZWFtOjpyZXNvbHZlUmVhZHlDYWxsYmFjaygpCiB7CiAgICAgaWYgKCFtX3JlYWR5Q2FsbGJhY2sp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oCmlu
ZGV4IGMxZGYyYWJjYTUyNTJhM2ZhNTVmODg5NTE1NTdlMGZkMjg1ZTFkOGEuLjg2Mjc5ZTBjMGRl
ZDc3YzYxOWI4YzEwOTcwMDUyOGM0MWI2OGFlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oCkBAIC03MSw2ICs3MSw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0YXJ0KCk7CiAKICAgICB2b2lkIGNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKKyAg
ICB2b2lkIGNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7CisKKyAgICBSZWFkYWJsZVN0cmVhbVNvdXJj
ZSYgc291cmNlKCkgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBS
ZWFkYWJsZVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPFJlYWRhYmxlU3RyZWFt
U291cmNlPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlU3RyZWFtSlNTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFi
bGVTdHJlYW1KU1NvdXJjZS5jcHAKaW5kZXggNjZkYzlhMDU5OWExYjY2ZGJkMjY2MmUzNWVhZGM2
YTQzYTY4NTNjZi4uZWYwMWExOGExOTZkY2NhYzc0M2IxYWQwMmFhODA0NjljNTVkYWI2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1Nv
dXJjZS5jcHAKQEAgLTEzNyw2ICsxMzcsMTEgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbUpTU291cmNl
OjpzZXRJbnRlcm5hbEVycm9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcKICAg
ICBtX2Vycm9yLnNldChleGVjLT52bSgpLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgbWVzc2FnZSkp
OwogfQogCit2b2lkIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2U6OnN0b3JlRXJyb3IoSlNDOjpFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCit7CisgICAgbV9lcnJvci5zZXQoZXhlYy0+dm0o
KSwgZXJyb3IpOworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlbnF1
ZXVlUmVhZGFibGVTdHJlYW1GdW5jdGlvbihFeGVjU3RhdGUqKQogewogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgdGhpcyBtZXRob2QuCkBAIC0xNjAsOSArMTY1LDIwIEBAIHN0YXRpYyBKU0Z1bmN0
aW9uKiBjcmVhdGVSZWFkYWJsZVN0cmVhbUNsb3NlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQog
ICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+Y2FsbGVlKCkt
Pmdsb2JhbE9iamVjdCgpLCAwLCBBU0NJSUxpdGVyYWwoIkNyZWF0ZVJlYWRhYmxlU3RyZWFtQ2xv
c2VGdW5jdGlvbiIpLCBjbG9zZVJlYWRhYmxlU3RyZWFtRnVuY3Rpb24pOwogfQogCi1zdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclJlYWRhYmxlU3RyZWFtRnVuY3Rpb24o
RXhlY1N0YXRlKikKK3N0YXRpYyB2b2lkIGVycm9yRnJvbVZhbHVlUmVhZGFibGVTdHJlYW0oRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
dGhpcyBtZXRob2QuCisgICAgQVNTRVJUKCFlcnJvci5pc1VuZGVmaW5lZCgpKTsKKworICAgIEpT
UmVhZGFibGVTdHJlYW0qIGpzUmVhZGFibGVTdHJlYW0gPSBnZXRKU1JlYWRhYmxlU3RyZWFtKGV4
ZWMpOworICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcmV0cmlldmUgUmVhZGFibGVTdHJlYW1KU1Nv
dXJjZSBkaXJlY3RseSBmcm9tIEpTUmVhZGFibGVTdHJlYW0gYW5kIHJlbW92ZSBSZWFkYWJsZVN0
cmVhbTo6c291cmNlKCkuCisgICAgc3RhdGljX2Nhc3Q8UmVhZGFibGVTdHJlYW1KU1NvdXJjZSY+
KGpzUmVhZGFibGVTdHJlYW0tPmltcGwoKS5zb3VyY2UoKSkuc3RvcmVFcnJvcihleGVjLCBlcnJv
cik7CisgICAganNSZWFkYWJsZVN0cmVhbS0+aW1wbCgpLmNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7
Cit9CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUmVhZGFibGVT
dHJlYW1GdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSBlcnJvciA9IGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA/IGV4ZWMtPmFyZ3VtZW50KDApIDogY3JlYXRlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJFcnJvciBmdW5jdGlvbiBjYWxsZWQuIikpOworICAgIGVycm9yRnJv
bVZhbHVlUmVhZGFibGVTdHJlYW0oZXhlYywgZXJyb3IpOwogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTIxMywxMCArMjI5LDExIEBAIGJvb2wgUmVh
ZGFibGVTdHJlYW1KU1NvdXJjZTo6c3RhcnQoKQogCiAgICAgY2FsbEZ1bmN0aW9uKGV4ZWMsIG1f
c3RhcnRGdW5jdGlvbi5nZXQoKSwgYXJndW1lbnRzKTsKIAotICAgIGlmICghbV9lcnJvci5nZXQo
KS5pc1VuZGVmaW5lZCgpKQorICAgIC8vIFRocm93IGlmIHRoZXJlIGlzIGFuIGVycm9yIGV4Y2Vw
dCBpZiBjb21pbmcgZnJvbSBhIG1fZXJyb3JGdW5jdGlvbiBmdW5jdGlvbiBjYWxsLgorICAgIGlm
ICghbV9lcnJvci5nZXQoKS5pc1VuZGVmaW5lZCgpICYmIG1fcmVhZGFibGVTdHJlYW0tPmltcGwo
KS5zdGF0ZSgpICE9ICJlcnJvcmVkIikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8g
RklYTUU6IEltcGxlbWVudCBoYW5kbGluZyBwcm9taXNlIGFzIHJlc3VsdCBvZiBjYWxsaW5nIHN0
YXJ0IGZ1bmN0aW9uCisgICAgLy8gRklYTUU6IEltcGxlbWVudCBoYW5kbGluZyBwcm9taXNlIGFz
IHJlc3VsdCBvZiBjYWxsaW5nIHN0YXJ0IGZ1bmN0aW9uLgogCiAgICAgc3RhcnRSZWFkYWJsZVN0
cmVhbUFzeW5jKCk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmgKaW5kZXggOTlmNjUzNWJjNjkwNzk3
OWM3ZDViY2RlZTJkNmM1ZWE0MDQzMTAxOC4uZTFmY2RlNzY0MmI4NmNiOTFiYTM1NTdhNmI3ZTNj
Y2E5ZTRmYTgyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFi
bGVTdHJlYW1KU1NvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRh
YmxlU3RyZWFtSlNTb3VyY2UuaApAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRTdHJlYW0oSlNDOjpFeGVjU3RhdGUqLCBKU1JlYWRhYmxlU3RyZWFtKik7CiAKICAgICBKU0M6
OkpTVmFsdWUgZXJyb3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgpOyB9CisgICAgdm9pZCBzdG9y
ZUVycm9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlKTsKICAgICBib29sIHN0YXJ0KCk7
CiAKICAgICAvLyBSZWFkYWJsZVN0cmVhbVNvdXJjZSBBUEkuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTZmODA1MjJjYjRk
NGM2YmVjZDFiNTVkM2I0M2YyODY4ODhjN2VmMS4uOTM2YWYyYjFmNTEzN2EwYTY5M2FmNGY3MzYw
ZDc2MWY2MjA1ODllZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAyLTA2ICBYYWJpZXIg
Um9kcmlndWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQg
PHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVh
ZGFibGVTdHJlYW0gY29uc3RydWN0b3IgIHN0YXJ0IGZ1bmN0aW9uIHNob3VsZCBiZSBhYmxlIHRv
IGVycm9yIHRoZSBzdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MTE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1zdGFydC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1zdGFydC5odG1sOgorCiAyMDE1LTAyLTA1
ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbU3RyZWFt
cyBBUEldIFN1cHBvcnQgdGhlIHN0YXJ0IGZ1bmN0aW9uIHBhcmFtZXRlciBpbiBSZWFkYWJsZVN0
cmVhbSBjb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZXN0cmVhbS1zdGFydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxl
c3RyZWFtLXN0YXJ0LWV4cGVjdGVkLnR4dAppbmRleCAwMDA1MDdmNDM2ZWM3MGY3MjAwZjFjM2Ey
NDhkOTc4MjY4OGI0Y2I3Li4yYzdhNGRhOWIxZWQxNGQ3NTA4M2RjNGIwMTkxOWFkM2VkY2U2NDU2
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3RyZWFtLXN0YXJ0LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3RyZWFtLXN0YXJ0
LWV4cGVjdGVkLnR4dApAQCAtMyw0ICszLDUgQEAgUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBz
aG91bGQgYmUgYWJsZSB0byB0aHJvdwogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBz
aG91bGQgZ2V0IGEgZnVuY3Rpb24gYXMgc3RhcnQgIGFyZ3VtZW50IAogUEFTUyBSZWFkYWJsZVN0
cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSB0aGUgc3RyZWFtIAogUEFTUyBSZWFk
YWJsZVN0cmVhbSBjbG9zZSBzaG91bGQgZnVsZmlsbCByZWFkeSBhbmQgY2xvc2VkIHByb21pc2Vz
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSByZWFkaW5nIGFuIGVycm9yZWQgc3RyZWFtIHRocm93cyB0
aGUgc3RvcmVkIGVycm9yIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRh
Ymxlc3RyZWFtLXN0YXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3RyZWFt
LXN0YXJ0Lmh0bWwKaW5kZXggMWJiYjQ3YzE2OTVhM2VjOWMyNjU1ODQ1YWRkMmM0MjE2MmYwMDQ5
Yi4uNjc4MmY5NWQzNWUzY2ZlMDkyODYyYWI2ZThiNDg0ODFmYzIzMGZhYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1zdGFydC5odG1sCisrKyBiL0xheW91
dFRlc3RzL3N0cmVhbXMvcmVhZGFibGVzdHJlYW0tc3RhcnQuaHRtbApAQCAtNjIsNSArNjIsMTcg
QEAgdGVzdDIuc3RlcChmdW5jdGlvbigpCiAgICAgfSk7CiB9KTsKIAotPC9zY3JpcHQ+Cit0ZXN0
KGZ1bmN0aW9uKCkgeworICAgIHZhciBwYXNzZWRFcnJvciA9IG5ldyBFcnJvcignYWFhdWdoISEn
KTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVu
Y3Rpb24oZW5xdWV1ZSwgY2xvc2UsIGVycm9yKSB7CisgICAgICAgICAgICBlcnJvcihwYXNzZWRF
cnJvcik7CisgICAgICAgIH0KKyAgICB9KTsKKyAgICBhc3NlcnRfZXF1YWxzKHJzLnN0YXRlLCAn
ZXJyb3JlZCcpOworICAgIGFzc2VydF90aHJvd3MocGFzc2VkRXJyb3IsIGZ1bmN0aW9uKCkgewor
ICAgICAgICBycy5yZWFkKCk7CisgICAgfSk7Cit9LCAnUmVhZGFibGVTdHJlYW0gcmVhZGluZyBh
biBlcnJvcmVkIHN0cmVhbSB0aHJvd3MgdGhlIHN0b3JlZCBlcnJvcicpOwogCis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248074</attachid>
            <date>2015-03-06 10:00:15 -0800</date>
            <delta_ts>2015-03-09 10:57:39 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-141162-20150306185954.patch</filename>
            <type>text/plain</type>
            <size>13597</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwOTUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjQ3ODNiMTFmM2Y2OTQ1
OTIxNTYxMTkyMjkyZGQzNWM5ZWMyMjVmYS4uOWNhNTk5MjA4ZjY0YTJiYWZiNGRiYTM4MGQ4NDA3
MDBkNWU4ZWE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE1LTAzLTA2ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJ
XSBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciAgc3RhcnQgZnVuY3Rpb24gc2hvdWxkIGJlIGFi
bGUgdG8gZXJyb3IgdGhlIHN0cmVhbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQxMTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2FsbGluZyBlcnJvciBjYWxsYmFjayBmcm9tIHRoZSBKUyBzdGFydCBm
dW5jdGlvbi4KKyAgICAgICAgUmVqZWN0aW5nIGNsb3NlZCBwcm9taXNlIHdoZW4gcmVhZGFibGVz
dHJlYW0gaXMgZXJyb3JlZC4KKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgdG8gcmVqZWN0IHByb21p
c2Ugd2l0aCBhbnkgSlNWYWx1ZS4KKyAgICAgICAgQWRkZWQgaXNKUyB0byBSZWFkYWJsZVN0cmVh
bVNvdXJjZSBzbyB0aGF0IEpTUmVhZGFibGVTdHJlYW0gY2FuIGdldCBhY2Nlc3MgdG8gbW9yZSBt
ZWFuaW5nZnVsIGVycm9ycyAoZ2VuZXJpYyBKU1ZhbHVlKSAKKyAgICAgICAgaW5zdGVhZCBvZiBT
dHJpbmdzIHdpdGhvdXQgdGhlIEpTVmFsdWUgdG8gdHJhbnNpdCB0aHJvdWdoIFJlYWRhYmxlU3Ry
ZWFtLgorCisgICAgICAgIFBhdGNoIGlzIGNvdmVyZWQgYnkgYWRkZWQgdGVzdCBpbiByZWFkYWJs
ZXN0cmVhbS1zdGFydC5odG1sLgorCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpyZWplY3RDbG9z
ZWRDYWxsYmFjayk6IENhbGxlZCB3aGVuIGdvaW5nIHRvIGVycm9yIHN0YXRlLgorICAgICAgICAo
V2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNsb3NlZCk6IFN1cHBvcnQgb2YgdGhlIHJlamVjdCBj
YWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRv
RXJyb3JlZCk6IFB1dCB0aGUgc3RyZWFtIGluIGVycm9yIHN0YXRlIGFuZCBjYWxscyByZWxhdGVk
IGNhbGxiYWNrcy4KKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjppc0Vycm9yZWQpOiBTdGF0ZXMgd2hl
dGhlciBlcnJvcmVkIG9yIG50by4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpz
b3VyY2UpOiBBY2Nlc3MgdG8gdGhlIHNvdXJjZS4gVGhpcyBpcyB1c2VkIHRvIHJldHJpZXZlIHRo
ZSBzb3VyY2UgZnJvbSBSZWFkYWJsZVN0cmVhbSBKUyBmdW5jdGlvbnMgKGNsb3NlLCBlbnF1ZXVl
LCBlcnJvcikKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2Uu
aDogQWRkaW5nIGFiaWxpdHkgdG8ga25vdyB3aGV0aGVyIHRoZSBzb3VyY2UgaXMgSlMgb3Igbm90
IGFuZCBnZXQgZXJyb3IgZGVzY3JpcHRpb24gZGlyZWN0bHkgZnJvbSB0aGUgc291cmNlLgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGVm
ZXJyZWRXcmFwcGVyOjpyZWplY3QpOiBBZGRlZCByZWplY3Rpb24gb2YgSlNWYWx1ZS4KKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTUmVhZGFibGVTdHJlYW06OmNsb3NlZCk6IFN1cHBvcnQgb2YgdGhlIHJlamVjdCBj
YWxsYmFjay4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtSlNTb3VyY2U6OnN0b3JlRXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1KU1NvdXJjZTo6ZXJyb3JEZXNjcmlw
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjplcnJvclJlYWRhYmxlU3RyZWFtRnVuY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1KU1NvdXJjZTo6c3RhcnQpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaDoKKwogMjAxNS0wMy0wMyAg
QW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBm
aXggdGhlIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbS5jcHAKaW5kZXggMjhiZWJiODFmOWMyYTU5NDE5Mzk1MThiNGFiNDljOTY2ODE3
NWRjMy4uODE5YjQ2YWZmYThhYTI5ZDRiYjViMDE4NWQ3ZWUwNGY1Mzg3NmJkYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCkBAIC04
OSwxMSArODksMjMgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVzb2x2ZUNsb3NlZENhbGxiYWNr
KCkKICAgICBBU1NFUlQoIW1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrKTsKIH0KIAotdm9pZCBSZWFk
YWJsZVN0cmVhbTo6Y2xvc2VkKFN1Y2Nlc3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2spCit2b2lk
IFJlYWRhYmxlU3RyZWFtOjpyZWplY3RDbG9zZWRDYWxsYmFjaygpCit7CisgICAgQVNTRVJUKG1f
c3RhdGUgPT0gU3RhdGU6OkVycm9yZWQpOworICAgIGlmICghbV9jbG9zZWRFcnJvckNhbGxiYWNr
KQorICAgICAgICByZXR1cm47CisgICAgY2FsbE9uTWFpblRocmVhZChzdGQ6OmJpbmQoV1RGOjpt
b3ZlKG1fY2xvc2VkRXJyb3JDYWxsYmFjaykpKTsKKyAgICBBU1NFUlQoIW1fY2xvc2VkRXJyb3JD
YWxsYmFjayk7Cit9CisKK3ZvaWQgUmVhZGFibGVTdHJlYW06OmNsb3NlZChTdWNjZXNzQ2FsbGJh
Y2sgc3VjY2Vzc0NhbGxiYWNrLCBFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spCiB7CiAgICAg
bV9jbG9zZWRTdWNjZXNzQ2FsbGJhY2sgPSBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKTsKKyAg
ICBtX2Nsb3NlZEVycm9yQ2FsbGJhY2sgPSBXVEY6Om1vdmUoZXJyb3JDYWxsYmFjayk7CiAgICAg
aWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkKICAgICAgICAgcmVzb2x2ZUNsb3NlZENhbGxi
YWNrKCk7CisgICAgZWxzZSBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCkKKyAgICAgICAg
cmVqZWN0Q2xvc2VkQ2FsbGJhY2soKTsKIH0KIAogdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdl
U3RhdGVUb0Nsb3NlZCgpCkBAIC0xMDYsNiArMTE4LDEzIEBAIHZvaWQgUmVhZGFibGVTdHJlYW06
OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQogICAgIC8vIEZJWE1FOiBIYW5kbGUgU3RhdGU6OlJlYWRh
YmxlIHdoZW4gZW5xdWV1ZSBpcyBzdXBwb3J0ZWQuCiB9CiAKK3ZvaWQgUmVhZGFibGVTdHJlYW06
OmNoYW5nZVN0YXRlVG9FcnJvcmVkKCkKK3sKKyAgICBtX3N0YXRlID0gU3RhdGU6OkVycm9yZWQ7
CisgICAgcmVzb2x2ZVJlYWR5Q2FsbGJhY2soKTsKKyAgICByZWplY3RDbG9zZWRDYWxsYmFjaygp
OworfQorCiB2b2lkIFJlYWRhYmxlU3RyZWFtOjpyZXNvbHZlUmVhZHlDYWxsYmFjaygpCiB7CiAg
ICAgQVNTRVJUKG1fc3RhdGUgIT0gU3RhdGU6OldhaXRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAppbmRleCBiNGVmZTBhZjdiMTc1Njk2
MTBjMTIxMTFmMDBjNTI1ZDE5NzRjMTcxLi4zOTNiYmY0Y2M5MjVmMTI1Y2YzYzAxZTcwNDE4ZjQw
YmU4MmZjNTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFi
bGVTdHJlYW0uaApAQCAtNjIsMTggKzYyLDI2IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc3RhdGUo
KSBjb25zdDsKIAogICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IFN1Y2Nlc3NDYWxs
YmFjazsKLSAgICB2b2lkIGNsb3NlZChTdWNjZXNzQ2FsbGJhY2spOworICAgIHR5cGVkZWYgc3Rk
OjpmdW5jdGlvbjx2b2lkKCk+IEVycm9yQ2FsbGJhY2s7CisKKyAgICB2b2lkIGNsb3NlZChTdWNj
ZXNzQ2FsbGJhY2ssIEVycm9yQ2FsbGJhY2spOwogICAgIHZvaWQgcmVhZHkoU3VjY2Vzc0NhbGxi
YWNrKTsKIAorICAgIGJvb2wgaXNFcnJvcmVkKCkgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6
RXJyb3JlZDsgfQorCiAgICAgLy8gQVBJIHVzZWQgZnJvbSB0aGUgSlMgYmluZGluZy4KICAgICB2
b2lkIHN0YXJ0KCk7CiAKICAgICB2b2lkIGNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKKyAgICB2b2lk
IGNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7CisKKyAgICBSZWFkYWJsZVN0cmVhbVNvdXJjZSYgc291
cmNlKCkgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBSZWFkYWJs
ZVN0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPFJlYWRhYmxlU3RyZWFtU291cmNl
PiYmKTsKICAgICB2b2lkIHJlc29sdmVDbG9zZWRDYWxsYmFjaygpOwogICAgIHZvaWQgcmVzb2x2
ZVJlYWR5Q2FsbGJhY2soKTsKKyAgICB2b2lkIHJlamVjdENsb3NlZENhbGxiYWNrKCk7CiAKICAg
ICAvLyBBY3RpdmVET01PYmplY3QgQVBJLgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVj
dE5hbWUoKSBjb25zdCBvdmVycmlkZTsKQEAgLTgyLDggKzkwLDkgQEAgcHJpdmF0ZToKICAgICBT
dGF0ZSBtX3N0YXRlOwogICAgIFJlZjxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gbV9zb3VyY2U7CiAK
LSAgICAvLyBGSVhNRTogQWRkIGNsb3NlZCBlcnJvciBjYWxsYmFjay4KICAgICBTdWNjZXNzQ2Fs
bGJhY2sgbV9jbG9zZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgRXJyb3JDYWxsYmFjayBtX2Nsb3Nl
ZEVycm9yQ2FsbGJhY2s7CisKICAgICBTdWNjZXNzQ2FsbGJhY2sgbV9yZWFkeUNhbGxiYWNrOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW1Tb3VyY2UuaAppbmRleCAzZWFmOWFjMzdjZWQyM2E4YTUxN2Y2OWU5ZGU3ZjJiOTliN2U4
NGY4Li4xZDgzOTA4N2ExZmYzOGVmYzZkNDM3NmFiZmY5ZWNhNGZhMzk1MjNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2Uu
aApAQCAtNTcsNiArNTcsMTEgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBp
c0Vycm9yZWQoKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCBjb25zdCBTdHJpbmcm
IGVycm9yRGVzY3JpcHRpb24oKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNKUygpIHsgcmV0
dXJuIGZhbHNlOyB9CisKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmgKaW5kZXggZDBmNzVkMjJlMzIxNTg1MzZkM2ZlODQxYmY0OTliYmIxODhhNGM5NS4u
M2RjMDViNzQ4MjAxYzdkNTZiN2ZjMDQ2OGY4MmNmNTljYWMyY2MzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTgyLDYgKzgyLDE0IEBAIGlubGluZSB2
b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikKIH0KIAog
dGVtcGxhdGU8PgoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3QoY29uc3QgSlND
OjpKU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMp
OworICAgIHJlamVjdChleGVjLCB2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPD4KIGlubGluZSB2b2lk
IERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZTxTdHJpbmc+KGNvbnN0IFN0cmluZyYgcmVzdWx0KQog
ewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJl
YW1DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVh
bUN1c3RvbS5jcHAKaW5kZXggMzYyZDk3NzMyMGNlZWUwZDllN2ViMmU3Yzg3OTRiYThkMWU5N2Ey
MC4uNzRkZjQ4YmIyODJmMjU3MjI0NjRiMDUwMmZkNTY1MzFiYWI1MzU5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAK
QEAgLTkxLDcgKzkxLDEyIEBAIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKICAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFwcGVyXSgp
IG11dGFibGUgewogICAgICAgICB3cmFwcGVyLnJlc29sdmUoanNVbmRlZmluZWQoKSk7CiAgICAg
fTsKLSAgICBpbXBsKCkuY2xvc2VkKFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spKTsKKyAgICBh
dXRvIGZhaWx1cmVDYWxsYmFjayA9IFt0aGlzLCB3cmFwcGVyXSgpIG11dGFibGUgeworICAgICAg
ICBKU1ZhbHVlIGVycm9yID0gaW1wbCgpLnNvdXJjZSgpLmlzSlMoKSA/IHN0YXRpY19jYXN0PFJl
YWRhYmxlU3RyZWFtSlNTb3VyY2UmPihpbXBsKCkuc291cmNlKCkpLmVycm9yKCkgOiBjcmVhdGVF
cnJvcihnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbXBsKCkuc291cmNlKCkuZXJyb3JE
ZXNjcmlwdGlvbigpKTsKKyAgICAgICAgd3JhcHBlci5yZWplY3QoZXJyb3IpOworICAgIH07CisK
KyAgICBpbXBsKCkuY2xvc2VkKFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUo
ZmFpbHVyZUNhbGxiYWNrKSk7CiAKICAgICByZXR1cm4gd3JhcHBlci5wcm9taXNlKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3Vy
Y2UuY3BwCmluZGV4IDdhY2M3MDQ3MDViYWJiNzVjMjA1YmQ1ZWY2ZDYwNTBjMjAyZTMzOTQuLjEw
YWQ4MGFlNTA0MTE3NDhiOWI5MGIyMDIwNDhlNGU2N2EwNmU0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwCkBAIC0x
MjQsNiArMTI0LDIwIEBAIHZvaWQgUmVhZGFibGVTdHJlYW1KU1NvdXJjZTo6c2V0SW50ZXJuYWxF
cnJvcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nCiAgICAgbV9lcnJvci5zZXQo
ZXhlYy0+dm0oKSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKIH0KIAordm9pZCBS
ZWFkYWJsZVN0cmVhbUpTU291cmNlOjpzdG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGVycm9yKQoreworICAgIG1fZXJyb3Iuc2V0KGV4ZWMtPnZtKCksIGVycm9yKTsKK30K
KworY29uc3QgU3RyaW5nJiBSZWFkYWJsZVN0cmVhbUpTU291cmNlOjplcnJvckRlc2NyaXB0aW9u
KCkKK3sKKyAgICBpZiAoIW1fZXJyb3JEZXNjcmlwdGlvbiAmJiBtX2Vycm9yKSB7CisgICAgICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IG1fcmVhZGFibGVTdHJlYW0tPmdsb2JhbE9iamVjdCgpLT5nbG9i
YWxFeGVjKCk7CisgICAgICAgIG1fZXJyb3JEZXNjcmlwdGlvbiA9IG1fZXJyb3IuZ2V0KCkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIH0KKyAgICByZXR1cm4gbV9lcnJvckRlc2Ny
aXB0aW9uOworfQorCiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlbnF1ZXVl
UmVhZGFibGVTdHJlYW1GdW5jdGlvbihFeGVjU3RhdGUqKQogewogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcyBtZXRob2QuCkBAIC0xNDgsMTAgKzE2MiwxMiBAQCBzdGF0aWMgSlNGdW5jdGlv
biogY3JlYXRlUmVhZGFibGVTdHJlYW1DbG9zZUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmNhbGxlZSgpLT5n
bG9iYWxPYmplY3QoKSwgMCwgQVNDSUlMaXRlcmFsKCJDcmVhdGVSZWFkYWJsZVN0cmVhbUNsb3Nl
RnVuY3Rpb24iKSwgY2xvc2VSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKEV4
ZWNTdGF0ZSopCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclJlYWRh
YmxlU3RyZWFtRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjKQogewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgdGhpcyBtZXRob2QuCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBKU1ZhbHVlIGVy
cm9yID0gZXhlYy0+YXJndW1lbnRDb3VudCgpID8gZXhlYy0+YXJndW1lbnQoMCkgOiBjcmVhdGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9yIGZ1bmN0aW9uIGNhbGxlZC4iKSk7CisgICAg
SlNSZWFkYWJsZVN0cmVhbSoganNSZWFkYWJsZVN0cmVhbSA9IGdldEpTUmVhZGFibGVTdHJlYW0o
ZXhlYyk7CisgICAgc3RhdGljX2Nhc3Q8UmVhZGFibGVTdHJlYW1KU1NvdXJjZSY+KGpzUmVhZGFi
bGVTdHJlYW0tPmltcGwoKS5zb3VyY2UoKSkuc3RvcmVFcnJvcihleGVjLCBlcnJvcik7CisgICAg
anNSZWFkYWJsZVN0cmVhbS0+aW1wbCgpLmNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIApAQCAtMjAzLDcgKzIxOSw4
IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1KU1NvdXJjZTo6c3RhcnQoSlNDOjpFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICBjYWxsRnVuY3Rpb24oZXhlYywgc3RhcnRGdW5jdGlvbiwgbV9yZWFkYWJsZVN0
cmVhbSwgYXJndW1lbnRzKTsKIAotICAgIGlmIChtX2Vycm9yKSB7CisgICAgLy8gVGhyb3cgZXhj
ZXB0IGlmIG1fZXJyb3JGdW5jdGlvbiB3YXMgY2FsbGVkLgorICAgIGlmIChtX2Vycm9yICYmICFt
X3JlYWRhYmxlU3RyZWFtLT5pbXBsKCkuaXNFcnJvcmVkKCkpIHsKICAgICAgICAgdGhyb3dWTUVy
cm9yKGV4ZWMsIG1fZXJyb3IuZ2V0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5oCmlu
ZGV4IGZiYjQyZTczMjA2YzkzMWFmODEyMGIwN2M5MjQyYmI2MWM4Y2VlNGEuLjRlOWU5OTVhNDAz
YTkyMzY0MzNiYjg2MjdhOTY0NTQxZGMxODViMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmgKQEAgLTUyLDEwICs1MiwxMyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdHJlYW0oSlNDOjpFeGVjU3RhdGUqLCBKU1JlYWRhYmxl
U3RyZWFtKik7CiAKICAgICBKU0M6OkpTVmFsdWUgZXJyb3IoKSB7IHJldHVybiBtX2Vycm9yLmdl
dCgpOyB9CisgICAgdm9pZCBzdG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
KTsKICAgICB2b2lkIHN0YXJ0KEpTQzo6RXhlY1N0YXRlKik7CiAKICAgICAvLyBSZWFkYWJsZVN0
cmVhbVNvdXJjZSBBUEkuCiAgICAgdmlydHVhbCBib29sIGlzRXJyb3JlZCgpIHsgcmV0dXJuIG1f
ZXJyb3I7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNKUygpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2
aXJ0dWFsIGNvbnN0IFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbigpOwogCiBwcml2YXRlOgogICAg
IHZvaWQgc2V0SW50ZXJuYWxFcnJvcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpOwpA
QCAtNjYsNiArNjksNyBAQCBwcml2YXRlOgogCiAgICAgLy8gbV9lcnJvciBtYXkgYmUgYW4gZXJy
b3IgZ2VuZXJhdGVkIGZyb20gUmVhZGFibGVTdHJlYW1KU1NvdXJjZSBvciBmcm9tIEpTIGNhbGxi
YWNrcy4KICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fZXJyb3I7CisgICAgU3RyaW5n
IG1fZXJyb3JEZXNjcmlwdGlvbjsKICAgICBKU1JlYWRhYmxlU3RyZWFtKiBtX3JlYWRhYmxlU3Ry
ZWFtIHsgbnVsbHB0ciB9OwogCiAgICAgLy8gT2JqZWN0IHBhc3NlZCB0byBjb25zdHJ1Y3Rvci4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4N2QzZDRkMTBlNDY1ZjgzMWU3OTU3NTM1ZGE0NjE2MWNmNWNiYzNkLi40Yjc4NjRj
MGJiZTAxNWZjMzlmMDI4NmZlY2Q4YmYyYzc3YWUwNGI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMTUtMDMtMDYgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNv
bT4gYW5kIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAg
ICAgICBbU3RyZWFtcyBBUEldIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yICBzdGFydCBmdW5j
dGlvbiBzaG91bGQgYmUgYWJsZSB0byBlcnJvciB0aGUgc3RyZWFtCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExNjIKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGVzdHJlYW0t
c3RhcnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGVzdHJlYW0tc3Rh
cnQuaHRtbDoKKwogMjAxNS0wMy0wMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgVGVzdCBsZWdhY3kgZXZlbnQgaGFuZGxlciBhdHRyaWJ1dGVzIChvbmVzIHdpdGgg
bmFtZXMgbGlrZSAib25jbGljayIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlc3RyZWFtLXN0YXJ0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVh
ZGFibGVzdHJlYW0tc3RhcnQtZXhwZWN0ZWQudHh0CmluZGV4IGUxZjBiODM3ZDE5OGY0M2E1YTg5
ZmJhOTlhZmQ2M2JkY2FkYWExZWYuLjYyMDA2ZGUwMmU4NmE2M2UzNjU4ZTc5OWE2NTdiYjRlYTlk
NWNjYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGVzdHJlYW0tc3Rh
cnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGVzdHJlYW0t
c3RhcnQtZXhwZWN0ZWQudHh0CkBAIC00LDQgKzQsNSBAQCBQQVNTIFJlYWRhYmxlU3RyZWFtIHN0
YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHRocm93CiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVj
dG9yIHNob3VsZCBnZXQgYSBmdW5jdGlvbiBhcyBzdGFydCBhcmd1bWVudCAKIFBBU1MgUmVhZGFi
bGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gY2xvc2UgdGhlIHN0cmVhbSAKIFBBU1Mg
UmVhZGFibGVTdHJlYW0gY2xvc2Ugc2hvdWxkIGZ1bGZpbGwgcmVhZHkgYW5kIGNsb3NlZCBwcm9t
aXNlcyAKK1BBU1MgUmVhZGFibGVTdHJlYW0gY2xvc2Ugc2hvdWxkIGZ1bGZpbGwgcmVhZHkgYW5k
IGNsb3NlZCBwcm9taXNlcyAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFk
YWJsZXN0cmVhbS1zdGFydC5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZXN0cmVh
bS1zdGFydC5odG1sCmluZGV4IDQ3MGNhZDAxNTI5NTUxY2E2YmY4MTM5NTUzMTFkZTczNDFhMmUy
MDEuLjk1N2E4YmQyOTZjYjFlZTViMWFmZDg2MGM5NjFiMzc4Y2FkMWUyMDcgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGVzdHJlYW0tc3RhcnQuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3RyZWFtLXN0YXJ0Lmh0bWwKQEAgLTc0LDQgKzc0LDM0
IEBAIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKQogICAgIH0pKTsKIH0pOwogCit0ZXN0MiA9IGFzeW5j
X3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGNsb3NlIHNob3VsZCBmdWxmaWxsIHJlYWR5IGFuZCBjbG9z
ZWQgcHJvbWlzZXMnKTsKK3Rlc3QyLnN0ZXAoZnVuY3Rpb24oKQoreworICAgIHZhciBwYXNzZWRF
cnJvciA9IG5ldyBFcnJvcignYWF1Z2ghIScpOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0
cmVhbSgKKyAgICB7IHN0YXJ0OgorICAgICAgICBmdW5jdGlvbihlbnF1ZXVlLCBjbG9zZSwgZXJy
b3IpIHsKKyAgICAgICAgICAgIGVycm9yKHBhc3NlZEVycm9yKTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgdmFyIHJlYWR5RG9uZSA9IGZhbHNlOworICAgIHJzLnJlYWR5LnRoZW4oZnVuY3Rp
b24odikgeworICAgICAgICByZWFkeURvbmUgPSB0cnVlOworICAgICAgICBhc3NlcnRfZXF1YWxz
KHR5cGVvZiB2LCAndW5kZWZpbmVkJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocnMuc3RhdGUs
ICdlcnJvcmVkJyk7CisgICAgfSk7CisKKyAgICBycy5jbG9zZWQudGhlbigKKyAgICB0ZXN0Mi5z
dGVwX2Z1bmMoZnVuY3Rpb24odikgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdjbG9zZWQg
cHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKKyAgICB9KSwKKyAgICB0ZXN0Mi5zdGVwX2Z1
bmMoZnVuY3Rpb24oZXJyb3IpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFkeURvbmUsIHRy
dWUpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGVycm9yLCBwYXNzZWRFcnJvcik7CisgICAgICAg
IGFzc2VydF9lcXVhbHMocnMuc3RhdGUsICdlcnJvcmVkJyk7CisgICAgICAgIHRlc3QyLmRvbmUo
KTsKKyAgICB9KSk7Cit9KTsKKwogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248257</attachid>
            <date>2015-03-09 10:57:45 -0700</date>
            <delta_ts>2015-03-11 21:18:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141162-20150309185721.patch</filename>
            <type>text/plain</type>
            <size>16307</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc1MzA0YTc3YTVhODA4
MTA2Yzg2ZmE5NDU1OGQ3YmFlNjQ5MDE0YS4uOWQ1Y2RhZjQ0MGQwOWU2MjYwODg1YzRlMzY2ZmU0
NzYwZmVjNTljNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDE1LTAzLTA2ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJ
XSBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzdGFydCBmdW5jdGlvbiBzaG91bGQgYmUgYWJs
ZSB0byBlcnJvciB0aGUgc3RyZWFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDExNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGVycm9y
IGZ1bmN0aW9uIHBhc3NlZCBhcyBwYXJhbWV0ZXIgdG8gdGhlICJzdGFydCIgZnVuY3Rpb24gb2Yg
dGhlIEpTIHNvdXJjZS4KKyAgICAgICAgSXQgYmFzaWNhbGx5IGNoYW5nZXMgdGhlIHN0YXRlIG9m
IHRoZSBzdHJlYW0gdG8gZXJyb3JlZCwgcmVzb2x2ZXMgdGhlIHJlYWR5IHByb21pc2UgYW5kIHJl
amVjdHMgdGhlIGNsb3NlZCBwcm9taXNlLgorCisgICAgICAgIEFkZGluZyBzdXBwb3J0IHRvIHJl
amVjdCBwcm9taXNlIHdpdGggYW55IEpTVmFsdWUuCisgICAgICAgIEFkZGVkIGlzSlMgdG8gUmVh
ZGFibGVTdHJlYW1Tb3VyY2Ugc28gdGhhdCBKU1JlYWRhYmxlU3RyZWFtIGNhbiBnZXQgYWNjZXNz
IHRvIG1vcmUgbWVhbmluZ2Z1bCBlcnJvcnMgKGdlbmVyaWMgSlNWYWx1ZSkgCisgICAgICAgIGlu
c3RlYWQgb2YgU3RyaW5ncyB3aXRob3V0IHRoZSBKU1ZhbHVlIHRvIHRyYW5zaXQgdGhyb3VnaCBS
ZWFkYWJsZVN0cmVhbS4KKworICAgICAgICBQYXRjaCBpcyBjb3ZlcmVkIGJ5IGFkZGVkIHRlc3Rz
IGluIHJlYWRhYmxlc3RyZWFtLXN0YXJ0Lmh0bWwuCisKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06
OnJlamVjdENsb3NlZENhbGxiYWNrKTogQ2FsbGVkIHdoZW4gZ29pbmcgdG8gZXJyb3Igc3RhdGUu
CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKTogU3VwcG9ydCBvZiB0
aGUgcmVqZWN0IGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmNo
YW5nZVN0YXRlVG9FcnJvcmVkKTogUHV0IHRoZSBzdHJlYW0gaW4gZXJyb3Igc3RhdGUgYW5kIGNh
bGxzIHJlbGF0ZWQgY2FsbGJhY2tzLgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06OmlzRXJyb3JlZCk6
IFN0YXRlcyB3aGV0aGVyIGVycm9yZWQgb3IgbnRvLgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFi
bGVTdHJlYW06OnNvdXJjZSk6IEFjY2VzcyB0byB0aGUgc291cmNlLiBUaGlzIGlzIHVzZWQgdG8g
cmV0cmlldmUgdGhlIHNvdXJjZSBmcm9tIFJlYWRhYmxlU3RyZWFtIEpTIGZ1bmN0aW9ucyAoY2xv
c2UsIGVucXVldWUsIGVycm9yKQorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVNvdXJjZS5oOiBBZGRpbmcgYWJpbGl0eSB0byBrbm93IHdoZXRoZXIgdGhlIHNvdXJjZSBp
cyBKUyBvciBub3QgYW5kIGdldCBlcnJvciBkZXNjcmlwdGlvbiBkaXJlY3RseSBmcm9tIHRoZSBz
b3VyY2UuCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlamVjdCk6IEFkZGVkIHJlamVjdGlvbiBvZiBKU1Zh
bHVlLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKTogU3VwcG9ydCBvZiB0
aGUgcmVqZWN0IGNhbGxiYWNrLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFt
SlNTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1KU1NvdXJjZTo6
c3RvcmVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbUpTU291cmNlOjpl
cnJvckRlc2NyaXB0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmVycm9yUmVhZGFibGVTdHJlYW1G
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbUpTU291cmNlOjpzdGFy
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5oOgorCiAy
MDE1LTAzLTA5ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4g
YW5kIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KIAogICAgICAg
ICBSZWFkYWJsZVN0cmVhbUpTU291cmNlIHNob3VsZCB1c2UgSlNDOjpTdHJvbmcgVW5zcGVjaWZp
ZWRCb29sVHlwZSBvcGVyYXRvcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggOGQwNWM2YzI0Y2UzMTI1NWVjMTY3NjdhNWRhZjRh
ZWMxOWNjMTE0ZC4uMGNiNjk3YWZlMWFiMmEwNjc4OTdhNjY2ZDdiZGNlZjg2NTMwYzA2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3Bw
CkBAIC05MywxMSArOTMsMjUgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVzb2x2ZUNsb3NlZENh
bGxiYWNrKCkKICAgICB9KTsKIH0KIAotdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKFN1Y2Nl
c3NDYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2spCit2b2lkIFJlYWRhYmxlU3RyZWFtOjpyZWplY3RD
bG9zZWRDYWxsYmFjaygpCit7CisgICAgQVNTRVJUKG1fc3RhdGUgPT0gU3RhdGU6OkVycm9yZWQp
OworICAgIGlmICghbV9jbG9zZWRFcnJvckNhbGxiYWNrKQorICAgICAgICByZXR1cm47CisgICAg
U3VjY2Vzc0NhbGxiYWNrIGNsb3NlZEVycm9yQ2FsbGJhY2sgPSBXVEY6Om1vdmUobV9jbG9zZWRF
cnJvckNhbGxiYWNrKTsKKyAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFtj
bG9zZWRFcnJvckNhbGxiYWNrXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgICAgICBj
bG9zZWRFcnJvckNhbGxiYWNrKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgUmVhZGFibGVTdHJlYW06
OmNsb3NlZChTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBFcnJvckNhbGxiYWNrIGVy
cm9yQ2FsbGJhY2spCiB7CiAgICAgbV9jbG9zZWRTdWNjZXNzQ2FsbGJhY2sgPSBXVEY6Om1vdmUo
c3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBtX2Nsb3NlZEVycm9yQ2FsbGJhY2sgPSBXVEY6Om1vdmUo
ZXJyb3JDYWxsYmFjayk7CiAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNsb3NlZCkKICAgICAg
ICAgcmVzb2x2ZUNsb3NlZENhbGxiYWNrKCk7CisgICAgZWxzZSBpZiAobV9zdGF0ZSA9PSBTdGF0
ZTo6RXJyb3JlZCkKKyAgICAgICAgcmVqZWN0Q2xvc2VkQ2FsbGJhY2soKTsKIH0KIAogdm9pZCBS
ZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpCkBAIC0xMTAsNiArMTI0LDE1IEBA
IHZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQogICAgIC8vIEZJWE1F
OiBIYW5kbGUgU3RhdGU6OlJlYWRhYmxlIHdoZW4gZW5xdWV1ZSBpcyBzdXBwb3J0ZWQuCiB9CiAK
K3ZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9FcnJvcmVkKCkKK3sKKyAgICBpZiAo
bV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCB8fCBtX3N0YXRlID09IFN0YXRlOjpDbG9zZWQpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkVycm9yZWQ7CisgICAgcmVzb2x2
ZVJlYWR5Q2FsbGJhY2soKTsKKyAgICByZWplY3RDbG9zZWRDYWxsYmFjaygpOworfQorCiB2b2lk
IFJlYWRhYmxlU3RyZWFtOjpyZXNvbHZlUmVhZHlDYWxsYmFjaygpCiB7CiAgICAgQVNTRVJUKG1f
c3RhdGUgIT0gU3RhdGU6OldhaXRpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW0uaAppbmRleCBiNGVmZTBhZjdiMTc1Njk2MTBjMTIxMTFmMDBj
NTI1ZDE5NzRjMTcxLi4zOTNiYmY0Y2M5MjVmMTI1Y2YzYzAxZTcwNDE4ZjQwYmU4MmZjNTU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaApA
QCAtNjIsMTggKzYyLDI2IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgc3RhdGUoKSBjb25zdDsKIAog
ICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2b2lkKCk+IFN1Y2Nlc3NDYWxsYmFjazsKLSAgICB2
b2lkIGNsb3NlZChTdWNjZXNzQ2FsbGJhY2spOworICAgIHR5cGVkZWYgc3RkOjpmdW5jdGlvbjx2
b2lkKCk+IEVycm9yQ2FsbGJhY2s7CisKKyAgICB2b2lkIGNsb3NlZChTdWNjZXNzQ2FsbGJhY2ss
IEVycm9yQ2FsbGJhY2spOwogICAgIHZvaWQgcmVhZHkoU3VjY2Vzc0NhbGxiYWNrKTsKIAorICAg
IGJvb2wgaXNFcnJvcmVkKCkgeyByZXR1cm4gbV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZDsgfQor
CiAgICAgLy8gQVBJIHVzZWQgZnJvbSB0aGUgSlMgYmluZGluZy4KICAgICB2b2lkIHN0YXJ0KCk7
CiAKICAgICB2b2lkIGNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKKyAgICB2b2lkIGNoYW5nZVN0YXRl
VG9FcnJvcmVkKCk7CisKKyAgICBSZWFkYWJsZVN0cmVhbVNvdXJjZSYgc291cmNlKCkgeyByZXR1
cm4gbV9zb3VyY2UuZ2V0KCk7IH0KIAogcHJpdmF0ZToKICAgICBSZWFkYWJsZVN0cmVhbShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgUmVmPFJlYWRhYmxlU3RyZWFtU291cmNlPiYmKTsKICAgICB2
b2lkIHJlc29sdmVDbG9zZWRDYWxsYmFjaygpOwogICAgIHZvaWQgcmVzb2x2ZVJlYWR5Q2FsbGJh
Y2soKTsKKyAgICB2b2lkIHJlamVjdENsb3NlZENhbGxiYWNrKCk7CiAKICAgICAvLyBBY3RpdmVE
T01PYmplY3QgQVBJLgogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25z
dCBvdmVycmlkZTsKQEAgLTgyLDggKzkwLDkgQEAgcHJpdmF0ZToKICAgICBTdGF0ZSBtX3N0YXRl
OwogICAgIFJlZjxSZWFkYWJsZVN0cmVhbVNvdXJjZT4gbV9zb3VyY2U7CiAKLSAgICAvLyBGSVhN
RTogQWRkIGNsb3NlZCBlcnJvciBjYWxsYmFjay4KICAgICBTdWNjZXNzQ2FsbGJhY2sgbV9jbG9z
ZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAgRXJyb3JDYWxsYmFjayBtX2Nsb3NlZEVycm9yQ2FsbGJh
Y2s7CisKICAgICBTdWNjZXNzQ2FsbGJhY2sgbV9yZWFkeUNhbGxiYWNrOwogfTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2Uu
aAppbmRleCAzZWFmOWFjMzdjZWQyM2E4YTUxN2Y2OWU5ZGU3ZjJiOTliN2U4NGY4Li40M2I1ZjYy
NWUxZDNmNjNmNjJkNmE3ZjJlMjU0ZmQyNTk5M2JlMWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Tb3VyY2UuaApAQCAtNTcsNiAr
NTcsMTEgQEAgcHVibGljOgogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0Vycm9yZWQoKSB7
IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGVycm9yRGVzY3Jp
cHRpb24oKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNKUygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CisKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NUHJvbWlzZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Q
cm9taXNlLmgKaW5kZXggZDBmNzVkMjJlMzIxNTg1MzZkM2ZlODQxYmY0OTliYmIxODhhNGM5NS4u
M2RjMDViNzQ4MjAxYzdkNTZiN2ZjMDQ2OGY4MmNmNTljYWMyY2MzZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKQEAgLTgyLDYgKzgyLDE0IEBAIGlubGluZSB2
b2lkIERlZmVycmVkV3JhcHBlcjo6cmVqZWN0KGNvbnN0IHN0ZDo6bnVsbHB0cl90JikKIH0KIAog
dGVtcGxhdGU8PgoraW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3QoY29uc3QgSlND
OjpKU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMp
OworICAgIHJlamVjdChleGVjLCB2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPD4KIGlubGluZSB2b2lk
IERlZmVycmVkV3JhcHBlcjo6cmVzb2x2ZTxTdHJpbmc+KGNvbnN0IFN0cmluZyYgcmVzdWx0KQog
ewogICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJl
YW1DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVh
bUN1c3RvbS5jcHAKaW5kZXggMzYyZDk3NzMyMGNlZWUwZDllN2ViMmU3Yzg3OTRiYThkMWU5N2Ey
MC4uNzRkZjQ4YmIyODJmMjU3MjI0NjRiMDUwMmZkNTY1MzFiYWI1MzU5MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAK
QEAgLTkxLDcgKzkxLDEyIEBAIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKICAgICBhdXRvIHN1Y2Nlc3NDYWxsYmFjayA9IFt3cmFwcGVyXSgp
IG11dGFibGUgewogICAgICAgICB3cmFwcGVyLnJlc29sdmUoanNVbmRlZmluZWQoKSk7CiAgICAg
fTsKLSAgICBpbXBsKCkuY2xvc2VkKFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spKTsKKyAgICBh
dXRvIGZhaWx1cmVDYWxsYmFjayA9IFt0aGlzLCB3cmFwcGVyXSgpIG11dGFibGUgeworICAgICAg
ICBKU1ZhbHVlIGVycm9yID0gaW1wbCgpLnNvdXJjZSgpLmlzSlMoKSA/IHN0YXRpY19jYXN0PFJl
YWRhYmxlU3RyZWFtSlNTb3VyY2UmPihpbXBsKCkuc291cmNlKCkpLmVycm9yKCkgOiBjcmVhdGVF
cnJvcihnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBpbXBsKCkuc291cmNlKCkuZXJyb3JE
ZXNjcmlwdGlvbigpKTsKKyAgICAgICAgd3JhcHBlci5yZWplY3QoZXJyb3IpOworICAgIH07CisK
KyAgICBpbXBsKCkuY2xvc2VkKFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2spLCBXVEY6Om1vdmUo
ZmFpbHVyZUNhbGxiYWNrKSk7CiAKICAgICByZXR1cm4gd3JhcHBlci5wcm9taXNlKCk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291
cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3Vy
Y2UuY3BwCmluZGV4IDExZmQyZGY1NTFjOWRjOTQ1ZTVkYTllYzE3NDNlNDdlYzZkMWExYmIuLjQ2
M2MxZWNlZGNhZmNkZjc0MGM5MDdlZGIyNDM3ZjcyYTEzOGE5NDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwCkBAIC0x
MjUsNiArMTI1LDIwIEBAIHZvaWQgUmVhZGFibGVTdHJlYW1KU1NvdXJjZTo6c2V0SW50ZXJuYWxF
cnJvcihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nCiAgICAgbV9lcnJvci5zZXQo
ZXhlYy0+dm0oKSwgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIG1lc3NhZ2UpKTsKIH0KIAordm9pZCBS
ZWFkYWJsZVN0cmVhbUpTU291cmNlOjpzdG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGVycm9yKQoreworICAgIG1fZXJyb3Iuc2V0KGV4ZWMtPnZtKCksIGVycm9yKTsKK30K
KworY29uc3QgU3RyaW5nJiBSZWFkYWJsZVN0cmVhbUpTU291cmNlOjplcnJvckRlc2NyaXB0aW9u
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZXJyb3JEZXNjcmlwdGlvbiAmJiBtX2Vycm9yKSB7Cisg
ICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fcmVhZGFibGVTdHJlYW0tPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCk7CisgICAgICAgIGNvbnN0X2Nhc3Q8UmVhZGFibGVTdHJlYW1KU1NvdXJj
ZSo+KHRoaXMpLT5tX2Vycm9yRGVzY3JpcHRpb24gPSBtX2Vycm9yLmdldCgpLnRvU3RyaW5nKGV4
ZWMpLT52YWx1ZShleGVjKTsKKyAgICB9CisgICAgcmV0dXJuIG1fZXJyb3JEZXNjcmlwdGlvbjsK
K30KKwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZW5xdWV1ZVJlYWRhYmxl
U3RyZWFtRnVuY3Rpb24oRXhlY1N0YXRlKikKIHsKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgbWV0aG9kLgpAQCAtMTQ5LDEwICsxNjMsMTIgQEAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0
ZVJlYWRhYmxlU3RyZWFtQ2xvc2VGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJu
IEpTRnVuY3Rpb246OmNyZWF0ZShleGVjLT52bSgpLCBleGVjLT5jYWxsZWUoKS0+Z2xvYmFsT2Jq
ZWN0KCksIDAsIEFTQ0lJTGl0ZXJhbCgiQ3JlYXRlUmVhZGFibGVTdHJlYW1DbG9zZUZ1bmN0aW9u
IiksIGNsb3NlUmVhZGFibGVTdHJlYW1GdW5jdGlvbik7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGVycm9yUmVhZGFibGVTdHJlYW1GdW5jdGlvbihFeGVjU3RhdGUq
KQorc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZXJyb3JSZWFkYWJsZVN0cmVh
bUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRo
aXMgbWV0aG9kLgotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgSlNWYWx1ZSBlcnJvciA9IGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA/IGV4ZWMtPmFyZ3VtZW50KDApIDogY3JlYXRlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJFcnJvciBmdW5jdGlvbiBjYWxsZWQuIikpOworICAgIEpTUmVhZGFi
bGVTdHJlYW0qIGpzUmVhZGFibGVTdHJlYW0gPSBnZXRKU1JlYWRhYmxlU3RyZWFtKGV4ZWMpOwor
ICAgIHN0YXRpY19jYXN0PFJlYWRhYmxlU3RyZWFtSlNTb3VyY2UmPihqc1JlYWRhYmxlU3RyZWFt
LT5pbXBsKCkuc291cmNlKCkpLnN0b3JlRXJyb3IoZXhlYywgZXJyb3IpOworICAgIGpzUmVhZGFi
bGVTdHJlYW0tPmltcGwoKS5jaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKQEAgLTIwNCw3ICsyMjAsOCBAQCB2b2lk
IFJlYWRhYmxlU3RyZWFtSlNTb3VyY2U6OnN0YXJ0KEpTQzo6RXhlY1N0YXRlKiBleGVjKQogCiAg
ICAgY2FsbEZ1bmN0aW9uKGV4ZWMsIHN0YXJ0RnVuY3Rpb24sIG1fcmVhZGFibGVTdHJlYW0sIGFy
Z3VtZW50cyk7CiAKLSAgICBpZiAobV9lcnJvcikgeworICAgIC8vIFRocm93IGV4Y2VwdCBpZiBt
X2Vycm9yRnVuY3Rpb24gd2FzIGNhbGxlZC4KKyAgICBpZiAobV9lcnJvciAmJiAhbV9yZWFkYWJs
ZVN0cmVhbS0+aW1wbCgpLmlzRXJyb3JlZCgpKSB7CiAgICAgICAgIHRocm93Vk1FcnJvcihleGVj
LCBtX2Vycm9yLmdldCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaAppbmRleCAyYzYz
NmQyN2Q4ZjMzNzM1NmQ3NTc3YmNlZjRjYjAxODc1MmI0ZWFlLi42NDBmNTkwMWRlMTU1NGNkYWU4
ZWY2ZTlkN2E3MjAzY2JhMDllOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5oCkBAIC01MiwxMCArNTIsMTMgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0U3RyZWFtKEpTQzo6RXhlY1N0YXRlKiwgSlNSZWFkYWJsZVN0cmVhbSop
OwogCiAgICAgSlNDOjpKU1ZhbHVlIGVycm9yKCkgeyByZXR1cm4gbV9lcnJvci5nZXQoKTsgfQor
ICAgIHZvaWQgc3RvcmVFcnJvcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CiAgICAg
dm9pZCBzdGFydChKU0M6OkV4ZWNTdGF0ZSopOwogCiAgICAgLy8gUmVhZGFibGVTdHJlYW1Tb3Vy
Y2UgQVBJLgotICAgIHZpcnR1YWwgYm9vbCBpc0Vycm9yZWQoKSB7IHJldHVybiAhIW1fZXJyb3I7
IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNFcnJvcmVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gISFtX2Vy
cm9yOyB9CisgICAgdmlydHVhbCBib29sIGlzSlMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CisgICAgdmlydHVhbCBjb25zdCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24oKSBjb25z
dCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHNldEludGVybmFsRXJyb3IoSlNDOjpF
eGVjU3RhdGUqLCBjb25zdCBTdHJpbmcmKTsKQEAgLTY2LDYgKzY5LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIG1fZXJyb3IgbWF5IGJlIGFuIGVycm9yIGdlbmVyYXRlZCBmcm9tIFJlYWRhYmxlU3Ry
ZWFtSlNTb3VyY2Ugb3IgZnJvbSBKUyBjYWxsYmFja3MuCiAgICAgSlNDOjpTdHJvbmc8SlNDOjpV
bmtub3duPiBtX2Vycm9yOworICAgIFN0cmluZyBtX2Vycm9yRGVzY3JpcHRpb247CiAgICAgSlNS
ZWFkYWJsZVN0cmVhbSogbV9yZWFkYWJsZVN0cmVhbSB7IG51bGxwdHIgfTsKIAogICAgIC8vIE9i
amVjdCBwYXNzZWQgdG8gY29uc3RydWN0b3IuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDY4NjI5OTgyNDFkMjc3NTM2MTNi
MmY5OGVhMWNkOTM0MWY5ZjMxMi4uMTc5MzNkNTkyOThhMGZiMGY2N2MyNzA1ZDYwMmE1ZjMzOWZj
MzgzMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE1LTAzLTA5ICBYYWJpZXIgUm9kcmlndWV6
IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0ICA8eW91ZW5u
LmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBSZWFkYWJsZVN0
cmVhbSBjb25zdHJ1Y3RvciBzdGFydCBmdW5jdGlvbiBzaG91bGQgYmUgYWJsZSB0byBlcnJvciB0
aGUgc3RyZWFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDExNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0cmVhbXMvcmVhZGFibGVzdHJlYW0tc3RhcnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHN0cmVhbXMvcmVhZGFibGVzdHJlYW0tc3RhcnQuaHRtbDoKKwogMjAxNS0wMy0wOSAgR3l1eW91
bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQg
RUZMIGdhcmRlbmluZyBvbiA5dGggTWFyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWFkYWJsZXN0cmVhbS1zdGFydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlYWRhYmxlc3RyZWFtLXN0YXJ0LWV4cGVjdGVkLnR4dAppbmRleCBjZmNiOWI3MmU0MTE4NTYw
ZTM5ZGFmMjBmY2YyMjdmMzUwMjAzN2FiLi40NjgyZDUxZGI3MTgzZjNiYTFkM2QyOTQ1NjRkNjRk
NjMxY2FjMjdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3RyZWFt
LXN0YXJ0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3Ry
ZWFtLXN0YXJ0LWV4cGVjdGVkLnR4dApAQCAtMTAsNCArMTAsNyBAQCBQQVNTIFJlYWRhYmxlU3Ry
ZWFtIGNsb3NlIHNob3VsZCBmdWxmaWxsIHJlYWR5IGFzeW5jaHJvbm91c2x5CiBQQVNTIFJlYWRh
YmxlU3RyZWFtIGNsb3NlIHNob3VsZCBmdWxmaWxsIGNsb3NlZCBwcm9taXNlIGFzeW5jaHJvbm91
c2x5IAogUEFTUyBBIGNsb3NlZCBSZWFkYWJsZVN0cmVhbSBzaG91bGQgZnVsZmlsbCBpbW1lZGlh
dGx5IHJlYWR5IGFuZCBjbG9zZWQgcHJvbWlzZXMgCiBQQVNTIENhbGxpbmcgUmVhZGFibGVTdHJl
YW0gY2xvc2Ugc2V2ZXJhbCB0aW1lcyBzaG91bGQgbm90IHJlc29sdmUgc2V2ZXJhbCB0aW1lcyBj
bG9zZWQgb3IgcmVhZHkgcHJvbWlzZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGVycm9yIHNob3Vs
ZCBmdWxmaWxsIHJlYWR5IGFuZCBjbG9zZWQgcHJvbWlzZXMgCitQQVNTIENhbGxpbmcgUmVhZGFi
bGVTdHJlYW0gZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hvdWxkIGhhdmUgbm8gZWZmZWN0IAorUEFTUyBD
YWxsaW5nIFJlYWRhYmxlU3RyZWFtIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCBoYXZlIG5vIGVm
ZmVjdCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1z
dGFydC5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1zdGFydC5odG1s
CmluZGV4IGIzNGM5MmM5OTA5NmI5ZmU4NTNhNWZiZmRjOTgyNTAzMzVlYzVjZmQuLjZhNzQzNDEw
Mjg5NmMyOTQxMWZiNWIzZGI4MTM0YWU5ZDllOTE3MzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVhZGFibGVzdHJlYW0tc3RhcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJl
YW1zL3JlYWRhYmxlc3RyZWFtLXN0YXJ0Lmh0bWwKQEAgLTE3Miw3ICsxNzIsNiBAQCB0ZXN0NC5z
dGVwKGZ1bmN0aW9uKCkKICAgICAgICAgdGVzdDQuZG9uZSgpOwogICAgIH0pKTsKICAgICBhc3Nl
cnRfZmFsc2UoY2xvc2VkRG9uZSk7Ci0KIH0pOwogCiB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ0NhbGxp
bmcgUmVhZGFibGVTdHJlYW0gY2xvc2Ugc2V2ZXJhbCB0aW1lcyBzaG91bGQgbm90IHJlc29sdmUg
c2V2ZXJhbCB0aW1lcyBjbG9zZWQgb3IgcmVhZHkgcHJvbWlzZXMnKTsKQEAgLTIwMiw1ICsyMDEs
OTkgQEAgdGVzdDUuc3RlcChmdW5jdGlvbigpCiAgICAgfSksIDUwKTsKIH0pOwogCit0ZXN0NiA9
IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGVycm9yIHNob3VsZCBmdWxmaWxsIHJlYWR5IGFu
ZCBjbG9zZWQgcHJvbWlzZXMnKTsKK3Rlc3Q2LnN0ZXAoZnVuY3Rpb24oKQoreworICAgIHZhciBw
YXNzZWRFcnJvciA9IG5ldyBFcnJvcignYWF1Z2ghIScpOworICAgIHZhciBycyA9IG5ldyBSZWFk
YWJsZVN0cmVhbSgKKyAgICB7IHN0YXJ0OgorICAgICAgICBmdW5jdGlvbihlbnF1ZXVlLCBjbG9z
ZSwgZXJyb3IpIHsKKyAgICAgICAgICAgIGFzc2VydF9hcnJheV9lcXVhbHMoT2JqZWN0LmdldE93
blByb3BlcnR5TmFtZXMoZXJyb3IpLCBbJ25hbWUnLCAnbGVuZ3RoJ10pOworICAgICAgICAgICAg
ZXJyb3IocGFzc2VkRXJyb3IpOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgcmVhZHlE
b25lID0gZmFsc2U7CisgICAgcnMucmVhZHkudGhlbih0ZXN0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24o
dikgeworICAgICAgICByZWFkeURvbmUgPSB0cnVlOworICAgICAgICBhc3NlcnRfZXF1YWxzKHR5
cGVvZiB2LCAndW5kZWZpbmVkJyk7CisgICAgICAgIGFzc2VydF9lcXVhbHMocnMuc3RhdGUsICdl
cnJvcmVkJyk7CisgICAgfSkpOworCisgICAgcnMuY2xvc2VkLnRoZW4odGVzdDYuc3RlcF9mdW5j
KGZ1bmN0aW9uKHYpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgnY2xvc2VkIHByb21pc2Ug
c2hvdWxkIGJlIHJlamVjdGVkJyk7CisgICAgfSksIHRlc3Q1LnN0ZXBfZnVuYyhmdW5jdGlvbihl
cnJvcikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHJlYWR5RG9uZSwgdHJ1ZSk7CisgICAgICAg
IGFzc2VydF9lcXVhbHMoZXJyb3IsIHBhc3NlZEVycm9yKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFs
cyhycy5zdGF0ZSwgJ2Vycm9yZWQnKTsKKyAgICAgICAgdGVzdDYuZG9uZSgpOworICAgIH0pKTsK
K30pOworCit0ZXN0NyA9IGFzeW5jX3Rlc3QoJ0NhbGxpbmcgUmVhZGFibGVTdHJlYW0gZXJyb3Ig
YWZ0ZXIgY2xvc2Ugc2hvdWxkIGhhdmUgbm8gZWZmZWN0Jyk7Cit0ZXN0Ny5zdGVwKGZ1bmN0aW9u
KCkKK3sKKyAgICB2YXIgY2xvc2VGdW5jdGlvbjsKKyAgICB2YXIgZXJyb3JGdW5jdGlvbjsKKyAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAgeyBzdGFydDoKKyAgICAgICAgZnVu
Y3Rpb24oZW5xdWV1ZSwgY2xvc2UsIGVycm9yKSB7CisgICAgICAgICAgICBjbG9zZUZ1bmN0aW9u
ID0gY2xvc2U7CisgICAgICAgICAgICBlcnJvckZ1bmN0aW9uID0gZXJyb3I7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHZhciBjb3VudGVyID0gMDsKKyAgICBycy5jbG9zZWQudGhlbih0ZXN0
Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICB9KSk7Cisg
ICAgcnMucmVhZHkudGhlbih0ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGNv
dW50ZXIrKzsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAxKTsKKyAgICB9KSk7CisK
KyAgICBhc3NlcnRfZXF1YWxzKHJzLnN0YXRlLCAnd2FpdGluZycpOworICAgIGNsb3NlRnVuY3Rp
b24oKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJzLnN0YXRlLCAnY2xvc2VkJyk7CisgICAgZXJyb3JG
dW5jdGlvbigpOworICAgIGFzc2VydF9lcXVhbHMocnMuc3RhdGUsICdjbG9zZWQnKTsKKworICAg
IHNldFRpbWVvdXQodGVzdDcuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICB0ZXN0Ny5k
b25lKCk7CisgICAgfSksIDUwKTsKK30pOworCit0ZXN0OCA9IGFzeW5jX3Rlc3QoJ0NhbGxpbmcg
UmVhZGFibGVTdHJlYW0gY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIGhhdmUgbm8gZWZmZWN0Jyk7
Cit0ZXN0OC5zdGVwKGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgY2xvc2VGdW5jdGlvbjsKKyAgICB2
YXIgZXJyb3JGdW5jdGlvbjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oCisgICAg
eyBzdGFydDoKKyAgICAgICAgZnVuY3Rpb24oZW5xdWV1ZSwgY2xvc2UsIGVycm9yKSB7CisgICAg
ICAgICAgICBjbG9zZUZ1bmN0aW9uID0gY2xvc2U7CisgICAgICAgICAgICBlcnJvckZ1bmN0aW9u
ID0gZXJyb3I7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHZhciBjb3VudGVyID0gMDsKKyAg
ICBycy5jbG9zZWQudGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGNv
dW50ZXIrKzsKKyAgICB9KSk7CisgICAgcnMucmVhZHkudGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVu
Y3Rpb24oKSB7CisgICAgICAgIGNvdW50ZXIrKzsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3Vu
dGVyLCAxKTsKKyAgICB9KSk7CisKKyAgICBhc3NlcnRfZXF1YWxzKHJzLnN0YXRlLCAnd2FpdGlu
ZycpOworICAgIGVycm9yRnVuY3Rpb24oKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJzLnN0YXRlLCAn
ZXJyb3JlZCcpOworICAgIGNsb3NlRnVuY3Rpb24oKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJzLnN0
YXRlLCAnZXJyb3JlZCcpOworCisgICAgc2V0VGltZW91dCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rp
b24oKSB7CisgICAgICAgIHRlc3Q4LmRvbmUoKTsKKyAgICB9KSwgNTApOworfSk7CiAKIDwvc2Ny
aXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248485</attachid>
            <date>2015-03-11 21:19:01 -0700</date>
            <delta_ts>2015-03-18 12:31:03 -0700</delta_ts>
            <desc>Cleaning things</desc>
            <filename>bug-141162-20150312051834.patch</filename>
            <type>text/plain</type>
            <size>17507</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMjY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjc1MzA0YTc3YTVhODA4
MTA2Yzg2ZmE5NDU1OGQ3YmFlNjQ5MDE0YS4uY2U2YzU4YjhkNDljOWRkY2VmYjM3OTBmYWM4Y2Q4
NmUzODBkNzUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDE1LTAzLTExICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJs
ZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHN0YXJ0IGZ1bmN0aW9uIHNob3VsZCBiZSBhYmxl
IHRvIGVycm9yIHRoZSBzdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MTE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEltcGxlbWVudGluZyB0aGUgZXJyb3IgZnVuY3Rpb24gcGFzc2VkIGFzIHBh
cmFtZXRlciB0byB0aGUgInN0YXJ0IiBmdW5jdGlvbiBvZiB0aGUgSlMgc291cmNlLgorICAgICAg
ICBJdCBiYXNpY2FsbHkgY2hhbmdlcyB0aGUgc3RhdGUgb2YgdGhlIHN0cmVhbSB0byBlcnJvcmVk
LCByZXNvbHZlcyB0aGUgcmVhZHkgcHJvbWlzZSBhbmQgcmVqZWN0cyB0aGUgY2xvc2VkIHByb21p
c2UuCisKKyAgICAgICAgQWRkaW5nIHN1cHBvcnQgdG8gcmVqZWN0IHByb21pc2Ugd2l0aCBhbnkg
SlNWYWx1ZS4KKyAgICAgICAgQWRkZWQgaXNKUyB0byBSZWFkYWJsZVN0cmVhbVNvdXJjZSBzbyB0
aGF0IEpTUmVhZGFibGVTdHJlYW0gY2FuIGdldCBhY2Nlc3MgdG8gbW9yZSBtZWFuaW5nZnVsIGVy
cm9ycyAoZ2VuZXJpYyBKU1ZhbHVlKSAKKyAgICAgICAgd2l0aG91dCBoYXZpbmcgdGhlIEpTVmFs
dWUgZ29pbmcgdGhyb3VnaCBSZWFkYWJsZVN0cmVhbS4KKworICAgICAgICBQYXRjaCBpcyBjb3Zl
cmVkIGJ5IGFkZGVkIHRlc3RzIGluIHJlYWRhYmxlc3RyZWFtLXN0YXJ0Lmh0bWwuCisKKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVTdHJlYW06OnJlc29sdmVDbG9zZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkYWJsZVN0cmVhbTo6cmVqZWN0Q2xvc2VkQ2FsbGJhY2spOiBDYWxsZWQgd2hlbiBn
b2luZyB0byBlcnJvciBzdGF0ZS4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtOjpj
bG9zZWQpOiBTdXBwb3J0IG9mIHRoZSByZWplY3QgY2FsbGJhY2suCisgICAgICAgIChXZWJDb3Jl
OjpSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQpOiBQdXQgdGhlIHN0cmVhbSBp
biBlcnJvciBzdGF0ZSBhbmQgY2FsbHMgcmVsYXRlZCBjYWxsYmFja3MuCisgICAgICAgICogTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJs
ZVN0cmVhbTo6aXNFcnJvcmVkKTogU3RhdGVzIHdoZXRoZXIgZXJyb3JlZCBvciBudG8uCisgICAg
ICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbTo6c291cmNlKTogQWNjZXNzIHRvIHRoZSBzb3Vy
Y2UuIFRoaXMgaXMgdXNlZCB0byByZXRyaWV2ZSB0aGUgc291cmNlIGZyb20gUmVhZGFibGVTdHJl
YW0gSlMgZnVuY3Rpb25zIChjbG9zZSwgZW5xdWV1ZSwgZXJyb3IpCisgICAgICAgICogTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmg6IEFkZGluZyBhYmlsaXR5IHRvIGtub3cg
d2hldGhlciB0aGUgc291cmNlIGlzIEpTIG9yIG5vdCBhbmQgZ2V0IGVycm9yIGRlc2NyaXB0aW9u
IGRpcmVjdGx5IGZyb20gdGhlIHNvdXJjZS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVBy
b21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkV3JhcHBlcjo6cmVqZWN0KTogQWRk
ZWQgcmVqZWN0aW9uIG9mIEpTVmFsdWUuCisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1JlYWRhYmxlU3RyZWFtOjpj
bG9zZWQpOiBTdXBwb3J0IG9mIHRoZSByZWplY3QgY2FsbGJhY2suCisgICAgICAgICogYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFk
YWJsZVN0cmVhbUpTU291cmNlOjpzdG9yZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRh
YmxlU3RyZWFtSlNTb3VyY2U6OmVycm9yRGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
ZXJyb3JSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxl
U3RyZWFtSlNTb3VyY2U6OnN0YXJ0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZVN0
cmVhbUpTU291cmNlLmg6CisKIDIwMTUtMDMtMDkgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyIDxj
YWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgogCiAgICAgICAgIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2Ugc2hvdWxkIHVzZSBK
U0M6OlN0cm9uZyBVbnNwZWNpZmllZEJvb2xUeXBlIG9wZXJhdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAppbmRleCA2Y2NjN2I0MzZm
OGVjNGJlZmQxMDdmMjRhNzIyYzVlOTRhZDMwODkyLi5kOTQxOGJlODMzMjA5NWMzZjg2MmE3ZGVk
MzM1OTU0MjlmMWM1OTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5jcHAKQEAgLTg1LDE3ICs4NSwzMyBAQCB2b2lkIFJlYWRhYmxlU3Ry
ZWFtOjpyZXNvbHZlQ2xvc2VkQ2FsbGJhY2soKQogICAgIGlmICghbV9jbG9zZWRTdWNjZXNzQ2Fs
bGJhY2spCiAgICAgICAgIHJldHVybjsKIAorICAgIG1fY2xvc2VkRXJyb3JDYWxsYmFjayA9IG51
bGxwdHI7CiAgICAgU3VjY2Vzc0NhbGxiYWNrIGNsb3NlZFN1Y2Nlc3NDYWxsYmFjayA9IFdURjo6
bW92ZShtX2Nsb3NlZFN1Y2Nlc3NDYWxsYmFjayk7CiAgICAgY2xvc2VkU3VjY2Vzc0NhbGxiYWNr
KCk7CiB9CiAKLXZvaWQgUmVhZGFibGVTdHJlYW06OmNsb3NlZChTdWNjZXNzQ2FsbGJhY2sgc3Vj
Y2Vzc0NhbGxiYWNrKQordm9pZCBSZWFkYWJsZVN0cmVhbTo6cmVqZWN0Q2xvc2VkQ2FsbGJhY2so
KQoreworICAgIEFTU0VSVChtX3N0YXRlID09IFN0YXRlOjpFcnJvcmVkKTsKKyAgICBpZiAoIW1f
Y2xvc2VkRXJyb3JDYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jbG9zZWRTdWNj
ZXNzQ2FsbGJhY2sgPSBudWxscHRyOworICAgIEVycm9yQ2FsbGJhY2sgY2xvc2VkRXJyb3JDYWxs
YmFjayA9IFdURjo6bW92ZShtX2Nsb3NlZEVycm9yQ2FsbGJhY2spOworICAgIGNsb3NlZEVycm9y
Q2FsbGJhY2soKTsKK30KKwordm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2xvc2VkKFN1Y2Nlc3NDYWxs
YmFjayBzdWNjZXNzQ2FsbGJhY2ssIEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaykKIHsKICAg
ICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFj
aygpOwogICAgICAgICByZXR1cm47CisgICAgfSBlbHNlIGlmIChtX3N0YXRlID09IFN0YXRlOjpF
cnJvcmVkKSB7CisgICAgICAgIGVycm9yQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBtX2Nsb3NlZFN1Y2Nlc3NDYWxsYmFjayA9IFdURjo6bW92ZShzdWNjZXNzQ2FsbGJh
Y2spOworICAgIG1fY2xvc2VkRXJyb3JDYWxsYmFjayA9IFdURjo6bW92ZShlcnJvckNhbGxiYWNr
KTsKIH0KIAogdm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpCkBAIC0x
MDgsNiArMTI0LDE2IEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9DbG9zZWQo
KQogICAgIC8vIEZJWE1FOiBIYW5kbGUgU3RhdGU6OlJlYWRhYmxlIHdoZW4gZW5xdWV1ZSBpcyBz
dXBwb3J0ZWQuCiB9CiAKK3ZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9FcnJvcmVk
KCkKK3sKKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCB8fCBtX3N0YXRlID09IFN0
YXRlOjpDbG9zZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc3RhdGUgPSBTdGF0ZTo6RXJy
b3JlZDsKKyAgICByZXNvbHZlUmVhZHlDYWxsYmFjaygpOworICAgIHJlamVjdENsb3NlZENhbGxi
YWNrKCk7Cit9CisKIHZvaWQgUmVhZGFibGVTdHJlYW06OnJlc29sdmVSZWFkeUNhbGxiYWNrKCkK
IHsKICAgICBBU1NFUlQobV9zdGF0ZSAhPSBTdGF0ZTo6V2FpdGluZyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oCmluZGV4IGI0ZWZlMGFmN2Ix
NzU2OTYxMGMxMjExMWYwMGM1MjVkMTk3NGMxNzEuLjZhMzUwMGI1OWVjNjM5OWNkMTI3YzZjYzhl
ZjhhMjA2OTA4ZDYzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbS5oCkBAIC02MiwxOCArNjIsMjYgQEAgcHVibGljOgogICAgIFN0cmluZyBz
dGF0ZSgpIGNvbnN0OwogCiAgICAgdHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gU3VjY2Vz
c0NhbGxiYWNrOwotICAgIHZvaWQgY2xvc2VkKFN1Y2Nlc3NDYWxsYmFjayk7CisgICAgdHlwZWRl
ZiBzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gRXJyb3JDYWxsYmFjazsKKworICAgIHZvaWQgY2xvc2Vk
KFN1Y2Nlc3NDYWxsYmFjaywgRXJyb3JDYWxsYmFjayk7CiAgICAgdm9pZCByZWFkeShTdWNjZXNz
Q2FsbGJhY2spOwogCisgICAgYm9vbCBpc0Vycm9yZWQoKSB7IHJldHVybiBtX3N0YXRlID09IFN0
YXRlOjpFcnJvcmVkOyB9CisKICAgICAvLyBBUEkgdXNlZCBmcm9tIHRoZSBKUyBiaW5kaW5nLgog
ICAgIHZvaWQgc3RhcnQoKTsKIAogICAgIHZvaWQgY2hhbmdlU3RhdGVUb0Nsb3NlZCgpOworICAg
IHZpcnR1YWwgdm9pZCBjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOworCisgICAgUmVhZGFibGVTdHJl
YW1Tb3VyY2UmIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291cmNlLmdldCgpOyB9CiAKIHByaXZhdGU6
CiAgICAgUmVhZGFibGVTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxSZWFkYWJs
ZVN0cmVhbVNvdXJjZT4mJik7CiAgICAgdm9pZCByZXNvbHZlQ2xvc2VkQ2FsbGJhY2soKTsKICAg
ICB2b2lkIHJlc29sdmVSZWFkeUNhbGxiYWNrKCk7CisgICAgdm9pZCByZWplY3RDbG9zZWRDYWxs
YmFjaygpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IEFQSS4KICAgICBjb25zdCBjaGFyKiBh
Y3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGU7CkBAIC04Miw4ICs5MCw5IEBAIHBy
aXZhdGU6CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBSZWY8UmVhZGFibGVTdHJlYW1Tb3VyY2U+
IG1fc291cmNlOwogCi0gICAgLy8gRklYTUU6IEFkZCBjbG9zZWQgZXJyb3IgY2FsbGJhY2suCiAg
ICAgU3VjY2Vzc0NhbGxiYWNrIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrOworICAgIEVycm9yQ2Fs
bGJhY2sgbV9jbG9zZWRFcnJvckNhbGxiYWNrOworCiAgICAgU3VjY2Vzc0NhbGxiYWNrIG1fcmVh
ZHlDYWxsYmFjazsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbVNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtU291cmNlLmgKaW5kZXggM2VhZjlhYzM3Y2VkMjNhOGE1MTdmNjll
OWRlN2YyYjk5YjdlODRmOC4uNDNiNWY2MjVlMWQzZjYzZjYyZDZhN2YyZTI1NGZkMjU5OTNiZTFm
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtU291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtU291cmNlLmgKQEAgLTU3LDYgKzU3LDExIEBAIHB1YmxpYzoKICAgICB9CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNFcnJvcmVkKCkgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwg
Y29uc3QgU3RyaW5nJiBlcnJvckRlc2NyaXB0aW9uKCkgY29uc3QgPSAwOworCisgICAgdmlydHVh
bCBib29sIGlzSlMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IGQwZjc1ZDIyZTMyMTU4NTM2
ZDNmZTg0MWJmNDk5YmJiMTg4YTRjOTUuLjNkYzA1Yjc0ODIwMWM3ZDU2YjdmYzA0NjhmODJjZjU5
Y2FjMmNjM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJv
bWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCkBA
IC04Miw2ICs4MiwxNCBAQCBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChjb25z
dCBzdGQ6Om51bGxwdHJfdCYpCiB9CiAKIHRlbXBsYXRlPD4KK2lubGluZSB2b2lkIERlZmVycmVk
V3JhcHBlcjo6cmVqZWN0KGNvbnN0IEpTQzo6SlNWYWx1ZSYgdmFsdWUpCit7CisgICAgSlNDOjpF
eGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICByZWplY3QoZXhlYywgdmFsdWUpOworfQor
Cit0ZW1wbGF0ZTw+CiBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8U3RyaW5n
Pihjb25zdCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1f
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwCmluZGV4IDM2MmQ5NzczMjBjZWVl
MGQ5ZTdlYjJlN2M4Nzk0YmE4ZDFlOTdhMjAuLjc0ZGY0OGJiMjgyZjI1NzIyNDY0YjA1MDJmZDU2
NTMxYmFiNTM1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVh
ZGFibGVTdHJlYW1DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1DdXN0b20uY3BwCkBAIC05MSw3ICs5MSwxMiBAQCBKU1ZhbHVlIEpTUmVh
ZGFibGVTdHJlYW06OmNsb3NlZChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgYXV0byBzdWNj
ZXNzQ2FsbGJhY2sgPSBbd3JhcHBlcl0oKSBtdXRhYmxlIHsKICAgICAgICAgd3JhcHBlci5yZXNv
bHZlKGpzVW5kZWZpbmVkKCkpOwogICAgIH07Ci0gICAgaW1wbCgpLmNsb3NlZChXVEY6Om1vdmUo
c3VjY2Vzc0NhbGxiYWNrKSk7CisgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbdGhpcywgd3Jh
cHBlcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgSlNWYWx1ZSBlcnJvciA9IGltcGwoKS5zb3VyY2Uo
KS5pc0pTKCkgPyBzdGF0aWNfY2FzdDxSZWFkYWJsZVN0cmVhbUpTU291cmNlJj4oaW1wbCgpLnNv
dXJjZSgpKS5lcnJvcigpIDogY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMo
KSwgaW1wbCgpLnNvdXJjZSgpLmVycm9yRGVzY3JpcHRpb24oKSk7CisgICAgICAgIHdyYXBwZXIu
cmVqZWN0KGVycm9yKTsKKyAgICB9OworCisgICAgaW1wbCgpLmNsb3NlZChXVEY6Om1vdmUoc3Vj
Y2Vzc0NhbGxiYWNrKSwgV1RGOjptb3ZlKGZhaWx1cmVDYWxsYmFjaykpOwogCiAgICAgcmV0dXJu
IHdyYXBwZXIucHJvbWlzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcAppbmRleCAxMWIxZGVlMTFiMjhmOWUxMGFl
MDhjMGY3NDVkNDNmNzMzMjAyYmNmLi42MDUwOWNhOGZkNmZmOGY5MjIzZDdkZmMwNjJlYTY1N2E4
ZjdkODBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0
cmVhbUpTU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZVN0cmVhbUpTU291cmNlLmNwcApAQCAtMTI1LDYgKzEyNSwyMCBAQCB2b2lkIFJlYWRhYmxlU3Ry
ZWFtSlNTb3VyY2U6OnNldEludGVybmFsRXJyb3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IFN0cmluZwogICAgIG1fZXJyb3Iuc2V0KGV4ZWMtPnZtKCksIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCBtZXNzYWdlKSk7CiB9CiAKK3ZvaWQgUmVhZGFibGVTdHJlYW1KU1NvdXJjZTo6c3RvcmVFcnJv
cihKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBlcnJvcikKK3sKKyAgICBtX2Vycm9yLnNl
dChleGVjLT52bSgpLCBlcnJvcik7Cit9CisKK2NvbnN0IFN0cmluZyYgUmVhZGFibGVTdHJlYW1K
U1NvdXJjZTo6ZXJyb3JEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX2Vycm9yRGVz
Y3JpcHRpb24gJiYgbV9lcnJvcikgeworICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX3JlYWRh
YmxlU3RyZWFtLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpOworICAgICAgICBjb25zdF9j
YXN0PFJlYWRhYmxlU3RyZWFtSlNTb3VyY2UqPih0aGlzKS0+bV9lcnJvckRlc2NyaXB0aW9uID0g
bV9lcnJvci5nZXQoKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgfQorICAgIHJl
dHVybiBtX2Vycm9yRGVzY3JpcHRpb247Cit9CisKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGVucXVldWVSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKEV4ZWNTdGF0ZSopCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKQEAgLTE0OCw5ICsxNjIsMTIgQEAgc3RhdGljIGlubGluZSBK
U0Z1bmN0aW9uKiBjcmVhdGVSZWFkYWJsZVN0cmVhbUNsb3NlRnVuY3Rpb24oRXhlY1N0YXRlKiBl
eGVjKQogICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+Y2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpLCAwLCBBU0NJSUxpdGVyYWwoIkNyZWF0ZVJlYWRhYmxlU3Ry
ZWFtQ2xvc2VGdW5jdGlvbiIpLCBjbG9zZVJlYWRhYmxlU3RyZWFtRnVuY3Rpb24pOwogfQogCi1z
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclJlYWRhYmxlU3RyZWFtRnVu
Y3Rpb24oRXhlY1N0YXRlKikKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGVy
cm9yUmVhZGFibGVTdHJlYW1GdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBKU1ZhbHVlIGVycm9yID0gZXhlYy0+YXJndW1lbnRDb3VudCgpID8g
ZXhlYy0+YXJndW1lbnQoMCkgOiBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkVycm9y
IGZ1bmN0aW9uIGNhbGxlZC4iKSk7CisgICAgSlNSZWFkYWJsZVN0cmVhbSoganNSZWFkYWJsZVN0
cmVhbSA9IGdldEpTUmVhZGFibGVTdHJlYW0oZXhlYyk7CisgICAgc3RhdGljX2Nhc3Q8UmVhZGFi
bGVTdHJlYW1KU1NvdXJjZSY+KGpzUmVhZGFibGVTdHJlYW0tPmltcGwoKS5zb3VyY2UoKSkuc3Rv
cmVFcnJvcihleGVjLCBlcnJvcik7CisgICAganNSZWFkYWJsZVN0cmVhbS0+aW1wbCgpLmNoYW5n
ZVN0YXRlVG9FcnJvcmVkKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKIH0KIApAQCAtMjAyLDcgKzIxOSw4IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1KU1NvdXJj
ZTo6c3RhcnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBjYWxsRnVuY3Rpb24oZXhlYywg
c3RhcnRGdW5jdGlvbiwgbV9zb3VyY2UuZ2V0KCksIGFyZ3VtZW50cyk7CiAKLSAgICBpZiAobV9l
cnJvcikgeworICAgIC8vIFRocm93IGV4Y2VwdCBpZiBtX2Vycm9yRnVuY3Rpb24gd2FzIGNhbGxl
ZC4KKyAgICBpZiAobV9lcnJvciAmJiAhbV9yZWFkYWJsZVN0cmVhbS0+aW1wbCgpLmlzRXJyb3Jl
ZCgpKSB7CiAgICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBtX2Vycm9yLmdldCgpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Jl
YWRhYmxlU3RyZWFtSlNTb3VyY2UuaAppbmRleCBkMmFhOTUwODRkNjk2MTU4NzIwY2VjNGEwZjhj
ZDk1YjFjODY3NjU3Li43ZjhlY2IxNGU0NDU1NTAxZjhmZmVjMzNhYjMxZmU5OTM4ZTA3ODEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpTU291
cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1Nv
dXJjZS5oCkBAIC01MiwxMCArNTIsMTMgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3RyZWFtKEpT
Qzo6RXhlY1N0YXRlKiwgSlNSZWFkYWJsZVN0cmVhbSopOwogCiAgICAgSlNDOjpKU1ZhbHVlIGVy
cm9yKCkgeyByZXR1cm4gbV9lcnJvci5nZXQoKTsgfQorICAgIHZvaWQgc3RvcmVFcnJvcihKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSk7CiAgICAgdm9pZCBzdGFydChKU0M6OkV4ZWNTdGF0
ZSopOwogCiAgICAgLy8gUmVhZGFibGVTdHJlYW1Tb3VyY2UgQVBJLgotICAgIHZpcnR1YWwgYm9v
bCBpc0Vycm9yZWQoKSB7IHJldHVybiAhIW1fZXJyb3I7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNF
cnJvcmVkKCkgb3ZlcnJpZGUgeyByZXR1cm4gISFtX2Vycm9yOyB9CisgICAgdmlydHVhbCBib29s
IGlzSlMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBjb25z
dCBTdHJpbmcmIGVycm9yRGVzY3JpcHRpb24oKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ICAgICB2b2lkIHNldEludGVybmFsRXJyb3IoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJpbmcm
KTsKQEAgLTY2LDYgKzY5LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIG1fZXJyb3IgbWF5IGJlIGFu
IGVycm9yIGdlbmVyYXRlZCBmcm9tIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2Ugb3IgZnJvbSBKUyBj
YWxsYmFja3MuCiAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX2Vycm9yOworICAgIFN0
cmluZyBtX2Vycm9yRGVzY3JpcHRpb247CiAgICAgSlNSZWFkYWJsZVN0cmVhbSogbV9yZWFkYWJs
ZVN0cmVhbSB7IG51bGxwdHIgfTsKIAogICAgIC8vIE9iamVjdCBwYXNzZWQgdG8gY29uc3RydWN0
b3IuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggZDY4NjI5OTgyNDFkMjc3NTM2MTNiMmY5OGVhMWNkOTM0MWY5ZjMxMi4uOWFj
YmNiM2I4YjA1ZmYwY2E5ODRhYTU4ZmJjYjRhZGFjYjM3OGQ0MSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDE1LTAzLTExICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24u
ZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJXSBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBz
dGFydCBmdW5jdGlvbiBzaG91bGQgYmUgYWJsZSB0byBlcnJvciB0aGUgc3RyZWFtCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExNjIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVhbXMvcmVhZGFi
bGVzdHJlYW0tc3RhcnQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGVz
dHJlYW0tc3RhcnQuaHRtbDoKKwogMjAxNS0wMy0wOSAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcu
a2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgRUZMIGdhcmRlbmluZyBvbiA5
dGggTWFyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1z
dGFydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3RyZWFtLXN0
YXJ0LWV4cGVjdGVkLnR4dAppbmRleCAzN2Y3ZTBkMjA5NjE1ZmQyMmYxMTNmZGZjNGMzMjU3MWU5
YThiNjVjLi5iNTg4NWIwZTFkMmMxZWVkYmVhNThkYTJiNmJlMzY4MWYzODFkNzNhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3RyZWFtLXN0YXJ0LWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3RyZWFtLXN0YXJ0LWV4cGVjdGVk
LnR4dApAQCAtMTAsNCArMTAsOCBAQCBQQVNTIFJlYWRhYmxlU3RyZWFtIGNsb3NlIHNob3VsZCBm
dWxmaWxsIHJlYWR5IGFzeW5jaHJvbm91c2x5CiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNsb3NlIHNo
b3VsZCBmdWxmaWxsIGNsb3NlZCBwcm9taXNlIGFzeW5jaHJvbm91c2x5IAogUEFTUyBBIGNsb3Nl
ZCBSZWFkYWJsZVN0cmVhbSBzaG91bGQgZnVsZmlsbCBpbW1lZGlhdGx5IHJlYWR5IGFuZCBjbG9z
ZWQgcHJvbWlzZXMgCiBQQVNTIENhbGxpbmcgUmVhZGFibGVTdHJlYW0gY2xvc2Ugc2V2ZXJhbCB0
aW1lcyBzaG91bGQgbm90IHJlc29sdmUgc2V2ZXJhbCB0aW1lcyBjbG9zZWQgb3IgcmVhZHkgcHJv
bWlzZXMgCitQQVNTIFJlYWRhYmxlU3RyZWFtIGVycm9yIHNob3VsZCBmdWxmaWxsIHJlYWR5IGFu
ZCBjbG9zZWQgcHJvbWlzZXMgCitQQVNTIENhbGxpbmcgUmVhZGFibGVTdHJlYW0gZXJyb3IgYWZ0
ZXIgY2xvc2Ugc2hvdWxkIGhhdmUgbm8gZWZmZWN0IAorUEFTUyBDYWxsaW5nIFJlYWRhYmxlU3Ry
ZWFtIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCBoYXZlIG5vIGVmZmVjdCAKK1BBU1MgQ2FsbGlu
ZyBSZWFkYWJsZVN0cmVhbSBlcnJvciBzZXZlcmFsIHRpbWVzIHNob3VsZCBoYXZlIG5vIGVmZmVj
dCAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1zdGFy
dC5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1zdGFydC5odG1sCmlu
ZGV4IDljNDM0M2YyMmI4OGI3MDFmZTM5NDhhMTIxYWMyNWU0MzAzYTFjZjAuLjFkZDkwMDVjYWM4
MDdiNjI3Y2ZlMTNkZDU1YzU1NTBhMjFkZmI2NjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVhZGFibGVzdHJlYW0tc3RhcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlYWRhYmxlc3RyZWFtLXN0YXJ0Lmh0bWwKQEAgLTE3NCw3ICsxNzQsNiBAQCB0ZXN0NC5zdGVw
KGZ1bmN0aW9uKCkKICAgICAgICAgdGVzdDQuZG9uZSgpOwogICAgIH0pKTsKICAgICBhc3NlcnRf
ZmFsc2UoY2xvc2VkRG9uZSk7Ci0KIH0pOwogCiB0ZXN0NSA9IGFzeW5jX3Rlc3QoJ0NhbGxpbmcg
UmVhZGFibGVTdHJlYW0gY2xvc2Ugc2V2ZXJhbCB0aW1lcyBzaG91bGQgbm90IHJlc29sdmUgc2V2
ZXJhbCB0aW1lcyBjbG9zZWQgb3IgcmVhZHkgcHJvbWlzZXMnKTsKQEAgLTIwNCw1ICsyMDMsMTM5
IEBAIHRlc3Q1LnN0ZXAoZnVuY3Rpb24oKQogICAgIH0pLCA1MCk7CiB9KTsKIAordGVzdDYgPSBh
c3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBlcnJvciBzaG91bGQgZnVsZmlsbCByZWFkeSBhbmQg
Y2xvc2VkIHByb21pc2VzJyk7Cit0ZXN0Ni5zdGVwKGZ1bmN0aW9uKCkKK3sKKyAgICB2YXIgcGFz
c2VkRXJyb3IgPSBuZXcgRXJyb3IoJ2FhdWdoISEnKTsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFi
bGVTdHJlYW0oCisgICAgeyBzdGFydDoKKyAgICAgICAgZnVuY3Rpb24oZW5xdWV1ZSwgY2xvc2Us
IGVycm9yKSB7CisgICAgICAgICAgICBhc3NlcnRfYXJyYXlfZXF1YWxzKE9iamVjdC5nZXRPd25Q
cm9wZXJ0eU5hbWVzKGVycm9yKSwgWyduYW1lJywgJ2xlbmd0aCddKTsKKyAgICAgICAgICAgIGVy
cm9yKHBhc3NlZEVycm9yKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgdmFyIHJlYWR5RG9u
ZSA9IGZhbHNlOworICAgIHJzLnJlYWR5LnRoZW4odGVzdDYuc3RlcF9mdW5jKGZ1bmN0aW9uKHYp
IHsKKyAgICAgICAgcmVhZHlEb25lID0gdHJ1ZTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh0eXBl
b2YgdiwgJ3VuZGVmaW5lZCcpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHJzLnN0YXRlLCAnZXJy
b3JlZCcpOworICAgIH0pKTsKKworICAgIHJzLmNsb3NlZC50aGVuKHRlc3Q2LnN0ZXBfZnVuYyhm
dW5jdGlvbih2KSB7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBwcm9taXNlIHNo
b3VsZCBiZSByZWplY3RlZCcpOworICAgIH0pLCB0ZXN0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJy
b3IpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyZWFkeURvbmUsIHRydWUpOworICAgICAgICBh
c3NlcnRfZXF1YWxzKGVycm9yLCBwYXNzZWRFcnJvcik7CisgICAgICAgIGFzc2VydF9lcXVhbHMo
cnMuc3RhdGUsICdlcnJvcmVkJyk7CisgICAgICAgIHRlc3Q2LmRvbmUoKTsKKyAgICB9KSk7Cit9
KTsKKwordGVzdDcgPSBhc3luY190ZXN0KCdDYWxsaW5nIFJlYWRhYmxlU3RyZWFtIGVycm9yIGFm
dGVyIGNsb3NlIHNob3VsZCBoYXZlIG5vIGVmZmVjdCcpOwordGVzdDcuc3RlcChmdW5jdGlvbigp
Cit7CisgICAgdmFyIGNsb3NlRnVuY3Rpb247CisgICAgdmFyIGVycm9yRnVuY3Rpb247CisgICAg
dmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsgc3RhcnQ6CisgICAgICAgIGZ1bmN0
aW9uKGVucXVldWUsIGNsb3NlLCBlcnJvcikgeworICAgICAgICAgICAgY2xvc2VGdW5jdGlvbiA9
IGNsb3NlOworICAgICAgICAgICAgZXJyb3JGdW5jdGlvbiA9IGVycm9yOworICAgICAgICB9Cisg
ICAgfSk7CisKKyAgICB2YXIgY291bnRlciA9IDA7CisgICAgcnMuY2xvc2VkLnRoZW4odGVzdDcu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBjb3VudGVyKys7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoY291bnRlciwgMik7CisgICAgfSksIHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigp
IHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgpOworICAgIH0pKTsKKyAgICBycy5yZWFkeS50
aGVuKHRlc3Q3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgY291bnRlcisrOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGNvdW50ZXIsIDEpOworICAgIH0pKTsKKworICAgIGFzc2VydF9l
cXVhbHMocnMuc3RhdGUsICd3YWl0aW5nJyk7CisgICAgY2xvc2VGdW5jdGlvbigpOworICAgIGFz
c2VydF9lcXVhbHMocnMuc3RhdGUsICdjbG9zZWQnKTsKKyAgICBlcnJvckZ1bmN0aW9uKCk7Cisg
ICAgYXNzZXJ0X2VxdWFscyhycy5zdGF0ZSwgJ2Nsb3NlZCcpOworCisgICAgc2V0VGltZW91dCh0
ZXN0Ny5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3Q3LmRvbmUoKTsKKyAgICB9
KSwgNTApOworfSk7CisKK3Rlc3Q4ID0gYXN5bmNfdGVzdCgnQ2FsbGluZyBSZWFkYWJsZVN0cmVh
bSBjbG9zZSBhZnRlciBlcnJvciBzaG91bGQgaGF2ZSBubyBlZmZlY3QnKTsKK3Rlc3Q4LnN0ZXAo
ZnVuY3Rpb24oKQoreworICAgIHZhciBjbG9zZUZ1bmN0aW9uOworICAgIHZhciBlcnJvckZ1bmN0
aW9uOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSgKKyAgICB7IHN0YXJ0OgorICAg
ICAgICBmdW5jdGlvbihlbnF1ZXVlLCBjbG9zZSwgZXJyb3IpIHsKKyAgICAgICAgICAgIGNsb3Nl
RnVuY3Rpb24gPSBjbG9zZTsKKyAgICAgICAgICAgIGVycm9yRnVuY3Rpb24gPSBlcnJvcjsKKyAg
ICAgICAgfQorICAgIH0pOworCisgICAgdmFyIGNvdW50ZXIgPSAwOworICAgIHJzLmNsb3NlZC50
aGVuKHRlc3Q4LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hl
ZCgpOworICAgIH0pLCB0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGNvdW50
ZXIrKzsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAyKTsKKyAgICB9KSk7CisgICAg
cnMucmVhZHkudGhlbih0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGNvdW50
ZXIrKzsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhjb3VudGVyLCAxKTsKKyAgICB9KSk7CisKKyAg
ICBhc3NlcnRfZXF1YWxzKHJzLnN0YXRlLCAnd2FpdGluZycpOworICAgIGVycm9yRnVuY3Rpb24o
KTsKKyAgICBhc3NlcnRfZXF1YWxzKHJzLnN0YXRlLCAnZXJyb3JlZCcpOworICAgIGNsb3NlRnVu
Y3Rpb24oKTsKKyAgICBhc3NlcnRfZXF1YWxzKHJzLnN0YXRlLCAnZXJyb3JlZCcpOworCisgICAg
c2V0VGltZW91dCh0ZXN0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHRlc3Q4LmRv
bmUoKTsKKyAgICB9KSwgNTApOworfSk7CisKK3Rlc3Q5ID0gYXN5bmNfdGVzdCgnQ2FsbGluZyBS
ZWFkYWJsZVN0cmVhbSBlcnJvciBzZXZlcmFsIHRpbWVzIHNob3VsZCBoYXZlIG5vIGVmZmVjdCcp
OwordGVzdDkuc3RlcChmdW5jdGlvbigpCit7CisgICAgdmFyIGNsb3NlRnVuY3Rpb247CisgICAg
dmFyIGVycm9yRnVuY3Rpb247CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAg
IHsgc3RhcnQ6CisgICAgICAgIGZ1bmN0aW9uKGVucXVldWUsIGNsb3NlLCBlcnJvcikgeworICAg
ICAgICAgICAgY2xvc2VGdW5jdGlvbiA9IGNsb3NlOworICAgICAgICAgICAgZXJyb3JGdW5jdGlv
biA9IGVycm9yOworICAgICAgICB9CisgICAgfSk7CisKKyAgICB2YXIgY291bnRlciA9IDA7Cisg
ICAgcnMuY2xvc2VkLnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBj
b3VudGVyKys7CisgICAgfSkpOworICAgIHJzLnJlYWR5LnRoZW4odGVzdDkuc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgeworICAgICAgICBjb3VudGVyKys7CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291
bnRlciwgMSk7CisgICAgfSkpOworCisgICAgYXNzZXJ0X2VxdWFscyhycy5zdGF0ZSwgJ3dhaXRp
bmcnKTsKKyAgICBlcnJvckZ1bmN0aW9uKCk7CisgICAgYXNzZXJ0X2VxdWFscyhycy5zdGF0ZSwg
J2Vycm9yZWQnKTsKKyAgICBlcnJvckZ1bmN0aW9uKCk7CisgICAgYXNzZXJ0X2VxdWFscyhycy5z
dGF0ZSwgJ2Vycm9yZWQnKTsKKworICAgIHNldFRpbWVvdXQodGVzdDkuc3RlcF9mdW5jKGZ1bmN0
aW9uKCkgeworICAgICAgICB0ZXN0OS5kb25lKCk7CisgICAgfSksIDUwKTsKK30pOworCiAKIDwv
c2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>249570</attachid>
            <date>2015-03-27 08:10:04 -0700</date>
            <delta_ts>2015-05-06 03:36:23 -0700</delta_ts>
            <desc>Adding reader support</desc>
            <filename>bug-141162-20150327160924.patch</filename>
            <type>text/plain</type>
            <size>18779</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgyMDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjk4MTc2ZmZlMGMzMjBk
ODdhM2FjZTMxMjY3ODQzNTcyYjdiYTQzNi4uYzJjMTAzOTk1OWViNWI2ZTM0ZmNjNjU0OTVmODJj
Yzg0OWE2MjJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDE1LTAzLTI3ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVhbXMgQVBJ
XSBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzdGFydCBmdW5jdGlvbiBzaG91bGQgYmUgYWJs
ZSB0byBlcnJvciB0aGUgc3RyZWFtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDExNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBJbXBsZW1lbnRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGVycm9y
IGZ1bmN0aW9uIHBhc3NlZCBhcyBwYXJhbWV0ZXIgdG8gdGhlICJzdGFydCIgZnVuY3Rpb24gb2Yg
dGhlIEpTIHNvdXJjZS4KKyAgICAgICAgSXQgYmFzaWNhbGx5IGNoYW5nZXMgdGhlIHN0YXRlIG9m
IHRoZSBzdHJlYW0gdG8gZXJyb3JlZCwgcmVzb2x2ZXMgdGhlIHJlYWR5IHByb21pc2UgYW5kIHJl
amVjdHMgdGhlIGNsb3NlZCBwcm9taXNlLgorICAgICAgICBBZGRpbmcgc3VwcG9ydCB0byByZWpl
Y3QgcHJvbWlzZSB3aXRoIGFueSBKU1ZhbHVlLgorCisgICAgICAgIFBhdGNoIGlzIGNvdmVyZWQg
YnkgYWRkZWQgdGVzdHMgaW4gcmVhZGFibGVzdHJlYW0tc3RhcnQuaHRtbC4KKworICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQpOiBQYXJ0aWFsbHkgaW1wbGVtZW50
cyBodHRwczovL3N0cmVhbXMuc3BlYy53aGF0d2cub3JnLyNyZWxlYXNlLXJlYWRhYmxlLXN0cmVh
bS1yZWFkZXIgaW4gY2FzZSBvZiAiZXJyb3JlZCIgc3RhdGUuCisgICAgICAgICogTW9kdWxlcy9z
dHJlYW1zL1JlYWRhYmxlU3RyZWFtLmg6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVh
bTo6c291cmNlKTogQWNjZXNzIHRvIHRoZSBSZWFkYWJsZVN0cmVhbVNvdXJjZSwgdXNlZCB0byBy
ZXRyaWV2ZSB0aGUgc291cmNlIGZyb20gSlMgY2FsbGJhY2tzLgorICAgICAgICAqIE1vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFk
YWJsZVN0cmVhbVJlYWRlcjo6c2V0U3RyZWFtKTogR29pbmcgdG8gJ2Vycm9yZWQnIGRpcmVjdGx5
IGlmIHJlbGF0ZWQgc3RyZWFtIGlzIGFscmVhZHkgZXJyb3JlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQpOiBIYW5kbGluZyBvZiBjbG9zZWQgcmVqZWN0
aW9uIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1SZWFkZXI6OmNo
YW5nZVN0YXRlVG9DbG9zZWQpOiByZWxlYXNpbmcgc3RyZWFtIHdoZW4gYmVpbmcgY2xvc2VkLgor
ICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9FcnJv
cmVkKTogQ2FsbGluZyBjbG9zZWQgcmVqZWN0aW9uIGNhbGxiYWNrIGFuZCByZWxlYXNpbmcgc3Ry
ZWFtIHdoZW4gY2hhbmdpbmcgc3RhdGUgdG8gZXJyb3JlZC4KKyAgICAgICAgKiBNb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaDogQWRkaW5nIGVycm9yKCkgbWV0aG9kIHRvIGdl
dCB0aGUgZXJyb3IgdmFsdWUgZnJvbSB0aGUgcHJvbWlzZSByZWplY3Rpb24gY2FsbGJhY2suCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpE
ZWZlcnJlZFdyYXBwZXI6OnJlamVjdCk6IEVuYWJsZSByZWplY3Rpb24gb2YgYW55IEpTIHZhbHVl
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKTogUmVq
ZWN0aW9uIHdpdGggdGhlIGVycm9yIHZhbHVlLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRh
YmxlU3RyZWFtSlNTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZXJyb3JSZWFkYWJsZVN0
cmVhbUZ1bmN0aW9uKTogSW1wbGVtZW50IGVycm9yIHN0b3JhZ2UgZnVuY3Rpb25hbGl0eS4KKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZVJlYWRlcik6IFN0b3JlcyBl
cnJvciBpbiByZWFkZXIgaWYgc3RyZWFtIGlzIGFscmVhZHkgZXJyb3JlZC4KKyAgICAgICAgKFdl
YkNvcmU6OlJlYWRhYmxlSlNTdHJlYW06OnN0b3JlRXJyb3IpOiBKUyBlcnJvciBzdG9yYWdlLgor
ICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbVJlYWRlcjo6c3RvcmVFcnJvcik6IERp
dHRvLgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaDoKKwog
MjAxNS0wMy0yNSAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQ1NT
IGJsZW5kIG1vZGVzIGRvIG5vdCBwYXJzZSB3aGVuIGluIHRoZSBzaGFkb3cgdHJlZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXgg
M2ZlM2YzNzc2Njc5MTE3OTM5ZmRhNWMxYmRkMjM1NmUxZjRjNWNlNC4uNDJiMzA1NjY4OTYzMmE5
ZjdiYTA2OGFlNWZlYTkxNDU0ODg3ODEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCkBAIC02OCw2ICs2OCwxNiBAQCB2b2lkIFJl
YWRhYmxlU3RyZWFtOjpjaGFuZ2VTdGF0ZVRvQ2xvc2VkKCkKICAgICBBU1NFUlQoIW1fcmVhZGVy
KTsKIH0KIAordm9pZCBSZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQoKQorewor
ICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpSZWFkYWJsZSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fc3RhdGUgPSBTdGF0ZTo6RXJyb3JlZDsKKyAgICBpZiAobV9yZWFkZXIpCisgICAgICAgIG1f
cmVhZGVyLT5jaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOworICAgIEFTU0VSVCghbV9yZWFkZXIpOwor
fQorCiB2b2lkIFJlYWRhYmxlU3RyZWFtOjpzdGFydCgpCiB7CiAgICAgLy8gRklYTUU6IEltcGxl
bWVudCBwdWxsaW5nIGRhdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmgKaW5kZXggM2YzNzNjNzk3MmI3ZjI1YTNmMTE4MjA4M2VkYWZjNzdmY2Ni
OGY4Zi4uODY1MTVlODUyOWQ5NGIwOTliZDAyYTg0NTc1M2FlZWRiYjhjMDJkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmgKQEAgLTYzLDgg
KzYzLDEyIEBAIHB1YmxpYzoKIAogICAgIFN0YXRlIGludGVybmFsU3RhdGUoKSB7IHJldHVybiBt
X3N0YXRlOyB9CiAKKyAgICAvLyBBUEkgdXNlZCBmcm9tIHRoZSBKUyBiaW5kaW5nLgogICAgIHZv
aWQgc3RhcnQoKTsKICAgICB2b2lkIGNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKKyAgICB2b2lkIGNo
YW5nZVN0YXRlVG9FcnJvcmVkKCk7CisKKyAgICBSZWFkYWJsZVN0cmVhbVNvdXJjZSYgc291cmNl
KCkgeyByZXR1cm4gbV9zb3VyY2UuZ2V0KCk7IH0KIAogcHJvdGVjdGVkOgogICAgIFJlYWRhYmxl
U3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8UmVhZGFibGVTdHJlYW1Tb3VyY2U+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbVJlYWRlci5jcHAKaW5kZXggZjRmYzFkNTU1N2RlNTM0NGM1MjE1YjBjMmQzMGU3MDMw
YWI2ZjU3NC4uNTI3OTc3OWI5Y2VjOTk1ZDdmOTg3ZDE0N2EyN2E1MWM4MjI3OWFhYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1S
ZWFkZXIuY3BwCkBAIC02NCw2ICs2NCwxMCBAQCB2b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpz
ZXRTdHJlYW0oUmVhZGFibGVTdHJlYW0mIHN0cmVhbSkKICAgICAgICAgY2hhbmdlU3RhdGVUb0Ns
b3NlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmIChzdHJlYW0uaW50ZXJuYWxT
dGF0ZSgpID09IFJlYWRhYmxlU3RyZWFtOjpTdGF0ZTo6RXJyb3JlZCkgeworICAgICAgICBjaGFu
Z2VTdGF0ZVRvRXJyb3JlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQogfQogCiB2b2lkIFJl
YWRhYmxlU3RyZWFtUmVhZGVyOjpyZWxlYXNlU3RyZWFtKCkKQEAgLTc0LDEzICs3OCwxOCBAQCB2
b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpyZWxlYXNlU3RyZWFtKCkKICAgICBtX3N0cmVhbSA9
IG51bGxwdHI7CiB9CiAKLXZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNsb3NlZChDbG9zZWRT
dWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBDbG9zZWRFcnJvckNhbGxiYWNrKQordm9p
ZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKENsb3NlZFN1Y2Nlc3NDYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2ssIENsb3NlZEVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaykKIHsKICAgICBp
ZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2xvc2VkKSB7CiAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygp
OwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpFcnJv
cmVkKSB7CisgICAgICAgIGVycm9yQ2FsbGJhY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
ICAgICBtX2Nsb3NlZFN1Y2Nlc3NDYWxsYmFjayA9IFdURjo6bW92ZShzdWNjZXNzQ2FsbGJhY2sp
OworICAgIG1fY2xvc2VkRXJyb3JDYWxsYmFjayA9IFdURjo6bW92ZShlcnJvckNhbGxiYWNrKTsK
IH0KIAogdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2hhbmdlU3RhdGVUb0Nsb3NlZCgpCkBA
IC05Myw4ICsxMDIsMjggQEAgdm9pZCBSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2hhbmdlU3RhdGVU
b0Nsb3NlZCgpCiAgICAgICAgIGNsb3NlZFN1Y2Nlc3NDYWxsYmFjaygpOwogICAgIH0KICAgICBB
U1NFUlQoIW1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrKTsKLSAgICByZWxlYXNlU3RyZWFtKCk7Cisg
ICAgbV9jbG9zZWRFcnJvckNhbGxiYWNrID0gbnVsbHB0cjsKKwogICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQgcmVhZCBwcm9taXNlIGZ1bGZpbGxpbmcuCisKKyAgICByZWxlYXNlU3RyZWFtKCk7Cit9
CisKK3ZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9FcnJvcmVkKCkKK3sK
KyAgICBBU1NFUlQobV9zdGF0ZSA9PSBTdGF0ZTo6UmVhZGFibGUpOworICAgIG1fc3RhdGUgPSBT
dGF0ZTo6RXJyb3JlZDsKKworICAgIGlmIChtX2Nsb3NlZEVycm9yQ2FsbGJhY2spIHsKKyAgICAg
ICAgQ2xvc2VkRXJyb3JDYWxsYmFjayBjbG9zZWRFcnJvckNhbGxiYWNrID0gV1RGOjptb3ZlKG1f
Y2xvc2VkRXJyb3JDYWxsYmFjayk7CisgICAgICAgIGNsb3NlZEVycm9yQ2FsbGJhY2soKTsKKyAg
ICB9CisgICAgQVNTRVJUKCFtX2Nsb3NlZEVycm9yQ2FsbGJhY2spOworICAgIG1fY2xvc2VkU3Vj
Y2Vzc0NhbGxiYWNrID0gbnVsbHB0cjsKKworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVhZCBw
cm9taXNlIHJlamVjdGlvbi4KKworICAgIHJlbGVhc2VTdHJlYW0oKTsKIH0KIAogY29uc3QgY2hh
ciogUmVhZGFibGVTdHJlYW1SZWFkZXI6OmFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVh
ZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFk
ZXIuaAppbmRleCAxNzQ1ODllZWZhYTE2MjNkZjAxYTAwNGFjYTE3MDI2MjdjOTM5NWEyLi41MTNm
MmVlYjBjYzQyZTYyNDdhOGFiMDZhMWM1MDc5ZDAxN2FmZmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuaApAQCAtMzUs
NiArMzUsNyBAQAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlw
dFdyYXBwYWJsZS5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8cnVudGltZS9K
U0NKU1ZhbHVlLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAKQEAgLTYzLDYgKzY0LDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VkKENsb3Nl
ZFN1Y2Nlc3NDYWxsYmFjaywgQ2xvc2VkRXJyb3JDYWxsYmFjayk7CiAKICAgICB2b2lkIGNoYW5n
ZVN0YXRlVG9DbG9zZWQoKTsKKyAgICB2b2lkIGNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7CisKKyAg
ICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBlcnJvcigpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIFJl
YWRhYmxlU3RyZWFtUmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKQEAgLTc5LDYgKzgz
LDcgQEAgcHJpdmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OlJlYWRhYmxlIH07CiAK
ICAgICBDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgbV9jbG9zZWRTdWNjZXNzQ2FsbGJhY2s7CisgICAg
Q2xvc2VkRXJyb3JDYWxsYmFjayBtX2Nsb3NlZEVycm9yQ2FsbGJhY2s7CiB9OwogCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCmluZGV4IDE4MDMzZGM4MDhjYjlj
NWQ5ODEyNjlhOGRhOTNjNDQ4YTY0Mzg1N2IuLjk1MmNkZGJjMjA4MTM1M2NkODA2Y2RjMDUzYzI4
NTFiMWJjOTc5NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5o
CkBAIC04Miw2ICs4MiwxNCBAQCBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChj
b25zdCBzdGQ6Om51bGxwdHJfdCYpCiB9CiAKIHRlbXBsYXRlPD4KK2lubGluZSB2b2lkIERlZmVy
cmVkV3JhcHBlcjo6cmVqZWN0KGNvbnN0IEpTQzo6SlNWYWx1ZSYgdmFsdWUpCit7CisgICAgSlND
OjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICByZWplY3QoZXhlYywgdmFsdWUpOwor
fQorCit0ZW1wbGF0ZTw+CiBpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlc29sdmU8U3Ry
aW5nPihjb25zdCBTdHJpbmcmIHJlc3VsdCkKIHsKICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9
IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCmluZGV4
IGI1MGExNzI1YjA1YmE0M2VlNDM4ZWY0OTUwMzY5ODU2MWJiMGU3ZTcuLmE2OWU1NTQyNTQzNGMx
MDI4NWE4YWQ3NTY2OTAyMTE1Zjg3YjA1N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCkBAIC04
MSw4ICs4MSw3IEBAIEpTVmFsdWUgSlNSZWFkYWJsZVN0cmVhbVJlYWRlcjo6Y2xvc2VkKEV4ZWNT
dGF0ZSogZXhlYykgY29uc3QKICAgICAgICAgd3JhcHBlci5yZXNvbHZlKGpzVW5kZWZpbmVkKCkp
OwogICAgIH07CiAgICAgYXV0byBmYWlsdXJlQ2FsbGJhY2sgPSBbdGhpcywgd3JhcHBlcl0oKSBt
dXRhYmxlIHsKLSAgICAgICAgLy8gRklYTUU6IHJldHVybiBzdG9yZWQgZXJyb3IuCi0gICAgICAg
IHdyYXBwZXIucmVqZWN0KCZpbXBsKCkpOworICAgICAgICB3cmFwcGVyLnJlamVjdChpbXBsKCku
ZXJyb3IoKSk7CiAgICAgfTsKIAogICAgIGltcGwoKS5jbG9zZWQoV1RGOjptb3ZlKHN1Y2Nlc3ND
YWxsYmFjayksIFdURjo6bW92ZShmYWlsdXJlQ2FsbGJhY2spKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKaW5kZXggODdm
NDYyMGM3ZWFmNThiYTQ5YmFkOWUyMDA4ZGM0MTNmMTBlM2FkYi4uZjkxM2Y1ZDliYmFiY2M5MDc0
MTNlNjMxOGQ4MjE0MmNmMjcyZGFmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKQEAgLTEyNyw5ICsxMjcsMTEgQEAg
c3RhdGljIGlubGluZSBKU0Z1bmN0aW9uKiBjcmVhdGVSZWFkYWJsZVN0cmVhbUNsb3NlRnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoZXhlYy0+
dm0oKSwgZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLCAwLCBTdHJpbmcoKSwgY2xvc2VS
ZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKTsKIH0KIAotc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgZXJyb3JSZWFkYWJsZVN0cmVhbUZ1bmN0aW9uKEV4ZWNTdGF0ZSopCitzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlcnJvclJlYWRhYmxlU3RyZWFtRnVuY3Rpb24o
RXhlY1N0YXRlKiBleGVjKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgSlNWYWx1ZSBl
cnJvciA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IGV4ZWMtPmFyZ3VtZW50KDApIDogY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBmdW5jdGlvbiBjYWxsZWQuIikpOworICAg
IFJlYWRhYmxlSlNTdHJlYW0mIHJlYWRhYmxlU3RyZWFtID0gZ2V0UmVhZGFibGVKU1N0cmVhbShl
eGVjKTsKKyAgICByZWFkYWJsZVN0cmVhbS5zdG9yZUVycm9yKGV4ZWMsIGVycm9yKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogCkBAIC0yMDMsNyArMjA1
LDEzIEBAIFJlZjxSZWFkYWJsZUpTU3RyZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlCiAKIFJlZjxSZWFkYWJsZVN0cmVhbVJlYWRl
cj4gUmVhZGFibGVKU1N0cmVhbTo6Y3JlYXRlUmVhZGVyKCkKIHsKLSAgICByZXR1cm4gUmVhZGFi
bGVKU1N0cmVhbVJlYWRlcjo6Y3JlYXRlKCp0aGlzKS5sZWFrUmVmKCk7CisgICAgUmVmPFJlYWRh
YmxlSlNTdHJlYW1SZWFkZXI+IHJlYWRlciA9IFJlYWRhYmxlSlNTdHJlYW1SZWFkZXI6OmNyZWF0
ZSgqdGhpcyk7CisgICAgaWYgKG1fZXJyb3IpIHsKKyAgICAgICAgSlNSZWFkYWJsZVN0cmVhbSog
anNSZWFkYWJsZVN0cmVhbSA9IHN0YXRpY19jYXN0PFJlYWRhYmxlU3RyZWFtSlNTb3VyY2UmPihz
b3VyY2UoKSkuanNSZWFkYWJsZVN0cmVhbSgpOworICAgICAgICBBU1NFUlQoanNSZWFkYWJsZVN0
cmVhbSk7CisgICAgICAgIHJlYWRlci0+c3RvcmVFcnJvcihqc1JlYWRhYmxlU3RyZWFtLT5nbG9i
YWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBtX2Vycm9yLmdldCgpKTsKKyAgICB9CisgICAgcmV0
dXJuIHJlYWRlci5sZWFrUmVmKCk7CiB9CiAKIFJlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNT
dHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVm
PFJlYWRhYmxlU3RyZWFtSlNTb3VyY2U+JiYgc291cmNlKQpAQCAtMjExLDYgKzIxOSwxOSBAQCBS
ZWFkYWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleAogewogfQogCit2b2lkIFJlYWRhYmxlSlNTdHJlYW06OnN0
b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCit7CisgICAgaWYg
KG1fZXJyb3IpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Vycm9yLnNldChleGVjLT52bSgpLCBl
cnJvcik7CisgICAgaWYgKHJlYWRlcigpKSB7CisgICAgICAgIFJlYWRhYmxlSlNTdHJlYW1SZWFk
ZXIqIHN0cmVhbVJlYWRlciA9IHN0YXRpY19jYXN0PFJlYWRhYmxlSlNTdHJlYW1SZWFkZXIqPihy
ZWFkZXIoKSk7CisgICAgICAgIEFTU0VSVChzdHJlYW1SZWFkZXIpOworICAgICAgICBzdHJlYW1S
ZWFkZXItPnN0b3JlRXJyb3IoZXhlYywgZXJyb3IpOworICAgIH0KKyAgICBjaGFuZ2VTdGF0ZVRv
RXJyb3JlZCgpOworfQorCiBSZWY8UmVhZGFibGVKU1N0cmVhbVJlYWRlcj4gUmVhZGFibGVKU1N0
cmVhbVJlYWRlcjo6Y3JlYXRlKFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSkKIHsKICAgICBhdXRv
IHJlYWRhYmxlU3RyZWFtUmVhZGVyID0gYWRvcHRSZWYoKm5ldyBSZWFkYWJsZUpTU3RyZWFtUmVh
ZGVyKHN0cmVhbS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpKTsKQEAgLTIyMyw2ICsyNDQsMTEg
QEAgUmVhZGFibGVKU1N0cmVhbVJlYWRlcjo6UmVhZGFibGVKU1N0cmVhbVJlYWRlcihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGUKIHsKIH0KIAordm9pZCBSZWFkYWJsZUpTU3RyZWFt
UmVhZGVyOjpzdG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGVycm9yKQor
eworICAgIG1fZXJyb3Iuc2V0KGV4ZWMtPnZtKCksIGVycm9yKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaAppbmRleCA2ZjRhZDdhY2QwN2U4MGFhZjgyOTFhZDZj
MWU5NWJjN2I5YjIzMTU2Li5hMTA2NzdkNmZmOGEwMWVmYTdhZTQ5ZjQ2NDQ3MTQ2YzA0NDVkYTli
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUpT
U291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1K
U1NvdXJjZS5oCkBAIC00NSw2ICs0NSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEpTUmVhZGFibGVTdHJlYW07CitjbGFzcyBSZWFkYWJsZUpTU3RyZWFtUmVhZGVyOwogCiBjbGFz
cyBSZWFkYWJsZVN0cmVhbUpTU291cmNlOiBwdWJsaWMgUmVhZGFibGVTdHJlYW1Tb3VyY2Ugewog
cHVibGljOgpAQCAtNTIsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgflJlYWRhYmxlU3RyZWFtSlNT
b3VyY2UoKSB7IH0KIAogICAgIHZvaWQgc3RhcnQoSlNDOjpFeGVjU3RhdGUqLCBKU1JlYWRhYmxl
U3RyZWFtKik7CisgICAgSlNSZWFkYWJsZVN0cmVhbSoganNSZWFkYWJsZVN0cmVhbSgpIHsgcmV0
dXJuIG1fcmVhZGFibGVTdHJlYW07IH0KIAogcHJpdmF0ZToKICAgICBSZWFkYWJsZVN0cmVhbUpT
U291cmNlKEpTQzo6RXhlY1N0YXRlKik7CkBAIC03MywxNiArNzUsMjMgQEAgY2xhc3MgUmVhZGFi
bGVKU1N0cmVhbTogcHVibGljIFJlYWRhYmxlU3RyZWFtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPFJlYWRhYmxlSlNTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUmVm
PFJlYWRhYmxlU3RyZWFtSlNTb3VyY2U+JiYpOwogICAgIHZpcnR1YWwgUmVmPFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyPiBjcmVhdGVSZWFkZXIoKSBvdmVycmlkZTsKKyAgICB2b2lkIHN0b3JlRXJyb3Io
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpOworICAgIEpTQzo6SlNWYWx1ZSBlcnJvcigp
IHsgcmV0dXJuIG1fZXJyb3IuZ2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBSZWFkYWJsZUpTU3Ry
ZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBSZWY8UmVhZGFibGVTdHJlYW1KU1NvdXJjZT4m
Jik7Ci0KKyAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fZXJyb3I7CiB9OwogCiBjbGFz
cyBSZWFkYWJsZUpTU3RyZWFtUmVhZGVyOiBwdWJsaWMgUmVhZGFibGVTdHJlYW1SZWFkZXIgewog
cHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVhZGFibGVKU1N0cmVhbVJlYWRlcj4gY3JlYXRlKFJl
YWRhYmxlSlNTdHJlYW0mKTsKKyAgICB2b2lkIHN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTVmFsdWUpOworICAgIEpTQzo6SlNWYWx1ZSBlcnJvcigpIHsgcmV0dXJuIG1fZXJyb3Iu
Z2V0KCk7IH0KKwogcHJpdmF0ZToKICAgICBSZWFkYWJsZUpTU3RyZWFtUmVhZGVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fZXJyb3I7
CiB9OwogCiB2b2lkIHNldEludGVybmFsU2xvdFRvT2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgSlND
OjpKU1ZhbHVlLCBKU0M6OlByaXZhdGVOYW1lJiwgSlNDOjpKU1ZhbHVlKTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhNjc0
YTBkZTZmZDUzNjgxMzJjZGIyN2ZjZGU4MDE3NWVmYmY1ZjYxLi5jOTM3YzYzYWJmY2ZkMmE1OWMx
YWYwMDJjOWMwODQxMTY1YjQ4ZjMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTUtMDMtMjcg
IFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVu
biBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFt
cyBBUEldIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHN0YXJ0IGZ1bmN0aW9uIHNob3VsZCBi
ZSBhYmxlIHRvIGVycm9yIHRoZSBzdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0MTE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGluZyB0ZXN0cyByZWxhdGVkIHRvIGNhbGxpbmcgZXJyb3Io
KSBmdW5jdGlvbiBpbiBSZWFkYWJsZVN0cmVhbSBzb3VyY2Ugc3RhcnQgSlMgZnVuY3Rpb24uCisK
KyAgICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlc3RyZWFtLXN0YXJ0LWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBzdHJlYW1zL3JlYWRhYmxlc3RyZWFtLXN0YXJ0Lmh0bWw6CisKIDIwMTUtMDMtMjUg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBIZWFwIHZhcmlhYmxl
cyBzaG91bGRuJ3QgZW5kIHVwIGluIHRoZSBzdGFjayBmcmFtZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1zdGFydC1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlYWRhYmxlc3RyZWFtLXN0YXJ0LWV4cGVjdGVkLnR4dAppbmRleCBkNTNi
YWEyMTk4MTYxYTdlMmQwZGFiYTg1OTg5MTQ5N2Q4MTkwNzNkLi5lMTAxNTY1OTNlNzZhNDllZjcx
ODNhYWNkZTk5MjVmNTYwMjBkOGUyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
YWRhYmxlc3RyZWFtLXN0YXJ0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlYWRhYmxlc3RyZWFtLXN0YXJ0LWV4cGVjdGVkLnR4dApAQCAtNiw0ICs2LDggQEAgUEFTUyBS
ZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSB0aGUgc3RyZWFtCiBQ
QVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IGNsb3NlIGZ1bmN0aW9uIHNob3VsZCBiZSBhYmxlIHRv
IGNsb3NlIHRoZSBzdHJlYW0gYXQgYW55IHRpbWUgCiBQQVNTIENhbGxpbmcgUmVhZGFibGVTdHJl
YW0gY2xvc2UgZnVuY3Rpb24gc2V2ZXJhbCB0aW1lcyBzaG91bGQgaGF2ZSBubyBlZmZlY3QgCiBQ
QVNTIFJlYWRhYmxlU3RyZWFtIGluIGNsb3NlZCBzdGF0ZSBzaG91bGQgbm90IGJlIHRpZWQgdG8g
YSBwYXJ0aWN1bGFyIHJlYWRlciAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJl
IGFibGUgdG8gZXJyb3IgdGhlIHN0cmVhbSAKK1BBU1MgUmVhZGFibGVTdHJlYW0gc3RhcnQgZXJy
b3IgZnVuY3Rpb24gc2hvdWxkIGJlIGFibGUgdG8gZXJyb3IgdGhlIHN0cmVhbSBhdCBhbnkgdGlt
ZSAKK1BBU1MgQ2FsbGluZyBSZWFkYWJsZVN0cmVhbSBjbG9zZSBmdW5jdGlvbiBzZXZlcmFsIHRp
bWVzIHNob3VsZCBoYXZlIG5vIGVmZmVjdCAKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW4gZXJyb3Jl
ZCBzdGF0ZSBzaG91bGQgbm90IGJlIHRpZWQgdG8gYSBwYXJ0aWN1bGFyIHJlYWRlciAKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1zdGFydC5odG1sIGIv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZXN0cmVhbS1zdGFydC5odG1sCmluZGV4IGZkZmVm
NTY1MThhYjRmNGJkNjhiYTJjYTI3YzFjNWRhYzYyMmQ3M2IuLmU2MmRiMTA0MTQ5OTAxMDRkY2Uz
YzFjMWRhMTNlM2Y4ZjcyZGY3YjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVh
ZGFibGVzdHJlYW0tc3RhcnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxl
c3RyZWFtLXN0YXJ0Lmh0bWwKQEAgLTcxLDcgKzcxLDcgQEAgdDEuc3RlcChmdW5jdGlvbigpCiAg
ICAgc2V0VGltZW91dCh0MS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF90
cnVlKGNsb3NlZCk7CiAgICAgICAgIHQxLmRvbmUoKTsKLSAgICB9KSwgMTApOworICAgIH0pLCA1
MCk7CiB9KTsKIAogdDIgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBzdGFydCBjbG9zZSBm
dW5jdGlvbiBzaG91bGQgYmUgYWJsZSB0byBjbG9zZSB0aGUgc3RyZWFtIGF0IGFueSB0aW1lJyk7
CkBAIC05NCw5ICs5NCw4IEBAIHQyLnN0ZXAoZnVuY3Rpb24oKQogICAgIHNldFRpbWVvdXQodDIu
c3RlcF9mdW5jKGZ1bmN0aW9uKCkgewogICAgICAgICBhc3NlcnRfdHJ1ZShjbG9zZWQpOwogICAg
ICAgICB0Mi5kb25lKCk7Ci0gICAgfSksIDEwKTsKKyAgICB9KSwgNTApOwogfSk7Ci0KIHQzID0g
YXN5bmNfdGVzdCgnQ2FsbGluZyBSZWFkYWJsZVN0cmVhbSBjbG9zZSBmdW5jdGlvbiBzZXZlcmFs
IHRpbWVzIHNob3VsZCBoYXZlIG5vIGVmZmVjdCcpOwogdDMuc3RlcChmdW5jdGlvbigpCiB7CkBA
IC0xMTgsNyArMTE3LDcgQEAgdDMuc3RlcChmdW5jdGlvbigpCiAgICAgc2V0VGltZW91dCh0My5z
dGVwX2Z1bmMoZnVuY3Rpb24oKSB7CiAgICAgICAgIGFzc2VydF9lcXVhbHMoY2xvc2VkLCAxKTsK
ICAgICAgICAgdDMuZG9uZSgpOwotICAgIH0pLCAxMCk7CisgICAgfSksIDUwKTsKIH0pOwogCiB0
NCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGluIGNsb3NlZCBzdGF0ZSBzaG91bGQgbm90
IGJlIHRpZWQgdG8gYSBwYXJ0aWN1bGFyIHJlYWRlcicpOwpAQCAtMTM3LDcgKzEzNiwxMDAgQEAg
dDQuc3RlcChmdW5jdGlvbigpCiAgICAgfSkpOwogICAgIHNldFRpbWVvdXQodDQuc3RlcF9mdW5j
KGZ1bmN0aW9uKCkgewogICAgICAgICB0NC5kb25lKCk7Ci0gICAgfSksIDEwKTsKKyAgICB9KSwg
NTApOworfSk7CisKK3Q1ID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxk
IGJlIGFibGUgdG8gZXJyb3IgdGhlIHN0cmVhbScpOwordDUuc3RlcChmdW5jdGlvbigpCit7Cisg
ICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsgc3RhcnQ6CisgICAgICAgIGZ1
bmN0aW9uKGVucXVldWUsIGNsb3NlLCBlcnJvcikgeworICAgICAgICAgICAgZXJyb3IoKTsKKyAg
ICAgICAgfQorICAgIH0pOworICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgICB2
YXIgZXJyb3JlZCA9IGZhbHNlOworICAgIHJlYWRlci5jbG9zZWQudGhlbih0NS5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQoJ2Nsb3NlZCBwcm9taXNlIHNo
b3VsZCBiZSByZWplY3RlZCcpOworICAgIH0pLCB0NS5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGVycm9yZWQgPSB0cnVlOworICAgIH0pKTsKKyAgICBzZXRUaW1lb3V0KHQ1LnN0ZXBf
ZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3RydWUoZXJyb3JlZCk7CisgICAgICAg
IHQ1LmRvbmUoKTsKKyAgICB9KSwgNTApOworfSk7CisKK3Q2ID0gYXN5bmNfdGVzdCgnUmVhZGFi
bGVTdHJlYW0gc3RhcnQgZXJyb3IgZnVuY3Rpb24gc2hvdWxkIGJlIGFibGUgdG8gZXJyb3IgdGhl
IHN0cmVhbSBhdCBhbnkgdGltZScpOwordDYuc3RlcChmdW5jdGlvbigpCit7CisgICAgdmFyIGVy
cm9yRnVuY3Rpb247CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKAorICAgIHsgc3Rh
cnQ6CisgICAgICAgIGZ1bmN0aW9uKGVucXVldWUsIGNsb3NlLCBlcnJvcikgeworICAgICAgICAg
ICAgZXJyb3JGdW5jdGlvbiA9IGVycm9yOworICAgICAgICB9CisgICAgfSk7CisgICAgdmFyIHJl
YWRlciA9IHJzLmdldFJlYWRlcigpOworICAgIHZhciBlcnJvcmVkID0gZmFsc2U7CisgICAgcmVh
ZGVyLmNsb3NlZC50aGVuKHQ2LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0
X3VucmVhY2hlZCgnY2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkJyk7CisgICAgfSks
IHQ2LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgZXJyb3JlZCA9IHRydWU7CisgICAg
fSkpOworICAgIGFzc2VydF9mYWxzZShlcnJvcmVkKTsKKyAgICBlcnJvckZ1bmN0aW9uKCk7Cisg
ICAgc2V0VGltZW91dCh0Ni5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF90
cnVlKGVycm9yZWQpOworICAgICAgICB0Ni5kb25lKCk7CisgICAgfSksIDUwKTsKK30pOworCit0
NyA9IGFzeW5jX3Rlc3QoJ0NhbGxpbmcgUmVhZGFibGVTdHJlYW0gY2xvc2UgZnVuY3Rpb24gc2V2
ZXJhbCB0aW1lcyBzaG91bGQgaGF2ZSBubyBlZmZlY3QnKTsKK3Q3LnN0ZXAoZnVuY3Rpb24oKQor
eworICAgIHZhciBlcnJvckZ1bmN0aW9uOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSgKKyAgICB7IHN0YXJ0OgorICAgICAgICBmdW5jdGlvbihlbnF1ZXVlLCBjbG9zZSwgZXJyb3Ip
IHsKKyAgICAgICAgICAgIGVycm9yRnVuY3Rpb24gPSBlcnJvcjsKKyAgICAgICAgfQorICAgIH0p
OworICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgICB2YXIgZXJyb3JlZCA9IDA7
CisgICAgcmVhZGVyLmNsb3NlZC50aGVuKHQ3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAg
ICAgYXNzZXJ0X3VucmVhY2hlZCgnY2xvc2VkIHByb21pc2Ugc2hvdWxkIGJlIHJlamVjdGVkJyk7
CisgICAgfSksIHQ3LnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgZXJyb3JlZCsrOwor
ICAgIH0pKTsKKyAgICBhc3NlcnRfZXF1YWxzKGVycm9yZWQsIDApOworICAgIGVycm9yRnVuY3Rp
b24oKTsKKyAgICBlcnJvckZ1bmN0aW9uKCk7CisgICAgc2V0VGltZW91dCh0Ny5zdGVwX2Z1bmMo
ZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMoZXJyb3JlZCwgMSk7CisgICAgICAg
IHQ3LmRvbmUoKTsKKyAgICB9KSwgNTApOworfSk7CisKK3Q4ID0gYXN5bmNfdGVzdCgnUmVhZGFi
bGVTdHJlYW0gaW4gZXJyb3JlZCBzdGF0ZSBzaG91bGQgbm90IGJlIHRpZWQgdG8gYSBwYXJ0aWN1
bGFyIHJlYWRlcicpOwordDguc3RlcChmdW5jdGlvbigpCit7CisgICAgdmFyIHJzID0gbmV3IFJl
YWRhYmxlU3RyZWFtKAorICAgIHsgc3RhcnQ6CisgICAgICAgIGZ1bmN0aW9uKGVucXVldWUsIGNs
b3NlLCBlcnJvcikgeworICAgICAgICAgICAgZXJyb3IoKTsKKyAgICAgICAgfQorICAgIH0pOwor
ICAgIHZhciByZWFkZXIgPSBycy5nZXRSZWFkZXIoKTsKKyAgICByZWFkZXIuY2xvc2VkLnRoZW4o
dDguc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCdjbG9z
ZWQgcHJvbWlzZSBzaG91bGQgYmUgcmVqZWN0ZWQnKTsKKyAgICB9KSwgdDguc3RlcF9mdW5jKGZ1
bmN0aW9uKCkgeworICAgICAgICBlcnJvcmVkID0gdHJ1ZTsKKyAgICB9KSk7CisgICAgc2V0VGlt
ZW91dCh0OC5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIHQ4LmRvbmUoKTsKKyAgICB9
KSwgNTApOwogfSk7CiAKIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252465</attachid>
            <date>2015-05-06 03:36:32 -0700</date>
            <delta_ts>2015-05-06 03:38:53 -0700</delta_ts>
            <desc>Rebasing for landing</desc>
            <filename>bug-141162-20150506123514.patch</filename>
            <type>text/plain</type>
            <size>34217</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTMxYWJiNGU0MGE0N2Mx
Yzg5NmY4NTdjOGY1NDljZTYyMzdjZDhlMS4uZmRmMTcwNTA5OTE0NTE5OTVmNzY1YmIxNGUyN2Jm
MzEzMmE2NzBhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDE1LTA1LTA2ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0ICA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgTW92ZSBSZWFkYWJs
ZVN0cmVhbUpTU291cmNlLmgvLmNwcCB0byBSZWFkYWJsZUpTU3RyZWFtLmgvLmNwcAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0NTY3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgSW4gYWRkaXRpb24gdG8gcmVu
YW1pbmcgUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5oLy5jcHAsIFJlYWRhYmxlU3RyZWFtSlNTb3Vy
Y2UgaXMgbm93IG1hZGUgYSBwcml2YXRlIGNsYXNzIG9mCisgICAgICAgIFJlYWRhYmxlSlNTdHJl
YW0sIGNhbGxlZCBSZWFkYWJsZUpTU3RyZWFtOjpTb3VyY2UuCisgICAgICAgIE1hZGUgc29tZSBt
aW5vciByZWZhY3RvcmluZyAocGFzc2luZyBzb21lIEV4ZWNTdGF0ZSBieSByZWYgYW5kIG5vdCBi
eSBwb2ludGVyKS4KKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2UsIGV4aXN0aW5nIHRlc3Rz
IGNvdmVyIHRoZSBjaGFuZ2VzLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0
cmVhbUN1c3RvbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpTb3VyY2U6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpTb3VyY2U6OlNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpTb3VyY2U6On5Tb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6U291cmNlOjpnbG9iYWxPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6U291cmNlOjpzdGFydCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbSk6CisgICAgICAgICogYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5oOgorCiAyMDE1LTA1LTA0ICBSb2dlciBGb25nICA8cm9n
ZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgTWVkaWEgY29udHJvbCB2b2x1bWUgc2xpZGVy
IGlzIG9wYXF1ZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZDZkZWIxZDc1ODkzMTRjZmUzMjYx
OGYyMjVmNGYyOWQwOGQyYzA3MS4uYjJiNzIyNzVhZTlkZjkxMTA0MDBiZTFiZmM3Yjg1MmNiZjUw
Mjk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTExNTgsNyArMTE1OCw3IEBAIHNldChXZWJD
b3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcAog
ICAgIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcAogICAg
IGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwCi0gICAgYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAKKyAgICBiaW5kaW5ncy9qcy9SZWFkYWJs
ZUpTU3RyZWFtLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2Fs
bGJhY2tDdXN0b20uY3BwCiAgICAgYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3Vz
dG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1Db250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1D
b250cm9sbGVyLmgKaW5kZXggZjM0MTVjMTA4MWIxYTk1NDQwNjJiYjNhZTE0NjM5NjhhYmFhNTg1
Ny4uZTU5NThkMWJhYjYxODdkNGE1OTNmNjExYzA1NGYxMGQ3NGFjMTg4NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUNvbnRy
b2xsZXIuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogCi0j
aW5jbHVkZSAiUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5oIgorI2luY2x1ZGUgIlJlYWRhYmxlSlNT
dHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCAwOTA0MGEyNjZkYjNiYjcxYjNmYjdk
MjRkZWI2NjdiMjI1NWYzOGY0Li4yYjQ0Yzk1Y2Y5NTVkMDFmZjJmNjgxYmYwYjUyOTlhYTA1ZjU2
OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52
Y3hwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHBy
b2oKQEAgLTE3NDY4LDcgKzE3NDY4LDcgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzIn
Ij50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xSZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcCI+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xSZWFkYWJsZUpTU3RyZWFtLmNw
cCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgog
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5m
aWx0ZXJzCmluZGV4IDJhNTM0OWQxNDE2ZTI1ZDRjYmQyYmY1MDg1NDZjOTM4YmY2NWZhNzYuLjIy
ZWU1Njg5MjUxNzI1NmYyM2ZkNTNkMzVmMWQxMGU0NjA2ZjFjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAg
LTQ0MjUsNyArNDQyNSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xq
c1xKU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRp
bmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxiaW5kaW5nc1xqc1xSZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcCI+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xSZWFkYWJsZUpTU3RyZWFtLmNwcCI+CiAgICAg
ICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU1JlcXVlc3RBbmltYXRpb25GcmFtZUNh
bGxiYWNrQ3VzdG9tLmNwcCI+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWNkYzk5OGMwNmE5NDA4OGRjNDIwYmZkMjE3Y2U2N2Qx
Y2E5NDVlNi4uMDJkMDZjMWIyNjBmYTY1MTMzMWNhNWJiN2NmOTJiMTQzMTg3NDg3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAt
MTQ3NCw4ICsxNDc0LDggQEAKIAkJNDE4QTA2RDExMzNDMDRENTAwQ0QzNzlDIC8qIEV2ZW50RGlz
cGF0Y2hlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MThBMDZDRjEzM0MwNEQ1MDBDRDM3OUMgLyogRXZlbnREaXNwYXRjaGVyLmNwcCAqLzsgfTsK
IAkJNDE4Rjg4MDQwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDIwRkY5NTdB
RTAwODBGMDQ1IC8qIEpTQWJzdHJhY3RXb3JrZXIuY3BwICovOyB9OwogCQk0MThGODgwNTBGRjk1
N0FGMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpTQWJz
dHJhY3RXb3JrZXIuaCAqLzsgfTsKLQkJNDE5OEJERjAxQTgxMTQyMjAwQjIyRkI1IC8qIFJlYWRh
YmxlU3RyZWFtSlNTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNDE5OEJERUUxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlU3RyZWFtSlNT
b3VyY2UuY3BwICovOyB9OwotCQk0MTk4QkRGMTFBODExNDMxMDBCMjJGQjUgLyogUmVhZGFibGVT
dHJlYW1KU1NvdXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDE5OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk0MTk4
QkRGMDFBODExNDIyMDBCMjJGQjUgLyogUmVhZGFibGVKU1N0cmVhbS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MTk4QkRFRTFBODExMjM2MDBCMjJG
QjUgLyogUmVhZGFibGVKU1N0cmVhbS5jcHAgKi87IH07CisJCTQxOThCREYxMUE4MTE0MzEwMEIy
MkZCNSAvKiBSZWFkYWJsZUpTU3RyZWFtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0MTk4QkRFRjFBODExMjM2MDBCMjJGQjUgLyogUmVhZGFibGVKU1N0
cmVhbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQxOUJDMkRFMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJDMkRDMTY4NTMyOTkw
MEQ2NEQ2RCAvKiBWaXNpdGVkTGlua1N0YXRlLmNwcCAqLzsgfTsKIAkJNDE5QkMyREYxNjg1MzI5
OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQxOUJDMkREMTY4NTMyOTkwMEQ2NEQ2RCAvKiBWaXNpdGVk
TGlua1N0YXRlLmggKi87IH07CiAJCTQxOUZBRkFFMUFCQUJEMDgwMDVCODI4QiAvKiBSZWFkYWJs
ZVN0cmVhbVJlYWRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0MTlGQUZBQjFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFibGVTdHJlYW1SZWFkZXIu
Y3BwICovOyB9OwpAQCAtODYxMyw4ICs4NjEzLDggQEAKIAkJNDE4QTA2Q0YxMzNDMDRENTAwQ0Qz
NzlDIC8qIEV2ZW50RGlzcGF0Y2hlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBFdmVudERpc3BhdGNoZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0MThGODgwMjBGRjk1N0FFMDA4MEYwNDUgLyogSlNBYnN0cmFjdFdvcmtlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Fic3RyYWN0V29ya2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDE4Rjg4MDMwRkY5NTdBRTAwODBGMDQ1IC8qIEpT
QWJzdHJhY3RXb3JrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBYnN0
cmFjdFdvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk0MTk4QkRFRTFBODEx
MjM2MDBCMjJGQjUgLyogUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNDE5OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRh
YmxlU3RyZWFtSlNTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVh
ZGFibGVTdHJlYW1KU1NvdXJjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTk4
QkRFRTFBODExMjM2MDBCMjJGQjUgLyogUmVhZGFibGVKU1N0cmVhbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFkYWJsZUpTU3RyZWFtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDE5OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxl
SlNTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhZGFibGVKU1N0
cmVhbS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlCQzJEQzE2ODUzMjk5MDBE
NjRENkQgLyogVmlzaXRlZExpbmtTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBWaXNpdGVkTGlua1N0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDE5QkMyREQxNjg1MzI5OTAwRDY0RDZEIC8qIFZpc2l0ZWRMaW5rU3RhdGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlzaXRlZExpbmtTdGF0ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTlGQUZBQjFBQkFCQ0Q1MDA1QjgyOEIgLyogUmVhZGFi
bGVTdHJlYW1SZWFkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjExNzIsOCArMjExNzIsOCBAQAogCQkJCUUxQzM2RDMyMEVCMEEwOTQwMDc0MTBCQyAvKiBKU1dv
cmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgKi8sCiAJCQkJRTFDMzZEMzMwRUIwQTA5NDAwNzQxMEJD
IC8qIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmggKi8sCiAJCQkJNDExODlFRjgxQUQ4MjMzQzAw
QjkwQTBEIC8qIEpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCAqLywKLQkJCQk0
MTk4QkRFRTFBODExMjM2MDBCMjJGQjUgLyogUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5jcHAgKi8s
Ci0JCQkJNDE5OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2Uu
aCAqLywKKwkJCQk0MTk4QkRFRTFBODExMjM2MDBCMjJGQjUgLyogUmVhZGFibGVKU1N0cmVhbS5j
cHAgKi8sCisJCQkJNDE5OEJERUYxQTgxMTIzNjAwQjIyRkI1IC8qIFJlYWRhYmxlSlNTdHJlYW0u
aCAqLywKIAkJCQlCQ0EzNzhCQTBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmNw
cCAqLywKIAkJCQlCQ0EzNzhCQjBEMTVGNjQyMDBCNzkzRDYgLyogU2NoZWR1bGVkQWN0aW9uLmgg
Ki8sCiAJCQkJNDFGMUQyMUUwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0
YS5jcHAgKi8sCkBAIC0yNjc1Miw3ICsyNjc1Miw3IEBACiAJCQkJMDcwOUQ3OEYxQUU1NTU1NDAw
NEU0MkY4IC8qIFdlYk1lZGlhU2Vzc2lvbk1hbmFnZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTg0
QjZCOTc4MTIwRjEzRTUwMEI4RUZBRiAvKiBTVkdQYXRoU2VnTGlzdFNvdXJjZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJODNDMUQ0MzUxNzhENUFCNTAwMTQxRTY4IC8qIFNWR1BhdGhTZWdNb3ZldG9B
YnMuaCBpbiBIZWFkZXJzICovLAotCQkJCTQxOThCREYxMUE4MTE0MzEwMEIyMkZCNSAvKiBSZWFk
YWJsZVN0cmVhbUpTU291cmNlLmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTk4QkRGMTFBODExNDMx
MDBCMjJGQjUgLyogUmVhZGFibGVKU1N0cmVhbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODNDMUQ0
MzYxNzhENUFCNTAwMTQxRTY4IC8qIFNWR1BhdGhTZWdNb3ZldG9SZWwuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA4MkRFNDJEMTI5MjYyMTYwMEQ5MjNERiAvKiBTVkdQYXRoU2VnV2l0aENvbnRleHQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTg0MzAwQkQ4MTIwQzlBRDQwMDIxOTU0QSAvKiBTVkdQYXRo
U291cmNlLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMjYwLDcgKzMwMjYwLDcgQEAKIAkJCQlGQjQ4
NEY0QzE3MUY4MjFFMDAwNDA3NTUgLyogVHJhbnNmb3JtRnVuY3Rpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQ5RTkxMUNGMEVGODZENDcwMDlEMENBRiAvKiBUcmFuc2Zvcm1PcGVyYXRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVEQjFCQzZCMTA3MTVBNjQwMEVGQUE0OSAvKiBUcmFu
c2Zvcm1Tb3VyY2VMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTQxOThCREYwMUE4MTE0
MjIwMEIyMkZCNSAvKiBSZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTQxOThCREYwMUE4MTE0MjIwMEIyMkZCNSAvKiBSZWFkYWJsZUpTU3RyZWFtLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTQ5NDVCRkQzMTNDRjgwOTAwMENDM0IzOCAvKiBUcmFuc2Zvcm1TdGF0
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTdCNDkxNTE2QTlCMDk0MDAxQzg4MzkgLyogVHJh
bnNpdGlvbkV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5RTkxMUQxMEVGODZENDcwMDlE
MENBRiAvKiBUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcApp
bmRleCA5YTYyZGQ2ZjEyZjBhMWZhYTUwZTIzYTYxMzFiMzBjMzg3ZTdkYjA5Li44YTVlYWU3ZjBk
ZmFhZTkwNzQxZTk1MDE2NDYwYjE0MDMwYzRkNDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQAog
I2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcCIKICNpbmNsdWRl
ICJKU1JlYWRhYmxlU3RyZWFtQ3VzdG9tLmNwcCIKICNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFt
UmVhZGVyQ3VzdG9tLmNwcCIKLSNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbUpTU291cmNlLmNwcCIK
KyNpbmNsdWRlICJSZWFkYWJsZUpTU3RyZWFtLmNwcCIKICNlbmRpZgogI2luY2x1ZGUgIkpTUmVx
dWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTU1FMUmVz
dWx0U2V0Um93TGlzdEN1c3RvbS5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKaW5k
ZXggZmI1ZDZmOGRiZWRhODA5ODkyOGI2ZTU3ZDI1YjA4YTA2ZDQzOTlmOS4uNjk1Y2YyOWU4N2Rl
NDZmODY3ODQ5YzcyODVkYTJiNjcwODRjN2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9t
LmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5j
bHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbUpTU291cmNl
LmgiCisjaW5jbHVkZSAiUmVhZGFibGVKU1N0cmVhbS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKaW5kZXggMTFhMDE1Mzk0YjRh
ZmZhODBhN2NiNzUzYjcwYzVlOTkzMzdiNjAzYi4uYmMxODY3OTFlYmIzYzUwMDllYWY4NzIxNDE5
NmY0MjY1YThmODQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNSZWFkYWJsZVN0cmVhbUN1c3RvbS5jcHAKQEAgLTM2LDggKzM2LDggQEAKICNpbmNsdWRlICJK
U0RPTUJpbmRpbmcuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU1Jl
YWRhYmxlU3RyZWFtUmVhZGVyLmgiCisjaW5jbHVkZSAiUmVhZGFibGVKU1N0cmVhbS5oIgogI2lu
Y2x1ZGUgIlJlYWRhYmxlU3RyZWFtLmgiCi0jaW5jbHVkZSAiUmVhZGFibGVTdHJlYW1KU1NvdXJj
ZS5oIgogI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCiAjaW5jbHVkZSA8cnVudGlt
ZS9FcnJvci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3Vz
dG9tLmNwcAppbmRleCBlNGFkZGE3MDE1OTA3ZTBlZDM3YjMwM2U4ZTJjMTU0Zjc0ODA4NzQ1Li40
OGRiNTRmOTBjYjJlYTNhN2U4MmJhOWVhYjkwZTQ2NTE4N2M2NTA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3Vz
dG9tLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNp
bmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtLmgiCi0j
aW5jbHVkZSAiUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5oIgorI2luY2x1ZGUgIlJlYWRhYmxlSlNT
dHJlYW0uaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVy
RGVzdHJveWVkLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Jl
YWRhYmxlSlNTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVK
U1N0cmVhbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjA2N2QxNjkzOTVmNGI2ZmQ4Y2M4OWEzZGU2OGJmMWRl
ODlkMmU2MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Jl
YWRhYmxlSlNTdHJlYW0uY3BwCkBAIC0wLDAgKzEsMTc2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE1IENhbm9uIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoK
KyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SCisgKiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisg
KiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUgorICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIKKyAqIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksCisgKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVhZGFibGVKU1N0cmVhbS5oIgorCisj
aWYgRU5BQkxFKFNUUkVBTVNfQVBJKQorCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCisj
aW5jbHVkZSAiSlNET01Qcm9taXNlLmgiCisjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgor
I2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiTm90SW1w
bGVtZW50ZWQuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVk
ZSA8cnVudGltZS9FcnJvci5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aD4KKyNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CisjaW5jbHVkZSA8cnVudGltZS9TdHJ1
Y3R1cmVJbmxpbmVzLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKwordm9pZCBzZXRJbnRlcm5hbFNsb3RUb09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgb2JqZWN0VmFsdWUsIFByaXZhdGVOYW1lJiBuYW1lLCBKU1ZhbHVlIHZhbHVlKQorewor
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBvYmplY3RWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICBQ
dXRQcm9wZXJ0eVNsb3QgcHJvcGVydHlTbG90KG9iamVjdFZhbHVlKTsKKyAgICBvYmplY3QtPnB1
dChvYmplY3QsIGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQobmFtZSksIHZhbHVlLCBwcm9wZXJ0
eVNsb3QpOworfQorCitKU1ZhbHVlIGdldEludGVybmFsU2xvdEZyb21PYmplY3QoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIG9iamVjdFZhbHVlLCBQcml2YXRlTmFtZSYgbmFtZSkKK3sKKyAgICBK
U09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgUHJvcGVy
dHlTbG90IHByb3BlcnR5U2xvdChvYmplY3RWYWx1ZSk7CisKKyAgICBJZGVudGlmaWVyIHByb3Bl
cnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21VaWQobmFtZSk7CisgICAgaWYgKCFvYmplY3QtPmdl
dE93blByb3BlcnR5U2xvdChvYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgcHJvcGVydHlTbG90
KSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKKyAgICByZXR1cm4gcHJvcGVydHlTbG90Lmdl
dFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBn
ZXRQcm9wZXJ0eUZyb21PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBj
b25zdCBjaGFyKiBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBvYmplY3QtPmdldChleGVjLCBJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGlkZW50aWZpZXIpKTsKK30KKworc3RhdGljIGlu
bGluZSBKU1ZhbHVlIGNhbGxGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUganNGdW5j
dGlvbiwgSlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3VtZW50cywgSlNWYWx1
ZSogZXhjZXB0aW9uKQoreworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoanNGdW5jdGlvbiwgY2FsbERhdGEpOworICAgIHJldHVybiBj
YWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmd1
bWVudHMsIGV4Y2VwdGlvbik7Cit9CisKK1JlZjxSZWFkYWJsZUpTU3RyZWFtOjpTb3VyY2U+IFJl
YWRhYmxlSlNTdHJlYW06OlNvdXJjZTo6Y3JlYXRlKEV4ZWNTdGF0ZSYgZXhlYykKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBTb3VyY2UoZXhlYykpOworfQorCitSZWFkYWJsZUpTU3RyZWFt
OjpTb3VyY2U6OlNvdXJjZShFeGVjU3RhdGUmIGV4ZWMpCit7CisgICAgQVNTRVJUX1dJVEhfTUVT
U0FHRSghZXhlYy5hcmd1bWVudENvdW50KCkgfHwgZXhlYy5hcmd1bWVudCgwKS5pc09iamVjdCgp
LCAiQ2FsbGVyIG9mIFJlYWRhYmxlSlNTdHJlYW06OlNvdXJjZSBjb25zdHJ1Y3RvciBzaG91bGQg
ZW5zdXJlIHRoYXQgcGFzc2VkIGFyZ3VtZW50IGlmIGFueSBpcyBhbiBvYmplY3QuIik7CisgICAg
SlNPYmplY3QqIHNvdXJjZSA9ICBleGVjLmFyZ3VtZW50Q291bnQoKSA/IGV4ZWMuYXJndW1lbnQo
MCkuZ2V0T2JqZWN0KCkgOiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoZXhlYy52bSgpLCBKU0ZpbmFs
T2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUoZXhlYy52bSgpLCBleGVjLmNhbGxlZSgpLT5nbG9iYWxP
YmplY3QoKSwganNOdWxsKCksIDEpKTsKKyAgICBtX3NvdXJjZS5zZXQoZXhlYy52bSgpLCBzb3Vy
Y2UpOworfQorCitKU0RPTUdsb2JhbE9iamVjdCogUmVhZGFibGVKU1N0cmVhbTo6U291cmNlOjpn
bG9iYWxPYmplY3QoKQoreworICAgIHJldHVybiBqc0R5bmFtaWNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4obV9zb3VyY2UtPmdsb2JhbE9iamVjdCgpKTsKK30KKworc3RhdGljIHZvaWQgc3RhcnRS
ZWFkYWJsZVN0cmVhbUFzeW5jKFJlYWRhYmxlU3RyZWFtJiByZWFkYWJsZVN0cmVhbSkKK3sKKyAg
ICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHN0cmVhbSA9ICZyZWFkYWJsZVN0cmVhbTsKKyAgICBz
dHJlYW0tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3N0cmVhbV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgc3RyZWFtLT5zdGFydCgpOworICAgIH0pOwor
fQorCit2b2lkIFJlYWRhYmxlSlNTdHJlYW06OlNvdXJjZTo6c3RhcnQoRXhlY1N0YXRlJiBleGVj
LCBSZWFkYWJsZUpTU3RyZWFtJiByZWFkYWJsZVN0cmVhbSkKK3sKKyAgICBKU0xvY2tIb2xkZXIg
bG9jaygmZXhlYyk7CisKKyAgICBKU1ZhbHVlIHN0YXJ0RnVuY3Rpb24gPSBnZXRQcm9wZXJ0eUZy
b21PYmplY3QoJmV4ZWMsIG1fc291cmNlLmdldCgpLCAic3RhcnQiKTsKKyAgICBpZiAoIXN0YXJ0
RnVuY3Rpb24uaXNGdW5jdGlvbigpKSB7CisgICAgICAgIGlmICghc3RhcnRGdW5jdGlvbi5pc1Vu
ZGVmaW5lZCgpKQorICAgICAgICAgICAgdGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVUeXBlRXJy
b3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3Igb2JqZWN0
IHN0YXJ0IHByb3BlcnR5IHNob3VsZCBiZSBhIGZ1bmN0aW9uLiIpKSk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3luYyhyZWFkYWJsZVN0cmVhbSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVu
dHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChyZWFkYWJsZVN0cmVhbS5qc0NvbnRyb2xsZXIoZXhl
YywgZ2xvYmFsT2JqZWN0KCkpKTsKKworICAgIEpTVmFsdWUgZXhjZXB0aW9uOworICAgIGNhbGxG
dW5jdGlvbigmZXhlYywgc3RhcnRGdW5jdGlvbiwgbV9zb3VyY2UuZ2V0KCksIGFyZ3VtZW50cywg
JmV4Y2VwdGlvbik7CisKKyAgICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIHRocm93Vk1FcnJv
cigmZXhlYywgZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgaGFuZGxpbmcgcHJvbWlzZSBhcyByZXN1bHQgb2YgY2FsbGluZyBzdGFy
dCBmdW5jdGlvbi4KKyAgICBzdGFydFJlYWRhYmxlU3RyZWFtQXN5bmMocmVhZGFibGVTdHJlYW0p
OworfQorCitSZWY8UmVhZGFibGVKU1N0cmVhbT4gUmVhZGFibGVKU1N0cmVhbTo6Y3JlYXRlKEV4
ZWNTdGF0ZSYgZXhlYywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCkKK3sKKyAgICBSZWY8UmVhZGFibGVKU1N0cmVhbTo6U291cmNlPiBzb3VyY2UgPSBSZWFk
YWJsZUpTU3RyZWFtOjpTb3VyY2U6OmNyZWF0ZShleGVjKTsKKyAgICBSZWY8UmVhZGFibGVKU1N0
cmVhbT4gcmVhZGFibGVTdHJlYW0gPSBhZG9wdFJlZigqbmV3IFJlYWRhYmxlSlNTdHJlYW0oc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgV1RGOjptb3ZlKHNvdXJjZSkpKTsKKworICAgIHN0YXRpY19j
YXN0PFJlYWRhYmxlSlNTdHJlYW06OlNvdXJjZSY+KHJlYWRhYmxlU3RyZWFtLT5zb3VyY2UoKSku
c3RhcnQoZXhlYywgcmVhZGFibGVTdHJlYW0uZ2V0KCkpOworICAgIHJldHVybiByZWFkYWJsZVN0
cmVhbTsKK30KKworUmVmPFJlYWRhYmxlU3RyZWFtUmVhZGVyPiBSZWFkYWJsZUpTU3RyZWFtOjpj
cmVhdGVSZWFkZXIoKQoreworICAgIHJldHVybiBSZWFkZXI6OmNyZWF0ZSgqdGhpcyk7Cit9CisK
K1JlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUmVmPFJlYWRhYmxlSlNTdHJlYW06OlNvdXJjZT4m
JiBzb3VyY2UpCisgICAgOiBSZWFkYWJsZVN0cmVhbShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBX
VEY6Om1vdmUoc291cmNlKSkKK3sKK30KKworUmVhZGFibGVKU1N0cmVhbTo6U291cmNlJiBSZWFk
YWJsZUpTU3RyZWFtOjpqc1NvdXJjZSgpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlYWRh
YmxlSlNTdHJlYW06OlNvdXJjZSY+KHNvdXJjZSgpKTsKK30KKworSlNWYWx1ZSBSZWFkYWJsZUpT
U3RyZWFtOjpqc0NvbnRyb2xsZXIoRXhlY1N0YXRlJiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQoreworICAgIGlmICghbV9jb250cm9sbGVyKQorICAgICAgICBtX2NvbnRy
b2xsZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj4oKnRoaXMp
OworICAgIHJldHVybiB0b0pTKCZleGVjLCBnbG9iYWxPYmplY3QsIG1fY29udHJvbGxlci5nZXQo
KSk7Cit9CisKK1JlZjxSZWFkYWJsZUpTU3RyZWFtOjpSZWFkZXI+IFJlYWRhYmxlSlNTdHJlYW06
OlJlYWRlcjo6Y3JlYXRlKFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSkKK3sKKyAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBSZWFkZXIoc3RyZWFtKSk7Cit9CisKK1JlYWRhYmxlSlNTdHJlYW06OlJl
YWRlcjo6UmVhZGVyKFJlYWRhYmxlSlNTdHJlYW0mIHJlYWRhYmxlU3RyZWFtKQorICAgIDogUmVh
ZGFibGVTdHJlYW1SZWFkZXIocmVhZGFibGVTdHJlYW0pCit7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9SZWFkYWJsZUpTU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZUpTU3RyZWFtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmU3ZjJiZDIzNWE2MjU2OGUxOTFiMWFjMWM5MjEzNGE0
MTU3N2Q4MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Jl
YWRhYmxlSlNTdHJlYW0uaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
TzE1IENhbm9uIEluYy4gMjAxNQorICogQ29weXJpZ2h0IChDKSAyMDE1IElnYWxpYSBTLkwuIDIw
MTUKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSByZXF1aXJlZCB0byBi
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENB
Tk9OIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgorICogQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKKyAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCisgKiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLAorICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBSZWFkYWJsZUpTU3RyZWFtX2gKKyNkZWZpbmUgUmVhZGFibGVKU1N0
cmVhbV9oCisKKyNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNpbmNsdWRlICJSZWFkYWJsZVN0
cmVhbS5oIgorI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCisjaW5jbHVkZSAiUmVh
ZGFibGVTdHJlYW1Tb3VyY2UuaCIKKyNpbmNsdWRlIDxoZWFwL1N0cm9uZy5oPgorI2luY2x1ZGUg
PGhlYXAvU3Ryb25nSW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZS5oPgor
I2luY2x1ZGUgPHJ1bnRpbWUvUHJpdmF0ZU5hbWUuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7CitjbGFzcyBS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI7CisKK2NsYXNzIFJlYWRhYmxlSlNTdHJlYW06IHB1Ymxp
YyBSZWFkYWJsZVN0cmVhbSB7Citwcml2YXRlOgorICAgIGNsYXNzIFJlYWRlcjogcHVibGljIFJl
YWRhYmxlU3RyZWFtUmVhZGVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBSZWY8UmVh
ZGVyPiBjcmVhdGUoUmVhZGFibGVKU1N0cmVhbSYpOworICAgIHByaXZhdGU6CisgICAgICAgIGV4
cGxpY2l0IFJlYWRlcihSZWFkYWJsZUpTU3RyZWFtJik7CisgICAgfTsKKworICAgIGNsYXNzIFNv
dXJjZTogcHVibGljIFJlYWRhYmxlU3RyZWFtU291cmNlIHsKKyAgICBwdWJsaWM6CisgICAgICAg
IHN0YXRpYyBSZWY8U291cmNlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmKTsKKworICAgICAgICBK
U0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KCk7CisgICAgICAgIHZvaWQgc3RhcnQoSlND
OjpFeGVjU3RhdGUmLCBSZWFkYWJsZUpTU3RyZWFtJik7CisKKyAgICBwcml2YXRlOgorICAgICAg
ICBTb3VyY2UoSlNDOjpFeGVjU3RhdGUmKTsKKworICAgICAgICBKU0M6OlN0cm9uZzxKU0M6OkpT
T2JqZWN0PiBtX3NvdXJjZTsKKyAgICB9OworCitwdWJsaWM6CisgICAgc3RhdGljIFJlZjxSZWFk
YWJsZUpTU3RyZWFtPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRFeGVjdXRpb25Db250
ZXh0Jik7CisgICAgdmlydHVhbCBSZWY8UmVhZGFibGVTdHJlYW1SZWFkZXI+IGNyZWF0ZVJlYWRl
cigpIG92ZXJyaWRlOworCisgICAgUmVhZGFibGVKU1N0cmVhbTo6U291cmNlJiBqc1NvdXJjZSgp
OworICAgIEpTQzo6SlNWYWx1ZSBqc0NvbnRyb2xsZXIoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUds
b2JhbE9iamVjdCopOworCitwcml2YXRlOgorICAgIFJlYWRhYmxlSlNTdHJlYW0oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIFJlZjxSZWFkYWJsZUpTU3RyZWFtOjpTb3VyY2U+JiYpOworCisgICAg
c3RkOjp1bmlxdWVfcHRyPFJlYWRhYmxlU3RyZWFtQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwor
fTsKKwordm9pZCBzZXRJbnRlcm5hbFNsb3RUb09iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNWYWx1ZSwgSlNDOjpQcml2YXRlTmFtZSYsIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUg
Z2V0SW50ZXJuYWxTbG90RnJvbU9iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwg
SlNDOjpQcml2YXRlTmFtZSYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoU1RSRUFNU19BUEkpCisKKyNlbmRpZiAvLyBSZWFkYWJsZUpTU3RyZWFtX2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtSlNTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1NvdXJj
ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk0ZTkxMGI3MDdjMmRmZTVmYTdk
NzM0MDc5ODU3YjQ1Y2QxOWQ5ZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1KU1Nv
dXJjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNSBDYW5vbiBJbmMuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWdhbGlhIFMuTC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCwgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSByZXF1aXJlZCB0byBiZSBt
ZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBDYW5vbiBJbmMuIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAg
ICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQ0FOT04gSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIENBTk9O
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgotICogQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TAotICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKLSAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCi0gKiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAotICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtSlNTb3Vy
Y2UuaCIKLQotI2lmIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIkRPTVdyYXBwZXJX
b3JsZC5oIgotI2luY2x1ZGUgIkpTRE9NUHJvbWlzZS5oIgotI2luY2x1ZGUgIkpTUmVhZGFibGVT
dHJlYW0uaCIKLSNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIgotI2luY2x1
ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
IgotI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KLSNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9KU1N0cmluZy5oPgotI2luY2x1ZGUgPHJ1
bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgc2V0SW50ZXJuYWxTbG90VG9PYmplY3QoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIG9iamVjdFZhbHVlLCBQcml2YXRlTmFtZSYgbmFtZSwgSlNWYWx1ZSB2
YWx1ZSkKLXsKLSAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUudG9PYmplY3QoZXhl
Yyk7Ci0gICAgUHV0UHJvcGVydHlTbG90IHByb3BlcnR5U2xvdChvYmplY3RWYWx1ZSk7Ci0gICAg
b2JqZWN0LT5wdXQob2JqZWN0LCBleGVjLCBJZGVudGlmaWVyOjpmcm9tVWlkKG5hbWUpLCB2YWx1
ZSwgcHJvcGVydHlTbG90KTsKLX0KLQotSlNWYWx1ZSBnZXRJbnRlcm5hbFNsb3RGcm9tT2JqZWN0
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBvYmplY3RWYWx1ZSwgUHJpdmF0ZU5hbWUmIG5hbWUp
Ci17Ci0gICAgSlNPYmplY3QqIG9iamVjdCA9IG9iamVjdFZhbHVlLnRvT2JqZWN0KGV4ZWMpOwot
ICAgIFByb3BlcnR5U2xvdCBwcm9wZXJ0eVNsb3Qob2JqZWN0VmFsdWUpOwotCi0gICAgSWRlbnRp
ZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tVWlkKG5hbWUpOwotICAgIGlmICgh
b2JqZWN0LT5nZXRPd25Qcm9wZXJ0eVNsb3Qob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIHBy
b3BlcnR5U2xvdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlKCk7Ci0gICAgcmV0dXJuIHByb3Bl
cnR5U2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpOwotfQotCi1zdGF0aWMgaW5saW5l
IEpTVmFsdWUgZ2V0UHJvcGVydHlGcm9tT2JqZWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IG9iamVjdCwgY29uc3QgY2hhciogaWRlbnRpZmllcikKLXsKLSAgICByZXR1cm4gb2JqZWN0LT5n
ZXQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCBpZGVudGlmaWVyKSk7Ci19Ci0K
LXN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjYWxsRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGpzRnVuY3Rpb24sIEpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JiBhcmd1bWVu
dHMsIEpTVmFsdWUqIGV4Y2VwdGlvbikKLXsKLSAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGpzRnVuY3Rpb24sIGNhbGxEYXRhKTsKLSAg
ICByZXR1cm4gY2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNW
YWx1ZSwgYXJndW1lbnRzLCBleGNlcHRpb24pOwotfQotCi1SZWY8UmVhZGFibGVTdHJlYW1KU1Nv
dXJjZT4gUmVhZGFibGVTdHJlYW1KU1NvdXJjZTo6Y3JlYXRlKEpTQzo6RXhlY1N0YXRlKiBleGVj
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWRhYmxlU3RyZWFtSlNTb3VyY2UoZXhl
YykpOwotfQotCi1SZWFkYWJsZVN0cmVhbUpTU291cmNlOjpSZWFkYWJsZVN0cmVhbUpTU291cmNl
KEpTQzo6RXhlY1N0YXRlKiBleGVjKQotewotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIWV4ZWMt
PmFyZ3VtZW50Q291bnQoKSB8fCBleGVjLT5hcmd1bWVudCgwKS5pc09iamVjdCgpLCAiQ2FsbGVy
IG9mIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2UgY29uc3RydWN0b3Igc2hvdWxkIGVuc3VyZSB0aGF0
IHBhc3NlZCBhcmd1bWVudCBpZiBhbnkgaXMgYW4gb2JqZWN0LiIpOwotICAgIEpTT2JqZWN0KiBz
b3VyY2UgPSAgZXhlYy0+YXJndW1lbnRDb3VudCgpID8gZXhlYy0+YXJndW1lbnQoMCkuZ2V0T2Jq
ZWN0KCkgOiBKU0ZpbmFsT2JqZWN0OjpjcmVhdGUoZXhlYy0+dm0oKSwgSlNGaW5hbE9iamVjdDo6
Y3JlYXRlU3RydWN0dXJlKGV4ZWMtPnZtKCksIGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3Qo
KSwganNOdWxsKCksIDEpKTsKLSAgICBtX3NvdXJjZS5zZXQoZXhlYy0+dm0oKSwgc291cmNlKTsK
LX0KLQotUmVhZGFibGVTdHJlYW1KU1NvdXJjZTo6flJlYWRhYmxlU3RyZWFtSlNTb3VyY2UoKQot
ewotfQotCi1zdGF0aWMgdm9pZCBzdGFydFJlYWRhYmxlU3RyZWFtQXN5bmMoUmVhZGFibGVTdHJl
YW0mIHJlYWRhYmxlU3RyZWFtKQotewotICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gc3RyZWFt
ID0gJnJlYWRhYmxlU3RyZWFtOwotICAgIHN0cmVhbS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5wb3N0VGFzayhbc3RyZWFtXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICBz
dHJlYW0tPnN0YXJ0KCk7Ci0gICAgfSk7Ci19Ci0KLUpTRE9NR2xvYmFsT2JqZWN0KiBSZWFkYWJs
ZVN0cmVhbUpTU291cmNlOjpnbG9iYWxPYmplY3QoKQotewotICAgIHJldHVybiBqc0R5bmFtaWND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9zb3VyY2UtPmdsb2JhbE9iamVjdCgpKTsKLX0KLQot
dm9pZCBSZWFkYWJsZVN0cmVhbUpTU291cmNlOjpzdGFydChFeGVjU3RhdGUmIGV4ZWMsIFJlYWRh
YmxlSlNTdHJlYW0mIHJlYWRhYmxlU3RyZWFtKQotewotICAgIEpTTG9ja0hvbGRlciBsb2NrKCZl
eGVjKTsKLQotICAgIEpTVmFsdWUgc3RhcnRGdW5jdGlvbiA9IGdldFByb3BlcnR5RnJvbU9iamVj
dCgmZXhlYywgbV9zb3VyY2UuZ2V0KCksICJzdGFydCIpOwotICAgIGlmICghc3RhcnRGdW5jdGlv
bi5pc0Z1bmN0aW9uKCkpIHsKLSAgICAgICAgaWYgKCFzdGFydEZ1bmN0aW9uLmlzVW5kZWZpbmVk
KCkpCi0gICAgICAgICAgICB0aHJvd1ZNRXJyb3IoJmV4ZWMsIGNyZWF0ZVR5cGVFcnJvcigmZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBvYmplY3Qgc3RhcnQg
cHJvcGVydHkgc2hvdWxkIGJlIGEgZnVuY3Rpb24uIikpKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgc3RhcnRSZWFkYWJsZVN0cmVhbUFzeW5jKHJlYWRhYmxlU3RyZWFtKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKLSAg
ICBhcmd1bWVudHMuYXBwZW5kKHJlYWRhYmxlU3RyZWFtLmpzQ29udHJvbGxlcihleGVjLCBnbG9i
YWxPYmplY3QoKSkpOwotCi0gICAgSlNWYWx1ZSBleGNlcHRpb247Ci0gICAgY2FsbEZ1bmN0aW9u
KCZleGVjLCBzdGFydEZ1bmN0aW9uLCBtX3NvdXJjZS5nZXQoKSwgYXJndW1lbnRzLCAmZXhjZXB0
aW9uKTsKLQotICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKCZleGVj
LCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gRklYTUU6IElt
cGxlbWVudCBoYW5kbGluZyBwcm9taXNlIGFzIHJlc3VsdCBvZiBjYWxsaW5nIHN0YXJ0IGZ1bmN0
aW9uLgotICAgIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3luYyhyZWFkYWJsZVN0cmVhbSk7Ci19Ci0K
LVJlZjxSZWFkYWJsZUpTU3RyZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoRXhlY1N0YXRl
JiBleGVjLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KQot
ewotICAgIFJlZjxSZWFkYWJsZVN0cmVhbUpTU291cmNlPiBzb3VyY2UgPSBSZWFkYWJsZVN0cmVh
bUpTU291cmNlOjpjcmVhdGUoJmV4ZWMpOwotICAgIFJlZjxSZWFkYWJsZUpTU3RyZWFtPiByZWFk
YWJsZVN0cmVhbSA9IGFkb3B0UmVmKCpuZXcgUmVhZGFibGVKU1N0cmVhbShzY3JpcHRFeGVjdXRp
b25Db250ZXh0LCBXVEY6Om1vdmUoc291cmNlKSkpOwotICAgIHJlYWRhYmxlU3RyZWFtLT5qc1Nv
dXJjZSgpLnN0YXJ0KGV4ZWMsIHJlYWRhYmxlU3RyZWFtLmdldCgpKTsKLSAgICByZXR1cm4gcmVh
ZGFibGVTdHJlYW07Ci19Ci0KLVJlZjxSZWFkYWJsZVN0cmVhbVJlYWRlcj4gUmVhZGFibGVKU1N0
cmVhbTo6Y3JlYXRlUmVhZGVyKCkKLXsKLSAgICByZXR1cm4gUmVhZGVyOjpjcmVhdGUoKnRoaXMp
OwotfQotCi1SZWFkYWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZjxSZWFkYWJsZVN0cmVhbUpTU291
cmNlPiYmIHNvdXJjZSkKLSAgICA6IFJlYWRhYmxlU3RyZWFtKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQsIFdURjo6bW92ZShzb3VyY2UpKQotewotfQotCi1SZWFkYWJsZVN0cmVhbUpTU291cmNlJiBS
ZWFkYWJsZUpTU3RyZWFtOjpqc1NvdXJjZSgpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PFJl
YWRhYmxlU3RyZWFtSlNTb3VyY2UmPihzb3VyY2UoKSk7Ci19Ci0KLUpTVmFsdWUgUmVhZGFibGVK
U1N0cmVhbTo6anNDb250cm9sbGVyKEV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKLXsKLSAgICBpZiAoIW1fY29udHJvbGxlcikKLSAgICAgICAgbV9jb250
cm9sbGVyID0gc3RkOjptYWtlX3VuaXF1ZTxSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+KCp0aGlz
KTsKLSAgICByZXR1cm4gdG9KUygmZXhlYywgZ2xvYmFsT2JqZWN0LCBtX2NvbnRyb2xsZXIuZ2V0
KCkpOwotfQotCi1SZWY8UmVhZGFibGVKU1N0cmVhbTo6UmVhZGVyPiBSZWFkYWJsZUpTU3RyZWFt
OjpSZWFkZXI6OmNyZWF0ZShSZWFkYWJsZUpTU3RyZWFtJiBzdHJlYW0pCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgUmVhZGVyKHN0cmVhbSkpOwotfQotCi1SZWFkYWJsZUpTU3RyZWFtOjpS
ZWFkZXI6OlJlYWRlcihSZWFkYWJsZUpTU3RyZWFtJiByZWFkYWJsZVN0cmVhbSkKLSAgICA6IFJl
YWRhYmxlU3RyZWFtUmVhZGVyKHJlYWRhYmxlU3RyZWFtKQotewotfQotCi19IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW1KU1NvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
UmVhZGFibGVTdHJlYW1KU1NvdXJjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
MGUzYjFkYWI0OTZlZDdhOWY3NmRhNzE1ZDBhZGVmZjVmZjMwMDY1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1JlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaAorKysgL2Rldi9udWxsCkBAIC0xLDkzICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDJPMTUgQ2Fub24gSW5jLiAyMDE1Ci0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgSWdhbGlhIFMuTC4gMjAxNQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkLCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIHJlcXVpcmVkIHRvIGJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIENhbm9uIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBDQU5PTiBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQ0FOT04gSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SCi0gKiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCi0gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgotICogU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIKLSAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCi0gKiBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFJlYWRhYmxlU3RyZWFtSlNT
b3VyY2VfaAotI2RlZmluZSBSZWFkYWJsZVN0cmVhbUpTU291cmNlX2gKLQotI2lmIEVOQUJMRShT
VFJFQU1TX0FQSSkKLQotI2luY2x1ZGUgIlJlYWRhYmxlU3RyZWFtLmgiCi0jaW5jbHVkZSAiUmVh
ZGFibGVTdHJlYW1SZWFkZXIuaCIKLSNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVNvdXJjZS5oIgot
I2luY2x1ZGUgPGhlYXAvU3Ryb25nLmg+Ci0jaW5jbHVkZSA8aGVhcC9TdHJvbmdJbmxpbmVzLmg+
Ci0jaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+Ci0jaW5jbHVkZSA8cnVudGltZS9Qcml2
YXRlTmFtZS5oPgotI2luY2x1ZGUgPHd0Zi9SZWYuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKLWNsYXNzIFJlYWRhYmxlSlNTdHJlYW07Ci1jbGFz
cyBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI7Ci0KLWNsYXNzIFJlYWRhYmxlU3RyZWFtSlNTb3Vy
Y2U6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbVNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxSZWFkYWJsZVN0cmVhbUpTU291cmNlPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUqKTsKLSAgICB+
UmVhZGFibGVTdHJlYW1KU1NvdXJjZSgpOwotCi0gICAgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCgpOwotICAgIHZvaWQgc3RhcnQoSlNDOjpFeGVjU3RhdGUmLCBSZWFkYWJsZUpTU3Ry
ZWFtJik7Ci0KLXByaXZhdGU6Ci0gICAgUmVhZGFibGVTdHJlYW1KU1NvdXJjZShKU0M6OkV4ZWNT
dGF0ZSopOwotCi0gICAgLy8gT2JqZWN0IHBhc3NlZCB0byBjb25zdHJ1Y3Rvci4KLSAgICBKU0M6
OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX3NvdXJjZTsKLX07Ci0KLWNsYXNzIFJlYWRhYmxlSlNT
dHJlYW06IHB1YmxpYyBSZWFkYWJsZVN0cmVhbSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxS
ZWFkYWJsZUpTU3RyZWFtPiBjcmVhdGUoSlNDOjpFeGVjU3RhdGUmLCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jik7Ci0gICAgdmlydHVhbCBSZWY8UmVhZGFibGVTdHJlYW1SZWFkZXI+IGNyZWF0ZVJl
YWRlcigpIG92ZXJyaWRlOwotCi0gICAgUmVhZGFibGVTdHJlYW1KU1NvdXJjZSYganNTb3VyY2Uo
KTsKLSAgICBKU0M6OkpTVmFsdWUganNDb250cm9sbGVyKEpTQzo6RXhlY1N0YXRlJiwgSlNET01H
bG9iYWxPYmplY3QqKTsKLQotcHJpdmF0ZToKLSAgICBSZWFkYWJsZUpTU3RyZWFtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBSZWY8UmVhZGFibGVTdHJlYW1KU1NvdXJjZT4mJik7Ci0KLSAgICBj
bGFzcyBSZWFkZXI6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbVJlYWRlciB7Ci0gICAgcHVibGljOgot
ICAgICAgICBzdGF0aWMgUmVmPFJlYWRlcj4gY3JlYXRlKFJlYWRhYmxlSlNTdHJlYW0mKTsKLSAg
ICBwcml2YXRlOgotICAgICAgICBleHBsaWNpdCBSZWFkZXIoUmVhZGFibGVKU1N0cmVhbSYpOwot
ICAgIH07Ci0KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVhZGFibGVTdHJlYW1Db250cm9sbGVyPiBt
X2NvbnRyb2xsZXI7Ci19OwotCi12b2lkIHNldEludGVybmFsU2xvdFRvT2JqZWN0KEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByaXZhdGVOYW1lJiwgSlNDOjpKU1ZhbHVlKTsK
LUpTQzo6SlNWYWx1ZSBnZXRJbnRlcm5hbFNsb3RGcm9tT2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwg
SlNDOjpKU1ZhbHVlLCBKU0M6OlByaXZhdGVOYW1lJik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShTVFJFQU1TX0FQSSkKLQotI2VuZGlmIC8vIFJlYWRhYmxl
U3RyZWFtSlNTb3VyY2VfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252588</attachid>
            <date>2015-05-07 05:45:10 -0700</date>
            <delta_ts>2015-05-08 02:49:27 -0700</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-141162-20150507144349.patch</filename>
            <type>text/plain</type>
            <size>18323</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYwNzkwN2Y0NWM4ODQ3
MjExZGQzYTU2NGNjMzcyYTI0ODQwNWVlNi4uOWM3ODgyNWY1MTk3ODcwMDU0ZmNkY2VlYzFiZjRj
NzZmNTJjZDQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE1LTA1LTA1ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHN0YXJ0IGZ1bmN0aW9uIHNob3VsZCBiZSBhYmxl
IHRvIGVycm9yIHRoZSBzdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MTE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0
aGUgUmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGVycm9yIGZ1bmN0aW9uLgorICAgICAgICBJdCBi
YXNpY2FsbHkgY2hhbmdlcyB0aGUgc3RhdGUgb2YgdGhlIHN0cmVhbSB0byBlcnJvcmVkLCByZXNv
bHZlcyB0aGUgcmVhZHkgcHJvbWlzZSBhbmQgcmVqZWN0cyB0aGUgY2xvc2VkIHByb21pc2UuCisg
ICAgICAgIEFkZGluZyBzdXBwb3J0IHRvIHJlamVjdCBwcm9taXNlIHdpdGggYW55IEpTVmFsdWUu
CisKKyAgICAgICAgU3VwcG9ydCBmb3Igc3RvcmluZyB0aGUgZXJyb3IgaXMgYWRkZWQgdG8gYm90
aCByZWFkZXIgYW5kIHN0cmVhbS4KKworICAgICAgICBUZXN0OiBzdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS1jb250cm9sbGVyLWVycm9yLmh0bWwgYW5kIHJlYmFzZWQgdGVzdHMKKworICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZWFkYWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQpOgorICAgICAgICAqIE1vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVJl
YWRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRl
cjo6Y2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjaGFu
Z2VTdGF0ZVRvQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVy
OjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCk6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtUmVhZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6
CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlamVjdCk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmVycm9yKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNsb3NlZCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJs
ZUpTU3RyZWFtOjpjcmVhdGVSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0
cmVhbTo6c3RvcmVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpS
ZWFkZXI6OnN0b3JlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6
anNDb250cm9sbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmg6CisKIDIwMTUtMDUtMDYgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFy
aXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5v
bi5mcj4KIAogICAgICAgICBNb3ZlIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaC8uY3BwIHRvIFJl
YWRhYmxlSlNTdHJlYW0uaC8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJl
YW1zL1JlYWRhYmxlU3RyZWFtLmNwcAppbmRleCAyMWJlNmJkOTNmYzZhNDUxZjI4NDFmOWJlYzhi
YmEyN2UwNjUwMWVjLi40ZDY5ZWU2ODdiYWY2MGM4YTIzY2RhMjY2YTY0YzI5NDdmMGM3MmRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5j
cHAKQEAgLTY4LDYgKzY4LDE2IEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9D
bG9zZWQoKQogICAgIEFTU0VSVCghbV9yZWFkZXIpOwogfQogCit2b2lkIFJlYWRhYmxlU3RyZWFt
OjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJl
YWRhYmxlKQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpFcnJvcmVkOwor
ICAgIGlmIChtX3JlYWRlcikKKyAgICAgICAgbV9yZWFkZXItPmNoYW5nZVN0YXRlVG9FcnJvcmVk
KCk7CisgICAgQVNTRVJUKCFtX3JlYWRlcik7Cit9CisKIHZvaWQgUmVhZGFibGVTdHJlYW06OnN0
YXJ0KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAppbmRleCAyZTU4ODhkNDU2YTk1MzUzNTI4MDE0
OWE4YzJhYzczOWQwZTM2ZGI5Li4wMGFjOTZjODFlOGQ4OTM0ZmE1ZDhkMmQwOWJkYjBjOTA0NTA3
YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW0uaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAg
dm9pZCBjaGFuZ2VTdGF0ZVRvQ2xvc2VkKCk7CisgICAgdm9pZCBjaGFuZ2VTdGF0ZVRvRXJyb3Jl
ZCgpOwogCiAgICAgUmVhZGFibGVTdHJlYW1Tb3VyY2UmIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291
cmNlLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFt
cy9SZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvUmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCmluZGV4IDNjNDViMWE2MTJhNzk2MzM0YWNmNzhk
MWIwMDI2MWU2NzIzNzIzM2IuLjA2NWY1ZDdmYWI4ZGEzMzI1NjFkYzk4YjMzMWRjMTg4MzEzNDdi
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtUmVhZGVyLmNwcApAQCAtNjksNiArNjksMTAgQEAgdm9pZCBSZWFkYWJsZVN0cmVh
bVJlYWRlcjo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIGNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAobV9zdHJlYW0tPmludGVybmFsU3RhdGUoKSA9
PSBSZWFkYWJsZVN0cmVhbTo6U3RhdGU6OkVycm9yZWQpIHsKKyAgICAgICAgY2hhbmdlU3RhdGVU
b0Vycm9yZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogdm9pZCBSZWFkYWJsZVN0
cmVhbVJlYWRlcjo6cmVsZWFzZVN0cmVhbSgpCkBAIC03OCwxMyArODIsMTggQEAgdm9pZCBSZWFk
YWJsZVN0cmVhbVJlYWRlcjo6cmVsZWFzZVN0cmVhbSgpCiAgICAgbV9zdHJlYW0gPSBudWxscHRy
OwogfQogCi12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoQ2xvc2VkU3VjY2Vzc0Nh
bGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgQ2xvc2VkRXJyb3JDYWxsYmFjaykKK3ZvaWQgUmVhZGFi
bGVTdHJlYW1SZWFkZXI6OmNsb3NlZChDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxi
YWNrLCBDbG9zZWRFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spCiB7CiAgICAgaWYgKG1fc3Rh
dGUgPT0gU3RhdGU6OkNsb3NlZCkgewogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCkgewor
ICAgICAgICBlcnJvckNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgbV9j
bG9zZWRTdWNjZXNzQ2FsbGJhY2sgPSBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBt
X2Nsb3NlZEVycm9yQ2FsbGJhY2sgPSBXVEY6Om1vdmUoZXJyb3JDYWxsYmFjayk7CiB9CiAKIHZv
aWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQpAQCAtOTcsOCAr
MTA2LDI4IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9DbG9zZWQo
KQogICAgICAgICBjbG9zZWRTdWNjZXNzQ2FsbGJhY2soKTsKICAgICB9CiAgICAgQVNTRVJUKCFt
X2Nsb3NlZFN1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgcmVsZWFzZVN0cmVhbSgpOworICAgIG1fY2xv
c2VkRXJyb3JDYWxsYmFjayA9IG51bGxwdHI7CisKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJl
YWQgcHJvbWlzZSBmdWxmaWxsaW5nLgorCisgICAgcmVsZWFzZVN0cmVhbSgpOworfQorCit2b2lk
IFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCit7CisgICAgQVNT
RVJUKG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRhYmxlKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkVy
cm9yZWQ7CisKKyAgICBpZiAobV9jbG9zZWRFcnJvckNhbGxiYWNrKSB7CisgICAgICAgIENsb3Nl
ZEVycm9yQ2FsbGJhY2sgY2xvc2VkRXJyb3JDYWxsYmFjayA9IFdURjo6bW92ZShtX2Nsb3NlZEVy
cm9yQ2FsbGJhY2spOworICAgICAgICBjbG9zZWRFcnJvckNhbGxiYWNrKCk7CisgICAgfQorICAg
IEFTU0VSVCghbV9jbG9zZWRFcnJvckNhbGxiYWNrKTsKKyAgICBtX2Nsb3NlZFN1Y2Nlc3NDYWxs
YmFjayA9IG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlYWQgcHJvbWlzZSBy
ZWplY3Rpb24uCisKKyAgICByZWxlYXNlU3RyZWFtKCk7CiB9CiAKIGNvbnN0IGNoYXIqIFJlYWRh
YmxlU3RyZWFtUmVhZGVyOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKaW5k
ZXggZDU0N2QyY2NiMDU4MmY1MjlhNTVhZGJkMzNlMGVjY2E1YWNmOWY5Ni4uN2RkYWYwMjMyM2U5
ODIxOGY0ZmI4YzQ3YTkzMTIwYzYzY2NmNTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJs
ZS5oIgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVl
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
QEAgLTYxLDYgKzYyLDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VkKENsb3NlZFN1Y2Nlc3ND
YWxsYmFjaywgQ2xvc2VkRXJyb3JDYWxsYmFjayk7CiAKICAgICB2b2lkIGNoYW5nZVN0YXRlVG9D
bG9zZWQoKTsKKyAgICB2b2lkIGNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7CisKKyAgICB2aXJ0dWFs
IEpTQzo6SlNWYWx1ZSBlcnJvcigpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyKFJlYWRhYmxlU3RyZWFtJik7CkBAIC03Nyw2ICs4MSw3IEBAIHByaXZhdGU6CiAg
ICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpSZWFkYWJsZSB9OwogCiAgICAgQ2xvc2VkU3VjY2Vz
c0NhbGxiYWNrIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrOworICAgIENsb3NlZEVycm9yQ2FsbGJh
Y2sgbV9jbG9zZWRFcnJvckNhbGxiYWNrOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVByb21pc2UuaAppbmRleCA1OTJlYjBjN2EzZjNiODcxNTI4OTliYjJmZDRmZDE1
MWFmYmFhNjVlLi45ZDQwODk5Yzg0YTg3ZDkyN2NhMjg4MGYwMmQ5OTFmZWU3N2E0NTc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtODIsNiArODIsMTQg
QEAgaW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3QoY29uc3Qgc3RkOjpudWxscHRy
X3QmKQogfQogCiB0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVj
dChjb25zdCBKU0M6OkpTVmFsdWUmIHZhbHVlKQoreworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVj
ID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIoZXhlYyk7CisgICAgcmVqZWN0KGV4ZWMsIHZhbHVlKTsKK30KKwordGVtcGxhdGU8Pgog
aW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPFN0cmluZz4oY29uc3QgU3RyaW5n
JiByZXN1bHQpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwCmluZGV4IDY5NWNmMjll
ODdkZTQ2Zjg2Nzg0OWM3Mjg1ZGEyYjY3MDg0YzdlNTcuLmJhOTQyMzY3NzI4NWZlYzA0Yzc1NWRl
NmYzNTIzYzk5NTFhODJjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKQEAgLTYy
LDcgKzYyLDcgQEAgSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6ZXJyb3IoRXhl
Y1N0YXRlKiBleGVjKQogICAgIFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSA9IGltcGwoKS5zdHJl
YW0oKTsKICAgICBpZiAoc3RyZWFtLmludGVybmFsU3RhdGUoKSAhPSBSZWFkYWJsZVN0cmVhbTo6
U3RhdGU6OlJlYWRhYmxlKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYWxsaW5nIGVycm9y
IG9uIGEgc3RyZWFtIHdoaWNoIGlzIG5vdCByZWFkYWJsZSIpKSk7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBzdHJlYW0uc3RvcmVFcnJvcigqZXhlYyk7CiAgICAgcmV0dXJuIGpzVW5kZWZp
bmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVh
ZGFibGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKaW5kZXggNDhkYjU0ZjkwY2IyZWEzYTdl
ODJiYTllYWI5MGU0NjUxODdjNjUwOC4uZDMxZDg4NWIwMWExNGY2OTBkNmRiMmYzNDVjY2IyZmIz
ZDY1OTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJs
ZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNSZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKQEAgLTc1LDggKzc1LDcgQEAgSlNWYWx1
ZSBKU1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAog
ICAgICAgICB3cmFwcGVyLnJlc29sdmUoanNVbmRlZmluZWQoKSk7CiAgICAgfTsKICAgICBhdXRv
IGZhaWx1cmVDYWxsYmFjayA9IFt0aGlzLCB3cmFwcGVyXSgpIG11dGFibGUgewotICAgICAgICAv
LyBGSVhNRTogcmV0dXJuIHN0b3JlZCBlcnJvci4KLSAgICAgICAgd3JhcHBlci5yZWplY3QoJmlt
cGwoKSk7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KGltcGwoKS5lcnJvcigpKTsKICAgICB9Owog
CiAgICAgaW1wbCgpLmNsb3NlZChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGOjptb3Zl
KGZhaWx1cmVDYWxsYmFjaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFk
YWJsZUpTU3RyZWFtLmNwcAppbmRleCBmMDY3ZDE2OTM5NWY0YjZmZDhjYzg5YTNkZTY4YmYxZGU4
OWQyZTYxLi42YjI5MTUzMjYwNDA3YjE0NWE4ZjA1ZGMyYzQzM2YyY2FiMDgzMWVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAtMTQx
LDcgKzE0MSwxMCBAQCBSZWY8UmVhZGFibGVKU1N0cmVhbT4gUmVhZGFibGVKU1N0cmVhbTo6Y3Jl
YXRlKEV4ZWNTdGF0ZSYgZXhlYywgU2NyaXB0RXhlY3V0aW9uQwogCiBSZWY8UmVhZGFibGVTdHJl
YW1SZWFkZXI+IFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZVJlYWRlcigpCiB7Ci0gICAgcmV0dXJu
IFJlYWRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBSZWY8UmVhZGVyPiByZWFkZXIgPSAgUmVhZGVy
OjpjcmVhdGUoKnRoaXMpOworICAgIGlmIChtX2Vycm9yKQorICAgICAgICByZWFkZXItPnN0b3Jl
RXJyb3IoKmpzU291cmNlKCkuZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgbV9lcnJvci5n
ZXQoKSk7CisgICAgcmV0dXJuIHJlYWRlci5nZXQoKTsKIH0KIAogUmVhZGFibGVKU1N0cmVhbTo6
UmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LCBSZWY8UmVhZGFibGVKU1N0cmVhbTo6U291cmNlPiYmIHNvdXJjZSkKQEAgLTE2MSw2
ICsxNjQsMjAgQEAgSlNWYWx1ZSBSZWFkYWJsZUpTU3RyZWFtOjpqc0NvbnRyb2xsZXIoRXhlY1N0
YXRlJiBleGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmEKICAgICByZXR1cm4gdG9KUygmZXhl
YywgZ2xvYmFsT2JqZWN0LCBtX2NvbnRyb2xsZXIuZ2V0KCkpOwogfQogCit2b2lkIFJlYWRhYmxl
SlNTdHJlYW06OnN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIGV4ZWMpCit7CisgICAgaWYgKG1f
ZXJyb3IpCisgICAgICAgIHJldHVybjsKKyAgICBKU1ZhbHVlIGVycm9yID0gZXhlYy5hcmd1bWVu
dENvdW50KCkgPyBleGVjLmFyZ3VtZW50KDApIDogY3JlYXRlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiRXJyb3IgZnVuY3Rpb24gY2FsbGVkLiIpKTsKKyAgICBtX2Vycm9yLnNldChleGVjLnZt
KCksIGVycm9yKTsKKworICAgIFJlYWRlciogcmVhZGVyID0gc3RhdGljX2Nhc3Q8UmVhZGVyKj4o
dGhpcy0+cmVhZGVyKCkpOworICAgIGlmIChyZWFkZXIpCisgICAgICAgIHJlYWRlci0+c3RvcmVF
cnJvcihleGVjLCBlcnJvcik7CisKKyAgICBjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpOworfQorCiBS
ZWY8UmVhZGFibGVKU1N0cmVhbTo6UmVhZGVyPiBSZWFkYWJsZUpTU3RyZWFtOjpSZWFkZXI6OmNy
ZWF0ZShSZWFkYWJsZUpTU3RyZWFtJiBzdHJlYW0pCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUmVhZGVyKHN0cmVhbSkpOwpAQCAtMTcxLDYgKzE4OCwxMSBAQCBSZWFkYWJsZUpTU3RyZWFt
OjpSZWFkZXI6OlJlYWRlcihSZWFkYWJsZUpTU3RyZWFtJiByZWFkYWJsZVN0cmVhbSkKIHsKIH0K
IAordm9pZCBSZWFkYWJsZUpTU3RyZWFtOjpSZWFkZXI6OnN0b3JlRXJyb3IoSlNDOjpFeGVjU3Rh
dGUmIGV4ZWMsIEpTVmFsdWUgZXJyb3IpCit7CisgICAgbV9lcnJvci5zZXQoZXhlYy52bSgpLCBl
cnJvcik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKaW5kZXggYmU3ZjJiZDIzNWE2
MjU2OGUxOTFiMWFjMWM5MjEzNGE0MTU3N2Q4MC4uOTAwYWVkNmVjZmY4NDU4NWQ5YWNkYWMxYjVi
ZjQyMDM4MTA5MTFhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVKU1N0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
SlNTdHJlYW0uaApAQCAtNTEsOCArNTEsMTMgQEAgcHJpdmF0ZToKICAgICBjbGFzcyBSZWFkZXI6
IHB1YmxpYyBSZWFkYWJsZVN0cmVhbVJlYWRlciB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0
aWMgUmVmPFJlYWRlcj4gY3JlYXRlKFJlYWRhYmxlSlNTdHJlYW0mKTsKKyAgICAgICAgdm9pZCBz
dG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKKyAgICAgICAgSlNDOjpK
U1ZhbHVlIGVycm9yKCkgeyByZXR1cm4gbV9lcnJvci5nZXQoKTsgfQorCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgZXhwbGljaXQgUmVhZGVyKFJlYWRhYmxlSlNTdHJlYW0mKTsKKworICAgICAgICBK
U0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fZXJyb3I7CiAgICAgfTsKIAogICAgIGNsYXNzIFNv
dXJjZTogcHVibGljIFJlYWRhYmxlU3RyZWFtU291cmNlIHsKQEAgLTc1LDEwICs4MCwxNCBAQCBw
dWJsaWM6CiAgICAgUmVhZGFibGVKU1N0cmVhbTo6U291cmNlJiBqc1NvdXJjZSgpOwogICAgIEpT
Qzo6SlNWYWx1ZSBqc0NvbnRyb2xsZXIoSlNDOjpFeGVjU3RhdGUmLCBKU0RPTUdsb2JhbE9iamVj
dCopOwogCisgICAgdm9pZCBzdG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlJik7CisgICAgSlNDOjpK
U1ZhbHVlIGVycm9yKCkgeyByZXR1cm4gbV9lcnJvci5nZXQoKTsgfQorCiBwcml2YXRlOgogICAg
IFJlYWRhYmxlSlNTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFJlZjxSZWFkYWJsZUpT
U3RyZWFtOjpTb3VyY2U+JiYpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlcj4gbV9jb250cm9sbGVyOworICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4g
bV9lcnJvcjsKIH07CiAKIHZvaWQgc2V0SW50ZXJuYWxTbG90VG9PYmplY3QoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTVmFsdWUsIEpTQzo6UHJpdmF0ZU5hbWUmLCBKU0M6OkpTVmFsdWUpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDU4NmQ4ZGE5YWZlYTU1OWE5MjQ4YTU5YTEzMTAxYWU0ZWQyYTgxODQuLjgxZDliOWI0YjEz
ODczNjFjY2ZkMmZkYzI1NTUzZjU2YzVhNzZiMmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
NS0wNS0wNSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPiBh
bmQgWW91ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAg
W1N0cmVhbXMgQVBJXSBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzdGFydCBmdW5jdGlvbiBz
aG91bGQgYmUgYWJsZSB0byBlcnJvciB0aGUgc3RyZWFtCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDExNjIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRy
b2xsZXItZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbS1jb250cm9sbGVyLWVycm9yLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0
ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0OgorCiAyMDE1LTA1LTA1ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXVtXSzJd
IFRoZSBXZWJLaXQgbmV0d29yayBkaXNrIGNhY2hlIGlzIG5vdCBlbmFibGVkCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1jb250cm9sbGVyLWVycm9yLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xs
ZXItZXJyb3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwMzM2ZTBiMGVmMDlhMzRjNzcxNDJi
MDM2MDExM2QyOWQ5YzczMDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlYWRhYmxlLXN0cmVhbS1jb250cm9sbGVyLWVycm9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDUgQEAKKworUEFTUyBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIHNob3VsZCByZWplY3QgUmVh
ZGFibGVTdHJlYW1SZWFkZXIgY2xvc2UgcHJvbWlzZSAKK1BBU1MgRXJyb3JpbmcgYSBSZWFkYWJs
ZVN0cmVhbSBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlIHByb21pc2Ug
CitQQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gd2l0aG91dCBhbnkgdmFsdWUgCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xsZXIt
ZXJyb3IuaHRtbCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xs
ZXItZXJyb3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wY2U3YWE1MGFkNTk3NDcyNjgzNTI2OGVhNjk5MDA2
ZmRkYmZhZmJiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW0tY29udHJvbGxlci1lcnJvci5odG1sCkBAIC0wLDAgKzEsNjkgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz48L3Nj
cmlwdD4KKzxzY3JpcHQ+CisKK3QyID0gYXN5bmNfdGVzdCgnRXJyb3JpbmcgYSBSZWFkYWJsZVN0
cmVhbSBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlIHByb21pc2UnKTsK
K3QyLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFyIHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAg
ICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgfSk7CisKKyAgIHJzLmdldFJl
YWRlcigpLmNsb3NlZC50aGVuKHQyLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNz
ZXJ0X3VucmVhY2hlZCgiY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSByZXNvbHZlZCB3aGVu
IHN0cmVhbSBpcyBlcnJvcmVkIik7CisgICAgfSksIHQyLnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIp
IHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyc0Vycm9yLCBlcnIpOworICAgICAgICB0Mi5kb25l
KCk7CisgICAgfSkpOworCisgICAgdmFyIHJzRXJyb3IgPSAibXkgZXJyb3IiOworICAgIGNvbnRy
b2xsZXIuZXJyb3IocnNFcnJvcik7Cit9KTsKKwordDMgPSBhc3luY190ZXN0KCdFcnJvcmluZyBh
IFJlYWRhYmxlU3RyZWFtIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIgY2xvc2Ug
cHJvbWlzZScpOwordDMuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJvbGxlcjsKKyAg
ICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24o
YykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9KTsKKwor
ICAgIHZhciByc0Vycm9yID0gIm15IGVycm9yIjsKKyAgICBjb250cm9sbGVyLmVycm9yKHJzRXJy
b3IpOworCisgICAgLy8gTGV0J3MgY2FsbCBnZXRSZWFkZXIgdHdpY2UgdG8gZW5zdXJlIHRoYXQg
c3RyZWFtIGlzIG5vdCBsb2NrZWQgdG8gYSByZWFkZXIuCisgICAgcnMuZ2V0UmVhZGVyKCk7Cisg
ICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgewor
ICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGJlIHJl
c29sdmVkIHdoZW4gc3RyZWFtIGlzIGVycm9yZWQiKTsKKyAgICB9KSwgdDMuc3RlcF9mdW5jKGZ1
bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHJzRXJyb3IsIGVycik7CisgICAg
ICAgIHQzLmRvbmUoKTsKKyAgICB9KSk7Cit9KTsKKwordDQgPSBhc3luY190ZXN0KCdFcnJvcmlu
ZyBhIFJlYWRhYmxlU3RyZWFtIHdpdGhvdXQgYW55IHZhbHVlJyk7Cit0NC5zdGVwKGZ1bmN0aW9u
KCkgeworICAgIHZhciBjb250cm9sbGVyOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVh
bSh7CisgICAgICAgIHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVy
ID0gYzsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRo
ZW4odDMuc3RlcF9mdW5jKGZ1bmN0aW9uKCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJj
bG9zZWQgcHJvbWlzZSBzaG91bGQgbm90IGJlIHJlc29sdmVkIHdoZW4gc3RyZWFtIGlzIGVycm9y
ZWQiKTsKKyAgICB9KSwgdDQuc3RlcF9mdW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICAvLyBF
cnJvciBnZW5lcmF0ZWQgYnkgSlMgZW5naW5lLgorICAgICAgICBhc3NlcnRfdHJ1ZSh0eXBlb2Yg
ZXJyID09ICdvYmplY3QnKTsKKyAgICAgICAgdDQuZG9uZSgpOworICAgIH0pKTsKKworICAgIGNv
bnRyb2xsZXIuZXJyb3IoKTsKK30pOworCisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291
cmNlcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dAppbmRleCAxMzA2OWE5
YzM5NzdkMzc4NmQ0NTg1OWM0ZWVhZjRiMzRlMDM2MTBhLi4xOWNhMzU1NTk1NzRlMzEzMDk5ZmM0
ODgyY2FkZDE0MTJhOWEyMjgwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5k
ZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dApAQCAtMjEsNyArMjEsNyBAQCBQQVNTIFVuZGVy
bHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNlIG9uIGFuIGVtcHR5IHN0cmVhbSBzaG91
bGQgdGhyb3cgdGhlCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3NlIHR3aWNl
IG9uIGEgbm9uLWVtcHR5IHN0cmVhbSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1lIHJlYWQg
aXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGNsb3Nl
IG9uIGFuIGVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRocm93IGNhbmNlbCBpcyBu
b3QgaW1wbGVtZW50ZWQKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2Ugb24g
YSBub24tZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3QgdGhyb3cgY2FuY2VsIGlzIG5v
dCBpbXBsZW1lbnRlZAotVElNRU9VVCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBh
ZnRlciBlcnJvciBzaG91bGQgdGhyb3cgVGVzdCB0aW1lZCBvdXQKLVRJTUVPVVQgVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGlt
ZSBUZXN0IHRpbWVkIG91dAorUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSBh
ZnRlciBlcnJvciBzaG91bGQgdGhyb3cgCitQQVNTIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5n
IGVycm9yIHR3aWNlIHNob3VsZCB0aHJvdyB0aGUgc2Vjb25kIHRpbWUgCiBQQVNTIFVuZGVybHlp
bmcgc291cmNlOiBjYWxsaW5nIGVycm9yIGFmdGVyIGNsb3NlIHNob3VsZCB0aHJvdyAKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVh
ZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVj
dGVkLnR4dAppbmRleCBhNzE2OThkM2NjOTU2NjVkODQyMDFiMTA1YjNlYmZjYjZkNDk3ZTJjLi4y
MzhiMGY3ZmI3NTA4MmI3Yjk2YTgzYmE0ZDE5ZDhmNGExZDhlZjdiIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0t
dGVtcGxhdGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5j
ZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dApA
QCAtMjgsNyArMjgsNyBAQCBGQUlMIGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIg
dGhhdCBhY3RzIGVycm9yZWQgcmVhZCBpcyBub3QgaW1wbGVtZW50ZQogUEFTUyBSdW5uaW5nIHRl
bXBsYXRlZFJTRXJyb3JlZFN5bmNPbmx5IHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlh
IGNhbGwgaW4gc3RhcnQpIAogRkFJTCBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGluY3Qg
cmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJ
TCByZWFkZXIgY2FuY2VsKCkgc2hvdWxkIHJldHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21p
c2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKLUZBSUwgc2hvdWxkIGJlIGFi
bGUgdG8gYWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzLCBzaW5jZSB0aGV5IGFyZSBhbGwgYXV0by1y
ZWxlYXNlZCBSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQKK1BBU1Mgc2hvdWxkIGJlIGFibGUgdG8g
YWNxdWlyZSBtdWx0aXBsZSByZWFkZXJzLCBzaW5jZSB0aGV5IGFyZSBhbGwgYXV0by1yZWxlYXNl
ZCAKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWQgd2l0aCBSZWFkYWJsZVN0cmVhbSAo
ZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQgcHJvbWlzZSBpbiBzdGFydCkgCiBGQUlM
IGdldFJlYWRlcigpIHNob3VsZCByZXR1cm4gYSByZWFkZXIgdGhhdCBhY3RzIGVycm9yZWQgcmVh
ZCBpcyBub3QgaW1wbGVtZW50ZWQKIFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRSZWFk
ZXIgd2l0aCBSZWFkYWJsZVN0cmVhbSAoZXJyb3JlZCB2aWEgcmV0dXJuaW5nIGEgcmVqZWN0ZWQg
cHJvbWlzZSBpbiBzdGFydCkgcmVhZGVyIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252713</attachid>
            <date>2015-05-08 02:49:35 -0700</date>
            <delta_ts>2015-05-08 02:52:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-141162-20150508114812.patch</filename>
            <type>text/plain</type>
            <size>18340</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYwNzkwN2Y0NWM4ODQ3
MjExZGQzYTU2NGNjMzcyYTI0ODQwNWVlNi4uMGFiZGExMWQ1ZDcxOTE4ZWQ3NjVjNWEwZmUxMWI0
NDAxNmQ3YTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE1LTA1LTA4ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHN0YXJ0IGZ1bmN0aW9uIHNob3VsZCBiZSBhYmxl
IHRvIGVycm9yIHRoZSBzdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MTE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUg
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGVycm9yIGZ1bmN0aW9uLgorICAgICAgICBJdCBiYXNp
Y2FsbHkgY2hhbmdlcyB0aGUgc3RhdGUgb2YgdGhlIHN0cmVhbSB0byBlcnJvcmVkLCByZXNvbHZl
cyB0aGUgcmVhZHkgcHJvbWlzZSBhbmQgcmVqZWN0cyB0aGUgY2xvc2VkIHByb21pc2UuCisgICAg
ICAgIEFkZGluZyBzdXBwb3J0IHRvIHJlamVjdCBwcm9taXNlIHdpdGggYW55IEpTVmFsdWUuCisK
KyAgICAgICAgU3VwcG9ydCBmb3Igc3RvcmluZyB0aGUgZXJyb3IgaXMgYWRkZWQgdG8gYm90aCBy
ZWFkZXIgYW5kIHN0cmVhbS4KKworICAgICAgICBUZXN0OiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS1jb250cm9sbGVyLWVycm9yLmh0bWwgYW5kIHJlYmFzZWQgdGVzdHMKKworICAgICAgICAqIE1v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFk
YWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQpOgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRl
cjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjaGFuZ2VT
dGF0ZVRvQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpj
aGFuZ2VTdGF0ZVRvRXJyb3JlZCk6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlamVjdCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmVycm9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNsb3NlZCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpT
U3RyZWFtOjpjcmVhdGVSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVh
bTo6c3RvcmVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpSZWFk
ZXI6OnN0b3JlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6anND
b250cm9sbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3Ry
ZWFtLmg6CisKIDIwMTUtMDUtMDYgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNA
aWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5m
cj4KIAogICAgICAgICBNb3ZlIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaC8uY3BwIHRvIFJlYWRh
YmxlSlNTdHJlYW0uaC8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtLmNwcAppbmRleCAyMWJlNmJkOTNmYzZhNDUxZjI4NDFmOWJlYzhiYmEy
N2UwNjUwMWVjLi40ZDY5ZWU2ODdiYWY2MGM4YTIzY2RhMjY2YTY0YzI5NDdmMGM3MmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAK
QEAgLTY4LDYgKzY4LDE2IEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9DbG9z
ZWQoKQogICAgIEFTU0VSVCghbV9yZWFkZXIpOwogfQogCit2b2lkIFJlYWRhYmxlU3RyZWFtOjpj
aGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJlYWRh
YmxlKQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpFcnJvcmVkOworICAg
IGlmIChtX3JlYWRlcikKKyAgICAgICAgbV9yZWFkZXItPmNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7
CisgICAgQVNTRVJUKCFtX3JlYWRlcik7Cit9CisKIHZvaWQgUmVhZGFibGVTdHJlYW06OnN0YXJ0
KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAppbmRleCAyZTU4ODhkNDU2YTk1MzUzNTI4MDE0OWE4
YzJhYzczOWQwZTM2ZGI5Li4wMGFjOTZjODFlOGQ4OTM0ZmE1ZDhkMmQwOWJkYjBjOTA0NTA3YzEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
aApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9p
ZCBjaGFuZ2VTdGF0ZVRvQ2xvc2VkKCk7CisgICAgdm9pZCBjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgp
OwogCiAgICAgUmVhZGFibGVTdHJlYW1Tb3VyY2UmIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291cmNl
LmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCmluZGV4IDNjNDViMWE2MTJhNzk2MzM0YWNmNzhkMWIw
MDI2MWU2NzIzNzIzM2IuLjA2NWY1ZDdmYWI4ZGEzMzI1NjFkYzk4YjMzMWRjMTg4MzEzNDdiMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmNwcApAQCAtNjksNiArNjksMTAgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbVJl
YWRlcjo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIGNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAobV9zdHJlYW0tPmludGVybmFsU3RhdGUoKSA9PSBS
ZWFkYWJsZVN0cmVhbTo6U3RhdGU6OkVycm9yZWQpIHsKKyAgICAgICAgY2hhbmdlU3RhdGVUb0Vy
cm9yZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogdm9pZCBSZWFkYWJsZVN0cmVh
bVJlYWRlcjo6cmVsZWFzZVN0cmVhbSgpCkBAIC03OCwxMyArODIsMTggQEAgdm9pZCBSZWFkYWJs
ZVN0cmVhbVJlYWRlcjo6cmVsZWFzZVN0cmVhbSgpCiAgICAgbV9zdHJlYW0gPSBudWxscHRyOwog
fQogCi12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoQ2xvc2VkU3VjY2Vzc0NhbGxi
YWNrIHN1Y2Nlc3NDYWxsYmFjaywgQ2xvc2VkRXJyb3JDYWxsYmFjaykKK3ZvaWQgUmVhZGFibGVT
dHJlYW1SZWFkZXI6OmNsb3NlZChDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNr
LCBDbG9zZWRFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spCiB7CiAgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkNsb3NlZCkgewogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCkgeworICAg
ICAgICBlcnJvckNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgbV9jbG9z
ZWRTdWNjZXNzQ2FsbGJhY2sgPSBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBtX2Ns
b3NlZEVycm9yQ2FsbGJhY2sgPSBXVEY6Om1vdmUoZXJyb3JDYWxsYmFjayk7CiB9CiAKIHZvaWQg
UmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQpAQCAtOTcsOCArMTA2
LDI4IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQog
ICAgICAgICBjbG9zZWRTdWNjZXNzQ2FsbGJhY2soKTsKICAgICB9CiAgICAgQVNTRVJUKCFtX2Ns
b3NlZFN1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgcmVsZWFzZVN0cmVhbSgpOworICAgIG1fY2xvc2Vk
RXJyb3JDYWxsYmFjayA9IG51bGxwdHI7CisKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlYWQg
cHJvbWlzZSBmdWxmaWxsaW5nLgorCisgICAgcmVsZWFzZVN0cmVhbSgpOworfQorCit2b2lkIFJl
YWRhYmxlU3RyZWFtUmVhZGVyOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCit7CisgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRhYmxlKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkVycm9y
ZWQ7CisKKyAgICBpZiAobV9jbG9zZWRFcnJvckNhbGxiYWNrKSB7CisgICAgICAgIENsb3NlZEVy
cm9yQ2FsbGJhY2sgY2xvc2VkRXJyb3JDYWxsYmFjayA9IFdURjo6bW92ZShtX2Nsb3NlZEVycm9y
Q2FsbGJhY2spOworICAgICAgICBjbG9zZWRFcnJvckNhbGxiYWNrKCk7CisgICAgfQorICAgIEFT
U0VSVCghbV9jbG9zZWRFcnJvckNhbGxiYWNrKTsKKyAgICBtX2Nsb3NlZFN1Y2Nlc3NDYWxsYmFj
ayA9IG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlYWQgcHJvbWlzZSByZWpl
Y3Rpb24uCisKKyAgICByZWxlYXNlU3RyZWFtKCk7CiB9CiAKIGNvbnN0IGNoYXIqIFJlYWRhYmxl
U3RyZWFtUmVhZGVyOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKaW5kZXgg
ZDU0N2QyY2NiMDU4MmY1MjlhNTVhZGJkMzNlMGVjY2E1YWNmOWY5Ni4uN2RkYWYwMjMyM2U5ODIx
OGY0ZmI4YzQ3YTkzMTIwYzYzY2NmNTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5o
IgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAg
LTYxLDYgKzYyLDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VkKENsb3NlZFN1Y2Nlc3NDYWxs
YmFjaywgQ2xvc2VkRXJyb3JDYWxsYmFjayk7CiAKICAgICB2b2lkIGNoYW5nZVN0YXRlVG9DbG9z
ZWQoKTsKKyAgICB2b2lkIGNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7CisKKyAgICB2aXJ0dWFsIEpT
Qzo6SlNWYWx1ZSBlcnJvcigpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIFJlYWRhYmxlU3RyZWFt
UmVhZGVyKFJlYWRhYmxlU3RyZWFtJik7CkBAIC03Nyw2ICs4MSw3IEBAIHByaXZhdGU6CiAgICAg
U3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpSZWFkYWJsZSB9OwogCiAgICAgQ2xvc2VkU3VjY2Vzc0Nh
bGxiYWNrIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrOworICAgIENsb3NlZEVycm9yQ2FsbGJhY2sg
bV9jbG9zZWRFcnJvckNhbGxiYWNrOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaAppbmRleCA1OTJlYjBjN2EzZjNiODcxNTI4OTliYjJmZDRmZDE1MWFm
YmFhNjVlLi45ZDQwODk5Yzg0YTg3ZDkyN2NhMjg4MGYwMmQ5OTFmZWU3N2E0NTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtODIsNiArODIsMTQgQEAg
aW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3QoY29uc3Qgc3RkOjpudWxscHRyX3Qm
KQogfQogCiB0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChj
b25zdCBKU0M6OkpTVmFsdWUmIHZhbHVlKQoreworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
bV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2Nr
ZXIoZXhlYyk7CisgICAgcmVqZWN0KGV4ZWMsIHZhbHVlKTsKK30KKwordGVtcGxhdGU8PgogaW5s
aW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPFN0cmluZz4oY29uc3QgU3RyaW5nJiBy
ZXN1bHQpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwCmluZGV4IDY5NWNmMjllODdk
ZTQ2Zjg2Nzg0OWM3Mjg1ZGEyYjY3MDg0YzdlNTcuLmJhOTQyMzY3NzI4NWZlYzA0Yzc1NWRlNmYz
NTIzYzk5NTFhODJjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6ZXJyb3IoRXhlY1N0
YXRlKiBleGVjKQogICAgIFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSA9IGltcGwoKS5zdHJlYW0o
KTsKICAgICBpZiAoc3RyZWFtLmludGVybmFsU3RhdGUoKSAhPSBSZWFkYWJsZVN0cmVhbTo6U3Rh
dGU6OlJlYWRhYmxlKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYWxsaW5nIGVycm9yIG9u
IGEgc3RyZWFtIHdoaWNoIGlzIG5vdCByZWFkYWJsZSIpKSk7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBzdHJlYW0uc3RvcmVFcnJvcigqZXhlYyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFi
bGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKaW5kZXggNDhkYjU0ZjkwY2IyZWEzYTdlODJi
YTllYWI5MGU0NjUxODdjNjUwOC4uZDMxZDg4NWIwMWExNGY2OTBkNmRiMmYzNDVjY2IyZmIzZDY1
OTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0
cmVhbVJlYWRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKQEAgLTc1LDggKzc1LDcgQEAgSlNWYWx1ZSBK
U1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAg
ICAgICB3cmFwcGVyLnJlc29sdmUoanNVbmRlZmluZWQoKSk7CiAgICAgfTsKICAgICBhdXRvIGZh
aWx1cmVDYWxsYmFjayA9IFt0aGlzLCB3cmFwcGVyXSgpIG11dGFibGUgewotICAgICAgICAvLyBG
SVhNRTogcmV0dXJuIHN0b3JlZCBlcnJvci4KLSAgICAgICAgd3JhcHBlci5yZWplY3QoJmltcGwo
KSk7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KGltcGwoKS5lcnJvcigpKTsKICAgICB9OwogCiAg
ICAgaW1wbCgpLmNsb3NlZChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGOjptb3ZlKGZh
aWx1cmVDYWxsYmFjaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
UmVhZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZUpTU3RyZWFtLmNwcAppbmRleCBmMDY3ZDE2OTM5NWY0YjZmZDhjYzg5YTNkZTY4YmYxZGU4OWQy
ZTYxLi5kMTMzNzMwZmIzZWJjODE3NzVmOGQzN2ZlZGU2ZWJkZTQyMGY0MDY2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAtMTQxLDcg
KzE0MSwxMCBAQCBSZWY8UmVhZGFibGVKU1N0cmVhbT4gUmVhZGFibGVKU1N0cmVhbTo6Y3JlYXRl
KEV4ZWNTdGF0ZSYgZXhlYywgU2NyaXB0RXhlY3V0aW9uQwogCiBSZWY8UmVhZGFibGVTdHJlYW1S
ZWFkZXI+IFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZVJlYWRlcigpCiB7Ci0gICAgcmV0dXJuIFJl
YWRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBSZWY8UmVhZGVyPiByZWFkZXIgPSAgUmVhZGVyOjpj
cmVhdGUoKnRoaXMpOworICAgIGlmIChtX2Vycm9yKQorICAgICAgICByZWFkZXItPnN0b3JlRXJy
b3IoKmpzU291cmNlKCkuZ2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgbV9lcnJvci5nZXQo
KSk7CisgICAgcmV0dXJuIHN0YXRpY19yZWZlcmVuY2VfY2FzdDxSZWFkYWJsZVN0cmVhbVJlYWRl
cj4ocmVhZGVyKTsKIH0KIAogUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBSZWY8UmVhZGFibGVK
U1N0cmVhbTo6U291cmNlPiYmIHNvdXJjZSkKQEAgLTE2MSw2ICsxNjQsMTkgQEAgSlNWYWx1ZSBS
ZWFkYWJsZUpTU3RyZWFtOjpqc0NvbnRyb2xsZXIoRXhlY1N0YXRlJiBleGVjLCBKU0RPTUdsb2Jh
bE9iamVjdCogZ2xvYmEKICAgICByZXR1cm4gdG9KUygmZXhlYywgZ2xvYmFsT2JqZWN0LCBtX2Nv
bnRyb2xsZXIuZ2V0KCkpOwogfQogCit2b2lkIFJlYWRhYmxlSlNTdHJlYW06OnN0b3JlRXJyb3Io
SlNDOjpFeGVjU3RhdGUmIGV4ZWMpCit7CisgICAgaWYgKG1fZXJyb3IpCisgICAgICAgIHJldHVy
bjsKKyAgICBKU1ZhbHVlIGVycm9yID0gZXhlYy5hcmd1bWVudENvdW50KCkgPyBleGVjLmFyZ3Vt
ZW50KDApIDogY3JlYXRlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXJyb3IgZnVuY3Rpb24g
Y2FsbGVkLiIpKTsKKyAgICBtX2Vycm9yLnNldChleGVjLnZtKCksIGVycm9yKTsKKworICAgIGlm
IChhdXRvIHJlYWRlciA9IHN0YXRpY19jYXN0PFJlYWRlcio+KHRoaXMtPnJlYWRlcigpKSkKKyAg
ICAgICAgcmVhZGVyLT5zdG9yZUVycm9yKGV4ZWMsIGVycm9yKTsKKworICAgIGNoYW5nZVN0YXRl
VG9FcnJvcmVkKCk7Cit9CisKIFJlZjxSZWFkYWJsZUpTU3RyZWFtOjpSZWFkZXI+IFJlYWRhYmxl
SlNTdHJlYW06OlJlYWRlcjo6Y3JlYXRlKFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSkKIHsKICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZWFkZXIoc3RyZWFtKSk7CkBAIC0xNzEsNiArMTg3LDEx
IEBAIFJlYWRhYmxlSlNTdHJlYW06OlJlYWRlcjo6UmVhZGVyKFJlYWRhYmxlSlNTdHJlYW0mIHJl
YWRhYmxlU3RyZWFtKQogewogfQogCit2b2lkIFJlYWRhYmxlSlNTdHJlYW06OlJlYWRlcjo6c3Rv
cmVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgZXhlYywgSlNWYWx1ZSBlcnJvcikKK3sKKyAgICBtX2Vy
cm9yLnNldChleGVjLnZtKCksIGVycm9yKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxl
SlNTdHJlYW0uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0u
aAppbmRleCBiZTdmMmJkMjM1YTYyNTY4ZTE5MWIxYWMxYzkyMTM0YTQxNTc3ZDgwLi45MDBhZWQ2
ZWNmZjg0NTg1ZDlhY2RhYzFiNWJmNDIwMzgxMDkxMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCkBAIC01MSw4ICs1MSwxMyBAQCBwcml2YXRl
OgogICAgIGNsYXNzIFJlYWRlcjogcHVibGljIFJlYWRhYmxlU3RyZWFtUmVhZGVyIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHN0YXRpYyBSZWY8UmVhZGVyPiBjcmVhdGUoUmVhZGFibGVKU1N0cmVh
bSYpOworICAgICAgICB2b2lkIHN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFs
dWUpOworICAgICAgICBKU0M6OkpTVmFsdWUgZXJyb3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgp
OyB9CisKICAgICBwcml2YXRlOgogICAgICAgICBleHBsaWNpdCBSZWFkZXIoUmVhZGFibGVKU1N0
cmVhbSYpOworCisgICAgICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4gbV9lcnJvcjsKICAg
ICB9OwogCiAgICAgY2xhc3MgU291cmNlOiBwdWJsaWMgUmVhZGFibGVTdHJlYW1Tb3VyY2UgewpA
QCAtNzUsMTAgKzgwLDE0IEBAIHB1YmxpYzoKICAgICBSZWFkYWJsZUpTU3RyZWFtOjpTb3VyY2Um
IGpzU291cmNlKCk7CiAgICAgSlNDOjpKU1ZhbHVlIGpzQ29udHJvbGxlcihKU0M6OkV4ZWNTdGF0
ZSYsIEpTRE9NR2xvYmFsT2JqZWN0Kik7CiAKKyAgICB2b2lkIHN0b3JlRXJyb3IoSlNDOjpFeGVj
U3RhdGUmKTsKKyAgICBKU0M6OkpTVmFsdWUgZXJyb3IoKSB7IHJldHVybiBtX2Vycm9yLmdldCgp
OyB9CisKIHByaXZhdGU6CiAgICAgUmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgUmVmPFJlYWRhYmxlSlNTdHJlYW06OlNvdXJjZT4mJik7CiAKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVhZGFibGVTdHJlYW1Db250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CisgICAgSlNDOjpT
dHJvbmc8SlNDOjpVbmtub3duPiBtX2Vycm9yOwogfTsKIAogdm9pZCBzZXRJbnRlcm5hbFNsb3RU
b09iamVjdChKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgSlNDOjpQcml2YXRlTmFtZSYs
IEpTQzo6SlNWYWx1ZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTg2ZDhkYTlhZmVhNTU5YTkyNDhhNTlhMTMxMDFhZTRl
ZDJhODE4NC4uYjNkMWY1YzgzZGQzY2NjNjkyMjhjNzg4NGJkMzUyYmJhNzdlNjQ0MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE1LTA1LTA4ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNh
bHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5j
YW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEldIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVj
dG9yIHN0YXJ0IGZ1bmN0aW9uIHNob3VsZCBiZSBhYmxlIHRvIGVycm9yIHRoZSBzdHJlYW0KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTE2MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogc3RyZWFtcy9yZWFk
YWJsZS1zdHJlYW0tY29udHJvbGxlci1lcnJvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHN0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xsZXItZXJyb3IuaHRtbDogQWRkZWQu
CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlp
bmctc291cmNlcy1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQ6CisKIDIw
MTUtMDUtMDUgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdW1dLMl0gVGhlIFdlYktpdCBuZXR3b3JrIGRpc2sgY2FjaGUgaXMgbm90IGVu
YWJsZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNv
bnRyb2xsZXItZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW0tY29udHJvbGxlci1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjAzMzZl
MGIwZWYwOWEzNGM3NzE0MmIwMzYwMTEzZDI5ZDljNzMwNwotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xsZXItZXJyb3ItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCitQQVNTIEVycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0g
c2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBjbG9zZSBwcm9taXNlIAorUEFTUyBF
cnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFk
ZXIgY2xvc2UgcHJvbWlzZSAKK1BBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSB3aXRob3V0
IGFueSB2YWx1ZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1z
dHJlYW0tY29udHJvbGxlci1lcnJvci5odG1sIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJs
ZS1zdHJlYW0tY29udHJvbGxlci1lcnJvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBjZTdhYTUwYWQ1OTc0
NzI2ODM1MjY4ZWE2OTkwMDZmZGRiZmFmYmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9zdHJlYW1zL3JlYWRhYmxlLXN0cmVhbS1jb250cm9sbGVyLWVycm9yLmh0bWwKQEAgLTAsMCAr
MSw2OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0nLi4vcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzJz48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMnPjwvc2NyaXB0PgorPHNjcmlwdD4KKwordDIgPSBhc3luY190ZXN0KCdFcnJv
cmluZyBhIFJlYWRhYmxlU3RyZWFtIHNob3VsZCByZWplY3QgUmVhZGFibGVTdHJlYW1SZWFkZXIg
Y2xvc2UgcHJvbWlzZScpOwordDIuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJvbGxl
cjsKKyAgICB2YXIgcnMgPSBuZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVu
Y3Rpb24oYykgeworICAgICAgICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgcnMuZ2V0UmVhZGVyKCkuY2xvc2VkLnRoZW4odDIuc3RlcF9mdW5jKGZ1bmN0aW9u
KCkgeworICAgICAgICBhc3NlcnRfdW5yZWFjaGVkKCJjbG9zZWQgcHJvbWlzZSBzaG91bGQgbm90
IGJlIHJlc29sdmVkIHdoZW4gc3RyZWFtIGlzIGVycm9yZWQiKTsKKyAgICB9KSwgdDIuc3RlcF9m
dW5jKGZ1bmN0aW9uKGVycikgeworICAgICAgICBhc3NlcnRfZXF1YWxzKHJzRXJyb3IsIGVycik7
CisgICAgICAgIHQyLmRvbmUoKTsKKyAgICB9KSk7CisKKyAgICB2YXIgcnNFcnJvciA9ICJteSBl
cnJvciI7CisgICAgY29udHJvbGxlci5lcnJvcihyc0Vycm9yKTsKK30pOworCit0MyA9IGFzeW5j
X3Rlc3QoJ0Vycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0
cmVhbVJlYWRlciBjbG9zZSBwcm9taXNlJyk7Cit0My5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZh
ciBjb250cm9sbGVyOworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAg
IHN0YXJ0OiBmdW5jdGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAg
ICAgfQorICAgIH0pOworCisgICAgdmFyIHJzRXJyb3IgPSAibXkgZXJyb3IiOworICAgIGNvbnRy
b2xsZXIuZXJyb3IocnNFcnJvcik7CisKKyAgICAvLyBMZXQncyBjYWxsIGdldFJlYWRlciB0d2lj
ZSB0byBlbnN1cmUgdGhhdCBzdHJlYW0gaXMgbm90IGxvY2tlZCB0byBhIHJlYWRlci4KKyAgICBy
cy5nZXRSZWFkZXIoKTsKKyAgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0My5zdGVwX2Z1
bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQoImNsb3NlZCBwcm9taXNl
IHNob3VsZCBub3QgYmUgcmVzb2x2ZWQgd2hlbiBzdHJlYW0gaXMgZXJyb3JlZCIpOworICAgIH0p
LCB0My5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocnNF
cnJvciwgZXJyKTsKKyAgICAgICAgdDMuZG9uZSgpOworICAgIH0pKTsKK30pOworCit0NCA9IGFz
eW5jX3Rlc3QoJ0Vycm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gd2l0aG91dCBhbnkgdmFsdWUnKTsK
K3Q0LnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGNvbnRyb2xsZXI7CisgICAgdmFyIHJzID0g
bmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAgc3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAg
ICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAgICB9CisgICAgfSk7CisKKyAgICBycy5nZXRS
ZWFkZXIoKS5jbG9zZWQudGhlbih0My5zdGVwX2Z1bmMoZnVuY3Rpb24oKSB7CisgICAgICAgIGFz
c2VydF91bnJlYWNoZWQoImNsb3NlZCBwcm9taXNlIHNob3VsZCBub3QgYmUgcmVzb2x2ZWQgd2hl
biBzdHJlYW0gaXMgZXJyb3JlZCIpOworICAgIH0pLCB0NC5zdGVwX2Z1bmMoZnVuY3Rpb24oZXJy
KSB7CisgICAgICAgIC8vIEVycm9yIGdlbmVyYXRlZCBieSBKUyBlbmdpbmUuCisgICAgICAgIGFz
c2VydF90cnVlKHR5cGVvZiBlcnIgPT0gJ29iamVjdCcpOworICAgICAgICB0NC5kb25lKCk7Cisg
ICAgfSkpOworCisgICAgY29udHJvbGxlci5lcnJvcigpOworfSk7CisKKworPC9zY3JpcHQ+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9i
YWQtdW5kZXJseWluZy1zb3VyY2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMv
cmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQu
dHh0CmluZGV4IDEzMDY5YTljMzk3N2QzNzg2ZDQ1ODU5YzRlZWFmNGIzNGUwMzYxMGEuLjE5Y2Ez
NTU1OTU3NGUzMTMwOTlmYzQ4ODJjYWRkMTQxMmE5YTIyODAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJj
ZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL2JhZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0CkBAIC0yMSw3ICsy
MSw3IEBAIFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgY2xvc2UgdHdpY2Ugb24gYW4g
ZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUKIEZBSUwgVW5kZXJseWluZyBzb3VyY2U6IGNh
bGxpbmcgY2xvc2UgdHdpY2Ugb24gYSBub24tZW1wdHkgc3RyZWFtIHNob3VsZCB0aHJvdyB0aGUg
c2Vjb25kIHRpbWUgcmVhZCBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgVW5kZXJseWluZyBzb3Vy
Y2U6IGNhbGxpbmcgY2xvc2Ugb24gYW4gZW1wdHkgY2FuY2VsZWQgc3RyZWFtIHNob3VsZCBub3Qg
dGhyb3cgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTog
Y2FsbGluZyBjbG9zZSBvbiBhIG5vbi1lbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0
aHJvdyBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCi1USU1FT1VUIFVuZGVybHlpbmcgc291cmNl
OiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyBUZXN0IHRpbWVkIG91dAot
VElNRU9VVCBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgdGhy
b3cgdGhlIHNlY29uZCB0aW1lIFRlc3QgdGltZWQgb3V0CitQQVNTIFVuZGVybHlpbmcgc291cmNl
OiBjYWxsaW5nIGNsb3NlIGFmdGVyIGVycm9yIHNob3VsZCB0aHJvdyAKK1BBU1MgVW5kZXJseWlu
ZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgdHdpY2Ugc2hvdWxkIHRocm93IHRoZSBzZWNvbmQgdGlt
ZSAKIFBBU1MgVW5kZXJseWluZyBzb3VyY2U6IGNhbGxpbmcgZXJyb3IgYWZ0ZXIgY2xvc2Ugc2hv
dWxkIHRocm93IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CmluZGV4IGE3MTY5OGQzY2M5NTY2NWQ4NDIwMWIxMDVi
M2ViZmNiNmQ0OTdlMmMuLjIzOGIwZjdmYjc1MDgyYjdiOTZhODNiYTRkMTlkOGY0YTFkOGVmN2Ig
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0
ZWQtZXhwZWN0ZWQudHh0CkBAIC0yOCw3ICsyOCw3IEBAIEZBSUwgZ2V0UmVhZGVyKCkgc2hvdWxk
IHJldHVybiBhIHJlYWRlciB0aGF0IGFjdHMgZXJyb3JlZCByZWFkIGlzIG5vdCBpbXBsZW1lbnRl
CiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkU3luY09ubHkgd2l0aCBSZWFkYWJsZVN0
cmVhbSAoZXJyb3JlZCB2aWEgY2FsbCBpbiBzdGFydCkgCiBGQUlMIGNhbmNlbCgpIHNob3VsZCBy
ZXR1cm4gYSBkaXN0aW5jdCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90
IGltcGxlbWVudGVkCiBGQUlMIHJlYWRlciBjYW5jZWwoKSBzaG91bGQgcmV0dXJuIGEgZGlzdGlu
Y3QgcmVqZWN0ZWQgcHJvbWlzZSBlYWNoIHRpbWUgY2FuY2VsIGlzIG5vdCBpbXBsZW1lbnRlZAot
RkFJTCBzaG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMsIHNpbmNlIHRo
ZXkgYXJlIGFsbCBhdXRvLXJlbGVhc2VkIFJlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZAorUEFTUyBz
aG91bGQgYmUgYWJsZSB0byBhY3F1aXJlIG11bHRpcGxlIHJlYWRlcnMsIHNpbmNlIHRoZXkgYXJl
IGFsbCBhdXRvLXJlbGVhc2VkIAogUEFTUyBSdW5uaW5nIHRlbXBsYXRlZFJTRXJyb3JlZCB3aXRo
IFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1cm5pbmcgYSByZWplY3RlZCBwcm9taXNl
IGluIHN0YXJ0KSAKIEZBSUwgZ2V0UmVhZGVyKCkgc2hvdWxkIHJldHVybiBhIHJlYWRlciB0aGF0
IGFjdHMgZXJyb3JlZCByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAogUEFTUyBSdW5uaW5nIHRlbXBs
YXRlZFJTRXJyb3JlZFJlYWRlciB3aXRoIFJlYWRhYmxlU3RyZWFtIChlcnJvcmVkIHZpYSByZXR1
cm5pbmcgYSByZWplY3RlZCBwcm9taXNlIGluIHN0YXJ0KSByZWFkZXIgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252714</attachid>
            <date>2015-05-08 02:52:38 -0700</date>
            <delta_ts>2015-05-08 03:45:30 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-141162-20150508115115.patch</filename>
            <type>text/plain</type>
            <size>18339</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzODY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYwNzkwN2Y0NWM4ODQ3
MjExZGQzYTU2NGNjMzcyYTI0ODQwNWVlNi4uMGFiZGExMWQ1ZDcxOTE4ZWQ3NjVjNWEwZmUxMWI0
NDAxNmQ3YTBjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDE1LTA1LTA4ICBYYWJp
ZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFi
bGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEld
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHN0YXJ0IGZ1bmN0aW9uIHNob3VsZCBiZSBhYmxl
IHRvIGVycm9yIHRoZSBzdHJlYW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MTE2MgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGUg
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGVycm9yIGZ1bmN0aW9uLgorICAgICAgICBJdCBiYXNp
Y2FsbHkgY2hhbmdlcyB0aGUgc3RhdGUgb2YgdGhlIHN0cmVhbSB0byBlcnJvcmVkLCByZXNvbHZl
cyB0aGUgcmVhZHkgcHJvbWlzZSBhbmQgcmVqZWN0cyB0aGUgY2xvc2VkIHByb21pc2UuCisgICAg
ICAgIEFkZGluZyBzdXBwb3J0IHRvIHJlamVjdCBwcm9taXNlIHdpdGggYW55IEpTVmFsdWUuCisK
KyAgICAgICAgU3VwcG9ydCBmb3Igc3RvcmluZyB0aGUgZXJyb3IgaXMgYWRkZWQgdG8gYm90aCBy
ZWFkZXIgYW5kIHN0cmVhbS4KKworICAgICAgICBUZXN0OiBzdHJlYW1zL3JlYWRhYmxlLXN0cmVh
bS1jb250cm9sbGVyLWVycm9yLmh0bWwgYW5kIHJlYmFzZWQgdGVzdHMKKworICAgICAgICAqIE1v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFk
YWJsZVN0cmVhbTo6Y2hhbmdlU3RhdGVUb0Vycm9yZWQpOgorICAgICAgICAqIE1vZHVsZXMvc3Ry
ZWFtcy9SZWFkYWJsZVN0cmVhbS5oOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJs
ZVN0cmVhbVJlYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRl
cjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbVJlYWRlcjo6
Y2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjaGFuZ2VT
dGF0ZVRvQ2xvc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlU3RyZWFtUmVhZGVyOjpj
aGFuZ2VTdGF0ZVRvRXJyb3JlZCk6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFdyYXBwZXI6OnJlamVjdCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6OmVycm9yKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUmVhZGVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkpTUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNsb3NlZCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpT
U3RyZWFtOjpjcmVhdGVSZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVh
bTo6c3RvcmVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpSZWFk
ZXI6OnN0b3JlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6anND
b250cm9sbGVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3Ry
ZWFtLmg6CisKIDIwMTUtMDUtMDYgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNA
aWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5m
cj4KIAogICAgICAgICBNb3ZlIFJlYWRhYmxlU3RyZWFtSlNTb3VyY2UuaC8uY3BwIHRvIFJlYWRh
YmxlSlNTdHJlYW0uaC8uY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0
cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1z
L1JlYWRhYmxlU3RyZWFtLmNwcAppbmRleCAyMWJlNmJkOTNmYzZhNDUxZjI4NDFmOWJlYzhiYmEy
N2UwNjUwMWVjLi40ZDY5ZWU2ODdiYWY2MGM4YTIzY2RhMjY2YTY0YzI5NDdmMGM3MmRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAK
QEAgLTY4LDYgKzY4LDE2IEBAIHZvaWQgUmVhZGFibGVTdHJlYW06OmNoYW5nZVN0YXRlVG9DbG9z
ZWQoKQogICAgIEFTU0VSVCghbV9yZWFkZXIpOwogfQogCit2b2lkIFJlYWRhYmxlU3RyZWFtOjpj
aGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCit7CisgICAgaWYgKG1fc3RhdGUgIT0gU3RhdGU6OlJlYWRh
YmxlKQorICAgICAgICByZXR1cm47CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpFcnJvcmVkOworICAg
IGlmIChtX3JlYWRlcikKKyAgICAgICAgbV9yZWFkZXItPmNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7
CisgICAgQVNTRVJUKCFtX3JlYWRlcik7Cit9CisKIHZvaWQgUmVhZGFibGVTdHJlYW06OnN0YXJ0
KCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaAppbmRleCAyZTU4ODhkNDU2YTk1MzUzNTI4MDE0OWE4
YzJhYzczOWQwZTM2ZGI5Li4wMGFjOTZjODFlOGQ4OTM0ZmE1ZDhkMmQwOWJkYjBjOTA0NTA3YzEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
aApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9p
ZCBjaGFuZ2VTdGF0ZVRvQ2xvc2VkKCk7CisgICAgdm9pZCBjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgp
OwogCiAgICAgUmVhZGFibGVTdHJlYW1Tb3VyY2UmIHNvdXJjZSgpIHsgcmV0dXJuIG1fc291cmNl
LmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbVJlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1SZWFkZXIuY3BwCmluZGV4IDNjNDViMWE2MTJhNzk2MzM0YWNmNzhkMWIw
MDI2MWU2NzIzNzIzM2IuLjA2NWY1ZDdmYWI4ZGEzMzI1NjFkYzk4YjMzMWRjMTg4MzEzNDdiMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVh
bVJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtUmVhZGVyLmNwcApAQCAtNjksNiArNjksMTAgQEAgdm9pZCBSZWFkYWJsZVN0cmVhbVJl
YWRlcjo6aW5pdGlhbGl6ZSgpCiAgICAgICAgIGNoYW5nZVN0YXRlVG9DbG9zZWQoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KKyAgICBpZiAobV9zdHJlYW0tPmludGVybmFsU3RhdGUoKSA9PSBS
ZWFkYWJsZVN0cmVhbTo6U3RhdGU6OkVycm9yZWQpIHsKKyAgICAgICAgY2hhbmdlU3RhdGVUb0Vy
cm9yZWQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIH0KIAogdm9pZCBSZWFkYWJsZVN0cmVh
bVJlYWRlcjo6cmVsZWFzZVN0cmVhbSgpCkBAIC03OCwxMyArODIsMTggQEAgdm9pZCBSZWFkYWJs
ZVN0cmVhbVJlYWRlcjo6cmVsZWFzZVN0cmVhbSgpCiAgICAgbV9zdHJlYW0gPSBudWxscHRyOwog
fQogCi12b2lkIFJlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoQ2xvc2VkU3VjY2Vzc0NhbGxi
YWNrIHN1Y2Nlc3NDYWxsYmFjaywgQ2xvc2VkRXJyb3JDYWxsYmFjaykKK3ZvaWQgUmVhZGFibGVT
dHJlYW1SZWFkZXI6OmNsb3NlZChDbG9zZWRTdWNjZXNzQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNr
LCBDbG9zZWRFcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2spCiB7CiAgICAgaWYgKG1fc3RhdGUg
PT0gU3RhdGU6OkNsb3NlZCkgewogICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KKyAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6RXJyb3JlZCkgeworICAg
ICAgICBlcnJvckNhbGxiYWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgbV9jbG9z
ZWRTdWNjZXNzQ2FsbGJhY2sgPSBXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICBtX2Ns
b3NlZEVycm9yQ2FsbGJhY2sgPSBXVEY6Om1vdmUoZXJyb3JDYWxsYmFjayk7CiB9CiAKIHZvaWQg
UmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQpAQCAtOTcsOCArMTA2
LDI4IEBAIHZvaWQgUmVhZGFibGVTdHJlYW1SZWFkZXI6OmNoYW5nZVN0YXRlVG9DbG9zZWQoKQog
ICAgICAgICBjbG9zZWRTdWNjZXNzQ2FsbGJhY2soKTsKICAgICB9CiAgICAgQVNTRVJUKCFtX2Ns
b3NlZFN1Y2Nlc3NDYWxsYmFjayk7Ci0gICAgcmVsZWFzZVN0cmVhbSgpOworICAgIG1fY2xvc2Vk
RXJyb3JDYWxsYmFjayA9IG51bGxwdHI7CisKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlYWQg
cHJvbWlzZSBmdWxmaWxsaW5nLgorCisgICAgcmVsZWFzZVN0cmVhbSgpOworfQorCit2b2lkIFJl
YWRhYmxlU3RyZWFtUmVhZGVyOjpjaGFuZ2VTdGF0ZVRvRXJyb3JlZCgpCit7CisgICAgQVNTRVJU
KG1fc3RhdGUgPT0gU3RhdGU6OlJlYWRhYmxlKTsKKyAgICBtX3N0YXRlID0gU3RhdGU6OkVycm9y
ZWQ7CisKKyAgICBpZiAobV9jbG9zZWRFcnJvckNhbGxiYWNrKSB7CisgICAgICAgIENsb3NlZEVy
cm9yQ2FsbGJhY2sgY2xvc2VkRXJyb3JDYWxsYmFjayA9IFdURjo6bW92ZShtX2Nsb3NlZEVycm9y
Q2FsbGJhY2spOworICAgICAgICBjbG9zZWRFcnJvckNhbGxiYWNrKCk7CisgICAgfQorICAgIEFT
U0VSVCghbV9jbG9zZWRFcnJvckNhbGxiYWNrKTsKKyAgICBtX2Nsb3NlZFN1Y2Nlc3NDYWxsYmFj
ayA9IG51bGxwdHI7CisKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlYWQgcHJvbWlzZSByZWpl
Y3Rpb24uCisKKyAgICByZWxlYXNlU3RyZWFtKCk7CiB9CiAKIGNvbnN0IGNoYXIqIFJlYWRhYmxl
U3RyZWFtUmVhZGVyOjphY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbVJlYWRlci5oIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKaW5kZXgg
ZDU0N2QyY2NiMDU4MmY1MjlhNTVhZGJkMzNlMGVjY2E1YWNmOWY5Ni4uN2RkYWYwMjMyM2U5ODIx
OGY0ZmI4YzQ3YTkzMTIwYzYzY2NmNTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtUmVhZGVyLmgKQEAgLTM2LDYgKzM2LDcgQEAK
ICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5o
IgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAg
LTYxLDYgKzYyLDkgQEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VkKENsb3NlZFN1Y2Nlc3NDYWxs
YmFjaywgQ2xvc2VkRXJyb3JDYWxsYmFjayk7CiAKICAgICB2b2lkIGNoYW5nZVN0YXRlVG9DbG9z
ZWQoKTsKKyAgICB2b2lkIGNoYW5nZVN0YXRlVG9FcnJvcmVkKCk7CisKKyAgICB2aXJ0dWFsIEpT
Qzo6SlNWYWx1ZSBlcnJvcigpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIFJlYWRhYmxlU3RyZWFt
UmVhZGVyKFJlYWRhYmxlU3RyZWFtJik7CkBAIC03Nyw2ICs4MSw3IEBAIHByaXZhdGU6CiAgICAg
U3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpSZWFkYWJsZSB9OwogCiAgICAgQ2xvc2VkU3VjY2Vzc0Nh
bGxiYWNrIG1fY2xvc2VkU3VjY2Vzc0NhbGxiYWNrOworICAgIENsb3NlZEVycm9yQ2FsbGJhY2sg
bV9jbG9zZWRFcnJvckNhbGxiYWNrOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVByb21pc2UuaAppbmRleCA1OTJlYjBjN2EzZjNiODcxNTI4OTliYjJmZDRmZDE1MWFm
YmFhNjVlLi45ZDQwODk5Yzg0YTg3ZDkyN2NhMjg4MGYwMmQ5OTFmZWU3N2E0NTc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVByb21pc2UuaApAQCAtODIsNiArODIsMTQgQEAg
aW5saW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZWplY3QoY29uc3Qgc3RkOjpudWxscHRyX3Qm
KQogfQogCiB0ZW1wbGF0ZTw+CitpbmxpbmUgdm9pZCBEZWZlcnJlZFdyYXBwZXI6OnJlamVjdChj
b25zdCBKU0M6OkpTVmFsdWUmIHZhbHVlKQoreworICAgIEpTQzo6RXhlY1N0YXRlKiBleGVjID0g
bV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2Nr
ZXIoZXhlYyk7CisgICAgcmVqZWN0KGV4ZWMsIHZhbHVlKTsKK30KKwordGVtcGxhdGU8PgogaW5s
aW5lIHZvaWQgRGVmZXJyZWRXcmFwcGVyOjpyZXNvbHZlPFN0cmluZz4oY29uc3QgU3RyaW5nJiBy
ZXN1bHQpCiB7CiAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBtX2dsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFk
YWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXJDdXN0b20uY3BwCmluZGV4IDY5NWNmMjllODdk
ZTQ2Zjg2Nzg0OWM3Mjg1ZGEyYjY3MDg0YzdlNTcuLmJhOTQyMzY3NzI4NWZlYzA0Yzc1NWRlNmYz
NTIzYzk5NTFhODJjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UmVhZGFibGVTdHJlYW1Db250cm9sbGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlckN1c3RvbS5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgSlNWYWx1ZSBKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcjo6ZXJyb3IoRXhlY1N0
YXRlKiBleGVjKQogICAgIFJlYWRhYmxlSlNTdHJlYW0mIHN0cmVhbSA9IGltcGwoKS5zdHJlYW0o
KTsKICAgICBpZiAoc3RyZWFtLmludGVybmFsU3RhdGUoKSAhPSBSZWFkYWJsZVN0cmVhbTo6U3Rh
dGU6OlJlYWRhYmxlKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJDYWxsaW5nIGVycm9yIG9u
IGEgc3RyZWFtIHdoaWNoIGlzIG5vdCByZWFkYWJsZSIpKSk7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBzdHJlYW0uc3RvcmVFcnJvcigqZXhlYyk7CiAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFi
bGVTdHJlYW1SZWFkZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKaW5kZXggNDhkYjU0ZjkwY2IyZWEzYTdlODJi
YTllYWI5MGU0NjUxODdjNjUwOC4uZDMxZDg4NWIwMWExNGY2OTBkNmRiMmYzNDVjY2IyZmIzZDY1
OTg1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNSZWFkYWJsZVN0
cmVhbVJlYWRlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNS
ZWFkYWJsZVN0cmVhbVJlYWRlckN1c3RvbS5jcHAKQEAgLTc1LDggKzc1LDcgQEAgSlNWYWx1ZSBK
U1JlYWRhYmxlU3RyZWFtUmVhZGVyOjpjbG9zZWQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAg
ICAgICB3cmFwcGVyLnJlc29sdmUoanNVbmRlZmluZWQoKSk7CiAgICAgfTsKICAgICBhdXRvIGZh
aWx1cmVDYWxsYmFjayA9IFt0aGlzLCB3cmFwcGVyXSgpIG11dGFibGUgewotICAgICAgICAvLyBG
SVhNRTogcmV0dXJuIHN0b3JlZCBlcnJvci4KLSAgICAgICAgd3JhcHBlci5yZWplY3QoJmltcGwo
KSk7CisgICAgICAgIHdyYXBwZXIucmVqZWN0KGltcGwoKS5lcnJvcigpKTsKICAgICB9OwogCiAg
ICAgaW1wbCgpLmNsb3NlZChXVEY6Om1vdmUoc3VjY2Vzc0NhbGxiYWNrKSwgV1RGOjptb3ZlKGZh
aWx1cmVDYWxsYmFjaykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
UmVhZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZUpTU3RyZWFtLmNwcAppbmRleCBmMDY3ZDE2OTM5NWY0YjZmZDhjYzg5YTNkZTY4YmYxZGU4OWQy
ZTYxLi4wYTkxMzAwYjFiM2VmNGU5MTg3ODA5NDc4Y2ZmNmZlYTk5YTQzYzNlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcApAQCAtMTQxLDcg
KzE0MSwxMCBAQCBSZWY8UmVhZGFibGVKU1N0cmVhbT4gUmVhZGFibGVKU1N0cmVhbTo6Y3JlYXRl
KEV4ZWNTdGF0ZSYgZXhlYywgU2NyaXB0RXhlY3V0aW9uQwogCiBSZWY8UmVhZGFibGVTdHJlYW1S
ZWFkZXI+IFJlYWRhYmxlSlNTdHJlYW06OmNyZWF0ZVJlYWRlcigpCiB7Ci0gICAgcmV0dXJuIFJl
YWRlcjo6Y3JlYXRlKCp0aGlzKTsKKyAgICBSZWY8UmVhZGVyPiByZWFkZXIgPSBSZWFkZXI6OmNy
ZWF0ZSgqdGhpcyk7CisgICAgaWYgKG1fZXJyb3IpCisgICAgICAgIHJlYWRlci0+c3RvcmVFcnJv
cigqanNTb3VyY2UoKS5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBtX2Vycm9yLmdldCgp
KTsKKyAgICByZXR1cm4gc3RhdGljX3JlZmVyZW5jZV9jYXN0PFJlYWRhYmxlU3RyZWFtUmVhZGVy
PihyZWFkZXIpOwogfQogCiBSZWFkYWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIFJlZjxSZWFkYWJsZUpT
U3RyZWFtOjpTb3VyY2U+JiYgc291cmNlKQpAQCAtMTYxLDYgKzE2NCwxOSBAQCBKU1ZhbHVlIFJl
YWRhYmxlSlNTdHJlYW06OmpzQ29udHJvbGxlcihFeGVjU3RhdGUmIGV4ZWMsIEpTRE9NR2xvYmFs
T2JqZWN0KiBnbG9iYQogICAgIHJldHVybiB0b0pTKCZleGVjLCBnbG9iYWxPYmplY3QsIG1fY29u
dHJvbGxlci5nZXQoKSk7CiB9CiAKK3ZvaWQgUmVhZGFibGVKU1N0cmVhbTo6c3RvcmVFcnJvcihK
U0M6OkV4ZWNTdGF0ZSYgZXhlYykKK3sKKyAgICBpZiAobV9lcnJvcikKKyAgICAgICAgcmV0dXJu
OworICAgIEpTVmFsdWUgZXJyb3IgPSBleGVjLmFyZ3VtZW50Q291bnQoKSA/IGV4ZWMuYXJndW1l
bnQoMCkgOiBjcmVhdGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJFcnJvciBmdW5jdGlvbiBj
YWxsZWQuIikpOworICAgIG1fZXJyb3Iuc2V0KGV4ZWMudm0oKSwgZXJyb3IpOworCisgICAgaWYg
KGF1dG8gcmVhZGVyID0gc3RhdGljX2Nhc3Q8UmVhZGVyKj4odGhpcy0+cmVhZGVyKCkpKQorICAg
ICAgICByZWFkZXItPnN0b3JlRXJyb3IoZXhlYywgZXJyb3IpOworCisgICAgY2hhbmdlU3RhdGVU
b0Vycm9yZWQoKTsKK30KKwogUmVmPFJlYWRhYmxlSlNTdHJlYW06OlJlYWRlcj4gUmVhZGFibGVK
U1N0cmVhbTo6UmVhZGVyOjpjcmVhdGUoUmVhZGFibGVKU1N0cmVhbSYgc3RyZWFtKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWRlcihzdHJlYW0pKTsKQEAgLTE3MSw2ICsxODcsMTEg
QEAgUmVhZGFibGVKU1N0cmVhbTo6UmVhZGVyOjpSZWFkZXIoUmVhZGFibGVKU1N0cmVhbSYgcmVh
ZGFibGVTdHJlYW0pCiB7CiB9CiAKK3ZvaWQgUmVhZGFibGVKU1N0cmVhbTo6UmVhZGVyOjpzdG9y
ZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGVycm9yKQoreworICAgIG1fZXJy
b3Iuc2V0KGV4ZWMudm0oKSwgZXJyb3IpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVK
U1N0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5o
CmluZGV4IGJlN2YyYmQyMzVhNjI1NjhlMTkxYjFhYzFjOTIxMzRhNDE1NzdkODAuLjkwMGFlZDZl
Y2ZmODQ1ODVkOWFjZGFjMWI1YmY0MjAzODEwOTExYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKQEAgLTUxLDggKzUxLDEzIEBAIHByaXZhdGU6
CiAgICAgY2xhc3MgUmVhZGVyOiBwdWJsaWMgUmVhZGFibGVTdHJlYW1SZWFkZXIgewogICAgIHB1
YmxpYzoKICAgICAgICAgc3RhdGljIFJlZjxSZWFkZXI+IGNyZWF0ZShSZWFkYWJsZUpTU3RyZWFt
Jik7CisgICAgICAgIHZvaWQgc3RvcmVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSk7CisgICAgICAgIEpTQzo6SlNWYWx1ZSBlcnJvcigpIHsgcmV0dXJuIG1fZXJyb3IuZ2V0KCk7
IH0KKwogICAgIHByaXZhdGU6CiAgICAgICAgIGV4cGxpY2l0IFJlYWRlcihSZWFkYWJsZUpTU3Ry
ZWFtJik7CisKKyAgICAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX2Vycm9yOwogICAg
IH07CiAKICAgICBjbGFzcyBTb3VyY2U6IHB1YmxpYyBSZWFkYWJsZVN0cmVhbVNvdXJjZSB7CkBA
IC03NSwxMCArODAsMTQgQEAgcHVibGljOgogICAgIFJlYWRhYmxlSlNTdHJlYW06OlNvdXJjZSYg
anNTb3VyY2UoKTsKICAgICBKU0M6OkpTVmFsdWUganNDb250cm9sbGVyKEpTQzo6RXhlY1N0YXRl
JiwgSlNET01HbG9iYWxPYmplY3QqKTsKIAorICAgIHZvaWQgc3RvcmVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYpOworICAgIEpTQzo6SlNWYWx1ZSBlcnJvcigpIHsgcmV0dXJuIG1fZXJyb3IuZ2V0KCk7
IH0KKwogcHJpdmF0ZToKICAgICBSZWFkYWJsZUpTU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmLCBSZWY8UmVhZGFibGVKU1N0cmVhbTo6U291cmNlPiYmKTsKIAogICAgIHN0ZDo6dW5pcXVl
X3B0cjxSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKKyAgICBKU0M6OlN0
cm9uZzxKU0M6OlVua25vd24+IG1fZXJyb3I7CiB9OwogCiB2b2lkIHNldEludGVybmFsU2xvdFRv
T2JqZWN0KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBKU0M6OlByaXZhdGVOYW1lJiwg
SlNDOjpKU1ZhbHVlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1ODZkOGRhOWFmZWE1NTlhOTI0OGE1OWExMzEwMWFlNGVk
MmE4MTg0Li5iM2QxZjVjODNkZDNjY2M2OTIyOGM3ODg0YmQzNTJiYmE3N2U2NDQxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTUgQEAKKzIwMTUtMDUtMDggIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2Fs
dmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5mYWJsZXRAY3JmLmNh
bm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFibGVTdHJlYW0gY29uc3RydWN0
b3Igc3RhcnQgZnVuY3Rpb24gc2hvdWxkIGJlIGFibGUgdG8gZXJyb3IgdGhlIHN0cmVhbQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMTYyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBzdHJlYW1zL3JlYWRh
YmxlLXN0cmVhbS1jb250cm9sbGVyLWVycm9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tY29udHJvbGxlci1lcnJvci5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9iYWQtdW5kZXJseWlu
Zy1zb3VyY2VzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBs
ZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tdGVtcGxhdGVkLWV4cGVjdGVkLnR4dDoKKwogMjAx
NS0wNS0wNSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAg
ICAgICAgW0dUS11bV0syXSBUaGUgV2ViS2l0IG5ldHdvcmsgZGlzayBjYWNoZSBpcyBub3QgZW5h
YmxlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tY29u
dHJvbGxlci1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbS1jb250cm9sbGVyLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mMDMzNmUw
YjBlZjA5YTM0Yzc3MTQyYjAzNjAxMTNkMjlkOWM3MzA3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWFkYWJsZS1zdHJlYW0tY29udHJvbGxlci1lcnJvci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBz
aG91bGQgcmVqZWN0IFJlYWRhYmxlU3RyZWFtUmVhZGVyIGNsb3NlIHByb21pc2UgCitQQVNTIEVy
cm9yaW5nIGEgUmVhZGFibGVTdHJlYW0gc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRl
ciBjbG9zZSBwcm9taXNlIAorUEFTUyBFcnJvcmluZyBhIFJlYWRhYmxlU3RyZWFtIHdpdGhvdXQg
YW55IHZhbHVlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxlLXN0
cmVhbS1jb250cm9sbGVyLWVycm9yLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlYWRhYmxl
LXN0cmVhbS1jb250cm9sbGVyLWVycm9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGNlN2FhNTBhZDU5NzQ3
MjY4MzUyNjhlYTY5OTAwNmZkZGJmYWZiYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVhZGFibGUtc3RyZWFtLWNvbnRyb2xsZXItZXJyb3IuaHRtbApAQCAtMCwwICsx
LDY5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPScuLi9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy4uL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyc+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCit0MiA9IGFzeW5jX3Rlc3QoJ0Vycm9y
aW5nIGEgUmVhZGFibGVTdHJlYW0gc2hvdWxkIHJlamVjdCBSZWFkYWJsZVN0cmVhbVJlYWRlciBj
bG9zZSBwcm9taXNlJyk7Cit0Mi5zdGVwKGZ1bmN0aW9uKCkgeworICAgIHZhciBjb250cm9sbGVy
OworICAgIHZhciBycyA9IG5ldyBSZWFkYWJsZVN0cmVhbSh7CisgICAgICAgIHN0YXJ0OiBmdW5j
dGlvbihjKSB7CisgICAgICAgICAgICBjb250cm9sbGVyID0gYzsKKyAgICAgICAgfQorICAgIH0p
OworCisgICBycy5nZXRSZWFkZXIoKS5jbG9zZWQudGhlbih0Mi5zdGVwX2Z1bmMoZnVuY3Rpb24o
KSB7CisgICAgICAgIGFzc2VydF91bnJlYWNoZWQoImNsb3NlZCBwcm9taXNlIHNob3VsZCBub3Qg
YmUgcmVzb2x2ZWQgd2hlbiBzdHJlYW0gaXMgZXJyb3JlZCIpOworICAgIH0pLCB0Mi5zdGVwX2Z1
bmMoZnVuY3Rpb24oZXJyKSB7CisgICAgICAgIGFzc2VydF9lcXVhbHMocnNFcnJvciwgZXJyKTsK
KyAgICAgICAgdDIuZG9uZSgpOworICAgIH0pKTsKKworICAgIHZhciByc0Vycm9yID0gIm15IGVy
cm9yIjsKKyAgICBjb250cm9sbGVyLmVycm9yKHJzRXJyb3IpOworfSk7CisKK3QzID0gYXN5bmNf
dGVzdCgnRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSBzaG91bGQgcmVqZWN0IFJlYWRhYmxlU3Ry
ZWFtUmVhZGVyIGNsb3NlIHByb21pc2UnKTsKK3QzLnN0ZXAoZnVuY3Rpb24oKSB7CisgICAgdmFy
IGNvbnRyb2xsZXI7CisgICAgdmFyIHJzID0gbmV3IFJlYWRhYmxlU3RyZWFtKHsKKyAgICAgICAg
c3RhcnQ6IGZ1bmN0aW9uKGMpIHsKKyAgICAgICAgICAgIGNvbnRyb2xsZXIgPSBjOworICAgICAg
ICB9CisgICAgfSk7CisKKyAgICB2YXIgcnNFcnJvciA9ICJteSBlcnJvciI7CisgICAgY29udHJv
bGxlci5lcnJvcihyc0Vycm9yKTsKKworICAgIC8vIExldCdzIGNhbGwgZ2V0UmVhZGVyIHR3aWNl
IHRvIGVuc3VyZSB0aGF0IHN0cmVhbSBpcyBub3QgbG9ja2VkIHRvIGEgcmVhZGVyLgorICAgIHJz
LmdldFJlYWRlcigpOworICAgIHJzLmdldFJlYWRlcigpLmNsb3NlZC50aGVuKHQzLnN0ZXBfZnVu
YyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNzZXJ0X3VucmVhY2hlZCgiY2xvc2VkIHByb21pc2Ug
c2hvdWxkIG5vdCBiZSByZXNvbHZlZCB3aGVuIHN0cmVhbSBpcyBlcnJvcmVkIik7CisgICAgfSks
IHQzLnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIpIHsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhyc0Vy
cm9yLCBlcnIpOworICAgICAgICB0My5kb25lKCk7CisgICAgfSkpOworfSk7CisKK3Q0ID0gYXN5
bmNfdGVzdCgnRXJyb3JpbmcgYSBSZWFkYWJsZVN0cmVhbSB3aXRob3V0IGFueSB2YWx1ZScpOwor
dDQuc3RlcChmdW5jdGlvbigpIHsKKyAgICB2YXIgY29udHJvbGxlcjsKKyAgICB2YXIgcnMgPSBu
ZXcgUmVhZGFibGVTdHJlYW0oeworICAgICAgICBzdGFydDogZnVuY3Rpb24oYykgeworICAgICAg
ICAgICAgY29udHJvbGxlciA9IGM7CisgICAgICAgIH0KKyAgICB9KTsKKworICAgIHJzLmdldFJl
YWRlcigpLmNsb3NlZC50aGVuKHQzLnN0ZXBfZnVuYyhmdW5jdGlvbigpIHsKKyAgICAgICAgYXNz
ZXJ0X3VucmVhY2hlZCgiY2xvc2VkIHByb21pc2Ugc2hvdWxkIG5vdCBiZSByZXNvbHZlZCB3aGVu
IHN0cmVhbSBpcyBlcnJvcmVkIik7CisgICAgfSksIHQ0LnN0ZXBfZnVuYyhmdW5jdGlvbihlcnIp
IHsKKyAgICAgICAgLy8gRXJyb3IgZ2VuZXJhdGVkIGJ5IEpTIGVuZ2luZS4KKyAgICAgICAgYXNz
ZXJ0X3RydWUodHlwZW9mIGVyciA9PSAnb2JqZWN0Jyk7CisgICAgICAgIHQ0LmRvbmUoKTsKKyAg
ICB9KSk7CisKKyAgICBjb250cm9sbGVyLmVycm9yKCk7Cit9KTsKKworCis8L3NjcmlwdD4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL2Jh
ZC11bmRlcmx5aW5nLXNvdXJjZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50
eHQKaW5kZXggMTMwNjlhOWMzOTc3ZDM3ODZkNDU4NTljNGVlYWY0YjM0ZTAzNjEwYS4uMTljYTM1
NTU5NTc0ZTMxMzA5OWZjNDg4MmNhZGQxNDEyYTlhMjI4MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNl
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVt
ZW50YXRpb24vYmFkLXVuZGVybHlpbmctc291cmNlcy1leHBlY3RlZC50eHQKQEAgLTIxLDcgKzIx
LDcgQEAgUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBjbG9zZSB0d2ljZSBvbiBhbiBl
bXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZQogRkFJTCBVbmRlcmx5aW5nIHNvdXJjZTogY2Fs
bGluZyBjbG9zZSB0d2ljZSBvbiBhIG5vbi1lbXB0eSBzdHJlYW0gc2hvdWxkIHRocm93IHRoZSBz
ZWNvbmQgdGltZSByZWFkIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBVbmRlcmx5aW5nIHNvdXJj
ZTogY2FsbGluZyBjbG9zZSBvbiBhbiBlbXB0eSBjYW5jZWxlZCBzdHJlYW0gc2hvdWxkIG5vdCB0
aHJvdyBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCiBGQUlMIFVuZGVybHlpbmcgc291cmNlOiBj
YWxsaW5nIGNsb3NlIG9uIGEgbm9uLWVtcHR5IGNhbmNlbGVkIHN0cmVhbSBzaG91bGQgbm90IHRo
cm93IGNhbmNlbCBpcyBub3QgaW1wbGVtZW50ZWQKLVRJTUVPVVQgVW5kZXJseWluZyBzb3VyY2U6
IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93IFRlc3QgdGltZWQgb3V0Ci1U
SU1FT1VUIFVuZGVybHlpbmcgc291cmNlOiBjYWxsaW5nIGVycm9yIHR3aWNlIHNob3VsZCB0aHJv
dyB0aGUgc2Vjb25kIHRpbWUgVGVzdCB0aW1lZCBvdXQKK1BBU1MgVW5kZXJseWluZyBzb3VyY2U6
IGNhbGxpbmcgY2xvc2UgYWZ0ZXIgZXJyb3Igc2hvdWxkIHRocm93IAorUEFTUyBVbmRlcmx5aW5n
IHNvdXJjZTogY2FsbGluZyBlcnJvciB0d2ljZSBzaG91bGQgdGhyb3cgdGhlIHNlY29uZCB0aW1l
IAogUEFTUyBVbmRlcmx5aW5nIHNvdXJjZTogY2FsbGluZyBlcnJvciBhZnRlciBjbG9zZSBzaG91
bGQgdGhyb3cgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWlt
cGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS10ZW1wbGF0ZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFt
LXRlbXBsYXRlZC1leHBlY3RlZC50eHQKaW5kZXggYTcxNjk4ZDNjYzk1NjY1ZDg0MjAxYjEwNWIz
ZWJmY2I2ZDQ5N2UyYy4uMjM4YjBmN2ZiNzUwODJiN2I5NmE4M2JhNGQxOWQ4ZjRhMWQ4ZWY3YiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24v
cmVhZGFibGUtc3RyZWFtLXRlbXBsYXRlZC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
c3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLXRlbXBsYXRl
ZC1leHBlY3RlZC50eHQKQEAgLTI4LDcgKzI4LDcgQEAgRkFJTCBnZXRSZWFkZXIoKSBzaG91bGQg
cmV0dXJuIGEgcmVhZGVyIHRoYXQgYWN0cyBlcnJvcmVkIHJlYWQgaXMgbm90IGltcGxlbWVudGUK
IFBBU1MgUnVubmluZyB0ZW1wbGF0ZWRSU0Vycm9yZWRTeW5jT25seSB3aXRoIFJlYWRhYmxlU3Ry
ZWFtIChlcnJvcmVkIHZpYSBjYWxsIGluIHN0YXJ0KSAKIEZBSUwgY2FuY2VsKCkgc2hvdWxkIHJl
dHVybiBhIGRpc3RpbmN0IHJlamVjdGVkIHByb21pc2UgZWFjaCB0aW1lIGNhbmNlbCBpcyBub3Qg
aW1wbGVtZW50ZWQKIEZBSUwgcmVhZGVyIGNhbmNlbCgpIHNob3VsZCByZXR1cm4gYSBkaXN0aW5j
dCByZWplY3RlZCBwcm9taXNlIGVhY2ggdGltZSBjYW5jZWwgaXMgbm90IGltcGxlbWVudGVkCi1G
QUlMIHNob3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycywgc2luY2UgdGhl
eSBhcmUgYWxsIGF1dG8tcmVsZWFzZWQgUmVhZGFibGVTdHJlYW0gaXMgbG9ja2VkCitQQVNTIHNo
b3VsZCBiZSBhYmxlIHRvIGFjcXVpcmUgbXVsdGlwbGUgcmVhZGVycywgc2luY2UgdGhleSBhcmUg
YWxsIGF1dG8tcmVsZWFzZWQgCiBQQVNTIFJ1bm5pbmcgdGVtcGxhdGVkUlNFcnJvcmVkIHdpdGgg
UmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVybmluZyBhIHJlamVjdGVkIHByb21pc2Ug
aW4gc3RhcnQpIAogRkFJTCBnZXRSZWFkZXIoKSBzaG91bGQgcmV0dXJuIGEgcmVhZGVyIHRoYXQg
YWN0cyBlcnJvcmVkIHJlYWQgaXMgbm90IGltcGxlbWVudGVkCiBQQVNTIFJ1bm5pbmcgdGVtcGxh
dGVkUlNFcnJvcmVkUmVhZGVyIHdpdGggUmVhZGFibGVTdHJlYW0gKGVycm9yZWQgdmlhIHJldHVy
bmluZyBhIHJlamVjdGVkIHByb21pc2UgaW4gc3RhcnQpIHJlYWRlciAK
</data>

          </attachment>
      

    </bug>

</bugzilla>