<?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>145792</bug_id>
          
          <creation_ts>2015-06-09 01:29:56 -0700</creation_ts>
          <short_desc>[Streams API] ReadableJSStream should handle promises returned by JS source start callback</short_desc>
          <delta_ts>2015-06-13 02:10:35 -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>145893</dependson>
          <blocked>138967</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1100605</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-09 01:29:56 -0700</bug_when>
    <thetext>&quot;start&quot;, &quot;pull&quot; and &quot;cancel&quot; may finish asynchronously by returning promises.
ReadableJSStream should handle these promises.
To start with, this should be done for the &quot;start&quot; callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100947</commentid>
    <comment_count>1</comment_count>
      <attachid>254636</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-10 01:32:04 -0700</bug_when>
    <thetext>Created attachment 254636
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100960</commentid>
    <comment_count>2</comment_count>
      <attachid>254641</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-10 02:25:21 -0700</bug_when>
    <thetext>Created attachment 254641
Trying to fix Win build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1100980</commentid>
    <comment_count>3</comment_count>
      <attachid>254641</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-10 03:34:21 -0700</bug_when>
    <thetext>Comment on attachment 254641
Trying to fix Win build

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

&gt; Source/WebCore/bindings/js/ReadableJSStream.cpp:78
&gt; +    JSPromise* promise = jsDynamicCast&lt;JSPromise*&gt;(callFunction(state, function, m_source.get(), arguments));

By doing the cast here, we ensure that thenPromise is only called if JS callback returns a promise.
But the code inside thenPromise is nothing special to promise.
We could call thenPromise whenever callback returned value has a then property which is callable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101318</commentid>
    <comment_count>4</comment_count>
      <attachid>254641</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-11 10:36:36 -0700</bug_when>
    <thetext>Comment on attachment 254641
Trying to fix Win build

Rejecting attachment 254641 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 254641, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.

Full output: http://webkit-queues.appspot.com/results/6265508483563520</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101338</commentid>
    <comment_count>5</comment_count>
      <attachid>254734</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-11 11:36:12 -0700</bug_when>
    <thetext>Created attachment 254734
Fixing log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101354</commentid>
    <comment_count>6</comment_count>
      <attachid>254734</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-11 12:31:00 -0700</bug_when>
    <thetext>Comment on attachment 254734
Fixing log

Clearing flags on attachment: 254734

Committed r185465: &lt;http://trac.webkit.org/changeset/185465&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101355</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-11 12:31:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101372</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2015-06-11 13:05:22 -0700</bug_when>
    <thetext>This broke at least the 32-bit mac build.
https://build.webkit.org/builders/Apple%20Yosemite%20Release%20%2832-bit%20Build%29/builds/3693</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101374</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-11 13:07:29 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 145893</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101634</commentid>
    <comment_count>10</comment_count>
      <attachid>254807</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-12 10:28:40 -0700</bug_when>
    <thetext>Created attachment 254807
Cleaning NativeStdFunction definition</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101636</commentid>
    <comment_count>11</comment_count>
      <attachid>254807</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-12 10:29:29 -0700</bug_when>
    <thetext>Comment on attachment 254807
Cleaning NativeStdFunction definition

Let&apos;s try it again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101637</commentid>
    <comment_count>12</comment_count>
      <attachid>254807</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-12 10:30:54 -0700</bug_when>
    <thetext>Comment on attachment 254807
Cleaning NativeStdFunction definition

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

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:78
&gt;      } else

WebKit coding style normally omits else after a return.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101638</commentid>
    <comment_count>13</comment_count>
      <attachid>254807</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-12 10:31:56 -0700</bug_when>
    <thetext>Comment on attachment 254807
Cleaning NativeStdFunction definition

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

&gt; Source/JavaScriptCore/runtime/JSFunction.cpp:92
&gt; +struct JSStdFunction: public JSFunction {

In a struct we normally omit public since it’s the default. We also put a space before the colon here.

I’m not sure it’s right to make this a struct, though, since it’s derived from a a class. I think this should probably be a class instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101639</commentid>
    <comment_count>14</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-12 10:33:50 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; Comment on attachment 254807 [details]
&gt; Cleaning NativeStdFunction definition
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=254807&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSFunction.cpp:92
&gt; &gt; +struct JSStdFunction: public JSFunction {
&gt; 
&gt; In a struct we normally omit public since it’s the default. We also put a
&gt; space before the colon here.
&gt; 
&gt; I’m not sure it’s right to make this a struct, though, since it’s derived
&gt; from a a class. I think this should probably be a class instead.

Thanks.
I am postponing cq until processing further feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101676</commentid>
    <comment_count>15</comment_count>
      <attachid>254815</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2015-06-12 12:44:43 -0700</bug_when>
    <thetext>Created attachment 254815
Fixing JSStdFunction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101812</commentid>
    <comment_count>16</comment_count>
      <attachid>254815</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-13 02:10:30 -0700</bug_when>
    <thetext>Comment on attachment 254815
Fixing JSStdFunction

Clearing flags on attachment: 254815

Committed r185537: &lt;http://trac.webkit.org/changeset/185537&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1101813</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-13 02:10:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254636</attachid>
            <date>2015-06-10 01:32:04 -0700</date>
            <delta_ts>2015-06-10 02:25:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-145792-20150610103135.patch</filename>
            <type>text/plain</type>
            <size>19429</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MzhkNTMwODRiMzNhNTNiNTBmM2U0NGQwY2JmNzdjZDA2YzRmNjQ2Li5mODU2MDg4MjVjZGJhYzM0
OTEwYzUwOGMzYWIzMDM4OWIyY2U2NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNS0wNi0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFibGVKU1N0cmVhbSBzaG91
bGQgaGFuZGxlIHByb21pc2VzIHJldHVybmVkIGJ5IEpTIHNvdXJjZSBzdGFydCBjYWxsYmFjawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISEpLgorCisgICAgICAgIEFkZGVkIHN1
cHBvcnQgZm9yIEpTRnVuY3Rpb24gaW1wbGVtZW50ZWQgYnkgc3RkOjpmdW5jdGlvbi4KKworICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmdldE5hdGl2ZUV4
ZWN1dGFibGUpOiBSZWZhY3RvcmVkIGNvZGUgdG8gc2hhcmUgaXQgd2l0aCB0aGUgdHdvIEpTRnVu
Y3Rpb246OmNyZWF0ZQorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpydW5TdGRGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6
IEFkZGVkIHN0ZDo6ZnVuY3Rpb24gYmFzZWQgSlNGdW5jdGlvbjo6Y3JlYXRlIHByb3RvdHlwZS4K
KyAgICAgICAgKiBydW50aW1lLkpTUHJvbWlzZS5oOgorCiAyMDE1LTA2LTA5ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgb25lIHN5bmMgR0MgcGVyIGdj
VGltZXIgaW50ZXJ2YWwgb24gY3JpdGljYWwgbWVtb3J5IHByZXNzdXJlIHdhcm5pbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBmOTMyYmM5ZjkzMjdjZmEzMjdmZjc1MmE2ZTczZDNlNjllNzQ5OWQ1Li5hMTllZjc2
M2FlYzFiZDg2ZTIwMTRiNmE5NjFjOWMzYjY4ZDYzYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMTUtMDYtMTEgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdh
bGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgor
CisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFibGVKU1N0cmVhbSBzaG91bGQgaGFuZGxlIHBy
b21pc2VzIHJldHVybmVkIGJ5IEpTIHNvdXJjZSBzdGFydCBjYWxsYmFjaworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzkyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISEpLgorCisgICAgICAgIENvdmVyZWQgYnkgcmViYXNlZCB0
ZXN0cy4KKworICAgICAgICBXaGVuIGNhbGxpbmcgc3RhcnQgY2FsbGJhY2ssIHRoZSByZXR1cm5l
ZCB2YWx1ZSBpcyBjaGVja2VkLgorICAgICAgICBJZiBpdCBpcyBub3QgYSBwcm9taXNlLCB3ZSBk
byBhcyBpZiBpdCBpcyBhIHJlc29sdmVkIHByb21pc2UuCisgICAgICAgIElmIGl0IGlzIGEgcHJv
bWlzZSwgd2UgY2FsbCBpdHMgdGhlbigpIG1ldGhvZCB3aXRoIHR3byByZXNvbHZlL3JlamVjdCBK
UyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6aW52b2tlKTogUmV0dXJucyBhIEpTUHJvbWlz
ZSogaWYgYW55IGlzIHJldHVybmVkIGJ5IHRoZSBKUyBzb3VyY2UgY2FsbGJhY2suCisgICAgICAg
IChXZWJDb3JlOjp0aGVuUHJvbWlzZSk6IFV0aWxpdHkgbWV0aG9kIHRvIGNhbGwgdGhlIHByb21p
c2UuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTdGFydFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9u
KTogVGhlIHByb21pc2UgcmVzb2x2ZSBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWRh
YmxlSlNTdHJlYW06OmRvU3RhcnQpOiBDYWxscyB0aGVuUHJvbWlzZSBpZiBhIEpTUHJvbWlzZSog
aXMgcmV0dXJuZWQgYnkgaW52b2tlLgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVh
bTo6UmVhZGFibGVKU1N0cmVhbSk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0
cmVhbS5oOgorCiAyMDE1LTA2LTA5ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlz
QGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5m
cj4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIEltcGxlbWVudCBwdWxsaW5nIG9mIGEgc291cmNl
IGJ5IGEgUmVhZGFibGVTdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKaW5kZXggNTI2Y2EwMzFkZGJjMGUyOTNlMzY0N2ZmZjJhMzhiOTYxYWY2MjQw
Ni4uM2JjNWNjMTgxNzJjYzA2MjQ2ZTg0YWEzZDNjMzAwNWM1Y2NiZThjZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTQsNiArNCw3IEBACiAg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICogIENvcHly
aWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9u
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02Niwy
NSArNjcsNTIgQEAgSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVu
Y3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9u
IG5hdGl2ZUNvbnN0cnVjdG9yKQorc3RhdGljIGlubGluZSBOYXRpdmVFeGVjdXRhYmxlKiBnZXRO
YXRpdmVFeGVjdXRhYmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIElu
dHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewot
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7CiAjaWYgIUVOQUJMRShKSVQpCiAgICAg
VU5VU0VEX1BBUkFNKGludHJpbnNpYyk7CiAjZWxzZQogICAgIGlmIChpbnRyaW5zaWMgIT0gTm9J
bnRyaW5zaWMgJiYgdm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUNvbnN0
cnVjdG9yID09IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKLSAgICAgICAgZXhlY3V0
YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljKTsKKyAg
ICAgICAgcmV0dXJuIHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2lj
KTsKICAgICB9IGVsc2UKICNlbmRpZgotICAgICAgICBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1
bmN0aW9uKG5hdGl2ZUZ1bmN0aW9uLCBuYXRpdmVDb25zdHJ1Y3Rvcik7CisgICAgcmV0dXJuIHZt
LmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgbmF0aXZlQ29uc3RydWN0b3IpOworfQog
CitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBu
YXRpdmVDb25zdHJ1Y3RvcikKK3sKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
Z2V0TmF0aXZlRXhlY3V0YWJsZSh2bSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYywgbmF0aXZl
Q29uc3RydWN0b3IpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4odm0uaGVhcCkpIEpTRnVuY3Rpb24odm0sIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAvLyBDYW4ndCBk
byB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdo
dCBkbyBhIEdDIGFsbG9jYXRpb24uCiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBl
eGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAorc3Ry
dWN0IEpTU3RkRnVuY3Rpb246IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBKU1N0ZEZ1bmN0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5h
dGl2ZVN0ZEZ1bmN0aW9uJiYgZnVuY3Rpb24pCisgICAgICAgIDogSlNGdW5jdGlvbih2bSwgb2Jq
ZWN0LCBzdHJ1Y3R1cmUpCisgICAgICAgICwgc3RkRnVuY3Rpb24oV1RGOjptb3ZlKGZ1bmN0aW9u
KSkgeyB9CisKKyAgICBOYXRpdmVTdGRGdW5jdGlvbiBzdGRGdW5jdGlvbjsKK307CisKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQoreworICAg
IEpTU3RkRnVuY3Rpb24qIGpzRnVuY3Rpb24gPSBqc0Nhc3Q8SlNTdGRGdW5jdGlvbio+KHN0YXRl
LT5jYWxsZWUoKSk7CisgICAgQVNTRVJUKGpzRnVuY3Rpb24pOworICAgIHJldHVybiBqc0Z1bmN0
aW9uLT5zdGRGdW5jdGlvbihzdGF0ZSk7Cit9CisKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNy
ZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNv
bnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlU3RkRnVuY3Rpb24mJiBuYXRpdmVTdGRGdW5jdGlvbiwg
SW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCit7
CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGdldE5hdGl2ZUV4ZWN1dGFibGUo
dm0sIHJ1blN0ZEZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yKTsKKyAgICBK
U1N0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3Rk
RnVuY3Rpb24+KHZtLmhlYXApKSBKU1N0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgV1RGOjptb3ZlKG5hdGl2ZVN0ZEZ1bmN0aW9u
KSk7CisgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBn
ZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgorICAgIGZ1bmN0aW9uLT5m
aW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKKyAgICByZXR1cm4g
ZnVuY3Rpb247Cit9CisKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0s
IGdsb2JhbE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4NmRmZjEyZjhmYTQ3YTMx
YTMzYTY4OTQwODdjZTVjMTE1Y2U1MmI2Li43NTA3NjMwODJmNTYyZmJhY2IwMDRiMDA3MWEwMmJk
ZThjYWMzODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
CkBAIC00NSw2ICs0NSw4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUOwogY2xhc3MgSklUQ29tcGls
ZXI7CiB9CiAKK3R5cGVkZWYgc3RkOjpmdW5jdGlvbjxFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMKEV4ZWNTdGF0ZSopPiBOYXRpdmVTdGRGdW5jdGlvbjsKKwogSlNfRVhQT1JUX1BSSVZBVEUg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rv
cihFeGVjU3RhdGUqKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGdldENhbGN1bGF0ZWRE
aXNwbGF5TmFtZShDYWxsRnJhbWUqLCBKU09iamVjdCopOwpAQCAtNjgsNiArNzAsNyBAQCBwdWJs
aWM6CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVG
dW5jdGlvbiwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNv
bnN0cnVjdG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwogICAgIAogICAgIHN0
YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBv
aW50KFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGlu
dCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlU3RkRnVuY3Rpb24mJiwgSW50cmlu
c2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2Fs
bEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwogCiAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNy
ZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAppbmRleCBhOGRmMTg0NGI0Njg0ZWI3OGY1Yjcy
MjE2NzcyZjhkMzE0ZjJkYzE4Li5iMmFiYTJjMDUwMjM5YjRjNWNiZjE5YzVkMTE1NzgwZmEyNjhk
YzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2Uu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaApAQCAtNDIs
NyArNDIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTUHJvbWlzZSogY3JlYXRlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1Byb21pc2VDb25zdHJ1Y3RvciopOwogICAgIHN0YXRpYyBTdHJ1Y3R1
cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKLSAg
ICBERUNMQVJFX0lORk87CisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIGVudW0gY2xh
c3MgU3RhdHVzIHsKICAgICAgICAgVW5yZXNvbHZlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCmluZGV4IDlhNTVlZDg5NDYzODNlZTlm
OTBlOWQ4NGFjZGRmMGFiY2I1OGQwMmEuLjI1OGFjNzRkNzBkZDljZmI4ZjY5MWY3YTUzYjQ5NGIz
YWMwMjkyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFk
YWJsZVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRh
YmxlU3RyZWFtLmNwcApAQCAtMzIsNyArMzIsNiBAQAogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJ
KQogCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVh
bVJlYWRlci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCmluZGV4IDk4ODZkNTQ4YzRiZDhkZGQ4NWZh
NDc2M2M5ODdiMmUzYzVjMjYyZjAuLjcwY2UzYTFjN2IxYTIwMzY4MjNjMmE2ZGNjNTJhMzkwYjZj
NGU4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNT
dHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJl
YW0uY3BwCkBAIC0zNiwxMSArMzYsMTEgQEAKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNp
bmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNv
bnRyb2xsZXIuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVk
ZSA8cnVudGltZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmg+CisjaW5jbHVkZSA8cnVudGltZS9KU1Byb21pc2UuaD4KICNpbmNsdWRlIDxydW50aW1l
L0pTU3RyaW5nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAKQEAg
LTYwLDIxICs2MCwzOCBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgY2FsbEZ1bmN0aW9uKEV4ZWNT
dGF0ZSYgZXhlYywgSlNWYWx1ZSBqc0Z1bmN0aW9uLCBKU1ZhbHVlCiAgICAgcmV0dXJuIGNhbGwo
JmV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmd1bWVu
dHMpOwogfQogCi1KU1ZhbHVlIFJlYWRhYmxlSlNTdHJlYW06Omludm9rZShFeGVjU3RhdGUmIGV4
ZWMsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKK0pTUHJvbWlzZSogUmVhZGFibGVKU1N0cmVh
bTo6aW52b2tlKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKIHsK
LSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZ2V0UHJvcGVydHlGcm9tT2JqZWN0KGV4ZWMsIG1fc291
cmNlLmdldCgpLCBwcm9wZXJ0eU5hbWUpOwotICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZ2V0
UHJvcGVydHlGcm9tT2JqZWN0KHN0YXRlLCBtX3NvdXJjZS5nZXQoKSwgcHJvcGVydHlOYW1lKTsK
KyAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwog
CiAgICAgaWYgKCFmdW5jdGlvbi5pc0Z1bmN0aW9uKCkpIHsKICAgICAgICAgaWYgKCFmdW5jdGlv
bi5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgdGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVU
eXBlRXJyb3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0gdHJ5aW5nIHRvIGNh
bGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIpKSk7Ci0gICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOworICAgICAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlVHlw
ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbSB0cnlpbmcgdG8gY2Fs
bCBhIHByb3BlcnR5IHRoYXQgaXMgbm90IGNhbGxhYmxlIikpKTsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAg
IGFyZ3VtZW50cy5hcHBlbmQoanNDb250cm9sbGVyKGV4ZWMsIGdsb2JhbE9iamVjdCgpKSk7Ci0g
ICAgcmV0dXJuIGNhbGxGdW5jdGlvbihleGVjLCBmdW5jdGlvbiwgbV9zb3VyY2UuZ2V0KCksIGFy
Z3VtZW50cyk7CisgICAgYXJndW1lbnRzLmFwcGVuZChqc0NvbnRyb2xsZXIoc3RhdGUsIGdsb2Jh
bE9iamVjdCgpKSk7CisKKyAgICBKU1Byb21pc2UqIHByb21pc2UgPSBqc0R5bmFtaWNDYXN0PEpT
UHJvbWlzZSo+KGNhbGxGdW5jdGlvbihzdGF0ZSwgZnVuY3Rpb24sIG1fc291cmNlLmdldCgpLCBh
cmd1bWVudHMpKTsKKworICAgIEFTU0VSVCghKHByb21pc2UgJiYgc3RhdGUuaGFkRXhjZXB0aW9u
KCkpKTsKKyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworc3RhdGljIHZvaWQgdGhlblByb21pc2Uo
RXhlY1N0YXRlJiBzdGF0ZSwgSlNQcm9taXNlKiBkZWZlcnJlZFByb21pc2UsIEpTVmFsdWUgZnVs
bGZpbEZ1bmN0aW9uLCBKU1ZhbHVlIHJlamVjdEZ1bmN0aW9uKQoreworICAgIEpTVmFsdWUgdGhl
blZhbHVlID0gZGVmZXJyZWRQcm9taXNlLT5nZXQoJnN0YXRlLCBzdGF0ZS52bSgpLnByb3BlcnR5
TmFtZXMtPnRoZW4pOworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50
cy5hcHBlbmQoZnVsbGZpbEZ1bmN0aW9uKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHJlamVjdEZ1
bmN0aW9uKTsKKworICAgIGNhbGxGdW5jdGlvbihzdGF0ZSwgdGhlblZhbHVlLCBkZWZlcnJlZFBy
b21pc2UsIGFyZ3VtZW50cyk7CiB9CiAKIEpTRE9NR2xvYmFsT2JqZWN0KiBSZWFkYWJsZUpTU3Ry
ZWFtOjpnbG9iYWxPYmplY3QoKQpAQCAtODIsNyArOTksMTYgQEAgSlNET01HbG9iYWxPYmplY3Qq
IFJlYWRhYmxlSlNTdHJlYW06Omdsb2JhbE9iamVjdCgpCiAgICAgcmV0dXJuIGpzRHluYW1pY0Nh
c3Q8SlNET01HbG9iYWxPYmplY3QqPihtX3NvdXJjZS0+Z2xvYmFsT2JqZWN0KCkpOwogfQogCi1z
dGF0aWMgdm9pZCBzdGFydFJlYWRhYmxlU3RyZWFtQXN5bmMoUmVhZGFibGVTdHJlYW0mIHJlYWRh
YmxlU3RyZWFtKQorc3RhdGljIGlubGluZSBKU0Z1bmN0aW9uKiBjcmVhdGVTdGFydFJlc3VsdEZ1
bGZpbGxlZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIFJlYWRhYmxlU3RyZWFtJiByZWFkYWJs
ZVN0cmVhbSkKK3sKKyAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHN0cmVhbSA9ICZyZWFkYWJs
ZVN0cmVhbTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZtKCksIHN0YXRl
LmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFtzdHJlYW1dKEV4ZWNTdGF0
ZSopIHsKKyAgICAgICAgc3RyZWFtLT5zdGFydCgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQg
c3RhcnRSZWFkYWJsZVN0cmVhbUFzeW5jKFJlYWRhYmxlU3RyZWFtJiByZWFkYWJsZVN0cmVhbSkK
IHsKICAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHN0cmVhbSA9ICZyZWFkYWJsZVN0cmVhbTsK
ICAgICBzdHJlYW0tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3N0cmVhbV0o
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKQEAgLTk0LDEzICsxMjAsMTcgQEAgdm9pZCBSZWFk
YWJsZUpTU3RyZWFtOjpkb1N0YXJ0KEV4ZWNTdGF0ZSYgZXhlYykKIHsKICAgICBKU0xvY2tIb2xk
ZXIgbG9jaygmZXhlYyk7CiAKLSAgICBpbnZva2UoZXhlYywgInN0YXJ0Iik7CisgICAgSlNQcm9t
aXNlKiBwcm9taXNlID0gaW52b2tlKGV4ZWMsICJzdGFydCIpOwogCiAgICAgaWYgKGV4ZWMuaGFk
RXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQg
aGFuZGxpbmcgcHJvbWlzZSBhcyByZXN1bHQgb2YgY2FsbGluZyBzdGFydCBmdW5jdGlvbi4KLSAg
ICBzdGFydFJlYWRhYmxlU3RyZWFtQXN5bmMoKnRoaXMpOworICAgIGlmICghcHJvbWlzZSkgewor
ICAgICAgICBzdGFydFJlYWRhYmxlU3RyZWFtQXN5bmMoKnRoaXMpOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgdGhlblByb21pc2UoZXhlYywgcHJvbWlzZSwgY3JlYXRlU3RhcnRSZXN1
bHRGdWxmaWxsZWRGdW5jdGlvbihleGVjLCAqdGhpcyksIG1fZXJyb3JGdW5jdGlvbi5nZXQoKSk7
CiB9CiAKIHZvaWQgUmVhZGFibGVKU1N0cmVhbTo6ZG9QdWxsKCkKQEAgLTEzOSwxMCArMTY5LDE2
IEBAIFJlZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoRXhl
Y1N0YXRlJiBleGVjLCBTY3JpcHRFeGVjdXRpCiAgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtOwog
fQogCi1SZWFkYWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3Qq
IHNvdXJjZSkKK1JlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXhlY1N0YXRlJiBzdGF0ZSwgSlNP
YmplY3QqIHNvdXJjZSkKICAgICA6IFJlYWRhYmxlU3RyZWFtKHNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpCiB7Ci0gICAgbV9zb3VyY2Uuc2V0KGV4ZWMudm0oKSwgc291cmNlKTsKKyAgICBtX3NvdXJj
ZS5zZXQoc3RhdGUudm0oKSwgc291cmNlKTsKKyAgICAvLyBXZSBkbyBub3QgdGFrZSBhIFJlZiB0
byB0aGUgc3RyZWFtIGFzIHRoaXMgd291bGQgY2F1c2UgYSBSZWYgY3ljbGUuCisgICAgLy8gVGhl
IHJlc29sdXRpb24gY2FsbGJhY2sgdXNlZCBqb2ludGx5IHdpdGggbV9lcnJvckZ1bmN0aW9uIGFz
IHByb21pc2UgY2FsbGJhY2tzIHNob3VsZCBwcm90ZWN0IHRoZSBzdHJlYW0gaW5zdGVhZC4KKyAg
ICBtX2Vycm9yRnVuY3Rpb24uc2V0KHN0YXRlLnZtKCksIEpTRnVuY3Rpb246OmNyZWF0ZShzdGF0
ZS52bSgpLCBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEsIFN0cmluZygpLCBbdGhp
c10oRXhlY1N0YXRlKiBzdGF0ZSkgeworICAgICAgICBzdG9yZUVycm9yKCpzdGF0ZSk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfSkpOwogfQog
CiBKU1ZhbHVlIFJlYWRhYmxlSlNTdHJlYW06OmpzQ29udHJvbGxlcihFeGVjU3RhdGUmIGV4ZWMs
IEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKaW5kZXggZDRmZjI4ZTA3NDU2NjczY2VkMzE3Nzcy
ODYwYmU1YzJiYzRmODI3Ny4uMGE5YjQzNTE3MTMwMWFiYTVmNDlmOWJkMzM5NDU5NmM2MzEzOGM2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVh
bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaApA
QCAtNDAsNiArNDAsMTEgQEAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYv
UmVmLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgSlNGdW5jdGlvbjsKK2NsYXNzIEpTUHJv
bWlzZTsKK30KKyAgICAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNET01HbG9iYWxP
YmplY3Q7CkBAIC02MSw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRvU3RhcnQoSlND
OjpFeGVjU3RhdGUmKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBpbnZva2UoSlNDOjpFeGVjU3RhdGUm
LCBjb25zdCBjaGFyKik7CisgICAgSlNDOjpKU1Byb21pc2UqIGludm9rZShKU0M6OkV4ZWNTdGF0
ZSYsIGNvbnN0IGNoYXIqKTsKICAgICB2b2lkIHN0b3JlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRl
Jik7CiAgICAgdm9pZCBzdG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsK
IApAQCAtNzMsNiArNzgsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRh
YmxlU3RyZWFtQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6
VW5rbm93bj4gbV9lcnJvcjsKKyAgICBKU0M6OlN0cm9uZzxKU0M6OkpTRnVuY3Rpb24+IG1fZXJy
b3JGdW5jdGlvbjsKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX3NvdXJjZTsKICAg
ICBEZXF1ZTxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiBtX2NodW5rUXVldWU7CiB9OwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDZhMzc2ODEwYWYxZDNkYzNhZWRhMmFkZTE0YWZhNzcwYzZiOTIzNzYuLjc4ZTMzNjliZTg5
YjAyMWVjMmZmNWRhOGVjOWZiMzEwMmJkZTAzZjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAx
NS0wNi0xMSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPiBh
bmQgWW91ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAg
W1N0cmVhbXMgQVBJXSBSZWFkYWJsZUpTU3RyZWFtIHNob3VsZCBoYW5kbGUgcHJvbWlzZXMgcmV0
dXJuZWQgYnkgSlMgc291cmNlIHN0YXJ0IGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhISkuCisKKyAgICAgICAgUmViYXNpbmcgZXhwZWN0YXRpb25zLCBhbmQgcmVt
b3ZpbmcgdGltZW91dHMgZm9yIHRlc3RzIHRoYXQgbm8gbG9uZ2VyIHRpbWVvdXQuCisKKyAgICAg
ICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jl
YWRhYmxlLXN0cmVhbS5odG1sOgorCiAyMDE1LTA2LTA5ICBYYWJpZXIgUm9kcmlndWV6IENhbHZh
ciAgPGNhbHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0
QGNyZi5jYW5vbi5mcj4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIEltcGxlbWVudCBwdWxsaW5n
IG9mIGEgc291cmNlIGJ5IGEgUmVhZGFibGVTdHJlYW0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CmluZGV4IDczZTJiODFjZGY2YjFjOTA5ZTk2OGQ5Zjhi
OTg0MWQ4N2M3ZDE3M2UuLjM3ZmQyNjY1ZTNhYTQ4ZTJkZTVhODU1MWJjMTRhY2JjMzA2M2ZkNWMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9u
L3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9y
ZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dApAQCAt
NSw4ICs1LDggQEAgUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhyb3cg
Zm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMKIFBBU1MgUmVhZGFibGVTdHJlYW0gY29u
c3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50IAogUEFT
UyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBw
dWxsIGFyZ3VtZW50IAogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGlu
aXRpYWwgZ2FyYmFnZSBhcyBzdHJhdGVneSBhcmd1bWVudCAKLVRJTUVPVVQgUmVhZGFibGVTdHJl
YW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBUZXN0IHRpbWVkIG91
dAotVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4g
YSBwcm9taXNlIGFuZCByZWplY3QgaXQgVGVzdCB0aW1lZCBvdXQKK1BBU1MgUmVhZGFibGVTdHJl
YW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSAKK1BBU1MgUmVhZGFi
bGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVq
ZWN0IGl0IAogUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVlIGRp
ZmZlcmVudCBvYmplY3RzLiAKIFBBU1MgUmVhZGFibGVTdHJlYW06IGlmIHN0YXJ0IHRocm93cyBh
biBlcnJvciwgaXQgc2hvdWxkIGJlIHJlLXRocm93biAKIFRJTUVPVVQgUmVhZGFibGVTdHJlYW06
IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gVGVzdCB0aW1lZCBv
dXQKQEAgLTIwLDYgKzIwLDYgQEAgUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91bGQg
dGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVuIHRoZSBzdHJlYW0gaXMgZXIKIEZBSUwgUmVhZGFi
bGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0aG9k
cyByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgUmVhZGFibGVTdHJlYW0gc3Ry
YXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIHJldHVybiBmYWxzZSBmb3IgYWxs
IGJ1dCB0aGUgZmlyc3QgZW5xdWV1ZSBjYWxsIGFzc2VydF9lcXVhbHM6IGZpcnN0IGVucXVldWUg
c2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIChib29sZWFuKSB0cnVlIGJ1dCBnb3QgKHVuZGVm
aW5lZCkgdW5kZWZpbmVkCiBGQUlMIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZh
dWx0IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSByZXR1cm5pbmcgdHJ1ZSBmcm9tIGVucXVldWUg
aWYgdGhlIGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseSBhc3NlcnRfZXF1YWxzOiBmaXJzdCBl
bnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1ZSBidXQgZ290
ICh1bmRlZmluZWQpIHVuZGVmaW5lZAotVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlv
biB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZSBUZXN0IHRpbWVkIG91dAorUEFT
UyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNo
IHNvdXJjZSAKIFBBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcg
YSBzeW5jIHB1bGwgc291cmNlIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3Jl
ZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbCBiL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCmlu
ZGV4IDcwZjIzYTc2ZTkzMDMyOGMyMDg2Y2I3N2E2Y2ZiNGY2MTFkYzYwYjIuLjZjMTgwZDQ2ZTRm
NjBhMDVlMDg4OTU5ODM0OGU5MDVkZWMwNWYxYjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0
cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCisrKyBi
L0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0
cmVhbS5odG1sCkBAIC01Myw3ICs1Myw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3IFJl
YWRhYmxlU3RyZWFtKHsgc3RyYXRlZ3k6IDIgfSk7IC8vIENvbnN0cnVjdG9yIHNob3VsZCBub3Qg
dGhyb3cgd2hlbiBzdHJhdGVneSBpcyBub3QgYW4gb2JqZWN0LgogfSwgJ1JlYWRhYmxlU3RyZWFt
IGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHN0cmF0ZWd5IGFyZ3VtZW50
Jyk7CiAKLXZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3Vs
ZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRl
c3QxID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8g
cmV0dXJuIGEgcHJvbWlzZScpOwogdGVzdDEuc3RlcChmdW5jdGlvbigpCiB7CiAgICAgdmFyIHJl
YWRDYWxsZWQgPSBmYWxzZTsKQEAgLTgyLDcgKzgyLDcgQEAgdGVzdDEuc3RlcChmdW5jdGlvbigp
CiAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFt
IHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCcs
IHsgdGltZW91dDogMTAwIH0pOwordmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJl
YW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0
Jyk7CiB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkKIHsKICAgICB2YXIgdGhlRXJyb3IgPSBuZXcgRXJy
b3IoJ3JlamVjdGVkIScpOwpAQCAtNjU4LDcgKzY1OCw3IEBAIHRlc3QxNy5zdGVwKGZ1bmN0aW9u
KCkgewogICAgIH0pKS5jYXRjaCh0ZXN0MTcuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNzZXJ0
X3VucmVhY2hlZChlKTsgfSApKTsKIH0pOwogCi12YXIgdGVzdDE4ID0gYXN5bmNfdGVzdCgnUmVh
ZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3Vy
Y2UnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3QxOCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxl
U3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlJyk7
CiB0ZXN0MTguc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcHVsbENoZWNrZWQgPSBmYWxzZTsK
ICAgICB2YXIgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoOCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254641</attachid>
            <date>2015-06-10 02:25:21 -0700</date>
            <delta_ts>2015-06-11 11:36:01 -0700</delta_ts>
            <desc>Trying to fix Win build</desc>
            <filename>bug-145792-20150610112451.patch</filename>
            <type>text/plain</type>
            <size>19443</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
MzhkNTMwODRiMzNhNTNiNTBmM2U0NGQwY2JmNzdjZDA2YzRmNjQ2Li5mODU2MDg4MjVjZGJhYzM0
OTEwYzUwOGMzYWIzMDM4OWIyY2U2NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNS0wNi0wOSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFibGVKU1N0cmVhbSBzaG91
bGQgaGFuZGxlIHByb21pc2VzIHJldHVybmVkIGJ5IEpTIHNvdXJjZSBzdGFydCBjYWxsYmFjawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISEpLgorCisgICAgICAgIEFkZGVkIHN1
cHBvcnQgZm9yIEpTRnVuY3Rpb24gaW1wbGVtZW50ZWQgYnkgc3RkOjpmdW5jdGlvbi4KKworICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmdldE5hdGl2ZUV4
ZWN1dGFibGUpOiBSZWZhY3RvcmVkIGNvZGUgdG8gc2hhcmUgaXQgd2l0aCB0aGUgdHdvIEpTRnVu
Y3Rpb246OmNyZWF0ZQorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpydW5TdGRGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6
IEFkZGVkIHN0ZDo6ZnVuY3Rpb24gYmFzZWQgSlNGdW5jdGlvbjo6Y3JlYXRlIHByb3RvdHlwZS4K
KyAgICAgICAgKiBydW50aW1lLkpTUHJvbWlzZS5oOgorCiAyMDE1LTA2LTA5ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWxsb3cgb25lIHN5bmMgR0MgcGVyIGdj
VGltZXIgaW50ZXJ2YWwgb24gY3JpdGljYWwgbWVtb3J5IHByZXNzdXJlIHdhcm5pbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBmOTMyYmM5ZjkzMjdjZmEzMjdmZjc1MmE2ZTczZDNlNjllNzQ5OWQ1Li5hMTllZjc2
M2FlYzFiZDg2ZTIwMTRiNmE5NjFjOWMzYjY4ZDYzYWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMTUtMDYtMTEgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdh
bGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgor
CisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFibGVKU1N0cmVhbSBzaG91bGQgaGFuZGxlIHBy
b21pc2VzIHJldHVybmVkIGJ5IEpTIHNvdXJjZSBzdGFydCBjYWxsYmFjaworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzkyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISEpLgorCisgICAgICAgIENvdmVyZWQgYnkgcmViYXNlZCB0
ZXN0cy4KKworICAgICAgICBXaGVuIGNhbGxpbmcgc3RhcnQgY2FsbGJhY2ssIHRoZSByZXR1cm5l
ZCB2YWx1ZSBpcyBjaGVja2VkLgorICAgICAgICBJZiBpdCBpcyBub3QgYSBwcm9taXNlLCB3ZSBk
byBhcyBpZiBpdCBpcyBhIHJlc29sdmVkIHByb21pc2UuCisgICAgICAgIElmIGl0IGlzIGEgcHJv
bWlzZSwgd2UgY2FsbCBpdHMgdGhlbigpIG1ldGhvZCB3aXRoIHR3byByZXNvbHZlL3JlamVjdCBK
UyBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0u
Y3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6aW52b2tlKTogUmV0dXJucyBhIEpTUHJvbWlz
ZSogaWYgYW55IGlzIHJldHVybmVkIGJ5IHRoZSBKUyBzb3VyY2UgY2FsbGJhY2suCisgICAgICAg
IChXZWJDb3JlOjp0aGVuUHJvbWlzZSk6IFV0aWxpdHkgbWV0aG9kIHRvIGNhbGwgdGhlIHByb21p
c2UuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTdGFydFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9u
KTogVGhlIHByb21pc2UgcmVzb2x2ZSBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OlJlYWRh
YmxlSlNTdHJlYW06OmRvU3RhcnQpOiBDYWxscyB0aGVuUHJvbWlzZSBpZiBhIEpTUHJvbWlzZSog
aXMgcmV0dXJuZWQgYnkgaW52b2tlLgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVh
bTo6UmVhZGFibGVKU1N0cmVhbSk6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0
cmVhbS5oOgorCiAyMDE1LTA2LTA5ICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlz
QGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5m
cj4KIAogICAgICAgICBbU3RyZWFtcyBBUEldIEltcGxlbWVudCBwdWxsaW5nIG9mIGEgc291cmNl
IGJ5IGEgUmVhZGFibGVTdHJlYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5jcHAKaW5kZXggNTI2Y2EwMzFkZGJjMGUyOTNlMzY0N2ZmZjJhMzhiOTYxYWY2MjQw
Ni4uMmMyNDE5MzAwZmYzNjQ2NzliN2E5ZTE4OWQ1ZDUxNzM1ZGNiMTFkYiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTQsNiArNCw3IEBACiAg
KiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5
LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQgKEMp
IDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICogIENvcHly
aWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1IENhbm9u
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02Niwy
NSArNjcsNTIgQEAgSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rp
b25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKgogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlRnVu
Y3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9u
IG5hdGl2ZUNvbnN0cnVjdG9yKQorc3RhdGljIGlubGluZSBOYXRpdmVFeGVjdXRhYmxlKiBnZXRO
YXRpdmVFeGVjdXRhYmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIElu
dHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQogewot
ICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7CiAjaWYgIUVOQUJMRShKSVQpCiAgICAg
VU5VU0VEX1BBUkFNKGludHJpbnNpYyk7CiAjZWxzZQogICAgIGlmIChpbnRyaW5zaWMgIT0gTm9J
bnRyaW5zaWMgJiYgdm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUNvbnN0
cnVjdG9yID09IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKLSAgICAgICAgZXhlY3V0
YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljKTsKKyAg
ICAgICAgcmV0dXJuIHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2lj
KTsKICAgICB9IGVsc2UKICNlbmRpZgotICAgICAgICBleGVjdXRhYmxlID0gdm0uZ2V0SG9zdEZ1
bmN0aW9uKG5hdGl2ZUZ1bmN0aW9uLCBuYXRpdmVDb25zdHJ1Y3Rvcik7CisgICAgcmV0dXJuIHZt
LmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgbmF0aXZlQ29uc3RydWN0b3IpOworfQog
CitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBu
YXRpdmVDb25zdHJ1Y3RvcikKK3sKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
Z2V0TmF0aXZlRXhlY3V0YWJsZSh2bSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYywgbmF0aXZl
Q29uc3RydWN0b3IpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4odm0uaGVhcCkpIEpTRnVuY3Rpb24odm0sIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAvLyBDYW4ndCBk
byB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdo
dCBkbyBhIEdDIGFsbG9jYXRpb24uCiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBl
eGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAorc3Ry
dWN0IEpTU3RkRnVuY3Rpb246IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBKU1N0ZEZ1bmN0aW9u
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5h
dGl2ZVN0ZEZ1bmN0aW9uJiYgZnVuY3Rpb24pCisgICAgICAgIDogSlNGdW5jdGlvbih2bSwgb2Jq
ZWN0LCBzdHJ1Y3R1cmUpCisgICAgICAgICwgc3RkRnVuY3Rpb24oV1RGOjptb3ZlKGZ1bmN0aW9u
KSkgeyB9CisKKyAgICBOYXRpdmVTdGRGdW5jdGlvbiBzdGRGdW5jdGlvbjsKK307CisKK3N0YXRp
YyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJ1blN0ZEZ1bmN0aW9uKEV4ZWNTdGF0ZSog
c3RhdGUpCit7CisgICAgSlNTdGRGdW5jdGlvbioganNGdW5jdGlvbiA9IGpzQ2FzdDxKU1N0ZEZ1
bmN0aW9uKj4oc3RhdGUtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoanNGdW5jdGlvbik7CisgICAg
cmV0dXJuIGpzRnVuY3Rpb24tPnN0ZEZ1bmN0aW9uKHN0YXRlKTsKK30KKworSlNGdW5jdGlvbiog
SlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
aW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVTdGRGdW5jdGlvbiYmIG5hdGl2
ZVN0ZEZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVD
b25zdHJ1Y3RvcikKK3sKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZ2V0TmF0
aXZlRXhlY3V0YWJsZSh2bSwgcnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywgbmF0aXZlQ29uc3Ry
dWN0b3IpOworICAgIEpTU3RkRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8SlNTdGRGdW5jdGlvbj4odm0uaGVhcCkpIEpTU3RkRnVuY3Rpb24odm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCBXVEY6Om1vdmUobmF0
aXZlU3RkRnVuY3Rpb24pKTsKKyAgICAvLyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0aWFsaXph
dGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRpb24uCisg
ICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUp
OworICAgIHJldHVybiBmdW5jdGlvbjsKK30KKwogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgIDogQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1dGFi
bGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDg2
ZGZmMTJmOGZhNDdhMzFhMzNhNjg5NDA4N2NlNWMxMTVjZTUyYjYuLjc1MDc2MzA4MmY1NjJmYmFj
YjAwNGIwMDcxYTAyYmRlOGNhYzM4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKQEAgLTQ1LDYgKzQ1LDggQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQ7CiBj
bGFzcyBKSVRDb21waWxlcjsKIH0KIAordHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwoRXhlY1N0YXRlKik+IE5hdGl2ZVN0ZEZ1bmN0aW9uOworCiBKU19F
WFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0RnVuY3Rp
b25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcg
Z2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKENhbGxGcmFtZSosIEpTT2JqZWN0Kik7CkBAIC02OCw2
ICs3MCw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNGdW5jdGlv
biogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcm
IG5hbWUsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVu
Y3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7
CiAgICAgCiAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRlZFJlYWxs
b2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVTdGRGdW5j
dGlvbiYmLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29u
c3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CiAKICAgICBzdGF0aWMg
SlNGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCmluZGV4IGE4ZGYxODQ0
YjQ2ODRlYjc4ZjViNzIyMTY3NzJmOGQzMTRmMmRjMTguLmIyYWJhMmMwNTAyMzliNGM1Y2JmMTlj
NWQxMTU3ODBmYTI2OGRjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
bWlzZS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNQcm9taXNlKiBj
cmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTUHJvbWlzZUNvbnN0cnVjdG9yKik7CiAgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKIAotICAgIERFQ0xBUkVfSU5GTzsKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOwog
CiAgICAgZW51bSBjbGFzcyBTdGF0dXMgewogICAgICAgICBVbnJlc29sdmVkLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5kZXggOWE1
NWVkODk0NjM4M2VlOWY5MGU5ZDg0YWNkZGYwYWJjYjU4ZDAyYS4uMjU4YWM3NGQ3MGRkOWNmYjhm
NjkxZjdhNTNiNDk0YjNhYzAyOTI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCkBAIC0zMiw3ICszMiw2IEBACiAKICNpZiBFTkFC
TEUoU1RSRUFNU19BUEkpCiAKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKaW5kZXggOTg4NmQ1
NDhjNGJkOGRkZDg1ZmE0NzYzYzk4N2IyZTNjNWMyNjJmMC4uNzBjZTNhMWM3YjFhMjAzNjgyM2My
YTZkY2M1MmEzOTBiNmM0ZTg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVKU1N0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
UmVhZGFibGVKU1N0cmVhbS5jcHAKQEAgLTM2LDExICszNiwxMSBAQAogI2luY2x1ZGUgIkpTRE9N
UHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRlICJKU1Jl
YWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAj
aW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvRXJy
b3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZS5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxydW50aW1lL1N0cnVjdHVyZUlu
bGluZXMuaD4KIApAQCAtNjAsMjEgKzYwLDM4IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBjYWxs
RnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGpzRnVuY3Rpb24sIEpTVmFsdWUKICAg
ICByZXR1cm4gY2FsbCgmZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlz
VmFsdWUsIGFyZ3VtZW50cyk7CiB9CiAKLUpTVmFsdWUgUmVhZGFibGVKU1N0cmVhbTo6aW52b2tl
KEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQorSlNQcm9taXNlKiBS
ZWFkYWJsZUpTU3RyZWFtOjppbnZva2UoRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogcHJv
cGVydHlOYW1lKQogewotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBnZXRQcm9wZXJ0eUZyb21PYmpl
Y3QoZXhlYywgbV9zb3VyY2UuZ2V0KCksIHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKGV4ZWMuaGFk
RXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIEpTVmFsdWUg
ZnVuY3Rpb24gPSBnZXRQcm9wZXJ0eUZyb21PYmplY3Qoc3RhdGUsIG1fc291cmNlLmdldCgpLCBw
cm9wZXJ0eU5hbWUpOworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWZ1bmN0aW9uLmlzRnVuY3Rpb24oKSkgewogICAgICAg
ICBpZiAoIWZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICB0aHJvd1ZNRXJyb3Io
JmV4ZWMsIGNyZWF0ZVR5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVh
bSB0cnlpbmcgdG8gY2FsbCBhIHByb3BlcnR5IHRoYXQgaXMgbm90IGNhbGxhYmxlIikpKTsKLSAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoJnN0
YXRlLCBjcmVhdGVUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFt
IHRyeWluZyB0byBjYWxsIGEgcHJvcGVydHkgdGhhdCBpcyBub3QgY2FsbGFibGUiKSkpOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChqc0NvbnRyb2xsZXIoZXhlYywgZ2xvYmFs
T2JqZWN0KCkpKTsKLSAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uLCBtX3Nv
dXJjZS5nZXQoKSwgYXJndW1lbnRzKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGpzQ29udHJvbGxl
cihzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpKTsKKworICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IGpz
RHluYW1pY0Nhc3Q8SlNQcm9taXNlKj4oY2FsbEZ1bmN0aW9uKHN0YXRlLCBmdW5jdGlvbiwgbV9z
b3VyY2UuZ2V0KCksIGFyZ3VtZW50cykpOworCisgICAgQVNTRVJUKCEocHJvbWlzZSAmJiBzdGF0
ZS5oYWRFeGNlcHRpb24oKSkpOworICAgIHJldHVybiBwcm9taXNlOworfQorCitzdGF0aWMgdm9p
ZCB0aGVuUHJvbWlzZShFeGVjU3RhdGUmIHN0YXRlLCBKU1Byb21pc2UqIGRlZmVycmVkUHJvbWlz
ZSwgSlNWYWx1ZSBmdWxsZmlsRnVuY3Rpb24sIEpTVmFsdWUgcmVqZWN0RnVuY3Rpb24pCit7Cisg
ICAgSlNWYWx1ZSB0aGVuVmFsdWUgPSBkZWZlcnJlZFByb21pc2UtPmdldCgmc3RhdGUsIHN0YXRl
LnZtKCkucHJvcGVydHlOYW1lcy0+dGhlbik7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigp
KQorICAgICAgICByZXR1cm47CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1bWVudHM7
CisgICAgYXJndW1lbnRzLmFwcGVuZChmdWxsZmlsRnVuY3Rpb24pOworICAgIGFyZ3VtZW50cy5h
cHBlbmQocmVqZWN0RnVuY3Rpb24pOworCisgICAgY2FsbEZ1bmN0aW9uKHN0YXRlLCB0aGVuVmFs
dWUsIGRlZmVycmVkUHJvbWlzZSwgYXJndW1lbnRzKTsKIH0KIAogSlNET01HbG9iYWxPYmplY3Qq
IFJlYWRhYmxlSlNTdHJlYW06Omdsb2JhbE9iamVjdCgpCkBAIC04Miw3ICs5OSwxNiBAQCBKU0RP
TUdsb2JhbE9iamVjdCogUmVhZGFibGVKU1N0cmVhbTo6Z2xvYmFsT2JqZWN0KCkKICAgICByZXR1
cm4ganNEeW5hbWljQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fc291cmNlLT5nbG9iYWxPYmpl
Y3QoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3luYyhSZWFkYWJs
ZVN0cmVhbSYgcmVhZGFibGVTdHJlYW0pCitzdGF0aWMgaW5saW5lIEpTRnVuY3Rpb24qIGNyZWF0
ZVN0YXJ0UmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgUmVhZGFibGVT
dHJlYW0mIHJlYWRhYmxlU3RyZWFtKQoreworICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gc3Ry
ZWFtID0gJnJlYWRhYmxlU3RyZWFtOworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVhdGUoc3Rh
dGUudm0oKSwgc3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwgW3N0
cmVhbV0oRXhlY1N0YXRlKikgeworICAgICAgICBzdHJlYW0tPnN0YXJ0KCk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfSk7Cit9CisKK3N0YXRp
YyBpbmxpbmUgdm9pZCBzdGFydFJlYWRhYmxlU3RyZWFtQXN5bmMoUmVhZGFibGVTdHJlYW0mIHJl
YWRhYmxlU3RyZWFtKQogewogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gc3RyZWFtID0gJnJl
YWRhYmxlU3RyZWFtOwogICAgIHN0cmVhbS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5wb3N0
VGFzayhbc3RyZWFtXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewpAQCAtOTQsMTMgKzEyMCwx
NyBAQCB2b2lkIFJlYWRhYmxlSlNTdHJlYW06OmRvU3RhcnQoRXhlY1N0YXRlJiBleGVjKQogewog
ICAgIEpTTG9ja0hvbGRlciBsb2NrKCZleGVjKTsKIAotICAgIGludm9rZShleGVjLCAic3RhcnQi
KTsKKyAgICBKU1Byb21pc2UqIHByb21pc2UgPSBpbnZva2UoZXhlYywgInN0YXJ0Iik7CiAKICAg
ICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklY
TUU6IEltcGxlbWVudCBoYW5kbGluZyBwcm9taXNlIGFzIHJlc3VsdCBvZiBjYWxsaW5nIHN0YXJ0
IGZ1bmN0aW9uLgotICAgIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3luYygqdGhpcyk7CisgICAgaWYg
KCFwcm9taXNlKSB7CisgICAgICAgIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3luYygqdGhpcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0aGVuUHJvbWlzZShleGVjLCBwcm9taXNlLCBj
cmVhdGVTdGFydFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKGV4ZWMsICp0aGlzKSwgbV9lcnJvckZ1
bmN0aW9uLmdldCgpKTsKIH0KIAogdm9pZCBSZWFkYWJsZUpTU3RyZWFtOjpkb1B1bGwoKQpAQCAt
MTM5LDEwICsxNjksMTYgQEAgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IFJlYWRhYmxlSlNTdHJl
YW06OmNyZWF0ZShFeGVjU3RhdGUmIGV4ZWMsIFNjcmlwdEV4ZWN1dGkKICAgICByZXR1cm4gcmVh
ZGFibGVTdHJlYW07CiB9CiAKLVJlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXhlY1N0YXRlJiBl
eGVjLCBKU09iamVjdCogc291cmNlKQorUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVh
bShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFeGVjU3Rh
dGUmIHN0YXRlLCBKU09iamVjdCogc291cmNlKQogICAgIDogUmVhZGFibGVTdHJlYW0oc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCkKIHsKLSAgICBtX3NvdXJjZS5zZXQoZXhlYy52bSgpLCBzb3VyY2Up
OworICAgIG1fc291cmNlLnNldChzdGF0ZS52bSgpLCBzb3VyY2UpOworICAgIC8vIFdlIGRvIG5v
dCB0YWtlIGEgUmVmIHRvIHRoZSBzdHJlYW0gYXMgdGhpcyB3b3VsZCBjYXVzZSBhIFJlZiBjeWNs
ZS4KKyAgICAvLyBUaGUgcmVzb2x1dGlvbiBjYWxsYmFjayB1c2VkIGpvaW50bHkgd2l0aCBtX2Vy
cm9yRnVuY3Rpb24gYXMgcHJvbWlzZSBjYWxsYmFja3Mgc2hvdWxkIHByb3RlY3QgdGhlIHN0cmVh
bSBpbnN0ZWFkLgorICAgIG1fZXJyb3JGdW5jdGlvbi5zZXQoc3RhdGUudm0oKSwgSlNGdW5jdGlv
bjo6Y3JlYXRlKHN0YXRlLnZtKCksIHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKSwgMSwg
U3RyaW5nKCksIFt0aGlzXShFeGVjU3RhdGUqIHN0YXRlKSB7CisgICAgICAgIHN0b3JlRXJyb3Io
KnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICB9KSk7CiB9CiAKIEpTVmFsdWUgUmVhZGFibGVKU1N0cmVhbTo6anNDb250cm9sbGVyKEV4
ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaAppbmRleCBkNGZmMjhlMDc0
NTY2NzNjZWQzMTc3NzI4NjBiZTVjMmJjNGY4Mjc3Li4wYTliNDM1MTcxMzAxYWJhNWY0OWY5YmQz
Mzk0NTk2YzYzMTM4YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9S
ZWFkYWJsZUpTU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFi
bGVKU1N0cmVhbS5oCkBAIC00MCw2ICs0MCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU0Z1bmN0aW9u
OworY2xhc3MgSlNQcm9taXNlOworfQorICAgIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBKU0RPTUdsb2JhbE9iamVjdDsKQEAgLTYxLDcgKzY2LDcgQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZG9TdGFydChKU0M6OkV4ZWNTdGF0ZSYpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGludm9rZShK
U0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqKTsKKyAgICBKU0M6OkpTUHJvbWlzZSogaW52b2tl
KEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciopOwogICAgIHZvaWQgc3RvcmVFeGNlcHRpb24o
SlNDOjpFeGVjU3RhdGUmKTsKICAgICB2b2lkIHN0b3JlRXJyb3IoSlNDOjpFeGVjU3RhdGUmLCBK
U0M6OkpTVmFsdWUpOwogCkBAIC03Myw2ICs3OCw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVhZGFibGVTdHJlYW1Db250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CiAgICAgSlND
OjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX2Vycm9yOworICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNG
dW5jdGlvbj4gbV9lcnJvckZ1bmN0aW9uOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+
IG1fc291cmNlOwogICAgIERlcXVlPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+IG1fY2h1bmtR
dWV1ZTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNmEzNzY4MTBhZjFkM2RjM2FlZGEyYWRlMTRhZmE3NzBjNmI5MjM3
Ni4uNzhlMzM2OWJlODliMDIxZWMyZmY1ZGE4ZWM5ZmIzMTAyYmRlMDNmMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDE1LTA2LTExICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNhbHZhcmlz
QGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5jYW5vbi5m
cj4KKworICAgICAgICBbU3RyZWFtcyBBUEldIFJlYWRhYmxlSlNTdHJlYW0gc2hvdWxkIGhhbmRs
ZSBwcm9taXNlcyByZXR1cm5lZCBieSBKUyBzb3VyY2Ugc3RhcnQgY2FsbGJhY2sKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTc5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEhKS4KKworICAgICAgICBSZWJhc2luZyBleHBlY3Rh
dGlvbnMsIGFuZCByZW1vdmluZyB0aW1lb3V0cyBmb3IgdGVzdHMgdGhhdCBubyBsb25nZXIgdGlt
ZW91dC4KKworICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRh
YmxlLXN0cmVhbS1leHBlY3RlZC50eHQ6CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1w
bGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLmh0bWw6CisKIDIwMTUtMDYtMDkgIFhhYmllciBS
b2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQg
PHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgogCiAgICAgICAgIFtTdHJlYW1zIEFQSV0gSW1w
bGVtZW50IHB1bGxpbmcgb2YgYSBzb3VyY2UgYnkgYSBSZWFkYWJsZVN0cmVhbQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUt
c3RyZWFtLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxl
bWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKaW5kZXggNzNlMmI4MWNkZjZi
MWM5MDllOTY4ZDlmOGI5ODQxZDg3YzdkMTczZS4uMzdmZDI2NjVlM2FhNDhlMmRlNWE4NTUxYmMx
NGFjYmMzMDYzZmQ1YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhw
ZWN0ZWQudHh0CkBAIC01LDggKzUsOCBAQCBQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9y
IHNob3VsZCB0aHJvdyBmb3Igbm9uLWZ1bmN0aW9uIHN0YXJ0IGFyZ3VtZW50cwogUEFTUyBSZWFk
YWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBhcyBjYW5jZWwg
YXJndW1lbnQgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlh
bCBnYXJiYWdlIGFzIHB1bGwgYXJndW1lbnQgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVj
dG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHN0cmF0ZWd5IGFyZ3VtZW50IAotVElNRU9V
VCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNl
IFRlc3QgdGltZWQgb3V0Ci1USU1FT1VUIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBh
YmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCBUZXN0IHRpbWVkIG91dAorUEFT
UyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNl
IAorUEFTUyBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBw
cm9taXNlIGFuZCByZWplY3QgaXQgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIHNob3VsZCBiZSBhYmxl
IHRvIGVucXVldWUgZGlmZmVyZW50IG9iamVjdHMuIAogUEFTUyBSZWFkYWJsZVN0cmVhbTogaWYg
c3RhcnQgdGhyb3dzIGFuIGVycm9yLCBpdCBzaG91bGQgYmUgcmUtdGhyb3duIAogVElNRU9VVCBS
ZWFkYWJsZVN0cmVhbTogaWYgcHVsbCByZWplY3RzLCBpdCBzaG91bGQgZXJyb3IgdGhlIHN0cmVh
bSBUZXN0IHRpbWVkIG91dApAQCAtMjAsNiArMjAsNiBAQCBQQVNTIFJlYWRhYmxlU3RyZWFtOiBl
bnF1ZXVlIHNob3VsZCB0aHJvdyB0aGUgc3RvcmVkIGVycm9yIHdoZW4gdGhlIHN0cmVhbSBpcyBl
cgogRkFJTCBSZWFkYWJsZVN0cmVhbTogc2hvdWxkIGNhbGwgdW5kZXJseWluZyBzb3VyY2UgbWV0
aG9kcyBhcyBtZXRob2RzIHJlbGVhc2VMb2NrIGlzIG5vdCBpbXBsZW1lbnRlZAogRkFJTCBSZWFk
YWJsZVN0cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgcmV0dXJu
IGZhbHNlIGZvciBhbGwgYnV0IHRoZSBmaXJzdCBlbnF1ZXVlIGNhbGwgYXNzZXJ0X2VxdWFsczog
Zmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQgKGJvb2xlYW4pIHRydWUg
YnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKIEZBSUwgUmVhZGFibGVTdHJlYW0gc3RyYXRl
Z2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIGNvbnRpbnVlIHJldHVybmluZyB0cnVl
IGZyb20gZW5xdWV1ZSBpZiB0aGUgY2h1bmtzIGFyZSByZWFkIGltbWVkaWF0ZWx5IGFzc2VydF9l
cXVhbHM6IGZpcnN0IGVucXVldWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIChib29sZWFu
KSB0cnVlIGJ1dCBnb3QgKHVuZGVmaW5lZCkgdW5kZWZpbmVkCi1USU1FT1VUIFJlYWRhYmxlU3Ry
ZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlIFRlc3Qg
dGltZWQgb3V0CitQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5n
IGEgcmFuZG9tIHB1c2ggc291cmNlIAogUEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0
ZXN0OiBhZGFwdGluZyBhIHN5bmMgcHVsbCBzb3VyY2UgCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1s
IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUt
c3RyZWFtLmh0bWwKaW5kZXggNzBmMjNhNzZlOTMwMzI4YzIwODZjYjc3YTZjZmI0ZjYxMWRjNjBi
Mi4uNmMxODBkNDZlNGY2MGEwNWUwODg5NTk4MzQ4ZTkwNWRlYzA1ZjFiNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3Ry
ZWFtLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRp
b24vcmVhZGFibGUtc3RyZWFtLmh0bWwKQEAgLTUzLDcgKzUzLDcgQEAgdGVzdChmdW5jdGlvbigp
IHsKICAgICBuZXcgUmVhZGFibGVTdHJlYW0oeyBzdHJhdGVneTogMiB9KTsgLy8gQ29uc3RydWN0
b3Igc2hvdWxkIG5vdCB0aHJvdyB3aGVuIHN0cmF0ZWd5IGlzIG5vdCBhbiBvYmplY3QuCiB9LCAn
UmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgc3Ry
YXRlZ3kgYXJndW1lbnQnKTsKIAotdmFyIHRlc3QxID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJl
YW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZScsIHsgdGltZW91dDog
NTAgfSk7Cit2YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91
bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlJyk7CiB0ZXN0MS5zdGVwKGZ1bmN0aW9uKCkK
IHsKICAgICB2YXIgcmVhZENhbGxlZCA9IGZhbHNlOwpAQCAtODIsNyArODIsNyBAQCB0ZXN0MS5z
dGVwKGZ1bmN0aW9uKCkKICAgICB9KSk7CiB9KTsKIAotdmFyIHRlc3QyID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBh
bmQgcmVqZWN0IGl0JywgeyB0aW1lb3V0OiAxMDAgfSk7Cit2YXIgdGVzdDIgPSBhc3luY190ZXN0
KCdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNl
IGFuZCByZWplY3QgaXQnKTsKIHRlc3QyLnN0ZXAoZnVuY3Rpb24oKQogewogICAgIHZhciB0aGVF
cnJvciA9IG5ldyBFcnJvcigncmVqZWN0ZWQhJyk7CkBAIC02NTgsNyArNjU4LDcgQEAgdGVzdDE3
LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgfSkpLmNhdGNoKHRlc3QxNy5zdGVwX2Z1bmMoZnVuY3Rp
b24oZSkgeyBhc3NlcnRfdW5yZWFjaGVkKGUpOyB9ICkpOwogfSk7CiAKLXZhciB0ZXN0MTggPSBh
c3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJh
bmRvbSBwdXNoIHNvdXJjZScsIHsgdGltZW91dDogNTAgfSk7Cit2YXIgdGVzdDE4ID0gYXN5bmNf
dGVzdCgnUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20g
cHVzaCBzb3VyY2UnKTsKIHRlc3QxOC5zdGVwKGZ1bmN0aW9uKCkgewogICAgIHZhciBwdWxsQ2hl
Y2tlZCA9IGZhbHNlOwogICAgIHZhciByYW5kb21Tb3VyY2UgPSBuZXcgUmFuZG9tUHVzaFNvdXJj
ZSg4KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254734</attachid>
            <date>2015-06-11 11:36:12 -0700</date>
            <delta_ts>2015-06-12 10:28:32 -0700</delta_ts>
            <desc>Fixing log</desc>
            <filename>bug-145792-20150611203540.patch</filename>
            <type>text/plain</type>
            <size>19397</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZGI3YjA2MmYwMGQwNTg5MzVhMjcwYTE4MDE2ZGRiZjFlMDk4NTNlLi43YTM5ZDg5ZjM0NzdmYmRi
NmM1YmQ1MjVlNzJlMjFlZTdiNTNmY2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNS0wNi0xMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFibGVKU1N0cmVhbSBzaG91
bGQgaGFuZGxlIHByb21pc2VzIHJldHVybmVkIGJ5IEpTIHNvdXJjZSBzdGFydCBjYWxsYmFjawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkZWQgc3VwcG9y
dCBmb3IgSlNGdW5jdGlvbiBpbXBsZW1lbnRlZCBieSBzdGQ6OmZ1bmN0aW9uLgorCisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0TmF0aXZlRXhlY3V0
YWJsZSk6IFJlZmFjdG9yZWQgY29kZSB0byBzaGFyZSBpdCB3aXRoIHRoZSB0d28gSlNGdW5jdGlv
bjo6Y3JlYXRlCisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OnJ1blN0ZEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDogQWRk
ZWQgc3RkOjpmdW5jdGlvbiBiYXNlZCBKU0Z1bmN0aW9uOjpjcmVhdGUgcHJvdG90eXBlLgorICAg
ICAgICAqIHJ1bnRpbWUuSlNQcm9taXNlLmg6CisKIDIwMTUtMDYtMTAgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogcy5s
ZW5ndGgoKSA+IDEgb24gTGF5b3V0VGVzdHMvanMvcmVnZXhwLWZsYWdzLmh0bWwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA1OTBmMDNkZjk4M2VkOTNmODY3ZjBlZWRkZjkwM2ZhZmE4ODkyOTkxLi4xMmU5ZGM3ZGU2
YWIxZGFlMTE3MWFiOGZjN2E5MWE3OTM1NjU2OWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTUtMDYtMTEgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlh
LmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisg
ICAgICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFibGVKU1N0cmVhbSBzaG91bGQgaGFuZGxlIHByb21p
c2VzIHJldHVybmVkIGJ5IEpTIHNvdXJjZSBzdGFydCBjYWxsYmFjaworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzkyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQ292ZXJlZCBieSByZWJhc2VkIHRlc3RzLgor
CisgICAgICAgIFdoZW4gY2FsbGluZyBzdGFydCBjYWxsYmFjaywgdGhlIHJldHVybmVkIHZhbHVl
IGlzIGNoZWNrZWQuCisgICAgICAgIElmIGl0IGlzIG5vdCBhIHByb21pc2UsIHdlIGRvIGFzIGlm
IGl0IGlzIGEgcmVzb2x2ZWQgcHJvbWlzZS4KKyAgICAgICAgSWYgaXQgaXMgYSBwcm9taXNlLCB3
ZSBjYWxsIGl0cyB0aGVuKCkgbWV0aG9kIHdpdGggdHdvIHJlc29sdmUvcmVqZWN0IEpTIGZ1bmN0
aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6Cisg
ICAgICAgICogYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkYWJsZUpTU3RyZWFtOjppbnZva2UpOiBSZXR1cm5zIGEgSlNQcm9taXNlKiBpZiBh
bnkgaXMgcmV0dXJuZWQgYnkgdGhlIEpTIHNvdXJjZSBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNv
cmU6OnRoZW5Qcm9taXNlKTogVXRpbGl0eSBtZXRob2QgdG8gY2FsbCB0aGUgcHJvbWlzZS4KKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZVN0YXJ0UmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24pOiBUaGUg
cHJvbWlzZSByZXNvbHZlIGNhbGxiYWNrLgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0
cmVhbTo6ZG9TdGFydCk6IENhbGxzIHRoZW5Qcm9taXNlIGlmIGEgSlNQcm9taXNlKiBpcyByZXR1
cm5lZCBieSBpbnZva2UuCisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpSZWFk
YWJsZUpTU3RyZWFtKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmg6
CisKIDIwMTUtMDYtMDggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAK
ICAgICAgICAgTWlzc2luZyBjb250ZW50IGluIFVJV2ViVmlldyBzbmFwc2hvdHMgc29tZXRpbWVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDUy
NmNhMDMxZGRiYzBlMjkzZTM2NDdmZmYyYTM4Yjk2MWFmNjI0MDYuLjJjMjQxOTMwMGZmMzY0Njc5
YjdhOWUxODlkNWQ1MTczNWRjYjExZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC00LDYgKzQsNyBAQAogICogIENvcHlyaWdodCAoQykgMjAw
MywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxNSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IENhbWVyb24gWndhcmlj
aCAoY3d6d2FyaWNoQHV3YXRlcmxvby5jYSkKICAqICBDb3B5cmlnaHQgKEMpIDIwMDcgTWFrcyBP
cmxvdmljaAorICogIENvcHlyaWdodCAoQykgMjAxNSBDYW5vbiBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtNjYsMjUgKzY3LDUyIEBAIEpTRnVuY3Rp
b24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgSlNTY29wZSoKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1KU0Z1bmN0aW9uKiBKU0Z1
bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBpbnQg
bGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9u
LCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikK
K3N0YXRpYyBpbmxpbmUgTmF0aXZlRXhlY3V0YWJsZSogZ2V0TmF0aXZlRXhlY3V0YWJsZShWTSYg
dm0sIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBO
YXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvcikKIHsKLSAgICBOYXRpdmVFeGVjdXRhYmxl
KiBleGVjdXRhYmxlOwogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShpbnRyaW5z
aWMpOwogI2Vsc2UKICAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljICYmIHZtLmNhblVz
ZUpJVCgpKSB7CiAgICAgICAgIEFTU0VSVChuYXRpdmVDb25zdHJ1Y3RvciA9PSBjYWxsSG9zdEZ1
bmN0aW9uQXNDb25zdHJ1Y3Rvcik7Ci0gICAgICAgIGV4ZWN1dGFibGUgPSB2bS5nZXRIb3N0RnVu
Y3Rpb24obmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYyk7CisgICAgICAgIHJldHVybiB2bS5nZXRI
b3N0RnVuY3Rpb24obmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYyk7CiAgICAgfSBlbHNlCiAjZW5k
aWYKLSAgICAgICAgZXhlY3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlv
biwgbmF0aXZlQ29uc3RydWN0b3IpOworICAgIHJldHVybiB2bS5nZXRIb3N0RnVuY3Rpb24obmF0
aXZlRnVuY3Rpb24sIG5hdGl2ZUNvbnN0cnVjdG9yKTsKK30KIAorSlNGdW5jdGlvbiogSlNGdW5j
dGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxl
bmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwg
SW50cmluc2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCit7
CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGdldE5hdGl2ZUV4ZWN1dGFibGUo
dm0sIG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yKTsKICAgICBK
U0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rp
b24+KHZtLmhlYXApKSBKU0Z1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlh
bGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9u
LgogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBu
YW1lKTsKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAKK3N0cnVjdCBKU1N0ZEZ1bmN0aW9uOiBw
dWJsaWMgSlNGdW5jdGlvbiB7CisgICAgSlNTdGRGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBvYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBOYXRpdmVTdGRGdW5jdGlvbiYmIGZ1
bmN0aW9uKQorICAgICAgICA6IEpTRnVuY3Rpb24odm0sIG9iamVjdCwgc3RydWN0dXJlKQorICAg
ICAgICAsIHN0ZEZ1bmN0aW9uKFdURjo6bW92ZShmdW5jdGlvbikpIHsgfQorCisgICAgTmF0aXZl
U3RkRnVuY3Rpb24gc3RkRnVuY3Rpb247Cit9OworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBydW5TdGRGdW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIEpTU3Rk
RnVuY3Rpb24qIGpzRnVuY3Rpb24gPSBqc0Nhc3Q8SlNTdGRGdW5jdGlvbio+KHN0YXRlLT5jYWxs
ZWUoKSk7CisgICAgQVNTRVJUKGpzRnVuY3Rpb24pOworICAgIHJldHVybiBqc0Z1bmN0aW9uLT5z
dGRGdW5jdGlvbihzdGF0ZSk7Cit9CisKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0
cmluZyYgbmFtZSwgTmF0aXZlU3RkRnVuY3Rpb24mJiBuYXRpdmVTdGRGdW5jdGlvbiwgSW50cmlu
c2ljIGludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCit7CisgICAg
TmF0aXZlRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGdldE5hdGl2ZUV4ZWN1dGFibGUodm0sIHJ1
blN0ZEZ1bmN0aW9uLCBpbnRyaW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yKTsKKyAgICBKU1N0ZEZ1
bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RkRnVuY3Rp
b24+KHZtLmhlYXApKSBKU1N0ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgV1RGOjptb3ZlKG5hdGl2ZVN0ZEZ1bmN0aW9uKSk7Cisg
ICAgLy8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0
RnVuY3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgorICAgIGZ1bmN0aW9uLT5maW5pc2hD
cmVhdGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKKyAgICByZXR1cm4gZnVuY3Rp
b247Cit9CisKIEpTRnVuY3Rpb246OkpTRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIGdsb2Jh
bE9iamVjdCwgc3RydWN0dXJlKQogICAgICwgbV9leGVjdXRhYmxlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAppbmRleCA4NmRmZjEyZjhmYTQ3YTMxYTMzYTY4
OTQwODdjZTVjMTE1Y2U1MmI2Li43NTA3NjMwODJmNTYyZmJhY2IwMDRiMDA3MWEwMmJkZThjYWMz
ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00
NSw2ICs0NSw4IEBAIGNsYXNzIFNwZWN1bGF0aXZlSklUOwogY2xhc3MgSklUQ29tcGlsZXI7CiB9
CiAKK3R5cGVkZWYgc3RkOjpmdW5jdGlvbjxFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMKEV4
ZWNTdGF0ZSopPiBOYXRpdmVTdGRGdW5jdGlvbjsKKwogSlNfRVhQT1JUX1BSSVZBVEUgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3RvcihFeGVj
U3RhdGUqKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5
TmFtZShDYWxsRnJhbWUqLCBKU09iamVjdCopOwpAQCAtNjgsNiArNzAsNyBAQCBwdWJsaWM6CiAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVGdW5jdGlv
biwgSW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVj
dG9yID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwogICAgIAogICAgIHN0YXRpYyBK
U0Z1bmN0aW9uKiBjcmVhdGVXaXRoSW52YWxpZGF0ZWRSZWFsbG9jYXRpb25XYXRjaHBvaW50KFZN
JiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29wZSopOworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5n
dGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlU3RkRnVuY3Rpb24mJiwgSW50cmluc2ljID0g
Tm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yID0gY2FsbEhvc3RG
dW5jdGlvbkFzQ29uc3RydWN0b3IpOwogCiAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShW
TSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb21pc2UuaAppbmRleCBhOGRmMTg0NGI0Njg0ZWI3OGY1YjcyMjE2Nzcy
ZjhkMzE0ZjJkYzE4Li5iMmFiYTJjMDUwMjM5YjRjNWNiZjE5YzVkMTE1NzgwZmEyNjhkYzczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21pc2UuaApAQCAtNDIsNyArNDIs
NyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEpTUHJvbWlzZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1Byb21pc2VDb25zdHJ1Y3RvciopOwogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNy
ZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKLSAgICBERUNM
QVJFX0lORk87CisgICAgREVDTEFSRV9FWFBPUlRfSU5GTzsKIAogICAgIGVudW0gY2xhc3MgU3Rh
dHVzIHsKICAgICAgICAgVW5yZXNvbHZlZCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCmluZGV4IDlhNTVlZDg5NDYzODNlZTlmOTBlOWQ4
NGFjZGRmMGFiY2I1OGQwMmEuLjI1OGFjNzRkNzBkZDljZmI4ZjY5MWY3YTUzYjQ5NGIzYWMwMjky
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0
cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmNwcApAQCAtMzIsNyArMzIsNiBAQAogCiAjaWYgRU5BQkxFKFNUUkVBTVNfQVBJKQogCi0j
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJSZWFkYWJsZVN0cmVhbVJlYWRl
ci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlSlNTdHJlYW0uY3BwCmluZGV4IDk4ODZkNTQ4YzRiZDhkZGQ4NWZhNDc2M2M5
ODdiMmUzYzVjMjYyZjAuLjcwY2UzYTFjN2IxYTIwMzY4MjNjMmE2ZGNjNTJhMzkwYjZjNGU4NDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3Bw
CkBAIC0zNiwxMSArMzYsMTEgQEAKICNpbmNsdWRlICJKU0RPTVByb21pc2UuaCIKICNpbmNsdWRl
ICJKU1JlYWRhYmxlU3RyZWFtLmgiCiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbUNvbnRyb2xs
ZXIuaCIKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKICNpbmNsdWRlIDxydW50aW1lL0Vycm9yLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9FeGNlcHRpb24uaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+
CisjaW5jbHVkZSA8cnVudGltZS9KU1Byb21pc2UuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU3Ry
aW5nLmg+CiAjaW5jbHVkZSA8cnVudGltZS9TdHJ1Y3R1cmVJbmxpbmVzLmg+CiAKQEAgLTYwLDIx
ICs2MCwzOCBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUgY2FsbEZ1bmN0aW9uKEV4ZWNTdGF0ZSYg
ZXhlYywgSlNWYWx1ZSBqc0Z1bmN0aW9uLCBKU1ZhbHVlCiAgICAgcmV0dXJuIGNhbGwoJmV4ZWMs
IGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmd1bWVudHMpOwog
fQogCi1KU1ZhbHVlIFJlYWRhYmxlSlNTdHJlYW06Omludm9rZShFeGVjU3RhdGUmIGV4ZWMsIGNv
bnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKK0pTUHJvbWlzZSogUmVhZGFibGVKU1N0cmVhbTo6aW52
b2tlKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSkKIHsKLSAgICBK
U1ZhbHVlIGZ1bmN0aW9uID0gZ2V0UHJvcGVydHlGcm9tT2JqZWN0KGV4ZWMsIG1fc291cmNlLmdl
dCgpLCBwcm9wZXJ0eU5hbWUpOwotICAgIGlmIChleGVjLmhhZEV4Y2VwdGlvbigpKQotICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZ2V0UHJvcGVy
dHlGcm9tT2JqZWN0KHN0YXRlLCBtX3NvdXJjZS5nZXQoKSwgcHJvcGVydHlOYW1lKTsKKyAgICBp
ZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
aWYgKCFmdW5jdGlvbi5pc0Z1bmN0aW9uKCkpIHsKICAgICAgICAgaWYgKCFmdW5jdGlvbi5pc1Vu
ZGVmaW5lZCgpKQotICAgICAgICAgICAgdGhyb3dWTUVycm9yKCZleGVjLCBjcmVhdGVUeXBlRXJy
b3IoJmV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0gdHJ5aW5nIHRvIGNhbGwgYSBw
cm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIpKSk7Ci0gICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgICAgICAgICAgdGhyb3dWTUVycm9yKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9y
KCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJSZWFkYWJsZVN0cmVhbSB0cnlpbmcgdG8gY2FsbCBhIHBy
b3BlcnR5IHRoYXQgaXMgbm90IGNhbGxhYmxlIikpKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwotICAgIGFyZ3Vt
ZW50cy5hcHBlbmQoanNDb250cm9sbGVyKGV4ZWMsIGdsb2JhbE9iamVjdCgpKSk7Ci0gICAgcmV0
dXJuIGNhbGxGdW5jdGlvbihleGVjLCBmdW5jdGlvbiwgbV9zb3VyY2UuZ2V0KCksIGFyZ3VtZW50
cyk7CisgICAgYXJndW1lbnRzLmFwcGVuZChqc0NvbnRyb2xsZXIoc3RhdGUsIGdsb2JhbE9iamVj
dCgpKSk7CisKKyAgICBKU1Byb21pc2UqIHByb21pc2UgPSBqc0R5bmFtaWNDYXN0PEpTUHJvbWlz
ZSo+KGNhbGxGdW5jdGlvbihzdGF0ZSwgZnVuY3Rpb24sIG1fc291cmNlLmdldCgpLCBhcmd1bWVu
dHMpKTsKKworICAgIEFTU0VSVCghKHByb21pc2UgJiYgc3RhdGUuaGFkRXhjZXB0aW9uKCkpKTsK
KyAgICByZXR1cm4gcHJvbWlzZTsKK30KKworc3RhdGljIHZvaWQgdGhlblByb21pc2UoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNQcm9taXNlKiBkZWZlcnJlZFByb21pc2UsIEpTVmFsdWUgZnVsbGZpbEZ1
bmN0aW9uLCBKU1ZhbHVlIHJlamVjdEZ1bmN0aW9uKQoreworICAgIEpTVmFsdWUgdGhlblZhbHVl
ID0gZGVmZXJyZWRQcm9taXNlLT5nZXQoJnN0YXRlLCBzdGF0ZS52bSgpLnByb3BlcnR5TmFtZXMt
PnRoZW4pOworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOworICAgIGFyZ3VtZW50cy5hcHBl
bmQoZnVsbGZpbEZ1bmN0aW9uKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKHJlamVjdEZ1bmN0aW9u
KTsKKworICAgIGNhbGxGdW5jdGlvbihzdGF0ZSwgdGhlblZhbHVlLCBkZWZlcnJlZFByb21pc2Us
IGFyZ3VtZW50cyk7CiB9CiAKIEpTRE9NR2xvYmFsT2JqZWN0KiBSZWFkYWJsZUpTU3RyZWFtOjpn
bG9iYWxPYmplY3QoKQpAQCAtODIsNyArOTksMTYgQEAgSlNET01HbG9iYWxPYmplY3QqIFJlYWRh
YmxlSlNTdHJlYW06Omdsb2JhbE9iamVjdCgpCiAgICAgcmV0dXJuIGpzRHluYW1pY0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihtX3NvdXJjZS0+Z2xvYmFsT2JqZWN0KCkpOwogfQogCi1zdGF0aWMg
dm9pZCBzdGFydFJlYWRhYmxlU3RyZWFtQXN5bmMoUmVhZGFibGVTdHJlYW0mIHJlYWRhYmxlU3Ry
ZWFtKQorc3RhdGljIGlubGluZSBKU0Z1bmN0aW9uKiBjcmVhdGVTdGFydFJlc3VsdEZ1bGZpbGxl
ZEZ1bmN0aW9uKEV4ZWNTdGF0ZSYgc3RhdGUsIFJlYWRhYmxlU3RyZWFtJiByZWFkYWJsZVN0cmVh
bSkKK3sKKyAgICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHN0cmVhbSA9ICZyZWFkYWJsZVN0cmVh
bTsKKyAgICByZXR1cm4gSlNGdW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZtKCksIHN0YXRlLmNhbGxl
ZSgpLT5nbG9iYWxPYmplY3QoKSwgMSwgU3RyaW5nKCksIFtzdHJlYW1dKEV4ZWNTdGF0ZSopIHsK
KyAgICAgICAgc3RyZWFtLT5zdGFydCgpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworICAgIH0pOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgc3RhcnRS
ZWFkYWJsZVN0cmVhbUFzeW5jKFJlYWRhYmxlU3RyZWFtJiByZWFkYWJsZVN0cmVhbSkKIHsKICAg
ICBSZWZQdHI8UmVhZGFibGVTdHJlYW0+IHN0cmVhbSA9ICZyZWFkYWJsZVN0cmVhbTsKICAgICBz
dHJlYW0tPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soW3N0cmVhbV0oU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYpIHsKQEAgLTk0LDEzICsxMjAsMTcgQEAgdm9pZCBSZWFkYWJsZUpT
U3RyZWFtOjpkb1N0YXJ0KEV4ZWNTdGF0ZSYgZXhlYykKIHsKICAgICBKU0xvY2tIb2xkZXIgbG9j
aygmZXhlYyk7CiAKLSAgICBpbnZva2UoZXhlYywgInN0YXJ0Iik7CisgICAgSlNQcm9taXNlKiBw
cm9taXNlID0gaW52b2tlKGV4ZWMsICJzdGFydCIpOwogCiAgICAgaWYgKGV4ZWMuaGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgaGFuZGxp
bmcgcHJvbWlzZSBhcyByZXN1bHQgb2YgY2FsbGluZyBzdGFydCBmdW5jdGlvbi4KLSAgICBzdGFy
dFJlYWRhYmxlU3RyZWFtQXN5bmMoKnRoaXMpOworICAgIGlmICghcHJvbWlzZSkgeworICAgICAg
ICBzdGFydFJlYWRhYmxlU3RyZWFtQXN5bmMoKnRoaXMpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgdGhlblByb21pc2UoZXhlYywgcHJvbWlzZSwgY3JlYXRlU3RhcnRSZXN1bHRGdWxm
aWxsZWRGdW5jdGlvbihleGVjLCAqdGhpcyksIG1fZXJyb3JGdW5jdGlvbi5nZXQoKSk7CiB9CiAK
IHZvaWQgUmVhZGFibGVKU1N0cmVhbTo6ZG9QdWxsKCkKQEAgLTEzOSwxMCArMTY5LDE2IEBAIFJl
ZlB0cjxSZWFkYWJsZUpTU3RyZWFtPiBSZWFkYWJsZUpTU3RyZWFtOjpjcmVhdGUoRXhlY1N0YXRl
JiBleGVjLCBTY3JpcHRFeGVjdXRpCiAgICAgcmV0dXJuIHJlYWRhYmxlU3RyZWFtOwogfQogCi1S
ZWFkYWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEV4ZWNTdGF0ZSYgZXhlYywgSlNPYmplY3QqIHNvdXJj
ZSkKK1JlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXhlY1N0YXRlJiBzdGF0ZSwgSlNPYmplY3Qq
IHNvdXJjZSkKICAgICA6IFJlYWRhYmxlU3RyZWFtKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCiB7
Ci0gICAgbV9zb3VyY2Uuc2V0KGV4ZWMudm0oKSwgc291cmNlKTsKKyAgICBtX3NvdXJjZS5zZXQo
c3RhdGUudm0oKSwgc291cmNlKTsKKyAgICAvLyBXZSBkbyBub3QgdGFrZSBhIFJlZiB0byB0aGUg
c3RyZWFtIGFzIHRoaXMgd291bGQgY2F1c2UgYSBSZWYgY3ljbGUuCisgICAgLy8gVGhlIHJlc29s
dXRpb24gY2FsbGJhY2sgdXNlZCBqb2ludGx5IHdpdGggbV9lcnJvckZ1bmN0aW9uIGFzIHByb21p
c2UgY2FsbGJhY2tzIHNob3VsZCBwcm90ZWN0IHRoZSBzdHJlYW0gaW5zdGVhZC4KKyAgICBtX2Vy
cm9yRnVuY3Rpb24uc2V0KHN0YXRlLnZtKCksIEpTRnVuY3Rpb246OmNyZWF0ZShzdGF0ZS52bSgp
LCBzdGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEsIFN0cmluZygpLCBbdGhpc10oRXhl
Y1N0YXRlKiBzdGF0ZSkgeworICAgICAgICBzdG9yZUVycm9yKCpzdGF0ZSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfSkpOwogfQogCiBKU1Zh
bHVlIFJlYWRhYmxlSlNTdHJlYW06OmpzQ29udHJvbGxlcihFeGVjU3RhdGUmIGV4ZWMsIEpTRE9N
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9SZWFkYWJsZUpTU3RyZWFtLmgKaW5kZXggZDRmZjI4ZTA3NDU2NjczY2VkMzE3NzcyODYwYmU1
YzJiYzRmODI3Ny4uMGE5YjQzNTE3MTMwMWFiYTVmNDlmOWJkMzM5NDU5NmM2MzEzOGM2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaApAQCAtNDAs
NiArNDAsMTEgQEAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgSlNGdW5jdGlvbjsKK2NsYXNzIEpTUHJvbWlzZTsK
K30KKyAgICAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSlNET01HbG9iYWxPYmplY3Q7
CkBAIC02MSw3ICs2Niw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRvU3RhcnQoSlNDOjpFeGVj
U3RhdGUmKTsKIAotICAgIEpTQzo6SlNWYWx1ZSBpbnZva2UoSlNDOjpFeGVjU3RhdGUmLCBjb25z
dCBjaGFyKik7CisgICAgSlNDOjpKU1Byb21pc2UqIGludm9rZShKU0M6OkV4ZWNTdGF0ZSYsIGNv
bnN0IGNoYXIqKTsKICAgICB2b2lkIHN0b3JlRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlJik7CiAg
ICAgdm9pZCBzdG9yZUVycm9yKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlKTsKIApAQCAt
NzMsNiArNzgsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlYWRhYmxlU3Ry
ZWFtQ29udHJvbGxlcj4gbV9jb250cm9sbGVyOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93
bj4gbV9lcnJvcjsKKyAgICBKU0M6OlN0cm9uZzxKU0M6OkpTRnVuY3Rpb24+IG1fZXJyb3JGdW5j
dGlvbjsKICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX3NvdXJjZTsKICAgICBEZXF1
ZTxKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+PiBtX2NodW5rUXVldWU7CiB9OwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY0
NjFmM2VhZmU1ZDVmODljMjk5YmZhNGFmZDExNGJjMGQyZTU3YTQuLjk5ODE3NTRlNzUwYWZlNjky
OGI3MTM1ZjNmNTgzMDA4ODU1NDdjNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxNS0wNi0x
MSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPiBhbmQgWW91
ZW5uIEZhYmxldCA8eW91ZW5uLmZhYmxldEBjcmYuY2Fub24uZnI+CisKKyAgICAgICAgW1N0cmVh
bXMgQVBJXSBSZWFkYWJsZUpTU3RyZWFtIHNob3VsZCBoYW5kbGUgcHJvbWlzZXMgcmV0dXJuZWQg
YnkgSlMgc291cmNlIHN0YXJ0IGNhbGxiYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDU3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBSZWJhc2luZyBleHBlY3RhdGlvbnMsIGFuZCByZW1vdmluZyB0aW1l
b3V0cyBmb3IgdGVzdHMgdGhhdCBubyBsb25nZXIgdGltZW91dC4KKworICAgICAgICAqIHN0cmVh
bXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQ6
CisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3Ry
ZWFtLmh0bWw6CisKIDIwMTUtMDYtMTAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMTg0ODk1KTogVmVydGljYWwgYm9y
ZGVyIGVsZW1lbnRzIChbLXdlYmtpdF0tYm9yZGVyLWltYWdlIHNldCB0byAncmVwZWF0JykgdGhh
dCB1c2VkIHRvIHJlbmRlciBwZXJmZWN0bHkgYXJlIG5vdyByZW5kZXJpbmcgaW5jb3JyZWN0bHku
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZl
cmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCA3
M2UyYjgxY2RmNmIxYzkwOWU5NjhkOWY4Yjk4NDFkODdjN2QxNzNlLi4zN2ZkMjY2NWUzYWE0OGUy
ZGU1YTg1NTFiYzE0YWNiYzMwNjNmZDVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS1leHBlY3RlZC50eHQKQEAgLTUsOCArNSw4IEBAIFBBU1MgUmVhZGFibGVTdHJlYW0g
Y29uc3RydWN0b3Igc2hvdWxkIHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRz
CiBQQVNTIFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdl
IGFzIGNhbmNlbCBhcmd1bWVudCAKIFBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2Fu
IGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCAKIFBBU1MgUmVhZGFibGVTdHJl
YW0gY29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgc3RyYXRlZ3kgYXJndW1l
bnQgCi1USU1FT1VUIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVy
biBhIHByb21pc2UgVGVzdCB0aW1lZCBvdXQKLVRJTUVPVVQgUmVhZGFibGVTdHJlYW0gc3RhcnQg
c2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0IFRlc3QgdGlt
ZWQgb3V0CitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVy
biBhIHByb21pc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRv
IHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBpdCAKIFBBU1MgUmVhZGFibGVTdHJlYW0gc2hv
dWxkIGJlIGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4gCiBQQVNTIFJlYWRhYmxl
U3RyZWFtOiBpZiBzdGFydCB0aHJvd3MgYW4gZXJyb3IsIGl0IHNob3VsZCBiZSByZS10aHJvd24g
CiBUSU1FT1VUIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJv
ciB0aGUgc3RyZWFtIFRlc3QgdGltZWQgb3V0CkBAIC0yMCw2ICsyMCw2IEBAIFBBU1MgUmVhZGFi
bGVTdHJlYW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQgZXJyb3Igd2hlbiB0aGUg
c3RyZWFtIGlzIGVyCiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5n
IHNvdXJjZSBtZXRob2RzIGFzIG1ldGhvZHMgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVk
CiBGQUlMIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNo
b3VsZCByZXR1cm4gZmFsc2UgZm9yIGFsbCBidXQgdGhlIGZpcnN0IGVucXVldWUgY2FsbCBhc3Nl
cnRfZXF1YWxzOiBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCAoYm9v
bGVhbikgdHJ1ZSBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAogRkFJTCBSZWFkYWJsZVN0
cmVhbSBzdHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUgcmV0
dXJuaW5nIHRydWUgZnJvbSBlbnF1ZXVlIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRl
bHkgYXNzZXJ0X2VxdWFsczogZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0
ZWQgKGJvb2xlYW4pIHRydWUgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKLVRJTUVPVVQg
UmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBz
b3VyY2UgVGVzdCB0aW1lZCBvdXQKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVz
dDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGlu
dGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSAKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUt
c3RyZWFtLmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlv
bi9yZWFkYWJsZS1zdHJlYW0uaHRtbAppbmRleCA3MGYyM2E3NmU5MzAzMjhjMjA4NmNiNzdhNmNm
YjRmNjExZGM2MGIyLi42YzE4MGQ0NmU0ZjYwYTA1ZTA4ODk1OTgzNDhlOTA1ZGVjMDVmMWI2IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbApAQCAtNTMsNyArNTMsNyBAQCB0ZXN0
KGZ1bmN0aW9uKCkgewogICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0cmF0ZWd5OiAyIH0pOyAv
LyBDb25zdHJ1Y3RvciBzaG91bGQgbm90IHRocm93IHdoZW4gc3RyYXRlZ3kgaXMgbm90IGFuIG9i
amVjdC4KIH0sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2Fy
YmFnZSBhcyBzdHJhdGVneSBhcmd1bWVudCcpOwogCi12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdS
ZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlJywg
eyB0aW1lb3V0OiA1MCB9KTsKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFt
IHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UnKTsKIHRlc3QxLnN0ZXAo
ZnVuY3Rpb24oKQogewogICAgIHZhciByZWFkQ2FsbGVkID0gZmFsc2U7CkBAIC04Miw3ICs4Miw3
IEBAIHRlc3QxLnN0ZXAoZnVuY3Rpb24oKQogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDIgPSBh
c3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4g
YSBwcm9taXNlIGFuZCByZWplY3QgaXQnLCB7IHRpbWVvdXQ6IDEwMCB9KTsKK3ZhciB0ZXN0MiA9
IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVy
biBhIHByb21pc2UgYW5kIHJlamVjdCBpdCcpOwogdGVzdDIuc3RlcChmdW5jdGlvbigpCiB7CiAg
ICAgdmFyIHRoZUVycm9yID0gbmV3IEVycm9yKCdyZWplY3RlZCEnKTsKQEAgLTY1OCw3ICs2NTgs
NyBAQCB0ZXN0MTcuc3RlcChmdW5jdGlvbigpIHsKICAgICB9KSkuY2F0Y2godGVzdDE3LnN0ZXBf
ZnVuYyhmdW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0gKSk7CiB9KTsKIAotdmFy
IHRlc3QxOCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFk
YXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNlJywgeyB0aW1lb3V0OiA1MCB9KTsKK3ZhciB0ZXN0
MTggPSBhc3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGlu
ZyBhIHJhbmRvbSBwdXNoIHNvdXJjZScpOwogdGVzdDE4LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAg
dmFyIHB1bGxDaGVja2VkID0gZmFsc2U7CiAgICAgdmFyIHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5k
b21QdXNoU291cmNlKDgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254807</attachid>
            <date>2015-06-12 10:28:40 -0700</date>
            <delta_ts>2015-06-12 12:44:31 -0700</delta_ts>
            <desc>Cleaning NativeStdFunction definition</desc>
            <filename>bug-145792-20150612192809.patch</filename>
            <type>text/plain</type>
            <size>19375</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NzA1YmMxZDVhMTY0MjU0MzdiNDQyMWI1ODYwYTFhZjk0YTk4ZTY0Li5jODc3YmNmMGQ5YTM0MjM1
OWYyNGQ1Nzg4YWQzOTRjNGI2MzI4MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNS0wNi0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFibGVKU1N0cmVhbSBzaG91
bGQgaGFuZGxlIHByb21pc2VzIHJldHVybmVkIGJ5IEpTIHNvdXJjZSBzdGFydCBjYWxsYmFjawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkZWQgc3VwcG9y
dCBmb3IgSlNGdW5jdGlvbiBpbXBsZW1lbnRlZCBieSBzdGQ6OmZ1bmN0aW9uLgorCisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0TmF0aXZlRXhlY3V0
YWJsZSk6IFJlZmFjdG9yZWQgY29kZSB0byBzaGFyZSBpdCB3aXRoIHRoZSB0d28gSlNGdW5jdGlv
bjo6Y3JlYXRlCisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OnJ1blN0ZEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDogQWRk
ZWQgc3RkOjpmdW5jdGlvbiBiYXNlZCBKU0Z1bmN0aW9uOjpjcmVhdGUgcHJvdG90eXBlLgorICAg
ICAgICAqIHJ1bnRpbWUuSlNQcm9taXNlLmg6CisKIDIwMTUtMDYtMTEgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbigpIG5l
ZWRzIHRvIGJlIGFibGUgdG8gYWNjZXB0IGEgcmF3IHRocm93biB2YWx1ZSBpbiBhZGRpdGlvbiB0
byBFeGNlcHRpb24gb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5Zjc1ZjBmMWY4YWYxODdlYTkyMGRl
MmFmYTRkNjFkYWU0NTVhNjRiLi4xNzY1Y2FiN2U1ZThjYzdhMGI4ZjVlZWFhZDViMjgzMTJhODdi
YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMDYtMTIgIFhhYmllciBSb2Ry
aWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlv
dWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFi
bGVKU1N0cmVhbSBzaG91bGQgaGFuZGxlIHByb21pc2VzIHJldHVybmVkIGJ5IEpTIHNvdXJjZSBz
dGFydCBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ1NzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgQ292ZXJlZCBieSByZWJhc2VkIHRlc3RzLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBzdGFy
dCBjYWxsYmFjaywgdGhlIHJldHVybmVkIHZhbHVlIGlzIGNoZWNrZWQuCisgICAgICAgIElmIGl0
IGlzIG5vdCBhIHByb21pc2UsIHdlIGRvIGFzIGlmIGl0IGlzIGEgcmVzb2x2ZWQgcHJvbWlzZS4K
KyAgICAgICAgSWYgaXQgaXMgYSBwcm9taXNlLCB3ZSBjYWxsIGl0cyB0aGVuKCkgbWV0aG9kIHdp
dGggdHdvIHJlc29sdmUvcmVqZWN0IEpTIGZ1bmN0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFi
bGVKU1N0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjppbnZv
a2UpOiBSZXR1cm5zIGEgSlNQcm9taXNlKiBpZiBhbnkgaXMgcmV0dXJuZWQgYnkgdGhlIEpTIHNv
dXJjZSBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OnRoZW5Qcm9taXNlKTogVXRpbGl0eSBt
ZXRob2QgdG8gY2FsbCB0aGUgcHJvbWlzZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVN0YXJ0
UmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24pOiBUaGUgcHJvbWlzZSByZXNvbHZlIGNhbGxiYWNrLgor
ICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6ZG9TdGFydCk6IENhbGxzIHRoZW5Q
cm9taXNlIGlmIGEgSlNQcm9taXNlKiBpcyByZXR1cm5lZCBieSBpbnZva2UuCisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmg6CisKIDIwMTUtMDYtMTEgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbigp
IG5lZWRzIHRvIGJlIGFibGUgdG8gYWNjZXB0IGEgcmF3IHRocm93biB2YWx1ZSBpbiBhZGRpdGlv
biB0byBFeGNlcHRpb24gb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKaW5kZXggNTI2Y2EwMzFkZGJjMGUyOTNlMzY0N2ZmZjJhMzhiOTYxYWY2
MjQwNi4uMmMyNDE5MzAwZmYzNjQ2NzliN2E5ZTE4OWQ1ZDUxNzM1ZGNiMTFkYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTQsNiArNCw3IEBA
CiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQg
KEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICogIENv
cHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1IENh
bm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02
NiwyNSArNjcsNTIgQEAgSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKgogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorc3RhdGljIGlubGluZSBOYXRpdmVFeGVjdXRhYmxlKiBn
ZXROYXRpdmVFeGVjdXRhYmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24s
IEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQog
ewotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7CiAjaWYgIUVOQUJMRShKSVQpCiAg
ICAgVU5VU0VEX1BBUkFNKGludHJpbnNpYyk7CiAjZWxzZQogICAgIGlmIChpbnRyaW5zaWMgIT0g
Tm9JbnRyaW5zaWMgJiYgdm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUNv
bnN0cnVjdG9yID09IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKLSAgICAgICAgZXhl
Y3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljKTsK
KyAgICAgICAgcmV0dXJuIHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmlu
c2ljKTsKICAgICB9IGVsc2UKICNlbmRpZgotICAgICAgICBleGVjdXRhYmxlID0gdm0uZ2V0SG9z
dEZ1bmN0aW9uKG5hdGl2ZUZ1bmN0aW9uLCBuYXRpdmVDb25zdHJ1Y3Rvcik7CisgICAgcmV0dXJu
IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgbmF0aXZlQ29uc3RydWN0b3IpOwor
fQogCitKU0Z1bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZUZ1
bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlv
biBuYXRpdmVDb25zdHJ1Y3RvcikKK3sKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gZ2V0TmF0aXZlRXhlY3V0YWJsZSh2bSwgbmF0aXZlRnVuY3Rpb24sIGludHJpbnNpYywgbmF0
aXZlQ29uc3RydWN0b3IpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxs
LCBhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4odm0uaGVhcCkpIEpTRnVuY3Rpb24odm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpKTsKICAgICAvLyBDYW4n
dCBkbyB0aGlzIGR1cmluZyBpbml0aWFsaXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBt
aWdodCBkbyBhIEdDIGFsbG9jYXRpb24uCiAgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZt
LCBleGVjdXRhYmxlLCBsZW5ndGgsIG5hbWUpOwogICAgIHJldHVybiBmdW5jdGlvbjsKIH0KIAor
c3RydWN0IEpTU3RkRnVuY3Rpb246IHB1YmxpYyBKU0Z1bmN0aW9uIHsKKyAgICBKU1N0ZEZ1bmN0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIG9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IE5hdGl2ZVN0ZEZ1bmN0aW9uJiYgZnVuY3Rpb24pCisgICAgICAgIDogSlNGdW5jdGlvbih2bSwg
b2JqZWN0LCBzdHJ1Y3R1cmUpCisgICAgICAgICwgc3RkRnVuY3Rpb24oV1RGOjptb3ZlKGZ1bmN0
aW9uKSkgeyB9CisKKyAgICBOYXRpdmVTdGRGdW5jdGlvbiBzdGRGdW5jdGlvbjsKK307CisKK3N0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJ1blN0ZEZ1bmN0aW9uKEV4ZWNTdGF0
ZSogc3RhdGUpCit7CisgICAgSlNTdGRGdW5jdGlvbioganNGdW5jdGlvbiA9IGpzQ2FzdDxKU1N0
ZEZ1bmN0aW9uKj4oc3RhdGUtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoanNGdW5jdGlvbik7Cisg
ICAgcmV0dXJuIGpzRnVuY3Rpb24tPnN0ZEZ1bmN0aW9uKHN0YXRlKTsKK30KKworSlNGdW5jdGlv
biogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVTdGRGdW5jdGlvbiYmIG5h
dGl2ZVN0ZEZ1bmN0aW9uLCBJbnRyaW5zaWMgaW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVDb25zdHJ1Y3RvcikKK3sKKyAgICBOYXRpdmVFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gZ2V0
TmF0aXZlRXhlY3V0YWJsZSh2bSwgcnVuU3RkRnVuY3Rpb24sIGludHJpbnNpYywgbmF0aXZlQ29u
c3RydWN0b3IpOworICAgIEpTU3RkRnVuY3Rpb24qIGZ1bmN0aW9uID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8SlNTdGRGdW5jdGlvbj4odm0uaGVhcCkpIEpTU3RkRnVuY3Rpb24odm0sIGds
b2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgpLCBXVEY6Om1vdmUo
bmF0aXZlU3RkRnVuY3Rpb24pKTsKKyAgICAvLyBDYW4ndCBkbyB0aGlzIGR1cmluZyBpbml0aWFs
aXphdGlvbiBiZWNhdXNlIGdldEhvc3RGdW5jdGlvbiBtaWdodCBkbyBhIEdDIGFsbG9jYXRpb24u
CisgICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZtLCBleGVjdXRhYmxlLCBsZW5ndGgsIG5h
bWUpOworICAgIHJldHVybiBmdW5jdGlvbjsKK30KKwogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgIDogQmFzZSh2bSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpCiAgICAgLCBtX2V4ZWN1
dGFibGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4
IDg2ZGZmMTJmOGZhNDdhMzFhMzNhNjg5NDA4N2NlNWMxMTVjZTUyYjYuLmI2YmNjMGQ1YzY2MDVj
NDM5NTk1ZDJkZWE5OWFiMzEyNjA4ZWNmOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKQEAgLTQ1LDYgKzQ1LDggQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQ7
CiBjbGFzcyBKSVRDb21waWxlcjsKIH0KIAordHlwZWRlZiBzdGQ6OmZ1bmN0aW9uPEVuY29kZWRK
U1ZhbHVlIChFeGVjU3RhdGUqKT4gTmF0aXZlU3RkRnVuY3Rpb247CisKIEpTX0VYUE9SVF9QUklW
QVRFIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3Ry
dWN0b3IoRXhlY1N0YXRlKik7CiAKIEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBnZXRDYWxjdWxh
dGVkRGlzcGxheU5hbWUoQ2FsbEZyYW1lKiwgSlNPYmplY3QqKTsKQEAgLTY4LDYgKzcwLDcgQEAg
cHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUo
Vk0mLCBKU0dsb2JhbE9iamVjdCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0
aXZlRnVuY3Rpb24sIEludHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRp
dmVDb25zdHJ1Y3RvciA9IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKICAgICAKICAg
ICBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlV2l0aEludmFsaWRhdGVkUmVhbGxvY2F0aW9uV2F0
Y2hwb2ludChWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKKyAgICBKU19FWFBP
UlRfUFJJVkFURSBzdGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBpbnQgbGVuZ3RoLCBjb25zdCBTdHJpbmcmIG5hbWUsIE5hdGl2ZVN0ZEZ1bmN0aW9uJiYsIElu
dHJpbnNpYyA9IE5vSW50cmluc2ljLCBOYXRpdmVGdW5jdGlvbiBuYXRpdmVDb25zdHJ1Y3RvciA9
IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKIAogICAgIHN0YXRpYyBKU0Z1bmN0aW9u
KiBjcmVhdGUoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgKaW5kZXggYThkZjE4NDRiNDY4NGViNzhm
NWI3MjIxNjc3MmY4ZDMxNGYyZGMxOC4uYjJhYmEyYzA1MDIzOWI0YzVjYmYxOWM1ZDExNTc4MGZh
MjY4ZGM3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9t
aXNlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlLmgKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBKU1Byb21pc2UqIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNQcm9taXNlQ29uc3RydWN0b3IqKTsKICAgICBzdGF0aWMgU3Ry
dWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwog
Ci0gICAgREVDTEFSRV9JTkZPOworICAgIERFQ0xBUkVfRVhQT1JUX0lORk87CiAKICAgICBlbnVt
IGNsYXNzIFN0YXR1cyB7CiAgICAgICAgIFVucmVzb2x2ZWQsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAppbmRleCA5YTU1ZWQ4OTQ2Mzgz
ZWU5ZjkwZTlkODRhY2RkZjBhYmNiNThkMDJhLi4yNThhYzc0ZDcwZGQ5Y2ZiOGY2OTFmN2E1M2I0
OTRiM2FjMDI5MjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9S
ZWFkYWJsZVN0cmVhbS5jcHAKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2lmIEVOQUJMRShTVFJFQU1T
X0FQSSkKIAotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVT
dHJlYW1SZWFkZXIuaCIKICNpbmNsdWRlIDxydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmNwcAppbmRleCA5ODg2ZDU0OGM0YmQ4ZGRk
ODVmYTQ3NjNjOTg3YjJlM2M1YzI2MmYwLi43MGNlM2ExYzdiMWEyMDM2ODIzYzJhNmRjYzUyYTM5
MGI2YzRlODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZUpTU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpT
U3RyZWFtLmNwcApAQCAtMzYsMTEgKzM2LDExIEBACiAjaW5jbHVkZSAiSlNET01Qcm9taXNlLmgi
CiAjaW5jbHVkZSAiSlNSZWFkYWJsZVN0cmVhbS5oIgogI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJl
YW1Db250cm9sbGVyLmgiCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgogI2lu
Y2x1ZGUgPHJ1bnRpbWUvRXhjZXB0aW9uLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1ZhbHVl
SW5saW5lcy5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNQcm9taXNlLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU1N0cmluZy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvU3RydWN0dXJlSW5saW5lcy5oPgog
CkBAIC02MCwyMSArNjAsMzggQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGNhbGxGdW5jdGlvbihF
eGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUganNGdW5jdGlvbiwgSlNWYWx1ZQogICAgIHJldHVybiBj
YWxsKCZleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJn
dW1lbnRzKTsKIH0KIAotSlNWYWx1ZSBSZWFkYWJsZUpTU3RyZWFtOjppbnZva2UoRXhlY1N0YXRl
JiBleGVjLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUpCitKU1Byb21pc2UqIFJlYWRhYmxlSlNT
dHJlYW06Omludm9rZShFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUp
CiB7Ci0gICAgSlNWYWx1ZSBmdW5jdGlvbiA9IGdldFByb3BlcnR5RnJvbU9iamVjdChleGVjLCBt
X3NvdXJjZS5nZXQoKSwgcHJvcGVydHlOYW1lKTsKLSAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24o
KSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9
IGdldFByb3BlcnR5RnJvbU9iamVjdChzdGF0ZSwgbV9zb3VyY2UuZ2V0KCksIHByb3BlcnR5TmFt
ZSk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIGlmICghZnVuY3Rpb24uaXNGdW5jdGlvbigpKSB7CiAgICAgICAgIGlmICghZnVu
Y3Rpb24uaXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgIHRocm93Vk1FcnJvcigmZXhlYywgY3Jl
YXRlVHlwZUVycm9yKCZleGVjLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtIHRyeWluZyB0
byBjYWxsIGEgcHJvcGVydHkgdGhhdCBpcyBub3QgY2FsbGFibGUiKSkpOwotICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgICAgIHRocm93Vk1FcnJvcigmc3RhdGUsIGNyZWF0
ZVR5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiUmVhZGFibGVTdHJlYW0gdHJ5aW5nIHRv
IGNhbGwgYSBwcm9wZXJ0eSB0aGF0IGlzIG5vdCBjYWxsYWJsZSIpKSk7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsK
LSAgICBhcmd1bWVudHMuYXBwZW5kKGpzQ29udHJvbGxlcihleGVjLCBnbG9iYWxPYmplY3QoKSkp
OwotICAgIHJldHVybiBjYWxsRnVuY3Rpb24oZXhlYywgZnVuY3Rpb24sIG1fc291cmNlLmdldCgp
LCBhcmd1bWVudHMpOworICAgIGFyZ3VtZW50cy5hcHBlbmQoanNDb250cm9sbGVyKHN0YXRlLCBn
bG9iYWxPYmplY3QoKSkpOworCisgICAgSlNQcm9taXNlKiBwcm9taXNlID0ganNEeW5hbWljQ2Fz
dDxKU1Byb21pc2UqPihjYWxsRnVuY3Rpb24oc3RhdGUsIGZ1bmN0aW9uLCBtX3NvdXJjZS5nZXQo
KSwgYXJndW1lbnRzKSk7CisKKyAgICBBU1NFUlQoIShwcm9taXNlICYmIHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKSk7CisgICAgcmV0dXJuIHByb21pc2U7Cit9CisKK3N0YXRpYyB2b2lkIHRoZW5Qcm9t
aXNlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTUHJvbWlzZSogZGVmZXJyZWRQcm9taXNlLCBKU1ZhbHVl
IGZ1bGxmaWxGdW5jdGlvbiwgSlNWYWx1ZSByZWplY3RGdW5jdGlvbikKK3sKKyAgICBKU1ZhbHVl
IHRoZW5WYWx1ZSA9IGRlZmVycmVkUHJvbWlzZS0+Z2V0KCZzdGF0ZSwgc3RhdGUudm0oKS5wcm9w
ZXJ0eU5hbWVzLT50aGVuKTsKKyAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3VtZW50czsKKyAgICBhcmd1
bWVudHMuYXBwZW5kKGZ1bGxmaWxGdW5jdGlvbik7CisgICAgYXJndW1lbnRzLmFwcGVuZChyZWpl
Y3RGdW5jdGlvbik7CisKKyAgICBjYWxsRnVuY3Rpb24oc3RhdGUsIHRoZW5WYWx1ZSwgZGVmZXJy
ZWRQcm9taXNlLCBhcmd1bWVudHMpOwogfQogCiBKU0RPTUdsb2JhbE9iamVjdCogUmVhZGFibGVK
U1N0cmVhbTo6Z2xvYmFsT2JqZWN0KCkKQEAgLTgyLDcgKzk5LDE2IEBAIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBSZWFkYWJsZUpTU3RyZWFtOjpnbG9iYWxPYmplY3QoKQogICAgIHJldHVybiBqc0R5bmFt
aWNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obV9zb3VyY2UtPmdsb2JhbE9iamVjdCgpKTsKIH0K
IAotc3RhdGljIHZvaWQgc3RhcnRSZWFkYWJsZVN0cmVhbUFzeW5jKFJlYWRhYmxlU3RyZWFtJiBy
ZWFkYWJsZVN0cmVhbSkKK3N0YXRpYyBpbmxpbmUgSlNGdW5jdGlvbiogY3JlYXRlU3RhcnRSZXN1
bHRGdWxmaWxsZWRGdW5jdGlvbihFeGVjU3RhdGUmIHN0YXRlLCBSZWFkYWJsZVN0cmVhbSYgcmVh
ZGFibGVTdHJlYW0pCit7CisgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBzdHJlYW0gPSAmcmVh
ZGFibGVTdHJlYW07CisgICAgcmV0dXJuIEpTRnVuY3Rpb246OmNyZWF0ZShzdGF0ZS52bSgpLCBz
dGF0ZS5jYWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCksIDEsIFN0cmluZygpLCBbc3RyZWFtXShFeGVj
U3RhdGUqKSB7CisgICAgICAgIHN0cmVhbS0+c3RhcnQoKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICB9KTsKK30KKworc3RhdGljIGlubGluZSB2
b2lkIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3luYyhSZWFkYWJsZVN0cmVhbSYgcmVhZGFibGVTdHJl
YW0pCiB7CiAgICAgUmVmUHRyPFJlYWRhYmxlU3RyZWFtPiBzdHJlYW0gPSAmcmVhZGFibGVTdHJl
YW07CiAgICAgc3RyZWFtLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnBvc3RUYXNrKFtzdHJl
YW1dKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CkBAIC05NCwxMyArMTIwLDE3IEBAIHZvaWQg
UmVhZGFibGVKU1N0cmVhbTo6ZG9TdGFydChFeGVjU3RhdGUmIGV4ZWMpCiB7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2soJmV4ZWMpOwogCi0gICAgaW52b2tlKGV4ZWMsICJzdGFydCIpOworICAgIEpT
UHJvbWlzZSogcHJvbWlzZSA9IGludm9rZShleGVjLCAic3RhcnQiKTsKIAogICAgIGlmIChleGVj
LmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IGhhbmRsaW5nIHByb21pc2UgYXMgcmVzdWx0IG9mIGNhbGxpbmcgc3RhcnQgZnVuY3Rpb24u
Ci0gICAgc3RhcnRSZWFkYWJsZVN0cmVhbUFzeW5jKCp0aGlzKTsKKyAgICBpZiAoIXByb21pc2Up
IHsKKyAgICAgICAgc3RhcnRSZWFkYWJsZVN0cmVhbUFzeW5jKCp0aGlzKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIHRoZW5Qcm9taXNlKGV4ZWMsIHByb21pc2UsIGNyZWF0ZVN0YXJ0
UmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24oZXhlYywgKnRoaXMpLCBtX2Vycm9yRnVuY3Rpb24uZ2V0
KCkpOwogfQogCiB2b2lkIFJlYWRhYmxlSlNTdHJlYW06OmRvUHVsbCgpCkBAIC0xMzksMTAgKzE2
OSwxNiBAQCBSZWZQdHI8UmVhZGFibGVKU1N0cmVhbT4gUmVhZGFibGVKU1N0cmVhbTo6Y3JlYXRl
KEV4ZWNTdGF0ZSYgZXhlYywgU2NyaXB0RXhlY3V0aQogICAgIHJldHVybiByZWFkYWJsZVN0cmVh
bTsKIH0KIAotUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVKU1N0cmVhbShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBFeGVjU3RhdGUmIGV4ZWMsIEpTT2Jq
ZWN0KiBzb3VyY2UpCitSZWFkYWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIEV4ZWNTdGF0ZSYgc3RhdGUs
IEpTT2JqZWN0KiBzb3VyY2UpCiAgICAgOiBSZWFkYWJsZVN0cmVhbShzY3JpcHRFeGVjdXRpb25D
b250ZXh0KQogewotICAgIG1fc291cmNlLnNldChleGVjLnZtKCksIHNvdXJjZSk7CisgICAgbV9z
b3VyY2Uuc2V0KHN0YXRlLnZtKCksIHNvdXJjZSk7CisgICAgLy8gV2UgZG8gbm90IHRha2UgYSBS
ZWYgdG8gdGhlIHN0cmVhbSBhcyB0aGlzIHdvdWxkIGNhdXNlIGEgUmVmIGN5Y2xlLgorICAgIC8v
IFRoZSByZXNvbHV0aW9uIGNhbGxiYWNrIHVzZWQgam9pbnRseSB3aXRoIG1fZXJyb3JGdW5jdGlv
biBhcyBwcm9taXNlIGNhbGxiYWNrcyBzaG91bGQgcHJvdGVjdCB0aGUgc3RyZWFtIGluc3RlYWQu
CisgICAgbV9lcnJvckZ1bmN0aW9uLnNldChzdGF0ZS52bSgpLCBKU0Z1bmN0aW9uOjpjcmVhdGUo
c3RhdGUudm0oKSwgc3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmcoKSwg
W3RoaXNdKEV4ZWNTdGF0ZSogc3RhdGUpIHsKKyAgICAgICAgc3RvcmVFcnJvcigqc3RhdGUpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIH0pKTsK
IH0KIAogSlNWYWx1ZSBSZWFkYWJsZUpTU3RyZWFtOjpqc0NvbnRyb2xsZXIoRXhlY1N0YXRlJiBl
eGVjLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5oCmluZGV4IGQ0ZmYyOGUwNzQ1NjY3M2NlZDMx
Nzc3Mjg2MGJlNWMyYmM0ZjgyNzcuLjBhOWI0MzUxNzEzMDFhYmE1ZjQ5ZjliZDMzOTQ1OTZjNjMx
MzhjNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNT
dHJlYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFt
LmgKQEAgLTQwLDYgKzQwLDExIEBACiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgogCituYW1lc3BhY2UgSlNDIHsKK2NsYXNzIEpTRnVuY3Rpb247CitjbGFzcyBK
U1Byb21pc2U7Cit9CisgICAgCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEpTRE9NR2xv
YmFsT2JqZWN0OwpAQCAtNjEsNyArNjYsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkb1N0YXJ0
KEpTQzo6RXhlY1N0YXRlJik7CiAKLSAgICBKU0M6OkpTVmFsdWUgaW52b2tlKEpTQzo6RXhlY1N0
YXRlJiwgY29uc3QgY2hhciopOworICAgIEpTQzo6SlNQcm9taXNlKiBpbnZva2UoSlNDOjpFeGVj
U3RhdGUmLCBjb25zdCBjaGFyKik7CiAgICAgdm9pZCBzdG9yZUV4Y2VwdGlvbihKU0M6OkV4ZWNT
dGF0ZSYpOwogICAgIHZvaWQgc3RvcmVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1
ZSk7CiAKQEAgLTczLDYgKzc4LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxS
ZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI+IG1fY29udHJvbGxlcjsKICAgICBKU0M6OlN0cm9uZzxK
U0M6OlVua25vd24+IG1fZXJyb3I7CisgICAgSlNDOjpTdHJvbmc8SlNDOjpKU0Z1bmN0aW9uPiBt
X2Vycm9yRnVuY3Rpb247CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9zb3VyY2U7
CiAgICAgRGVxdWU8SlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPj4gbV9jaHVua1F1ZXVlOwogfTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZTcyMjRmOTgwYjFiYjI5YzJjMGM0OGJkNmE1YWJlNzA0ZWFiZWUzLi4zNzY3NWNh
MTllMjFhOGI1MmRlNzVlMWFiY2UxNTM3YzgyMjliOGU0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTUtMDYtMTIgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNv
bT4gYW5kIFlvdWVubiBGYWJsZXQgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAg
ICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFibGVKU1N0cmVhbSBzaG91bGQgaGFuZGxlIHByb21pc2Vz
IHJldHVybmVkIGJ5IEpTIHNvdXJjZSBzdGFydCBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzkyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgUmViYXNpbmcgZXhwZWN0YXRpb25zLCBhbmQgcmVt
b3ZpbmcgdGltZW91dHMgZm9yIHRlc3RzIHRoYXQgbm8gbG9uZ2VyIHRpbWVvdXQuCisKKyAgICAg
ICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIHN0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3Jl
YWRhYmxlLXN0cmVhbS5odG1sOgorCiAyMDE1LTA2LTExICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgRG8gbm90IGNyYXNoIHdoZW4gdGhlIGRlc2NlbmRhbnQgZnJh
bWUgdHJlZSBpcyBkZXN0cm95ZWQgZHVyaW5nIGxheW91dC4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9y
ZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CmluZGV4IDczZTJiODFjZGY2YjFjOTA5ZTk2OGQ5
ZjhiOTg0MWQ4N2M3ZDE3M2UuLjM3ZmQyNjY1ZTNhYTQ4ZTJkZTVhODU1MWJjMTRhY2JjMzA2M2Zk
NWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0
aW9uL3JlYWRhYmxlLXN0cmVhbS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvc3RyZWFt
cy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dApA
QCAtNSw4ICs1LDggQEAgUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBzaG91bGQgdGhy
b3cgZm9yIG5vbi1mdW5jdGlvbiBzdGFydCBhcmd1bWVudHMKIFBBU1MgUmVhZGFibGVTdHJlYW0g
Y29uc3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgY2FuY2VsIGFyZ3VtZW50IAog
UEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBh
cyBwdWxsIGFyZ3VtZW50IAogUEFTUyBSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0
IGluaXRpYWwgZ2FyYmFnZSBhcyBzdHJhdGVneSBhcmd1bWVudCAKLVRJTUVPVVQgUmVhZGFibGVT
dHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBUZXN0IHRpbWVk
IG91dAotVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1
cm4gYSBwcm9taXNlIGFuZCByZWplY3QgaXQgVGVzdCB0aW1lZCBvdXQKK1BBU1MgUmVhZGFibGVT
dHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSAKK1BBU1MgUmVh
ZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQg
cmVqZWN0IGl0IAogUEFTUyBSZWFkYWJsZVN0cmVhbSBzaG91bGQgYmUgYWJsZSB0byBlbnF1ZXVl
IGRpZmZlcmVudCBvYmplY3RzLiAKIFBBU1MgUmVhZGFibGVTdHJlYW06IGlmIHN0YXJ0IHRocm93
cyBhbiBlcnJvciwgaXQgc2hvdWxkIGJlIHJlLXRocm93biAKIFRJTUVPVVQgUmVhZGFibGVTdHJl
YW06IGlmIHB1bGwgcmVqZWN0cywgaXQgc2hvdWxkIGVycm9yIHRoZSBzdHJlYW0gVGVzdCB0aW1l
ZCBvdXQKQEAgLTIwLDYgKzIwLDYgQEAgUEFTUyBSZWFkYWJsZVN0cmVhbTogZW5xdWV1ZSBzaG91
bGQgdGhyb3cgdGhlIHN0b3JlZCBlcnJvciB3aGVuIHRoZSBzdHJlYW0gaXMgZXIKIEZBSUwgUmVh
ZGFibGVTdHJlYW06IHNob3VsZCBjYWxsIHVuZGVybHlpbmcgc291cmNlIG1ldGhvZHMgYXMgbWV0
aG9kcyByZWxlYXNlTG9jayBpcyBub3QgaW1wbGVtZW50ZWQKIEZBSUwgUmVhZGFibGVTdHJlYW0g
c3RyYXRlZ2llczogdGhlIGRlZmF1bHQgc3RyYXRlZ3kgc2hvdWxkIHJldHVybiBmYWxzZSBmb3Ig
YWxsIGJ1dCB0aGUgZmlyc3QgZW5xdWV1ZSBjYWxsIGFzc2VydF9lcXVhbHM6IGZpcnN0IGVucXVl
dWUgc2hvdWxkIHJldHVybiB0cnVlIGV4cGVjdGVkIChib29sZWFuKSB0cnVlIGJ1dCBnb3QgKHVu
ZGVmaW5lZCkgdW5kZWZpbmVkCiBGQUlMIFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBk
ZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBjb250aW51ZSByZXR1cm5pbmcgdHJ1ZSBmcm9tIGVucXVl
dWUgaWYgdGhlIGNodW5rcyBhcmUgcmVhZCBpbW1lZGlhdGVseSBhc3NlcnRfZXF1YWxzOiBmaXJz
dCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCAoYm9vbGVhbikgdHJ1ZSBidXQg
Z290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAotVElNRU9VVCBSZWFkYWJsZVN0cmVhbSBpbnRlZ3Jh
dGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBwdXNoIHNvdXJjZSBUZXN0IHRpbWVkIG91dAor
UEFTUyBSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJhbmRvbSBw
dXNoIHNvdXJjZSAKIFBBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRp
bmcgYSBzeW5jIHB1bGwgc291cmNlIAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1z
L3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbCBiL0xheW91dFRl
c3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1s
CmluZGV4IDcwZjIzYTc2ZTkzMDMyOGMyMDg2Y2I3N2E2Y2ZiNGY2MTFkYzYwYjIuLjZjMTgwZDQ2
ZTRmNjBhMDVlMDg4OTU5ODM0OGU5MDVkZWMwNWYxYjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVhbS5odG1sCisr
KyBiL0xheW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxl
LXN0cmVhbS5odG1sCkBAIC01Myw3ICs1Myw3IEBAIHRlc3QoZnVuY3Rpb24oKSB7CiAgICAgbmV3
IFJlYWRhYmxlU3RyZWFtKHsgc3RyYXRlZ3k6IDIgfSk7IC8vIENvbnN0cnVjdG9yIHNob3VsZCBu
b3QgdGhyb3cgd2hlbiBzdHJhdGVneSBpcyBub3QgYW4gb2JqZWN0LgogfSwgJ1JlYWRhYmxlU3Ry
ZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIHN0cmF0ZWd5IGFyZ3Vt
ZW50Jyk7CiAKLXZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNo
b3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFy
IHRlc3QxID0gYXN5bmNfdGVzdCgnUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUg
dG8gcmV0dXJuIGEgcHJvbWlzZScpOwogdGVzdDEuc3RlcChmdW5jdGlvbigpCiB7CiAgICAgdmFy
IHJlYWRDYWxsZWQgPSBmYWxzZTsKQEAgLTgyLDcgKzgyLDcgQEAgdGVzdDEuc3RlcChmdW5jdGlv
bigpCiAgICAgfSkpOwogfSk7CiAKLXZhciB0ZXN0MiA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3Ry
ZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UgYW5kIHJlamVjdCBp
dCcsIHsgdGltZW91dDogMTAwIH0pOwordmFyIHRlc3QyID0gYXN5bmNfdGVzdCgnUmVhZGFibGVT
dHJlYW0gc3RhcnQgc2hvdWxkIGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0
IGl0Jyk7CiB0ZXN0Mi5zdGVwKGZ1bmN0aW9uKCkKIHsKICAgICB2YXIgdGhlRXJyb3IgPSBuZXcg
RXJyb3IoJ3JlamVjdGVkIScpOwpAQCAtNjU4LDcgKzY1OCw3IEBAIHRlc3QxNy5zdGVwKGZ1bmN0
aW9uKCkgewogICAgIH0pKS5jYXRjaCh0ZXN0MTcuc3RlcF9mdW5jKGZ1bmN0aW9uKGUpIHsgYXNz
ZXJ0X3VucmVhY2hlZChlKTsgfSApKTsKIH0pOwogCi12YXIgdGVzdDE4ID0gYXN5bmNfdGVzdCgn
UmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBz
b3VyY2UnLCB7IHRpbWVvdXQ6IDUwIH0pOwordmFyIHRlc3QxOCA9IGFzeW5jX3Rlc3QoJ1JlYWRh
YmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5nIGEgcmFuZG9tIHB1c2ggc291cmNl
Jyk7CiB0ZXN0MTguc3RlcChmdW5jdGlvbigpIHsKICAgICB2YXIgcHVsbENoZWNrZWQgPSBmYWxz
ZTsKICAgICB2YXIgcmFuZG9tU291cmNlID0gbmV3IFJhbmRvbVB1c2hTb3VyY2UoOCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>254815</attachid>
            <date>2015-06-12 12:44:43 -0700</date>
            <delta_ts>2015-06-13 02:10:30 -0700</delta_ts>
            <desc>Fixing JSStdFunction</desc>
            <filename>bug-145792-20150612214411.patch</filename>
            <type>text/plain</type>
            <size>19391</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NzA1YmMxZDVhMTY0MjU0MzdiNDQyMWI1ODYwYTFhZjk0YTk4ZTY0Li5jODc3YmNmMGQ5YTM0MjM1
OWYyNGQ1Nzg4YWQzOTRjNGI2MzI4MWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOSBAQAorMjAxNS0wNi0xMiAgWW91ZW5uIEZhYmxldCAgPHlvdWVubi5mYWJsZXRAY3Jm
LmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFibGVKU1N0cmVhbSBzaG91
bGQgaGFuZGxlIHByb21pc2VzIHJldHVybmVkIGJ5IEpTIHNvdXJjZSBzdGFydCBjYWxsYmFjawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ1NzkyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgQWRkZWQgc3VwcG9y
dCBmb3IgSlNGdW5jdGlvbiBpbXBsZW1lbnRlZCBieSBzdGQ6OmZ1bmN0aW9uLgorCisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0TmF0aXZlRXhlY3V0
YWJsZSk6IFJlZmFjdG9yZWQgY29kZSB0byBzaGFyZSBpdCB3aXRoIHRoZSB0d28gSlNGdW5jdGlv
bjo6Y3JlYXRlCisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OnJ1blN0ZEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDogQWRk
ZWQgc3RkOjpmdW5jdGlvbiBiYXNlZCBKU0Z1bmN0aW9uOjpjcmVhdGUgcHJvdG90eXBlLgorICAg
ICAgICAqIHJ1bnRpbWUuSlNQcm9taXNlLmg6CisKIDIwMTUtMDYtMTEgIE1hcmsgTGFtICA8bWFy
ay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbigpIG5l
ZWRzIHRvIGJlIGFibGUgdG8gYWNjZXB0IGEgcmF3IHRocm93biB2YWx1ZSBpbiBhZGRpdGlvbiB0
byBFeGNlcHRpb24gb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5Zjc1ZjBmMWY4YWYxODdlYTkyMGRl
MmFmYTRkNjFkYWU0NTVhNjRiLi4xNzY1Y2FiN2U1ZThjYzdhMGI4ZjVlZWFhZDViMjgzMTJhODdi
YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTUtMDYtMTIgIFhhYmllciBSb2Ry
aWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4gYW5kIFlvdWVubiBGYWJsZXQgPHlv
dWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPgorCisgICAgICAgIFtTdHJlYW1zIEFQSV0gUmVhZGFi
bGVKU1N0cmVhbSBzaG91bGQgaGFuZGxlIHByb21pc2VzIHJldHVybmVkIGJ5IEpTIHNvdXJjZSBz
dGFydCBjYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQ1NzkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAg
ICAgQ292ZXJlZCBieSByZWJhc2VkIHRlc3RzLgorCisgICAgICAgIFdoZW4gY2FsbGluZyBzdGFy
dCBjYWxsYmFjaywgdGhlIHJldHVybmVkIHZhbHVlIGlzIGNoZWNrZWQuCisgICAgICAgIElmIGl0
IGlzIG5vdCBhIHByb21pc2UsIHdlIGRvIGFzIGlmIGl0IGlzIGEgcmVzb2x2ZWQgcHJvbWlzZS4K
KyAgICAgICAgSWYgaXQgaXMgYSBwcm9taXNlLCB3ZSBjYWxsIGl0cyB0aGVuKCkgbWV0aG9kIHdp
dGggdHdvIHJlc29sdmUvcmVqZWN0IEpTIGZ1bmN0aW9ucy4KKworICAgICAgICAqIE1vZHVsZXMv
c3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvUmVhZGFi
bGVKU1N0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjppbnZv
a2UpOiBSZXR1cm5zIGEgSlNQcm9taXNlKiBpZiBhbnkgaXMgcmV0dXJuZWQgYnkgdGhlIEpTIHNv
dXJjZSBjYWxsYmFjay4KKyAgICAgICAgKFdlYkNvcmU6OnRoZW5Qcm9taXNlKTogVXRpbGl0eSBt
ZXRob2QgdG8gY2FsbCB0aGUgcHJvbWlzZS4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVN0YXJ0
UmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24pOiBUaGUgcHJvbWlzZSByZXNvbHZlIGNhbGxiYWNrLgor
ICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVKU1N0cmVhbTo6ZG9TdGFydCk6IENhbGxzIHRoZW5Q
cm9taXNlIGlmIGEgSlNQcm9taXNlKiBpcyByZXR1cm5lZCBieSBpbnZva2UuCisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZUpTU3RyZWFtOjpSZWFkYWJsZUpTU3RyZWFtKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9SZWFkYWJsZUpTU3RyZWFtLmg6CisKIDIwMTUtMDYtMTEgIE1hcmsgTGFtICA8
bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbigp
IG5lZWRzIHRvIGJlIGFibGUgdG8gYWNjZXB0IGEgcmF3IHRocm93biB2YWx1ZSBpbiBhZGRpdGlv
biB0byBFeGNlcHRpb24gb2JqZWN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5jcHAKaW5kZXggNTI2Y2EwMzFkZGJjMGUyOTNlMzY0N2ZmZjJhMzhiOTYxYWY2
MjQwNi4uZGI2NTMyOTc1ZjkwNDkzZjA2OTAwNTg2NGM2ZDhhNzI0MzI0NTc4YyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKQEAgLTQsNiArNCw3IEBA
CiAgKiAgQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICBDb3B5cmlnaHQg
KEMpIDIwMDcgQ2FtZXJvbiBad2FyaWNoIChjd3p3YXJpY2hAdXdhdGVybG9vLmNhKQogICogIENv
cHlyaWdodCAoQykgMjAwNyBNYWtzIE9ybG92aWNoCisgKiAgQ29weXJpZ2h0IChDKSAyMDE1IENh
bm9uIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC02
NiwyNSArNjcsNTMgQEAgSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKgogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKLUpTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0
aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQorc3RhdGljIGlubGluZSBOYXRpdmVFeGVjdXRhYmxlKiBn
ZXROYXRpdmVFeGVjdXRhYmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24gbmF0aXZlRnVuY3Rpb24s
IEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9yKQog
ewotICAgIE5hdGl2ZUV4ZWN1dGFibGUqIGV4ZWN1dGFibGU7CiAjaWYgIUVOQUJMRShKSVQpCiAg
ICAgVU5VU0VEX1BBUkFNKGludHJpbnNpYyk7CiAjZWxzZQogICAgIGlmIChpbnRyaW5zaWMgIT0g
Tm9JbnRyaW5zaWMgJiYgdm0uY2FuVXNlSklUKCkpIHsKICAgICAgICAgQVNTRVJUKG5hdGl2ZUNv
bnN0cnVjdG9yID09IGNhbGxIb3N0RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKTsKLSAgICAgICAgZXhl
Y3V0YWJsZSA9IHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgaW50cmluc2ljKTsK
LSAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIHZtLmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5j
dGlvbiwgaW50cmluc2ljKTsKKyAgICB9CiAjZW5kaWYKLSAgICAgICAgZXhlY3V0YWJsZSA9IHZt
LmdldEhvc3RGdW5jdGlvbihuYXRpdmVGdW5jdGlvbiwgbmF0aXZlQ29uc3RydWN0b3IpOworICAg
IHJldHVybiB2bS5nZXRIb3N0RnVuY3Rpb24obmF0aXZlRnVuY3Rpb24sIG5hdGl2ZUNvbnN0cnVj
dG9yKTsKK30KIAorSlNGdW5jdGlvbiogSlNGdW5jdGlvbjo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBO
YXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgTmF0aXZl
RnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCit7CisgICAgTmF0aXZlRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IGdldE5hdGl2ZUV4ZWN1dGFibGUodm0sIG5hdGl2ZUZ1bmN0aW9uLCBpbnRyaW5z
aWMsIG5hdGl2ZUNvbnN0cnVjdG9yKTsKICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTRnVuY3Rpb24+KHZtLmhlYXApKSBKU0Z1bmN0aW9uKHZt
LCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSk7CiAgICAg
Ly8gQ2FuJ3QgZG8gdGhpcyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVu
Y3Rpb24gbWlnaHQgZG8gYSBHQyBhbGxvY2F0aW9uLgogICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVh
dGlvbih2bSwgZXhlY3V0YWJsZSwgbGVuZ3RoLCBuYW1lKTsKICAgICByZXR1cm4gZnVuY3Rpb247
CiB9CiAKK2NsYXNzIEpTU3RkRnVuY3Rpb24gOiBwdWJsaWMgSlNGdW5jdGlvbiB7CitwdWJsaWM6
CisgICAgSlNTdGRGdW5jdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBvYmplY3QsIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBOYXRpdmVTdGRGdW5jdGlvbiYmIGZ1bmN0aW9uKQorICAgICAgICA6
IEpTRnVuY3Rpb24odm0sIG9iamVjdCwgc3RydWN0dXJlKQorICAgICAgICAsIHN0ZEZ1bmN0aW9u
KFdURjo6bW92ZShmdW5jdGlvbikpIHsgfQorCisgICAgTmF0aXZlU3RkRnVuY3Rpb24gc3RkRnVu
Y3Rpb247Cit9OworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBydW5TdGRG
dW5jdGlvbihFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIEpTU3RkRnVuY3Rpb24qIGpzRnVuY3Rp
b24gPSBqc0Nhc3Q8SlNTdGRGdW5jdGlvbio+KHN0YXRlLT5jYWxsZWUoKSk7CisgICAgQVNTRVJU
KGpzRnVuY3Rpb24pOworICAgIHJldHVybiBqc0Z1bmN0aW9uLT5zdGRGdW5jdGlvbihzdGF0ZSk7
Cit9CisKK0pTRnVuY3Rpb24qIEpTRnVuY3Rpb246OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZl
U3RkRnVuY3Rpb24mJiBuYXRpdmVTdGRGdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnNpYywgTmF0
aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IpCit7CisgICAgTmF0aXZlRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGdldE5hdGl2ZUV4ZWN1dGFibGUodm0sIHJ1blN0ZEZ1bmN0aW9uLCBpbnRy
aW5zaWMsIG5hdGl2ZUNvbnN0cnVjdG9yKTsKKyAgICBKU1N0ZEZ1bmN0aW9uKiBmdW5jdGlvbiA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RkRnVuY3Rpb24+KHZtLmhlYXApKSBKU1N0
ZEZ1bmN0aW9uKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1
cmUoKSwgV1RGOjptb3ZlKG5hdGl2ZVN0ZEZ1bmN0aW9uKSk7CisgICAgLy8gQ2FuJ3QgZG8gdGhp
cyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYmVjYXVzZSBnZXRIb3N0RnVuY3Rpb24gbWlnaHQgZG8g
YSBHQyBhbGxvY2F0aW9uLgorICAgIGZ1bmN0aW9uLT5maW5pc2hDcmVhdGlvbih2bSwgZXhlY3V0
YWJsZSwgbGVuZ3RoLCBuYW1lKTsKKyAgICByZXR1cm4gZnVuY3Rpb247Cit9CisKIEpTRnVuY3Rp
b246OkpTRnVuY3Rpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKICAgICA6IEJhc2Uodm0sIGdsb2JhbE9iamVjdCwgc3RydWN0dXJl
KQogICAgICwgbV9leGVjdXRhYmxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAppbmRleCA4NmRmZjEyZjhmYTQ3YTMxYTMzYTY4OTQwODdjZTVjMTE1Y2U1MmI2
Li5iNmJjYzBkNWM2NjA1YzQzOTU5NWQyZGVhOTlhYjMxMjYwOGVjZjhkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCkBAIC00NSw2ICs0NSw4IEBAIGNsYXNz
IFNwZWN1bGF0aXZlSklUOwogY2xhc3MgSklUQ29tcGlsZXI7CiB9CiAKK3R5cGVkZWYgc3RkOjpm
dW5jdGlvbjxFbmNvZGVkSlNWYWx1ZSAoRXhlY1N0YXRlKik+IE5hdGl2ZVN0ZEZ1bmN0aW9uOwor
CiBKU19FWFBPUlRfUFJJVkFURSBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxIb3N0
RnVuY3Rpb25Bc0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSopOwogCiBKU19FWFBPUlRfUFJJVkFURSBT
dHJpbmcgZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1lKENhbGxGcmFtZSosIEpTT2JqZWN0Kik7CkBA
IC02OCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgSlNG
dW5jdGlvbiogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBpbnQgbGVuZ3RoLCBjb25zdCBT
dHJpbmcmIG5hbWUsIE5hdGl2ZUZ1bmN0aW9uLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0
aXZlRnVuY3Rpb24gbmF0aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1
Y3Rvcik7CiAgICAgCiAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZVdpdGhJbnZhbGlkYXRl
ZFJlYWxsb2NhdGlvbldhdGNocG9pbnQoVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3Bl
Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgaW50IGxlbmd0aCwgY29uc3QgU3RyaW5nJiBuYW1lLCBOYXRpdmVT
dGRGdW5jdGlvbiYmLCBJbnRyaW5zaWMgPSBOb0ludHJpbnNpYywgTmF0aXZlRnVuY3Rpb24gbmF0
aXZlQ29uc3RydWN0b3IgPSBjYWxsSG9zdEZ1bmN0aW9uQXNDb25zdHJ1Y3Rvcik7CiAKICAgICBz
dGF0aWMgSlNGdW5jdGlvbiogY3JlYXRlKFZNJiwgRnVuY3Rpb25FeGVjdXRhYmxlKiwgSlNTY29w
ZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb21p
c2UuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvbWlzZS5oCmluZGV4IGE4
ZGYxODQ0YjQ2ODRlYjc4ZjViNzIyMTY3NzJmOGQzMTRmMmRjMTguLmIyYWJhMmMwNTAyMzliNGM1
Y2JmMTljNWQxMTU3ODBmYTI2OGRjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvbWlzZS5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSlNQcm9t
aXNlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTUHJvbWlzZUNvbnN0cnVjdG9yKik7
CiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKIAotICAgIERFQ0xBUkVfSU5GTzsKKyAgICBERUNMQVJFX0VYUE9SVF9J
TkZPOwogCiAgICAgZW51bSBjbGFzcyBTdGF0dXMgewogICAgICAgICBVbnJlc29sdmVkLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5jcHAKaW5k
ZXggOWE1NWVkODk0NjM4M2VlOWY5MGU5ZDg0YWNkZGYwYWJjYjU4ZDAyYS4uMjU4YWM3NGQ3MGRk
OWNmYjhmNjkxZjdhNTNiNDk0YjNhYzAyOTI5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uY3BwCkBAIC0zMiw3ICszMiw2IEBACiAKICNp
ZiBFTkFCTEUoU1RSRUFNU19BUEkpCiAKLSNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIlJlYWRhYmxlU3RyZWFtUmVhZGVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKaW5kZXgg
OTg4NmQ1NDhjNGJkOGRkZDg1ZmE0NzYzYzk4N2IyZTNjNWMyNjJmMC4uNzBjZTNhMWM3YjFhMjAz
NjgyM2MyYTZkY2M1MmEzOTBiNmM0ZTg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVKU1N0cmVhbS5jcHAKQEAgLTM2LDExICszNiwxMSBAQAogI2luY2x1ZGUg
IkpTRE9NUHJvbWlzZS5oIgogI2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW0uaCIKICNpbmNsdWRl
ICJKU1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVk
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgPHJ1bnRp
bWUvRXJyb3IuaD4KICNpbmNsdWRlIDxydW50aW1lL0V4Y2VwdGlvbi5oPgogI2luY2x1ZGUgPHJ1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KKyNpbmNsdWRlIDxydW50aW1lL0pTUHJvbWlzZS5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNTdHJpbmcuaD4KICNpbmNsdWRlIDxydW50aW1lL1N0cnVj
dHVyZUlubGluZXMuaD4KIApAQCAtNjAsMjEgKzYwLDM4IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1
ZSBjYWxsRnVuY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIGpzRnVuY3Rpb24sIEpTVmFs
dWUKICAgICByZXR1cm4gY2FsbCgmZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRh
LCB0aGlzVmFsdWUsIGFyZ3VtZW50cyk7CiB9CiAKLUpTVmFsdWUgUmVhZGFibGVKU1N0cmVhbTo6
aW52b2tlKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgY2hhciogcHJvcGVydHlOYW1lKQorSlNQcm9t
aXNlKiBSZWFkYWJsZUpTU3RyZWFtOjppbnZva2UoRXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hh
ciogcHJvcGVydHlOYW1lKQogewotICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBnZXRQcm9wZXJ0eUZy
b21PYmplY3QoZXhlYywgbV9zb3VyY2UuZ2V0KCksIHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKGV4
ZWMuaGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIEpT
VmFsdWUgZnVuY3Rpb24gPSBnZXRQcm9wZXJ0eUZyb21PYmplY3Qoc3RhdGUsIG1fc291cmNlLmdl
dCgpLCBwcm9wZXJ0eU5hbWUpOworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoIWZ1bmN0aW9uLmlzRnVuY3Rpb24oKSkgewog
ICAgICAgICBpZiAoIWZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICB0aHJvd1ZN
RXJyb3IoJmV4ZWMsIGNyZWF0ZVR5cGVFcnJvcigmZXhlYywgQVNDSUlMaXRlcmFsKCJSZWFkYWJs
ZVN0cmVhbSB0cnlpbmcgdG8gY2FsbCBhIHByb3BlcnR5IHRoYXQgaXMgbm90IGNhbGxhYmxlIikp
KTsKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICB0aHJvd1ZNRXJy
b3IoJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxl
U3RyZWFtIHRyeWluZyB0byBjYWxsIGEgcHJvcGVydHkgdGhhdCBpcyBub3QgY2FsbGFibGUiKSkp
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1
ZmZlciBhcmd1bWVudHM7Ci0gICAgYXJndW1lbnRzLmFwcGVuZChqc0NvbnRyb2xsZXIoZXhlYywg
Z2xvYmFsT2JqZWN0KCkpKTsKLSAgICByZXR1cm4gY2FsbEZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9u
LCBtX3NvdXJjZS5nZXQoKSwgYXJndW1lbnRzKTsKKyAgICBhcmd1bWVudHMuYXBwZW5kKGpzQ29u
dHJvbGxlcihzdGF0ZSwgZ2xvYmFsT2JqZWN0KCkpKTsKKworICAgIEpTUHJvbWlzZSogcHJvbWlz
ZSA9IGpzRHluYW1pY0Nhc3Q8SlNQcm9taXNlKj4oY2FsbEZ1bmN0aW9uKHN0YXRlLCBmdW5jdGlv
biwgbV9zb3VyY2UuZ2V0KCksIGFyZ3VtZW50cykpOworCisgICAgQVNTRVJUKCEocHJvbWlzZSAm
JiBzdGF0ZS5oYWRFeGNlcHRpb24oKSkpOworICAgIHJldHVybiBwcm9taXNlOworfQorCitzdGF0
aWMgdm9pZCB0aGVuUHJvbWlzZShFeGVjU3RhdGUmIHN0YXRlLCBKU1Byb21pc2UqIGRlZmVycmVk
UHJvbWlzZSwgSlNWYWx1ZSBmdWxsZmlsRnVuY3Rpb24sIEpTVmFsdWUgcmVqZWN0RnVuY3Rpb24p
Cit7CisgICAgSlNWYWx1ZSB0aGVuVmFsdWUgPSBkZWZlcnJlZFByb21pc2UtPmdldCgmc3RhdGUs
IHN0YXRlLnZtKCkucHJvcGVydHlOYW1lcy0+dGhlbik7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2Vw
dGlvbigpKQorICAgICAgICByZXR1cm47CisKKyAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmd1
bWVudHM7CisgICAgYXJndW1lbnRzLmFwcGVuZChmdWxsZmlsRnVuY3Rpb24pOworICAgIGFyZ3Vt
ZW50cy5hcHBlbmQocmVqZWN0RnVuY3Rpb24pOworCisgICAgY2FsbEZ1bmN0aW9uKHN0YXRlLCB0
aGVuVmFsdWUsIGRlZmVycmVkUHJvbWlzZSwgYXJndW1lbnRzKTsKIH0KIAogSlNET01HbG9iYWxP
YmplY3QqIFJlYWRhYmxlSlNTdHJlYW06Omdsb2JhbE9iamVjdCgpCkBAIC04Miw3ICs5OSwxNiBA
QCBKU0RPTUdsb2JhbE9iamVjdCogUmVhZGFibGVKU1N0cmVhbTo6Z2xvYmFsT2JqZWN0KCkKICAg
ICByZXR1cm4ganNEeW5hbWljQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KG1fc291cmNlLT5nbG9i
YWxPYmplY3QoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3luYyhS
ZWFkYWJsZVN0cmVhbSYgcmVhZGFibGVTdHJlYW0pCitzdGF0aWMgaW5saW5lIEpTRnVuY3Rpb24q
IGNyZWF0ZVN0YXJ0UmVzdWx0RnVsZmlsbGVkRnVuY3Rpb24oRXhlY1N0YXRlJiBzdGF0ZSwgUmVh
ZGFibGVTdHJlYW0mIHJlYWRhYmxlU3RyZWFtKQoreworICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVh
bT4gc3RyZWFtID0gJnJlYWRhYmxlU3RyZWFtOworICAgIHJldHVybiBKU0Z1bmN0aW9uOjpjcmVh
dGUoc3RhdGUudm0oKSwgc3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLCAxLCBTdHJpbmco
KSwgW3N0cmVhbV0oRXhlY1N0YXRlKikgeworICAgICAgICBzdHJlYW0tPnN0YXJ0KCk7CisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgfSk7Cit9CisK
K3N0YXRpYyBpbmxpbmUgdm9pZCBzdGFydFJlYWRhYmxlU3RyZWFtQXN5bmMoUmVhZGFibGVTdHJl
YW0mIHJlYWRhYmxlU3RyZWFtKQogewogICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gc3RyZWFt
ID0gJnJlYWRhYmxlU3RyZWFtOwogICAgIHN0cmVhbS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5wb3N0VGFzayhbc3RyZWFtXShTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewpAQCAtOTQsMTMg
KzEyMCwxNyBAQCB2b2lkIFJlYWRhYmxlSlNTdHJlYW06OmRvU3RhcnQoRXhlY1N0YXRlJiBleGVj
KQogewogICAgIEpTTG9ja0hvbGRlciBsb2NrKCZleGVjKTsKIAotICAgIGludm9rZShleGVjLCAi
c3RhcnQiKTsKKyAgICBKU1Byb21pc2UqIHByb21pc2UgPSBpbnZva2UoZXhlYywgInN0YXJ0Iik7
CiAKICAgICBpZiAoZXhlYy5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Ly8gRklYTUU6IEltcGxlbWVudCBoYW5kbGluZyBwcm9taXNlIGFzIHJlc3VsdCBvZiBjYWxsaW5n
IHN0YXJ0IGZ1bmN0aW9uLgotICAgIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3luYygqdGhpcyk7Cisg
ICAgaWYgKCFwcm9taXNlKSB7CisgICAgICAgIHN0YXJ0UmVhZGFibGVTdHJlYW1Bc3luYygqdGhp
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0aGVuUHJvbWlzZShleGVjLCBwcm9t
aXNlLCBjcmVhdGVTdGFydFJlc3VsdEZ1bGZpbGxlZEZ1bmN0aW9uKGV4ZWMsICp0aGlzKSwgbV9l
cnJvckZ1bmN0aW9uLmdldCgpKTsKIH0KIAogdm9pZCBSZWFkYWJsZUpTU3RyZWFtOjpkb1B1bGwo
KQpAQCAtMTM5LDEwICsxNjksMTYgQEAgUmVmUHRyPFJlYWRhYmxlSlNTdHJlYW0+IFJlYWRhYmxl
SlNTdHJlYW06OmNyZWF0ZShFeGVjU3RhdGUmIGV4ZWMsIFNjcmlwdEV4ZWN1dGkKICAgICByZXR1
cm4gcmVhZGFibGVTdHJlYW07CiB9CiAKLVJlYWRhYmxlSlNTdHJlYW06OlJlYWRhYmxlSlNTdHJl
YW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgRXhlY1N0
YXRlJiBleGVjLCBKU09iamVjdCogc291cmNlKQorUmVhZGFibGVKU1N0cmVhbTo6UmVhZGFibGVK
U1N0cmVhbShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBF
eGVjU3RhdGUmIHN0YXRlLCBKU09iamVjdCogc291cmNlKQogICAgIDogUmVhZGFibGVTdHJlYW0o
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKIHsKLSAgICBtX3NvdXJjZS5zZXQoZXhlYy52bSgpLCBz
b3VyY2UpOworICAgIG1fc291cmNlLnNldChzdGF0ZS52bSgpLCBzb3VyY2UpOworICAgIC8vIFdl
IGRvIG5vdCB0YWtlIGEgUmVmIHRvIHRoZSBzdHJlYW0gYXMgdGhpcyB3b3VsZCBjYXVzZSBhIFJl
ZiBjeWNsZS4KKyAgICAvLyBUaGUgcmVzb2x1dGlvbiBjYWxsYmFjayB1c2VkIGpvaW50bHkgd2l0
aCBtX2Vycm9yRnVuY3Rpb24gYXMgcHJvbWlzZSBjYWxsYmFja3Mgc2hvdWxkIHByb3RlY3QgdGhl
IHN0cmVhbSBpbnN0ZWFkLgorICAgIG1fZXJyb3JGdW5jdGlvbi5zZXQoc3RhdGUudm0oKSwgSlNG
dW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZtKCksIHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3Qo
KSwgMSwgU3RyaW5nKCksIFt0aGlzXShFeGVjU3RhdGUqIHN0YXRlKSB7CisgICAgICAgIHN0b3Jl
RXJyb3IoKnN0YXRlKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICB9KSk7CiB9CiAKIEpTVmFsdWUgUmVhZGFibGVKU1N0cmVhbTo6anNDb250cm9s
bGVyKEV4ZWNTdGF0ZSYgZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlSlNTdHJlYW0uaAppbmRleCBkNGZm
MjhlMDc0NTY2NzNjZWQzMTc3NzI4NjBiZTVjMmJjNGY4Mjc3Li4wYTliNDM1MTcxMzAxYWJhNWY0
OWY5YmQzMzk0NTk2YzYzMTM4YzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZUpTU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
UmVhZGFibGVKU1N0cmVhbS5oCkBAIC00MCw2ICs0MCwxMSBAQAogI2luY2x1ZGUgPHd0Zi9EZXF1
ZS5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBKU0Z1
bmN0aW9uOworY2xhc3MgSlNQcm9taXNlOworfQorICAgIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKQEAgLTYxLDcgKzY2LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZG9TdGFydChKU0M6OkV4ZWNTdGF0ZSYpOwogCi0gICAgSlNDOjpKU1ZhbHVlIGlu
dm9rZShKU0M6OkV4ZWNTdGF0ZSYsIGNvbnN0IGNoYXIqKTsKKyAgICBKU0M6OkpTUHJvbWlzZSog
aW52b2tlKEpTQzo6RXhlY1N0YXRlJiwgY29uc3QgY2hhciopOwogICAgIHZvaWQgc3RvcmVFeGNl
cHRpb24oSlNDOjpFeGVjU3RhdGUmKTsKICAgICB2b2lkIHN0b3JlRXJyb3IoSlNDOjpFeGVjU3Rh
dGUmLCBKU0M6OkpTVmFsdWUpOwogCkBAIC03Myw2ICs3OCw3IEBAIHByaXZhdGU6CiAKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UmVhZGFibGVTdHJlYW1Db250cm9sbGVyPiBtX2NvbnRyb2xsZXI7CiAg
ICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX2Vycm9yOworICAgIEpTQzo6U3Ryb25nPEpT
Qzo6SlNGdW5jdGlvbj4gbV9lcnJvckZ1bmN0aW9uOwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNP
YmplY3Q+IG1fc291cmNlOwogICAgIERlcXVlPEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4+IG1f
Y2h1bmtRdWV1ZTsKIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWU3MjI0Zjk4MGIxYmIyOWMyYzBjNDhiZDZhNWFiZTcw
NGVhYmVlMy4uMzc2NzVjYTE5ZTIxYThiNTJkZTc1ZTFhYmNlMTUzN2M4MjI5YjhlNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE1IEBACisyMDE1LTA2LTEyICBYYWJpZXIgUm9kcmlndWV6IENhbHZhciAgPGNh
bHZhcmlzQGlnYWxpYS5jb20+IGFuZCBZb3Vlbm4gRmFibGV0IDx5b3Vlbm4uZmFibGV0QGNyZi5j
YW5vbi5mcj4KKworICAgICAgICBbU3RyZWFtcyBBUEldIFJlYWRhYmxlSlNTdHJlYW0gc2hvdWxk
IGhhbmRsZSBwcm9taXNlcyByZXR1cm5lZCBieSBKUyBzb3VyY2Ugc3RhcnQgY2FsbGJhY2sKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NTc5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlYmFzaW5nIGV4cGVj
dGF0aW9ucywgYW5kIHJlbW92aW5nIHRpbWVvdXRzIGZvciB0ZXN0cyB0aGF0IG5vIGxvbmdlciB0
aW1lb3V0LgorCisgICAgICAgICogc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVh
ZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBzdHJlYW1zL3JlZmVyZW5jZS1p
bXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbDoKKwogMjAxNS0wNi0xMSAgWmFsYW4g
QnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIERvIG5vdCBjcmFzaCB3aGVuIHRo
ZSBkZXNjZW5kYW50IGZyYW1lIHRyZWUgaXMgZGVzdHJveWVkIGR1cmluZyBsYXlvdXQuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2Ut
aW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFtLWV4cGVjdGVkLnR4dAppbmRleCA3M2UyYjgx
Y2RmNmIxYzkwOWU5NjhkOWY4Yjk4NDFkODdjN2QxNzNlLi4zN2ZkMjY2NWUzYWE0OGUyZGU1YTg1
NTFiYzE0YWNiYzMwNjNmZDVjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVy
ZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0tZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL3N0cmVhbXMvcmVmZXJlbmNlLWltcGxlbWVudGF0aW9uL3JlYWRhYmxlLXN0cmVh
bS1leHBlY3RlZC50eHQKQEAgLTUsOCArNSw4IEBAIFBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3Ry
dWN0b3Igc2hvdWxkIHRocm93IGZvciBub24tZnVuY3Rpb24gc3RhcnQgYXJndW1lbnRzCiBQQVNT
IFJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIGNhbiBnZXQgaW5pdGlhbCBnYXJiYWdlIGFzIGNh
bmNlbCBhcmd1bWVudCAKIFBBU1MgUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgY2FuIGdldCBp
bml0aWFsIGdhcmJhZ2UgYXMgcHVsbCBhcmd1bWVudCAKIFBBU1MgUmVhZGFibGVTdHJlYW0gY29u
c3RydWN0b3IgY2FuIGdldCBpbml0aWFsIGdhcmJhZ2UgYXMgc3RyYXRlZ3kgYXJndW1lbnQgCi1U
SU1FT1VUIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHBy
b21pc2UgVGVzdCB0aW1lZCBvdXQKLVRJTUVPVVQgUmVhZGFibGVTdHJlYW0gc3RhcnQgc2hvdWxk
IGJlIGFibGUgdG8gcmV0dXJuIGEgcHJvbWlzZSBhbmQgcmVqZWN0IGl0IFRlc3QgdGltZWQgb3V0
CitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHBy
b21pc2UgCitQQVNTIFJlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVy
biBhIHByb21pc2UgYW5kIHJlamVjdCBpdCAKIFBBU1MgUmVhZGFibGVTdHJlYW0gc2hvdWxkIGJl
IGFibGUgdG8gZW5xdWV1ZSBkaWZmZXJlbnQgb2JqZWN0cy4gCiBQQVNTIFJlYWRhYmxlU3RyZWFt
OiBpZiBzdGFydCB0aHJvd3MgYW4gZXJyb3IsIGl0IHNob3VsZCBiZSByZS10aHJvd24gCiBUSU1F
T1VUIFJlYWRhYmxlU3RyZWFtOiBpZiBwdWxsIHJlamVjdHMsIGl0IHNob3VsZCBlcnJvciB0aGUg
c3RyZWFtIFRlc3QgdGltZWQgb3V0CkBAIC0yMCw2ICsyMCw2IEBAIFBBU1MgUmVhZGFibGVTdHJl
YW06IGVucXVldWUgc2hvdWxkIHRocm93IHRoZSBzdG9yZWQgZXJyb3Igd2hlbiB0aGUgc3RyZWFt
IGlzIGVyCiBGQUlMIFJlYWRhYmxlU3RyZWFtOiBzaG91bGQgY2FsbCB1bmRlcmx5aW5nIHNvdXJj
ZSBtZXRob2RzIGFzIG1ldGhvZHMgcmVsZWFzZUxvY2sgaXMgbm90IGltcGxlbWVudGVkCiBGQUlM
IFJlYWRhYmxlU3RyZWFtIHN0cmF0ZWdpZXM6IHRoZSBkZWZhdWx0IHN0cmF0ZWd5IHNob3VsZCBy
ZXR1cm4gZmFsc2UgZm9yIGFsbCBidXQgdGhlIGZpcnN0IGVucXVldWUgY2FsbCBhc3NlcnRfZXF1
YWxzOiBmaXJzdCBlbnF1ZXVlIHNob3VsZCByZXR1cm4gdHJ1ZSBleHBlY3RlZCAoYm9vbGVhbikg
dHJ1ZSBidXQgZ290ICh1bmRlZmluZWQpIHVuZGVmaW5lZAogRkFJTCBSZWFkYWJsZVN0cmVhbSBz
dHJhdGVnaWVzOiB0aGUgZGVmYXVsdCBzdHJhdGVneSBzaG91bGQgY29udGludWUgcmV0dXJuaW5n
IHRydWUgZnJvbSBlbnF1ZXVlIGlmIHRoZSBjaHVua3MgYXJlIHJlYWQgaW1tZWRpYXRlbHkgYXNz
ZXJ0X2VxdWFsczogZmlyc3QgZW5xdWV1ZSBzaG91bGQgcmV0dXJuIHRydWUgZXhwZWN0ZWQgKGJv
b2xlYW4pIHRydWUgYnV0IGdvdCAodW5kZWZpbmVkKSB1bmRlZmluZWQKLVRJTUVPVVQgUmVhZGFi
bGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRhcHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2Ug
VGVzdCB0aW1lZCBvdXQKK1BBU1MgUmVhZGFibGVTdHJlYW0gaW50ZWdyYXRpb24gdGVzdDogYWRh
cHRpbmcgYSByYW5kb20gcHVzaCBzb3VyY2UgCiBQQVNTIFJlYWRhYmxlU3RyZWFtIGludGVncmF0
aW9uIHRlc3Q6IGFkYXB0aW5nIGEgc3luYyBwdWxsIHNvdXJjZSAKIApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RyZWFtcy9yZWZlcmVuY2UtaW1wbGVtZW50YXRpb24vcmVhZGFibGUtc3RyZWFt
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFk
YWJsZS1zdHJlYW0uaHRtbAppbmRleCA3MGYyM2E3NmU5MzAzMjhjMjA4NmNiNzdhNmNmYjRmNjEx
ZGM2MGIyLi42YzE4MGQ0NmU0ZjYwYTA1ZTA4ODk1OTgzNDhlOTA1ZGVjMDVmMWI2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1lbnRhdGlvbi9yZWFkYWJs
ZS1zdHJlYW0uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9zdHJlYW1zL3JlZmVyZW5jZS1pbXBsZW1l
bnRhdGlvbi9yZWFkYWJsZS1zdHJlYW0uaHRtbApAQCAtNTMsNyArNTMsNyBAQCB0ZXN0KGZ1bmN0
aW9uKCkgewogICAgIG5ldyBSZWFkYWJsZVN0cmVhbSh7IHN0cmF0ZWd5OiAyIH0pOyAvLyBDb25z
dHJ1Y3RvciBzaG91bGQgbm90IHRocm93IHdoZW4gc3RyYXRlZ3kgaXMgbm90IGFuIG9iamVjdC4K
IH0sICdSZWFkYWJsZVN0cmVhbSBjb25zdHJ1Y3RvciBjYW4gZ2V0IGluaXRpYWwgZ2FyYmFnZSBh
cyBzdHJhdGVneSBhcmd1bWVudCcpOwogCi12YXIgdGVzdDEgPSBhc3luY190ZXN0KCdSZWFkYWJs
ZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9taXNlJywgeyB0aW1l
b3V0OiA1MCB9KTsKK3ZhciB0ZXN0MSA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0
IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHByb21pc2UnKTsKIHRlc3QxLnN0ZXAoZnVuY3Rp
b24oKQogewogICAgIHZhciByZWFkQ2FsbGVkID0gZmFsc2U7CkBAIC04Miw3ICs4Miw3IEBAIHRl
c3QxLnN0ZXAoZnVuY3Rpb24oKQogICAgIH0pKTsKIH0pOwogCi12YXIgdGVzdDIgPSBhc3luY190
ZXN0KCdSZWFkYWJsZVN0cmVhbSBzdGFydCBzaG91bGQgYmUgYWJsZSB0byByZXR1cm4gYSBwcm9t
aXNlIGFuZCByZWplY3QgaXQnLCB7IHRpbWVvdXQ6IDEwMCB9KTsKK3ZhciB0ZXN0MiA9IGFzeW5j
X3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIHN0YXJ0IHNob3VsZCBiZSBhYmxlIHRvIHJldHVybiBhIHBy
b21pc2UgYW5kIHJlamVjdCBpdCcpOwogdGVzdDIuc3RlcChmdW5jdGlvbigpCiB7CiAgICAgdmFy
IHRoZUVycm9yID0gbmV3IEVycm9yKCdyZWplY3RlZCEnKTsKQEAgLTY1OCw3ICs2NTgsNyBAQCB0
ZXN0MTcuc3RlcChmdW5jdGlvbigpIHsKICAgICB9KSkuY2F0Y2godGVzdDE3LnN0ZXBfZnVuYyhm
dW5jdGlvbihlKSB7IGFzc2VydF91bnJlYWNoZWQoZSk7IH0gKSk7CiB9KTsKIAotdmFyIHRlc3Qx
OCA9IGFzeW5jX3Rlc3QoJ1JlYWRhYmxlU3RyZWFtIGludGVncmF0aW9uIHRlc3Q6IGFkYXB0aW5n
IGEgcmFuZG9tIHB1c2ggc291cmNlJywgeyB0aW1lb3V0OiA1MCB9KTsKK3ZhciB0ZXN0MTggPSBh
c3luY190ZXN0KCdSZWFkYWJsZVN0cmVhbSBpbnRlZ3JhdGlvbiB0ZXN0OiBhZGFwdGluZyBhIHJh
bmRvbSBwdXNoIHNvdXJjZScpOwogdGVzdDE4LnN0ZXAoZnVuY3Rpb24oKSB7CiAgICAgdmFyIHB1
bGxDaGVja2VkID0gZmFsc2U7CiAgICAgdmFyIHJhbmRvbVNvdXJjZSA9IG5ldyBSYW5kb21QdXNo
U291cmNlKDgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>