<?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>93072</bug_id>
          
          <creation_ts>2012-08-03 00:07:34 -0700</creation_ts>
          <short_desc>V8Proxy::retrieve(*) leads to really obfuscated code and should be removed</short_desc>
          <delta_ts>2012-08-03 01:56:30 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>75793</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>arv</cc>
    
    <cc>eric</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>686284</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 00:07:34 -0700</bug_when>
    <thetext>V8Proxy::retrieve(*) leads to really obfuscated code and should be removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686285</commentid>
    <comment_count>1</comment_count>
      <attachid>156273</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 00:07:59 -0700</bug_when>
    <thetext>Created attachment 156273
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686291</commentid>
    <comment_count>2</comment_count>
      <attachid>156273</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-03 00:12:15 -0700</bug_when>
    <thetext>Comment on attachment 156273
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3324
&gt; +        frame-&gt;script()-&gt;windowShell()-&gt;initContextIfNeeded();

I guess if we&apos;re running script in the first place, then script() is never null...

&gt; Source/WebCore/bindings/scripts/test/V8/V8TestNode.cpp:115
&gt; +    V8Proxy* proxy = impl-&gt;document()-&gt;frame() ? impl-&gt;document()-&gt;frame()-&gt;script()-&gt;proxy() : 0;

This seems like a really long idiom... Maybe impl should have an accessor which can return script() for you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686297</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 00:23:30 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 156273 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156273&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:3324
&gt; &gt; +        frame-&gt;script()-&gt;windowShell()-&gt;initContextIfNeeded();
&gt; 
&gt; I guess if we&apos;re running script in the first place, then script() is never null...

script() is no longer ever null.  It&apos;s the object you ask if script is disabled.

&gt; &gt; Source/WebCore/bindings/scripts/test/V8/V8TestNode.cpp:115
&gt; &gt; +    V8Proxy* proxy = impl-&gt;document()-&gt;frame() ? impl-&gt;document()-&gt;frame()-&gt;script()-&gt;proxy() : 0;
&gt; 
&gt; This seems like a really long idiom... Maybe impl should have an accessor which can return script() for you?

Yeah, this is generated code, so I&apos;m not that worried about it.  I&apos;d like to get rid of V8Proxy entirely, we will make it shorter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686303</commentid>
    <comment_count>4</comment_count>
      <attachid>156275</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 00:32:24 -0700</bug_when>
    <thetext>Created attachment 156275
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686310</commentid>
    <comment_count>5</comment_count>
      <attachid>156275</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-08-03 00:38:06 -0700</bug_when>
    <thetext>Comment on attachment 156275
Patch

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

OK.

&gt; Source/WebCore/bindings/v8/V8LazyEventListener.cpp:91
&gt; +        return v8::Local&lt;v8::Value&gt;();

Super ugly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686311</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 00:39:18 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebCore/bindings/v8/V8LazyEventListener.cpp:91
&gt; &gt; +        return v8::Local&lt;v8::Value&gt;();
&gt; 
&gt; Super ugly.

We can make it v8::Undefined() if you like that better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686334</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-03 00:51:09 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; &gt; Source/WebCore/bindings/v8/V8LazyEventListener.cpp:91
&gt; &gt; &gt; +        return v8::Local&lt;v8::Value&gt;();
&gt; &gt; 
&gt; &gt; Super ugly.
&gt; 
&gt; We can make it v8::Undefined() if you like that better.

Now the V8 team made v8::Handle&lt;v8::Value&gt;() as fast as v8::Undefined(Isolate). So we can use v8::Handle&lt;v8::Value&gt;() everywhere regardless of Isolate. I&apos;m planning to implement

    v8::Handle&lt;v8::Value&gt; v8Undefined() { return v8::Handle&lt;v8::Value&gt;(); }

in V8Binding.cpp and use v8Undefined() everywhere in V8 bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686345</commentid>
    <comment_count>8</comment_count>
      <attachid>156275</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-03 00:54:42 -0700</bug_when>
    <thetext>Comment on attachment 156275
Patch

Ok.  Sounds like we should land this with the ugly syntax and clean it up with the rest of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686436</commentid>
    <comment_count>9</comment_count>
      <attachid>156275</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-03 01:56:25 -0700</bug_when>
    <thetext>Comment on attachment 156275
Patch

Clearing flags on attachment: 156275

Committed r124583: &lt;http://trac.webkit.org/changeset/124583&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>686437</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-03 01:56:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156273</attachid>
            <date>2012-08-03 00:07:59 -0700</date>
            <delta_ts>2012-08-03 00:32:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93072-20120803000740.patch</filename>
            <type>text/plain</type>
            <size>24692</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRiZmUxZGM3NzM4ODgz
NGYyNWE4Y2JlZWNhNWRiZTZkZjk0NjFkNS4uYTkxMDdhNDFjNDljY2UyOWQ4OWY2ZWMzMzg5Zjhl
ZTMxOTYyZTVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTA4LTAzICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVjhQcm94eTo6cmV0cmlldmUo
KikgbGVhZHMgdG8gcmVhbGx5IG9iZnVzY2F0ZWQgY29kZSBhbmQgc2hvdWxkIGJlIHJlbW92ZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMDcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25h
bCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdlIHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4g
UGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVzY3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAg
ICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlVG9WOENvbnZlcnRlcnMpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0Ojp3cmFwU2xvdyk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVj
dG9yQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RO
b2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6OndyYXBTbG93KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcik6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxl
ZEFjdGlvbjo6ZXhlY3V0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6d2luZG93U2hlbGwpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdyYXBwZXI6Omluc3RhbnRpYXRlVjhPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEV2ZW50TGlzdGVu
ZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEhlbHBl
cnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9WOFByb3h5KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TGF6eUV2
ZW50TGlzdGVuZXI6OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
TGF6eUV2ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdCk6CisgICAgICAgICogYmlu
ZGluZ3MvdjgvVjhQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpoYW5kbGVP
dXRPZk1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjpyZXRyaWV2ZVBlckNvbnRl
eHREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6Om1haW5Xb3JsZENvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6dG9WOENvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
UHJveHkuaDoKKyAgICAgICAgKFY4UHJveHkpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6
YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93
OjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6b3BlbkNhbGxiYWNrKToKKyAgICAgICAgKFdl
YkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0RvY3VtZW50
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorCiAyMDEyLTA4LTAyICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVjhQcm94eTo6cmV0cmlldmVG
cmFtZUZvcipDb250ZXh0IGFyZSB1c2VkIG9ubHkgYnkgQmluZGluZ1N0YXRlIGFuZCBzaG91bGQg
YmUgcmVtb3ZlZCBhcyBzZXBhcmF0ZSBmdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
aW5kZXggNDE2YmJjMzY3ZTQwMjEzODgzZGY1MWMzYWFkODhhNjMyMDEyZTBmNS4uYzk1ZGEyN2Uw
MzQ2ZGQ1ODEyMzMwOTRmZWIwN2UxZWJjMTQ5MjM0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wOC0wMyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFY4UHJveHk6OnJldHJpZXZlKCopIGxlYWRzIHRvIHJlYWxseSBv
YmZ1c2NhdGVkIGNvZGUgYW5kIHNob3VsZCBiZSByZW1vdmVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzA3MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhl
IGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0
aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkRldlRv
b2xzQWdlbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRGV2VG9vbHNBZ2VudEltcGw6
OmRpZENyZWF0ZVNjcmlwdENvbnRleHQpOgorCiAyMDEyLTA4LTAyICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTI0NTQwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JWOC5wbQppbmRleCA0NzRjNDRlOGZhMTNlMzdiOTQ1ZjNkMTIyZTUxYzAwNDZk
YjlmMzc5Li5lYjYyYTI2MDhjMzVjNmNhNGM2YjQ3ZTk1ZjMzNzQ2NTBkM2E1ZDdmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpA
QCAtMzI5NCwxMCArMzI5NCwxMCBAQCBFTkQKIAogICAgIG15ICRwcm94eUluaXQ7CiAgICAgaWYg
KElzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSkgewotICAgICAgICAkcHJveHlJbml0ID0gIlY4UHJv
eHk6OnJldHJpZXZlKGltcGwtPmRvY3VtZW50KCktPmZyYW1lKCkpIjsKKyAgICAgICAgJHByb3h5
SW5pdCA9ICJpbXBsLT5kb2N1bWVudCgpLT5mcmFtZSgpID8gaW1wbC0+ZG9jdW1lbnQoKS0+ZnJh
bWUoKS0+c2NyaXB0KCktPnByb3h5KCkgOiAwIjsKICAgICAgICAgIyBEb2N1bWVudFR5cGUgbm9k
ZXMgYXJlIHRoZSBvbmx5IG5vZGVzIHRoYXQgbWF5IGhhdmUgYSBOVUxMIGRvY3VtZW50LgogICAg
ICAgICBpZiAoJGludGVyZmFjZU5hbWUgZXEgIkRvY3VtZW50VHlwZSIpIHsKLSAgICAgICAgICAg
ICRwcm94eUluaXQgPSAiaW1wbC0+ZG9jdW1lbnQoKSA/ICRwcm94eUluaXQgOiAwIjsKKyAgICAg
ICAgICAgICRwcm94eUluaXQgPSAiaW1wbC0+ZG9jdW1lbnQoKSA/ICgkcHJveHlJbml0KSA6IDAi
OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgJHByb3h5SW5pdCA9ICIwIjsKQEAg
LTMzMjAsMTEgKzMzMjAsOCBAQCBFTkQKICAgICAjIG9iamVjdHMgKGkuZS4sIHRob3NlIHdpdGgg
Q2hlY2tTZWN1cml0eSkuCiAgICAgaWYgKElzVmlzaWJsZUFjcm9zc09yaWdpbnMoJGRhdGFOb2Rl
KSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgIGlmIChpbXBsLT5m
cmFtZSgpKSB7Ci0gICAgICAgIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoaW1wbC0+ZnJhbWUo
KSk7Ci0gICAgICAgIGlmIChwcm94eSkKLSAgICAgICAgICAgIHByb3h5LT53aW5kb3dTaGVsbCgp
LT5pbml0Q29udGV4dElmTmVlZGVkKCk7Ci0gICAgfQorICAgIGlmIChGcmFtZSogZnJhbWUgPSBp
bXBsLT5mcmFtZSgpKQorICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPmlu
aXRDb250ZXh0SWZOZWVkZWQoKTsKIEVORAogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9N
T2JqZWN0LmNwcAppbmRleCA2MmQwNjVmNzIyN2I2ZmIxY2IyZGNmNGY0MmJhOWJkM2E5YTllYTkx
Li44NGRmNGYzYTBhYjk1MzgxMjg5OWE1NWNhYWZiZDE4OWIxMzZjNmU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0LmNwcApAQCAtMTYzLDExICsxNjMsOCBAQCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0
QWN0aXZlRE9NTwogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcHBlcjsKICAgICBW
OFByb3h5KiBwcm94eSA9IDA7Ci0gICAgaWYgKGltcGwtPmZyYW1lKCkpIHsKLSAgICAgICAgcHJv
eHkgPSBWOFByb3h5OjpyZXRyaWV2ZShpbXBsLT5mcmFtZSgpKTsKLSAgICAgICAgaWYgKHByb3h5
KQotICAgICAgICAgICAgcHJveHktPndpbmRvd1NoZWxsKCktPmluaXRDb250ZXh0SWZOZWVkZWQo
KTsKLSAgICB9CisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpCisgICAgICAg
IGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKS0+aW5pdENvbnRleHRJZk5lZWRlZCgpOwog
CiAgICAgLy8gRW50ZXIgdGhlIG5vZGUncyBjb250ZXh0IGFuZCBjcmVhdGUgdGhlIHdyYXBwZXIg
aW4gdGhhdCBjb250ZXh0LgogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggY2JjN2I2YmI2OTdjYjcyNGU1
OGVlOTU4NjJiZmM0NGIxZDg1ZDgzMy4uYjRhZmQxZjJlOGE4OWZmYWM0M2IxNjEwZGMwYTc1MjY4
MjY1Njg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtNTQsNyAr
NTQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5hbWVkQ29uc3RydWN0
b3JDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OgogICAgIGlmIChDb25zdHJ1Y3Rvck1vZGU6
OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVjdCkKICAgICAg
ICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBWOFByb3h5Ojpy
ZXRyaWV2ZUZyYW1lRm9yQ3VycmVudENvbnRleHQoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBjdXJy
ZW50RnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpKTsKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm4gVjhQcm94eTo6dGhyb3dFcnJvcihWOFByb3h5OjpSZWZlcmVuY2VFcnJvciwg
IlRlc3ROYW1lZENvbnN0cnVjdG9yIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZnJhbWUgaXMgdW5h
dmFpbGFibGUiLCBhcmdzLkdldElzb2xhdGUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAppbmRleCBhZmM1MjM4
MGU5YzFhZTM2Y2FiOGFhZTc2MzQ5YWMzZjczN2JkMjU5Li5iOWUyNzBhNzcwNjU5ZGY1ODkxOTNi
MmY2MWIxMzgzNjM2NGY1OGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgYm9v
bCBWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCiB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVzdE5vZGU6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVz
dE5vZGU+IGltcGwsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcHBlcjsKLSAgICBWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZl
KGltcGwtPmRvY3VtZW50KCktPmZyYW1lKCkpOworICAgIFY4UHJveHkqIHByb3h5ID0gaW1wbC0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKSA/IGltcGwtPmRvY3VtZW50KCktPmZyYW1lKCktPnNjcmlwdCgp
LT5wcm94eSgpIDogMDsKIAogICAgIC8vIEVudGVyIHRoZSBub2RlJ3MgY29udGV4dCBhbmQgY3Jl
YXRlIHRoZSB3cmFwcGVyIGluIHRoYXQgY29udGV4dC4KICAgICB2ODo6SGFuZGxlPHY4OjpDb250
ZXh0PiBjb250ZXh0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFn
ZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMDNlN2M1N2IyNjk1ZDY0NTc3ZTA2NzNlM2E0MTM1
MWI5M2ZlMWFiNS4uNmNjYjBmMGIyMjM2NTM3NjE5NjJhNjc2ZmVjNDczNjQ5ZmQ3NzY4MCAxMDA3
NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2
ZXIuY3BwCkBAIC03OCw5ICs3OCw2IEBAIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6UGFnZVNjcmlw
dERlYnVnU2VydmVyKCkKIAogdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVy
KFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWdlKQogewotICAgIFY4UHJv
eHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUocGFnZS0+bWFpbkZyYW1lKCkpOwotICAgIGlm
ICghcHJveHkpCi0gICAgICAgIHJldHVybjsKICAgICBTY3JpcHRDb250cm9sbGVyKiBzY3JpcHRD
b250cm9sbGVyID0gcGFnZS0+bWFpbkZyYW1lKCktPnNjcmlwdCgpOwogICAgIGlmICghc2NyaXB0
Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQog
ICAgICAgICByZXR1cm47CkBAIC05Niw3ICs5Myw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjphZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgUGFnZSogcGFn
CiAgICAgfQogICAgIG1fbGlzdGVuZXJzTWFwLnNldChwYWdlLCBsaXN0ZW5lcik7CiAKLSAgICBW
OERPTVdpbmRvd1NoZWxsKiBzaGVsbCA9IHByb3h5LT53aW5kb3dTaGVsbCgpOworICAgIFY4RE9N
V2luZG93U2hlbGwqIHNoZWxsID0gc2NyaXB0Q29udHJvbGxlci0+d2luZG93U2hlbGwoKTsKICAg
ICBpZiAoIXNoZWxsLT5pc0NvbnRleHRJbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CiAg
ICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHNoZWxsLT5jb250ZXh0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCBm
NTY0NTc2YTJjMzdlMTM2NGMzNDEwZjExYWMwN2NhY2E3OGEzYTFkLi40Mzc0ZWI0YzQ5ZDQ4NTM2
NTM4MzI4NTY1OWUxZjM1ZTY5ZmM3NmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTk5LDExICs5OSw5IEBAIHZvaWQgU2NoZWR1bGVk
QWN0aW9uOjpleGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgICAg
IEZyYW1lKiBmcmFtZSA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCk7
CiAgICAgICAgIGlmICghZnJhbWUpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIFNjcmlw
dENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBmcmFtZS0+c2NyaXB0KCk7Ci0gICAgICAg
IGlmICghc2NyaXB0Q29udHJvbGxlci0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpKQorICAgICAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMo
QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBWOFBy
b3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGZyYW1lKTsKLSAgICAgICAgZXhlY3V0ZShw
cm94eSk7CisgICAgICAgIGV4ZWN1dGUoZnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpKTsKICAgICB9
CiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggNjIyZTgzM2I1ZjNiZDViZjFmZTkxYTY5
ZDEyNTdjY2ZiZjRlNTNlZi4uYjNjMjJhY2E4ODBiZjgzYjUxODg1YWQ3OWQzMWM3MTMyZThjMmM0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApA
QCAtNjUsNiArNjUsNyBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFY4UHJveHkgc2hvdWxkIGVp
dGhlciBiZSBmb2xkZWQgaW50byBTY3JpcHRDb250cm9sbGVyCiAgICAgLy8gb3IgdGhpcyBhY2Nl
c3NvciBzaG91bGQgYmUgbWFkZSBKU1Byb3h5KgogICAgIFY4UHJveHkqIHByb3h5KCkgeyByZXR1
cm4gbV9wcm94eS5nZXQoKTsgfQorICAgIFY4RE9NV2luZG93U2hlbGwqIHdpbmRvd1NoZWxsKCkg
eyByZXR1cm4gbV9wcm94eS0+d2luZG93U2hlbGwoKTsgfQogCiAgICAgU2NyaXB0VmFsdWUgZXhl
Y3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CiAgICAgU2NyaXB0VmFsdWUgZXhl
Y3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0g
ZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFw
cGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5k
ZXggZjU5NWZlNGY4YjQ5YmM3ZTQ4MDc5NWZmMzgzY2M1YTU0NTY4MjM2Yi4uODExM2E3OGUxZjY5
MGRhNDlmYjVhYmVmOTdmYzI1NTEzMTRiODgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC0xNzcsNyArMTc3LDcgQEAgdjg6OkxvY2FsPHY4OjpP
YmplY3Q+IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9iamVjdChWOFByb3h5KiBwcm94eSwg
V3JhcHBlclQKICAgICAgICAgICAgIGlmIChpc1dyYXBwZXJPZlR5cGUoZ2xvYmFsUHJvdG90eXBl
LCAmVjhET01XaW5kb3c6OmluZm8pKSB7CiAgICAgICAgICAgICAgICAgRnJhbWUqIGZyYW1lID0g
VjhET01XaW5kb3c6OnRvTmF0aXZlKGdsb2JhbFByb3RvdHlwZSktPmZyYW1lKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMo
Tm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQotICAgICAgICAgICAgICAgICAgICBwcm94eSA9IFY4
UHJveHk6OnJldHJpZXZlKGZyYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcHJveHkgPSBmcmFt
ZS0+c2NyaXB0KCktPnByb3h5KCk7CiAgICAgICAgICAgICB9CiAjaWYgRU5BQkxFKFdPUktFUlMp
CiAgICAgICAgICAgICBlbHNlIGlmIChpc1dyYXBwZXJPZlR5cGUoZ2xvYmFsUHJvdG90eXBlLCAm
VjhXb3JrZXJDb250ZXh0OjppbmZvKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OEV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGIwNGYxNjk1YWU4NmI5NWRmZjU3NTA2MzlhNzFhNDQ1
MTAwNDA5NWEuLjNkNmZmNzRlMzVlZWExYTdiYmMyMDA1NGYzNGM1MGYzNDE1MDU3ZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyLmNwcApAQCAtNzks
MTMgKzc5LDIxIEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4RXZlbnRMaXN0ZW5lcjo6Y2FsbExp
c3RlbmVyRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4CiAKICAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gcGFyYW1ldGVyc1sxXSA9IHsganNFdmVudCB9OwogCi0gICAgaWYgKFY4UHJveHkq
IHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoY29udGV4dCkpIHsKLSAgICAgICAgRnJhbWUqIGZy
YW1lID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKLSAgICAgICAg
aWYgKGZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVTY3Jp
cHQpKQotICAgICAgICAgICAgcmV0dXJuIHByb3h5LT5jYWxsRnVuY3Rpb24oaGFuZGxlckZ1bmN0
aW9uLCByZWNlaXZlciwgMSwgcGFyYW1ldGVycyk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiBDYW4g
fGNvbnRleHR8IGJlIDAgaGVyZT8KKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6OlZhbHVlPigpOworCisgICAgaWYgKCFjb250ZXh0LT5pc0RvY3VtZW50KCkp
CisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOworCisgICAgRnJhbWUqIGZy
YW1lID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKKyAgICBpZiAo
IWZyYW1lKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsKKworICAgIGlm
ICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlw
dCkpCisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCi0gICAgcmV0dXJu
IHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS0+cHJv
eHkoKS0+Y2FsbEZ1bmN0aW9uKGhhbmRsZXJGdW5jdGlvbiwgcmVjZWl2ZXIsIDEsIHBhcmFtZXRl
cnMpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEhlbHBlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhIZWxwZXJzLmNwcAppbmRleCA3NTViMGI0NGZhNjk3YmJjODQ1MDMzZTA3ZWNlMTQ0MmUw
M2Q3NWQzLi41MGM3ODcwY2I1N2RlMjVhOTcyNjY5NDM4NjI3MWVjNzRhNjM2NjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhlbHBlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGVscGVycy5jcHAKQEAgLTUxLDcgKzUxLDkgQEAgVjhQ
cm94eSogdG9WOFByb3h5KE5QT2JqZWN0KiBucE9iamVjdCkKIHsKICAgICBWOE5QT2JqZWN0KiBv
YmplY3QgPSByZWludGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihucE9iamVjdCk7CiAgICAgRnJh
bWUqIGZyYW1lID0gb2JqZWN0LT5yb290T2JqZWN0LT5mcmFtZSgpOwotICAgIHJldHVybiBWOFBy
b3h5OjpyZXRyaWV2ZShmcmFtZSk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS0+cHJveHkoKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5
RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVu
dExpc3RlbmVyLmNwcAppbmRleCBlYjA1MjJmMjdhNTMwNmY0NTc0ZDYzMzA0YWM2Mjg0MDM1MTAx
NjJlLi4yNjljNWNhNTcxMTJiMmM2ZjcyMjNhNjY2M2ZjNmJkNDY0NzU3NTkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcApAQCAt
ODYsMTMgKzg2LDIxIEBAIHY4OjpMb2NhbDx2ODo6VmFsdWU+IFY4TGF6eUV2ZW50TGlzdGVuZXI6
OmNhbGxMaXN0ZW5lckZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvCiAKICAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gcGFyYW1ldGVyc1sxXSA9IHsganNFdmVudCB9OwogCi0gICAgaWYgKFY4UHJv
eHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoY29udGV4dCkpIHsKLSAgICAgICAgRnJhbWUq
IGZyYW1lID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKLSAgICAg
ICAgaWYgKGZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4ZWN1dGVT
Y3JpcHQpKQotICAgICAgICAgICAgcmV0dXJuIHByb3h5LT5jYWxsRnVuY3Rpb24oaGFuZGxlckZ1
bmN0aW9uLCByZWNlaXZlciwgMSwgcGFyYW1ldGVycyk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiBD
YW4gfGNvbnRleHR8IGJlIDAgaGVyZT8KKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAgIHJldHVy
biB2ODo6TG9jYWw8djg6OlZhbHVlPigpOworCisgICAgaWYgKCFjb250ZXh0LT5pc0RvY3VtZW50
KCkpCisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOworCisgICAgRnJhbWUq
IGZyYW1lID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKKyAgICBp
ZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsKKworICAg
IGlmICghZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNj
cmlwdCkpCisgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6OlZhbHVlPigpOwogCi0gICAgcmV0
dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CisgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS0+
cHJveHkoKS0+Y2FsbEZ1bmN0aW9uKGhhbmRsZXJGdW5jdGlvbiwgcmVjZWl2ZXIsIDEsIHBhcmFt
ZXRlcnMpOwogfQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TGF6eUV2ZW50TGlz
dGVuZXJUb1N0cmluZyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtMTEwLDE1ICsxMTgs
MTMgQEAgdm9pZCBWOExhenlFdmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5k
bGVTY29wZTsKIAotICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoY29udGV4
dCk7Ci0gICAgaWYgKCFwcm94eSkKLSAgICAgICAgcmV0dXJuOwogICAgIEFTU0VSVChjb250ZXh0
LT5pc0RvY3VtZW50KCkpOwotICAgIGlmICghc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KS0+ZnJhbWUoKS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRl
U2NyaXB0KSkKKyAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRl
eHQpLT5mcmFtZSgpOworICAgIEFTU0VSVChmcmFtZSk7CisgICAgaWYgKCFmcmFtZS0+c2NyaXB0
KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKICAgICAgICAg
cmV0dXJuOwotCiAgICAgLy8gVXNlIHRoZSBvdXRlciBzY29wZSB0byBob2xkIGNvbnRleHQuCi0g
ICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSB3b3JsZENvbnRleHQoKS5hZGp1
c3RlZENvbnRleHQocHJveHkpOworICAgIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gdjhDb250ZXh0
ID0gd29ybGRDb250ZXh0KCkuYWRqdXN0ZWRDb250ZXh0KGZyYW1lLT5zY3JpcHQoKS0+cHJveHko
KSk7CiAgICAgLy8gQmFpbCBvdXQgaWYgd2UgY2Fubm90IGdldCB0aGUgY29udGV4dC4KICAgICBp
ZiAodjhDb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFByb3h5LmNwcAppbmRleCAyYTRjOGRmOTI0ZGM3YzMwZjA2MjEwNmFjNTNmZmUx
MmIwYTE2ZDgzLi5jZDg1OTUwM2QyOWEyZTgzZTY3OTVhMmY3MTk3MDc1M2ZhYzc3YjdmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcApAQCAtMTk3LDIzICsxOTcsMTggQEAg
Ym9vbCBWOFByb3h5OjpoYW5kbGVPdXRPZk1lbW9yeSgpCiAKICAgICAvLyBXYXJuaW5nLCBlcnJv
ciwgZGlzYWJsZSBKUyBmb3IgdGhpcyBmcmFtZT8KICAgICBGcmFtZSogZnJhbWUgPSBWOFByb3h5
OjpyZXRyaWV2ZUZyYW1lKGNvbnRleHQpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShmcmFtZSk7
Ci0gICAgaWYgKHByb3h5KSB7Ci0gICAgICAgIC8vIENsZWFuIG1fY29udGV4dCwgYW5kIGV2ZW50
IGhhbmRsZXJzLgotICAgICAgICBwcm94eS0+Y2xlYXJGb3JDbG9zZSgpOwotCi0gICAgICAgIHBy
b3h5LT53aW5kb3dTaGVsbCgpLT5kZXN0cm95R2xvYmFsKCk7Ci0gICAgfQorICAgIGZyYW1lLT5z
Y3JpcHQoKS0+cHJveHkoKS0+Y2xlYXJGb3JDbG9zZSgpOworICAgIGZyYW1lLT5zY3JpcHQoKS0+
d2luZG93U2hlbGwoKS0+ZGVzdHJveUdsb2JhbCgpOwogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0p
CiAgICAgUGxhdGZvcm1TdXBwb3J0Ojpub3RpZnlKU091dE9mTWVtb3J5KGZyYW1lKTsKICNlbmRp
ZgogCi0gICAgLy8gRGlzYWJsZSBKUy4KLSAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZS0+
c2V0dGluZ3MoKTsKLSAgICBBU1NFUlQoc2V0dGluZ3MpOwotICAgIHNldHRpbmdzLT5zZXRTY3Jp
cHRFbmFibGVkKGZhbHNlKTsKKyAgICBpZiAoU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUtPnNl
dHRpbmdzKCkpCisgICAgICAgIHNldHRpbmdzLT5zZXRTY3JpcHRFbmFibGVkKGZhbHNlKTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDkwLDMxICs0ODUsMTUgQEAgRnJhbWUqIFY4UHJveHk6
OnJldHJpZXZlRnJhbWUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKICAgICByZXR1
cm4gMDsKIH0KIAotVjhQcm94eSogVjhQcm94eTo6cmV0cmlldmUoKQotewotICAgIERPTVdpbmRv
dyogd2luZG93ID0gcmV0cmlldmVXaW5kb3codjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKSk7Ci0g
ICAgQVNTRVJUKHdpbmRvdyk7Ci0gICAgcmV0dXJuIHJldHJpZXZlKHdpbmRvdy0+ZnJhbWUoKSk7
Ci19Ci0KLVY4UHJveHkqIFY4UHJveHk6OnJldHJpZXZlKEZyYW1lKiBmcmFtZSkKLXsKLSAgICBy
ZXR1cm4gZnJhbWUgPyBmcmFtZS0+c2NyaXB0KCktPnByb3h5KCkgOiAwOwotfQotCi1WOFByb3h5
KiBWOFByb3h5OjpyZXRyaWV2ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotewot
ICAgIGlmICghY29udGV4dCB8fCAhY29udGV4dC0+aXNEb2N1bWVudCgpKQotICAgICAgICByZXR1
cm4gMDsKLSAgICByZXR1cm4gcmV0cmlldmUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KS0+ZnJhbWUoKSk7Ci19Ci0KIFY4QmluZGluZ1BlckNvbnRleHREYXRhKiBWOFByb3h5OjpyZXRy
aWV2ZVBlckNvbnRleHREYXRhKEZyYW1lKiBmcmFtZSkKIHsKICAgICBWOElzb2xhdGVkQ29udGV4
dCogaXNvbGF0ZWRDb250ZXh0OwogICAgIGlmIChVTkxJS0VMWSghIShpc29sYXRlZENvbnRleHQg
PSBWOElzb2xhdGVkQ29udGV4dDo6Z2V0RW50ZXJlZCgpKSkpCiAgICAgICAgIHJldHVybiBpc29s
YXRlZENvbnRleHQtPnBlckNvbnRleHREYXRhKCk7Ci0gICAgcmV0dXJuIFY4UHJveHk6OnJldHJp
ZXZlKGZyYW1lKS0+d2luZG93U2hlbGwoKS0+cGVyQ29udGV4dERhdGEoKTsKKyAgICAvLyBGSVhN
RTogQ2FuIHxmcmFtZXwgYmUgMCBoZXJlPworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVy
biAwOworICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPnBlckNvbnRl
eHREYXRhKCk7CiB9CiAKIHZvaWQgVjhQcm94eTo6cmVzZXRJc29sYXRlZFdvcmxkcygpCkBAIC02
ODUsMTEgKzY2NCwxMCBAQCBib29sIFY4UHJveHk6Om1hdGNoZXNDdXJyZW50Q29udGV4dCgpCiAK
IHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gVjhQcm94eTo6bWFpbldvcmxkQ29udGV4dChGcmFtZSog
ZnJhbWUpCiB7Ci0gICAgVjhQcm94eSogcHJveHkgPSByZXRyaWV2ZShmcmFtZSk7Ci0gICAgaWYg
KCFwcm94eSkKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpD
b250ZXh0PigpOwogCi0gICAgcmV0dXJuIHByb3h5LT5tYWluV29ybGRDb250ZXh0KCk7CisgICAg
cmV0dXJuIGZyYW1lLT5zY3JpcHQoKS0+cHJveHkoKS0+bWFpbldvcmxkQ29udGV4dCgpOwogfQog
CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhQcm94eTo6Y2hlY2tOZXdMZWdhbChjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQpAQCAtNzc4LDggKzc1Niw4IEBAIHZvaWQgVjhQcm94eTo6Y29sbGVj
dElzb2xhdGVkQ29udGV4dHMoVmVjdG9yPHN0ZDo6cGFpcjxTY3JpcHRTdGF0ZSosIFNlY3VyaXR5
T3JpCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29ybGRDb250ZXh0KQog
ewogICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKFY4UHJveHkq
IHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoY29udGV4dCkpCi0gICAgICAgICAgICByZXR1cm4g
d29ybGRDb250ZXh0LmFkanVzdGVkQ29udGV4dChwcm94eSk7CisgICAgICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFtZSgpKQorICAgICAg
ICAgICAgcmV0dXJuIHdvcmxkQ29udGV4dC5hZGp1c3RlZENvbnRleHQoZnJhbWUtPnNjcmlwdCgp
LT5wcm94eSgpKTsKICNpZiBFTkFCTEUoV09SS0VSUykKICAgICB9IGVsc2UgaWYgKGNvbnRleHQt
PmlzV29ya2VyQ29udGV4dCgpKSB7CiAgICAgICAgIGlmIChXb3JrZXJDb250ZXh0RXhlY3V0aW9u
UHJveHkqIHByb3h5ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpLT5zY3Jp
cHQoKS0+cHJveHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaAppbmRleCAyYTI4
MGZlY2JhMzA3NWU1ZmE3ZDZhNzBhOTZiYzNiMjRjMDE2OTk5Li5jM2JjNjc4MzAyZmY2ZmY1MTMx
YzQ5NTc2ZTVkZDY2NjlmMTlmNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5o
CkBAIC0xNzIsMTMgKzE3Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0
dXJucyB0aGUgd2luZG93IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggYSBjb250ZXh0LgogICAgICAg
ICBzdGF0aWMgRE9NV2luZG93KiByZXRyaWV2ZVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0
Pik7CiAKLSAgICAgICAgLy8gUmV0dXJucyBWOFByb3h5IG9iamVjdCBvZiB0aGUgY3VycmVudGx5
IGV4ZWN1dGluZyBjb250ZXh0LgotICAgICAgICBzdGF0aWMgVjhQcm94eSogcmV0cmlldmUoKTsK
LSAgICAgICAgLy8gUmV0dXJucyBWOFByb3h5IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggYSBmcmFt
ZS4KLSAgICAgICAgc3RhdGljIFY4UHJveHkqIHJldHJpZXZlKEZyYW1lKik7Ci0gICAgICAgIC8v
IFJldHVybnMgVjhQcm94eSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIGEgc2NyaXB0IGV4ZWN1dGlv
biBjb250ZXh0LgotICAgICAgICBzdGF0aWMgVjhQcm94eSogcmV0cmlldmUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCopOwotCiAgICAgICAgIC8vIFJldHVybnMgdGhlIGZyYW1lIG9iamVjdCBvZiB0
aGUgd2luZG93IG9iamVjdCBhc3NvY2lhdGVkIHdpdGgKICAgICAgICAgLy8gYSBjb250ZXh0Lgog
ICAgICAgICBzdGF0aWMgRnJhbWUqIHJldHJpZXZlRnJhbWUodjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9N
V2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERP
TVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggZGJkOTliOWJkZjEzMGI3OTUzNTAxMzNkNWVjNWM3Mjc3
YThhYjlkYi4uNTUxODFjZDJhYTU2NGQ0ZDdkMzdkNWY0NmMyOTk2MDhiN2ZiODc4MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwCkBAIC0yNDMsOCArMjQzLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9N
V2luZG93OjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAogICAgIC8vIEZJWE1FOiBDaGVjayBpZiB0
aGVyZSBpcyBub3QgZW5vdWdoIGFyZ3VtZW50cwotICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94
eTo6cmV0cmlldmUoaW1wLT5mcmFtZSgpKTsKLSAgICBpZiAoIXByb3h5KQorICAgIGlmICghaW1w
LT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRy
PEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVy
KGFyZ3NbMV0sIGZhbHNlLCBMaXN0ZW5lckZpbmRPckNyZWF0ZSk7CkBAIC0yNzUsOCArMjc0LDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpyZW1vdmVFdmVudExpc3RlbmVy
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICBpZiAoIWRvYykKICAgICAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKIAotICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmll
dmUoaW1wLT5mcmFtZSgpKTsKLSAgICBpZiAoIXByb3h5KQorICAgIGlmICghaW1wLT5mcmFtZSgp
KQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAgICAgUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3RlbmVyKGFyZ3NbMV0s
IGZhbHNlLCBMaXN0ZW5lckZpbmRPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA0MmQ3N2ZjYmJlMWJh
ZThjYjViZDYwYzkwNTk2OTY3M2U2ODAyZDg4Li45MTEyZjE3Y2JhYmY1YzcxNzE3MjQyNGFhMzgz
ZTc4Mzg0OGNkZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMzEsOCArMTMxLDggQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjgoRG9jdW1lbnQqIGltcGwsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBi
b29sIGZvcmNlTmV3T2IKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biB3cmFwcGVyOwogICAgIGlmICghVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKSkgewot
ICAgICAgICBpZiAoVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShpbXBsLT5mcmFt
ZSgpKSkKLSAgICAgICAgICAgIHByb3h5LT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1bWVudFdy
YXBwZXIod3JhcHBlcik7CisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsLT5mcmFtZSgp
KQorICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbCgpLT51cGRhdGVEb2N1
bWVudFdyYXBwZXIod3JhcHBlcik7CiAgICAgfQogICAgIHJldHVybiB3cmFwcGVyOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1
bWVudEN1c3RvbS5jcHAKaW5kZXggYzc1ZTI4YzFlZDllYzRkNWIwMjI5ZmNjNmYxOTBlZmUzYzBm
MTcwNS4uMmZjYzU4MWY5YjNjMGEyZGExYjI5MGUwN2Y1MWNlYzlkNjIzMmM1ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1l
bnRDdXN0b20uY3BwCkBAIC0xNTYsMTIgKzE1Niw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEhUTUxEb2N1bWVudDo6b3BlbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAg
ICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3MuTGVuZ3RoKCk7IGkrKykKICAgICAg
ICAgICAgICAgICBwYXJhbXNbaV0gPSBhcmdzW2ldOwogCi0gICAgICAgICAgICBWOFByb3h5KiBw
cm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGZyYW1lLmdldCgpKTsKLSAgICAgICAgICAgIGlmICgh
cHJveHkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKLQotICAgICAg
ICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmVzdWx0ID0gcHJveHktPmNhbGxGdW5jdGlvbih2
ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChmdW5jdGlvbiksIGdsb2JhbCwgYXJncy5MZW5n
dGgoKSwgcGFyYW1zLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
ICAgICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpLT5jYWxsRnVuY3Rpb24odjg6Okxv
Y2FsPHY4OjpGdW5jdGlvbj46OkNhc3QoZnVuY3Rpb24pLCBnbG9iYWwsIGFyZ3MuTGVuZ3RoKCks
IHBhcmFtcy5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE5Myw4ICsxODgsOCBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1MRG9jdW1lbnQqIGltcGwsIHY4OjpJc29sYXRl
KiBpc29sYXRlLCBib29sIGZvcmNlTgogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAg
ICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgaWYgKCFWOElzb2xhdGVkQ29udGV4dDo6Z2V0RW50ZXJl
ZCgpKSB7Ci0gICAgICAgIGlmIChWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGlt
cGwtPmZyYW1lKCkpKQotICAgICAgICAgICAgcHJveHktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURv
Y3VtZW50V3JhcHBlcih3cmFwcGVyKTsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwt
PmZyYW1lKCkpCisgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPnVw
ZGF0ZURvY3VtZW50V3JhcHBlcih3cmFwcGVyKTsKICAgICB9CiAgICAgcmV0dXJuIHdyYXBwZXI7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTVkdE
b2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhT
VkdEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNmRiNjFiZjAxNmM1MTE4N2M2ZTgxZjk0ODlmYmFh
MWQ4ZGRkYWRlYy4uNGEwNjIzYjMxNzIwMGVhMjY1MWI1M2EwZGUzMzU5ZTRlNzM4YzQ5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHRG9jdW1lbnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0Rv
Y3VtZW50Q3VzdG9tLmNwcApAQCAtNDYsOCArNDYsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOChTVkdEb2N1bWVudCogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIGJvb2wgZm9yY2VO
ZQogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAg
ICAgaWYgKCFWOElzb2xhdGVkQ29udGV4dDo6Z2V0RW50ZXJlZCgpKSB7Ci0gICAgICAgIGlmIChW
OFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGltcGwtPmZyYW1lKCkpKQotICAgICAg
ICAgICAgcHJveHktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3VtZW50V3JhcHBlcih3cmFwcGVy
KTsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkpCisgICAgICAgICAg
ICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3VtZW50V3JhcHBlcih3
cmFwcGVyKTsKICAgICB9CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAKaW5kZXggN2E0NjE3
ZGRjOTNlYjU0M2IyYWFhNzc4NjU0YjA3MmEzODlkYzhjZC4uZDQzNjZmOTlhNDJlNWQ4NDBkMDcz
MmVjMTFhODI3NTM3MmYxNWZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApAQCAtNDIzLDggKzQyMyw4IEBAIHZvaWQgV2Vi
RGV2VG9vbHNBZ2VudEltcGw6OmRpZENyZWF0ZVNjcmlwdENvbnRleHQoV2ViRnJhbWVJbXBsKiB3
ZWJmcmFtZSwgaW50IHdvCiAgICAgLy8gU2tpcCBub24gbWFpbiB3b3JsZCBjb250ZXh0cy4KICAg
ICBpZiAod29ybGRJZCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChXZWJDb3JlOjpWOFByb3h5
KiBwcm94eSA9IFdlYkNvcmU6OlY4UHJveHk6OnJldHJpZXZlKHdlYmZyYW1lLT5mcmFtZSgpKSkK
LSAgICAgICAgcHJveHktPnNldENvbnRleHREZWJ1Z0lkKG1faG9zdElkKTsKKyAgICBpZiAoV2Vi
Q29yZTo6RnJhbWUqIGZyYW1lID0gd2ViZnJhbWUtPmZyYW1lKCkpCisgICAgICAgIGZyYW1lLT5z
Y3JpcHQoKS0+cHJveHkoKS0+c2V0Q29udGV4dERlYnVnSWQobV9ob3N0SWQpOwogfQogCiB2b2lk
IFdlYkRldlRvb2xzQWdlbnRJbXBsOjptYWluRnJhbWVWaWV3Q3JlYXRlZChXZWJGcmFtZUltcGwq
IHdlYkZyYW1lKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156275</attachid>
            <date>2012-08-03 00:32:24 -0700</date>
            <delta_ts>2012-08-03 01:56:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93072-20120803003205.patch</filename>
            <type>text/plain</type>
            <size>25103</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmRiZmUxZGM3NzM4ODgz
NGYyNWE4Y2JlZWNhNWRiZTZkZjk0NjFkNS4uNzUyZTEzNmVhMTA2ZWViMTI1YjdlYTg2MzI3OWI5
ZTRkNDdlY2UwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA4LTAzICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVjhQcm94eTo6cmV0cmlldmUo
KikgbGVhZHMgdG8gcmVhbGx5IG9iZnVzY2F0ZWQgY29kZSBhbmQgc2hvdWxkIGJlIHJlbW92ZWQK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMDcyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT25jZSB1cG9u
IGEgdGltZSwgVjhQcm94eTo6cmV0cmlldmUgZGlkIGEgYnVuY2ggb2YgY2hlY2tzIGJlZm9yZQor
ICAgICAgICByZXR1cm5pbmcgdGhlIFY4UHJveHkgb2JqZWN0IChzdWNoIGFzIGNoZWNraW5nIHdo
ZXRoZXIgc2NyaXB0IHdhcworICAgICAgICBlbmFibGVkKS4gT3ZlciB0aW1lLCB3ZSd2ZSByZW1v
dmVkIGFsbCBvZiB0aGVzZSBjaGVja3MgaW4gb3JkZXIgdG8gZml4CisgICAgICAgIHZhcmlvdXMg
YnVncy4gTm93IGFsbCBpdCBkb2VzIGlzIGNoZWNrIHdoZXRoZXIgdGhlIEZyYW1lIGlzIDAuIEhv
d2V2ZXIsCisgICAgICAgIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGVuZHMgdXAgcmV0dXJuaW5nIDAg
d2hlbiBpdHMgYXJndW1lbnQgaXMgMCwgdGhlCisgICAgICAgIGNhbGxlciBzaWxsIG5lZWRzIHRv
IGhhdmUgYSBudWxsIGNoZWNrLgorCisgICAgICAgIFRoaXMgcGF0Y2ggZGVsZXRlcyBhbGwgdGhl
IHZhcmlhdGlvbnMgb2YgVjhQcm94eTo6cmV0cmlldmUoKikgYW5kCisgICAgICAgIGlubGluZXMg
dGhlbSBpbnRvIHRoZWlyIGNhbGxlcnMuIEluIHNldmVyYWwgY2FzZXMsIGlubGluaW5nIHRoZQor
ICAgICAgICBmdW5jdGlvbiBjYWxsIHNob3dlZCB0aGF0IHdlIHdlcmUgdGVzdGluZyB0aGUgRnJh
bWUgZm9yIDAgdHdpY2UsIGFuZAorICAgICAgICBJJ3ZlIHJlbW92ZWQgdGhlIHJlZHVuZGFudCBu
dWxsIGNoZWNrcy4gSW4gb3RoZXIgY2FzZXMsIEkndmUKKyAgICAgICAgdW5jb250b3J0ZWQgdGhl
IGNhbGxlcnMgdG8gbWFrZSB0aGUgY29kZSBtb3JlIHJlYWRhYmxlLgorCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZVRvVjhD
b252ZXJ0ZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0
aXZlRE9NT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVj
dDo6d3JhcFNsb3cpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RO
YW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5hbWVkQ29uc3Ry
dWN0b3JDb25zdHJ1Y3RvckNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjp3cmFw
U2xvdyk6CisgICAgICAgICogYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Nj
cmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6Ondp
bmRvd1NoZWxsKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhET01XcmFwcGVyOjppbnN0YW50aWF0ZVY4T2JqZWN0KToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9WOEV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhFdmVudExpc3RlbmVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbik6CisgICAgICAgICogYmluZGlu
Z3MvdjgvVjhIZWxwZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhQcm94eSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvVjhMYXp5RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOExhenlFdmVudExpc3RlbmVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpWOExhenlFdmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQ
cm94eTo6aGFuZGxlT3V0T2ZNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6cmV0
cmlldmVQZXJDb250ZXh0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpWOFByb3h5OjptYWluV29y
bGRDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OnRvVjhDb250ZXh0KToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9WOFByb3h5Lmg6CisgICAgICAgIChWOFByb3h5KToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKToKKyAgICAgICAgKiBi
aW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRG9jdW1lbnQ6Om9wZW5DYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhTVkdEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKwogMjAx
Mi0wOC0wMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFY4UHJv
eHk6OnJldHJpZXZlRnJhbWVGb3IqQ29udGV4dCBhcmUgdXNlZCBvbmx5IGJ5IEJpbmRpbmdTdGF0
ZSBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgYXMgc2VwYXJhdGUgZnVuY3Rpb25zCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDQxNmJiYzM2N2U0MDIxMzg4M2RmNTFjM2FhZDg4YTYzMjAxMmUw
ZjUuLjQwMjgwZDA0OGVlNzQyY2JmM2U5NTU0ZWYwMWJkYjQ3Yjg4Y2E4NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDgtMDMgIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBWOFByb3h5OjpyZXRyaWV2ZSgqKSBsZWFk
cyB0byByZWFsbHkgb2JmdXNjYXRlZCBjb2RlIGFuZCBzaG91bGQgYmUgcmVtb3ZlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMwNzIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJEZXZUb29s
c0FnZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkRldlRvb2xzQWdlbnRJbXBsOjpk
aWRDcmVhdGVTY3JpcHRDb250ZXh0KToKKwogMjAxMi0wOC0wMiAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEyNDU0MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9yVjgucG0KaW5kZXggNDc0YzQ0ZThmYTEzZTM3Yjk0NWYzZDEyMmU1MWMwMDQ2ZGI5
ZjM3OS4uYTc5ZGU4ZDliZjhjOWQ5M2I1OTM3Zjk4YzFmODM4Yzc2ZWFjNjNmZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAg
LTMyOTQsMTAgKzMyOTQsMTAgQEAgRU5ECiAKICAgICBteSAkcHJveHlJbml0OwogICAgIGlmIChJ
c05vZGVTdWJUeXBlKCRkYXRhTm9kZSkpIHsKLSAgICAgICAgJHByb3h5SW5pdCA9ICJWOFByb3h5
OjpyZXRyaWV2ZShpbXBsLT5kb2N1bWVudCgpLT5mcmFtZSgpKSI7CisgICAgICAgICRwcm94eUlu
aXQgPSAiaW1wbC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSA/IGltcGwtPmRvY3VtZW50KCktPmZyYW1l
KCktPnNjcmlwdCgpLT5wcm94eSgpIDogMCI7CiAgICAgICAgICMgRG9jdW1lbnRUeXBlIG5vZGVz
IGFyZSB0aGUgb25seSBub2RlcyB0aGF0IG1heSBoYXZlIGEgTlVMTCBkb2N1bWVudC4KICAgICAg
ICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJEb2N1bWVudFR5cGUiKSB7Ci0gICAgICAgICAgICAk
cHJveHlJbml0ID0gImltcGwtPmRvY3VtZW50KCkgPyAkcHJveHlJbml0IDogMCI7CisgICAgICAg
ICAgICAkcHJveHlJbml0ID0gImltcGwtPmRvY3VtZW50KCkgPyAoJHByb3h5SW5pdCkgOiAwIjsK
ICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgICRwcm94eUluaXQgPSAiMCI7CkBAIC0z
MzIxLDkgKzMzMjEsOCBAQCBFTkQKICAgICBpZiAoSXNWaXNpYmxlQWNyb3NzT3JpZ2lucygkZGF0
YU5vZGUpKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiAgICAgaWYgKGlt
cGwtPmZyYW1lKCkpIHsKLSAgICAgICAgcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShpbXBsLT5m
cmFtZSgpKTsKLSAgICAgICAgaWYgKHByb3h5KQotICAgICAgICAgICAgcHJveHktPndpbmRvd1No
ZWxsKCktPmluaXRDb250ZXh0SWZOZWVkZWQoKTsKKyAgICAgICAgcHJveHkgPSBpbXBsLT5mcmFt
ZSgpLT5zY3JpcHQoKS0+cHJveHkoKTsKKyAgICAgICAgcHJveHktPndpbmRvd1NoZWxsKCktPmlu
aXRDb250ZXh0SWZOZWVkZWQoKTsKICAgICB9CiBFTkQKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3Rp
dmVET01PYmplY3QuY3BwCmluZGV4IDYyZDA2NWY3MjI3YjZmYjFjYjJkY2Y0ZjQyYmE5YmQzYTlh
OWVhOTEuLmYyMzJiM2M1OGQ4NmMxOGRmM2I3YjdmMTFhODE0MjMzODcwMjZjOTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVE
T01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xNjQsOSArMTY0LDkgQEAgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OndyYXBTbG93KFBhc3NSZWZQdHI8
VGVzdEFjdGl2ZURPTU8KICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXI7CiAgICAg
VjhQcm94eSogcHJveHkgPSAwOwogICAgIGlmIChpbXBsLT5mcmFtZSgpKSB7Ci0gICAgICAgIHBy
b3h5ID0gVjhQcm94eTo6cmV0cmlldmUoaW1wbC0+ZnJhbWUoKSk7Ci0gICAgICAgIGlmIChwcm94
eSkKLSAgICAgICAgICAgIHByb3h5LT53aW5kb3dTaGVsbCgpLT5pbml0Q29udGV4dElmTmVlZGVk
KCk7CisgICAgICAgIHByb3h5ID0gaW1wbC0+ZnJhbWUoKS0+c2NyaXB0KCktPnByb3h5KCk7Cisg
ICAgICAgIGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKS0+aW5pdENvbnRleHRJZk5lZWRl
ZCgpOworICAgICAgICBwcm94eS0+d2luZG93U2hlbGwoKS0+aW5pdENvbnRleHRJZk5lZWRlZCgp
OwogICAgIH0KIAogICAgIC8vIEVudGVyIHRoZSBub2RlJ3MgY29udGV4dCBhbmQgY3JlYXRlIHRo
ZSB3cmFwcGVyIGluIHRoYXQgY29udGV4dC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcAppbmRleCBjYmM3YjZiYjY5N2NiNzI0ZTU4ZWU5NTg2MmJmYzQ0YjFkODVkODMzLi5iNGFm
ZDFmMmU4YTg5ZmZhYzQzYjE2MTBkYzBhNzUyNjgyNjU2ODhmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6CiAgICAgaWYgKENvbnN0cnVjdG9yTW9kZTo6Y3VycmVudCgpID09IENvbnN0cnVjdG9yTW9k
ZTo6V3JhcEV4aXN0aW5nT2JqZWN0KQogICAgICAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKIAot
ICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWVGb3JDdXJyZW50Q29udGV4
dCgpOworICAgIEZyYW1lKiBmcmFtZSA9IGN1cnJlbnRGcmFtZShCaW5kaW5nU3RhdGU6Omluc3Rh
bmNlKCkpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBWOFByb3h5Ojp0aHJvd0Vy
cm9yKFY4UHJveHk6OlJlZmVyZW5jZUVycm9yLCAiVGVzdE5hbWVkQ29uc3RydWN0b3IgY29uc3Ry
dWN0b3IgYXNzb2NpYXRlZCBmcmFtZSBpcyB1bmF2YWlsYWJsZSIsIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE5vZGUuY3BwCmluZGV4IGFmYzUyMzgwZTljMWFlMzZjYWI4YWFlNzYzNDlhYzNmNzM3
YmQyNTkuLmI5ZTI3MGE3NzA2NTlkZjU4OTE5M2IyZjYxYjEzODM2MzY0ZjU4ZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9k
ZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBib29sIFY4VGVzdE5vZGU6Okhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSkKIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhUZXN0
Tm9kZTo6d3JhcFNsb3coUGFzc1JlZlB0cjxUZXN0Tm9kZT4gaW1wbCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyOwotICAgIFY4UHJv
eHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoaW1wbC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSk7
CisgICAgVjhQcm94eSogcHJveHkgPSBpbXBsLT5kb2N1bWVudCgpLT5mcmFtZSgpID8gaW1wbC0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2NyaXB0KCktPnByb3h5KCkgOiAwOwogCiAgICAgLy8gRW50
ZXIgdGhlIG5vZGUncyBjb250ZXh0IGFuZCBjcmVhdGUgdGhlIHdyYXBwZXIgaW4gdGhhdCBjb250
ZXh0LgogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAw
M2U3YzU3YjI2OTVkNjQ1NzdlMDY3M2UzYTQxMzUxYjkzZmUxYWI1Li42Y2NiMGYwYjIyMzY1Mzc2
MTk2MmE2NzZmZWM0NzM2NDlmZDc3NjgwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTc4LDkgKzc4LDYgQEAgUGFn
ZVNjcmlwdERlYnVnU2VydmVyOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXIoKQogCiB2b2lkIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVu
ZXIsIFBhZ2UqIHBhZ2UpCiB7Ci0gICAgVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2
ZShwYWdlLT5tYWluRnJhbWUoKSk7Ci0gICAgaWYgKCFwcm94eSkKLSAgICAgICAgcmV0dXJuOwog
ICAgIFNjcmlwdENvbnRyb2xsZXIqIHNjcmlwdENvbnRyb2xsZXIgPSBwYWdlLT5tYWluRnJhbWUo
KS0+c2NyaXB0KCk7CiAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5jYW5FeGVjdXRlU2NyaXB0
cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAgICAgIHJldHVybjsKQEAgLTk2LDcgKzkz
LDcgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVn
TGlzdGVuZXIqIGxpc3RlbmVyLCBQYWdlKiBwYWcKICAgICB9CiAgICAgbV9saXN0ZW5lcnNNYXAu
c2V0KHBhZ2UsIGxpc3RlbmVyKTsKIAotICAgIFY4RE9NV2luZG93U2hlbGwqIHNoZWxsID0gcHJv
eHktPndpbmRvd1NoZWxsKCk7CisgICAgVjhET01XaW5kb3dTaGVsbCogc2hlbGwgPSBzY3JpcHRD
b250cm9sbGVyLT53aW5kb3dTaGVsbCgpOwogICAgIGlmICghc2hlbGwtPmlzQ29udGV4dEluaXRp
YWxpemVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBj
b250ZXh0ID0gc2hlbGwtPmNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IGY1NjQ1NzZhMmMzN2UxMzY0YzM0MTBmMTFhYzA3
Y2FjYTc4YTNhMWQuLjQzNzRlYjRjNDlkNDg1MzY1MzgzMjg1NjU5ZTFmMzVlNjlmYzc2ZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjaGVkdWxlZEFjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAt
OTksMTEgKzk5LDkgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKICAgICAgICAgRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8
RG9jdW1lbnQqPihjb250ZXh0KS0+ZnJhbWUoKTsKICAgICAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgU2NyaXB0Q29udHJvbGxlciogc2NyaXB0Q29udHJvbGxl
ciA9IGZyYW1lLT5zY3JpcHQoKTsKLSAgICAgICAgaWYgKCFzY3JpcHRDb250cm9sbGVyLT5jYW5F
eGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCisgICAgICAgIGlmICghZnJhbWUt
PnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmll
dmUoZnJhbWUpOwotICAgICAgICBleGVjdXRlKHByb3h5KTsKKyAgICAgICAgZXhlY3V0ZShmcmFt
ZS0+c2NyaXB0KCktPnByb3h5KCkpOwogICAgIH0KICNpZiBFTkFCTEUoV09SS0VSUykKICAgICBl
bHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuaApp
bmRleCA2MjJlODMzYjVmM2JkNWJmMWZlOTFhNjlkMTI1N2NjZmJmNGU1M2VmLi5iM2MyMmFjYTg4
MGJmODNiNTE4ODVhZDc5ZDMxYzcxMzJlOGMyYzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAg
ICAvLyBGSVhNRTogVjhQcm94eSBzaG91bGQgZWl0aGVyIGJlIGZvbGRlZCBpbnRvIFNjcmlwdENv
bnRyb2xsZXIKICAgICAvLyBvciB0aGlzIGFjY2Vzc29yIHNob3VsZCBiZSBtYWRlIEpTUHJveHkq
CiAgICAgVjhQcm94eSogcHJveHkoKSB7IHJldHVybiBtX3Byb3h5LmdldCgpOyB9CisgICAgVjhE
T01XaW5kb3dTaGVsbCogd2luZG93U2hlbGwoKSB7IHJldHVybiBtX3Byb3h5LT53aW5kb3dTaGVs
bCgpOyB9CiAKICAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmKTsKICAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAppbmRleCBmNTk1ZmU0ZjhiNDliYzdlNDgwNzk1ZmYz
ODNjYzVhNTQ1NjgyMzZiLi44MTEzYTc4ZTFmNjkwZGE0OWZiNWFiZWY5N2ZjMjU1MTMxNGI4ODA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKQEAgLTE3
Nyw3ICsxNzcsNyBAQCB2ODo6TG9jYWw8djg6Ok9iamVjdD4gVjhET01XcmFwcGVyOjppbnN0YW50
aWF0ZVY4T2JqZWN0KFY4UHJveHkqIHByb3h5LCBXcmFwcGVyVAogICAgICAgICAgICAgaWYgKGlz
V3JhcHBlck9mVHlwZShnbG9iYWxQcm90b3R5cGUsICZWOERPTVdpbmRvdzo6aW5mbykpIHsKICAg
ICAgICAgICAgICAgICBGcmFtZSogZnJhbWUgPSBWOERPTVdpbmRvdzo6dG9OYXRpdmUoZ2xvYmFs
UHJvdG90eXBlKS0+ZnJhbWUoKTsKICAgICAgICAgICAgICAgICBpZiAoZnJhbWUgJiYgZnJhbWUt
PnNjcmlwdCgpLT5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCi0g
ICAgICAgICAgICAgICAgICAgIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoZnJhbWUpOworICAg
ICAgICAgICAgICAgICAgICBwcm94eSA9IGZyYW1lLT5zY3JpcHQoKS0+cHJveHkoKTsKICAgICAg
ICAgICAgIH0KICNpZiBFTkFCTEUoV09SS0VSUykKICAgICAgICAgICAgIGVsc2UgaWYgKGlzV3Jh
cHBlck9mVHlwZShnbG9iYWxQcm90b3R5cGUsICZWOFdvcmtlckNvbnRleHQ6OmluZm8pKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhFdmVudExpc3RlbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggYjA0
ZjE2OTVhZTg2Yjk1ZGZmNTc1MDYzOWE3MWE0NDUxMDA0MDk1YS4uM2Q2ZmY3NGUzNWVlYTFhN2Ji
YzIwMDU0ZjM0YzUwZjM0MTUwNTdmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOEV2ZW50TGlzdGVuZXIuY3BwCkBAIC03OSwxMyArNzksMjEgQEAgdjg6OkxvY2FsPHY4OjpW
YWx1ZT4gVjhFdmVudExpc3RlbmVyOjpjYWxsTGlzdGVuZXJGdW5jdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXgKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwYXJhbWV0ZXJzWzFdID0geyBq
c0V2ZW50IH07CiAKLSAgICBpZiAoVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZShj
b250ZXh0KSkgewotICAgICAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpLT5mcmFtZSgpOwotICAgICAgICBpZiAoZnJhbWUtPnNjcmlwdCgpLT5jYW5FeGVj
dXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCi0gICAgICAgICAgICByZXR1cm4gcHJv
eHktPmNhbGxGdW5jdGlvbihoYW5kbGVyRnVuY3Rpb24sIHJlY2VpdmVyLCAxLCBwYXJhbWV0ZXJz
KTsKLSAgICB9CisgICAgLy8gRklYTUU6IENhbiB8Y29udGV4dHwgYmUgMCBoZXJlPworICAgIGlm
ICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CisKKyAg
ICBpZiAoIWNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2
ODo6VmFsdWU+KCk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiB2ODo6
TG9jYWw8djg6OlZhbHVlPigpOworCisgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1
dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKKyAgICAgICAgcmV0dXJuIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+KCk7CiAKLSAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsKKyAg
ICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpLT5jYWxsRnVuY3Rpb24oaGFuZGxlckZ1
bmN0aW9uLCByZWNlaXZlciwgMSwgcGFyYW1ldGVycyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SGVscGVycy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEhlbHBlcnMuY3BwCmluZGV4IDc1NWIw
YjQ0ZmE2OTdiYmM4NDUwMzNlMDdlY2UxNDQyZTAzZDc1ZDMuLjUwYzc4NzBjYjU3ZGUyNWE5NzI2
Njk0Mzg2MjcxZWM3NGE2MzY2MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4SGVscGVycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhIZWxw
ZXJzLmNwcApAQCAtNTEsNyArNTEsOSBAQCBWOFByb3h5KiB0b1Y4UHJveHkoTlBPYmplY3QqIG5w
T2JqZWN0KQogewogICAgIFY4TlBPYmplY3QqIG9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhO
UE9iamVjdCo+KG5wT2JqZWN0KTsKICAgICBGcmFtZSogZnJhbWUgPSBvYmplY3QtPnJvb3RPYmpl
Y3QtPmZyYW1lKCk7Ci0gICAgcmV0dXJuIFY4UHJveHk6OnJldHJpZXZlKGZyYW1lKTsKKyAgICBp
ZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gZnJhbWUtPnNjcmlwdCgp
LT5wcm94eSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGViMDUyMmYy
N2E1MzA2ZjQ1NzRkNjMzMDRhYzYyODQwMzUxMDE2MmUuLjI2OWM1Y2E1NzExMmIyYzZmNzIyM2E2
NjYzZmM2YmQ0NjQ3NTc1OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC04NiwxMyArODYsMjEgQEAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gVjhMYXp5RXZlbnRMaXN0ZW5lcjo6Y2FsbExpc3RlbmVyRnVuY3Rpb24oU2NyaXB0
RXhlY3V0aW9uQ28KIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwYXJhbWV0ZXJzWzFdID0g
eyBqc0V2ZW50IH07CiAKLSAgICBpZiAoVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2
ZShjb250ZXh0KSkgewotICAgICAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KGNvbnRleHQpLT5mcmFtZSgpOwotICAgICAgICBpZiAoZnJhbWUtPnNjcmlwdCgpLT5jYW5F
eGVjdXRlU2NyaXB0cyhBYm91dFRvRXhlY3V0ZVNjcmlwdCkpCi0gICAgICAgICAgICByZXR1cm4g
cHJveHktPmNhbGxGdW5jdGlvbihoYW5kbGVyRnVuY3Rpb24sIHJlY2VpdmVyLCAxLCBwYXJhbWV0
ZXJzKTsKLSAgICB9CisgICAgLy8gRklYTUU6IENhbiB8Y29udGV4dHwgYmUgMCBoZXJlPworICAg
IGlmICghY29udGV4dCkKKyAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6VmFsdWU+KCk7CisK
KyAgICBpZiAoIWNvbnRleHQtPmlzRG9jdW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+KCk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVu
dCo+KGNvbnRleHQpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiB2
ODo6TG9jYWw8djg6OlZhbHVlPigpOworCisgICAgaWYgKCFmcmFtZS0+c2NyaXB0KCktPmNhbkV4
ZWN1dGVTY3JpcHRzKEFib3V0VG9FeGVjdXRlU2NyaXB0KSkKKyAgICAgICAgcmV0dXJuIHY4OjpM
b2NhbDx2ODo6VmFsdWU+KCk7CiAKLSAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpWYWx1ZT4oKTsK
KyAgICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpLT5jYWxsRnVuY3Rpb24oaGFuZGxl
ckZ1bmN0aW9uLCByZWNlaXZlciwgMSwgcGFyYW1ldGVycyk7CiB9CiAKIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhMYXp5RXZlbnRMaXN0ZW5lclRvU3RyaW5nKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCkBAIC0xMTAsMTUgKzExOCwxMyBAQCB2b2lkIFY4TGF6eUV2ZW50TGlzdGVu
ZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogCi0gICAgVjhQcm94eSogcHJv
eHkgPSBWOFByb3h5OjpyZXRyaWV2ZShjb250ZXh0KTsKLSAgICBpZiAoIXByb3h5KQotICAgICAg
ICByZXR1cm47CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgaWYgKCFz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFtZSgpLT5zY3JpcHQoKS0+Y2FuRXhl
Y3V0ZVNjcmlwdHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKQorICAgIEZyYW1lKiBmcmFtZSA9
IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCktPmZyYW1lKCk7CisgICAgQVNTRVJUKGZy
YW1lKTsKKyAgICBpZiAoIWZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlwdHMoTm90QWJv
dXRUb0V4ZWN1dGVTY3JpcHQpKQogICAgICAgICByZXR1cm47Ci0KICAgICAvLyBVc2UgdGhlIG91
dGVyIHNjb3BlIHRvIGhvbGQgY29udGV4dC4KLSAgICB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHY4
Q29udGV4dCA9IHdvcmxkQ29udGV4dCgpLmFkanVzdGVkQ29udGV4dChwcm94eSk7CisgICAgdjg6
OkxvY2FsPHY4OjpDb250ZXh0PiB2OENvbnRleHQgPSB3b3JsZENvbnRleHQoKS5hZGp1c3RlZENv
bnRleHQoZnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpKTsKICAgICAvLyBCYWlsIG91dCBpZiB3ZSBj
YW5ub3QgZ2V0IHRoZSBjb250ZXh0LgogICAgIGlmICh2OENvbnRleHQuSXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBy
b3h5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCmluZGV4IDJh
NGM4ZGY5MjRkYzdjMzBmMDYyMTA2YWM1M2ZmZTEyYjBhMTZkODMuLmFlMzRmOWRlNzNiN2I1MDkz
ODNlOTBhNWZmZDk0NmM0MDUyYTk4NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJv
eHkuY3BwCkBAIC0xOTcsMjMgKzE5NywxOCBAQCBib29sIFY4UHJveHk6OmhhbmRsZU91dE9mTWVt
b3J5KCkKIAogICAgIC8vIFdhcm5pbmcsIGVycm9yLCBkaXNhYmxlIEpTIGZvciB0aGlzIGZyYW1l
PwogICAgIEZyYW1lKiBmcmFtZSA9IFY4UHJveHk6OnJldHJpZXZlRnJhbWUoY29udGV4dCk7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBWOFByb3h5KiBwcm94
eSA9IFY4UHJveHk6OnJldHJpZXZlKGZyYW1lKTsKLSAgICBpZiAocHJveHkpIHsKLSAgICAgICAg
Ly8gQ2xlYW4gbV9jb250ZXh0LCBhbmQgZXZlbnQgaGFuZGxlcnMuCi0gICAgICAgIHByb3h5LT5j
bGVhckZvckNsb3NlKCk7Ci0KLSAgICAgICAgcHJveHktPndpbmRvd1NoZWxsKCktPmRlc3Ryb3lH
bG9iYWwoKTsKLSAgICB9CisgICAgZnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpLT5jbGVhckZvckNs
b3NlKCk7CisgICAgZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbCgpLT5kZXN0cm95R2xvYmFs
KCk7CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICBQbGF0Zm9ybVN1cHBvcnQ6Om5vdGlm
eUpTT3V0T2ZNZW1vcnkoZnJhbWUpOwogI2VuZGlmCiAKLSAgICAvLyBEaXNhYmxlIEpTLgotICAg
IFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lLT5zZXR0aW5ncygpOwotICAgIEFTU0VSVChzZXR0
aW5ncyk7Ci0gICAgc2V0dGluZ3MtPnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOworICAgIGlmIChT
ZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZS0+c2V0dGluZ3MoKSkKKyAgICAgICAgc2V0dGluZ3Mt
PnNldFNjcmlwdEVuYWJsZWQoZmFsc2UpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC00OTAs
MzEgKzQ4NSwxMiBAQCBGcmFtZSogVjhQcm94eTo6cmV0cmlldmVGcmFtZSh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0PiBjb250ZXh0KQogICAgIHJldHVybiAwOwogfQogCi1WOFByb3h5KiBWOFByb3h5
OjpyZXRyaWV2ZSgpCi17Ci0gICAgRE9NV2luZG93KiB3aW5kb3cgPSByZXRyaWV2ZVdpbmRvdyh2
ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKTsKLSAgICBBU1NFUlQod2luZG93KTsKLSAgICByZXR1
cm4gcmV0cmlldmUod2luZG93LT5mcmFtZSgpKTsKLX0KLQotVjhQcm94eSogVjhQcm94eTo6cmV0
cmlldmUoRnJhbWUqIGZyYW1lKQotewotICAgIHJldHVybiBmcmFtZSA/IGZyYW1lLT5zY3JpcHQo
KS0+cHJveHkoKSA6IDA7Ci19Ci0KLVY4UHJveHkqIFY4UHJveHk6OnJldHJpZXZlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi17Ci0gICAgaWYgKCFjb250ZXh0IHx8ICFjb250ZXh0
LT5pc0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiByZXRyaWV2ZShz
dGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFtZSgpKTsKLX0KLQogVjhCaW5kaW5n
UGVyQ29udGV4dERhdGEqIFY4UHJveHk6OnJldHJpZXZlUGVyQ29udGV4dERhdGEoRnJhbWUqIGZy
YW1lKQogewogICAgIFY4SXNvbGF0ZWRDb250ZXh0KiBpc29sYXRlZENvbnRleHQ7CiAgICAgaWYg
KFVOTElLRUxZKCEhKGlzb2xhdGVkQ29udGV4dCA9IFY4SXNvbGF0ZWRDb250ZXh0OjpnZXRFbnRl
cmVkKCkpKSkKICAgICAgICAgcmV0dXJuIGlzb2xhdGVkQ29udGV4dC0+cGVyQ29udGV4dERhdGEo
KTsKLSAgICByZXR1cm4gVjhQcm94eTo6cmV0cmlldmUoZnJhbWUpLT53aW5kb3dTaGVsbCgpLT5w
ZXJDb250ZXh0RGF0YSgpOworICAgIHJldHVybiBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxs
KCktPnBlckNvbnRleHREYXRhKCk7CiB9CiAKIHZvaWQgVjhQcm94eTo6cmVzZXRJc29sYXRlZFdv
cmxkcygpCkBAIC02ODUsMTEgKzY2MSwxMCBAQCBib29sIFY4UHJveHk6Om1hdGNoZXNDdXJyZW50
Q29udGV4dCgpCiAKIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gVjhQcm94eTo6bWFpbldvcmxkQ29u
dGV4dChGcmFtZSogZnJhbWUpCiB7Ci0gICAgVjhQcm94eSogcHJveHkgPSByZXRyaWV2ZShmcmFt
ZSk7Ci0gICAgaWYgKCFwcm94eSkKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gdjg6
OkxvY2FsPHY4OjpDb250ZXh0PigpOwogCi0gICAgcmV0dXJuIHByb3h5LT5tYWluV29ybGRDb250
ZXh0KCk7CisgICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS0+cHJveHkoKS0+bWFpbldvcmxkQ29u
dGV4dCgpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhQcm94eTo6Y2hlY2tOZXdMZWdh
bChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtNzc4LDggKzc1Myw4IEBAIHZvaWQgVjhQ
cm94eTo6Y29sbGVjdElzb2xhdGVkQ29udGV4dHMoVmVjdG9yPHN0ZDo6cGFpcjxTY3JpcHRTdGF0
ZSosIFNlY3VyaXR5T3JpCiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+IHRvVjhDb250ZXh0KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFdvcmxkQ29udGV4dEhhbmRsZSYgd29y
bGRDb250ZXh0KQogewogICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpIHsKLSAgICAgICAg
aWYgKFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6cmV0cmlldmUoY29udGV4dCkpCi0gICAgICAg
ICAgICByZXR1cm4gd29ybGRDb250ZXh0LmFkanVzdGVkQ29udGV4dChwcm94eSk7CisgICAgICAg
IGlmIChGcmFtZSogZnJhbWUgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLT5mcmFt
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHdvcmxkQ29udGV4dC5hZGp1c3RlZENvbnRleHQoZnJh
bWUtPnNjcmlwdCgpLT5wcm94eSgpKTsKICNpZiBFTkFCTEUoV09SS0VSUykKICAgICB9IGVsc2Ug
aWYgKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKSB7CiAgICAgICAgIGlmIChXb3JrZXJDb250
ZXh0RXhlY3V0aW9uUHJveHkqIHByb3h5ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNv
bnRleHQpLT5zY3JpcHQoKS0+cHJveHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4UHJveHkuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHku
aAppbmRleCAyYTI4MGZlY2JhMzA3NWU1ZmE3ZDZhNzBhOTZiYzNiMjRjMDE2OTk5Li5jM2JjNjc4
MzAyZmY2ZmY1MTMxYzQ5NTc2ZTVkZDY2NjlmMTlmNDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQcm94eS5oCkBAIC0xNzIsMTMgKzE3Miw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgLy8gUmV0dXJucyB0aGUgd2luZG93IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggYSBjb250
ZXh0LgogICAgICAgICBzdGF0aWMgRE9NV2luZG93KiByZXRyaWV2ZVdpbmRvdyh2ODo6SGFuZGxl
PHY4OjpDb250ZXh0Pik7CiAKLSAgICAgICAgLy8gUmV0dXJucyBWOFByb3h5IG9iamVjdCBvZiB0
aGUgY3VycmVudGx5IGV4ZWN1dGluZyBjb250ZXh0LgotICAgICAgICBzdGF0aWMgVjhQcm94eSog
cmV0cmlldmUoKTsKLSAgICAgICAgLy8gUmV0dXJucyBWOFByb3h5IG9iamVjdCBhc3NvY2lhdGVk
IHdpdGggYSBmcmFtZS4KLSAgICAgICAgc3RhdGljIFY4UHJveHkqIHJldHJpZXZlKEZyYW1lKik7
Ci0gICAgICAgIC8vIFJldHVybnMgVjhQcm94eSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIGEgc2Ny
aXB0IGV4ZWN1dGlvbiBjb250ZXh0LgotICAgICAgICBzdGF0aWMgVjhQcm94eSogcmV0cmlldmUo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwotCiAgICAgICAgIC8vIFJldHVybnMgdGhlIGZyYW1l
IG9iamVjdCBvZiB0aGUgd2luZG93IG9iamVjdCBhc3NvY2lhdGVkIHdpdGgKICAgICAgICAgLy8g
YSBjb250ZXh0LgogICAgICAgICBzdGF0aWMgRnJhbWUqIHJldHJpZXZlRnJhbWUodjg6OkhhbmRs
ZTx2ODo6Q29udGV4dD4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggZGJkOTliOWJkZjEzMGI3OTUzNTAx
MzNkNWVjNWM3Mjc3YThhYjlkYi4uNTUxODFjZDJhYTU2NGQ0ZDdkMzdkNWY0NmMyOTk2MDhiN2Zi
ODc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9N
V2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwCkBAIC0yNDMsOCArMjQzLDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAogICAgIC8vIEZJWE1F
OiBDaGVjayBpZiB0aGVyZSBpcyBub3QgZW5vdWdoIGFyZ3VtZW50cwotICAgIFY4UHJveHkqIHBy
b3h5ID0gVjhQcm94eTo6cmV0cmlldmUoaW1wLT5mcmFtZSgpKTsKLSAgICBpZiAoIXByb3h5KQor
ICAgIGlmICghaW1wLT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwog
CiAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRF
dmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlLCBMaXN0ZW5lckZpbmRPckNyZWF0ZSk7CkBAIC0y
NzUsOCArMjc0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpyZW1vdmVF
dmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW4KICAgICBpZiAoIWRvYykKICAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIAotICAgIFY4UHJveHkqIHByb3h5ID0gVjhQ
cm94eTo6cmV0cmlldmUoaW1wLT5mcmFtZSgpKTsKLSAgICBpZiAoIXByb3h5KQorICAgIGlmICgh
aW1wLT5mcmFtZSgpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogCiAgICAgUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhET01XcmFwcGVyOjpnZXRFdmVudExpc3Rl
bmVyKGFyZ3NbMV0sIGZhbHNlLCBMaXN0ZW5lckZpbmRPbmx5KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA0
MmQ3N2ZjYmJlMWJhZThjYjViZDYwYzkwNTk2OTY3M2U2ODAyZDg4Li45MTEyZjE3Y2JhYmY1Yzcx
NzE3MjQyNGFhMzgzZTc4Mzg0OGNkZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMzEsOCArMTMxLDgg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRG9jdW1lbnQqIGltcGwsIHY4OjpJc29sYXRl
KiBpc29sYXRlLCBib29sIGZvcmNlTmV3T2IKICAgICBpZiAod3JhcHBlci5Jc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIGlmICghVjhJc29sYXRlZENvbnRleHQ6OmdldEVu
dGVyZWQoKSkgewotICAgICAgICBpZiAoVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2
ZShpbXBsLT5mcmFtZSgpKSkKLSAgICAgICAgICAgIHByb3h5LT53aW5kb3dTaGVsbCgpLT51cGRh
dGVEb2N1bWVudFdyYXBwZXIod3JhcHBlcik7CisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBp
bXBsLT5mcmFtZSgpKQorICAgICAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT53aW5kb3dTaGVsbCgp
LT51cGRhdGVEb2N1bWVudFdyYXBwZXIod3JhcHBlcik7CiAgICAgfQogICAgIHJldHVybiB3cmFw
cGVyOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggYzc1ZTI4YzFlZDllYzRkNWIwMjI5ZmNj
NmYxOTBlZmUzYzBmMTcwNS4uMmZjYzU4MWY5YjNjMGEyZGExYjI5MGUwN2Y1MWNlYzlkNjIzMmM1
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERv
Y3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xNTYsMTIgKzE1Niw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEhUTUxEb2N1bWVudDo6b3BlbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3MuTGVuZ3RoKCk7
IGkrKykKICAgICAgICAgICAgICAgICBwYXJhbXNbaV0gPSBhcmdzW2ldOwogCi0gICAgICAgICAg
ICBWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGZyYW1lLmdldCgpKTsKLSAgICAg
ICAgICAgIGlmICghcHJveHkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKLQotICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmVzdWx0ID0gcHJveHktPmNh
bGxGdW5jdGlvbih2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPjo6Q2FzdChmdW5jdGlvbiksIGdsb2Jh
bCwgYXJncy5MZW5ndGgoKSwgcGFyYW1zLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgICAgICAgICByZXR1cm4gZnJhbWUtPnNjcmlwdCgpLT5wcm94eSgpLT5jYWxsRnVu
Y3Rpb24odjg6OkxvY2FsPHY4OjpGdW5jdGlvbj46OkNhc3QoZnVuY3Rpb24pLCBnbG9iYWwsIGFy
Z3MuTGVuZ3RoKCksIHBhcmFtcy5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE5Myw4
ICsxODgsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChIVE1MRG9jdW1lbnQqIGltcGws
IHY4OjpJc29sYXRlKiBpc29sYXRlLCBib29sIGZvcmNlTgogICAgIGlmICh3cmFwcGVyLklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgaWYgKCFWOElzb2xhdGVkQ29udGV4
dDo6Z2V0RW50ZXJlZCgpKSB7Ci0gICAgICAgIGlmIChWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6
OnJldHJpZXZlKGltcGwtPmZyYW1lKCkpKQotICAgICAgICAgICAgcHJveHktPndpbmRvd1NoZWxs
KCktPnVwZGF0ZURvY3VtZW50V3JhcHBlcih3cmFwcGVyKTsKKyAgICAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IGltcGwtPmZyYW1lKCkpCisgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRv
d1NoZWxsKCktPnVwZGF0ZURvY3VtZW50V3JhcHBlcih3cmFwcGVyKTsKICAgICB9CiAgICAgcmV0
dXJuIHdyYXBwZXI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhTVkdEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNmRiNjFiZjAxNmM1MTE4N2M2
ZTgxZjk0ODlmYmFhMWQ4ZGRkYWRlYy4uNGEwNjIzYjMxNzIwMGVhMjY1MWI1M2EwZGUzMzU5ZTRl
NzM4YzQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
U1ZHRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNWR0RvY3VtZW50Q3VzdG9tLmNwcApAQCAtNDYsOCArNDYsOCBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOChTVkdEb2N1bWVudCogaW1wbCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUs
IGJvb2wgZm9yY2VOZQogICAgIGlmICh3cmFwcGVyLklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHdyYXBwZXI7CiAgICAgaWYgKCFWOElzb2xhdGVkQ29udGV4dDo6Z2V0RW50ZXJlZCgpKSB7Ci0g
ICAgICAgIGlmIChWOFByb3h5KiBwcm94eSA9IFY4UHJveHk6OnJldHJpZXZlKGltcGwtPmZyYW1l
KCkpKQotICAgICAgICAgICAgcHJveHktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3VtZW50V3Jh
cHBlcih3cmFwcGVyKTsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGltcGwtPmZyYW1lKCkp
CisgICAgICAgICAgICBmcmFtZS0+c2NyaXB0KCktPndpbmRvd1NoZWxsKCktPnVwZGF0ZURvY3Vt
ZW50V3JhcHBlcih3cmFwcGVyKTsKICAgICB9CiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJEZXZUb29sc0FnZW50SW1wbC5jcHAK
aW5kZXggN2E0NjE3ZGRjOTNlYjU0M2IyYWFhNzc4NjU0YjA3MmEzODlkYzhjZC4uZDQzNjZmOTlh
NDJlNWQ4NDBkMDczMmVjMTFhODI3NTM3MmYxNWZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViRGV2VG9vbHNBZ2VudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkRldlRvb2xzQWdlbnRJbXBsLmNwcApAQCAtNDIzLDggKzQyMyw4
IEBAIHZvaWQgV2ViRGV2VG9vbHNBZ2VudEltcGw6OmRpZENyZWF0ZVNjcmlwdENvbnRleHQoV2Vi
RnJhbWVJbXBsKiB3ZWJmcmFtZSwgaW50IHdvCiAgICAgLy8gU2tpcCBub24gbWFpbiB3b3JsZCBj
b250ZXh0cy4KICAgICBpZiAod29ybGRJZCkKICAgICAgICAgcmV0dXJuOwotICAgIGlmIChXZWJD
b3JlOjpWOFByb3h5KiBwcm94eSA9IFdlYkNvcmU6OlY4UHJveHk6OnJldHJpZXZlKHdlYmZyYW1l
LT5mcmFtZSgpKSkKLSAgICAgICAgcHJveHktPnNldENvbnRleHREZWJ1Z0lkKG1faG9zdElkKTsK
KyAgICBpZiAoV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gd2ViZnJhbWUtPmZyYW1lKCkpCisgICAg
ICAgIGZyYW1lLT5zY3JpcHQoKS0+cHJveHkoKS0+c2V0Q29udGV4dERlYnVnSWQobV9ob3N0SWQp
OwogfQogCiB2b2lkIFdlYkRldlRvb2xzQWdlbnRJbXBsOjptYWluRnJhbWVWaWV3Q3JlYXRlZChX
ZWJGcmFtZUltcGwqIHdlYkZyYW1lKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>