<?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>91406</bug_id>
          
          <creation_ts>2012-07-16 11:14:08 -0700</creation_ts>
          <short_desc>MutationCallback should be a WebIDL &apos;callback&apos;, not a [Callback] interface</short_desc>
          <delta_ts>2013-03-11 12:18:18 -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>DOM</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>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>68729</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>abarth</cc>
    
    <cc>buildbot</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>esprehn</cc>
    
    <cc>ggaren</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>philn</cc>
    
    <cc>rafaelw</cc>
    
    <cc>rego+ews</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>syoichi</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>670484</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-07-16 11:14:08 -0700</bug_when>
    <thetext>Per the DOM4 spec, http://www.w3.org/TR/dom/#mutationcallback, MutationCallback should be a &apos;callback&apos;. The main differences between a callback and a [Callback] interface: It must be a function; an object with a &apos;handleEvent&apos; property that&apos;s a function is not acceptable (and should throw a TypeError). See http://www.w3.org/TR/WebIDL/#es-callback-function.

This form of callback is not currently supported by CodeGenerator.pm, but it seems like it would be a good thing to add.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849524</commentid>
    <comment_count>1</comment_count>
      <attachid>191872</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-03-06 17:27:20 -0800</bug_when>
    <thetext>Created attachment 191872
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849541</commentid>
    <comment_count>2</comment_count>
      <attachid>191872</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-06 17:43:15 -0800</bug_when>
    <thetext>Comment on attachment 191872
WIP

Attachment 191872 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17059101</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849544</commentid>
    <comment_count>3</comment_count>
      <attachid>191872</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-06 17:49:33 -0800</bug_when>
    <thetext>Comment on attachment 191872
WIP

Attachment 191872 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17086110</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849552</commentid>
    <comment_count>4</comment_count>
      <attachid>191877</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-03-06 17:58:24 -0800</bug_when>
    <thetext>Created attachment 191877
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849557</commentid>
    <comment_count>5</comment_count>
      <attachid>191877</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-06 18:02:29 -0800</bug_when>
    <thetext>Comment on attachment 191877
WIP

Attachment 191877 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17023063</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849559</commentid>
    <comment_count>6</comment_count>
      <attachid>191877</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-06 18:03:54 -0800</bug_when>
    <thetext>Comment on attachment 191877
WIP

Attachment 191877 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17070047</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849560</commentid>
    <comment_count>7</comment_count>
      <attachid>191877</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-06 18:04:26 -0800</bug_when>
    <thetext>Comment on attachment 191877
WIP

Attachment 191877 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17070048</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849563</commentid>
    <comment_count>8</comment_count>
      <attachid>191879</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-03-06 18:07:35 -0800</bug_when>
    <thetext>Created attachment 191879
WIP: try to fix JSC build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849566</commentid>
    <comment_count>9</comment_count>
      <attachid>191879</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-06 18:10:56 -0800</bug_when>
    <thetext>Comment on attachment 191879
WIP: try to fix JSC build

Attachment 191879 did not pass qt-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17070053</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849569</commentid>
    <comment_count>10</comment_count>
      <attachid>191879</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2013-03-06 18:12:22 -0800</bug_when>
    <thetext>Comment on attachment 191879
WIP: try to fix JSC build

Attachment 191879 did not pass qt-wk2-ews (qt):
Output: http://webkit-commit-queue.appspot.com/results/17010044</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849582</commentid>
    <comment_count>11</comment_count>
      <attachid>191879</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-06 18:25:10 -0800</bug_when>
    <thetext>Comment on attachment 191879
WIP: try to fix JSC build

Attachment 191879 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-commit-queue.appspot.com/results/17010049</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849584</commentid>
    <comment_count>12</comment_count>
      <attachid>191879</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-06 18:27:22 -0800</bug_when>
    <thetext>Comment on attachment 191879
WIP: try to fix JSC build

Attachment 191879 did not pass win-ews (win):
Output: http://webkit-commit-queue.appspot.com/results/17050270</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849627</commentid>
    <comment_count>13</comment_count>
      <attachid>191879</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-03-06 19:23:52 -0800</bug_when>
    <thetext>Comment on attachment 191879
WIP: try to fix JSC build

Attachment 191879 did not pass efl-ews (efl):
Output: http://webkit-commit-queue.appspot.com/results/17023098</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850387</commentid>
    <comment_count>14</comment_count>
      <attachid>191879</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-03-07 12:44:06 -0800</bug_when>
    <thetext>Comment on attachment 191879
WIP: try to fix JSC build

Attachment 191879 did not pass mac-ews (mac):
Output: http://webkit-commit-queue.appspot.com/results/17064304</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850456</commentid>
    <comment_count>15</comment_count>
      <attachid>192081</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-03-07 13:48:23 -0800</bug_when>
    <thetext>Created attachment 192081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851545</commentid>
    <comment_count>16</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-03-08 15:13:08 -0800</bug_when>
    <thetext>Now works on JSC as well as V8, ready for a look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851549</commentid>
    <comment_count>17</comment_count>
      <attachid>192081</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-03-08 15:17:35 -0800</bug_when>
    <thetext>Comment on attachment 192081
Patch

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

&gt; Source/WebCore/bindings/js/JSMutationCallback.cpp:69
&gt; +        ASSERT_NOT_REACHED();
&gt; +        return;

Do we need to handle this case if it can&apos;t be reached?

&gt; Source/WebCore/bindings/js/JSMutationCallback.cpp:95
&gt; +    globalObject-&gt;globalData().timeoutChecker.start();
&gt; +    InspectorInstrumentationCookie cookie = JSMainThreadExecState::instrumentFunctionCall(context, callType, callData);
&gt; +
&gt; +    JSMainThreadExecState::call(exec, callback, callType, callData, jsObserver, args);
&gt; +
&gt; +    InspectorInstrumentation::didCallFunction(cookie);
&gt; +    globalObject-&gt;globalData().timeoutChecker.stop();
&gt; +
&gt; +    if (exec-&gt;hadException())
&gt; +        reportCurrentException(exec);

Should we wrap this in a helper function so that we don&apos;t need to copy/paste this code for every callback?

&gt; Source/WebCore/bindings/v8/V8MutationCallback.cpp:78
&gt; +    ScriptController::callFunctionWithInstrumentation(scriptExecutionContext(), callback, thisObject, 2, argv);

ScriptController::callFunctionWithInstrumentation  &lt;--- Looks like we have the wrapper function for V8 already.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851554</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-03-08 15:24:00 -0800</bug_when>
    <thetext>+ggaren for JSC questions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851555</commentid>
    <comment_count>19</comment_count>
      <attachid>192081</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-03-08 15:24:17 -0800</bug_when>
    <thetext>Comment on attachment 192081
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSMutationCallback.cpp:69
&gt;&gt; +        return;
&gt; 
&gt; Do we need to handle this case if it can&apos;t be reached?

I don&apos;t know enough about JSC API to answer that question well. It seems like I might be able to avoid this by storing a JSC::JSFunction* instead of a JSC::JSObject*, but it doesn&apos;t seem like that&apos;s at all common in JSC code.

Basically, I think it&apos;s a good idea to handle this case for now, since it&apos;s trying to enforce an invariant from another class (in this case, the constructor of JSMutationObserver in JSMutationObserverCustom.cpp).

&gt;&gt; Source/WebCore/bindings/js/JSMutationCallback.cpp:95
&gt;&gt; +        reportCurrentException(exec);
&gt; 
&gt; Should we wrap this in a helper function so that we don&apos;t need to copy/paste this code for every callback?

Seems like that&apos;d be a good question for some JSC folks, I&apos;m not sure they want yet-another method on JSMainThreadExecState.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852553</commentid>
    <comment_count>20</comment_count>
      <attachid>192081</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2013-03-11 12:06:33 -0700</bug_when>
    <thetext>Comment on attachment 192081
Patch

Neither of the outstanding questions affect the correctness of this code, so I&apos;m sending this to the cq. Those questions can be dealt with as a post-submit cleanup as necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852562</commentid>
    <comment_count>21</comment_count>
      <attachid>192081</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 12:18:12 -0700</bug_when>
    <thetext>Comment on attachment 192081
Patch

Clearing flags on attachment: 192081

Committed r145379: &lt;http://trac.webkit.org/changeset/145379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852563</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-11 12:18:18 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191872</attachid>
            <date>2013-03-06 17:27:20 -0800</date>
            <delta_ts>2013-03-06 17:58:22 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-91406-20130306172325.patch</filename>
            <type>text/plain</type>
            <size>10540</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg3NTIwZThmMDc2Mzdh
NWUwZWZkNDRlZjUxN2VkY2I2OWNkZmM0Ni4uZmM4YTVhNGVkMzdlY2Y3ZDU0OWFlZTljZTAzNDI0
OTkyMzViZTUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEzLTAzLTA2ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE11dGF0aW9uQ2FsbGJhY2sg
c2hvdWxkIGJlIGEgV2ViSURMICdjYWxsYmFjaycsIG5vdCBhIFtDYWxsYmFja10gaW50ZXJmYWNl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25DYWxsYmFjazo6Y2FsbCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEpTTXV0YXRpb25DYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
VjhNdXRhdGlvbkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TXV0YXRpb25DYWxs
YmFjazo6Y2FsbCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRhdGlvbkNhbGxiYWNrLmg6
CisgICAgICAgIChWOE11dGF0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9NdXRhdGlvbkNh
bGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKE11dGF0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXIpOgorCiAyMDEzLTAzLTA2ICBBbGV4ZXkgUHJvc2t1
cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFN5bnRoZXRpYyBSZXNvdXJj
ZVJlc3BvbnNlcyBjYW5ub3QgYmUgc2VudCBvdmVyIElQQyB3aXRob3V0IGxvc2luZyBtb3N0IGlu
Zm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0
aW9uQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNh
bGxiYWNrLmNwcAppbmRleCAwZjRjOTE3YmUzNzRjZmY0MWMyMmU1ZmE3YWY2YTg2NWYxOGE2NTgy
Li43OWE0NGM3ZjYyYWYyOTQ1MDNiZTcxMWZiY2Y2ZmJjODllYWQ0ZWI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5jcHAKQEAgLTI3LDYg
KzI3LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU011dGF0aW9uQ2FsbGJh
Y2suaCIKIAorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNNYWlu
VGhyZWFkRXhlY1N0YXRlLmgiYAogI2luY2x1ZGUgIkpTTXV0YXRpb25PYnNlcnZlci5oIgogI2lu
Y2x1ZGUgIkpTTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgiCkBAIC00NywyOCArNDksMzUgQEAgSlNNdXRhdGlvbkNhbGxiYWNrOjp+SlNNdXRhdGlv
bkNhbGxiYWNrKCkKIHsKIH0KIAotYm9vbCBKU011dGF0aW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZW50
KE11dGF0aW9uUmVjb3JkQXJyYXkqIG11dGF0aW9ucywgTXV0YXRpb25PYnNlcnZlciogb2JzZXJ2
ZXIpCitib29sIEpTTXV0YXRpb25DYWxsYmFjazo6Y2FsbChjb25zdCBWZWN0b3I8UmVmUHRyPE11
dGF0aW9uUmVjb3JkPiA+JiBtdXRhdGlvbnMsIE11dGF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyKQog
ewogICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxKU011dGF0aW9uQ2FsbGJhY2s+IHByb3RlY3Qo
dGhpcyk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2lzb2xhdGVkV29ybGQtPmdsb2JhbERh
dGEoKSk7CiAKICAgICBpZiAoIW1fY2FsbGJhY2spCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIEpTVmFsdWUgZnVuY3Rpb24gPSBtX2NhbGxiYWNrLmdldCgpOwor
CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBmdW5jdGlv
bi0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBp
ZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQorICAgICAgICByZXR1cm47CiAKICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwog
ICAgIGlmICghY29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47
CisgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAgICBKU0RPTUdsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChjb250ZXh0LCBtX2lzb2xh
dGVkV29ybGQuZ2V0KCkpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbXV0YXRpb25MaXN0OwotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbXV0YXRpb25zLT5zaXplKCk7ICsraSkKLSAgICAgICAg
bXV0YXRpb25MaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbXV0YXRpb25zLT5h
dChpKS5nZXQoKSkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbXV0YXRpb25zLnNpemUo
KTsgKytpKQorICAgICAgICBtdXRhdGlvbkxpc3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBtdXRhdGlvbnNbaV0uZ2V0KCkpKTsKIAogICAgIEpTVmFsdWUganNPYnNlcnZlciA9IHRv
SlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBvYnNlcnZlcik7CiAKQEAgLTc2LDEwICs4NSwxNiBAQCBi
b29sIEpTTXV0YXRpb25DYWxsYmFjazo6aGFuZGxlRXZlbnQoTXV0YXRpb25SZWNvcmRBcnJheSog
bXV0YXRpb25zLCBNdXRhdGlvbk9icwogICAgIGFyZ3MuYXBwZW5kKGNvbnN0cnVjdEFycmF5KGV4
ZWMsIDAsIGdsb2JhbE9iamVjdCwgbXV0YXRpb25MaXN0KSk7CiAgICAgYXJncy5hcHBlbmQoanNP
YnNlcnZlcik7CiAKLSAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIC8vIEZJ
WE1FOiBFeHRyYWN0IGludm9rZUNhbGxiYWNrKCkgbWV0aG9kLgotICAgIEpTQ2FsbGJhY2tEYXRh
KG1fY2FsbGJhY2suZ2V0KCksIGdsb2JhbE9iamVjdCkuaW52b2tlQ2FsbGJhY2soanNPYnNlcnZl
ciwgYXJncywgJnJhaXNlZEV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuICFyYWlzZWRFeGNlcHRpb247
CisgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNNYWluVGhyZWFk
RXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKGNvbnRleHQsIGNhbGxUeXBlLCBjYWxs
RGF0YSk7CisKKyAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwganNPYnNlcnZlciwgYXJncyk7CisKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUpOworICAgIGdsb2JhbE9iamVj
dC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKworICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU011dGF0aW9uQ2FsbGJhY2suaAppbmRleCA3NmUwODNjYmEwODFjYzZkNWZmMDhhMzkxN2I4
YTFkOGNlMDJkYWQ3Li44MmE2OWVkOTgyMDMwOTEwODFjMzA2Y2ZjMzg4ZDBhMGFlZjNhY2ZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2su
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suaApA
QCAtMjcsMTIgKzI3LDE2IEBACiAjZGVmaW5lIEpTTXV0YXRpb25DYWxsYmFja19oCiAKICNpbmNs
dWRlICJBY3RpdmVET01DYWxsYmFjay5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tEYXRhLmgiCisj
aW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25DYWxsYmFjay5o
IgorI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IEpTRE9NR2xvYmFsT2JqZWN0OworCiBjbGFzcyBKU011dGF0aW9uQ2FsbGJhY2sgOiBwdWJsaWMg
TXV0YXRpb25DYWxsYmFjaywgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKIHB1YmxpYzoKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxKU011dGF0aW9uQ2FsbGJhY2s+IGNyZWF0ZShKU0M6OkpTT2Jq
ZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTQyLDcg
KzQ2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SlNNdXRhdGlvbkNhbGxiYWNrKCk7CiAK
LSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoTXV0YXRpb25SZWNvcmRBcnJheSogbXV0YXRp
b25zLCBNdXRhdGlvbk9ic2VydmVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbGwo
Y29uc3QgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4gPiYsIE11dGF0aW9uT2JzZXJ2ZXIq
KSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENvbnRleHREZXN0cnVj
dGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5jcHAKaW5kZXggZGIyY2Iw
MWYyMzc5YmJmZjg4NTE4ZWFkNmZlOWY3NjgxNTI3YjU5OS4uM2ZkYjYzNjI4N2Q2MGRmN2Y1ZGQ0
MWVkYmUzNGY4ZTgzY2ZmMTAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhNdXRhdGlvbkNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOE11dGF0aW9uQ2FsbGJhY2suY3BwCkBAIC0yNiw5ICsyNiw5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVjhNdXRhdGlvbkNhbGxiYWNrLmgiCiAKKyNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4Q2FsbGJhY2suaCIKICNpbmNsdWRlICJW
OE11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJWOE11dGF0aW9uUmVjb3JkLmgiCiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTQ0LDQ0ICs0NCw0MyBAQCBWOE11dGF0aW9uQ2Fs
bGJhY2s6OlY4TXV0YXRpb25DYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxiYWNr
LCBTY3JpcHRFeAogICAgIG1fY2FsbGJhY2suZ2V0KCkuTWFrZVdlYWsoaXNvbGF0ZSwgdGhpcywg
JlY4TXV0YXRpb25DYWxsYmFjazo6d2Vha0NhbGxiYWNrKTsKIH0KIAotYm9vbCBWOE11dGF0aW9u
Q2FsbGJhY2s6OmhhbmRsZUV2ZW50KE11dGF0aW9uUmVjb3JkQXJyYXkqIG11dGF0aW9ucywgTXV0
YXRpb25PYnNlcnZlciogb2JzZXJ2ZXIpCit2b2lkIFY4TXV0YXRpb25DYWxsYmFjazo6Y2FsbChj
b25zdCBWZWN0b3I8UmVmUHRyPE11dGF0aW9uUmVjb3JkPiA+JiBtdXRhdGlvbnMsIE11dGF0aW9u
T2JzZXJ2ZXIqIG9ic2VydmVyKQogewotICAgIEFTU0VSVChtdXRhdGlvbnMpOwotICAgIGlmICgh
bXV0YXRpb25zKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQogICAgIGlmICghY2FuSW52b2tlQ2Fs
bGJhY2soKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybjsKIAogICAgIHY4
OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKIAogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+
IHY4Q29udGV4dCA9IHRvVjhDb250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3Js
ZC5nZXQoKSk7CiAgICAgaWYgKHY4Q29udGV4dC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm47CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhD
b250ZXh0KTsKIAotICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IG11dGF0aW9uc0FycmF5ID0gdjg6
OkFycmF5OjpOZXcobXV0YXRpb25zLT5zaXplKCkpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbXV0YXRpb25zLT5zaXplKCk7ICsraSkKLSAgICAgICAgbXV0YXRpb25zQXJyYXktPlNldCh2
OEludGVnZXIoaSwgdjhDb250ZXh0LT5HZXRJc29sYXRlKCkpLCB0b1Y4KG11dGF0aW9ucy0+YXQo
aSkuZ2V0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjhDb250ZXh0LT5HZXRJc29sYXRl
KCkpKTsKKyAgICBpZiAoIW1fY2FsbGJhY2stPklzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJu
OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBjYWxsYmFjayA9IHY4OjpMb2NhbDx2ODo6
RnVuY3Rpb24+OjpOZXcodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fY2FsbGJhY2su
Z2V0KCkpKTsKKworICAgIHY4OjpIYW5kbGU8djg6OkFycmF5PiBtdXRhdGlvbnNBcnJheSA9IHY4
OjpBcnJheTo6TmV3KG11dGF0aW9ucy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbXV0YXRpb25zLnNpemUoKTsgKytpKQorICAgICAgICBtdXRhdGlvbnNBcnJheS0+U2V0KHY4
SW50ZWdlcihpLCB2OENvbnRleHQtPkdldElzb2xhdGUoKSksIHRvVjgobXV0YXRpb25zW2ldLmdl
dCgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpKSk7
CiAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb2JzZXJ2ZXJIYW5kbGUgPSB0b1Y4KG9ic2Vy
dmVyLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpKTsK
ICAgICBpZiAob2JzZXJ2ZXJIYW5kbGUuSXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghaXNTY3Jp
cHRDb250cm9sbGVyVGVybWluYXRpbmcoKSkKICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFvYnNlcnZl
ckhhbmRsZS0+SXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVy
bjsKIAotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7Ci0gICAgICAgIG11dGF0
aW9uc0FycmF5LAotICAgICAgICBvYnNlcnZlckhhbmRsZQotICAgIH07CisgICAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiB0aGlzT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChv
YnNlcnZlckhhbmRsZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbXV0
YXRpb25zQXJyYXksIG9ic2VydmVySGFuZGxlIH07CiAKLSAgICBib29sIGNhbGxiYWNrUmV0dXJu
VmFsdWUgPSBmYWxzZTsKLSAgICByZXR1cm4gIWludm9rZUNhbGxiYWNrKG1fY2FsbGJhY2suZ2V0
KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qob2JzZXJ2ZXJIYW5kbGUpLCAyLCBhcmd2
LCBjYWxsYmFja1JldHVyblZhbHVlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIHY4
OjpUcnlDYXRjaCBleGNlcHRpb25DYXRjaGVyOworICAgIGV4Y2VwdGlvbkNhdGNoZXIuU2V0VmVy
Ym9zZSh0cnVlKTsKKyAgICBTY3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb25XaXRoSW5zdHJ1
bWVudGF0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2FsbGJhY2ssIHRoaXNPYmplY3Qs
IDIsIGFyZ3YpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5oCmluZGV4IGM0Zjk4ZmVhYmNlMzQz
NGZlMzFhZjNiMGMwNzk4MmU0M2E1MjYwZGEuLjMxYWYwMDAwOGFjOTViY2ZmY2ZhN2I5ZWM1ZjQy
MjE1YjkyNzY2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0
YXRpb25DYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRp
b25DYWxsYmFjay5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBWOE11dGF0aW9uQ2FsbGJhY2sodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2YWx1ZSksIGNvbnRleHQsIG93bmVyLCBpc29sYXRlKSk7CiAgICAgfQogCi0gICAgdmlydHVh
bCBib29sIGhhbmRsZUV2ZW50KE11dGF0aW9uUmVjb3JkQXJyYXkqLCBNdXRhdGlvbk9ic2VydmVy
KikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbGwoY29uc3QgVmVjdG9yPFJlZlB0cjxN
dXRhdGlvblJlY29yZD4gPiYsIE11dGF0aW9uT2JzZXJ2ZXIqKSBPVkVSUklERTsKICAgICB2aXJ0
dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpOyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vTXV0YXRpb25DYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uQ2Fs
bGJhY2suaAppbmRleCBmM2MyNTg4MTYxNGE3NDY0NmRjMWU1ZjlhOTNhYjcyNDIzOTgwZTY0Li5h
NjBjZThiMWE2MTkxYzUwNTUwYTMxNDVlODYxZDQ1MDMyZjhjMzQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25DYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbkNhbGxiYWNrLmgKQEAgLTQwLDEzICs0MCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBNdXRhdGlvblJlY29yZDsKIGNsYXNzIE11dGF0aW9uT2JzZXJ2ZXI7CiAKLXR5
cGVkZWYgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4gPiBNdXRhdGlvblJlY29yZEFycmF5
OwotCiBjbGFzcyBNdXRhdGlvbkNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8TXV0YXRpb25D
YWxsYmFjaz4gewogcHVibGljOgogICAgIHZpcnR1YWwgfk11dGF0aW9uQ2FsbGJhY2soKSB7IH0K
IAotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChNdXRhdGlvblJlY29yZEFycmF5KiwgTXV0
YXRpb25PYnNlcnZlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsbChjb25zdCBWZWN0b3I8
UmVmUHRyPE11dGF0aW9uUmVjb3JkPiA+JiwgTXV0YXRpb25PYnNlcnZlciopID0gMDsKICAgICB2
aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBj
b25zdCA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKaW5k
ZXggNTRlNzgxNTQ4YmQ3NWQ2NDliZTFlZTk5N2VjZTBiMTk5MjZkMTg3ZS4uZGE4MDAxMzdhMzNi
ZmY3NmE4OTI2ODY0OTdhYmU2ZDY5OGY2MGQ1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bk9ic2VydmVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6
ZGVsaXZlcigpCiAgICAgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4gPiByZWNvcmRzOwog
ICAgIHJlY29yZHMuc3dhcChtX3JlY29yZHMpOwogCi0gICAgbV9jYWxsYmFjay0+aGFuZGxlRXZl
bnQoJnJlY29yZHMsIHRoaXMpOworICAgIG1fY2FsbGJhY2stPmNhbGwocmVjb3JkcywgdGhpcyk7
CiB9CiAKIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0aW9ucygpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191877</attachid>
            <date>2013-03-06 17:58:24 -0800</date>
            <delta_ts>2013-03-06 18:07:32 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-91406-20130306175429.patch</filename>
            <type>text/plain</type>
            <size>18894</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg3NTIwZThmMDc2Mzdh
NWUwZWZkNDRlZjUxN2VkY2I2OWNkZmM0Ni4uNzA0MGY2YTI5NGU0OWMxOWVmOWQyODc0YTAwN2E4
ZjViODNjN2ZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAzLTA2ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE11dGF0aW9uQ2FsbGJhY2sg
c2hvdWxkIGJlIGEgV2ViSURMICdjYWxsYmFjaycsIG5vdCBhIFtDYWxsYmFja10gaW50ZXJmYWNl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25DYWxsYmFjazo6Y2FsbCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEpTTXV0YXRpb25DYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRp
b25PYnNlcnZlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOE11dGF0aW9uQ2FsbGJhY2s6OlY4TXV0YXRpb25DYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOE11dGF0aW9uQ2FsbGJhY2s6OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4TXV0YXRpb25DYWxsYmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkNhbGxi
YWNrOjpjcmVhdGUpOgorICAgICAgICAoVjhNdXRhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4TXV0YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JDdXN0b20pOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvbkNhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KE11dGF0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXIpOgorCiAyMDEzLTAz
LTA2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNd
IFN5bnRoZXRpYyBSZXNvdXJjZVJlc3BvbnNlcyBjYW5ub3QgYmUgc2VudCBvdmVyIElQQyB3aXRo
b3V0IGxvc2luZyBtb3N0IGluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcAppbmRleCAwZjRjOTE3YmUzNzRjZmY0MWMyMmU1
ZmE3YWY2YTg2NWYxOGE2NTgyLi5hYThhMThlODZmZWZiNWUyZTM2Yjc2MjA0Y2YzZTlkODMwZmUy
ZjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2Fs
bGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxs
YmFjay5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKU011dGF0aW9uQ2FsbGJhY2suaCIKIAorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiSlNNdXRhdGlv
bk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTQ3LDI4ICs0OSwzNiBAQCBKU011dGF0aW9uQ2Fs
bGJhY2s6On5KU011dGF0aW9uQ2FsbGJhY2soKQogewogfQogCi1ib29sIEpTTXV0YXRpb25DYWxs
YmFjazo6aGFuZGxlRXZlbnQoTXV0YXRpb25SZWNvcmRBcnJheSogbXV0YXRpb25zLCBNdXRhdGlv
bk9ic2VydmVyKiBvYnNlcnZlcikKK2Jvb2wgSlNNdXRhdGlvbkNhbGxiYWNrOjpjYWxsKGNvbnN0
IFZlY3RvcjxSZWZQdHI8TXV0YXRpb25SZWNvcmQ+ID4mIG11dGF0aW9ucywgTXV0YXRpb25PYnNl
cnZlciogb2JzZXJ2ZXIpCiB7CiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEpTTXV0YXRpb25D
YWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1faXNvbGF0
ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpKTsKIAogICAgIGlmICghbV9jYWxsYmFjaykKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1f
Y2FsbGJhY2suZ2V0KCk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBzaG91bGQgYmUgdW5u
ZWNlc3NhcnksIEpTTXV0YXRpb25PYnNlcnZlciB3aWxsIHRocm93IGlmIG1fY2FsbGJhY2sgaXNu
J3QgYSBmdW5jdGlvbgorICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZnVuY3Rpb24tPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGZ1bmN0aW9uLCBjYWxs
RGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgcmV0dXJu
OwogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKICAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIEFTU0VSVChjb250ZXh0LT5pc0RvY3VtZW50KCkpOwogCiAgICAg
SlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlNET01HbG9iYWxPYmplY3QoY29u
dGV4dCwgbV9pc29sYXRlZFdvcmxkLmdldCgpKTsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIG11dGF0
aW9uTGlzdDsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG11dGF0aW9ucy0+c2l6ZSgpOyAr
K2kpCi0gICAgICAgIG11dGF0aW9uTGlzdC5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3Qs
IG11dGF0aW9ucy0+YXQoaSkuZ2V0KCkpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG11
dGF0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgbXV0YXRpb25MaXN0LmFwcGVuZCh0b0pTKGV4
ZWMsIGdsb2JhbE9iamVjdCwgbXV0YXRpb25zW2ldLmdldCgpKSk7CiAKICAgICBKU1ZhbHVlIGpz
T2JzZXJ2ZXIgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgb2JzZXJ2ZXIpOwogCkBAIC03Niwx
MCArODYsMTYgQEAgYm9vbCBKU011dGF0aW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KE11dGF0aW9u
UmVjb3JkQXJyYXkqIG11dGF0aW9ucywgTXV0YXRpb25PYnMKICAgICBhcmdzLmFwcGVuZChjb25z
dHJ1Y3RBcnJheShleGVjLCAwLCBnbG9iYWxPYmplY3QsIG11dGF0aW9uTGlzdCkpOwogICAgIGFy
Z3MuYXBwZW5kKGpzT2JzZXJ2ZXIpOwogCi0gICAgYm9vbCByYWlzZWRFeGNlcHRpb24gPSBmYWxz
ZTsKLSAgICAvLyBGSVhNRTogRXh0cmFjdCBpbnZva2VDYWxsYmFjaygpIG1ldGhvZC4KLSAgICBK
U0NhbGxiYWNrRGF0YShtX2NhbGxiYWNrLmdldCgpLCBnbG9iYWxPYmplY3QpLmludm9rZUNhbGxi
YWNrKGpzT2JzZXJ2ZXIsIGFyZ3MsICZyYWlzZWRFeGNlcHRpb24pOwotICAgIHJldHVybiAhcmFp
c2VkRXhjZXB0aW9uOworICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVj
a2VyLnN0YXJ0KCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9
IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChjb250ZXh0LCBj
YWxsVHlwZSwgY2FsbERhdGEpOworCisgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4
ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGpzT2JzZXJ2ZXIsIGFyZ3MpOworCisg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29va2llKTsKKyAg
ICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJlcG9ydEN1cnJlbnRFeGNlcHRp
b24oZXhlYyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmgKaW5kZXggNzZlMDgzY2JhMDgxY2M2
ZDVmZjA4YTM5MTdiOGExZDhjZTAyZGFkNy4uODJhNjllZDk4MjAzMDkxMDgxYzMwNmNmYzM4OGQw
YTBhZWYzYWNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRh
dGlvbkNhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlv
bkNhbGxiYWNrLmgKQEAgLTI3LDEyICsyNywxNiBAQAogI2RlZmluZSBKU011dGF0aW9uQ2FsbGJh
Y2tfaAogCiAjaW5jbHVkZSAiQWN0aXZlRE9NQ2FsbGJhY2suaCIKLSNpbmNsdWRlICJKU0NhbGxi
YWNrRGF0YS5oIgorI2luY2x1ZGUgIkRPTVdyYXBwZXJXb3JsZC5oIgogI2luY2x1ZGUgIk11dGF0
aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDxoZWFwL1dlYWsuaD4KKyNpbmNsdWRlIDxydW50aW1l
L0pTT2JqZWN0Lmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCitjbGFzcyBKU0RPTUdsb2JhbE9iamVjdDsKKwogY2xhc3MgSlNNdXRhdGlvbkNhbGxi
YWNrIDogcHVibGljIE11dGF0aW9uQ2FsbGJhY2ssIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNNdXRhdGlvbkNhbGxiYWNrPiBjcmVh
dGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCkBAIC00Miw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkpTTXV0YXRpb25D
YWxsYmFjaygpOwogCi0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KE11dGF0aW9uUmVjb3Jk
QXJyYXkqIG11dGF0aW9ucywgTXV0YXRpb25PYnNlcnZlciopIE9WRVJSSURFOworICAgIHZpcnR1
YWwgdm9pZCBjYWxsKGNvbnN0IFZlY3RvcjxSZWZQdHI8TXV0YXRpb25SZWNvcmQ+ID4mLCBNdXRh
dGlvbk9ic2VydmVyKikgT1ZFUlJJREU7CiAKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBD
b250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZl
ckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2
ZXJDdXN0b20uY3BwCmluZGV4IGM3Yzk5ZTdlNWQ5ZjUwYTdjYWJhN2E4ZjZiNzBiMjg2OWM0NGU4
NzguLmVlNjFkMDc1ZTFmNzUyZGQ2YzUwZDRlZmM2MzA2MGJkN2RkM2QyMWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9t
LmNwcApAQCAtNDksMTAgKzQ5LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU011
dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNNdXRhdGlvbk8KICAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihl
eGVjKSk7CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gZXhlYy0+YXJndW1lbnQoMCkuZ2V0T2Jq
ZWN0KCk7Ci0gICAgaWYgKCFvYmplY3QpIHsKLSAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IFRZUEVfTUlTTUFUQ0hfRVJSKTsKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICB9CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgaWYgKCFvYmpl
Y3QgfHwgZ2V0Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGVOb25lKQorICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgIkNhbGxiYWNrIGFyZ3VtZW50IG11c3Qg
YmUgYSBmdW5jdGlvbiIpOwogCiAgICAgSlNNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3IqIGpz
Q29uc3RydWN0b3IgPSBqc0Nhc3Q8SlNNdXRhdGlvbk9ic2VydmVyQ29uc3RydWN0b3IqPihleGVj
LT5jYWxsZWUoKSk7CiAgICAgUmVmUHRyPEpTTXV0YXRpb25DYWxsYmFjaz4gY2FsbGJhY2sgPSBK
U011dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGpzQ29uc3RydWN0b3ItPmdsb2JhbE9i
amVjdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRp
b25DYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2Fs
bGJhY2suY3BwCmluZGV4IGRiMmNiMDFmMjM3OWJiZmY4ODUxOGVhZDZmZTlmNzY4MTUyN2I1OTku
LmE2ODdhOGNhODdkNDlhZWRlYjAzN2RlZWFjMmNhOTBhYzY3ZTVmYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkNhbGxiYWNrLmNwcApAQCAtMjYsMTYg
KzI2LDE2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiVjhNdXRhdGlvbkNhbGxi
YWNrLmgiCiAKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgogI2luY2x1ZGUgIlY4QmluZGluZy5oIgotI2luY2x1ZGUgIlY4
Q2FsbGJhY2suaCIKICNpbmNsdWRlICJWOE11dGF0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJW
OE11dGF0aW9uUmVjb3JkLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1WOE11dGF0aW9uQ2FsbGJhY2s6OlY4TXV0YXRpb25DYWxsYmFjayh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG93bmVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKK1Y4TXV0YXRpb25DYWxsYmFjazo6VjhNdXRhdGlvbkNhbGxiYWNrKHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPiBjYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvd25lciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiAgICAgOiBB
Y3RpdmVET01DYWxsYmFjayhjb250ZXh0KQogICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKICAg
ICAsIG1fd29ybGQoRE9NV3JhcHBlcldvcmxkOjppc29sYXRlZFdvcmxkKHY4OjpDb250ZXh0OjpH
ZXRDdXJyZW50KCkpKQpAQCAtNDQsNDQgKzQ0LDQxIEBAIFY4TXV0YXRpb25DYWxsYmFjazo6VjhN
dXRhdGlvbkNhbGxiYWNrKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY2FsbGJhY2ssIFNjcmlwdEV4
CiAgICAgbV9jYWxsYmFjay5nZXQoKS5NYWtlV2Vhayhpc29sYXRlLCB0aGlzLCAmVjhNdXRhdGlv
bkNhbGxiYWNrOjp3ZWFrQ2FsbGJhY2spOwogfQogCi1ib29sIFY4TXV0YXRpb25DYWxsYmFjazo6
aGFuZGxlRXZlbnQoTXV0YXRpb25SZWNvcmRBcnJheSogbXV0YXRpb25zLCBNdXRhdGlvbk9ic2Vy
dmVyKiBvYnNlcnZlcikKK3ZvaWQgVjhNdXRhdGlvbkNhbGxiYWNrOjpjYWxsKGNvbnN0IFZlY3Rv
cjxSZWZQdHI8TXV0YXRpb25SZWNvcmQ+ID4mIG11dGF0aW9ucywgTXV0YXRpb25PYnNlcnZlciog
b2JzZXJ2ZXIpCiB7Ci0gICAgQVNTRVJUKG11dGF0aW9ucyk7Ci0gICAgaWYgKCFtdXRhdGlvbnMp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgdjg6OkhhbmRsZVNj
b3BlIGhhbmRsZVNjb3BlOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gdjhDb250ZXh0
ID0gdG9WOENvbnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX3dvcmxkLmdldCgpKTsK
ICAgICBpZiAodjhDb250ZXh0LklzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIHJldHVybjsKIAogICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOwog
Ci0gICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gbXV0YXRpb25zQXJyYXkgPSB2ODo6QXJyYXk6Ok5l
dyhtdXRhdGlvbnMtPnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtdXRhdGlv
bnMtPnNpemUoKTsgKytpKQotICAgICAgICBtdXRhdGlvbnNBcnJheS0+U2V0KHY4SW50ZWdlcihp
LCB2OENvbnRleHQtPkdldElzb2xhdGUoKSksIHRvVjgobXV0YXRpb25zLT5hdChpKS5nZXQoKSwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2OENvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPiBjYWxsYmFjayA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rp
b24+OjpOZXcobV9jYWxsYmFjay5nZXQoKSk7CisKKyAgICB2ODo6SGFuZGxlPHY4OjpBcnJheT4g
bXV0YXRpb25zQXJyYXkgPSB2ODo6QXJyYXk6Ok5ldyhtdXRhdGlvbnMuc2l6ZSgpKTsKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG11dGF0aW9ucy5zaXplKCk7ICsraSkKKyAgICAgICAgbXV0
YXRpb25zQXJyYXktPlNldCh2OEludGVnZXIoaSwgdjhDb250ZXh0LT5HZXRJc29sYXRlKCkpLCB0
b1Y4KG11dGF0aW9uc1tpXS5nZXQoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2OENvbnRl
eHQtPkdldElzb2xhdGUoKSkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9ic2VydmVy
SGFuZGxlID0gdG9WOChvYnNlcnZlciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2OENvbnRl
eHQtPkdldElzb2xhdGUoKSk7CiAgICAgaWYgKG9ic2VydmVySGFuZGxlLklzRW1wdHkoKSkgewog
ICAgICAgICBpZiAoIWlzU2NyaXB0Q29udHJvbGxlclRlcm1pbmF0aW5nKCkpCiAgICAgICAgICAg
ICBDUkFTSCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGlmICghb2JzZXJ2ZXJIYW5kbGUtPklzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICByZXR1cm47CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltd
ID0gewotICAgICAgICBtdXRhdGlvbnNBcnJheSwKLSAgICAgICAgb2JzZXJ2ZXJIYW5kbGUKLSAg
ICB9OworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gdGhpc09iamVjdCA9IHY4OjpIYW5kbGU8
djg6Ok9iamVjdD46OkNhc3Qob2JzZXJ2ZXJIYW5kbGUpOworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcmd2W10gPSB7IG11dGF0aW9uc0FycmF5LCBvYnNlcnZlckhhbmRsZSB9OwogCi0gICAg
Ym9vbCBjYWxsYmFja1JldHVyblZhbHVlID0gZmFsc2U7Ci0gICAgcmV0dXJuICFpbnZva2VDYWxs
YmFjayhtX2NhbGxiYWNrLmdldCgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KG9ic2Vy
dmVySGFuZGxlKSwgMiwgYXJndiwgY2FsbGJhY2tSZXR1cm5WYWx1ZSwgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKTsKKyAgICB2ODo6VHJ5Q2F0Y2ggZXhjZXB0aW9uQ2F0Y2hlcjsKKyAgICBleGNl
cHRpb25DYXRjaGVyLlNldFZlcmJvc2UodHJ1ZSk7CisgICAgU2NyaXB0Q29udHJvbGxlcjo6Y2Fs
bEZ1bmN0aW9uV2l0aEluc3RydW1lbnRhdGlvbihzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGNh
bGxiYWNrLCB0aGlzT2JqZWN0LCAyLCBhcmd2KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkNhbGxi
YWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJhY2suaApp
bmRleCBjNGY5OGZlYWJjZTM0MzRmZTMxYWYzYjBjMDc5ODJlNDNhNTI2MGRhLi5iMDc3Y2QxZGU0
NzAwZDkzZDBlZjY5MGUyY2Y0YmU2NzVlYWUxZGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJhY2suaApAQCAtMzksMTggKzM5LDE3IEBAIGNsYXNz
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIFY4TXV0YXRpb25DYWxsYmFjayA6IHB1
YmxpYyBNdXRhdGlvbkNhbGxiYWNrLCBwdWJsaWMgQWN0aXZlRE9NQ2FsbGJhY2sgewogcHVibGlj
OgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFY4TXV0YXRpb25DYWxsYmFjaz4gY3JlYXRlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvd25lciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8VjhNdXRhdGlvbkNhbGxiYWNrPiBjcmVhdGUodjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb24+IGNhbGxiYWNrLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG93bmVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICB7
Ci0gICAgICAgIEFTU0VSVCh2YWx1ZS0+SXNPYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChjb250
ZXh0KTsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOE11dGF0aW9uQ2FsbGJhY2sodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSksIGNvbnRleHQsIG93bmVyLCBpc29sYXRl
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgVjhNdXRhdGlvbkNhbGxiYWNrKGNhbGxi
YWNrLCBjb250ZXh0LCBvd25lciwgaXNvbGF0ZSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVFdmVudChNdXRhdGlvblJlY29yZEFycmF5KiwgTXV0YXRpb25PYnNlcnZlciopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBjYWxsKGNvbnN0IFZlY3RvcjxSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+ID4mLCBNdXRhdGlvbk9ic2VydmVyKikgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXI6OnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsgfQogCiBwcml2YXRlOgotICAgIFY4TXV0YXRpb25DYWxsYmFjayh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0Piwgdjg6Oklzb2xhdGUqKTsKKyAgICBWOE11dGF0aW9uQ2FsbGJhY2sodjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0Piwgdjg6Oklzb2xhdGUqKTsKIAogICAgIHN0YXRpYyB2b2lkIHdlYWtDYWxsYmFjayh2
ODo6SXNvbGF0ZSogaXNvbGF0ZSwgdjg6OlBlcnNpc3RlbnQ8djg6OlZhbHVlPiB3cmFwcGVyLCB2
b2lkKiBwYXJhbWV0ZXIpCiAgICAgewpAQCAtNTgsNyArNTcsNyBAQCBwcml2YXRlOgogICAgICAg
ICBvYmplY3QtPm1fY2FsbGJhY2suY2xlYXIoKTsKICAgICB9CiAKLSAgICBTY29wZWRQZXJzaXN0
ZW50PHY4OjpPYmplY3Q+IG1fY2FsbGJhY2s7CisgICAgU2NvcGVkUGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb24+IG1fY2FsbGJhY2s7CiAgICAgUmVmUHRyPERPTVdyYXBwZXJXb3JsZD4gbV93b3JsZDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE11
dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKaW5kZXggNjg2N2Y2OTUxZmU2MjdkMDk3
NjEwZjk0NzM5MGMwNzhkYmM1NDg2ZS4uNzM1YjBjN2Y4MjRlOGYxNGNjNDJhZTZiODVkNmQ4Yjg0
NDkyNjBmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKQEAgLTQ3LDEzICs0NywxMyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNdXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckN1
c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJgogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAKICAgICB2ODo6TG9jYWw8djg6OlZh
bHVlPiBhcmcgPSBhcmdzWzBdOwotICAgIGlmICghYXJnLT5Jc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gc2V0RE9NRXhjZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElzb2xhdGUo
KSk7CisgICAgaWYgKCFhcmctPklzRnVuY3Rpb24oKSkKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKCJDYWxsYmFjayBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24iLCBhcmdzLkdldElz
b2xhdGUoKSk7CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0gZ2V0U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBl
ciA9IGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBSZWZQdHI8TXV0YXRpb25DYWxsYmFjaz4gY2FsbGJh
Y2sgPSBWOE11dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZShhcmcsIGNvbnRleHQsIHdyYXBwZXIsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBSZWZQdHI8TXV0YXRpb25DYWxsYmFjaz4gY2FsbGJhY2sg
PSBWOE11dGF0aW9uQ2FsbGJhY2s6OmNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj46OkNh
c3QoYXJnKSwgY29udGV4dCwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFJlZlB0
cjxNdXRhdGlvbk9ic2VydmVyPiBvYnNlcnZlciA9IE11dGF0aW9uT2JzZXJ2ZXI6OmNyZWF0ZShj
YWxsYmFjay5yZWxlYXNlKCkpOwogCiAgICAgVjhET01XcmFwcGVyOjphc3NvY2lhdGVPYmplY3RX
aXRoV3JhcHBlcihvYnNlcnZlci5yZWxlYXNlKCksICZpbmZvLCB3cmFwcGVyLCBhcmdzLkdldElz
b2xhdGUoKSwgV3JhcHBlckNvbmZpZ3VyYXRpb246OkRlcGVuZGVudCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25DYWxsYmFjay5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L011dGF0aW9uQ2FsbGJhY2suaAppbmRleCBmM2MyNTg4MTYxNGE3NDY0NmRjMWU1ZjlhOTNhYjcy
NDIzOTgwZTY0Li5hNjBjZThiMWE2MTkxYzUwNTUwYTMxNDVlODYxZDQ1MDMyZjhjMzQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25DYWxsYmFjay5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkNhbGxiYWNrLmgKQEAgLTQwLDEzICs0MCwxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNdXRhdGlvblJlY29yZDsKIGNsYXNzIE11dGF0aW9uT2Jz
ZXJ2ZXI7CiAKLXR5cGVkZWYgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4gPiBNdXRhdGlv
blJlY29yZEFycmF5OwotCiBjbGFzcyBNdXRhdGlvbkNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50
ZWQ8TXV0YXRpb25DYWxsYmFjaz4gewogcHVibGljOgogICAgIHZpcnR1YWwgfk11dGF0aW9uQ2Fs
bGJhY2soKSB7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChNdXRhdGlvblJlY29y
ZEFycmF5KiwgTXV0YXRpb25PYnNlcnZlciopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsbChj
b25zdCBWZWN0b3I8UmVmUHRyPE11dGF0aW9uUmVjb3JkPiA+JiwgTXV0YXRpb25PYnNlcnZlciop
ID0gMDsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSBjb25zdCA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTXV0YXRpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNl
cnZlci5jcHAKaW5kZXggNTRlNzgxNTQ4YmQ3NWQ2NDliZTFlZTk5N2VjZTBiMTk5MjZkMTg3ZS4u
ZGE4MDAxMzdhMzNiZmY3NmE4OTI2ODY0OTdhYmU2ZDY5OGY2MGQ1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcApAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgTXV0YXRp
b25PYnNlcnZlcjo6ZGVsaXZlcigpCiAgICAgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4g
PiByZWNvcmRzOwogICAgIHJlY29yZHMuc3dhcChtX3JlY29yZHMpOwogCi0gICAgbV9jYWxsYmFj
ay0+aGFuZGxlRXZlbnQoJnJlY29yZHMsIHRoaXMpOworICAgIG1fY2FsbGJhY2stPmNhbGwocmVj
b3JkcywgdGhpcyk7CiB9CiAKIHZvaWQgTXV0YXRpb25PYnNlcnZlcjo6ZGVsaXZlckFsbE11dGF0
aW9ucygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggOTQ1MDc4YTA2OGYxYzFlMThjN2MwZGU0MDk0Y2M0MzFjYzc2YzAxNi4u
NWYyNjAyN2IxNmFhMGU2MmFmYzU0ZGQwMDZlNWUyMmZhMWJkYTYyZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEzIEBACisyMDEzLTAzLTA2ICBBZGFtIEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIE11dGF0aW9uQ2FsbGJhY2sgc2hvdWxkIGJlIGEgV2ViSURMICdjYWxsYmFjaycsIG5v
dCBhIFtDYWxsYmFja10gaW50ZXJmYWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MTQwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1vYnNl
cnZlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vTXV0YXRp
b25PYnNlcnZlci9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rvci5odG1sOgorCiAyMDEzLTAz
LTA2ICBSYWZhZWwgV2VpbnN0ZWluICA8cmFmYWVsd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCBnYXJkZW5pbmc6IHJlYmFzZWxpbmVzLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rv
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211
dGF0aW9uLW9ic2VydmVyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAppbmRleCAyYmViM2U4NmU3
MGUyNDg1YTc3MjAxODA3NzY0Mjg1OTE3OTI3NDlkLi5mMTNlZjgyZTdlZDc3MDc5N2ExZTM3N2Fk
MDJiMjgwNDQzYjBjOGU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVy
LWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtOCw2ICs4LDEwIEBAIFBBU1MgdHlwZW9mIFdl
YktpdE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmUgaXMgImZ1bmN0aW9uIgogUEFT
UyB0eXBlb2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCBpcyAi
ZnVuY3Rpb24iCiBQQVNTIHR5cGVvZiBvYnNlcnZlci5vYnNlcnZlIGlzICJmdW5jdGlvbiIKIFBB
U1MgdHlwZW9mIG9ic2VydmVyLmRpc2Nvbm5lY3QgaXMgImZ1bmN0aW9uIgorUEFTUyBuZXcgTXV0
YXRpb25PYnNlcnZlcih7IGhhbmRsZUV2ZW50OiBmdW5jdGlvbigpIHt9IH0pIHRocmV3IGV4Y2Vw
dGlvbiBUeXBlRXJyb3I6IENhbGxiYWNrIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbi4KK1BB
U1MgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoe30pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENh
bGxiYWNrIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmV3IE11dGF0aW9uT2Jz
ZXJ2ZXIoNDIpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbGxiYWNrIGFyZ3VtZW50IG11
c3QgYmUgYSBmdW5jdGlvbi4KK1BBU1MgbmV3IE11dGF0aW9uT2JzZXJ2ZXIoImZvbyIpIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IENhbGxiYWNrIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlv
bi4KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1v
YnNlcnZlci1jb25zdHJ1Y3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25P
YnNlcnZlci9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rvci5odG1sCmluZGV4IDY1YTBkNTI2
YTZiODQzMTk4NjA4MGJhZTFmMzY0NzMxMTQ5OWE3NWIuLjY1NDk5OTFiNmZkYjY5NzY2YzVhYzc5
OWRkZWMwODE1ZDlhYTVmNjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0
aW9uT2JzZXJ2ZXIvbXV0YXRpb24tb2JzZXJ2ZXItY29uc3RydWN0b3IuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVyLWNvbnN0
cnVjdG9yLmh0bWwKQEAgLTEsMjggKzEsMjAgQEAKIDwhRE9DVFlQRSBodG1sPgotPGh0bWw+Ci08
aGVhZD4KLTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KLTxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgotPHRpdGxlPjwvdGl0bGU+Ci08L2hlYWQ+
CiA8Ym9keT4KLTxwIGlkPWRlc2NyaXB0aW9uPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+CiA8c2NyaXB0PgotCi1mdW5jdGlvbiBydW5UZXN0KCkgewotICAgIHNob3VsZEJlTm9uTnVs
bCgnd2luZG93LldlYktpdE11dGF0aW9uT2JzZXJ2ZXInKTsKLSAgICBzaG91bGRCZUVxdWFsVG9T
dHJpbmcoJ3R5cGVvZiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZS5vYnNlcnZlJywg
J2Z1bmN0aW9uJyk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBlb2YgV2ViS2l0TXV0
YXRpb25PYnNlcnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCcsICdmdW5jdGlvbicpOwotICAgIHdp
bmRvdy5vYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykg
eyB9KTsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3R5cGVvZiBvYnNlcnZlci5vYnNlcnZl
JywgJ2Z1bmN0aW9uJyk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBlb2Ygb2JzZXJ2
ZXIuZGlzY29ubmVjdCcsICdmdW5jdGlvbicpOwotfQotCiBkZXNjcmlwdGlvbignVGVzdCB0aGUg
Y29uc3RydWN0b3Igb2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlcicpOwogCi1ydW5UZXN0KCk7Citz
aG91bGRCZU5vbk51bGwoJ3dpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyJyk7CitzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3R5cGVvZiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZS5v
YnNlcnZlJywgJ2Z1bmN0aW9uJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3R5cGVvZiBXZWJL
aXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZS5kaXNjb25uZWN0JywgJ2Z1bmN0aW9uJyk7Cit3
aW5kb3cub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMp
IHsgfSk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3R5cGVvZiBvYnNlcnZlci5vYnNlcnZlJywg
J2Z1bmN0aW9uJyk7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3R5cGVvZiBvYnNlcnZlci5kaXNj
b25uZWN0JywgJ2Z1bmN0aW9uJyk7CisKK3Nob3VsZFRocm93KCduZXcgTXV0YXRpb25PYnNlcnZl
cih7IGhhbmRsZUV2ZW50OiBmdW5jdGlvbigpIHt9IH0pJyk7CitzaG91bGRUaHJvdygnbmV3IE11
dGF0aW9uT2JzZXJ2ZXIoe30pJyk7CitzaG91bGRUaHJvdygnbmV3IE11dGF0aW9uT2JzZXJ2ZXIo
NDIpJyk7CitzaG91bGRUaHJvdygnbmV3IE11dGF0aW9uT2JzZXJ2ZXIoImZvbyIpJyk7CiA8L3Nj
cmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48
L3NjcmlwdD4KIDwvYm9keT4KLTwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191879</attachid>
            <date>2013-03-06 18:07:35 -0800</date>
            <delta_ts>2013-03-07 13:48:20 -0800</delta_ts>
            <desc>WIP: try to fix JSC build</desc>
            <filename>bug-91406-20130306180340.patch</filename>
            <type>text/plain</type>
            <size>18869</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg3NTIwZThmMDc2Mzdh
NWUwZWZkNDRlZjUxN2VkY2I2OWNkZmM0Ni4uNzA0MGY2YTI5NGU0OWMxOWVmOWQyODc0YTAwN2E4
ZjViODNjN2ZlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEzLTAzLTA2ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE11dGF0aW9uQ2FsbGJhY2sg
c2hvdWxkIGJlIGEgV2ViSURMICdjYWxsYmFjaycsIG5vdCBhIFtDYWxsYmFja10gaW50ZXJmYWNl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRpb25DYWxsYmFjazo6Y2FsbCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKEpTTXV0YXRpb25DYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTTXV0YXRp
b25PYnNlcnZlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU011dGF0aW9uT2JzZXJ2ZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOE11dGF0aW9uQ2FsbGJhY2s6OlY4TXV0YXRpb25DYWxsYmFjayk6CisgICAgICAgIChX
ZWJDb3JlOjpWOE11dGF0aW9uQ2FsbGJhY2s6OmNhbGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L1Y4TXV0YXRpb25DYWxsYmFjay5oOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkNhbGxi
YWNrOjpjcmVhdGUpOgorICAgICAgICAoVjhNdXRhdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4TXV0YXRpb25PYnNlcnZlcjo6Y29uc3RydWN0b3JDdXN0b20pOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvbkNhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KE11dGF0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9uT2JzZXJ2ZXI6OmRlbGl2ZXIpOgorCiAyMDEzLTAz
LTA2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNd
IFN5bnRoZXRpYyBSZXNvdXJjZVJlc3BvbnNlcyBjYW5ub3QgYmUgc2VudCBvdmVyIElQQyB3aXRo
b3V0IGxvc2luZyBtb3N0IGluZm9ybWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcAppbmRleCAwZjRjOTE3YmUzNzRjZmY0MWMyMmU1
ZmE3YWY2YTg2NWYxOGE2NTgyLi5hNDFiN2MxM2ZjMTE4MmYxZTc4ZGIyYWE2MzQ0YjdlM2Y0N2Ex
YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2Fs
bGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxs
YmFjay5jcHAKQEAgLTI3LDYgKzI3LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJKU011dGF0aW9uQ2FsbGJhY2suaCIKIAorI2luY2x1ZGUgIkpTRE9NR2xvYmFsT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNNYWluVGhyZWFkRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiSlNNdXRhdGlv
bk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiSlNNdXRhdGlvblJlY29yZC5oIgogI2luY2x1ZGUgIlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIKQEAgLTQ3LDI4ICs0OSwzNiBAQCBKU011dGF0aW9uQ2Fs
bGJhY2s6On5KU011dGF0aW9uQ2FsbGJhY2soKQogewogfQogCi1ib29sIEpTTXV0YXRpb25DYWxs
YmFjazo6aGFuZGxlRXZlbnQoTXV0YXRpb25SZWNvcmRBcnJheSogbXV0YXRpb25zLCBNdXRhdGlv
bk9ic2VydmVyKiBvYnNlcnZlcikKK3ZvaWQgSlNNdXRhdGlvbkNhbGxiYWNrOjpjYWxsKGNvbnN0
IFZlY3RvcjxSZWZQdHI8TXV0YXRpb25SZWNvcmQ+ID4mIG11dGF0aW9ucywgTXV0YXRpb25PYnNl
cnZlciogb2JzZXJ2ZXIpCiB7CiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmUHRyPEpTTXV0YXRpb25D
YWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1faXNvbGF0
ZWRXb3JsZC0+Z2xvYmFsRGF0YSgpKTsKIAogICAgIGlmICghbV9jYWxsYmFjaykKLSAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IG1f
Y2FsbGJhY2suZ2V0KCk7CisKKyAgICAvLyBGSVhNRTogVGhpcyBjaGVjayBzaG91bGQgYmUgdW5u
ZWNlc3NhcnksIEpTTXV0YXRpb25PYnNlcnZlciB3aWxsIHRocm93IGlmIG1fY2FsbGJhY2sgaXNu
J3QgYSBmdW5jdGlvbgorICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVOb25lKQorICAgICAgICByZXR1cm47CiAKICAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29u
dGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgQVNTRVJU
KGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChjb250ZXh0LCBtX2lzb2xhdGVkV29ybGQuZ2V0
KCkpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwog
CiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbXV0YXRpb25MaXN0OwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbXV0YXRpb25zLT5zaXplKCk7ICsraSkKLSAgICAgICAgbXV0YXRpb25MaXN0
LmFwcGVuZCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbXV0YXRpb25zLT5hdChpKS5nZXQoKSkp
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbXV0YXRpb25zLnNpemUoKTsgKytpKQorICAg
ICAgICBtdXRhdGlvbkxpc3QuYXBwZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBtdXRhdGlv
bnNbaV0uZ2V0KCkpKTsKIAogICAgIEpTVmFsdWUganNPYnNlcnZlciA9IHRvSlMoZXhlYywgZ2xv
YmFsT2JqZWN0LCBvYnNlcnZlcik7CiAKQEAgLTc2LDEwICs4NiwxNiBAQCBib29sIEpTTXV0YXRp
b25DYWxsYmFjazo6aGFuZGxlRXZlbnQoTXV0YXRpb25SZWNvcmRBcnJheSogbXV0YXRpb25zLCBN
dXRhdGlvbk9icwogICAgIGFyZ3MuYXBwZW5kKGNvbnN0cnVjdEFycmF5KGV4ZWMsIDAsIGdsb2Jh
bE9iamVjdCwgbXV0YXRpb25MaXN0KSk7CiAgICAgYXJncy5hcHBlbmQoanNPYnNlcnZlcik7CiAK
LSAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9IGZhbHNlOwotICAgIC8vIEZJWE1FOiBFeHRyYWN0
IGludm9rZUNhbGxiYWNrKCkgbWV0aG9kLgotICAgIEpTQ2FsbGJhY2tEYXRhKG1fY2FsbGJhY2su
Z2V0KCksIGdsb2JhbE9iamVjdCkuaW52b2tlQ2FsbGJhY2soanNPYnNlcnZlciwgYXJncywgJnJh
aXNlZEV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuICFyYWlzZWRFeGNlcHRpb247CisgICAgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpp
bnN0cnVtZW50RnVuY3Rpb25DYWxsKGNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CisKKyAg
ICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwganNPYnNlcnZlciwgYXJncyk7CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENhbGxGdW5jdGlvbihjb29raWUpOworICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0
YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKKyAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
dXRhdGlvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9u
Q2FsbGJhY2suaAppbmRleCA3NmUwODNjYmEwODFjYzZkNWZmMDhhMzkxN2I4YTFkOGNlMDJkYWQ3
Li44MmE2OWVkOTgyMDMwOTEwODFjMzA2Y2ZjMzg4ZDBhMGFlZjNhY2ZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suaApAQCAtMjcsMTIgKzI3
LDE2IEBACiAjZGVmaW5lIEpTTXV0YXRpb25DYWxsYmFja19oCiAKICNpbmNsdWRlICJBY3RpdmVE
T01DYWxsYmFjay5oIgotI2luY2x1ZGUgIkpTQ2FsbGJhY2tEYXRhLmgiCisjaW5jbHVkZSAiRE9N
V3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUg
PGhlYXAvV2Vhay5oPgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEpTRE9NR2xvYmFs
T2JqZWN0OworCiBjbGFzcyBKU011dGF0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgTXV0YXRpb25DYWxs
YmFjaywgcHVibGljIEFjdGl2ZURPTUNhbGxiYWNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxKU011dGF0aW9uQ2FsbGJhY2s+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFj
aywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTQyLDcgKzQ2LDcgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB+SlNNdXRhdGlvbkNhbGxiYWNrKCk7CiAKLSAgICB2aXJ0dWFs
IGJvb2wgaGFuZGxlRXZlbnQoTXV0YXRpb25SZWNvcmRBcnJheSogbXV0YXRpb25zLCBNdXRhdGlv
bk9ic2VydmVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbGwoY29uc3QgVmVjdG9y
PFJlZlB0cjxNdXRhdGlvblJlY29yZD4gPiYsIE11dGF0aW9uT2JzZXJ2ZXIqKSBPVkVSUklERTsK
IAogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVy
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAKaW5kZXggYzdjOTll
N2U1ZDlmNTBhN2NhYmE3YThmNmI3MGIyODY5YzQ0ZTg3OC4uZWU2MWQwNzVlMWY3NTJkZDZjNTBk
NGVmYzYzMDYwYmQ3ZGQzZDIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwCkBAIC00OSwxMCArNDksOSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpTTXV0YXRpb25PYnNlcnZlckNvbnN0cnVjdG9y
Ojpjb25zdHJ1Y3RKU011dGF0aW9uTwogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAogICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS5nZXRPYmplY3QoKTsKLSAgICBpZiAoIW9iamVjdCkg
ewotICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIH0KKyAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKKyAgICBpZiAoIW9iamVjdCB8fCBnZXRDYWxsRGF0YShvYmplY3Qs
IGNhbGxEYXRhKSA9PSBDYWxsVHlwZU5vbmUpCisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihleGVjLCAiQ2FsbGJhY2sgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uIik7CiAKICAgICBK
U011dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1Y3RvcioganNDb25zdHJ1Y3RvciA9IGpzQ2FzdDxKU011
dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgpKTsKICAgICBSZWZQdHI8
SlNNdXRhdGlvbkNhbGxiYWNrPiBjYWxsYmFjayA9IEpTTXV0YXRpb25DYWxsYmFjazo6Y3JlYXRl
KG9iamVjdCwganNDb25zdHJ1Y3Rvci0+Z2xvYmFsT2JqZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5jcHAKaW5kZXggZGIyY2IwMWYy
Mzc5YmJmZjg4NTE4ZWFkNmZlOWY3NjgxNTI3YjU5OS4uYTY4N2E4Y2E4N2Q0OWFlZGViMDM3ZGVl
YWMyY2E5MGFjNjdlNWZhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhNdXRhdGlvbkNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OE11dGF0aW9uQ2FsbGJhY2suY3BwCkBAIC0yNiwxNiArMjYsMTYgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJWOE11dGF0aW9uQ2FsbGJhY2suaCIKIAorI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCiAjaW5j
bHVkZSAiVjhCaW5kaW5nLmgiCi0jaW5jbHVkZSAiVjhDYWxsYmFjay5oIgogI2luY2x1ZGUgIlY4
TXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIlY4TXV0YXRpb25SZWNvcmQuaCIKICNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVY4TXV0YXRp
b25DYWxsYmFjazo6VjhNdXRhdGlvbkNhbGxiYWNrKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY2Fs
bGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gb3duZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlKQorVjhNdXRhdGlvbkNhbGxiYWNrOjpW
OE11dGF0aW9uQ2FsbGJhY2sodjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+IGNhbGxiYWNrLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG93bmVy
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICA6IEFjdGl2ZURPTUNhbGxiYWNrKGNvbnRleHQp
CiAgICAgLCBtX2NhbGxiYWNrKGNhbGxiYWNrKQogICAgICwgbV93b3JsZChET01XcmFwcGVyV29y
bGQ6Omlzb2xhdGVkV29ybGQodjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKSkpCkBAIC00NCw0NCAr
NDQsNDEgQEAgVjhNdXRhdGlvbkNhbGxiYWNrOjpWOE11dGF0aW9uQ2FsbGJhY2sodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjYWxsYmFjaywgU2NyaXB0RXgKICAgICBtX2NhbGxiYWNrLmdldCgpLk1h
a2VXZWFrKGlzb2xhdGUsIHRoaXMsICZWOE11dGF0aW9uQ2FsbGJhY2s6OndlYWtDYWxsYmFjayk7
CiB9CiAKLWJvb2wgVjhNdXRhdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVudChNdXRhdGlvblJlY29y
ZEFycmF5KiBtdXRhdGlvbnMsIE11dGF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyKQordm9pZCBWOE11
dGF0aW9uQ2FsbGJhY2s6OmNhbGwoY29uc3QgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4g
PiYgbXV0YXRpb25zLCBNdXRhdGlvbk9ic2VydmVyKiBvYnNlcnZlcikKIHsKLSAgICBBU1NFUlQo
bXV0YXRpb25zKTsKLSAgICBpZiAoIW11dGF0aW9ucykKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
ICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICByZXR1cm47CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAKICAgICB2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSB0b1Y4Q29udGV4dChzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCksIG1fd29ybGQuZ2V0KCkpOwogICAgIGlmICh2OENvbnRleHQuSXNFbXB0
eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOwogCiAgICAgdjg6OkNv
bnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4dCk7CiAKLSAgICB2ODo6TG9jYWw8djg6OkFycmF5
PiBtdXRhdGlvbnNBcnJheSA9IHY4OjpBcnJheTo6TmV3KG11dGF0aW9ucy0+c2l6ZSgpKTsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG11dGF0aW9ucy0+c2l6ZSgpOyArK2kpCi0gICAgICAg
IG11dGF0aW9uc0FycmF5LT5TZXQodjhJbnRlZ2VyKGksIHY4Q29udGV4dC0+R2V0SXNvbGF0ZSgp
KSwgdG9WOChtdXRhdGlvbnMtPmF0KGkpLmdldCgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCks
IHY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+
IGNhbGxiYWNrID0gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46Ok5ldyhtX2NhbGxiYWNrLmdldCgp
KTsKKworICAgIHY4OjpIYW5kbGU8djg6OkFycmF5PiBtdXRhdGlvbnNBcnJheSA9IHY4OjpBcnJh
eTo6TmV3KG11dGF0aW9ucy5zaXplKCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbXV0
YXRpb25zLnNpemUoKTsgKytpKQorICAgICAgICBtdXRhdGlvbnNBcnJheS0+U2V0KHY4SW50ZWdl
cihpLCB2OENvbnRleHQtPkdldElzb2xhdGUoKSksIHRvVjgobXV0YXRpb25zW2ldLmdldCgpLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpKSk7CiAKICAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb2JzZXJ2ZXJIYW5kbGUgPSB0b1Y4KG9ic2VydmVyLCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpKTsKICAgICBp
ZiAob2JzZXJ2ZXJIYW5kbGUuSXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghaXNTY3JpcHRDb250
cm9sbGVyVGVybWluYXRpbmcoKSkKICAgICAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKCFvYnNlcnZlckhhbmRs
ZS0+SXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybjsKIAot
ICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7Ci0gICAgICAgIG11dGF0aW9uc0Fy
cmF5LAotICAgICAgICBvYnNlcnZlckhhbmRsZQotICAgIH07CisgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB0aGlzT2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChvYnNlcnZl
ckhhbmRsZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsgbXV0YXRpb25z
QXJyYXksIG9ic2VydmVySGFuZGxlIH07CiAKLSAgICBib29sIGNhbGxiYWNrUmV0dXJuVmFsdWUg
PSBmYWxzZTsKLSAgICByZXR1cm4gIWludm9rZUNhbGxiYWNrKG1fY2FsbGJhY2suZ2V0KCksIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qob2JzZXJ2ZXJIYW5kbGUpLCAyLCBhcmd2LCBjYWxs
YmFja1JldHVyblZhbHVlLCBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOworICAgIHY4OjpUcnlD
YXRjaCBleGNlcHRpb25DYXRjaGVyOworICAgIGV4Y2VwdGlvbkNhdGNoZXIuU2V0VmVyYm9zZSh0
cnVlKTsKKyAgICBTY3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb25XaXRoSW5zdHJ1bWVudGF0
aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2FsbGJhY2ssIHRoaXNPYmplY3QsIDIsIGFy
Z3YpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5oCmluZGV4IGM0Zjk4ZmVhYmNlMzQzNGZlMzFh
ZjNiMGMwNzk4MmU0M2E1MjYwZGEuLmIwNzdjZDFkZTQ3MDBkOTNkMGVmNjkwZTJjZjRiZTY3NWVh
ZTFkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25D
YWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxs
YmFjay5oCkBAIC0zOSwxOCArMzksMTcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsK
IAogY2xhc3MgVjhNdXRhdGlvbkNhbGxiYWNrIDogcHVibGljIE11dGF0aW9uQ2FsbGJhY2ssIHB1
YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
VjhNdXRhdGlvbkNhbGxiYWNrPiBjcmVhdGUodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG93
bmVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxWOE11dGF0
aW9uQ2FsbGJhY2s+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gY2FsbGJhY2ssIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb3du
ZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIHsKLSAgICAgICAgQVNTRVJUKHZhbHVlLT5J
c09iamVjdCgpKTsKICAgICAgICAgQVNTRVJUKGNvbnRleHQpOwotICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFY4TXV0YXRpb25DYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KHZhbHVlKSwgY29udGV4dCwgb3duZXIsIGlzb2xhdGUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBWOE11dGF0aW9uQ2FsbGJhY2soY2FsbGJhY2ssIGNvbnRleHQsIG93bmVyLCBpc29s
YXRlKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KE11dGF0aW9uUmVj
b3JkQXJyYXkqLCBNdXRhdGlvbk9ic2VydmVyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGNhbGwoY29uc3QgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4gPiYsIE11dGF0aW9uT2Jz
ZXJ2ZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKIHByaXZhdGU6
Ci0gICAgVjhNdXRhdGlvbkNhbGxiYWNrKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOwor
ICAgIFY4TXV0YXRpb25DYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4sIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOwog
CiAgICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4OjpJc29sYXRlKiBpc29sYXRlLCB2ODo6
UGVyc2lzdGVudDx2ODo6VmFsdWU+IHdyYXBwZXIsIHZvaWQqIHBhcmFtZXRlcikKICAgICB7CkBA
IC01OCw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIG9iamVjdC0+bV9jYWxsYmFjay5jbGVh
cigpOwogICAgIH0KIAotICAgIFNjb3BlZFBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gbV9jYWxsYmFj
azsKKyAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpGdW5jdGlvbj4gbV9jYWxsYmFjazsKICAgICBS
ZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0YXRpb25PYnNlcnZlckN1c3RvbS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3Vz
dG9tLmNwcAppbmRleCA2ODY3ZjY5NTFmZTYyN2QwOTc2MTBmOTQ3MzkwYzA3OGRiYzU0ODZlLi43
MzViMGM3ZjgyNGU4ZjE0Y2M0MmFlNmI4NWQ2ZDhiODQ0OTI2MGY1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNdXRhdGlvbk9ic2Vy
dmVyQ3VzdG9tLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OE11dGF0aW9uT2JzZXJ2ZXI6OmNvbnN0cnVjdG9yQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
CiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGFyZyA9IGFyZ3NbMF07Ci0gICAg
aWYgKCFhcmctPklzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oVFlQ
RV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKKyAgICBpZiAoIWFyZy0+SXNGdW5j
dGlvbigpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoIkNhbGxiYWNrIGFyZ3VtZW50
IG11c3QgYmUgYSBmdW5jdGlvbiIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKIAotICAg
IFJlZlB0cjxNdXRhdGlvbkNhbGxiYWNrPiBjYWxsYmFjayA9IFY4TXV0YXRpb25DYWxsYmFjazo6
Y3JlYXRlKGFyZywgY29udGV4dCwgd3JhcHBlciwgYXJncy5HZXRJc29sYXRlKCkpOworICAgIFJl
ZlB0cjxNdXRhdGlvbkNhbGxiYWNrPiBjYWxsYmFjayA9IFY4TXV0YXRpb25DYWxsYmFjazo6Y3Jl
YXRlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2FzdChhcmcpLCBjb250ZXh0LCB3cmFwcGVy
LCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgUmVmUHRyPE11dGF0aW9uT2JzZXJ2ZXI+IG9ic2Vy
dmVyID0gTXV0YXRpb25PYnNlcnZlcjo6Y3JlYXRlKGNhbGxiYWNrLnJlbGVhc2UoKSk7CiAKICAg
ICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdpdGhXcmFwcGVyKG9ic2VydmVyLnJlbGVh
c2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJh
dGlvbjo6RGVwZW5kZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlv
bkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25DYWxsYmFjay5oCmluZGV4
IGYzYzI1ODgxNjE0YTc0NjQ2ZGMxZTVmOWE5M2FiNzI0MjM5ODBlNjQuLmE2MGNlOGIxYTYxOTFj
NTA1NTBhMzE0NWU4NjFkNDUwMzJmOGMzNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbkNhbGxiYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uQ2Fs
bGJhY2suaApAQCAtNDAsMTMgKzQwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE11
dGF0aW9uUmVjb3JkOwogY2xhc3MgTXV0YXRpb25PYnNlcnZlcjsKIAotdHlwZWRlZiBWZWN0b3I8
UmVmUHRyPE11dGF0aW9uUmVjb3JkPiA+IE11dGF0aW9uUmVjb3JkQXJyYXk7Ci0KIGNsYXNzIE11
dGF0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxNdXRhdGlvbkNhbGxiYWNrPiB7CiBw
dWJsaWM6CiAgICAgdmlydHVhbCB+TXV0YXRpb25DYWxsYmFjaygpIHsgfQogCi0gICAgdmlydHVh
bCBib29sIGhhbmRsZUV2ZW50KE11dGF0aW9uUmVjb3JkQXJyYXkqLCBNdXRhdGlvbk9ic2VydmVy
KikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYWxsKGNvbnN0IFZlY3RvcjxSZWZQdHI8TXV0YXRp
b25SZWNvcmQ+ID4mLCBNdXRhdGlvbk9ic2VydmVyKikgPSAwOwogICAgIHZpcnR1YWwgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0ID0gMDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCA1NGU3ODE1NDhi
ZDc1ZDY0OWJlMWVlOTk3ZWNlMGIxOTkyNmQxODdlLi5kYTgwMDEzN2EzM2JmZjc2YTg5MjY4NjQ5
N2FiZTZkNjk4ZjYwZDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25P
YnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3Bw
CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyKCkKICAg
ICBWZWN0b3I8UmVmUHRyPE11dGF0aW9uUmVjb3JkPiA+IHJlY29yZHM7CiAgICAgcmVjb3Jkcy5z
d2FwKG1fcmVjb3Jkcyk7CiAKLSAgICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudCgmcmVjb3Jkcywg
dGhpcyk7CisgICAgbV9jYWxsYmFjay0+Y2FsbChyZWNvcmRzLCB0aGlzKTsKIH0KIAogdm9pZCBN
dXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRpb25zKCkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5NDUwNzhhMDY4
ZjFjMWUxOGM3YzBkZTQwOTRjYzQzMWNjNzZjMDE2Li41ZjI2MDI3YjE2YWEwZTYyYWZjNTRkZDAw
NmU1ZTIyZmExYmRhNjJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDMtMDYgIEFkYW0g
S2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTXV0YXRpb25DYWxsYmFjayBz
aG91bGQgYmUgYSBXZWJJREwgJ2NhbGxiYWNrJywgbm90IGEgW0NhbGxiYWNrXSBpbnRlcmZhY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkxNDA2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVyLWNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLW9ic2Vy
dmVyLWNvbnN0cnVjdG9yLmh0bWw6CisKIDIwMTMtMDMtMDYgIFJhZmFlbCBXZWluc3RlaW4gIDxy
YWZhZWx3QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZzogcmVi
YXNlbGluZXMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2Vy
dmVyL211dGF0aW9uLW9ic2VydmVyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRpb24tb2JzZXJ2ZXItY29uc3RydWN0
b3ItZXhwZWN0ZWQudHh0CmluZGV4IDJiZWIzZTg2ZTcwZTI0ODVhNzcyMDE4MDc3NjQyODU5MTc5
Mjc0OWQuLmYxM2VmODJlN2VkNzcwNzk3YTFlMzc3YWQwMmIyODA0NDNiMGM4ZTkgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRpb24tb2JzZXJ2
ZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011
dGF0aW9uT2JzZXJ2ZXIvbXV0YXRpb24tb2JzZXJ2ZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0
CkBAIC04LDYgKzgsMTAgQEAgUEFTUyB0eXBlb2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5wcm90
b3R5cGUub2JzZXJ2ZSBpcyAiZnVuY3Rpb24iCiBQQVNTIHR5cGVvZiBXZWJLaXRNdXRhdGlvbk9i
c2VydmVyLnByb3RvdHlwZS5kaXNjb25uZWN0IGlzICJmdW5jdGlvbiIKIFBBU1MgdHlwZW9mIG9i
c2VydmVyLm9ic2VydmUgaXMgImZ1bmN0aW9uIgogUEFTUyB0eXBlb2Ygb2JzZXJ2ZXIuZGlzY29u
bmVjdCBpcyAiZnVuY3Rpb24iCitQQVNTIG5ldyBNdXRhdGlvbk9ic2VydmVyKHsgaGFuZGxlRXZl
bnQ6IGZ1bmN0aW9uKCkge30gfSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2FsbGJhY2sg
YXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBuZXcgTXV0YXRpb25PYnNlcnZlcih7
fSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2FsbGJhY2sgYXJndW1lbnQgbXVzdCBiZSBh
IGZ1bmN0aW9uLgorUEFTUyBuZXcgTXV0YXRpb25PYnNlcnZlcig0MikgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogQ2FsbGJhY2sgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uLgorUEFTUyBu
ZXcgTXV0YXRpb25PYnNlcnZlcigiZm9vIikgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogQ2Fs
bGJhY2sgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVyLWNvbnN0cnVjdG9yLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVy
LWNvbnN0cnVjdG9yLmh0bWwKaW5kZXggNjVhMGQ1MjZhNmI4NDMxOTg2MDgwYmFlMWYzNjQ3MzEx
NDk5YTc1Yi4uNjU0OTk5MWI2ZmRiNjk3NjZjNWFjNzk5ZGRlYzA4MTVkOWFhNWY2MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1vYnNl
cnZlci1jb25zdHJ1Y3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9u
T2JzZXJ2ZXIvbXV0YXRpb24tb2JzZXJ2ZXItY29uc3RydWN0b3IuaHRtbApAQCAtMSwyOCArMSwy
MCBAQAogPCFET0NUWVBFIGh0bWw+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgY2hhcnNldD0idXRm
LTgiPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Ci08dGl0bGU+PC90aXRsZT4KLTwvaGVhZD4KIDxib2R5PgotPHAgaWQ9ZGVzY3JpcHRp
b24+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQ+Ci0KLWZ1bmN0aW9u
IHJ1blRlc3QoKSB7Ci0gICAgc2hvdWxkQmVOb25OdWxsKCd3aW5kb3cuV2ViS2l0TXV0YXRpb25P
YnNlcnZlcicpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndHlwZW9mIFdlYktpdE11dGF0
aW9uT2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmUnLCAnZnVuY3Rpb24nKTsKLSAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ3R5cGVvZiBXZWJLaXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZS5k
aXNjb25uZWN0JywgJ2Z1bmN0aW9uJyk7Ci0gICAgd2luZG93Lm9ic2VydmVyID0gbmV3IE11dGF0
aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7IH0pOwotICAgIHNob3VsZEJlRXF1YWxU
b1N0cmluZygndHlwZW9mIG9ic2VydmVyLm9ic2VydmUnLCAnZnVuY3Rpb24nKTsKLSAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ3R5cGVvZiBvYnNlcnZlci5kaXNjb25uZWN0JywgJ2Z1bmN0aW9u
Jyk7Ci19Ci0KIGRlc2NyaXB0aW9uKCdUZXN0IHRoZSBjb25zdHJ1Y3RvciBvZiBXZWJLaXRNdXRh
dGlvbk9ic2VydmVyJyk7CiAKLXJ1blRlc3QoKTsKK3Nob3VsZEJlTm9uTnVsbCgnd2luZG93Lldl
YktpdE11dGF0aW9uT2JzZXJ2ZXInKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygndHlwZW9mIFdl
YktpdE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmUnLCAnZnVuY3Rpb24nKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygndHlwZW9mIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90
eXBlLmRpc2Nvbm5lY3QnLCAnZnVuY3Rpb24nKTsKK3dpbmRvdy5vYnNlcnZlciA9IG5ldyBNdXRh
dGlvbk9ic2VydmVyKGZ1bmN0aW9uKG11dGF0aW9ucykgeyB9KTsKK3Nob3VsZEJlRXF1YWxUb1N0
cmluZygndHlwZW9mIG9ic2VydmVyLm9ic2VydmUnLCAnZnVuY3Rpb24nKTsKK3Nob3VsZEJlRXF1
YWxUb1N0cmluZygndHlwZW9mIG9ic2VydmVyLmRpc2Nvbm5lY3QnLCAnZnVuY3Rpb24nKTsKKwor
c2hvdWxkVGhyb3coJ25ldyBNdXRhdGlvbk9ic2VydmVyKHsgaGFuZGxlRXZlbnQ6IGZ1bmN0aW9u
KCkge30gfSknKTsKK3Nob3VsZFRocm93KCduZXcgTXV0YXRpb25PYnNlcnZlcih7fSknKTsKK3No
b3VsZFRocm93KCduZXcgTXV0YXRpb25PYnNlcnZlcig0MiknKTsKK3Nob3VsZFRocm93KCduZXcg
TXV0YXRpb25PYnNlcnZlcigiZm9vIiknKTsKIDwvc2NyaXB0PgogPHNjcmlwdCBzcmM9Ii4uLy4u
L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgotPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192081</attachid>
            <date>2013-03-07 13:48:23 -0800</date>
            <delta_ts>2013-03-11 12:18:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91406-20130307134427.patch</filename>
            <type>text/plain</type>
            <size>19747</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDA3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzg3NTIwZThmMDc2Mzdh
NWUwZWZkNDRlZjUxN2VkY2I2OWNkZmM0Ni4uNDM3YzU4NTk1YWJlYTcwZmI2OTk5NmJmMjQ2M2Fj
ODZlOGQ2YjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEzLTAzLTA2ICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIE11dGF0aW9uQ2FsbGJhY2sg
c2hvdWxkIGJlIGEgV2ViSURMICdjYWxsYmFjaycsIG5vdCBhIFtDYWxsYmFja10gaW50ZXJmYWNl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTQwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWM6IGh0
dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNtdXRhdGlvbmNhbGxiYWNrCisKKyAgICAgICAgQmVz
aWRlcyBubyBsb25nZXIgY2FsbGluZyBoYW5kbGVFdmVudCBtZXRob2RzIG9uIHBhc3NlZC1pbiBv
YmplY3RzLAorICAgICAgICB0aHJvdyBhIFR5cGVFcnJvciBpZiBhIG5vbi1mdW5jdGlvbiBpcyBw
YXNzZWQgdG8gdGhlIE11dGF0aW9uT2JzZXJ2ZXIgY29uc3RydWN0b3IuCisgICAgICAgIFRoaXMg
aXMgcGVyIFdlYklETDogaHR0cDovL3d3dy53My5vcmcvVFIvV2ViSURMLyNlcy1jYWxsYmFjay1m
dW5jdGlvbgorCisgICAgICAgIFVwZGF0ZWQgTXV0YXRpb25PYnNlcnZlciBjb25zdHJ1Y3RvciB0
ZXN0cyB0byBleGVyY2lzZSBUeXBlRXJyb3ItdGhyb3dpbmcgYmVoYXZpb3IuCisKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNNdXRhdGlvbkNhbGxiYWNrOjpjYWxsKTogQ2FsbCB0aGUgY2FsbGJhY2sgZGlyZWN0bHkgaW5z
dGVhZCBvZiBoYW5kaW5nIG9mZiB0byBKU0NhbGxiYWNrRGF0YTsgbWFrZSByZXR1cm4gdmFsdWUg
dm9pZC4KKyAgICAgICAgVXNlIGpzQXJyYXkoKSB0byBjb252ZXJ0IGZyb20gV1RGOjpWZWN0b3Ig
LT4gSlNBcnJheS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suaDoK
KyAgICAgICAgKEpTTXV0YXRpb25DYWxsYmFjayk6IFJlbmFtZSBoYW5kbGVFdmVudCgpIHRvIGNh
bGwoKSwgbWFrZSBpdCB2b2lkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNl
cnZlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU011dGF0aW9uT2JzZXJ2ZXJDb25z
dHJ1Y3Rvcjo6Y29uc3RydWN0SlNNdXRhdGlvbk9ic2VydmVyKTogVGhyb3cgaWYgcGFzc2VkIGEg
bm9uLWZ1bmN0aW9uLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uQ2FsbGJhY2s6OlY4TXV0YXRpb25DYWxs
YmFjayk6IFRha2UgYSB2ODo6RnVuY3Rpb24gaW5zdGVhZCBvZiBhIHY4OjpPYmplY3QuCisgICAg
ICAgIChXZWJDb3JlOjpWOE11dGF0aW9uQ2FsbGJhY2s6OmNhbGwpOiBDYWxsIHRoZSBjYWxsYmFj
ayBkaXJlY3RseSBpbnN0ZWFkIG9mIGhhbmRpbmcgb2ZmIHRvIGludm9rZUNhbGxiYWNrKCk7IG1h
a2UgcmV0dXJuIHZhbHVlIHZvaWQuCisgICAgICAgIFVzZSB2OEFycmF5KCkgdG8gY29udmVydCBm
b3JtIFdURjo6VmVjdG9yIC0+IEpTQXJyYXkuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhNdXRh
dGlvbkNhbGxiYWNrLmg6CisgICAgICAgIChXZWJDb3JlOjpWOE11dGF0aW9uQ2FsbGJhY2s6OmNy
ZWF0ZSk6IFRha2UgYSB2ODo6RnVuY3Rpb24gaW5zdGVhZCBvZiBhIHY4OjpPYmplY3QuCisgICAg
ICAgIChWOE11dGF0aW9uQ2FsbGJhY2spOiBkaXR0bworICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOE11dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhN
dXRhdGlvbk9ic2VydmVyOjpjb25zdHJ1Y3RvckN1c3RvbSk6IFRocm93IGlmIHBhc3NlZCBhIG5v
bi1mdW5jdGlvbiwgY2FzdCB0byBhIHY4OjpGdW5jdGlvbiB3aGVuIGNvbnN0cnVjdGluZyBjYWxs
YmFjay4KKyAgICAgICAgKiBkb20vTXV0YXRpb25DYWxsYmFjay5oOgorICAgICAgICAoV2ViQ29y
ZSk6IFJlbW92ZSB1bm5lY2Vzc2FyeSB0eXBlZGVmLgorICAgICAgICAoTXV0YXRpb25DYWxsYmFj
ayk6IFJlbmFtZSBoYW5kbGVFdmVudCgpIHRvIGNhbGwoKSwgbWFrZSBpdCB2b2lkLgorICAgICAg
ICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9u
T2JzZXJ2ZXI6OmRlbGl2ZXIpOiBVcGRhdGUgTXV0YXRpb25DYWxsYmFjayBtZXRob2QgbmFtZS4K
KwogMjAxMy0wMy0wNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTWFjXSBTeW50aGV0aWMgUmVzb3VyY2VSZXNwb25zZXMgY2Fubm90IGJlIHNlbnQgb3Zl
ciBJUEMgd2l0aG91dCBsb3NpbmcgbW9zdCBpbmZvcm1hdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5jcHAKaW5kZXggMGY0YzkxN2JlMzc0
Y2ZmNDFjMjJlNWZhN2FmNmE4NjVmMThhNjU4Mi4uMzkwZGJkYTg5M2I4ODdiMDY1YzdhNGY2ZjY2
ZjdmYjE3ZmRkNjhmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNN
dXRhdGlvbkNhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011
dGF0aW9uQ2FsbGJhY2suY3BwCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiSlNNdXRhdGlvbkNhbGxiYWNrLmgiCiAKKyNpbmNsdWRlICJKU0RPTUdsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgogI2luY2x1ZGUg
IkpTTXV0YXRpb25PYnNlcnZlci5oIgogI2luY2x1ZGUgIkpTTXV0YXRpb25SZWNvcmQuaCIKICNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC00NywzOSArNDksNTAgQEAgSlNN
dXRhdGlvbkNhbGxiYWNrOjp+SlNNdXRhdGlvbkNhbGxiYWNrKCkKIHsKIH0KIAotYm9vbCBKU011
dGF0aW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KE11dGF0aW9uUmVjb3JkQXJyYXkqIG11dGF0aW9u
cywgTXV0YXRpb25PYnNlcnZlciogb2JzZXJ2ZXIpCit2b2lkIEpTTXV0YXRpb25DYWxsYmFjazo6
Y2FsbChjb25zdCBWZWN0b3I8UmVmUHRyPE11dGF0aW9uUmVjb3JkPiA+JiBtdXRhdGlvbnMsIE11
dGF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyKQogewogICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2so
KSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxK
U011dGF0aW9uQ2FsbGJhY2s+IHByb3RlY3QodGhpcyk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9j
ayhtX2lzb2xhdGVkV29ybGQtPmdsb2JhbERhdGEoKSk7CiAKICAgICBpZiAoIW1fY2FsbGJhY2sp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworCisgICAgSlNWYWx1ZSBj
YWxsYmFjayA9IG1fY2FsbGJhY2suZ2V0KCk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAg
Q2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsYmFjaywgY2FsbERhdGEpOworICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmICghY29udGV4
dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKGNv
bnRleHQtPmlzRG9jdW1lbnQoKSk7CiAKICAgICBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gdG9KU0RPTUdsb2JhbE9iamVjdChjb250ZXh0LCBtX2lzb2xhdGVkV29ybGQuZ2V0KCkp
OwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogCi0g
ICAgTWFya2VkQXJndW1lbnRCdWZmZXIgbXV0YXRpb25MaXN0OwotICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbXV0YXRpb25zLT5zaXplKCk7ICsraSkKLSAgICAgICAgbXV0YXRpb25MaXN0LmFw
cGVuZCh0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCwgbXV0YXRpb25zLT5hdChpKS5nZXQoKSkpOwot
CiAgICAgSlNWYWx1ZSBqc09ic2VydmVyID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIG9ic2Vy
dmVyKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7Ci0gICAgYXJncy5hcHBlbmQo
Y29uc3RydWN0QXJyYXkoZXhlYywgMCwgZ2xvYmFsT2JqZWN0LCBtdXRhdGlvbkxpc3QpKTsKKyAg
ICBhcmdzLmFwcGVuZChqc0FycmF5KGV4ZWMsIGdsb2JhbE9iamVjdCwgbXV0YXRpb25zKSk7CiAg
ICAgYXJncy5hcHBlbmQoanNPYnNlcnZlcik7CiAKLSAgICBib29sIHJhaXNlZEV4Y2VwdGlvbiA9
IGZhbHNlOwotICAgIC8vIEZJWE1FOiBFeHRyYWN0IGludm9rZUNhbGxiYWNrKCkgbWV0aG9kLgot
ICAgIEpTQ2FsbGJhY2tEYXRhKG1fY2FsbGJhY2suZ2V0KCksIGdsb2JhbE9iamVjdCkuaW52b2tl
Q2FsbGJhY2soanNPYnNlcnZlciwgYXJncywgJnJhaXNlZEV4Y2VwdGlvbik7Ci0gICAgcmV0dXJu
ICFyYWlzZWRFeGNlcHRpb247CisgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91
dENoZWNrZXIuc3RhcnQoKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29v
a2llID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKGNvbnRl
eHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CisKKyAgICBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNh
bGwoZXhlYywgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwganNPYnNlcnZlciwgYXJncyk7
CisKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUp
OworICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsK
KworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmVwb3J0Q3VycmVudEV4
Y2VwdGlvbihleGVjKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suaAppbmRleCA3NmUwODNjYmEw
ODFjYzZkNWZmMDhhMzkxN2I4YTFkOGNlMDJkYWQ3Li44MmE2OWVkOTgyMDMwOTEwODFjMzA2Y2Zj
Mzg4ZDBhMGFlZjNhY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U011dGF0aW9uQ2FsbGJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011
dGF0aW9uQ2FsbGJhY2suaApAQCAtMjcsMTIgKzI3LDE2IEBACiAjZGVmaW5lIEpTTXV0YXRpb25D
YWxsYmFja19oCiAKICNpbmNsdWRlICJBY3RpdmVET01DYWxsYmFjay5oIgotI2luY2x1ZGUgIkpT
Q2FsbGJhY2tEYXRhLmgiCisjaW5jbHVkZSAiRE9NV3JhcHBlcldvcmxkLmgiCiAjaW5jbHVkZSAi
TXV0YXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgPGhlYXAvV2Vhay5oPgorI2luY2x1ZGUgPHJ1
bnRpbWUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKK2NsYXNzIEpTRE9NR2xvYmFsT2JqZWN0OworCiBjbGFzcyBKU011dGF0aW9u
Q2FsbGJhY2sgOiBwdWJsaWMgTXV0YXRpb25DYWxsYmFjaywgcHVibGljIEFjdGl2ZURPTUNhbGxi
YWNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU011dGF0aW9uQ2FsbGJhY2s+
IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKQEAgLTQyLDcgKzQ2LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+SlNNdXRh
dGlvbkNhbGxiYWNrKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoTXV0YXRpb25S
ZWNvcmRBcnJheSogbXV0YXRpb25zLCBNdXRhdGlvbk9ic2VydmVyKikgT1ZFUlJJREU7CisgICAg
dmlydHVhbCB2b2lkIGNhbGwoY29uc3QgVmVjdG9yPFJlZlB0cjxNdXRhdGlvblJlY29yZD4gPiYs
IE11dGF0aW9uT2JzZXJ2ZXIqKSBPVkVSUklERTsKIAogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9i
c2VydmVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25P
YnNlcnZlckN1c3RvbS5jcHAKaW5kZXggYzdjOTllN2U1ZDlmNTBhN2NhYmE3YThmNmI3MGIyODY5
YzQ0ZTg3OC4uMTZjMWIzN2I3YzczOWE4NjRhMzIyNDkxOTA2YTVmZDI3ZWJjNDA4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVyQ3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJD
dXN0b20uY3BwCkBAIC00OSwxMCArNDksOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IEpTTXV0YXRpb25PYnNlcnZlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU011dGF0aW9uTwogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGV4ZWMpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBleGVjLT5hcmd1bWVudCgwKS5n
ZXRPYmplY3QoKTsKLSAgICBpZiAoIW9iamVjdCkgewotICAgICAgICBzZXRET01FeGNlcHRpb24o
ZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOwotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgIH0KKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBpZiAo
IW9iamVjdCB8fCBvYmplY3QtPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKG9iamVjdCwgY2Fs
bERhdGEpID09IENhbGxUeXBlTm9uZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkNhbGxiYWNrIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5j
dGlvbiIpKTsKIAogICAgIEpTTXV0YXRpb25PYnNlcnZlckNvbnN0cnVjdG9yKiBqc0NvbnN0cnVj
dG9yID0ganNDYXN0PEpTTXV0YXRpb25PYnNlcnZlckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVl
KCkpOwogICAgIFJlZlB0cjxKU011dGF0aW9uQ2FsbGJhY2s+IGNhbGxiYWNrID0gSlNNdXRhdGlv
bkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkNhbGxiYWNrLmNw
cAppbmRleCBkYjJjYjAxZjIzNzliYmZmODg1MThlYWQ2ZmU5Zjc2ODE1MjdiNTk5Li40YzBlYTU0
YWI3MTM5OTg5ZTBlMTc0OGE0NzM0OGUwNTRmZGE4MGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5jcHAKQEAgLTI2LDE2ICsyNiwxNiBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlY4TXV0YXRpb25DYWxsYmFjay5oIgog
CisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLSNpbmNsdWRlICJWOENhbGxiYWNr
LmgiCiAjaW5jbHVkZSAiVjhNdXRhdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiVjhNdXRhdGlv
blJlY29yZC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotVjhNdXRhdGlvbkNhbGxiYWNrOjpWOE11dGF0aW9uQ2FsbGJhY2sodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjYWxsYmFjaywgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvd25lciwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCitWOE11
dGF0aW9uQ2FsbGJhY2s6OlY4TXV0YXRpb25DYWxsYmFjayh2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
bj4gY2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gb3duZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIDogQWN0aXZlRE9N
Q2FsbGJhY2soY29udGV4dCkKICAgICAsIG1fY2FsbGJhY2soY2FsbGJhY2spCiAgICAgLCBtX3dv
cmxkKERPTVdyYXBwZXJXb3JsZDo6aXNvbGF0ZWRXb3JsZCh2ODo6Q29udGV4dDo6R2V0Q3VycmVu
dCgpKSkKQEAgLTQ0LDQ0ICs0NCwzOCBAQCBWOE11dGF0aW9uQ2FsbGJhY2s6OlY4TXV0YXRpb25D
YWxsYmFjayh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxiYWNrLCBTY3JpcHRFeAogICAgIG1f
Y2FsbGJhY2suZ2V0KCkuTWFrZVdlYWsoaXNvbGF0ZSwgdGhpcywgJlY4TXV0YXRpb25DYWxsYmFj
azo6d2Vha0NhbGxiYWNrKTsKIH0KIAotYm9vbCBWOE11dGF0aW9uQ2FsbGJhY2s6OmhhbmRsZUV2
ZW50KE11dGF0aW9uUmVjb3JkQXJyYXkqIG11dGF0aW9ucywgTXV0YXRpb25PYnNlcnZlciogb2Jz
ZXJ2ZXIpCit2b2lkIFY4TXV0YXRpb25DYWxsYmFjazo6Y2FsbChjb25zdCBWZWN0b3I8UmVmUHRy
PE11dGF0aW9uUmVjb3JkPiA+JiBtdXRhdGlvbnMsIE11dGF0aW9uT2JzZXJ2ZXIqIG9ic2VydmVy
KQogewotICAgIEFTU0VSVChtdXRhdGlvbnMpOwotICAgIGlmICghbXV0YXRpb25zKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQogICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKLSAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybjsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5k
bGVTY29wZTsKIAogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHRvVjhD
b250ZXh0KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV93b3JsZC5nZXQoKSk7CiAgICAgaWYg
KHY4Q29udGV4dC5Jc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm47CiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsKKyAgICB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSA9IHY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpOwogCi0gICAgdjg6Okxv
Y2FsPHY4OjpBcnJheT4gbXV0YXRpb25zQXJyYXkgPSB2ODo6QXJyYXk6Ok5ldyhtdXRhdGlvbnMt
PnNpemUoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtdXRhdGlvbnMtPnNpemUoKTsg
KytpKQotICAgICAgICBtdXRhdGlvbnNBcnJheS0+U2V0KHY4SW50ZWdlcihpLCB2OENvbnRleHQt
PkdldElzb2xhdGUoKSksIHRvVjgobXV0YXRpb25zLT5hdChpKS5nZXQoKSwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpLCB2OENvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uPiBjYWxsYmFjayA9IHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+OjpOZXcoaXNv
bGF0ZSwgbV9jYWxsYmFjay5nZXQoKSk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb2Jz
ZXJ2ZXJIYW5kbGUgPSB0b1Y4KG9ic2VydmVyLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4
Q29udGV4dC0+R2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb2JzZXJ2
ZXJIYW5kbGUgPSB0b1Y4KG9ic2VydmVyLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIGlzb2xh
dGUpOwogICAgIGlmIChvYnNlcnZlckhhbmRsZS5Jc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFp
c1NjcmlwdENvbnRyb2xsZXJUZXJtaW5hdGluZygpKQogICAgICAgICAgICAgQ1JBU0goKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIW9i
c2VydmVySGFuZGxlLT5Jc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsKLSAgICAgICAg
bXV0YXRpb25zQXJyYXksCi0gICAgICAgIG9ic2VydmVySGFuZGxlCi0gICAgfTsKKyAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHRoaXNPYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpD
YXN0KG9ic2VydmVySGFuZGxlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0g
eyB2OEFycmF5KG11dGF0aW9ucywgaXNvbGF0ZSksIG9ic2VydmVySGFuZGxlIH07CiAKLSAgICBi
b29sIGNhbGxiYWNrUmV0dXJuVmFsdWUgPSBmYWxzZTsKLSAgICByZXR1cm4gIWludm9rZUNhbGxi
YWNrKG1fY2FsbGJhY2suZ2V0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qob2JzZXJ2
ZXJIYW5kbGUpLCAyLCBhcmd2LCBjYWxsYmFja1JldHVyblZhbHVlLCBzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkpOworICAgIHY4OjpUcnlDYXRjaCBleGNlcHRpb25DYXRjaGVyOworICAgIGV4Y2Vw
dGlvbkNhdGNoZXIuU2V0VmVyYm9zZSh0cnVlKTsKKyAgICBTY3JpcHRDb250cm9sbGVyOjpjYWxs
RnVuY3Rpb25XaXRoSW5zdHJ1bWVudGF0aW9uKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgY2Fs
bGJhY2ssIHRoaXNPYmplY3QsIDIsIGFyZ3YpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJh
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5oCmlu
ZGV4IGM0Zjk4ZmVhYmNlMzQzNGZlMzFhZjNiMGMwNzk4MmU0M2E1MjYwZGEuLmIwNzdjZDFkZTQ3
MDBkOTNkMGVmNjkwZTJjZjRiZTY3NWVhZTFkYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5oCkBAIC0zOSwxOCArMzksMTcgQEAgY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgVjhNdXRhdGlvbkNhbGxiYWNrIDogcHVi
bGljIE11dGF0aW9uQ2FsbGJhY2ssIHB1YmxpYyBBY3RpdmVET01DYWxsYmFjayB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8VjhNdXRhdGlvbkNhbGxiYWNrPiBjcmVhdGUodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG93bmVyLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxWOE11dGF0aW9uQ2FsbGJhY2s+IGNyZWF0ZSh2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvbj4gY2FsbGJhY2ssIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gb3duZXIsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgIHsK
LSAgICAgICAgQVNTRVJUKHZhbHVlLT5Jc09iamVjdCgpKTsKICAgICAgICAgQVNTRVJUKGNvbnRl
eHQpOwotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFY4TXV0YXRpb25DYWxsYmFjayh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSwgY29udGV4dCwgb3duZXIsIGlzb2xhdGUp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBWOE11dGF0aW9uQ2FsbGJhY2soY2FsbGJh
Y2ssIGNvbnRleHQsIG93bmVyLCBpc29sYXRlKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29s
IGhhbmRsZUV2ZW50KE11dGF0aW9uUmVjb3JkQXJyYXkqLCBNdXRhdGlvbk9ic2VydmVyKikgT1ZF
UlJJREU7CisgICAgdmlydHVhbCB2b2lkIGNhbGwoY29uc3QgVmVjdG9yPFJlZlB0cjxNdXRhdGlv
blJlY29yZD4gPiYsIE11dGF0aW9uT2JzZXJ2ZXIqKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcjo6c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgVjhNdXRhdGlvbkNhbGxiYWNrKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+LCB2ODo6SXNvbGF0ZSopOworICAgIFY4TXV0YXRpb25DYWxsYmFjayh2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvbj4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+LCB2ODo6SXNvbGF0ZSopOwogCiAgICAgc3RhdGljIHZvaWQgd2Vha0NhbGxiYWNrKHY4
OjpJc29sYXRlKiBpc29sYXRlLCB2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+IHdyYXBwZXIsIHZv
aWQqIHBhcmFtZXRlcikKICAgICB7CkBAIC01OCw3ICs1Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
IG9iamVjdC0+bV9jYWxsYmFjay5jbGVhcigpOwogICAgIH0KIAotICAgIFNjb3BlZFBlcnNpc3Rl
bnQ8djg6Ok9iamVjdD4gbV9jYWxsYmFjazsKKyAgICBTY29wZWRQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvbj4gbV9jYWxsYmFjazsKICAgICBSZWZQdHI8RE9NV3JhcHBlcldvcmxkPiBtX3dvcmxkOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TXV0
YXRpb25PYnNlcnZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAppbmRleCA2ODY3ZjY5NTFmZTYyN2QwOTc2
MTBmOTQ3MzkwYzA3OGRiYzU0ODZlLi43MzViMGM3ZjgyNGU4ZjE0Y2M0MmFlNmI4NWQ2ZDhiODQ0
OTI2MGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhN
dXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhNdXRhdGlvbk9ic2VydmVyQ3VzdG9tLmNwcApAQCAtNDcsMTMgKzQ3LDEzIEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE11dGF0aW9uT2JzZXJ2ZXI6OmNvbnN0cnVjdG9yQ3Vz
dG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFy
Z3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6VmFs
dWU+IGFyZyA9IGFyZ3NbMF07Ci0gICAgaWYgKCFhcmctPklzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiBzZXRET01FeGNlcHRpb24oVFlQRV9NSVNNQVRDSF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKKyAgICBpZiAoIWFyZy0+SXNGdW5jdGlvbigpKQorICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoIkNhbGxiYWNrIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbiIsIGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKIAogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBnZXRTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVy
ID0gYXJncy5Ib2xkZXIoKTsKIAotICAgIFJlZlB0cjxNdXRhdGlvbkNhbGxiYWNrPiBjYWxsYmFj
ayA9IFY4TXV0YXRpb25DYWxsYmFjazo6Y3JlYXRlKGFyZywgY29udGV4dCwgd3JhcHBlciwgYXJn
cy5HZXRJc29sYXRlKCkpOworICAgIFJlZlB0cjxNdXRhdGlvbkNhbGxiYWNrPiBjYWxsYmFjayA9
IFY4TXV0YXRpb25DYWxsYmFjazo6Y3JlYXRlKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6Q2Fz
dChhcmcpLCBjb250ZXh0LCB3cmFwcGVyLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgUmVmUHRy
PE11dGF0aW9uT2JzZXJ2ZXI+IG9ic2VydmVyID0gTXV0YXRpb25PYnNlcnZlcjo6Y3JlYXRlKGNh
bGxiYWNrLnJlbGVhc2UoKSk7CiAKICAgICBWOERPTVdyYXBwZXI6OmFzc29jaWF0ZU9iamVjdFdp
dGhXcmFwcGVyKG9ic2VydmVyLnJlbGVhc2UoKSwgJmluZm8sIHdyYXBwZXIsIGFyZ3MuR2V0SXNv
bGF0ZSgpLCBXcmFwcGVyQ29uZmlndXJhdGlvbjo6RGVwZW5kZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkNhbGxiYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TXV0YXRpb25DYWxsYmFjay5oCmluZGV4IGYzYzI1ODgxNjE0YTc0NjQ2ZGMxZTVmOWE5M2FiNzI0
MjM5ODBlNjQuLmE2MGNlOGIxYTYxOTFjNTA1NTBhMzE0NWU4NjFkNDUwMzJmOGMzNDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbkNhbGxiYWNrLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL011dGF0aW9uQ2FsbGJhY2suaApAQCAtNDAsMTMgKzQwLDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIGNsYXNzIE11dGF0aW9uUmVjb3JkOwogY2xhc3MgTXV0YXRpb25PYnNl
cnZlcjsKIAotdHlwZWRlZiBWZWN0b3I8UmVmUHRyPE11dGF0aW9uUmVjb3JkPiA+IE11dGF0aW9u
UmVjb3JkQXJyYXk7Ci0KIGNsYXNzIE11dGF0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRl
ZDxNdXRhdGlvbkNhbGxiYWNrPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TXV0YXRpb25DYWxs
YmFjaygpIHsgfQogCi0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KE11dGF0aW9uUmVjb3Jk
QXJyYXkqLCBNdXRhdGlvbk9ic2VydmVyKikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBjYWxsKGNv
bnN0IFZlY3RvcjxSZWZQdHI8TXV0YXRpb25SZWNvcmQ+ID4mLCBNdXRhdGlvbk9ic2VydmVyKikg
PSAwOwogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2Vy
dmVyLmNwcAppbmRleCA1NGU3ODE1NDhiZDc1ZDY0OWJlMWVlOTk3ZWNlMGIxOTkyNmQxODdlLi5k
YTgwMDEzN2EzM2JmZjc2YTg5MjY4NjQ5N2FiZTZkNjk4ZjYwZDU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBNdXRhdGlv
bk9ic2VydmVyOjpkZWxpdmVyKCkKICAgICBWZWN0b3I8UmVmUHRyPE11dGF0aW9uUmVjb3JkPiA+
IHJlY29yZHM7CiAgICAgcmVjb3Jkcy5zd2FwKG1fcmVjb3Jkcyk7CiAKLSAgICBtX2NhbGxiYWNr
LT5oYW5kbGVFdmVudCgmcmVjb3JkcywgdGhpcyk7CisgICAgbV9jYWxsYmFjay0+Y2FsbChyZWNv
cmRzLCB0aGlzKTsKIH0KIAogdm9pZCBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyQWxsTXV0YXRp
b25zKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA5NDUwNzhhMDY4ZjFjMWUxOGM3YzBkZTQwOTRjYzQzMWNjNzZjMDE2Li5l
YWVhYTgyMmQwMDFlMjBhNTJiNDFiYzlkZWZlNTZjYWIxOGZmMTJkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTMtMDMtMDYgIEFkYW0gS2xlaW4gIDxhZGFta0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgTXV0YXRpb25DYWxsYmFjayBzaG91bGQgYmUgYSBXZWJJREwgJ2NhbGxiYWNrJywgbm90
IGEgW0NhbGxiYWNrXSBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTkxNDA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlvbk9ic2VydmVyL211dGF0aW9uLW9ic2Vy
dmVyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVyLWNvbnN0cnVjdG9yLmh0bWw6IEFkZCB0ZXN0IGZv
ciBUeXBlRXJyb3ItdGhyb3dpbmcuCisgICAgICAgIE5vdGUgdGhhdCB0aGUgTnVtYmVyIGFuZCBT
dHJpbmcgY2FzZXMgYWxyZWFkeSB0aHJldyBiZWZvcmUgdGhpcyBwYXRjaC4KKwogMjAxMy0wMy0w
NiAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQgZ2FyZGVuaW5nOiByZWJhc2VsaW5lcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRpb24tb2JzZXJ2ZXItY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRh
dGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKaW5kZXggMmJlYjNlODZlNzBl
MjQ4NWE3NzIwMTgwNzc2NDI4NTkxNzkyNzQ5ZC4uZjEzZWY4MmU3ZWQ3NzA3OTdhMWUzNzdhZDAy
YjI4MDQ0M2IwYzhlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25P
YnNlcnZlci9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1vYnNlcnZlci1j
b25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTgsNiArOCwxMCBAQCBQQVNTIHR5cGVvZiBXZWJL
aXRNdXRhdGlvbk9ic2VydmVyLnByb3RvdHlwZS5vYnNlcnZlIGlzICJmdW5jdGlvbiIKIFBBU1Mg
dHlwZW9mIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLmRpc2Nvbm5lY3QgaXMgImZ1
bmN0aW9uIgogUEFTUyB0eXBlb2Ygb2JzZXJ2ZXIub2JzZXJ2ZSBpcyAiZnVuY3Rpb24iCiBQQVNT
IHR5cGVvZiBvYnNlcnZlci5kaXNjb25uZWN0IGlzICJmdW5jdGlvbiIKK1BBU1MgbmV3IE11dGF0
aW9uT2JzZXJ2ZXIoeyBoYW5kbGVFdmVudDogZnVuY3Rpb24oKSB7fSB9KSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBDYWxsYmFjayBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNT
IG5ldyBNdXRhdGlvbk9ic2VydmVyKHt9KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYWxs
YmFjayBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24uCitQQVNTIG5ldyBNdXRhdGlvbk9ic2Vy
dmVyKDQyKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBDYWxsYmFjayBhcmd1bWVudCBtdXN0
IGJlIGEgZnVuY3Rpb24uCitQQVNTIG5ldyBNdXRhdGlvbk9ic2VydmVyKCJmb28iKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBDYWxsYmFjayBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24u
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2JzZXJ2ZXIvbXV0YXRpb24tb2Jz
ZXJ2ZXItY29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL011dGF0aW9uT2Jz
ZXJ2ZXIvbXV0YXRpb24tb2JzZXJ2ZXItY29uc3RydWN0b3IuaHRtbAppbmRleCA2NWEwZDUyNmE2
Yjg0MzE5ODYwODBiYWUxZjM2NDczMTE0OTlhNzViLi42NTQ5OTkxYjZmZGI2OTc2NmM1YWM3OTlk
ZGVjMDgxNWQ5YWE1ZjYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9NdXRhdGlv
bk9ic2VydmVyL211dGF0aW9uLW9ic2VydmVyLWNvbnN0cnVjdG9yLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vTXV0YXRpb25PYnNlcnZlci9tdXRhdGlvbi1vYnNlcnZlci1jb25zdHJ1
Y3Rvci5odG1sCkBAIC0xLDI4ICsxLDIwIEBACiA8IURPQ1RZUEUgaHRtbD4KLTxodG1sPgotPGhl
YWQ+Ci08bWV0YSBjaGFyc2V0PSJ1dGYtOCI+Ci08c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTx0aXRsZT48L3RpdGxlPgotPC9oZWFkPgog
PGJvZHk+Ci08cCBpZD1kZXNjcmlwdGlvbj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgogPHNjcmlwdD4KLQotZnVuY3Rpb24gcnVuVGVzdCgpIHsKLSAgICBzaG91bGRCZU5vbk51bGwo
J3dpbmRvdy5XZWJLaXRNdXRhdGlvbk9ic2VydmVyJyk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3Ry
aW5nKCd0eXBlb2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGUub2JzZXJ2ZScsICdm
dW5jdGlvbicpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndHlwZW9mIFdlYktpdE11dGF0
aW9uT2JzZXJ2ZXIucHJvdG90eXBlLmRpc2Nvbm5lY3QnLCAnZnVuY3Rpb24nKTsKLSAgICB3aW5k
b3cub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbihtdXRhdGlvbnMpIHsg
fSk7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBlb2Ygb2JzZXJ2ZXIub2JzZXJ2ZScs
ICdmdW5jdGlvbicpOwotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygndHlwZW9mIG9ic2VydmVy
LmRpc2Nvbm5lY3QnLCAnZnVuY3Rpb24nKTsKLX0KLQogZGVzY3JpcHRpb24oJ1Rlc3QgdGhlIGNv
bnN0cnVjdG9yIG9mIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXInKTsKIAotcnVuVGVzdCgpOworc2hv
dWxkQmVOb25OdWxsKCd3aW5kb3cuV2ViS2l0TXV0YXRpb25PYnNlcnZlcicpOworc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCd0eXBlb2YgV2ViS2l0TXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGUub2Jz
ZXJ2ZScsICdmdW5jdGlvbicpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBlb2YgV2ViS2l0
TXV0YXRpb25PYnNlcnZlci5wcm90b3R5cGUuZGlzY29ubmVjdCcsICdmdW5jdGlvbicpOword2lu
ZG93Lm9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24obXV0YXRpb25zKSB7
IH0pOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBlb2Ygb2JzZXJ2ZXIub2JzZXJ2ZScsICdm
dW5jdGlvbicpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCd0eXBlb2Ygb2JzZXJ2ZXIuZGlzY29u
bmVjdCcsICdmdW5jdGlvbicpOworCitzaG91bGRUaHJvdygnbmV3IE11dGF0aW9uT2JzZXJ2ZXIo
eyBoYW5kbGVFdmVudDogZnVuY3Rpb24oKSB7fSB9KScpOworc2hvdWxkVGhyb3coJ25ldyBNdXRh
dGlvbk9ic2VydmVyKHt9KScpOworc2hvdWxkVGhyb3coJ25ldyBNdXRhdGlvbk9ic2VydmVyKDQy
KScpOworc2hvdWxkVGhyb3coJ25ldyBNdXRhdGlvbk9ic2VydmVyKCJmb28iKScpOwogPC9zY3Jp
cHQ+CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>