<?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>42331</bug_id>
          
          <creation_ts>2010-07-14 20:55:26 -0700</creation_ts>
          <short_desc>WebKitTestRunner needs layoutTestController.dumpFrameLoadCallbacks</short_desc>
          <delta_ts>2012-09-14 02:39:38 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>82658</blocked>
    
    <blocked>96740</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Jon Lee">jonlee</assigned_to>
          <cc>darin</cc>
    
    <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>251634</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-14 20:55:26 -0700</bug_when>
    <thetext>WebKitTestRunner needs layoutTestController.dumpFrameLoadCallbacks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251650</commentid>
    <comment_count>1</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-07-14 20:59:26 -0700</bug_when>
    <thetext>&lt;rdar://problem/8193641&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617474</commentid>
    <comment_count>2</comment_count>
      <attachid>140498</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-05-07 02:37:14 -0700</bug_when>
    <thetext>Created attachment 140498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617476</commentid>
    <comment_count>3</comment_count>
      <attachid>140499</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-05-07 02:41:43 -0700</bug_when>
    <thetext>Created attachment 140499
Patch

Missing trailing space for willPerformClientRedirectToURL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617662</commentid>
    <comment_count>4</comment_count>
      <attachid>140499</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-07 10:02:59 -0700</bug_when>
    <thetext>Comment on attachment 140499
Patch

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

r=me if you fix the storage leaks

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:197
&gt; +bool booleanForKey(WKDictionaryRef dictionary, const char* key)
&gt; +{
&gt; +    WKRetainPtr&lt;WKStringRef&gt; wkKey(AdoptWK, WKStringCreateWithUTF8CString(key));
&gt; +    return WKBooleanGetValue(static_cast&lt;WKBooleanRef&gt;(WKDictionaryGetItemForKey(dictionary, wkKey.get())));
&gt; +}

This function does a bad cast if the value is not a boolean. And it calls WKBooleanGetValue on a null pointer of there is no item in the dictionary with that key. Given that this is part of a testing framework, I was thinking it might be even better to check the type and do something different in those cases, like report an error somehow.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h:109
&gt; +    void beginTesting(WKDictionaryRef);

This argument needs a name. It’s not obvious why beginTesting would take a dictionary argument.

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:350
&gt; +// Similar to -[WebFrame _drt_descriptionSuitableForTestResult]

Not sure that “similar” is a helpful comment. Maybe there’s something stronger you want to say here?

&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:780
&gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(toWTFString(WKURLCopyString(url)));

There’s a storage leak here. You can fix it by writing adoptWK(WKURLCopyString(url)).get() instead of WKURLCopyString(url).

&gt; Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.h:75
&gt; +    void dumpFrameLoadCallbacks(bool value = true) { m_dumpFrameLoadCallbacks = value; }

These functions have really bad names, and it’s even worse for a version that takes a boolean. setShouldDumpFrameLoadCallbacks should be a far better name.

&gt; Tools/WebKitTestRunner/TestInvocation.cpp:132
&gt; +    return strstr(pathOrURL, &quot;loading/&quot;);

Is this really the right rule? Who came up with this? We are seriously hardcoding this into all our test runner tools?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617663</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-05-07 10:03:35 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; r=me if you fix the storage leaks

storage leak singular I mean</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617757</commentid>
    <comment_count>6</comment_count>
      <attachid>140499</attachid>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-05-07 11:24:18 -0700</bug_when>
    <thetext>Comment on attachment 140499
Patch

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

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:197
&gt;&gt; +}
&gt; 
&gt; This function does a bad cast if the value is not a boolean. And it calls WKBooleanGetValue on a null pointer of there is no item in the dictionary with that key. Given that this is part of a testing framework, I was thinking it might be even better to check the type and do something different in those cases, like report an error somehow.

Sure, I can make this function behave a lot better. I will have it output an error.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h:109
&gt;&gt; +    void beginTesting(WKDictionaryRef);
&gt; 
&gt; This argument needs a name. It’s not obvious why beginTesting would take a dictionary argument.

Done.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:780
&gt;&gt; +    InjectedBundle::shared().stringBuilder()-&gt;append(toWTFString(WKURLCopyString(url)));
&gt; 
&gt; There’s a storage leak here. You can fix it by writing adoptWK(WKURLCopyString(url)).get() instead of WKURLCopyString(url).

Done.

&gt;&gt; Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.h:75
&gt;&gt; +    void dumpFrameLoadCallbacks(bool value = true) { m_dumpFrameLoadCallbacks = value; }
&gt; 
&gt; These functions have really bad names, and it’s even worse for a version that takes a boolean. setShouldDumpFrameLoadCallbacks should be a far better name.

I wanted to avoid having two of these, since dumpFrameLoadCallbacks is part of the layoutTestController idl, but it&apos;s easy to have the setter function for WTR usage, and leave this function in for JS.

&gt;&gt; Tools/WebKitTestRunner/TestInvocation.cpp:132
&gt;&gt; +    return strstr(pathOrURL, &quot;loading/&quot;);
&gt; 
&gt; Is this really the right rule? Who came up with this? We are seriously hardcoding this into all our test runner tools?

There&apos;s a whole series of these in DRT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>617822</commentid>
    <comment_count>7</comment_count>
    <who name="Jon Lee">jonlee</who>
    <bug_when>2012-05-07 12:21:13 -0700</bug_when>
    <thetext>Committed r116338: &lt;http://trac.webkit.org/changeset/116338&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140498</attachid>
            <date>2012-05-07 02:37:14 -0700</date>
            <delta_ts>2012-05-07 02:41:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42331-20120507024001.patch</filename>
            <type>text/plain</type>
            <size>19550</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MjcyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWY3YTg4NDY4YjgwNzk0OGQ3ZDA1YzVkM2MyMTQxZjA1
YmVmNjhiMS4uNzk4ZmE1OWJlMGEwMTIzMjA3OWMyNDI1NGRjODJkYjc3ZGNlYjRlZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5
IEBACisyMDEyLTA1LTA3ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBGcmFtZUxvYWRD
YWxsYmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQyMzMxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTkzNjQxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc2V0cyB1cCB0aGUg
ZnJhbWV3b3JrIGZvciBzdXBwb3J0aW5nIGR1bXBGcmFtZUxvYWRDYWxsYmFja3MsIGFzIHdlbGwg
YXMKKyAgICAgICAgb3V0cHV0dGluZyBzb21lIG9mIHRoZSByZXF1aXJlZCBzdHJpbmdzLiBBcyB0
ZXN0cyBiZWNvbWUgdW5za2lwcGVkIHRoZSBvdGhlciBjYWxsYmFja3MKKyAgICAgICAgY2FuIGJl
IHN1cHBvcnRlZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsOiBBZGQgZHVtcEZyYW1lTG9hZENhbGxi
YWNrcygpCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVz
c2FnZSk6IHBhc3MgaW4gdGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyBrZXlzIG5lZWRlZCB0byBp
bml0aWFsaXplCisgICAgICAgIGR1bXAgY2FsbGJhY2tzIGZvciB0aGUgbGF5b3V0VGVzdENvbnRy
b2xsZXIuCisgICAgICAgIChXVFI6OmJvb2xlYW5Gb3JLZXkpOiBIZWxwZXIgZnVuY3Rpb24gdG8g
ZXh0cmFjdCBib29sZWFuIHZhbHVlIGZyb20ga2V5IGluIFdLRGljdGlvbmFyeVJlZi4KKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmJlZ2luVGVzdGluZyk6IFVwZGF0ZSB0byB0YWtlIGlu
IHRoZSBkaWN0aW9uYXJ5IHBhc3NlZCBpbiBieSB0aGUgVGVzdENvbnRyb2xsZXIuCisgICAgICAg
IFdlIGNhbm5vdCBzZXQgdGhlIGJpdHMgb24gdGhlIGxheW91dFRlc3RDb250cm9sbGVyIHVudGls
IGl0IGhhcyBiZWVuIGNyZWF0ZWQgaW4gYmVnaW5UZXN0aW5nKCkuCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgor
ICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6ZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHQpOiBTdGF0aWMgZnVuY3Rpb24gc2ltaWxhciB0bworICAgICAgICAtW1dl
YkZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdIGluIER1bXBSZW5k
ZXJUcmVlLgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOiBPdXRwdXQgc3RyaW5nLgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6IE91dHB1dCBzdHJpbmcuCisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKTogT3V0
cHV0IHN0cmluZy4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZl
VGl0bGVGb3JGcmFtZSk6IE91dHB1dCBzdHJpbmcuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVu
ZGxlUGFnZTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6IE91dHB1dCBzdHJpbmcu
CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdEZvckZyYW1lKTogT3V0cHV0IHN0cmluZy4gSW4gV0sxIGl0J3MKKyAgICAgICAgIndpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTCIgc28gd2Ugd2lsbCBoYXZlIHRvIHVzZSB0aGF0IHZh
bHVlIGhlcmUuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUpOiBPdXRwdXQgc3RyaW5nLgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKTogT3V0cHV0IHN0cmlu
Zy4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91
dFRlc3RDb250cm9sbGVyKTogSW5pdGlhbGl6ZSB0byBub3QgZHVtcCBmcmFtZSBsb2FkIGNhbGxi
YWNrcy4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRl
c3RDb250cm9sbGVyLmg6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpkdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzKTogQ2hhbmdlIHRvIHN1cHBvcnQgY2FsbCBmcm9tIEluamVjdGVk
QnVuZGxlLgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvdWxkRHVtcEZy
YW1lTG9hZENhbGxiYWNrcyk6IFJldHVybiBiaXQuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcik6IEFkZGVkIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyB0byB0cmFjayB3aGV0aGVyIHRv
IGR1bXAgdGhlIG91dHB1dC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdUUjo6c2hvdWxkTG9nRnJhbWVMb2FkRGVsZWdhdGVzKTogU2ltaWxhciB0byBE
UlQuCisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjppbnZva2UpOiBCYXNlZCBvbiB0aGUg
VVJMIGxvYWRlZCwgc2V0IHRoZSBiaXQgaW4gdGhlIGRpY3Rpb25hcnkgdGhhdCBnZXRzIHBhc3Nl
ZAorICAgICAgICB0byB0aGUgaW5qZWN0ZWQgYnVuZGxlLgorCiAyMDEyLTA1LTA2ICBNYXJ5IFd1
ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgQWRkIGEgY29udHJpYnV0
b3IgdG8gY29tbWl0dGVycy5weQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9s
bGVyLmlkbAppbmRleCBkOGRlZjRkZWVlOWNjODZmOWQ2OGZlM2RkM2Y0OWNjODUwMGIxM2ZhLi4w
ZGVjZDFmZDBiNmFmNzcxODAzNWUyZGI5NTYxODAyZjk2OGQyOGZhIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250
cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNiArNDEsNyBAQCBtb2R1
bGUgV1RSIHsKICAgICAgICAgdm9pZCBkdW1wU3RhdHVzQ2FsbGJhY2tzKCk7CiAgICAgICAgIHZv
aWQgZHVtcFRpdGxlQ2hhbmdlcygpOwogICAgICAgICB2b2lkIGR1bXBGdWxsU2NyZWVuQ2FsbGJh
Y2tzKCk7CisgICAgICAgIHZvaWQgZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpOwogICAgICAgICB2
b2lkIGR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoaW4gaW50IGRldmljZURQSSwgaW4gaW50
IGRldmljZVdpZHRoLCBpbiBpbnQgZGV2aWNlSGVpZ2h0LCBpbiBpbnQgYXZhaWxhYmxlV2lkdGgs
IGluIGludCBhdmFpbGFibGVIZWlnaHQpOwogCiAgICAgICAgIC8vIFNwZWNpYWwgb3B0aW9ucy4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKaW5kZXggNTU2NGIzMmRmMDMwZTBkNzBjZWYxZDQ4YzBhMjllMzNiMDI5
OGM3OS4uYTFkMzk1M2VlYTMwNDQ1ZTdmMDMxNjk3N2E1ODM2NWU1ZGQ3NDIzOCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRS
ZWNlaXZlTWVzc2FnZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZwog
ICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYWNrTWVzc2FnZUJvZHkoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkJlZ2luVGVzdCIpKTsKICAgICAgICAgV0tC
dW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgYWNrTWVzc2FnZU5hbWUuZ2V0KCksIGFja01lc3Nh
Z2VCb2R5LmdldCgpKTsKIAotICAgICAgICBiZWdpblRlc3RpbmcoKTsKKyAgICAgICAgYmVnaW5U
ZXN0aW5nKG1lc3NhZ2VCb2R5RGljdGlvbmFyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVs
c2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJSZXNldCIp
KSB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlQm9keSk7CkBAIC0xOTAsNyArMTkwLDEzIEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lLCBXS1R5cGVSZWYgbWVzc2FnCiAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwg
ZXJyb3JNZXNzYWdlTmFtZS5nZXQoKSwgZXJyb3JNZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRCdW5kbGU6OmJlZ2luVGVzdGluZygpCitib29sIGJvb2xlYW5Gb3JLZXkoV0tE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIGNvbnN0IGNoYXIqIGtleSkKK3sKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gd2tLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoa2V5KSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdL
Qm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShkaWN0aW9uYXJ5LCB3a0tleS5n
ZXQoKSkpKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKFdLRGljdGlv
bmFyeVJlZiBzZXR0aW5ncykKIHsKICAgICBtX3N0YXRlID0gVGVzdGluZzsKIApAQCAtMjE1LDYg
KzIyMSw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmJlZ2luVGVzdGluZygpCiAKICAgICBXS0J1
bmRsZVJlbW92ZUFsbFVzZXJDb250ZW50KG1fYnVuZGxlLCBtX3BhZ2VHcm91cCk7CiAKKyAgICBt
X2xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2xlYW5Gb3JL
ZXkoc2V0dGluZ3MsICJEdW1wRnJhbWVMb2FkRGVsZWdhdGVzIikpOworCiAgICAgcGFnZSgpLT5y
ZXNldCgpOwogCiAgICAgV0tCdW5kbGVDbGVhckFsbERhdGFiYXNlcyhtX2J1bmRsZSk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgKaW5kZXggY2I2N2RhZGJlYjU1Y2E3NGM5MmZjZjQxNDhkNzBiYmVjMWEyNTk1MC4uMDIz
MjMwNGUyZWQ5MzQ5Yzc2NjQyMDBjY2Q3NWFlYTMzNGUzYTI0MyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUo
V0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlckRhdGEpOwogICAgIHZvaWQgcmVzZXRMb2NhbFNl
dHRpbmdzKCk7CiAKLSAgICB2b2lkIGJlZ2luVGVzdGluZygpOworICAgIHZvaWQgYmVnaW5UZXN0
aW5nKFdLRGljdGlvbmFyeVJlZik7CiAKICAgICBXS0J1bmRsZVJlZiBtX2J1bmRsZTsKICAgICBX
S0J1bmRsZVBhZ2VHcm91cFJlZiBtX3BhZ2VHcm91cDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApp
bmRleCA1MjdlYzM3OTk5YTAzMDQwYzQ1YmExNDllZjc4OWRkOWJmMTM2NTUzLi43YWEwMWYyYzQ5
YTdjOWI2ZmJiOTliZGViOGM0OGJiYzZhOWU5NjcyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNDcsNiArMzQ3LDMyIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpyZXNldCgp
CiAKIC8vIExvYWRlciBDbGllbnQgQ2FsbGJhY2tzCiAKKy8vIFNpbWlsYXIgdG8gLVtXZWJGcmFt
ZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XQorc3RhdGljIHZvaWQgZHVt
cEZyYW1lRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbmFtZShBZG9wdFdLLCBXS0J1
bmRsZUZyYW1lQ29weU5hbWUoZnJhbWUpKTsKKyAgICBpZiAoV0tCdW5kbGVGcmFtZUlzTWFpbkZy
YW1lKGZyYW1lKSkgeworICAgICAgICBpZiAoV0tTdHJpbmdJc0VtcHR5KG5hbWUuZ2V0KCkpKSB7
CisgICAgICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5h
cHBlbmQoIm1haW4gZnJhbWUiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
bWFpbiBmcmFtZSBcIiIpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5n
QnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcobmFtZSkpOworICAgICAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlwiIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VtcHR5KG5hbWUuZ2V0KCkpKSB7Cisg
ICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
ZnJhbWUgKGFub255bW91cykiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiZnJhbWUgXCIiKTsK
KyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9X
VEZTdHJpbmcobmFtZSkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWls
ZGVyKCktPmFwcGVuZCgiXCIiKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CiAg
ICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKGZyYW1lKTsKQEAgLTQ2
Miw2ICs0ODgsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKICAgICBpZiAoIUluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hv
dWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIGR1bXBGcmFtZURlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIgLSBkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lXG4iKTsKKyAgICB9CisKICAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLnRvcExvYWRpbmdGcmFtZSgpKQogICAgICAgICByZXR1cm47CiAgICAgSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnNldFRvcExvYWRpbmdGcmFtZShmcmFtZSk7CkBAIC00ODgsNiArNTE5LDE0
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpk
aWRDb21taXRMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKIHsKKyAgICBpZiAo
IUluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9s
bGVyKCktPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUpOwor
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIC0g
ZGlkQ29tbWl0TG9hZEZvckZyYW1lXG4iKTsKIH0KIAogZW51bSBGcmFtZU5hbWVQb2xpY3kgeyBT
aG91bGROb3RJbmNsdWRlRnJhbWVOYW1lLCBTaG91bGRJbmNsdWRlRnJhbWVOYW1lIH07CkBAIC02
MzksNiArNjc4LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hMb2FkRm9y
RnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKICAgICBpZiAoIUluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcEZy
YW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIGR1bXBGcmFtZURlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KGZyYW1lKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWVcbiIpOwor
ICAgIH0KKwogICAgIGlmIChmcmFtZSAhPSBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudG9wTG9h
ZGluZ0ZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuc2V0VG9wTG9hZGluZ0ZyYW1lKDApOwpAQCAtNjY5LDYgKzcxMywxMyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tTdHJpbmdSZWYgdGl0bGUs
IFdLQnVuZGxlRnJhbQogICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVzdFJ1
bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
KCkpIHsKKyAgICAgICAgZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
ZnJhbWUpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmQoIiAtIGRpZFJlY2VpdmVUaXRsZTogIik7CisgICAgICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh0aXRsZSkpOwor
ICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
IlxuIik7CisgICAgfQorCiAgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0
VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcFRpdGxlQ2hhbmdlcygpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTcwNiwxMCArNzU3LDI4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRD
bGVhcldpbmRvd0ZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlCiAKIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUpCiB7CisgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuaXNUZXN0UnVubmluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIUluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zaG91bGREdW1wRnJhbWVM
b2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGR1bXBGcmFtZURlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiAtIGRpZENhbmNlbENsaWVudFJlZGlyZWN0
Rm9yRnJhbWVcbiIpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVVJMUmVmIHVy
bCwgZG91YmxlIGRlbGF5LCBkb3VibGUgZGF0ZSkKIHsKKyAgICBpZiAoIUluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZER1
bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZHVtcEZyYW1l
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUpOworICAgIEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIC0gd2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdFRvVVJMOiAiKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5n
QnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcoV0tVUkxDb3B5U3RyaW5nKHVybCkpKTsKKyAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlxuIik7
CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZSB0eXBlKQpAQCAtNzIxLDYgKzc5MCwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKICAg
ICBpZiAoIUluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAg
IHJldHVybjsKIAorICAgIGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENv
bnRyb2xsZXIoKS0+c2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIGR1
bXBGcmFtZURlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKTsKKyAgICAgICAg
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIgLSBkaWRG
aW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZVxuIik7CisgICAgfQorCiAgICAgdW5zaWduZWQgcGVu
ZGluZ0ZyYW1lVW5sb2FkRXZlbnRzID0gV0tCdW5kbGVGcmFtZUdldFBlbmRpbmdVbmxvYWRDb3Vu
dChmcmFtZSk7CiAgICAgaWYgKHBlbmRpbmdGcmFtZVVubG9hZEV2ZW50cykgewogICAgICAgICBJ
bmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoZnJhbWVUb1N0
cihmcmFtZSkpOwpAQCAtNzMyLDYgKzgwNiwxMyBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKIAog
dm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUpCiB7CisgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuaXNUZXN0UnVubmluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoSW5qZWN0ZWRC
dW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZER1bXBGcmFtZUxv
YWRDYWxsYmFja3MoKSkgeworICAgICAgICBkdW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlRm9y
VGVzdFJlc3VsdChmcmFtZSk7CisgICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJp
bmdCdWlsZGVyKCktPmFwcGVuZCgiIC0gZGlkSGFuZGxlT25sb2FkRXZlbnRzRm9yRnJhbWVcbiIp
OworICAgIH0KIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZERpc3BsYXlJbnNlY3Vy
ZUNvbnRlbnRGb3JGcmFtZShXS0J1bmRsZUZyYW1lUmVmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdl
LmgKaW5kZXggZTA1N2NhOTA2MThlMzcwMDkzMjY1ZDI0YmJhMTcwYzljYjM1MThmOC4uMmUxOTFk
NzFkMzY0MTEyMjZiYWFiMWUxOTEyNjk1MTY5MmYwZmRlMyAxMDA2NDQKLS0tIGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuaAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5o
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDU1YmY5ZGQwOGI2ZTkzZGMwMWMx
MmM3ZTMyMTVjM2RiYTU0OTFkMmQuLjcwOTk4OGI3YzRkZjRjOGEwNDQzMTQxZjNiZGQ3Yzc0OWZk
YjRiYmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5q
ZWN0ZWRCdW5kbGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMDIsNiArMTAyLDcg
QEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbGVyKCkKICAgICAsIG1f
ZHVtcFRpdGxlQ2hhbmdlcyhmYWxzZSkKICAgICAsIG1fZHVtcFBpeGVscyh0cnVlKQogICAgICwg
bV9kdW1wRnVsbFNjcmVlbkNhbGxiYWNrcyhmYWxzZSkKKyAgICAsIG1fZHVtcEZyYW1lTG9hZENh
bGxiYWNrcyhmYWxzZSkKICAgICAsIG1fd2FpdFRvRHVtcChmYWxzZSkKICAgICAsIG1fdGVzdFJl
cGFpbnQoZmFsc2UpCiAgICAgLCBtX3Rlc3RSZXBhaW50U3dlZXBIb3Jpem9udGFsbHkoZmFsc2Up
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91
dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0xheW91dFRlc3RDb250cm9sbGVyLmgKaW5kZXggYjQ2ZGEyMTVjN2JlYjJjMWY5YmIwYTc3ZDZj
MDA4MzRmZjc2OGM3YS4uOTg1NWMzZWY5OGY5ZmQ1ODE0M2U3Y2FmMTEwMmM5NDg3ZTFiNjBiMSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBkdW1wU3RhdHVzQ2FsbGJhY2tzKCkgeyBtX2R1bXBTdGF0dXNDYWxsYmFja3MgPSB0
cnVlOyB9CiAgICAgdm9pZCBkdW1wVGl0bGVDaGFuZ2VzKCkgeyBtX2R1bXBUaXRsZUNoYW5nZXMg
PSB0cnVlOyB9CiAgICAgdm9pZCBkdW1wRnVsbFNjcmVlbkNhbGxiYWNrcygpIHsgbV9kdW1wRnVs
bFNjcmVlbkNhbGxiYWNrcyA9IHRydWU7IH0KKyAgICB2b2lkIGR1bXBGcmFtZUxvYWRDYWxsYmFj
a3MoYm9vbCB2YWx1ZSA9IHRydWUpIHsgbV9kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzID0gdmFsdWU7
IH0KICAgICB2b2lkIGR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoaW50IGRldmljZURQSSwg
aW50IGRldmljZVdpZHRoLCBpbnQgZGV2aWNlSGVpZ2h0LCBpbnQgYXZhaWxhYmxlV2lkdGgsIGlu
dCBhdmFpbGFibGVIZWlnaHQpOwogCiAgICAgLy8gU3BlY2lhbCBvcHRpb25zLgpAQCAtMTUxLDYg
KzE1Miw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZER1bXBUaXRsZUNoYW5nZXMoKSBjb25z
dCB7IHJldHVybiBtX2R1bXBUaXRsZUNoYW5nZXM7IH0KICAgICBib29sIHNob3VsZER1bXBQaXhl
bHMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBQaXhlbHM7IH0KICAgICBib29sIHNob3VsZER1bXBG
dWxsU2NyZWVuQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wRnVsbFNjcmVlbkNhbGxi
YWNrczsgfQorICAgIGJvb2wgc2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpIGNvbnN0IHsg
cmV0dXJuIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrczsgfQogICAgIGJvb2wgaXNQb2xpY3lEZWxl
Z2F0ZUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BvbGljeURlbGVnYXRlRW5hYmxlZDsgfQog
ICAgIGJvb2wgaXNQb2xpY3lEZWxlZ2F0ZVBlcm1pc3NpdmUoKSBjb25zdCB7IHJldHVybiBtX3Bv
bGljeURlbGVnYXRlUGVybWlzc2l2ZTsgfQogCkBAIC0yMjUsNiArMjI3LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1fZHVtcFRpdGxlQ2hhbmdlczsKICAgICBib29sIG1fZHVtcFBpeGVsczsKICAg
ICBib29sIG1fZHVtcEZ1bGxTY3JlZW5DYWxsYmFja3M7CisgICAgYm9vbCBtX2R1bXBGcmFtZUxv
YWRDYWxsYmFja3M7CiAgICAgYm9vbCBtX3dhaXRUb0R1bXA7IC8vIFRydWUgaWYgd2FpdFVudGls
RG9uZSgpIGhhcyBiZWVuIGNhbGxlZCwgYnV0IG5vdGlmeURvbmUoKSBoYXMgbm90IHlldCBiZWVu
IGNhbGxlZC4KICAgICBib29sIG1fdGVzdFJlcGFpbnQ7CiAgICAgYm9vbCBtX3Rlc3RSZXBhaW50
U3dlZXBIb3Jpem9udGFsbHk7CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rl
c3RJbnZvY2F0aW9uLmNwcCBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24u
Y3BwCmluZGV4IGU1YWQ5YjZkMWFkYTg4YjliYzY4MzhiYTk1ODJjNDM2ZGFhYzlmYTAuLjYxMDZm
NjJmMmVkN2ViOTM1MTNkZDQ2YWJiNDUxZjE4ZDAwZmY5NWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdEludm9jYXRpb24uY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvVGVzdEludm9jYXRpb24uY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMjcsNiArMTI3LDEwIEBAIHN0YXRpYyB2
b2lkIHNpemVXZWJWaWV3Rm9yQ3VycmVudFRlc3QoY29uc3QgY2hhciogcGF0aE9yVVJMKQogICAg
IGVsc2UKICAgICAgICAgVGVzdENvbnRyb2xsZXI6OnNoYXJlZCgpLm1haW5XZWJWaWV3KCktPnJl
c2l6ZVRvKG5vcm1hbFdpZHRoLCBub3JtYWxIZWlnaHQpOwogfQorc3RhdGljIGJvb2wgc2hvdWxk
TG9nRnJhbWVMb2FkRGVsZWdhdGVzKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKK3sKKyAgICByZXR1
cm4gc3Ryc3RyKHBhdGhPclVSTCwgImxvYWRpbmcvIik7Cit9CiAKIHN0YXRpYyBib29sIHNob3Vs
ZE9wZW5XZWJJbnNwZWN0b3IoY29uc3QgY2hhciogcGF0aE9yVVJMKQogewpAQCAtMTQwLDYgKzE0
NCwxMCBAQCB2b2lkIFRlc3RJbnZvY2F0aW9uOjppbnZva2UoKQogICAgIFdLUmV0YWluUHRyPFdL
U3RyaW5nUmVmPiBtZXNzYWdlTmFtZSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoIkJlZ2luVGVzdCIpKTsKICAgICBXS1JldGFpblB0cjxXS011dGFibGVEaWN0aW9uYXJ5
UmVmPiBiZWdpblRlc3RNZXNzYWdlQm9keSA9IGFkb3B0V0soV0tNdXRhYmxlRGljdGlvbmFyeUNy
ZWF0ZSgpKTsKIAorICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiBkdW1wRnJhbWVMb2FkRGVs
ZWdhdGVzS2V5ID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRHVtcEZy
YW1lTG9hZERlbGVnYXRlcyIpKTsKKyAgICBXS1JldGFpblB0cjxXS0Jvb2xlYW5SZWY+IGR1bXBG
cmFtZUxvYWREZWxlZ2F0ZXNWYWx1ZSA9IGFkb3B0V0soV0tCb29sZWFuQ3JlYXRlKHNob3VsZExv
Z0ZyYW1lTG9hZERlbGVnYXRlcyhtX3BhdGhPclVSTC5jX3N0cigpKSkpOworICAgIFdLRGljdGlv
bmFyeUFkZEl0ZW0oYmVnaW5UZXN0TWVzc2FnZUJvZHkuZ2V0KCksIGR1bXBGcmFtZUxvYWREZWxl
Z2F0ZXNLZXkuZ2V0KCksIGR1bXBGcmFtZUxvYWREZWxlZ2F0ZXNWYWx1ZS5nZXQoKSk7CisKICAg
ICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZHVtcFBpeGVsc0tleSA9IGFkb3B0V0soV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkR1bXBQaXhlbHMiKSk7CiAgICAgV0tSZXRhaW5QdHI8
V0tCb29sZWFuUmVmPiBkdW1wUGl4ZWxzVmFsdWUgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZSht
X2R1bXBQaXhlbHMpKTsKICAgICBXS0RpY3Rpb25hcnlBZGRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VC
b2R5LmdldCgpLCBkdW1wUGl4ZWxzS2V5LmdldCgpLCBkdW1wUGl4ZWxzVmFsdWUuZ2V0KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140499</attachid>
            <date>2012-05-07 02:41:43 -0700</date>
            <delta_ts>2012-05-07 11:24:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-42331-20120507024430.patch</filename>
            <type>text/plain</type>
            <size>19551</size>
            <attacher name="Jon Lee">jonlee</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2MjcyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWY3YTg4NDY4YjgwNzk0OGQ3ZDA1YzVkM2MyMTQxZjA1
YmVmNjhiMS4uNzk4ZmE1OWJlMGEwMTIzMjA3OWMyNDI1NGRjODJkYjc3ZGNlYjRlZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5
IEBACisyMDEyLTA1LTA3ICBKb24gTGVlICA8am9ubGVlQGFwcGxlLmNvbT4KKworICAgICAgICBX
ZWJLaXRUZXN0UnVubmVyIG5lZWRzIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBGcmFtZUxvYWRD
YWxsYmFja3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQyMzMxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84MTkzNjQxPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggc2V0cyB1cCB0aGUg
ZnJhbWV3b3JrIGZvciBzdXBwb3J0aW5nIGR1bXBGcmFtZUxvYWRDYWxsYmFja3MsIGFzIHdlbGwg
YXMKKyAgICAgICAgb3V0cHV0dGluZyBzb21lIG9mIHRoZSByZXF1aXJlZCBzdHJpbmdzLiBBcyB0
ZXN0cyBiZWNvbWUgdW5za2lwcGVkIHRoZSBvdGhlciBjYWxsYmFja3MKKyAgICAgICAgY2FuIGJl
IHN1cHBvcnRlZC4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUv
QmluZGluZ3MvTGF5b3V0VGVzdENvbnRyb2xsZXIuaWRsOiBBZGQgZHVtcEZyYW1lTG9hZENhbGxi
YWNrcygpCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3Rl
ZEJ1bmRsZS5jcHA6CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVz
c2FnZSk6IHBhc3MgaW4gdGhlIGRpY3Rpb25hcnkgY29udGFpbmluZyBrZXlzIG5lZWRlZCB0byBp
bml0aWFsaXplCisgICAgICAgIGR1bXAgY2FsbGJhY2tzIGZvciB0aGUgbGF5b3V0VGVzdENvbnRy
b2xsZXIuCisgICAgICAgIChXVFI6OmJvb2xlYW5Gb3JLZXkpOiBIZWxwZXIgZnVuY3Rpb24gdG8g
ZXh0cmFjdCBib29sZWFuIHZhbHVlIGZyb20ga2V5IGluIFdLRGljdGlvbmFyeVJlZi4KKyAgICAg
ICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGU6OmJlZ2luVGVzdGluZyk6IFVwZGF0ZSB0byB0YWtlIGlu
IHRoZSBkaWN0aW9uYXJ5IHBhc3NlZCBpbiBieSB0aGUgVGVzdENvbnRyb2xsZXIuCisgICAgICAg
IFdlIGNhbm5vdCBzZXQgdGhlIGJpdHMgb24gdGhlIGxheW91dFRlc3RDb250cm9sbGVyIHVudGls
IGl0IGhhcyBiZWVuIGNyZWF0ZWQgaW4gYmVnaW5UZXN0aW5nKCkuCisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oOgorCisgICAgICAgICog
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgor
ICAgICAgICAoV1RSKToKKyAgICAgICAgKFdUUjo6ZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHQpOiBTdGF0aWMgZnVuY3Rpb24gc2ltaWxhciB0bworICAgICAgICAtW1dl
YkZyYW1lIF9kcnRfZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHRdIGluIER1bXBSZW5k
ZXJUcmVlLgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFN0YXJ0UHJvdmlz
aW9uYWxMb2FkRm9yRnJhbWUpOiBPdXRwdXQgc3RyaW5nLgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6IE91dHB1dCBzdHJpbmcuCisgICAg
ICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKTogT3V0
cHV0IHN0cmluZy4KKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRSZWNlaXZl
VGl0bGVGb3JGcmFtZSk6IE91dHB1dCBzdHJpbmcuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVu
ZGxlUGFnZTo6ZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSk6IE91dHB1dCBzdHJpbmcu
CisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFBlcmZvcm1DbGllbnRSZWRp
cmVjdEZvckZyYW1lKTogT3V0cHV0IHN0cmluZy4gSW4gV0sxIGl0J3MKKyAgICAgICAgIndpbGxQ
ZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTCIgc28gd2Ugd2lsbCBoYXZlIHRvIHVzZSB0aGF0IHZh
bHVlIGhlcmUuCisgICAgICAgIChXVFI6OkluamVjdGVkQnVuZGxlUGFnZTo6ZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUpOiBPdXRwdXQgc3RyaW5nLgorICAgICAgICAoV1RSOjpJbmplY3Rl
ZEJ1bmRsZVBhZ2U6OmRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lKTogT3V0cHV0IHN0cmlu
Zy4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdUUjo6TGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91
dFRlc3RDb250cm9sbGVyKTogSW5pdGlhbGl6ZSB0byBub3QgZHVtcCBmcmFtZSBsb2FkIGNhbGxi
YWNrcy4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0xheW91dFRl
c3RDb250cm9sbGVyLmg6CisgICAgICAgIChXVFI6OkxheW91dFRlc3RDb250cm9sbGVyOjpkdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzKTogQ2hhbmdlIHRvIHN1cHBvcnQgY2FsbCBmcm9tIEluamVjdGVk
QnVuZGxlLgorICAgICAgICAoV1RSOjpMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvdWxkRHVtcEZy
YW1lTG9hZENhbGxiYWNrcyk6IFJldHVybiBiaXQuCisgICAgICAgIChMYXlvdXRUZXN0Q29udHJv
bGxlcik6IEFkZGVkIG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyB0byB0cmFjayB3aGV0aGVyIHRv
IGR1bXAgdGhlIG91dHB1dC4KKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcDoK
KyAgICAgICAgKFdUUjo6c2hvdWxkTG9nRnJhbWVMb2FkRGVsZWdhdGVzKTogU2ltaWxhciB0byBE
UlQuCisgICAgICAgIChXVFI6OlRlc3RJbnZvY2F0aW9uOjppbnZva2UpOiBCYXNlZCBvbiB0aGUg
VVJMIGxvYWRlZCwgc2V0IHRoZSBiaXQgaW4gdGhlIGRpY3Rpb25hcnkgdGhhdCBnZXRzIHBhc3Nl
ZAorICAgICAgICB0byB0aGUgaW5qZWN0ZWQgYnVuZGxlLgorCiAyMDEyLTA1LTA2ICBNYXJ5IFd1
ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgQWRkIGEgY29udHJpYnV0
b3IgdG8gY29tbWl0dGVycy5weQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9CaW5kaW5ncy9MYXlvdXRUZXN0Q29udHJvbGxlci5pZGwgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250cm9s
bGVyLmlkbAppbmRleCBkOGRlZjRkZWVlOWNjODZmOWQ2OGZlM2RkM2Y0OWNjODUwMGIxM2ZhLi4w
ZGVjZDFmZDBiNmFmNzcxODAzNWUyZGI5NTYxODAyZjk2OGQyOGZhIDEwMDY0NAotLS0gYS9Ub29s
cy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0JpbmRpbmdzL0xheW91dFRlc3RDb250
cm9sbGVyLmlkbAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0Jp
bmRpbmdzL0xheW91dFRlc3RDb250cm9sbGVyLmlkbApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsNiArNDEsNyBAQCBtb2R1
bGUgV1RSIHsKICAgICAgICAgdm9pZCBkdW1wU3RhdHVzQ2FsbGJhY2tzKCk7CiAgICAgICAgIHZv
aWQgZHVtcFRpdGxlQ2hhbmdlcygpOwogICAgICAgICB2b2lkIGR1bXBGdWxsU2NyZWVuQ2FsbGJh
Y2tzKCk7CisgICAgICAgIHZvaWQgZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpOwogICAgICAgICB2
b2lkIGR1bXBDb25maWd1cmF0aW9uRm9yVmlld3BvcnQoaW4gaW50IGRldmljZURQSSwgaW4gaW50
IGRldmljZVdpZHRoLCBpbiBpbnQgZGV2aWNlSGVpZ2h0LCBpbiBpbnQgYXZhaWxhYmxlV2lkdGgs
IGluIGludCBhdmFpbGFibGVIZWlnaHQpOwogCiAgICAgICAgIC8vIFNwZWNpYWwgb3B0aW9ucy4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZS5jcHAKaW5kZXggNTU2NGIzMmRmMDMwZTBkNzBjZWYxZDQ4YzBhMjllMzNiMDI5
OGM3OS4uYTFkMzk1M2VlYTMwNDQ1ZTdmMDMxNjk3N2E1ODM2NWU1ZGQ3NDIzOCAxMDA2NDQKLS0t
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMSwg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRS
ZWNlaXZlTWVzc2FnZShXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZwog
ICAgICAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gYWNrTWVzc2FnZUJvZHkoQWRvcHRXSywg
V0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkJlZ2luVGVzdCIpKTsKICAgICAgICAgV0tC
dW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwgYWNrTWVzc2FnZU5hbWUuZ2V0KCksIGFja01lc3Nh
Z2VCb2R5LmdldCgpKTsKIAotICAgICAgICBiZWdpblRlc3RpbmcoKTsKKyAgICAgICAgYmVnaW5U
ZXN0aW5nKG1lc3NhZ2VCb2R5RGljdGlvbmFyeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVs
c2UgaWYgKFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcobWVzc2FnZU5hbWUsICJSZXNldCIp
KSB7CiAgICAgICAgIEFTU0VSVChtZXNzYWdlQm9keSk7CkBAIC0xOTAsNyArMTkwLDEzIEBAIHZv
aWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKFdLU3RyaW5nUmVmIG1lc3NhZ2VO
YW1lLCBXS1R5cGVSZWYgbWVzc2FnCiAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShtX2J1bmRsZSwg
ZXJyb3JNZXNzYWdlTmFtZS5nZXQoKSwgZXJyb3JNZXNzYWdlQm9keS5nZXQoKSk7CiB9CiAKLXZv
aWQgSW5qZWN0ZWRCdW5kbGU6OmJlZ2luVGVzdGluZygpCitib29sIGJvb2xlYW5Gb3JLZXkoV0tE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnksIGNvbnN0IGNoYXIqIGtleSkKK3sKKyAgICBXS1JldGFp
blB0cjxXS1N0cmluZ1JlZj4gd2tLZXkoQWRvcHRXSywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoa2V5KSk7CisgICAgcmV0dXJuIFdLQm9vbGVhbkdldFZhbHVlKHN0YXRpY19jYXN0PFdL
Qm9vbGVhblJlZj4oV0tEaWN0aW9uYXJ5R2V0SXRlbUZvcktleShkaWN0aW9uYXJ5LCB3a0tleS5n
ZXQoKSkpKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZTo6YmVnaW5UZXN0aW5nKFdLRGljdGlv
bmFyeVJlZiBzZXR0aW5ncykKIHsKICAgICBtX3N0YXRlID0gVGVzdGluZzsKIApAQCAtMjE1LDYg
KzIyMSw4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OmJlZ2luVGVzdGluZygpCiAKICAgICBXS0J1
bmRsZVJlbW92ZUFsbFVzZXJDb250ZW50KG1fYnVuZGxlLCBtX3BhZ2VHcm91cCk7CiAKKyAgICBt
X2xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2xlYW5Gb3JL
ZXkoc2V0dGluZ3MsICJEdW1wRnJhbWVMb2FkRGVsZWdhdGVzIikpOworCiAgICAgcGFnZSgpLT5y
ZXNldCgpOwogCiAgICAgV0tCdW5kbGVDbGVhckFsbERhdGFiYXNlcyhtX2J1bmRsZSk7CmRpZmYg
LS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmggYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmgKaW5kZXggY2I2N2RhZGJlYjU1Y2E3NGM5MmZjZjQxNDhkNzBiYmVjMWEyNTk1MC4uMDIz
MjMwNGUyZWQ5MzQ5Yzc2NjQyMDBjY2Q3NWFlYTMzNGUzYTI0MyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5oCisrKyBiL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMTA2LDcgKzEwNiw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemUo
V0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlckRhdGEpOwogICAgIHZvaWQgcmVzZXRMb2NhbFNl
dHRpbmdzKCk7CiAKLSAgICB2b2lkIGJlZ2luVGVzdGluZygpOworICAgIHZvaWQgYmVnaW5UZXN0
aW5nKFdLRGljdGlvbmFyeVJlZik7CiAKICAgICBXS0J1bmRsZVJlZiBtX2J1bmRsZTsKICAgICBX
S0J1bmRsZVBhZ2VHcm91cFJlZiBtX3BhZ2VHcm91cDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcCBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcApp
bmRleCA1MjdlYzM3OTk5YTAzMDQwYzQ1YmExNDllZjc4OWRkOWJmMTM2NTUzLi41YTZlMzEzZmNi
N2FlZTVlNzlhZmQwNGY3MGI2M2NkMWNhNzljYmM0IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKKysrIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
CkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC0zNDcsNiArMzQ3LDMyIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpyZXNldCgp
CiAKIC8vIExvYWRlciBDbGllbnQgQ2FsbGJhY2tzCiAKKy8vIFNpbWlsYXIgdG8gLVtXZWJGcmFt
ZSBfZHJ0X2Rlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0XQorc3RhdGljIHZvaWQgZHVt
cEZyYW1lRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoV0tCdW5kbGVGcmFtZVJlZiBm
cmFtZSkKK3sKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gbmFtZShBZG9wdFdLLCBXS0J1
bmRsZUZyYW1lQ29weU5hbWUoZnJhbWUpKTsKKyAgICBpZiAoV0tCdW5kbGVGcmFtZUlzTWFpbkZy
YW1lKGZyYW1lKSkgeworICAgICAgICBpZiAoV0tTdHJpbmdJc0VtcHR5KG5hbWUuZ2V0KCkpKSB7
CisgICAgICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5h
cHBlbmQoIm1haW4gZnJhbWUiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
bWFpbiBmcmFtZSBcIiIpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5n
QnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcobmFtZSkpOworICAgICAgICBJbmplY3RlZEJ1
bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIlwiIik7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBpZiAoV0tTdHJpbmdJc0VtcHR5KG5hbWUuZ2V0KCkpKSB7Cisg
ICAgICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgi
ZnJhbWUgKGFub255bW91cykiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEluamVj
dGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiZnJhbWUgXCIiKTsK
KyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQodG9X
VEZTdHJpbmcobmFtZSkpOworICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWls
ZGVyKCktPmFwcGVuZCgiXCIiKTsKK30KKwogdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVuZGxl
RnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCiB7CiAg
ICAgc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVQYWdlKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xp
ZW50SW5mbykpLT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKGZyYW1lKTsKQEAgLTQ2
Miw2ICs0ODgsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKICAgICBpZiAoIUluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IGlmIChJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hv
dWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIGR1bXBGcmFtZURlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6
OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIgLSBkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lXG4iKTsKKyAgICB9CisKICAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLnRvcExvYWRpbmdGcmFtZSgpKQogICAgICAgICByZXR1cm47CiAgICAgSW5qZWN0ZWRCdW5k
bGU6OnNoYXJlZCgpLnNldFRvcExvYWRpbmdGcmFtZShmcmFtZSk7CkBAIC00ODgsNiArNTE5LDE0
IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlCiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpk
aWRDb21taXRMb2FkRm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKIHsKKyAgICBpZiAo
IUluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9s
bGVyKCktPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUpOwor
ICAgIEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIC0g
ZGlkQ29tbWl0TG9hZEZvckZyYW1lXG4iKTsKIH0KIAogZW51bSBGcmFtZU5hbWVQb2xpY3kgeyBT
aG91bGROb3RJbmNsdWRlRnJhbWVOYW1lLCBTaG91bGRJbmNsdWRlRnJhbWVOYW1lIH07CkBAIC02
MzksNiArNjc4LDExIEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRGaW5pc2hMb2FkRm9y
RnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKICAgICBpZiAoIUluamVjdGVkQnVuZGxlOjpz
aGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChJbmpl
Y3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcEZy
YW1lTG9hZENhbGxiYWNrcygpKSB7CisgICAgICAgIGR1bXBGcmFtZURlc2NyaXB0aW9uU3VpdGFi
bGVGb3JUZXN0UmVzdWx0KGZyYW1lKTsKKyAgICAgICAgSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgp
LnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKCIgLSBkaWRGaW5pc2hMb2FkRm9yRnJhbWVcbiIpOwor
ICAgIH0KKwogICAgIGlmIChmcmFtZSAhPSBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkudG9wTG9h
ZGluZ0ZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuc2V0VG9wTG9hZGluZ0ZyYW1lKDApOwpAQCAtNjY5LDYgKzcxMywxMyBAQCB2b2lkIEluamVj
dGVkQnVuZGxlUGFnZTo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tTdHJpbmdSZWYgdGl0bGUs
IFdLQnVuZGxlRnJhbQogICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmlzVGVzdFJ1
bm5pbmcoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKEluamVjdGVkQnVuZGxlOjpzaGFy
ZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tz
KCkpIHsKKyAgICAgICAgZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
ZnJhbWUpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigp
LT5hcHBlbmQoIiAtIGRpZFJlY2VpdmVUaXRsZTogIik7CisgICAgICAgIEluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCh0b1dURlN0cmluZyh0aXRsZSkpOwor
ICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQo
IlxuIik7CisgICAgfQorCiAgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkubGF5b3V0
VGVzdENvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcFRpdGxlQ2hhbmdlcygpKQogICAgICAgICByZXR1
cm47CiAKQEAgLTcwNiwxMCArNzU3LDI4IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRD
bGVhcldpbmRvd0ZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLQnVuZGxlCiAKIHZv
aWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRDYW5jZWxDbGllbnRSZWRpcmVjdEZvckZyYW1lKFdL
QnVuZGxlRnJhbWVSZWYgZnJhbWUpCiB7CisgICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVk
KCkuaXNUZXN0UnVubmluZygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIUluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zaG91bGREdW1wRnJhbWVM
b2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGR1bXBGcmFtZURlc2NyaXB0
aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hh
cmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiAtIGRpZENhbmNlbENsaWVudFJlZGlyZWN0
Rm9yRnJhbWVcbiIpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbFBlcmZvcm1D
bGllbnRSZWRpcmVjdEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLVVJMUmVmIHVy
bCwgZG91YmxlIGRlbGF5LCBkb3VibGUgZGF0ZSkKIHsKKyAgICBpZiAoIUluamVjdGVkQnVuZGxl
OjpzaGFyZWQoKS5pc1Rlc3RSdW5uaW5nKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICgh
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RDb250cm9sbGVyKCktPnNob3VsZER1
bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZHVtcEZyYW1l
RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQoZnJhbWUpOworICAgIEluamVjdGVkQnVu
ZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIC0gd2lsbFBlcmZvcm1DbGll
bnRSZWRpcmVjdFRvVVJMOiAiKTsKKyAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5n
QnVpbGRlcigpLT5hcHBlbmQodG9XVEZTdHJpbmcoV0tVUkxDb3B5U3RyaW5nKHVybCkpKTsKKyAg
ICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3RyaW5nQnVpbGRlcigpLT5hcHBlbmQoIiBcbiIp
OwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlv
blR5cGUgdHlwZSkKQEAgLTcyMSw2ICs3OTAsMTEgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCiAg
ICAgaWYgKCFJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuaXNUZXN0UnVubmluZygpKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBpZiAoSW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLmxheW91dFRlc3RD
b250cm9sbGVyKCktPnNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSkgeworICAgICAgICBk
dW1wRnJhbWVEZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSk7CisgICAgICAg
IEluamVjdGVkQnVuZGxlOjpzaGFyZWQoKS5zdHJpbmdCdWlsZGVyKCktPmFwcGVuZCgiIC0gZGlk
RmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWVcbiIpOworICAgIH0KKwogICAgIHVuc2lnbmVkIHBl
bmRpbmdGcmFtZVVubG9hZEV2ZW50cyA9IFdLQnVuZGxlRnJhbWVHZXRQZW5kaW5nVW5sb2FkQ291
bnQoZnJhbWUpOwogICAgIGlmIChwZW5kaW5nRnJhbWVVbmxvYWRFdmVudHMpIHsKICAgICAgICAg
SW5qZWN0ZWRCdW5kbGU6OnNoYXJlZCgpLnN0cmluZ0J1aWxkZXIoKS0+YXBwZW5kKGZyYW1lVG9T
dHIoZnJhbWUpKTsKQEAgLTczMiw2ICs4MDYsMTMgQEAgdm9pZCBJbmplY3RlZEJ1bmRsZVBhZ2U6
OmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWUpCiAK
IHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JGcmFtZShX
S0J1bmRsZUZyYW1lUmVmIGZyYW1lKQogeworICAgIGlmICghSW5qZWN0ZWRCdW5kbGU6OnNoYXJl
ZCgpLmlzVGVzdFJ1bm5pbmcoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKEluamVjdGVk
QnVuZGxlOjpzaGFyZWQoKS5sYXlvdXRUZXN0Q29udHJvbGxlcigpLT5zaG91bGREdW1wRnJhbWVM
b2FkQ2FsbGJhY2tzKCkpIHsKKyAgICAgICAgZHVtcEZyYW1lRGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQoZnJhbWUpOworICAgICAgICBJbmplY3RlZEJ1bmRsZTo6c2hhcmVkKCkuc3Ry
aW5nQnVpbGRlcigpLT5hcHBlbmQoIiAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lXG4i
KTsKKyAgICB9CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5kbGVQYWdlOjpkaWREaXNwbGF5SW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSkKZGlmZiAtLWdpdCBhL1Rv
b2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgg
Yi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5oCmluZGV4IGUwNTdjYTkwNjE4ZTM3MDA5MzI2NWQyNGJiYTE3MGM5Y2IzNTE4ZjguLjJlMTkx
ZDcxZDM2NDExMjI2YmFhYjFlMTkxMjY5NTE2OTJmMGZkZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmgKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2Uu
aApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVk
QnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA1NWJmOWRkMDhiNmU5M2RjMDFj
MTJjN2UzMjE1YzNkYmE1NDkxZDJkLi43MDk5ODhiN2M0ZGY0YzhhMDQ0MzE0MWYzYmRkN2M3NDlm
ZGI0YmJjIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxl
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTAyLDYgKzEwMiw3
IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcigpCiAgICAgLCBt
X2R1bXBUaXRsZUNoYW5nZXMoZmFsc2UpCiAgICAgLCBtX2R1bXBQaXhlbHModHJ1ZSkKICAgICAs
IG1fZHVtcEZ1bGxTY3JlZW5DYWxsYmFja3MoZmFsc2UpCisgICAgLCBtX2R1bXBGcmFtZUxvYWRD
YWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX3dhaXRUb0R1bXAoZmFsc2UpCiAgICAgLCBtX3Rlc3RS
ZXBhaW50KGZhbHNlKQogICAgICwgbV90ZXN0UmVwYWludFN3ZWVwSG9yaXpvbnRhbGx5KGZhbHNl
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5oIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IGI0NmRhMjE1YzdiZWIyYzFmOWJiMGE3N2Q2
YzAwODM0ZmY3NjhjN2EuLjk4NTVjM2VmOThmOWZkNTgxNDNlN2NhZjExMDJjOTQ4N2UxYjYwYjEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL0xheW91dFRlc3RDb250cm9sbGVyLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxMCwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTcyLDYgKzcyLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgZHVtcFN0YXR1c0NhbGxiYWNrcygpIHsgbV9kdW1wU3RhdHVzQ2FsbGJhY2tzID0g
dHJ1ZTsgfQogICAgIHZvaWQgZHVtcFRpdGxlQ2hhbmdlcygpIHsgbV9kdW1wVGl0bGVDaGFuZ2Vz
ID0gdHJ1ZTsgfQogICAgIHZvaWQgZHVtcEZ1bGxTY3JlZW5DYWxsYmFja3MoKSB7IG1fZHVtcEZ1
bGxTY3JlZW5DYWxsYmFja3MgPSB0cnVlOyB9CisgICAgdm9pZCBkdW1wRnJhbWVMb2FkQ2FsbGJh
Y2tzKGJvb2wgdmFsdWUgPSB0cnVlKSB7IG1fZHVtcEZyYW1lTG9hZENhbGxiYWNrcyA9IHZhbHVl
OyB9CiAgICAgdm9pZCBkdW1wQ29uZmlndXJhdGlvbkZvclZpZXdwb3J0KGludCBkZXZpY2VEUEks
IGludCBkZXZpY2VXaWR0aCwgaW50IGRldmljZUhlaWdodCwgaW50IGF2YWlsYWJsZVdpZHRoLCBp
bnQgYXZhaWxhYmxlSGVpZ2h0KTsKIAogICAgIC8vIFNwZWNpYWwgb3B0aW9ucy4KQEAgLTE1MSw2
ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGREdW1wVGl0bGVDaGFuZ2VzKCkgY29u
c3QgeyByZXR1cm4gbV9kdW1wVGl0bGVDaGFuZ2VzOyB9CiAgICAgYm9vbCBzaG91bGREdW1wUGl4
ZWxzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wUGl4ZWxzOyB9CiAgICAgYm9vbCBzaG91bGREdW1w
RnVsbFNjcmVlbkNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEZ1bGxTY3JlZW5DYWxs
YmFja3M7IH0KKyAgICBib29sIHNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSBjb25zdCB7
IHJldHVybiBtX2R1bXBGcmFtZUxvYWRDYWxsYmFja3M7IH0KICAgICBib29sIGlzUG9saWN5RGVs
ZWdhdGVFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wb2xpY3lEZWxlZ2F0ZUVuYWJsZWQ7IH0K
ICAgICBib29sIGlzUG9saWN5RGVsZWdhdGVQZXJtaXNzaXZlKCkgY29uc3QgeyByZXR1cm4gbV9w
b2xpY3lEZWxlZ2F0ZVBlcm1pc3NpdmU7IH0KIApAQCAtMjI1LDYgKzIyNyw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX2R1bXBUaXRsZUNoYW5nZXM7CiAgICAgYm9vbCBtX2R1bXBQaXhlbHM7CiAg
ICAgYm9vbCBtX2R1bXBGdWxsU2NyZWVuQ2FsbGJhY2tzOworICAgIGJvb2wgbV9kdW1wRnJhbWVM
b2FkQ2FsbGJhY2tzOwogICAgIGJvb2wgbV93YWl0VG9EdW1wOyAvLyBUcnVlIGlmIHdhaXRVbnRp
bERvbmUoKSBoYXMgYmVlbiBjYWxsZWQsIGJ1dCBub3RpZnlEb25lKCkgaGFzIG5vdCB5ZXQgYmVl
biBjYWxsZWQuCiAgICAgYm9vbCBtX3Rlc3RSZXBhaW50OwogICAgIGJvb2wgbV90ZXN0UmVwYWlu
dFN3ZWVwSG9yaXpvbnRhbGx5OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9U
ZXN0SW52b2NhdGlvbi5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9u
LmNwcAppbmRleCBlNWFkOWI2ZDFhZGE4OGI5YmM2ODM4YmE5NTgyYzQzNmRhYWM5ZmEwLi42MTA2
ZjYyZjJlZDdlYjkzNTEzZGQ0NmFiYjQ1MWYxOGQwMGZmOTVjIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0
UnVubmVyL1Rlc3RJbnZvY2F0aW9uLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTI3LDYgKzEyNywxMCBAQCBzdGF0aWMg
dm9pZCBzaXplV2ViVmlld0ZvckN1cnJlbnRUZXN0KGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKICAg
ICBlbHNlCiAgICAgICAgIFRlc3RDb250cm9sbGVyOjpzaGFyZWQoKS5tYWluV2ViVmlldygpLT5y
ZXNpemVUbyhub3JtYWxXaWR0aCwgbm9ybWFsSGVpZ2h0KTsKIH0KK3N0YXRpYyBib29sIHNob3Vs
ZExvZ0ZyYW1lTG9hZERlbGVnYXRlcyhjb25zdCBjaGFyKiBwYXRoT3JVUkwpCit7CisgICAgcmV0
dXJuIHN0cnN0cihwYXRoT3JVUkwsICJsb2FkaW5nLyIpOworfQogCiBzdGF0aWMgYm9vbCBzaG91
bGRPcGVuV2ViSW5zcGVjdG9yKGNvbnN0IGNoYXIqIHBhdGhPclVSTCkKIHsKQEAgLTE0MCw2ICsx
NDQsMTAgQEAgdm9pZCBUZXN0SW52b2NhdGlvbjo6aW52b2tlKCkKICAgICBXS1JldGFpblB0cjxX
S1N0cmluZ1JlZj4gbWVzc2FnZU5hbWUgPSBhZG9wdFdLKFdLU3RyaW5nQ3JlYXRlV2l0aFVURjhD
U3RyaW5nKCJCZWdpblRlc3QiKSk7CiAgICAgV0tSZXRhaW5QdHI8V0tNdXRhYmxlRGljdGlvbmFy
eVJlZj4gYmVnaW5UZXN0TWVzc2FnZUJvZHkgPSBhZG9wdFdLKFdLTXV0YWJsZURpY3Rpb25hcnlD
cmVhdGUoKSk7CiAKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gZHVtcEZyYW1lTG9hZERl
bGVnYXRlc0tleSA9IGFkb3B0V0soV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkR1bXBG
cmFtZUxvYWREZWxlZ2F0ZXMiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tCb29sZWFuUmVmPiBkdW1w
RnJhbWVMb2FkRGVsZWdhdGVzVmFsdWUgPSBhZG9wdFdLKFdLQm9vbGVhbkNyZWF0ZShzaG91bGRM
b2dGcmFtZUxvYWREZWxlZ2F0ZXMobV9wYXRoT3JVUkwuY19zdHIoKSkpKTsKKyAgICBXS0RpY3Rp
b25hcnlBZGRJdGVtKGJlZ2luVGVzdE1lc3NhZ2VCb2R5LmdldCgpLCBkdW1wRnJhbWVMb2FkRGVs
ZWdhdGVzS2V5LmdldCgpLCBkdW1wRnJhbWVMb2FkRGVsZWdhdGVzVmFsdWUuZ2V0KCkpOworCiAg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IGR1bXBQaXhlbHNLZXkgPSBhZG9wdFdLKFdLU3Ry
aW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJEdW1wUGl4ZWxzIikpOwogICAgIFdLUmV0YWluUHRy
PFdLQm9vbGVhblJlZj4gZHVtcFBpeGVsc1ZhbHVlID0gYWRvcHRXSyhXS0Jvb2xlYW5DcmVhdGUo
bV9kdW1wUGl4ZWxzKSk7CiAgICAgV0tEaWN0aW9uYXJ5QWRkSXRlbShiZWdpblRlc3RNZXNzYWdl
Qm9keS5nZXQoKSwgZHVtcFBpeGVsc0tleS5nZXQoKSwgZHVtcFBpeGVsc1ZhbHVlLmdldCgpKTsK
</data>
<flag name="review"
          id="146377"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>