<?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>165895</bug_id>
          
          <creation_ts>2016-12-15 00:58:18 -0800</creation_ts>
          <short_desc>Use asString instead of toWTFString, toString, or getString when we already checked isString</short_desc>
          <delta_ts>2019-01-15 17:10:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          <cc>mark.lam</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1260092</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-15 00:58:18 -0800</bug_when>
    <thetext>Use asString instead of toWTFString, toString, or getString when we already checked isString</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260095</commentid>
    <comment_count>1</comment_count>
      <attachid>297185</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-15 01:15:07 -0800</bug_when>
    <thetext>Created attachment 297185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260109</commentid>
    <comment_count>2</comment_count>
      <attachid>297185</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-15 02:33:34 -0800</bug_when>
    <thetext>Comment on attachment 297185
Patch

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

&gt; Source/JavaScriptCore/bindings/ScriptValue.cpp:64
&gt; +        return InspectorValue::create(asString(value)-&gt;value(&amp;scriptState));

The `value(exec)` call is now exception checked in JSC code because it can resolve the rope string and could throw OOM error.
Sometimes, we did not handle this exception and call CRASH() instead (e.g. ES6 Map&apos;s rehashing. If rehashing fails due to OOM, we have no way to recover the state of VM.). But anyway, we need to take some reaction for OOM error.
(Of course, we should insert exception checks after getString(exec)).

I think we still did not apply this rewriting to the outside of JSC, but we need to follow this policy eventually.
Mark, is my understanding correct?

Or, another way is adding the helper function (like, valueOrCrash()) that calls CRASH when OOM happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260130</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-15 07:18:41 -0800</bug_when>
    <thetext>Oops, good point. I will put back the exception handling I removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260131</commentid>
    <comment_count>4</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-15 07:19:10 -0800</bug_when>
    <thetext>Using asString is still better for,the other reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260159</commentid>
    <comment_count>5</comment_count>
      <attachid>297185</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-12-15 09:59:23 -0800</bug_when>
    <thetext>Comment on attachment 297185
Patch

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

&gt;&gt; Source/JavaScriptCore/bindings/ScriptValue.cpp:64
&gt;&gt; +        return InspectorValue::create(asString(value)-&gt;value(&amp;scriptState));
&gt; 
&gt; The `value(exec)` call is now exception checked in JSC code because it can resolve the rope string and could throw OOM error.
&gt; Sometimes, we did not handle this exception and call CRASH() instead (e.g. ES6 Map&apos;s rehashing. If rehashing fails due to OOM, we have no way to recover the state of VM.). But anyway, we need to take some reaction for OOM error.
&gt; (Of course, we should insert exception checks after getString(exec)).
&gt; 
&gt; I think we still did not apply this rewriting to the outside of JSC, but we need to follow this policy eventually.
&gt; Mark, is my understanding correct?
&gt; 
&gt; Or, another way is adding the helper function (like, valueOrCrash()) that calls CRASH when OOM happens.

I think it&apos;s correct to use asStting() here as Darin has implemented it.  If the call to value(&amp;scriptState) throws an exception, it will simply propagate to the caller.  This is no different than the getString() call before.

As for exception checks in general, I don&apos;t think we need to overly worry about it yet.  I&apos;m still working on enabling it for all of JSC.  Once that is done, the tests (and bots) will start catching any regressions.  Instead, we should just continue to focus on writing optimal code.  But if there are already throwScopes and exception checks in place, please don&apos;t remove them.

In the case of jsMapHash() specifically, maybe we should change that to a RELEASE_ASSERT on !scope.exception() if there&apos;s really no way to remedy the failure to hash.  Alternatively, maybe we can teach the code to hash a rope without resolving it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260460</commentid>
    <comment_count>6</comment_count>
      <attachid>297279</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-15 18:30:39 -0800</bug_when>
    <thetext>Created attachment 297279
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260463</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-15 18:32:27 -0800</bug_when>
    <thetext>The new patch makes no changes to exception handling.

I agree that we have inconsistent handing of the out-of-memory exception. There is code that will ignore it and probably should not, and we have no exhaustive way to test it, nor a good idiom for when we want to crash if it happens. I’m not tackling that problem here at all; just doing what I set out to do so that we use typecasts instead of a more complex conversion function when we already checked that something is a string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260465</commentid>
    <comment_count>8</comment_count>
      <attachid>297185</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-15 18:35:01 -0800</bug_when>
    <thetext>Comment on attachment 297185
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/bindings/ScriptValue.cpp:64
&gt;&gt;&gt; +        return InspectorValue::create(asString(value)-&gt;value(&amp;scriptState));
&gt;&gt; 
&gt;&gt; The `value(exec)` call is now exception checked in JSC code because it can resolve the rope string and could throw OOM error.
&gt;&gt; Sometimes, we did not handle this exception and call CRASH() instead (e.g. ES6 Map&apos;s rehashing. If rehashing fails due to OOM, we have no way to recover the state of VM.). But anyway, we need to take some reaction for OOM error.
&gt;&gt; (Of course, we should insert exception checks after getString(exec)).
&gt;&gt; 
&gt;&gt; I think we still did not apply this rewriting to the outside of JSC, but we need to follow this policy eventually.
&gt;&gt; Mark, is my understanding correct?
&gt;&gt; 
&gt;&gt; Or, another way is adding the helper function (like, valueOrCrash()) that calls CRASH when OOM happens.
&gt; 
&gt; I think it&apos;s correct to use asStting() here as Darin has implemented it.  If the call to value(&amp;scriptState) throws an exception, it will simply propagate to the caller.  This is no different than the getString() call before.
&gt; 
&gt; As for exception checks in general, I don&apos;t think we need to overly worry about it yet.  I&apos;m still working on enabling it for all of JSC.  Once that is done, the tests (and bots) will start catching any regressions.  Instead, we should just continue to focus on writing optimal code.  But if there are already throwScopes and exception checks in place, please don&apos;t remove them.
&gt; 
&gt; In the case of jsMapHash() specifically, maybe we should change that to a RELEASE_ASSERT on !scope.exception() if there&apos;s really no way to remedy the failure to hash.  Alternatively, maybe we can teach the code to hash a rope without resolving it?

Thank you for your clarification.
So for now, just replacing to the asString() code seems nice. (Not dropping the exception check).

&gt; In the case of jsMapHash() specifically, maybe we should change that to a RELEASE_ASSERT on !scope.exception() if there&apos;s really no way to remedy the failure to hash. Alternatively, maybe we can teach the code to hash a rope without resolving it?

Avoiding rope strings for JSMap keys seems nice idea! It would be nice if it is done in the separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260476</commentid>
    <comment_count>9</comment_count>
      <attachid>297279</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-12-15 18:44:21 -0800</bug_when>
    <thetext>Comment on attachment 297279
Patch

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

&gt; Source/WebCore/bindings/js/ArrayValue.cpp:93
&gt;      if (indexedValue.isUndefinedOrNull() || !indexedValue.isString())

I think it can be `if (!indexedValue.isString())`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260491</commentid>
    <comment_count>10</comment_count>
      <attachid>297279</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-15 19:21:41 -0800</bug_when>
    <thetext>Comment on attachment 297279
Patch

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

&gt;&gt; Source/WebCore/bindings/js/ArrayValue.cpp:93
&gt;&gt;      if (indexedValue.isUndefinedOrNull() || !indexedValue.isString())
&gt; 
&gt; I think it can be `if (!indexedValue.isString())`.

It definitely can. I see a lot of similar mistakes throughout this file. On the other hand, there is a reasonable chance we will delete this class entirely, or at least most of the functions in it, soon. So my idea was to just do the asString changes and leave the rest of the code alone for now. But I will make this particular change before landing the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260523</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-15 20:52:59 -0800</bug_when>
    <thetext>Committed r209906: &lt;http://trac.webkit.org/changeset/209906&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297185</attachid>
            <date>2016-12-15 01:15:07 -0800</date>
            <delta_ts>2016-12-15 18:30:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165895-20161215011415.patch</filename>
            <type>text/plain</type>
            <size>43435</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5ODU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MzczZDI3Y2EyNjA3YWRhODkzNjQ2MmNhYzJiOGQ3MzAxYzAzMmJhLi5kMWU2MjZlNTZiMjYyZjU5
NzYyY2YzMWQyMzM0OGNhZjBmYTk1MmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAxNi0xMi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIGFzU3RyaW5nIGluc3RlYWQgb2YgdG9XVEZTdHJpbmcsIHRvU3RyaW5nLCBv
ciBnZXRTdHJpbmcgd2hlbiB3ZSBhbHJlYWR5IGNoZWNrZWQgaXNTdHJpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTg5NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9uY2Ugd2UgaGF2ZSBjYWxsZWQg
aXNTdHJpbmcsIHdlIHNob3VsZCBhbHdheXMgdXNlIGFzU3RyaW5nIGFuZCB2YWx1ZSByYXRoZXIg
dGhhbiB1c2luZworICAgICAgICBmdW5jdGlvbnMgdGhhdCBoYXZlIHRvIGRlYWwgd2l0aCBub24t
SlNTdHJpbmcgb2JqZWN0cy4gVGhpcyBsZWFkcyB0byBzbGlnaHRseSBmZXdlciBicmFuY2hlcywK
KyAgICAgICAgc2xpZ2h0bHkgbGVzcyByZWZlcmVuY2UgY291bnQgY2h1cm4sIHNpbmNlIHRoZSBz
dHJpbmcgaXMgc3RvcmVkIHJpZ2h0IGluc2lkZSB0aGUgSlNTdHJpbmcsCisgICAgICAgIGFuZCBv
YnZpYXRlcyB0aGUgbmVlZCBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLgorCisgICAgICAgICogYmlu
ZGluZ3MvU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpqc1RvSW5zcGVjdG9y
VmFsdWUpOiBVc2UgYXNTdHJpbmcvdmFsdWUgaW5zdGVhZCBvZiBnZXRTdHJpbmcuCisgICAgICAg
ICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9wZXJhdGlvbk1h
cEhhc2gpOiBDYWxsIGpzTWFwSGFzaCB3aXRoIGl0cyBuZXcgYXJndW1lbnRzLgorICAgICAgICAq
IGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbik6IFVzZSBh
c1N0cmluZy92YWx1ZSBpbnN0ZWFkCisgICAgICAgIG9mIHRvV1RGU3RyaW5nLCBhbmQgcmVtb3Zl
ZCB1bm5lZWRlZCBSRVRVUk5fSUZfRVhDRVBUSU9OLgorICAgICAgICAqIGluc3BlY3Rvci9KU0ph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRD
YWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKTogRGl0dG8uCisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcpOiBVc2UgYXNTdHJpbmcvdHJ5R2V0
VmFsdWUsIGluc3RlYWQgb2YgdGhlCisgICAgICAgIHBlY3VsaWFyIGdldFN0cmluZyhudWxscHRy
KSB0aGF0IHdhcyBoZXJlIGJlZm9yZS4KKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVu
Y3Rpb25HZXRHZXR0ZXJTZXR0ZXIpOiBVc2UgYXNTdHJpbmcvdG9JZGVudGlmaWVyIGluc3RlYWQg
b2YgdGhlIG11Y2ggbGVzcyBlZmZpY2llbnQKKyAgICAgICAgdG9XVEZTdHJpbmcvSWRlbnRpZmll
cjo6ZnJvbVN0cmluZy4KKyAgICAgICAgKGZ1bmN0aW9uSXNSb3BlKTogVXNlIGFzU3RyaW5nIGlu
c3RlYWQgb2YganNDYXN0PEpTU3RyaW5nKj47IHNhbWUgdGhpbmcsIGJ1dCB3ZSBzaG91bGQKKyAg
ICAgICAgcHJlZmVyIHRoZSBhc1N0cmluZyBmdW5jdGlvbiwgc2luY2UgaXQgZXhpc3RzLgorICAg
ICAgICAoZnVuY3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24pOiBVc2UgYXNTdHJpbmcvdmFsdWUg
aW5zdGVhZCBvZiBnZXRTdHJpbmcuCisgICAgICAgIChmdW5jdGlvbkhhc0Jhc2ljQmxvY2tFeGVj
dXRlZCk6IERpdHRvLgorICAgICAgICAoZnVuY3Rpb25CYXNpY0Jsb2NrRXhlY3V0aW9uQ291bnQp
OiBEaXR0by4KKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbik6IFVzZSBhc1N0cmluZy92
YWx1ZSBpbnN0ZWFkIG9mIHRvV1RGU3RyaW5nIGFuZCByZW1vdmVkCisgICAgICAgIHVubmVlZGVk
IFJFVFVSTl9JRl9FWENFUFRJT04uCisgICAgICAgICh2YWx1ZVdpdGhUeXBlT2ZXYXNtVmFsdWUp
OiBVc2UgYXNTdHJpbmcgaW5zdGVhZCBvZiBqc0Nhc3Q8U3RyaW5nKj4uCisgICAgICAgIChib3gp
OiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdERhdGUpOiBVc2UgYXNTdHJpbmcvdmFsdWVzIGluc3RlYWQgb2YgZ2V0
U3RyaW5nLgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHA6CisgICAgICAg
IChKU0M6OmVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZSk6IFR3ZWFrZWQgZm9ybWF0dGluZy4KKwor
ICAgICAgICAqIHJ1bnRpbWUvSGFzaE1hcEltcGwuaDoKKyAgICAgICAgKEpTQzo6anNNYXBIYXNo
KTogQ2hhbmdlZCB0aGlzIGZ1bmN0aW9uIHRvIHVzZSBhc1N0cmluZy92YWx1ZSwgYW5kIGFsc28g
dG8KKyAgICAgICAgZWxpbWluYXRlIHRoZSB1bm5lZWRlZCBleGNlcHRpb24gaGFuZGxpbmcgYW5k
IFZNIGFyZ3VtZW50LgorICAgICAgICAoSlNDOjpIYXNoTWFwSW1wbDo6ZmluZEJ1Y2tldCk6IFVw
ZGF0ZWQgdG8gY2FsbCBuZXcganNNYXBIYXNoLgorICAgICAgICAoSlNDOjpIYXNoTWFwSW1wbDo6
YWRkKTogRGl0dG8uCisgICAgICAgIChKU0M6Okhhc2hNYXBJbXBsOjpyZWhhc2gpOiBEaXR0by4K
KworICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSk6IFVzZSBhc1N0cmluZyBpbnN0ZWFk
IG9mCisgICAgICAgIGpzQ2FzdDxKU1N0cmluZyo+LgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpk
dW1wRm9yQmFja3RyYWNlKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjp0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOiBEaXR0by4g
QWxzbyByZW1vdmVkIHVubmVlZGVkIFJFVFVSTl9JRl9FWENFUFRJT04uCisKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFs
RnVuY0V2YWwpOiBVc2UgYXNTdHJpbmcvdmFsdWUgaW5zdGVhZCBvZiB0b1dURlN0cmluZy4KKwor
ICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuY3BwOgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6
ZGVzdHJveSk6IFN0cmVhbWxpbmVkIGJ5IHJlbW92aW5nIGxvY2FsIHZhcmlhYmxlLgorICAgICAg
ICAoSlNDOjpKU1N0cmluZzo6ZXN0aW1hdGVkU2l6ZSk6IFVzZSBhc1N0cmluZyBpbnN0ZWFkIG9m
IGpzQ2FzdDxKU1N0cmluZyo+LgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dmlzaXRDaGlsZHJl
bik6IERpdHRvLgorICAgICAgICAoSlNDOjpKU1N0cmluZzo6dG9UaGlzKTogRGl0dG8uCisgICAg
ICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1N0cmlu
Zyk6IERpdHRvLgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjp0b1N0cmluZ09yTnVsbCk6IERpdHRv
LgorICAgICAgICAqIHJ1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
bnVtYmVyUHJvdG9GdW5jVmFsdWVPZik6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6b2JqZWN0UHJvdG9GdW5jVG9TdHJpbmcpOiBE
aXR0by4KKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OnN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3Rlcik6IERpdHRvLgorICAgICAgICAoSlND
OjpzdHJpbmdQcm90b0Z1bmNTdWJzdHIpOiBEaXR0by4KKyAgICAgICAgKEpTQzo6YnVpbHRpblN0
cmluZ1N1YnN0ckludGVybmFsKTogU2ltcGxpZmllZCBhc3NlcnRpb24gYnkgcmVtb3ZpbmcgbG9j
YWwgdmFyaWFibGUuCisKIDIwMTYtMTItMTQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBh
cHBsZS5jb20+CiAKICAgICAgICAgV2FzbSBzaG91bGQgZGVjb2RlIGNvbnN0YW50cyBjb3JyZWN0
bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCA2NzZhN2Y4NTRlM2Q4NmJjN2Q2ZjNiMWM0ZDJkMWZlNTI1MGYzNTNj
Li5jODA2YzhjOWFmYjU3MGIzOTdhZjE4ZjA0OTliYWI0MjQ1ZTRlYzc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDUgQEAKKzIwMTYtMTItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29t
PgorCisgICAgICAgIFVzZSBhc1N0cmluZyBpbnN0ZWFkIG9mIHRvV1RGU3RyaW5nLCB0b1N0cmlu
Zywgb3IgZ2V0U3RyaW5nIHdoZW4gd2UgYWxyZWFkeSBjaGVja2VkIGlzU3RyaW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU4OTUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFjdCk6IFVz
ZSBhc1N0cmluZy92YWx1ZSBpbnN0ZWFkIG9mIHRvV1RGU3RyaW5nLgorCisgICAgICAgICogTW9k
dWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U0RQ
UHJvY2Vzc29yOjpjYWxsU2NyaXB0KTogVXNlIGFzU3RyaW5nL3ZhbHVlIGluc3RlYWQgb2YgZ2V0
U3RyaW5nLgorCisgICAgICAgICogYmluZGluZ3MvanMvQXJyYXlWYWx1ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpBcnJheVZhbHVlOjpnZXQpOiBVc2UgYXNTdHJpbmcvdmFsdWUgaW5zdGVhZCBv
ZiB0b1dURlN0cmluZywgYW5kIGFsc28gZ290IHJpZCBvZgorICAgICAgICB1bm5lZWRlZCBSRVRV
Uk5fSUZfRVhDRVBUSU9OLgorCisgICAgICAgICogYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXQpOiBVc2UgYXNTdHJpbmcvbGVuZ3RoIGlu
c3RlYWQgb2YgdG9TdHJpbmcvbGVuZ3RoLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSURCS2V5
RnJvbVZhbHVlKTogVXNlIGFzU3RyaW5nL3ZhbHVlIGluc3RlYWQgb2YgdG9XVEZTdHJpbmcuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeTo6Z2V0QWxnb3JpdGht
SWRlbnRpZmllcik6IERpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RKU0RhdGFDdWUpOiBVc2UgYXNTdHJp
bmcvdmFsdWUgaW5zdGVhZCBvZiBnZXRTdHJpbmcuCisgICAgICAgICogYmluZGluZ3MvanMvSlNJ
bnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cG9wdWxh
dGVDb250ZXh0TWVudUl0ZW1zKTogVXNlIGFzU3RyaW5nL3ZhbHVlIGluc3RlYWQgb2YgdG9XVEZT
dHJpbmcuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVmFsdWVUb01vZHVsZUtleSk6IFVzZSBhc1N0cmluZy90b0lkZW50
aWZpZXIgaW5zdGVhZCBvZgorICAgICAgICBqc0Nhc3Q8SlNTdHJpbmcqPi92YWx1ZS9JZGVudGlm
aWVyOjpmcm9tU3RyaW5nLgorCisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNsb25lU2VyaWFsaXplcjo6ZHVtcElmVGVy
bWluYWwpOiBTdHJlYW1saW5lIGJ5IGdldHRpbmcgcmlkIG9mIGxvY2FsIHZhcmlhYmxlLgorCisg
ICAgICAgICogY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Z2V0RG9tYWluTGlzdCk6IFVzZSBh
c1N0cmluZyBpbnN0ZWFkIG9mIGpzQ2FzdDxKU1N0cmluZyo+LgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OmxvYWRUcmlnZ2VyKTogVXNlIGFzU3RyaW5nL3ZhbHVlIGluc3Rl
YWQgb2YgdG9XVEZTdHJpbmcuCisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6
bG9hZEFjdGlvbik6IERpdHRvLgorCisgICAgICAgICogY3NzL0ZvbnRGYWNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpjcmVhdGUpOiBVc2UgYXNTdHJpbmcvdmFsdWUgaW5zdGVh
ZCBvZiBnZXRTdHJpbmcuCisKIDIwMTYtMTItMTQgIEh1bnNlb3AgSmVvbmcgIDxoczg1Lmplb25n
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIyMDk4
MzIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwppbmRleCBhMmVjMjAxMWZlZDk5NmFhYTMzMTNhZTIwYTA2OWM5YzZh
OTJiNTA4Li5mNTJlMWVkMmJlYjhiMmFkZTdhYWNhODUwNzRiMmI0Y2EwYTU1MjJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMTItMTUgIERhcmluIEFkbGVyICA8ZGFy
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhc1N0cmluZyBpbnN0ZWFkIG9mIHRvV1RGU3Ry
aW5nLCB0b1N0cmluZywgb3IgZ2V0U3RyaW5nIHdoZW4gd2UgYWxyZWFkeSBjaGVja2VkIGlzU3Ry
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU4
OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBs
dWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eS5tbToKKyAgICAgICAgKFdl
YktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjphZGRWYWx1ZVRvQXJyYXkpOiBVc2Ug
YXNTdHJpbmcvdmFsdWUgaW5zdGVhZCBvZgorICAgICAgICB0b1dURlN0cmluZy4KKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgIChhZURlc2NGcm9tSlNWYWx1ZSk6IFVzZSBh
c1N0cmluZy92YWx1ZSBpbnN0ZWFkIG9mIGdldFN0cmluZy4KKwogMjAxNi0xMi0xMiAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSB1
bnVzZWQgd29ya2Fyb3VuZCBmb3IgU2lsdmVybGlnaHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA2NGNiZGE1ZmQ4
Y2UwNDQ1ZTIxYTJiNDIzMmEzZjJiYTQ4Zjc3ZTcwLi42ZGRiMzliN2Q3NGNiMzA3ZDI5NWQyYTU3
NDUwNzkyODg4YTFiYzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTItMTUg
IERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFVzZSBhc1N0cmluZyBp
bnN0ZWFkIG9mIHRvV1RGU3RyaW5nLCB0b1N0cmluZywgb3IgZ2V0U3RyaW5nIHdoZW4gd2UgYWxy
ZWFkeSBjaGVja2VkIGlzU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjU4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmpl
Y3RNYXAuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUFJ1bnRpbWVPYmplY3RNYXA6OmNvbnZlcnRK
U1ZhbHVlVG9OUFZhcmlhbnQpOiBVc2UgYXNTdHJpbmcvdmFsdWUgaW5zdGVhZCBvZiB0b1dURlN0
cmluZy4KKwogMjAxNi0xMi0xNCAgQW5kcmVhcyBLbGluZyAgPGFrbGluZ0BhcHBsZS5jb20+CiAK
ICAgICAgICAgT25seSBzZW5kIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhdmVUb1BhZ2VD
YWNoZSBvbmNlIHdoZW4gZW50ZXJpbmcgcGFnZSBjYWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYmluZGluZ3MvU2NyaXB0VmFsdWUuY3BwCmluZGV4IDI1NTY4YTNmODE3YzNlMWYxMDdm
YThlMWRjZjAwMzlkOTMxNDlhNWIuLjJhOTRmM2I2ZWMzOTlhZTk4NjZhYTIwMzk1YmVmMmZjNjVm
MTg4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVl
LmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1Rv
SW5zcGVjdG9yVmFsdWUoRXhlY1N0YXRlJiBzY3JpcHRTdGF0ZSwgSlNWYWx1ZQogICAgIGlmICh2
YWx1ZS5pc051bWJlcigpICYmIHZhbHVlLmlzQW55SW50KCkpCiAgICAgICAgIHJldHVybiBJbnNw
ZWN0b3JWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PGludD4odmFsdWUuYXNBbnlJbnQoKSkpOwog
ICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKQotICAgICAgICByZXR1cm4gSW5zcGVjdG9yVmFsdWU6
OmNyZWF0ZSh2YWx1ZS5nZXRTdHJpbmcoJnNjcmlwdFN0YXRlKSk7CisgICAgICAgIHJldHVybiBJ
bnNwZWN0b3JWYWx1ZTo6Y3JlYXRlKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoJnNjcmlwdFN0YXRl
KSk7CiAKICAgICBpZiAodmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAoaXNKU0FycmF5
KHZhbHVlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
aW5kZXggMTE5NjVhNGFmYjA2Nzc0ODMyMDI3ZThhYzZlMmEwMDVlNmM2MDJmYi4uNTc1MmJkMjMz
MGY4M2Y5M2ViY2UwMWFmYzE4NThmMzZhMDc0MDBjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yMTU0LDggKzIxNTQsNyBAQCBpbnQzMl90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uTWFwSGFzaChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1Zh
bHVlIGlucHV0KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZy
YW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOwotCi0gICAgcmV0dXJuIGpzTWFwSGFzaChleGVj
LCB2bSwgbm9ybWFsaXplTWFwS2V5KEpTVmFsdWU6OmRlY29kZShpbnB1dCkpKTsKKyAgICByZXR1
cm4ganNNYXBIYXNoKCpleGVjLCBub3JtYWxpemVNYXBLZXkoSlNWYWx1ZTo6ZGVjb2RlKGlucHV0
KSkpOwogfQogCiBKU0NlbGwqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSlNNYXBGaW5kQnVja2V0
KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBtYXAsIEVuY29kZWRKU1ZhbHVlIGtleSwgaW50MzJf
dCBoYXNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0lu
amVjdGVkU2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAppbmRleCAzZjI2ZmU2ZWQ2ZjhhOGRkYmM2MDRhZWJhZWY3
ZTJlOTIxNTJiOGI2Li5hYTYyZTJjMDBhN2EyNGJmOGU3YzM1ZWJhY2M5NjcxMmVkMzE3ZWYwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcApAQCAtMTAyLDggKzEwMiw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNj
cmlwdEhvc3Q6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBpZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVh
dGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4iKSk7
CiAKLSAgICBTdHJpbmcgcHJvZ3JhbSA9IHNjcmlwdFZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOwot
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CisgICAgU3RyaW5nIHBy
b2dyYW0gPSBhc1N0cmluZyhzY3JpcHRWYWx1ZSktPnZhbHVlKGV4ZWMpOwogCiAgICAgTmFrZWRQ
dHI8RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uID0g
ZXhlYy0+YXJndW1lbnQoMSkuZ2V0T2JqZWN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKaW5kZXggYzZh
YTRhNzdlZGMyNTRlMGVhODEzMjA0NjQ0NjNmOWI4N2RlNmFiZS4uZjRlZDNmNzVhMTU1M2JhYmYx
ZTVkNDQzMDQ4YTYxOTAxMzY5NjY3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcApAQCAtODIsNyArODIs
NyBAQCBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRl
bnNpb24oRXhlY1N0YXRlKiBleGVjKQogICAgIGlmICghc2NyaXB0VmFsdWUuaXNTdHJpbmcoKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwo
IkpTSmF2YVNjcmlwdENhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBh
cmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAotICAgIFN0cmluZyBzY3JpcHQgPSBzY3Jp
cHRWYWx1ZS50b1dURlN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc2NyaXB0ID0gYXNTdHJpbmco
c2NyaXB0VmFsdWUpLT52YWx1ZShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBKU1ZhbHVlKCkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JI
ZWFwQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9ySGVhcEFnZW50LmNwcAppbmRleCA4YTM5YTg0YzY0NWU1NDQxNWIwM2M2NzkyMzU4YTc2
Mzc5NTYwZTFhLi5hZDg2YzA3OTA1NTU5NDljYjc3YWEwOTJjMjdhMWQ2NjI3MTFhZmVlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JI
ZWFwQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckhlYXBBZ2VudC5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEluc3BlY3Rv
ckhlYXBBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBoZWFw
T2JqZWN0SWQsCiAgICAgLy8gU3RyaW5nIHByZXZpZXcuCiAgICAgSlNDZWxsKiBjZWxsID0gb3B0
aW9uYWxOb2RlLT5jZWxsOwogICAgIGlmIChjZWxsLT5pc1N0cmluZygpKSB7Ci0gICAgICAgICpy
ZXN1bHRTdHJpbmcgPSBjZWxsLT5nZXRTdHJpbmcobnVsbHB0cik7CisgICAgICAgICpyZXN1bHRT
dHJpbmcgPSBhc1N0cmluZyhjZWxsKS0+dHJ5R2V0VmFsdWUoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBlYzc5ZDgzMjA3ZTU0NWM4ZWIwNTM2ODdk
NzlhZWUxMWJhOTU3MDJkLi5mMWRiZTE5NGI0MDZmMzE1ZTIyMTc2ODQ2Mjg3NTA2NmMxNTU1Y2M4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMTg3NiwxMCArMTg3Niw4IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uR2V0R2V0dGVyU2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBpZiAoIXByb3BlcnR5LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAKLSAgICBJZGVudGlmaWVyIGlkZW50ID0g
SWRlbnRpZmllcjo6ZnJvbVN0cmluZygmZXhlYy0+dm0oKSwgcHJvcGVydHkudG9XVEZTdHJpbmco
ZXhlYykpOwotCiAgICAgUHJvcGVydHlTbG90IHNsb3QodmFsdWUsIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpWTUlucXVpcnkpOwotICAgIHZhbHVlLmdldFByb3BlcnR5U2xvdChl
eGVjLCBpZGVudCwgc2xvdCk7CisgICAgdmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGFzU3Ry
aW5nKHByb3BlcnR5KS0+dG9JZGVudGlmaWVyKGV4ZWMpLCBzbG90KTsKIAogICAgIEpTVmFsdWUg
cmVzdWx0OwogICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpCkBAIC0yMTA0LDcgKzIx
MDIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNSb3BlKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIGFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAg
ICAgaWYgKCFhcmd1bWVudC5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihmYWxzZSkpOwotICAgIGNvbnN0IFN0cmluZ0ltcGwqIGltcGwgPSBqc0Nh
c3Q8SlNTdHJpbmcqPihhcmd1bWVudCktPnRyeUdldFZhbHVlSW1wbCgpOworICAgIGNvbnN0IFN0
cmluZ0ltcGwqIGltcGwgPSBhc1N0cmluZyhhcmd1bWVudCktPnRyeUdldFZhbHVlSW1wbCgpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKCFpbXBsKSk7CiB9CiAKQEAgLTIy
ODIsNyArMjI4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5k
VHlwZUZvckV4cHJlc3Npb24oRXhlY1N0YXRlKiBleGVjKQogICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvblZhbHVl
LmFzQ2VsbCgpLT5nZXRPYmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKIAogICAgIFJFTEVBU0Vf
QVNTRVJUKGV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwotICAgIFN0cmluZyBzdWJzdHJp
bmcgPSBleGVjLT5hcmd1bWVudCgxKS5nZXRTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN1YnN0
cmluZyA9IGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpKS0+dmFsdWUoZXhlYyk7CiAgICAgU3Ry
aW5nIHNvdXJjZUNvZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmlldygpLnRvU3RyaW5n
KCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNvdXJjZUNv
ZGVUZXh0LmZpbmQoc3Vic3RyaW5nKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0
KCkpOwogICAgIApAQCAtMjMyMCw3ICsyMzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbkhhc0Jhc2ljQmxvY2tFeGVjdXRlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlv
bio+KGZ1bmN0aW9uVmFsdWUuYXNDZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0YWJsZSgp
OwogCiAgICAgUkVMRUFTRV9BU1NFUlQoZXhlYy0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7Ci0g
ICAgU3RyaW5nIHN1YnN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KDEpLmdldFN0cmluZyhleGVjKTsK
KyAgICBTdHJpbmcgc3Vic3RyaW5nID0gYXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMSkpLT52YWx1
ZShleGVjKTsKICAgICBTdHJpbmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5zb3VyY2Uo
KS52aWV3KCkudG9TdHJpbmcoKTsKICAgICBSRUxFQVNFX0FTU0VSVChzb3VyY2VDb2RlVGV4dC5j
b250YWlucyhzdWJzdHJpbmcpKTsKICAgICBpbnQgb2Zmc2V0ID0gc291cmNlQ29kZVRleHQuZmlu
ZChzdWJzdHJpbmcpICsgZXhlY3V0YWJsZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKTsKQEAgLTIz
MzgsNyArMjMzNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25CYXNp
Y0Jsb2NrRXhlY3V0aW9uQ291bnQoRXhlY1N0YXRlKiBleGVjKQogICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvblZh
bHVlLmFzQ2VsbCgpLT5nZXRPYmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKIAogICAgIFJFTEVB
U0VfQVNTRVJUKGV4ZWMtPmFyZ3VtZW50KDEpLmlzU3RyaW5nKCkpOwotICAgIFN0cmluZyBzdWJz
dHJpbmcgPSBleGVjLT5hcmd1bWVudCgxKS5nZXRTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN1
YnN0cmluZyA9IGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50KDEpKS0+dmFsdWUoZXhlYyk7CiAgICAg
U3RyaW5nIHNvdXJjZUNvZGVUZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmlldygpLnRvU3Ry
aW5nKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoc291cmNlQ29kZVRleHQuY29udGFpbnMoc3Vic3Ry
aW5nKSk7CiAgICAgaW50IG9mZnNldCA9IHNvdXJjZUNvZGVUZXh0LmZpbmQoc3Vic3RyaW5nKSAr
IGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCk7CkBAIC0yMzk4LDEzICsyMzk2LDEx
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Mb2FkTW9kdWxlKEV4ZWNT
dGF0ZSogZXhlYykKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DcmVhdGVC
dWlsdGluKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChleGVjLT5h
cmd1bWVudENvdW50KCkgPCAxIHx8ICFleGVjLT5hcmd1bWVudCgwKS5pc1N0cmluZygpKQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogCi0gICAgU3RyaW5n
IGZ1bmN0aW9uVGV4dCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvV1RGU3RyaW5nKGV4ZWMpOwotICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFN0cmlu
ZyBmdW5jdGlvblRleHQgPSBhc1N0cmluZyhleGVjLT5hcmd1bWVudCgwKSktPnZhbHVlKGV4ZWMp
OwogCiAgICAgY29uc3QgU291cmNlQ29kZSYgc291cmNlID0gbWFrZVNvdXJjZShmdW5jdGlvblRl
eHQpOwogICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBKU0Z1bmN0aW9uOjpjcmVhdGVCdWlsdGluRnVu
Y3Rpb24odm0sIGNyZWF0ZUJ1aWx0aW5FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnZtLCAiZm9vIiksIENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgQ29uc3RydWN0
QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KS0+bGluayh2bSwgc291cmNlKSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKTsKQEAgLTI1MTAsNyArMjUwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25NYXhBcmd1bWVudHMoRXhlY1N0YXRlKikKIAogc3RhdGljIENT
dHJpbmcgdmFsdWVXaXRoVHlwZU9mV2FzbVZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBK
U1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIHdhc21WYWx1ZSkKIHsKLSAgICBKU1N0cmluZyogdHlwZSA9
IGpzQ2FzdDxKU1N0cmluZyo+KHdhc21WYWx1ZS5nZXQoZXhlYywgbWFrZUlkZW50aWZpZXIodm0s
ICJ0eXBlIikpKTsKKyAgICBKU1N0cmluZyogdHlwZSA9IGFzU3RyaW5nKHdhc21WYWx1ZS5nZXQo
ZXhlYywgbWFrZUlkZW50aWZpZXIodm0sICJ0eXBlIikpKTsKIAogICAgIGNvbnN0IFN0cmluZyYg
dHlwZVN0cmluZyA9IHR5cGUtPnZhbHVlKGV4ZWMpOwogICAgIGlmICh0eXBlU3RyaW5nID09ICJp
NjQiIHx8IHR5cGVTdHJpbmcgPT0gImkzMiIpCkBAIC0yNTIzLDE0ICsyNTE5LDE0IEBAIHN0YXRp
YyBDU3RyaW5nIHZhbHVlV2l0aFR5cGVPZldhc21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2
bSwgSlNWYWx1ZSB2YWx1ZSwKIHN0YXRpYyBKU1ZhbHVlIGJveChFeGVjU3RhdGUqIGV4ZWMsIFZN
JiB2bSwgSlNWYWx1ZSB3YXNtVmFsdWUpCiB7CiAKLSAgICBKU1N0cmluZyogdHlwZSA9IGpzQ2Fz
dDxKU1N0cmluZyo+KHdhc21WYWx1ZS5nZXQoZXhlYywgbWFrZUlkZW50aWZpZXIodm0sICJ0eXBl
IikpKTsKKyAgICBKU1N0cmluZyogdHlwZSA9IGFzU3RyaW5nKHdhc21WYWx1ZS5nZXQoZXhlYywg
bWFrZUlkZW50aWZpZXIodm0sICJ0eXBlIikpKTsKICAgICBKU1ZhbHVlIHZhbHVlID0gd2FzbVZh
bHVlLmdldChleGVjLCBtYWtlSWRlbnRpZmllcih2bSwgInZhbHVlIikpOwogCiAgICAgYXV0byB1
bmJveFN0cmluZyA9IFsmXSAoY29uc3QgY2hhciogaGV4Rm9ybWF0LCBjb25zdCBjaGFyKiBkZWNG
b3JtYXQsIGF1dG8mIHJlc3VsdCkgewogICAgICAgICBpZiAoIXZhbHVlLmlzU3RyaW5nKCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgY29uc3QgY2hhciogc3RyID0gdG9D
U3RyaW5nKGpzQ2FzdDxKU1N0cmluZyo+KHZhbHVlKS0+dmFsdWUoZXhlYykpLmRhdGEoKTsKKyAg
ICAgICAgY29uc3QgY2hhciogc3RyID0gdG9DU3RyaW5nKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUo
ZXhlYykpLmRhdGEoKTsKICAgICAgICAgaW50IHNjYW5SZXN1bHQ7CiAgICAgICAgIGludCBsZW5n
dGggPSBzdGQ6OnN0cmxlbihzdHIpOwogICAgICAgICBpZiAoKGxlbmd0aCA+IDIgJiYgKHN0clsw
XSA9PSAnMCcgJiYgc3RyWzFdID09ICd4JykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcAppbmRleCBhODI1MDE3YjA2N2M0MjI2MDY1N2I5
YzkzMWI4ZTQxOGMzODFlZmJlLi40MDUwNzRiYWMxMDkzNGYyOWViOTJkZmMxY2E4YzE0MjMxZDA1
ZjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3Ry
dWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVDb25zdHJ1
Y3Rvci5jcHAKQEAgLTE2MCw3ICsxNjAsNyBAQCBKU09iamVjdCogY29uc3RydWN0RGF0ZShFeGVj
U3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbgogICAg
ICAgICAgICAgSlNWYWx1ZSBwcmltaXRpdmUgPSBhcmdzLmF0KDApLnRvUHJpbWl0aXZlKGV4ZWMp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAg
ICAgICAgICBpZiAocHJpbWl0aXZlLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICAgICAgdmFsdWUg
PSBwYXJzZURhdGUodm0sIHByaW1pdGl2ZS5nZXRTdHJpbmcoZXhlYykpOworICAgICAgICAgICAg
ICAgIHZhbHVlID0gcGFyc2VEYXRlKHZtLCBhc1N0cmluZyhwcmltaXRpdmUpLT52YWx1ZShleGVj
KSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgdmFsdWUgPSBwcmltaXRpdmUu
dG9OdW1iZXIoZXhlYyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggZmMwNzU1MzNjODk2Yzc5ZjI0OGY1
MTA4MGMwYjI5ZThmMmIwODA4ZS4uZmI2N2UyMTBhMDE5NGExYTM1ZTY5Y2EyZmMxM2I3Nzg3MmZh
M2M2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9u
SGVscGVycy5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgSlNPYmplY3QqIGNyZWF0ZVVuZGVmaW5lZFZh
cmlhYmxlRXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKIEpT
U3RyaW5nKiBlcnJvckRlc2NyaXB0aW9uRm9yVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHYpCiB7CiAgICAgaWYgKHYuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZyhleGVjLCBtYWtlU3RyaW5nKCciJywgIGFzU3RyaW5nKHYpLT52YWx1ZShleGVjKSwg
JyInKSk7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgbWFrZVN0cmlu
ZygnIicsIGFzU3RyaW5nKHYpLT52YWx1ZShleGVjKSwgJyInKSk7CiAgICAgaWYgKHYuaXNTeW1i
b2woKSkKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyhleGVjLCBhc1N5bWJvbCh2
KS0+ZGVzY3JpcHRpdmVTdHJpbmcoKSk7CiAgICAgaWYgKHYuaXNPYmplY3QoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcEltcGwuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmgKaW5kZXggNWJkMDExNzIyMGNm
YTdiZjY3NDExNmRmNjQ4Yjg4YWI4NTMxYzJlNS4uOTkyNWZjY2RhZjI3ZGQ4MzE0OWNmYjE1M2Vi
ZDU4ZGJjYmY3MWRlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SGFzaE1hcEltcGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFw
SW1wbC5oCkBAIC0yMzYsMjEgKzIzNiwxMiBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB1aW50MzJf
dCB3YW5nc0ludDY0SGFzaCh1aW50NjRfdCBrZXkpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihrZXkpOwogfQogCi1BTFdBWVNfSU5MSU5FIHVpbnQzMl90IGpzTWFwSGFzaChFeGVj
U3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKK0FMV0FZU19JTkxJTkUgdWludDMy
X3QganNNYXBIYXNoKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShub3JtYWxpemVNYXBLZXkodmFsdWUpID09IHZhbHVlLCAiV2UgZXhw
ZWN0IG5vcm1hbGl6ZWQgdmFsdWVzIGZsb3dpbmcgaW50byB0aGlzIGZ1bmN0aW9uLiIpOwotCi0g
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCi0gICAgaWYgKHZhbHVl
LmlzU3RyaW5nKCkpIHsKLSAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKHZhbHVl
KTsKLSAgICAgICAgY29uc3QgU3RyaW5nJiB3dGZTdHJpbmcgPSBzdHJpbmctPnZhbHVlKGV4ZWMp
OwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBVSU5UX01BWCk7Ci0gICAgICAg
IHJldHVybiB3dGZTdHJpbmcuaW1wbCgpLT5oYXNoKCk7Ci0gICAgfQotCi0gICAgdWludDY0X3Qg
cmF3VmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOwotICAgIHJldHVybiB3YW5nc0ludDY0
SGFzaChyYXdWYWx1ZSk7CisgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpCisgICAgICAgIHJldHVy
biBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKCZzdGF0ZSkuaW1wbCgpLT5oYXNoKCk7CisgICAgcmV0
dXJuIHdhbmdzSW50NjRIYXNoKEpTVmFsdWU6OmVuY29kZSh2YWx1ZSkpOwogfQogCiBBTFdBWVNf
SU5MSU5FIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IGNvbmN1cnJlbnRKU01hcEhhc2goSlNWYWx1
ZSBrZXkpCkBAIC0zNzMsNyArMzY0LDcgQEAgcHVibGljOgogICAgICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgICAgIGtleSA9IG5vcm1hbGl6ZU1hcEtleShrZXkpOwotICAgICAgICB1aW50MzJfdCBoYXNo
ID0ganNNYXBIYXNoKGV4ZWMsIHZtLCBrZXkpOworICAgICAgICB1aW50MzJfdCBoYXNoID0ganNN
YXBIYXNoKCpleGVjLCBrZXkpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBu
dWxscHRyKTsKICAgICAgICAgcmV0dXJuIGZpbmRCdWNrZXQoZXhlYywga2V5LCBoYXNoKTsKICAg
ICB9CkBAIC00MDQsNyArMzk1LDcgQEAgcHVibGljOgogICAgICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICAgICAgY29uc3QgdWludDMyX3QgbWFzayA9IG1f
Y2FwYWNpdHkgLSAxOwotICAgICAgICB1aW50MzJfdCBpbmRleCA9IGpzTWFwSGFzaChleGVjLCB2
bSwga2V5KSAmIG1hc2s7CisgICAgICAgIHVpbnQzMl90IGluZGV4ID0ganNNYXBIYXNoKCpleGVj
LCBrZXkpICYgbWFzazsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgp
KTsKICAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqKiBidWZmZXIgPSB0aGlzLT5idWZmZXIoKTsK
ICAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUqIGJ1Y2tldCA9IGJ1ZmZlcltpbmRleF07CkBAIC01
NzgsNyArNTY5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShtX2NhcGFj
aXR5ICYgKG1fY2FwYWNpdHkgLSAxKSkpOwogICAgICAgICBIYXNoTWFwQnVja2V0VHlwZSoqIGJ1
ZmZlciA9IHRoaXMtPmJ1ZmZlcigpOwogICAgICAgICB3aGlsZSAoaXRlciAhPSBlbmQpIHsKLSAg
ICAgICAgICAgIHVpbnQzMl90IGluZGV4ID0ganNNYXBIYXNoKGV4ZWMsIHZtLCBpdGVyLT5rZXko
KSkgJiBtYXNrOworICAgICAgICAgICAgdWludDMyX3QgaW5kZXggPSBqc01hcEhhc2goKmV4ZWMs
IGl0ZXItPmtleSgpKSAmIG1hc2s7CiAgICAgICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCFz
Y29wZS5leGNlcHRpb24oKSwgIkFsbCBrZXlzIHNob3VsZCBhbHJlYWR5IGJlIGhhc2hlZCBiZWZv
cmUsIHNvIHRoaXMgc2hvdWxkIG5vdCB0aHJvdyBiZWNhdXNlIGl0IHdvbid0IHJlc29sdmUgcm9w
ZXMuIik7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgSGFzaE1hcEJ1Y2tldFR5cGUq
IGJ1Y2tldCA9IGJ1ZmZlcltpbmRleF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWUuY3BwCmluZGV4IDFmOGM2ZDU5MDYzYzA1MzUxZGJjYzA4Y2E0NDJjMGFiN2Zk
NmNiOGYuLjBkNWY0OTU3ZTkxNTgzZjEzOTNiYTE2ODA0ZjRmY2EyMmJiZDE1ZGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0yNDcsNyArMjQ3
LDcgQEAgdm9pZCBKU1ZhbHVlOjpkdW1wSW5Db250ZXh0QXNzdW1pbmdTdHJ1Y3R1cmUoCiAjZW5k
aWYKICAgICB9IGVsc2UgaWYgKGlzQ2VsbCgpKSB7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPmNs
YXNzSW5mbygpLT5pc1N1YkNsYXNzT2YoSlNTdHJpbmc6OmluZm8oKSkpIHsKLSAgICAgICAgICAg
IEpTU3RyaW5nKiBzdHJpbmcgPSBqc0Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSk7CisgICAgICAg
ICAgICBKU1N0cmluZyogc3RyaW5nID0gYXNTdHJpbmcoYXNDZWxsKCkpOwogICAgICAgICAgICAg
b3V0LnByaW50KCJTdHJpbmciKTsKICAgICAgICAgICAgIGlmIChzdHJpbmctPmlzUm9wZSgpKQog
ICAgICAgICAgICAgICAgIG91dC5wcmludCgiIChyb3BlKSIpOwpAQCAtMjk5LDcgKzI5OSw3IEBA
IHZvaWQgSlNWYWx1ZTo6ZHVtcEZvckJhY2t0cmFjZShQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ICAgICAgICBvdXQucHJpbnRmKCIlbGYiLCBhc0RvdWJsZSgpKTsKICAgICBlbHNlIGlmIChpc0Nl
bGwoKSkgewogICAgICAgICBpZiAoYXNDZWxsKCktPmluaGVyaXRzKEpTU3RyaW5nOjppbmZvKCkp
KSB7Ci0gICAgICAgICAgICBKU1N0cmluZyogc3RyaW5nID0ganNDYXN0PEpTU3RyaW5nKj4oYXND
ZWxsKCkpOworICAgICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKGFzQ2VsbCgp
KTsKICAgICAgICAgICAgIGNvbnN0IFN0cmluZ0ltcGwqIGltcGwgPSBzdHJpbmctPnRyeUdldFZh
bHVlSW1wbCgpOwogICAgICAgICAgICAgaWYgKGltcGwpCiAgICAgICAgICAgICAgICAgb3V0LnBy
aW50KCJcIiIsIGltcGwsICJcIiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggYmY5ZjU5ZmFkMzE0YTA3MThmNWU0OWUwNjc2
YmE0MjA5OGY5OGQ5MC4uMTExMDRiZTYwY2E0OTI5ZTkzMTgxODU0YTVjMmNlODg2ZGQ3OTdhMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5l
cy5oCkBAIC02NjIsOSArNjYyLDcgQEAgaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9Q
cmVmZXJyZWRQcmltaXRpdmVUeXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZQogICAgICAgICBy
ZXR1cm4gTm9QcmVmZXJlbmNlOwogICAgIH0KIAotICAgIFN0cmluZ0ltcGwqIGhpbnRTdHJpbmcg
PSBqc0Nhc3Q8SlNTdHJpbmcqPih2YWx1ZSktPnZhbHVlKGV4ZWMpLmltcGwoKTsKLSAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBOb1ByZWZlcmVuY2UpOwotCisgICAgU3RyaW5nSW1wbCog
aGludFN0cmluZyA9IGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoZXhlYykuaW1wbCgpOwogICAgIGlm
IChXVEY6OmVxdWFsKGhpbnRTdHJpbmcsICJkZWZhdWx0IikpCiAgICAgICAgIHJldHVybiBOb1By
ZWZlcmVuY2U7CiAgICAgaWYgKFdURjo6ZXF1YWwoaGludFN0cmluZywgIm51bWJlciIpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuY3BwCmluZGV4IGM2MmU0ZjcxOGE3OGRiYmUzNjUxZGQ3ZmM2OWI2MmI1NzM5NTE1
MGIuLjVjZTA5MDM2YzdmM2NmMWY0OWM3MjgyNjk2ZDk4ZTFkMGQ5NDhlN2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0
aW9ucy5jcHAKQEAgLTY2Niw3ICs2NjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CiAKLSAgICBTdHJpbmcgcyA9IHgudG9XVEZT
dHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHMgPSBhc1N0cmluZyh4KS0+dmFsdWUoZXhlYyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBp
ZiAocy5pczhCaXQoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
Y3BwCmluZGV4IDllMjMxMzliNTVlNTJkNzY0MzYzNzY1NzhkMzYzMjYwNmJlZDEzNmUuLmQyMGUx
OGUzYTU2ZmIwODg4NWU3MTkxYWIzMmE1YzU5MjE1YTcxOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5jcHAKQEAgLTUyLDggKzUyLDcgQEAgdm9pZCBKU1JvcGVT
dHJpbmc6OlJvcGVCdWlsZGVyOjpleHBhbmQoKQogCiB2b2lkIEpTU3RyaW5nOjpkZXN0cm95KEpT
Q2VsbCogY2VsbCkKIHsKLSAgICBKU1N0cmluZyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpT
U3RyaW5nKj4oY2VsbCk7Ci0gICAgdGhpc09iamVjdC0+SlNTdHJpbmc6On5KU1N0cmluZygpOwor
ICAgIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oY2VsbCktPkpTU3RyaW5nOjp+SlNTdHJpbmcoKTsK
IH0KIAogdm9pZCBKU1N0cmluZzo6ZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCogY2VsbCwgUHJp
bnRTdHJlYW0mIG91dCkKQEAgLTg0LDcgKzgzLDcgQEAgYm9vbCBKU1N0cmluZzo6ZXF1YWxTbG93
Q2FzZShFeGVjU3RhdGUqIGV4ZWMsIEpTU3RyaW5nKiBvdGhlcikgY29uc3QKIAogc2l6ZV90IEpT
U3RyaW5nOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkKIHsKLSAgICBKU1N0cmluZyogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwpOworICAgIEpTU3RyaW5nKiB0aGlzT2Jq
ZWN0ID0gYXNTdHJpbmcoY2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzUm9wZSgpKQogICAg
ICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKTsKICAgICByZXR1cm4gQmFzZTo6
ZXN0aW1hdGVkU2l6ZShjZWxsKSArIHRoaXNPYmplY3QtPm1fdmFsdWUuaW1wbCgpLT5jb3N0RHVy
aW5nR0MoKTsKQEAgLTkyLDcgKzkxLDcgQEAgc2l6ZV90IEpTU3RyaW5nOjplc3RpbWF0ZWRTaXpl
KEpTQ2VsbCogY2VsbCkKIAogdm9pZCBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNl
bGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIEpTU3RyaW5nKiB0aGlzT2JqZWN0ID0g
anNDYXN0PEpTU3RyaW5nKj4oY2VsbCk7CisgICAgSlNTdHJpbmcqIHRoaXNPYmplY3QgPSBhc1N0
cmluZyhjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3Ip
OwogICAgIAogICAgIGlmICh0aGlzT2JqZWN0LT5pc1JvcGUoKSkKQEAgLTQyMSw3ICs0MjAsNyBA
QCBKU1ZhbHVlIEpTU3RyaW5nOjp0b1RoaXMoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IEVDTUFNb2RlIGVjbWFNb2RlKQogewogICAgIGlmIChlY21hTW9kZSA9PSBTdHJpY3RNb2RlKQog
ICAgICAgICByZXR1cm4gY2VsbDsKLSAgICByZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUoZXhl
Yy0+dm0oKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc0Nhc3Q8SlNTdHJpbmcqPihj
ZWxsKSk7CisgICAgcmV0dXJuIFN0cmluZ09iamVjdDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgYXNTdHJpbmcoY2VsbCkpOwogfQogCiBib29sIEpTU3Ry
aW5nOjpnZXRTdHJpbmdQcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCA5NWIwYjBkMGYyOGRkMTky
YTkwOTBhNTYwZDZjNWZiNTZhNGEwM2IwLi4xZjc3ODE5OGU5OTY0NWE0YTJkMjRjM2IxNDVmYTJj
MDlhNjIwMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAg
LTc1NSw3ICs3NTUsNyBAQCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjp0b0Jvb2xlYW4oRXhlY1N0YXRl
KiBleGVjKSBjb25zdAogaW5saW5lIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZyhFeGVjU3Rh
dGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgaWYgKGlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBq
c0Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSk7CisgICAgICAgIHJldHVybiBhc1N0cmluZyhhc0Nl
bGwoKSk7CiAgICAgYm9vbCByZXR1cm5FbXB0eVN0cmluZ09uRXJyb3IgPSB0cnVlOwogICAgIHJl
dHVybiB0b1N0cmluZ1Nsb3dDYXNlKGV4ZWMsIHJldHVybkVtcHR5U3RyaW5nT25FcnJvcik7CiB9
CkBAIC03NjMsNyArNzYzLDcgQEAgaW5saW5lIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZyhF
eGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiBpbmxpbmUgSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5n
T3JOdWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKLSAg
ICAgICAgcmV0dXJuIGpzQ2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKTsKKyAgICAgICAgcmV0dXJu
IGFzU3RyaW5nKGFzQ2VsbCgpKTsKICAgICBib29sIHJldHVybkVtcHR5U3RyaW5nT25FcnJvciA9
IGZhbHNlOwogICAgIHJldHVybiB0b1N0cmluZ1Nsb3dDYXNlKGV4ZWMsIHJldHVybkVtcHR5U3Ry
aW5nT25FcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVt
YmVyUHJvdG90eXBlLmNwcAppbmRleCA5NjY2ZTY1ZTBiYTI1ZTRjZmI1NGQ1OTljOTNhNWExZWI4
NzA3OTNjLi5kYzk2ZWU0ZTFjN2FiZjI5NGNlNjIyMTA2YzRkYjU0MDIzNTYyNzlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKQEAg
LTUzOSw3ICs1MzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3Rv
RnVuY1ZhbHVlT2YoRXhlY1N0YXRlKiBleGVjKQogICAgIGRvdWJsZSB4OwogICAgIEpTVmFsdWUg
dGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIodGhp
c1ZhbHVlLCB4KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUs
IFdURjo6bWFrZVN0cmluZygidGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUg
IiwganNDYXN0PEpTU3RyaW5nKj4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgdGhpc1ZhbHVl
KSktPnZhbHVlKGV4ZWMpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlLCBXVEY6Om1ha2VTdHJpbmcoInRoaXNOdW1iZXJWYWx1ZSBjYWxsZWQgb24gaW5jb21w
YXRpYmxlICIsIGFzU3RyaW5nKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIHRoaXNWYWx1ZSkp
LT52YWx1ZShleGVjKSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCkp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcAppbmRleCA2OWQzMTNmYjUwNTBlMDFmYzJjNWYxY2FiZDk5YWI1ZTZmY2JmYzdlLi4x
OGExZjdkNzVjOTI2NzIwYzE1YjE0NTM1NjZhZDNhZTExNjE4ODFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTMyNiw3ICsz
MjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3Ry
aW5nKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIGlmIChzdHJpbmdUYWcuaXNTdHJpbmco
KSkgewogICAgICAgICAgICAgICAgIEpTUm9wZVN0cmluZzo6Um9wZUJ1aWxkZXIgcm9wZUJ1aWxk
ZXIodm0pOwogICAgICAgICAgICAgICAgIHJvcGVCdWlsZGVyLmFwcGVuZCh2bS5zbWFsbFN0cmlu
Z3Mub2JqZWN0U3RyaW5nU3RhcnQoKSk7Ci0gICAgICAgICAgICAgICAgcm9wZUJ1aWxkZXIuYXBw
ZW5kKGpzQ2FzdDxKU1N0cmluZyo+KHN0cmluZ1RhZykpOworICAgICAgICAgICAgICAgIHJvcGVC
dWlsZGVyLmFwcGVuZChhc1N0cmluZyhzdHJpbmdUYWcpKTsKICAgICAgICAgICAgICAgICByb3Bl
QnVpbGRlci5hcHBlbmQodm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZygnXScp
KTsKICAgICAgICAgICAgICAgICBKU1N0cmluZyogcmVzdWx0ID0gcm9wZUJ1aWxkZXIucmVsZWFz
ZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAppbmRleCBhZWVlNGJjZGQ4YjM1ZTNjODNiNTdjMWZkMGI5N2ZjOWU5Y2I3YWUxLi5m
MzEzYThhMzkyNzU4NzQ1YTgxZDRlNGQyM2NkMjUxMTg0ZDg5Mjk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTgxMCw3ICs4
MTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGVh
dENoYXJhY3RlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgQVNTRVJUKGV4ZWMtPmFyZ3VtZW50Q291
bnQoKSA9PSAyKTsKIAogICAgIEFTU0VSVChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1N0
cmluZygpKTsKLSAgICBKU1N0cmluZyogc3RyaW5nID0ganNDYXN0PEpTU3RyaW5nKj4oZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKHN0cmluZy0+bGVuZ3RoKCkg
PT0gMSk7CiAKICAgICBKU1ZhbHVlIHJlcGVhdENvdW50VmFsdWUgPSBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgxKTsKQEAgLTEzMjEsNyArMTMyMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgc3RyaW5nUHJvdG9GdW5jU3Vic3RyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1N0cmlu
ZyoganNTdHJpbmcgPSAwOwogICAgIFN0cmluZyB1U3RyaW5nOwogICAgIGlmICh0aGlzVmFsdWUu
aXNTdHJpbmcoKSkgewotICAgICAgICBqc1N0cmluZyA9IGpzQ2FzdDxKU1N0cmluZyo+KHRoaXNW
YWx1ZS5hc0NlbGwoKSk7CisgICAgICAgIGpzU3RyaW5nID0gYXNTdHJpbmcodGhpc1ZhbHVlKTsK
ICAgICAgICAgbGVuID0ganNTdHJpbmctPmxlbmd0aCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IHVTdHJpbmcgPSB0aGlzVmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CkBAIC0xMzYwLDEwICsxMzYw
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nU3Vic3RySW50
ZXJuYWwoRXhlY1N0YXRlKiBleGVjKQogICAgIC8vIGd1YXJhbnRlZSB0aGF0IHdlIG9ubHkgcGFz
cyBpdCBhIHN0cmluZyB0aGlzVmFsdWUuIEFzIGEgcmVzdWx0LCBzdHJpbmdQcm90b0Z1bmNTdWJz
dHIKICAgICAvLyB3aWxsIG5vdCBuZWVkIHRvIGNhbGwgdG9TdHJpbmcoKSBvbiB0aGUgdGhpc1Zh
bHVlLCBhbmQgdGhlcmUgd2lsbCBiZSBubyBvYnNlcnZhYmxlCiAgICAgLy8gc2lkZS1lZmZlY3Rz
LgotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRo
aXNWYWx1ZSgpOwotICAgIEFTU0VSVCh0aGlzVmFsdWUuaXNTdHJpbmcoKSk7Ci0jZW5kaWYKKyAg
ICBBU1NFUlQoZXhlYy0+dGhpc1ZhbHVlKCkuaXNTdHJpbmcoKSk7CiAgICAgcmV0dXJuIHN0cmlu
Z1Byb3RvRnVuY1N1YnN0cihleGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRj
aC9GZXRjaEJvZHkuY3BwCmluZGV4IGE2Y2ZlMDUwNjJlNWVjNzdkMGNiOWQ4YmIwYjUwYmU0ZTMy
NDBhYjUuLmM3MDliNjliODQ1M2YwZTAxYjViNThkYjNjODg1MGJlNmEyOGM5MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAg
c3RkOjpvcHRpb25hbDxGZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCBKU0MKICAgICB9CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkp
IHsKICAgICAgICAgY29udGVudFR5cGUgPSBIVFRQSGVhZGVyVmFsdWVzOjp0ZXh0UGxhaW5Db250
ZW50VHlwZSgpOwotICAgICAgICByZXR1cm4gRmV0Y2hCb2R5KHZhbHVlLnRvV1RGU3RyaW5nKCZz
dGF0ZSkpOworICAgICAgICByZXR1cm4gRmV0Y2hCb2R5KFN0cmluZyB7IGFzU3RyaW5nKHZhbHVl
KS0+dmFsdWUoJnN0YXRlKSB9KTsKICAgICB9CiAgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpTVVJM
U2VhcmNoUGFyYW1zOjppbmZvKCkpKSB7CiAgICAgICAgIGNvbnRlbnRUeXBlID0gSFRUUEhlYWRl
clZhbHVlczo6Zm9ybVVSTEVuY29kZWRDb250ZW50VHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwCmluZGV4IDYxZDExYjZj
ZTVlMmEyOTIwN2E5Njc0YTg5MTY2YjJmZDlkMDIwMzMuLjkyNTRmZGMwN2U2YjI4MzA1N2QyNTk5
MDFhMTQ4MjNjZGZjNTBhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vU0RQUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1NEUFByb2Nlc3Nvci5jcHAKQEAgLTUzOCw3ICs1MzgsNyBAQCBib29sIFNEUFBy
b2Nlc3Nvcjo6Y2FsbFNjcmlwdChjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3Ry
aW5nJiBhcmd1bWVudAogICAgIGlmICghcmVzdWx0LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIG91dFJlc3VsdCA9IHJlc3VsdC5nZXRTdHJpbmcoZXhlYyk7CisgICAg
b3V0UmVzdWx0ID0gYXNTdHJpbmcocmVzdWx0KS0+dmFsdWUoZXhlYyk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0FycmF5VmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQXJyYXlWYWx1ZS5jcHAKaW5kZXgg
MTQwZWVhNWFkMDFlNjNlMGY0ODViMjUyMjVkMzc1MTc3ZWY0Mzk1NS4uMjhhOTA0OTQ2YWFkZjhm
OWEzZDAyNmM3NzM3NjEwZThhYTMxN2VkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvQXJyYXlWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
QXJyYXlWYWx1ZS5jcHAKQEAgLTgzLDkgKzgzLDYgQEAgYm9vbCBBcnJheVZhbHVlOjpnZXQoc2l6
ZV90IGluZGV4LCBEaWN0aW9uYXJ5JiB2YWx1ZSkgY29uc3QKIAogYm9vbCBBcnJheVZhbHVlOjpn
ZXQoc2l6ZV90IGluZGV4LCBTdHJpbmcmIHZhbHVlKSBjb25zdAogewotICAgIFZNJiB2bSA9IG1f
ZXhlYy0+dm0oKTsKLSAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0K
ICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC05Myw5ICs5MCw3IEBAIGJvb2wgQXJyYXlWYWx1ZTo6Z2V0KHNpemVfdCBpbmRleCwgU3RyaW5n
JiB2YWx1ZSkgY29uc3QKICAgICBpZiAoaW5kZXhlZFZhbHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkg
fHwgIWluZGV4ZWRWYWx1ZS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAg
ICB2YWx1ZSA9IGluZGV4ZWRWYWx1ZS50b1dURlN0cmluZyhtX2V4ZWMpOwotICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKLQorICAgIHZhbHVlID0gYXNTdHJpbmcoaW5kZXhl
ZFZhbHVlKS0+dmFsdWUobV9leGVjKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCAw
YTA2MWEyN2VhZWYyMzc3YmY5MjkwYjJjNTBmZTY5MzdmNzM4YTY0Li4yYjJlOWY5NDllYTM2NjUw
ZTAxZGY4NTdiMGFlYmExZWJhNjMxYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBzdGF0aWMgYm9vbCBnZXQoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIG9i
amVjdCwgY29uc3QgU3RyaW5nJiBrZXlQYXRoRWxlbWVudCwgSlNWYWx1ZSYgcmVzdWx0KQogewog
ICAgIGlmIChvYmplY3QuaXNTdHJpbmcoKSAmJiBrZXlQYXRoRWxlbWVudCA9PSAibGVuZ3RoIikg
ewotICAgICAgICByZXN1bHQgPSBqc051bWJlcihvYmplY3QudG9TdHJpbmcoJmV4ZWMpLT5sZW5n
dGgoKSk7CisgICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKGFzU3RyaW5nKG9iamVjdCktPmxlbmd0
aCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmICghb2JqZWN0LmlzT2Jq
ZWN0KCkpCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIFJlZlB0cjxJREJLZXk+IGNyZWF0ZUlE
QktleUZyb21WYWx1ZShFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3QKICAgICAg
ICAgcmV0dXJuIElEQktleTo6Y3JlYXRlTnVtYmVyKHZhbHVlLnRvTnVtYmVyKCZleGVjKSk7CiAK
ICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRl
U3RyaW5nKHZhbHVlLnRvV1RGU3RyaW5nKCZleGVjKSk7CisgICAgICAgIHJldHVybiBJREJLZXk6
OmNyZWF0ZVN0cmluZyhhc1N0cmluZyh2YWx1ZSktPnZhbHVlKCZleGVjKSk7CiAKICAgICBpZiAo
dmFsdWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpICYmICFzdGQ6OmlzbmFuKHZhbHVl
VG9EYXRlKCZleGVjLCB2YWx1ZSkpKQogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVEYXRl
KHZhbHVlVG9EYXRlKCZleGVjLCB2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKaW5kZXggMjMz
ODBiNmIyZTlmNTBjNmJmN2Q2ZmE3NGI1Zjg5Njc3NTgxOTdkZC4uNGM5ZWE3ODc4ZDRiNDUzZTVl
NTExYjU1MzU0MDAyMTg1MzdlZjMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCkBAIC02Miw3ICs2
Miw3IEBAIGJvb2wgSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1JZGVu
dGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1CiAgICAgU3RyaW5nIGFsZ29yaXRobU5hbWU7
CiAKICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgYWxnb3JpdGhtTmFtZSA9IHZh
bHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICBhbGdvcml0aG1OYW1lID0gYXNTdHJpbmco
dmFsdWUpLT52YWx1ZShleGVjKTsKICAgICBlbHNlIGlmICh2YWx1ZS5pc09iamVjdCgpKSB7CiAg
ICAgICAgIGlmICh2YWx1ZS5nZXRPYmplY3QoKS0+aW5oZXJpdHMoU3RyaW5nT2JqZWN0OjppbmZv
KCkpKQogICAgICAgICAgICAgYWxnb3JpdGhtTmFtZSA9IGFzU3RyaW5nKGFzU3RyaW5nT2JqZWN0
KHZhbHVlKS0+aW50ZXJuYWxWYWx1ZSgpKS0+dmFsdWUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAppbmRleCA1M2M1ZDUwNTA1NDgwOWRl
NDFkM2E3ZWM0NjJjZTQwYWViOGEzNGRlLi5jN2VmYzUxM2JlMGIzMmY1ODU5OWUzNGVmYzhlYWE5
N2I5YWNlNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFD
dWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1
c3RvbS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RKU0RhdGFDdWUoRXhlY1N0YXRlJiBleGVjKQogICAgIGlmIChleGVjLmFyZ3VtZW50
Q291bnQoKSA+IDMpIHsKICAgICAgICAgaWYgKCFleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDMpLmlz
U3RyaW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVj
LCBzY29wZSwgMywgInR5cGUiLCAiRGF0YUN1ZSIsIG51bGxwdHIsICJET01TdHJpbmciKTsKLSAg
ICAgICAgdHlwZSA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMykuZ2V0U3RyaW5nKCZleGVjKTsK
KyAgICAgICAgdHlwZSA9IGFzU3RyaW5nKGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMykpLT52YWx1
ZSgmZXhlYyk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAppbmRleCA0
MmI0MzJmZDYzNjQ0ZjA0ZmY2MDBmMmUyZDU0YmExNWY3ZmJjODBmLi5hYjkzYzVlODVhYjRlYWQ3
ZWY1NDE3OTQwOGEwNjBlMjUwZWM4ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTQXJyYXkqIGFycmF5LCBDb250ZXh0TWVuCiAgICAgICAgIGlmICghdHlwZS5p
c1N0cmluZygpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgU3RyaW5nIHR5cGVT
dHJpbmcgPSB0eXBlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICBTdHJpbmcgdHlwZVN0cmlu
ZyA9IGFzU3RyaW5nKHR5cGUpLT52YWx1ZShleGVjKTsKICAgICAgICAgaWYgKHR5cGVTdHJpbmcg
PT0gInNlcGFyYXRvciIpIHsKICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKFNlcGFy
YXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmcoKSk7CiAgICAgICAg
ICAgICBtZW51LmFwcGVuZEl0ZW0oaXRlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDkwNTEwZThiN2MwYjdhYTQ0ZWMyMTc2Yjg3
ODUwMDZjNDFiNGEzYTAuLjdiODc0OTVlMGI3OWI0M2EzMjhmYThhYWE2MzVhZjkxMDcwNWEwZGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CkBAIC0zNTUsNyArMzU1LDcgQEAgc3RhdGljIElkZW50aWZpZXIganNWYWx1ZVRvTW9kdWxlS2V5
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAodmFsdWUuaXNTeW1ib2wo
KSkKICAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21VaWQoanNDYXN0PFN5bWJvbCo+KHZh
bHVlKS0+cHJpdmF0ZU5hbWUoKSk7CiAgICAgQVNTRVJUKHZhbHVlLmlzU3RyaW5nKCkpOwotICAg
IHJldHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGpzQ2FzdDxKU1N0cmluZyo+KHZh
bHVlKS0+dmFsdWUoZXhlYykpOworICAgIHJldHVybiBhc1N0cmluZyh2YWx1ZSktPnRvSWRlbnRp
ZmllcihleGVjKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXR1cE1vZHVsZVNjcmlw
dEhhbmRsZXJzKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0UmVmLCBKU0ludGVybmFs
UHJvbWlzZSYgcHJvbWlzZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJi
MTJiMDFlMzhkMWU2ODAwNzUwYmNhYjUwNTNkNWU1OGRhMDk1OTguLmViZjA0OTQzMjlmZDNlNjA4
NjllZTQ0NDQzNjI2NzBjYjc3ZDg5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNzQ5LDggKzc0OSw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewotICAg
ICAgICAgICAgU3RyaW5nIHN0ciA9IGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUobV9leGVjKTsKLSAg
ICAgICAgICAgIGR1bXBTdHJpbmcoc3RyKTsKKyAgICAgICAgICAgIGR1bXBTdHJpbmcoYXNTdHJp
bmcodmFsdWUpLT52YWx1ZShtX2V4ZWMpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5kZXggY2UzOTVmYmYwNmUxNzU5MjMxYmM5
YmFhYjA4NDI0Y2UyYzIzY2MyNy4uYzBiM2UzYmQyNGRjY2EzNTlmYzE3OWMwNzk5OTEyNmFlMDFm
ZTdlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVu
dEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIHN0
ZDo6ZXJyb3JfY29kZSBnZXREb21haW5MaXN0KEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNPYmpl
Y3QqIGFycmF5T2JqZWMKICAgICAgICAgICAgIHJldHVybiBDb250ZW50RXh0ZW5zaW9uRXJyb3I6
OkpTT05JbnZhbGlkRG9tYWluTGlzdDsKICAgICAgICAgCiAgICAgICAgIC8vIERvbWFpbnMgc2hv
dWxkIGJlIHB1bnljb2RlIGVuY29kZWQgbG93ZXIgY2FzZS4KLSAgICAgICAgY29uc3QgU3RyaW5n
JiBkb21haW4gPSBqc0Nhc3Q8SlNTdHJpbmcqPih2YWx1ZSktPnZhbHVlKCZleGVjKTsKKyAgICAg
ICAgY29uc3QgU3RyaW5nJiBkb21haW4gPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKCZleGVjKTsK
ICAgICAgICAgaWYgKGRvbWFpbi5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gQ29udGVu
dEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZERvbWFpbkxpc3Q7CiAgICAgICAgIGlmICghY29u
dGFpbnNPbmx5QVNDSUlXaXRoTm9VcHBlcmNhc2UoZG9tYWluKSkKQEAgLTEzMCw3ICsxMzAsNyBA
QCBzdGF0aWMgc3RkOjplcnJvcl9jb2RlIGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgY29u
c3QgSlNPYmplY3QmIHJ1bGVPYmplY3QsCiAgICAgaWYgKCF1cmxGaWx0ZXJPYmplY3QgfHwgc2Nv
cGUuZXhjZXB0aW9uKCkgfHwgIXVybEZpbHRlck9iamVjdC5pc1N0cmluZygpKQogICAgICAgICBy
ZXR1cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZFVSTEZpbHRlckluVHJpZ2dl
cjsKIAotICAgIFN0cmluZyB1cmxGaWx0ZXIgPSB1cmxGaWx0ZXJPYmplY3QudG9XVEZTdHJpbmco
JmV4ZWMpOworICAgIFN0cmluZyB1cmxGaWx0ZXIgPSBhc1N0cmluZyh1cmxGaWx0ZXJPYmplY3Qp
LT52YWx1ZSgmZXhlYyk7CiAgICAgaWYgKHVybEZpbHRlci5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkVVJMRmlsdGVySW5UcmlnZ2Vy
OwogCkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBsb2FkQWN0aW9u
KEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNPYmplY3QmIHJ1bGVPYmplY3QsIEEKICAgICBpZiAo
IXR5cGVPYmplY3QgfHwgc2NvcGUuZXhjZXB0aW9uKCkgfHwgIXR5cGVPYmplY3QuaXNTdHJpbmco
KSkKICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRBY3Rp
b25UeXBlOwogCi0gICAgU3RyaW5nIGFjdGlvblR5cGUgPSB0eXBlT2JqZWN0LnRvV1RGU3RyaW5n
KCZleGVjKTsKKyAgICBTdHJpbmcgYWN0aW9uVHlwZSA9IGFzU3RyaW5nKHR5cGVPYmplY3QpLT52
YWx1ZSgmZXhlYyk7CiAKICAgICBpZiAoYWN0aW9uVHlwZSA9PSAiYmxvY2siKQogICAgICAgICBh
Y3Rpb24gPSBBY3Rpb25UeXBlOjpCbG9ja0xvYWQ7CkBAIC0yMjAsMTMgKzIyMCwxMyBAQCBzdGF0
aWMgc3RkOjplcnJvcl9jb2RlIGxvYWRBY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBjb25zdCBKU09i
amVjdCYgcnVsZU9iamVjdCwgQQogICAgICAgICBpZiAoIXNlbGVjdG9yIHx8IHNjb3BlLmV4Y2Vw
dGlvbigpIHx8ICFzZWxlY3Rvci5pc1N0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIENvbnRl
bnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDU1NEaXNwbGF5Tm9uZUFjdGlvblR5cGU7CiAK
LSAgICAgICAgU3RyaW5nIHMgPSBzZWxlY3Rvci50b1dURlN0cmluZygmZXhlYyk7Ci0gICAgICAg
IGlmICghaXNWYWxpZFNlbGVjdG9yKHMpKSB7CisgICAgICAgIFN0cmluZyBzZWxlY3RvclN0cmlu
ZyA9IGFzU3RyaW5nKHNlbGVjdG9yKS0+dmFsdWUoJmV4ZWMpOworICAgICAgICBpZiAoIWlzVmFs
aWRTZWxlY3RvcihzZWxlY3RvclN0cmluZykpIHsKICAgICAgICAgICAgIC8vIFNraXAgcnVsZXMg
d2l0aCBpbnZhbGlkIHNlbGVjdG9ycyB0byBiZSBiYWNrd2FyZHMtY29tcGF0aWJsZS4KICAgICAg
ICAgICAgIHZhbGlkU2VsZWN0b3IgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgICAgIH0KLSAgICAgICAgYWN0aW9uID0gQWN0aW9uKEFjdGlvblR5cGU6OkNTU0Rpc3BsYXlO
b25lU2VsZWN0b3IsIHMpOworICAgICAgICBhY3Rpb24gPSBBY3Rpb24oQWN0aW9uVHlwZTo6Q1NT
RGlzcGxheU5vbmVTZWxlY3Rvciwgc2VsZWN0b3JTdHJpbmcpOwogICAgIH0gZWxzZSBpZiAoYWN0
aW9uVHlwZSA9PSAibWFrZS1odHRwcyIpIHsKICAgICAgICAgYWN0aW9uID0gQWN0aW9uVHlwZTo6
TWFrZUhUVFBTOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggMjgxOTFh
YWQ0NzE3OWJjNzI5ZTZhZTRmMTE0MzhjZjdkZWQ5ZDE1MS4uYzlmYjczMzU5ODViOGJjN2JlNjg2
N2I4ZjcxY2YyMTMxNjI1NmEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC01Nyw3ICs1
Nyw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxGb250RmFjZT4+IEZvbnRGYWNlOjpjcmVhdGUoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBEb2N1bWVudCYgZG9jCiAgICAgICAgIHJldHVybiBzZXRGYW1pbHlS
ZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAgICAgaWYgKHNvdXJjZS5pc1N0cmluZygpKSB7
Ci0gICAgICAgIGF1dG8gdmFsdWUgPSBGb250RmFjZTo6cGFyc2VTdHJpbmcoc291cmNlLmdldFN0
cmluZygmc3RhdGUpLCBDU1NQcm9wZXJ0eVNyYyk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBGb250
RmFjZTo6cGFyc2VTdHJpbmcoYXNTdHJpbmcoc291cmNlKS0+dmFsdWUoJnN0YXRlKSwgQ1NTUHJv
cGVydHlTcmMpOwogICAgICAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4odmFsdWUuZ2V0KCkpKQog
ICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKICAgICAgICAgQ1NT
Rm9udEZhY2U6OmFwcGVuZFNvdXJjZXMocmVzdWx0LT5iYWNraW5nKCksIGRvd25jYXN0PENTU1Zh
bHVlTGlzdD4oKnZhbHVlKSwgJmRvY3VtZW50LCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNl
UHJveHkubW0KaW5kZXggYjlhYjhhMGRkZGNjNzY0N2RhNzg2MzM5ODQyMzI3Y2E1YzdhOTdhOS4u
MGUxZGU0OGExZTc1OGVlYmEzYWJkY2I2M2ExNTMxMjJiM2E4YTUxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2lu
SW5zdGFuY2VQcm94eS5tbQpAQCAtMTMyMCw3ICsxMzIwLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdp
bkluc3RhbmNlUHJveHk6OmFkZFZhbHVlVG9BcnJheShOU011dGFibGVBcnJheSAqYXJyYXksIEV4
ZWNTdGEKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIFthcnJheSBhZGRP
YmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6U3RyaW5nVmFsdWVUeXBlXV07Ci0gICAgICAg
IFthcnJheSBhZGRPYmplY3Q6dmFsdWUudG9XVEZTdHJpbmcoZXhlYyldOworICAgICAgICBbYXJy
YXkgYWRkT2JqZWN0OmFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoZXhlYyldOwogICAgIH0gZWxzZSBp
ZiAodmFsdWUuaXNOdW1iZXIoKSkgewogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJl
ciBudW1iZXJXaXRoSW50OkRvdWJsZVZhbHVlVHlwZV1dOwogICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnRvTnVtYmVyKGV4ZWMpXV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggMTk0YTAyYTYwNzU4NGNlN2ZiN2Yy
YjQyYTFkNWFmODU4ZjA2ZWUyNi4uOWFiNWM1YzFiOGYwMTMwYzMwN2IzOWVmNDVhZTI2OTcyMmU4
MTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNzM2OSw3ICs3MzY5
LDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAgICBpZiAoanNWYWx1ZS5pc0Jvb2xlYW4o
KSkKICAgICAgICAgcmV0dXJuIFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0b3JXaXRo
Qm9vbGVhbjpqc1ZhbHVlLmFzQm9vbGVhbigpXTsKICAgICBpZiAoanNWYWx1ZS5pc1N0cmluZygp
KQotICAgICAgICByZXR1cm4gW05TQXBwbGVFdmVudERlc2NyaXB0b3IgZGVzY3JpcHRvcldpdGhT
dHJpbmc6anNWYWx1ZS5nZXRTdHJpbmcoZXhlYyldOworICAgICAgICByZXR1cm4gW05TQXBwbGVF
dmVudERlc2NyaXB0b3IgZGVzY3JpcHRvcldpdGhTdHJpbmc6YXNTdHJpbmcoanNWYWx1ZSktPnZh
bHVlKGV4ZWMpXTsKICAgICBpZiAoanNWYWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIGRvdWJs
ZSB2YWx1ZSA9IGpzVmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgaW50IGludFZhbHVlID0gdmFs
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2Nh
cGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCmluZGV4IDI1OTMyODljNDU1MjJi
YjllMzg3ZjQ2YWQ0Mjk3NjcwYjQ5ZTkwNDYuLjA4YTIxOWYzYWFlNzExYmQ0NDM3MzgxNDczZjkx
ZTE5ZTEzMDVmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCkBAIC0xNjgs
NyArMTY4LDcgQEAgdm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6OmNvbnZlcnRKU1ZhbHVlVG9OUFZh
cmlhbnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHUKICAgICB9CiAKICAgICBpZiAodmFs
dWUuaXNTdHJpbmcoKSkgewotICAgICAgICBOUFN0cmluZyBucFN0cmluZyA9IGNyZWF0ZU5QU3Ry
aW5nKHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpLnV0ZjgoKSk7CisgICAgICAgIE5QU3RyaW5nIG5w
U3RyaW5nID0gY3JlYXRlTlBTdHJpbmcoYXNTdHJpbmcodmFsdWUpLT52YWx1ZShleGVjKS51dGY4
KCkpOwogICAgICAgICBTVFJJTkdOX1RPX05QVkFSSUFOVChucFN0cmluZy5VVEY4Q2hhcmFjdGVy
cywgbnBTdHJpbmcuVVRGOExlbmd0aCwgdmFyaWFudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297279</attachid>
            <date>2016-12-15 18:30:39 -0800</date>
            <delta_ts>2019-01-15 17:10:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165895-20161215182946.patch</filename>
            <type>text/plain</type>
            <size>40126</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MzcyMDVlOTQ3MjYzNGFjMjRlNTM5MDA4OTM2MTRmM2FkYTM1MTBiLi44NTlhYjFiZDA5MDRmN2Nh
NGUyMDYyY2NkMTIxYjgwM2JlYzdhYjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3NCBAQAorMjAxNi0xMi0xNSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgVXNlIGFzU3RyaW5nIGluc3RlYWQgb2YgdG9XVEZTdHJpbmcsIHRvU3RyaW5nLCBv
ciBnZXRTdHJpbmcgd2hlbiB3ZSBhbHJlYWR5IGNoZWNrZWQgaXNTdHJpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTg5NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE9uY2Ugd2UgaGF2ZSBjYWxsZWQg
aXNTdHJpbmcsIHdlIHNob3VsZCBhbHdheXMgdXNlIGFzU3RyaW5nIGFuZCB2YWx1ZSByYXRoZXIg
dGhhbiB1c2luZworICAgICAgICBmdW5jdGlvbnMgdGhhdCBoYXZlIHRvIGRlYWwgd2l0aCBub24t
SlNTdHJpbmcgb2JqZWN0cy4gVGhpcyBsZWFkcyB0byBzbGlnaHRseSBmZXdlciBicmFuY2hlcywK
KyAgICAgICAgc2xpZ2h0bHkgbGVzcyByZWZlcmVuY2UgY291bnQgY2h1cm4sIHNpbmNlIHRoZSBz
dHJpbmcgaXMgc3RvcmVkIHJpZ2h0IGluc2lkZSB0aGUgSlNTdHJpbmcsCisgICAgICAgIGFuZCBv
YnZpYXRlcyB0aGUgbmVlZCBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLgorCisgICAgICAgICogYmlu
ZGluZ3MvU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpqc1RvSW5zcGVjdG9y
VmFsdWUpOiBVc2UgYXNTdHJpbmcvdmFsdWUgaW5zdGVhZCBvZiBnZXRTdHJpbmcuCisgICAgICAg
ICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6Om9wZXJhdGlvbk1h
cEhhc2gpOiBDYWxsIGpzTWFwSGFzaCB3aXRoIGl0cyBuZXcgYXJndW1lbnRzLgorICAgICAgICAq
IGluc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbik6IFVzZSBh
c1N0cmluZy92YWx1ZSBpbnN0ZWFkCisgICAgICAgIG9mIHRvV1RGU3RyaW5nLgorICAgICAgICAq
IGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKTogRGl0
dG8uCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JIZWFwQWdlbnQ6OmdldFByZXZpZXcpOiBVc2Ug
YXNTdHJpbmcvdHJ5R2V0VmFsdWUsIGluc3RlYWQgb2YgdGhlCisgICAgICAgIHBlY3VsaWFyIGdl
dFN0cmluZyhudWxscHRyKSB0aGF0IHdhcyBoZXJlIGJlZm9yZS4KKyAgICAgICAgKiBqc2MuY3Bw
OgorICAgICAgICAoZnVuY3Rpb25HZXRHZXR0ZXJTZXR0ZXIpOiBVc2UgYXNTdHJpbmcvdG9JZGVu
dGlmaWVyIGluc3RlYWQgb2YgdGhlIG11Y2ggbGVzcyBlZmZpY2llbnQKKyAgICAgICAgdG9XVEZT
dHJpbmcvSWRlbnRpZmllcjo6ZnJvbVN0cmluZy4KKyAgICAgICAgKGZ1bmN0aW9uSXNSb3BlKTog
VXNlIGFzU3RyaW5nIGluc3RlYWQgb2YganNDYXN0PEpTU3RyaW5nKj47IHNhbWUgdGhpbmcsIGJ1
dCB3ZSBzaG91bGQKKyAgICAgICAgcHJlZmVyIHRoZSBhc1N0cmluZyBmdW5jdGlvbiwgc2luY2Ug
aXQgZXhpc3RzLgorICAgICAgICAoZnVuY3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24pOiBVc2Ug
YXNTdHJpbmcvdmFsdWUgaW5zdGVhZCBvZiBnZXRTdHJpbmcuCisgICAgICAgIChmdW5jdGlvbkhh
c0Jhc2ljQmxvY2tFeGVjdXRlZCk6IERpdHRvLgorICAgICAgICAoZnVuY3Rpb25CYXNpY0Jsb2Nr
RXhlY3V0aW9uQ291bnQpOiBEaXR0by4KKyAgICAgICAgKGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbik6
IFVzZSBhc1N0cmluZy92YWx1ZSBpbnN0ZWFkIG9mIHRvV1RGU3RyaW5nIGFuZCByZW1vdmVkCisg
ICAgICAgIHVubmVlZGVkIFJFVFVSTl9JRl9FWENFUFRJT04uCisgICAgICAgICh2YWx1ZVdpdGhU
eXBlT2ZXYXNtVmFsdWUpOiBVc2UgYXNTdHJpbmcgaW5zdGVhZCBvZiBqc0Nhc3Q8U3RyaW5nKj4u
CisgICAgICAgIChib3gpOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0RhdGVDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdERhdGUpOiBVc2UgYXNTdHJpbmcvdmFsdWVz
IGluc3RlYWQgb2YgZ2V0U3RyaW5nLgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHA6CisgICAgICAgIChKU0M6OmVycm9yRGVzY3JpcHRpb25Gb3JWYWx1ZSk6IFR3ZWFrZWQg
Zm9ybWF0dGluZy4KKworICAgICAgICAqIHJ1bnRpbWUvSGFzaE1hcEltcGwuaDoKKyAgICAgICAg
KEpTQzo6anNNYXBIYXNoKTogQ2hhbmdlZCB0aGlzIGZ1bmN0aW9uIHRvIHVzZSBhc1N0cmluZy92
YWx1ZS4KKworICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6
OkpTVmFsdWU6OmR1bXBJbkNvbnRleHRBc3N1bWluZ1N0cnVjdHVyZSk6IFVzZSBhc1N0cmluZyBp
bnN0ZWFkIG9mCisgICAgICAgIGpzQ2FzdDxKU1N0cmluZyo+LgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpkdW1wRm9yQmFja3RyYWNlKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oOgorICAgICAgICAoSlNDOjp0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUpOiBE
aXR0by4KKworICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpnbG9iYWxGdW5jRXZhbCk6IFVzZSBhc1N0cmluZy92YWx1ZSBpbnN0ZWFk
IG9mIHRvV1RGU3RyaW5nLgorCisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5jcHA6CisgICAg
ICAgIChKU0M6OkpTU3RyaW5nOjpkZXN0cm95KTogU3RyZWFtbGluZWQgYnkgcmVtb3ZpbmcgbG9j
YWwgdmFyaWFibGUuCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjplc3RpbWF0ZWRTaXplKTogVXNl
IGFzU3RyaW5nIGluc3RlYWQgb2YganNDYXN0PEpTU3RyaW5nKj4uCisgICAgICAgIChKU0M6OkpT
U3RyaW5nOjp2aXNpdENoaWxkcmVuKTogRGl0dG8uCisgICAgICAgIChKU0M6OkpTU3RyaW5nOjp0
b1RoaXMpOiBEaXR0by4KKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChK
U0M6OkpTVmFsdWU6OnRvU3RyaW5nKTogRGl0dG8uCisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRv
U3RyaW5nT3JOdWxsKTogRGl0dG8uCisgICAgICAgICogcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpudW1iZXJQcm90b0Z1bmNWYWx1ZU9mKTogRGl0dG8uCisgICAg
ICAgICogcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RQ
cm90b0Z1bmNUb1N0cmluZyk6IERpdHRvLgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5jUmVwZWF0Q2hhcmFjdGVyKTog
RGl0dG8uCisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1N1YnN0cik6IERpdHRvLgorICAg
ICAgICAoSlNDOjpidWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwpOiBTaW1wbGlmaWVkIGFzc2Vy
dGlvbiBieSByZW1vdmluZyBsb2NhbCB2YXJpYWJsZS4KKwogMjAxNi0xMi0xNSAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEdldCByaWQgb2YgSGVhcFJvb3RWaXNp
dG9yIGFuZCBtYWtlIFNsb3RWaXNpdG9yIGxlc3MgcGFpbmZ1bCB0byB1c2UKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCAyZTUyYzE3OTIyNzBiM2FkMTgzZjc0NDgzMjRjMmZhNmFkMzlmYTJkLi4wMmMxYTA1OTIyODE1
YTU5MzYxZmY3ZTZlMTVjZGQ0MzJhNmYyMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAK
KzIwMTYtMTItMTUgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFVz
ZSBhc1N0cmluZyBpbnN0ZWFkIG9mIHRvV1RGU3RyaW5nLCB0b1N0cmluZywgb3IgZ2V0U3RyaW5n
IHdoZW4gd2UgYWxyZWFkeSBjaGVja2VkIGlzU3RyaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU4OTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZldGNoQm9keTo6ZXh0cmFjdCk6IFVzZSBhc1N0cmluZy92YWx1
ZSBpbnN0ZWFkIG9mIHRvV1RGU3RyaW5nLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVh
bS9TRFBQcm9jZXNzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U0RQUHJvY2Vzc29yOjpjYWxs
U2NyaXB0KTogVXNlIGFzU3RyaW5nL3ZhbHVlIGluc3RlYWQgb2YgZ2V0U3RyaW5nLgorCisgICAg
ICAgICogYmluZGluZ3MvanMvQXJyYXlWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcnJh
eVZhbHVlOjpnZXQpOiBVc2UgYXNTdHJpbmcvdmFsdWUgaW5zdGVhZCBvZiB0b1dURlN0cmluZy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0KTogVXNlIGFzU3RyaW5nL2xlbmd0aCBpbnN0ZWFkIG9mIHRvU3RyaW5n
L2xlbmd0aC4KKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktleUZyb21WYWx1ZSk6IFVzZSBh
c1N0cmluZy92YWx1ZSBpbnN0ZWFkIG9mIHRvV1RGU3RyaW5nLgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnk6OmdldEFsZ29yaXRobUlkZW50aWZpZXIpOiBEaXR0
by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29uc3RydWN0SlNEYXRhQ3VlKTogVXNlIGFzU3RyaW5nL3ZhbHVlIGluc3RlYWQg
b2YgZ2V0U3RyaW5nLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRI
b3N0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBvcHVsYXRlQ29udGV4dE1lbnVJdGVt
cyk6IFVzZSBhc1N0cmluZy92YWx1ZSBpbnN0ZWFkIG9mIHRvV1RGU3RyaW5nLgorCisgICAgICAg
ICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpq
c1ZhbHVlVG9Nb2R1bGVLZXkpOiBVc2UgYXNTdHJpbmcvdG9JZGVudGlmaWVyIGluc3RlYWQgb2YK
KyAgICAgICAganNDYXN0PEpTU3RyaW5nKj4vdmFsdWUvSWRlbnRpZmllcjo6ZnJvbVN0cmluZy4K
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDbG9uZVNlcmlhbGl6ZXI6OmR1bXBJZlRlcm1pbmFsKTogU3RyZWFtbGlu
ZSBieSBnZXR0aW5nIHJpZCBvZiBsb2NhbCB2YXJpYWJsZS4KKworICAgICAgICAqIGNvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29udGVudEV4dGVuc2lvbnM6OmdldERvbWFpbkxpc3QpOiBVc2UgYXNTdHJpbmcgaW5zdGVhZCBv
ZiBqc0Nhc3Q8SlNTdHJpbmcqPi4KKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
Ojpsb2FkVHJpZ2dlcik6IFVzZSBhc1N0cmluZy92YWx1ZSBpbnN0ZWFkIG9mIHRvV1RGU3RyaW5n
LgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudEV4dGVuc2lvbnM6OmxvYWRBY3Rpb24pOiBEaXR0
by4KKworICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
RmFjZTo6Y3JlYXRlKTogVXNlIGFzU3RyaW5nL3ZhbHVlIGluc3RlYWQgb2YgZ2V0U3RyaW5nLgor
CiAyMDE2LTEyLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
R2V0IHJpZCBvZiBIZWFwUm9vdFZpc2l0b3IgYW5kIG1ha2UgU2xvdFZpc2l0b3IgbGVzcyBwYWlu
ZnVsIHRvIHVzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDI3ZWJiMjIwNmNkNTBiNmI2ZjEyMjliZmU1
YWI2NTVkNjNjMjBiMWQuLmU0ZjFkODg4MDhhYjQyNWM4ZDBiMDljYzg1Y2ZmM2IwZGEwYTM2MmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNi0xMi0xNSAgRGFyaW4gQWRs
ZXIgIDxkYXJpbkBhcHBsZS5jb20+CisKKyAgICAgICAgVXNlIGFzU3RyaW5nIGluc3RlYWQgb2Yg
dG9XVEZTdHJpbmcsIHRvU3RyaW5nLCBvciBnZXRTdHJpbmcgd2hlbiB3ZSBhbHJlYWR5IGNoZWNr
ZWQgaXNTdHJpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTg5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmFkZFZhbHVlVG9BcnJh
eSk6IFVzZSBhc1N0cmluZy92YWx1ZSBpbnN0ZWFkIG9mCisgICAgICAgIHRvV1RGU3RyaW5nLgor
ICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKGFlRGVzY0Zyb21KU1ZhbHVl
KTogVXNlIGFzU3RyaW5nL3ZhbHVlIGluc3RlYWQgb2YgZ2V0U3RyaW5nLgorCiAyMDE2LTEyLTE1
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBjaGFyQ29k
ZSAvIGtleUNvZGUgLyB3aGljaCBhdHRyaWJ1dGVzIGZyb20gVUlFdmVudCB0byBLZXlib2FyZEV2
ZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKaW5kZXggZmY2MWZiYjI3ZmFhNjMyZjlhN2Y3ZGE1NGJkMTZhYmNjODg0MmI1
YS4uNGFmZGM0ZTkxNTlmNzJhZmUwNjM5YzdhYTJmYWU3ZGMzOWI3ZDU0OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTEyLTE1ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNv
bT4KKworICAgICAgICBVc2UgYXNTdHJpbmcgaW5zdGVhZCBvZiB0b1dURlN0cmluZywgdG9TdHJp
bmcsIG9yIGdldFN0cmluZyB3aGVuIHdlIGFscmVhZHkgY2hlY2tlZCBpc1N0cmluZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1ODk1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TlBSdW50aW1lT2JqZWN0TWFwOjpjb252ZXJ0SlNWYWx1ZVRvTlBWYXJpYW50KTogVXNlIGFzU3Ry
aW5nL3ZhbHVlIGluc3RlYWQgb2YgdG9XVEZTdHJpbmcuCisKIDIwMTYtMTItMTUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXByb3ZlIE5l
dHdvcmtTZXNzaW9uIGxvZ2dpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
aW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYmluZGluZ3Mv
U2NyaXB0VmFsdWUuY3BwCmluZGV4IDI1NTY4YTNmODE3YzNlMWYxMDdmYThlMWRjZjAwMzlkOTMx
NDlhNWIuLjJhOTRmM2I2ZWMzOTlhZTk4NjZhYTIwMzk1YmVmMmZjNjVmMTg4MDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iaW5kaW5ncy9TY3JpcHRWYWx1ZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2JpbmRpbmdzL1NjcmlwdFZhbHVlLmNwcApAQCAtNjEsNyAr
NjEsNyBAQCBzdGF0aWMgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBqc1RvSW5zcGVjdG9yVmFsdWUo
RXhlY1N0YXRlJiBzY3JpcHRTdGF0ZSwgSlNWYWx1ZQogICAgIGlmICh2YWx1ZS5pc051bWJlcigp
ICYmIHZhbHVlLmlzQW55SW50KCkpCiAgICAgICAgIHJldHVybiBJbnNwZWN0b3JWYWx1ZTo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGludD4odmFsdWUuYXNBbnlJbnQoKSkpOwogICAgIGlmICh2YWx1ZS5p
c1N0cmluZygpKQotICAgICAgICByZXR1cm4gSW5zcGVjdG9yVmFsdWU6OmNyZWF0ZSh2YWx1ZS5n
ZXRTdHJpbmcoJnNjcmlwdFN0YXRlKSk7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JWYWx1ZTo6
Y3JlYXRlKGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoJnNjcmlwdFN0YXRlKSk7CiAKICAgICBpZiAo
dmFsdWUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAoaXNKU0FycmF5KHZhbHVlKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0
SG9zdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcAppbmRleCAzZjI2ZmU2ZWQ2ZjhhOGRkYmM2MDRhZWJhZWY3ZTJlOTIxNTJiOGI2
Li5lYjU5MTcxODAwNTQyYWU1ZGZhNmQwNmRjNmVjMzhiNzNhNTUxNjc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoIXNjcmlw
dFZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBz
Y29wZSwgQVNDSUlMaXRlcmFsKCJJbmplY3RlZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVF
eHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4iKSk7CiAKLSAgICBTdHJp
bmcgcHJvZ3JhbSA9IHNjcmlwdFZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgIFN0cmluZyBw
cm9ncmFtID0gYXNTdHJpbmcoc2NyaXB0VmFsdWUpLT52YWx1ZShleGVjKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9u
PiBleGNlcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKaW5kZXggYzZhYTRhNzdlZGMyNTRlMGVhODEz
MjA0NjQ0NjNmOWI4N2RlNmFiZS4uZjRlZDNmNzVhMTU1M2JhYmYxZTVkNDQzMDQ4YTYxOTAxMzY5
NjY3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcApAQCAtODIsNyArODIsNyBAQCBKU1ZhbHVlIEpTSmF2
YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBl
eGVjKQogICAgIGlmICghc2NyaXB0VmFsdWUuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIkpTSmF2YVNjcmlwdENhbGxG
cmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEg
c3RyaW5nLiIpKTsKIAotICAgIFN0cmluZyBzY3JpcHQgPSBzY3JpcHRWYWx1ZS50b1dURlN0cmlu
ZyhleGVjKTsKKyAgICBTdHJpbmcgc2NyaXB0ID0gYXNTdHJpbmcoc2NyaXB0VmFsdWUpLT52YWx1
ZShleGVjKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAg
ICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9ySGVhcEFnZW50LmNw
cAppbmRleCA4YTM5YTg0YzY0NWU1NDQxNWIwM2M2NzkyMzU4YTc2Mzc5NTYwZTFhLi5hZDg2YzA3
OTA1NTU5NDljYjc3YWEwOTJjMjdhMWQ2NjI3MTFhZmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JIZWFwQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckhlYXBBZ2Vu
dC5jcHAKQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIEluc3BlY3RvckhlYXBBZ2VudDo6Z2V0UHJl
dmlldyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBoZWFwT2JqZWN0SWQsCiAgICAgLy8g
U3RyaW5nIHByZXZpZXcuCiAgICAgSlNDZWxsKiBjZWxsID0gb3B0aW9uYWxOb2RlLT5jZWxsOwog
ICAgIGlmIChjZWxsLT5pc1N0cmluZygpKSB7Ci0gICAgICAgICpyZXN1bHRTdHJpbmcgPSBjZWxs
LT5nZXRTdHJpbmcobnVsbHB0cik7CisgICAgICAgICpyZXN1bHRTdHJpbmcgPSBhc1N0cmluZyhj
ZWxsKS0+dHJ5R2V0VmFsdWUoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAppbmRleCBkNTg4NjUxNGJlMTU4Y2MyYzk1ZDcxMmY5MTZjMzA4MTBmNGI2YWI3Li4y
OTIzOGEwNGUxNzA4M2NkOTJkZDhlZGZjMDdhOGI0YmU4MWQzZGVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNj
LmNwcApAQCAtMTg3NiwxMCArMTg3Niw4IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGZ1bmN0aW9uR2V0R2V0dGVyU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAo
IXByb3BlcnR5LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAKLSAgICBJZGVudGlmaWVyIGlkZW50ID0gSWRlbnRpZmllcjo6ZnJvbVN0
cmluZygmZXhlYy0+dm0oKSwgcHJvcGVydHkudG9XVEZTdHJpbmcoZXhlYykpOwotCiAgICAgUHJv
cGVydHlTbG90IHNsb3QodmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpW
TUlucXVpcnkpOwotICAgIHZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCk7
CisgICAgdmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGFzU3RyaW5nKHByb3BlcnR5KS0+dG9J
ZGVudGlmaWVyKGV4ZWMpLCBzbG90KTsKIAogICAgIEpTVmFsdWUgcmVzdWx0OwogICAgIGlmIChz
bG90LmlzQ2FjaGVhYmxlR2V0dGVyKCkpCkBAIC0yMTA0LDcgKzIxMDIsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXNSb3BlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBK
U1ZhbHVlIGFyZ3VtZW50ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFhcmd1bWVudC5p
c1N0cmluZygpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxz
ZSkpOwotICAgIGNvbnN0IFN0cmluZ0ltcGwqIGltcGwgPSBqc0Nhc3Q8SlNTdHJpbmcqPihhcmd1
bWVudCktPnRyeUdldFZhbHVlSW1wbCgpOworICAgIGNvbnN0IFN0cmluZ0ltcGwqIGltcGwgPSBh
c1N0cmluZyhhcmd1bWVudCktPnRyeUdldFZhbHVlSW1wbCgpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNCb29sZWFuKCFpbXBsKSk7CiB9CiAKQEAgLTIyODIsNyArMjI4MCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24o
RXhlY1N0YXRlKiBleGVjKQogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IChq
c0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRPYmpl
Y3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPmFyZ3Vt
ZW50KDEpLmlzU3RyaW5nKCkpOwotICAgIFN0cmluZyBzdWJzdHJpbmcgPSBleGVjLT5hcmd1bWVu
dCgxKS5nZXRTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN1YnN0cmluZyA9IGFzU3RyaW5nKGV4
ZWMtPmFyZ3VtZW50KDEpKS0+dmFsdWUoZXhlYyk7CiAgICAgU3RyaW5nIHNvdXJjZUNvZGVUZXh0
ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmlldygpLnRvU3RyaW5nKCk7CiAgICAgdW5zaWduZWQg
b2Zmc2V0ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNvdXJjZUNvZGVUZXh0LmZpbmQoc3Vic3Ry
aW5nKSArIGV4ZWN1dGFibGUtPnNvdXJjZSgpLnN0YXJ0T2Zmc2V0KCkpOwogICAgIApAQCAtMjMy
MCw3ICsyMzE4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkhhc0Jh
c2ljQmxvY2tFeGVjdXRlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBleGVjdXRhYmxlID0gKGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KGZ1bmN0aW9uVmFsdWUu
YXNDZWxsKCktPmdldE9iamVjdCgpKSktPmpzRXhlY3V0YWJsZSgpOwogCiAgICAgUkVMRUFTRV9B
U1NFUlQoZXhlYy0+YXJndW1lbnQoMSkuaXNTdHJpbmcoKSk7Ci0gICAgU3RyaW5nIHN1YnN0cmlu
ZyA9IGV4ZWMtPmFyZ3VtZW50KDEpLmdldFN0cmluZyhleGVjKTsKKyAgICBTdHJpbmcgc3Vic3Ry
aW5nID0gYXNTdHJpbmcoZXhlYy0+YXJndW1lbnQoMSkpLT52YWx1ZShleGVjKTsKICAgICBTdHJp
bmcgc291cmNlQ29kZVRleHQgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS52aWV3KCkudG9TdHJpbmco
KTsKICAgICBSRUxFQVNFX0FTU0VSVChzb3VyY2VDb2RlVGV4dC5jb250YWlucyhzdWJzdHJpbmcp
KTsKICAgICBpbnQgb2Zmc2V0ID0gc291cmNlQ29kZVRleHQuZmluZChzdWJzdHJpbmcpICsgZXhl
Y3V0YWJsZS0+c291cmNlKCkuc3RhcnRPZmZzZXQoKTsKQEAgLTIzMzgsNyArMjMzNiw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25CYXNpY0Jsb2NrRXhlY3V0aW9uQ291
bnQoRXhlY1N0YXRlKiBleGVjKQogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IChqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihmdW5jdGlvblZhbHVlLmFzQ2VsbCgpLT5nZXRP
YmplY3QoKSkpLT5qc0V4ZWN1dGFibGUoKTsKIAogICAgIFJFTEVBU0VfQVNTRVJUKGV4ZWMtPmFy
Z3VtZW50KDEpLmlzU3RyaW5nKCkpOwotICAgIFN0cmluZyBzdWJzdHJpbmcgPSBleGVjLT5hcmd1
bWVudCgxKS5nZXRTdHJpbmcoZXhlYyk7CisgICAgU3RyaW5nIHN1YnN0cmluZyA9IGFzU3RyaW5n
KGV4ZWMtPmFyZ3VtZW50KDEpKS0+dmFsdWUoZXhlYyk7CiAgICAgU3RyaW5nIHNvdXJjZUNvZGVU
ZXh0ID0gZXhlY3V0YWJsZS0+c291cmNlKCkudmlldygpLnRvU3RyaW5nKCk7CiAgICAgUkVMRUFT
RV9BU1NFUlQoc291cmNlQ29kZVRleHQuY29udGFpbnMoc3Vic3RyaW5nKSk7CiAgICAgaW50IG9m
ZnNldCA9IHNvdXJjZUNvZGVUZXh0LmZpbmQoc3Vic3RyaW5nKSArIGV4ZWN1dGFibGUtPnNvdXJj
ZSgpLnN0YXJ0T2Zmc2V0KCk7CkBAIC0yNDAzLDcgKzI0MDEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ3JlYXRlQnVpbHRpbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEgfHwgIWV4ZWMtPmFyZ3VtZW50KDApLmlzU3Ry
aW5nKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAK
LSAgICBTdHJpbmcgZnVuY3Rpb25UZXh0ID0gZXhlYy0+YXJndW1lbnQoMCkudG9XVEZTdHJpbmco
ZXhlYyk7CisgICAgU3RyaW5nIGZ1bmN0aW9uVGV4dCA9IGFzU3RyaW5nKGV4ZWMtPmFyZ3VtZW50
KDApKS0+dmFsdWUoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7CiAKICAgICBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UgPSBtYWtlU291cmNl
KGZ1bmN0aW9uVGV4dCk7CkBAIC0yNTEwLDcgKzI1MDgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uTWF4QXJndW1lbnRzKEV4ZWNTdGF0ZSopCiAKIHN0YXRpYyBDU3Ry
aW5nIHZhbHVlV2l0aFR5cGVPZldhc21WYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgSlNW
YWx1ZSB2YWx1ZSwgSlNWYWx1ZSB3YXNtVmFsdWUpCiB7Ci0gICAgSlNTdHJpbmcqIHR5cGUgPSBq
c0Nhc3Q8SlNTdHJpbmcqPih3YXNtVmFsdWUuZ2V0KGV4ZWMsIG1ha2VJZGVudGlmaWVyKHZtLCAi
dHlwZSIpKSk7CisgICAgSlNTdHJpbmcqIHR5cGUgPSBhc1N0cmluZyh3YXNtVmFsdWUuZ2V0KGV4
ZWMsIG1ha2VJZGVudGlmaWVyKHZtLCAidHlwZSIpKSk7CiAKICAgICBjb25zdCBTdHJpbmcmIHR5
cGVTdHJpbmcgPSB0eXBlLT52YWx1ZShleGVjKTsKICAgICBpZiAodHlwZVN0cmluZyA9PSAiaTY0
IiB8fCB0eXBlU3RyaW5nID09ICJpMzIiKQpAQCAtMjUyMywxNCArMjUyMSwxNCBAQCBzdGF0aWMg
Q1N0cmluZyB2YWx1ZVdpdGhUeXBlT2ZXYXNtVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0s
IEpTVmFsdWUgdmFsdWUsCiBzdGF0aWMgSlNWYWx1ZSBib3goRXhlY1N0YXRlKiBleGVjLCBWTSYg
dm0sIEpTVmFsdWUgd2FzbVZhbHVlKQogewogCi0gICAgSlNTdHJpbmcqIHR5cGUgPSBqc0Nhc3Q8
SlNTdHJpbmcqPih3YXNtVmFsdWUuZ2V0KGV4ZWMsIG1ha2VJZGVudGlmaWVyKHZtLCAidHlwZSIp
KSk7CisgICAgSlNTdHJpbmcqIHR5cGUgPSBhc1N0cmluZyh3YXNtVmFsdWUuZ2V0KGV4ZWMsIG1h
a2VJZGVudGlmaWVyKHZtLCAidHlwZSIpKSk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IHdhc21WYWx1
ZS5nZXQoZXhlYywgbWFrZUlkZW50aWZpZXIodm0sICJ2YWx1ZSIpKTsKIAogICAgIGF1dG8gdW5i
b3hTdHJpbmcgPSBbJl0gKGNvbnN0IGNoYXIqIGhleEZvcm1hdCwgY29uc3QgY2hhciogZGVjRm9y
bWF0LCBhdXRvJiByZXN1bHQpIHsKICAgICAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGNvbnN0IGNoYXIqIHN0ciA9IHRvQ1N0
cmluZyhqc0Nhc3Q8SlNTdHJpbmcqPih2YWx1ZSktPnZhbHVlKGV4ZWMpKS5kYXRhKCk7CisgICAg
ICAgIGNvbnN0IGNoYXIqIHN0ciA9IHRvQ1N0cmluZyhhc1N0cmluZyh2YWx1ZSktPnZhbHVlKGV4
ZWMpKS5kYXRhKCk7CiAgICAgICAgIGludCBzY2FuUmVzdWx0OwogICAgICAgICBpbnQgbGVuZ3Ro
ID0gc3RkOjpzdHJsZW4oc3RyKTsKICAgICAgICAgaWYgKChsZW5ndGggPiAyICYmIChzdHJbMF0g
PT0gJzAnICYmIHN0clsxXSA9PSAneCcpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0RhdGVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTgyNTAxN2IwNjdjNDIyNjA2NTdiOWM5
MzFiOGU0MThjMzgxZWZiZS4uNDA1MDc0YmFjMTA5MzRmMjllYjkyZGZjMWNhOGMxNDIzMWQwNWY1
MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZUNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlQ29uc3RydWN0
b3IuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdERhdGUoRXhlY1N0
YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG4KICAgICAg
ICAgICAgIEpTVmFsdWUgcHJpbWl0aXZlID0gYXJncy5hdCgwKS50b1ByaW1pdGl2ZShleGVjKTsK
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAg
ICAgICAgaWYgKHByaW1pdGl2ZS5pc1N0cmluZygpKQotICAgICAgICAgICAgICAgIHZhbHVlID0g
cGFyc2VEYXRlKHZtLCBwcmltaXRpdmUuZ2V0U3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgICAgICAg
ICB2YWx1ZSA9IHBhcnNlRGF0ZSh2bSwgYXNTdHJpbmcocHJpbWl0aXZlKS0+dmFsdWUoZXhlYykp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHZhbHVlID0gcHJpbWl0aXZlLnRv
TnVtYmVyKGV4ZWMpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGZjMDc1NTMzYzg5NmM3OWYyNDhmNTEw
ODBjMGIyOWU4ZjJiMDgwOGUuLmZiNjdlMjEwYTAxOTRhMWEzNWU2OWNhMmZjMTNiNzc4NzJmYTNj
NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwCkBAIC04NSw3ICs4NSw3IEBAIEpTT2JqZWN0KiBjcmVhdGVVbmRlZmluZWRWYXJp
YWJsZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiBKU1N0
cmluZyogZXJyb3JEZXNjcmlwdGlvbkZvclZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
KQogewogICAgIGlmICh2LmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcoZXhlYywgbWFrZVN0cmluZygnIicsICBhc1N0cmluZyh2KS0+dmFsdWUoZXhlYyksICci
JykpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKGV4ZWMsIG1ha2VTdHJpbmco
JyInLCBhc1N0cmluZyh2KS0+dmFsdWUoZXhlYyksICciJykpOwogICAgIGlmICh2LmlzU3ltYm9s
KCkpCiAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoZXhlYywgYXNTeW1ib2wodikt
PmRlc2NyaXB0aXZlU3RyaW5nKCkpOwogICAgIGlmICh2LmlzT2JqZWN0KCkpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hhc2hNYXBJbXBsLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9IYXNoTWFwSW1wbC5oCmluZGV4IDViZDAxMTcyMjBjZmE3
YmY2NzQxMTZkZjY0OGI4OGFiODUzMWMyZTUuLmY4OGZhODM0ZjRjYTQ0ZDdiY2RkMWNkMWUwMGU2
NjllZDExYjFmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hh
c2hNYXBJbXBsLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGFzaE1hcElt
cGwuaApAQCAtMjQwLDE3ICsyNDAsMTQgQEAgQUxXQVlTX0lOTElORSB1aW50MzJfdCBqc01hcEhh
c2goRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShub3JtYWxpemVNYXBLZXkodmFsdWUpID09IHZhbHVlLCAiV2UgZXhwZWN0
IG5vcm1hbGl6ZWQgdmFsdWVzIGZsb3dpbmcgaW50byB0aGlzIGZ1bmN0aW9uLiIpOwogCi0gICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotCiAgICAgaWYgKHZhbHVlLmlz
U3RyaW5nKCkpIHsKLSAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKHZhbHVlKTsK
LSAgICAgICAgY29uc3QgU3RyaW5nJiB3dGZTdHJpbmcgPSBzdHJpbmctPnZhbHVlKGV4ZWMpOwor
ICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIGNv
bnN0IFN0cmluZyYgd3RmU3RyaW5nID0gYXNTdHJpbmcodmFsdWUpLT52YWx1ZShleGVjKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgVUlOVF9NQVgpOwogICAgICAgICByZXR1
cm4gd3RmU3RyaW5nLmltcGwoKS0+aGFzaCgpOwogICAgIH0KIAotICAgIHVpbnQ2NF90IHJhd1Zh
bHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKLSAgICByZXR1cm4gd2FuZ3NJbnQ2NEhhc2go
cmF3VmFsdWUpOworICAgIHJldHVybiB3YW5nc0ludDY0SGFzaChKU1ZhbHVlOjplbmNvZGUodmFs
dWUpKTsKIH0KIAogQUxXQVlTX0lOTElORSBzdGQ6Om9wdGlvbmFsPHVpbnQzMl90PiBjb25jdXJy
ZW50SlNNYXBIYXNoKEpTVmFsdWUga2V5KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NKU1ZhbHVlLmNwcAppbmRleCAxZjhjNmQ1OTA2M2MwNTM1MWRiY2MwOGNhNDQyYzBhYjdm
ZDZjYjhmLi4wZDVmNDk1N2U5MTU4M2YxMzkzYmExNjgwNGY0ZmNhMjJiYmQxNWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAtMjQ3LDcgKzI0
Nyw3IEBAIHZvaWQgSlNWYWx1ZTo6ZHVtcEluQ29udGV4dEFzc3VtaW5nU3RydWN0dXJlKAogI2Vu
ZGlmCiAgICAgfSBlbHNlIGlmIChpc0NlbGwoKSkgewogICAgICAgICBpZiAoc3RydWN0dXJlLT5j
bGFzc0luZm8oKS0+aXNTdWJDbGFzc09mKEpTU3RyaW5nOjppbmZvKCkpKSB7Ci0gICAgICAgICAg
ICBKU1N0cmluZyogc3RyaW5nID0ganNDYXN0PEpTU3RyaW5nKj4oYXNDZWxsKCkpOworICAgICAg
ICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGFzU3RyaW5nKGFzQ2VsbCgpKTsKICAgICAgICAgICAg
IG91dC5wcmludCgiU3RyaW5nIik7CiAgICAgICAgICAgICBpZiAoc3RyaW5nLT5pc1JvcGUoKSkK
ICAgICAgICAgICAgICAgICBvdXQucHJpbnQoIiAocm9wZSkiKTsKQEAgLTI5OSw3ICsyOTksNyBA
QCB2b2lkIEpTVmFsdWU6OmR1bXBGb3JCYWNrdHJhY2UoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
ICAgICAgICAgb3V0LnByaW50ZigiJWxmIiwgYXNEb3VibGUoKSk7CiAgICAgZWxzZSBpZiAoaXND
ZWxsKCkpIHsKICAgICAgICAgaWYgKGFzQ2VsbCgpLT5pbmhlcml0cyhKU1N0cmluZzo6aW5mbygp
KSkgewotICAgICAgICAgICAgSlNTdHJpbmcqIHN0cmluZyA9IGpzQ2FzdDxKU1N0cmluZyo+KGFz
Q2VsbCgpKTsKKyAgICAgICAgICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhhc0NlbGwo
KSk7CiAgICAgICAgICAgICBjb25zdCBTdHJpbmdJbXBsKiBpbXBsID0gc3RyaW5nLT50cnlHZXRW
YWx1ZUltcGwoKTsKICAgICAgICAgICAgIGlmIChpbXBsKQogICAgICAgICAgICAgICAgIG91dC5w
cmludCgiXCIiLCBpbXBsLCAiXCIiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IGJmOWY1OWZhZDMxNGEwNzE4ZjVlNDllMDY3
NmJhNDIwOThmOThkOTAuLjc0OTYzYWNiZmU5YjYyYWU4MjM3ZDcxMzIwY2E0NjQ3OTE5NGZlZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGlu
ZXMuaApAQCAtNjYyLDcgKzY2Miw3IEBAIGlubGluZSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHRv
UHJlZmVycmVkUHJpbWl0aXZlVHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUKICAgICAgICAg
cmV0dXJuIE5vUHJlZmVyZW5jZTsKICAgICB9CiAKLSAgICBTdHJpbmdJbXBsKiBoaW50U3RyaW5n
ID0ganNDYXN0PEpTU3RyaW5nKj4odmFsdWUpLT52YWx1ZShleGVjKS5pbXBsKCk7CisgICAgU3Ry
aW5nSW1wbCogaGludFN0cmluZyA9IGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoZXhlYykuaW1wbCgp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIE5vUHJlZmVyZW5jZSk7CiAKICAgICBp
ZiAoV1RGOjplcXVhbChoaW50U3RyaW5nLCAiZGVmYXVsdCIpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmlu
ZGV4IGM2MmU0ZjcxOGE3OGRiYmUzNjUxZGQ3ZmM2OWI2MmI1NzM5NTE1MGIuLjVjZTA5MDM2Yzdm
M2NmMWY0OWM3MjgyNjk2ZDk4ZTFkMGQ5NDhlN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTY2
Niw3ICs2NjYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFs
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKICAgICB9CiAKLSAgICBTdHJpbmcgcyA9IHgudG9XVEZTdHJpbmcoZXhlYyk7Cisg
ICAgU3RyaW5nIHMgPSBhc1N0cmluZyh4KS0+dmFsdWUoZXhlYyk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICBpZiAocy5pczhCaXQoKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuY3BwCmluZGV4IGRiNjMx
YzBhMzIyM2ZiODhlYWI2NDQ0NjJjMTUyZWFjMGMzYWJjNDQuLjZiN2Q5NGE0NWZiMzQyZWJkNjBk
MTZmZTJhZTU3ZmY5NGE2ZTZkOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5jcHAKQEAgLTUyLDggKzUyLDcgQEAgdm9pZCBKU1JvcGVTdHJpbmc6OlJvcGVCdWls
ZGVyOjpleHBhbmQoKQogCiB2b2lkIEpTU3RyaW5nOjpkZXN0cm95KEpTQ2VsbCogY2VsbCkKIHsK
LSAgICBKU1N0cmluZyogdGhpc09iamVjdCA9IHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oY2VsbCk7
Ci0gICAgdGhpc09iamVjdC0+SlNTdHJpbmc6On5KU1N0cmluZygpOworICAgIHN0YXRpY19jYXN0
PEpTU3RyaW5nKj4oY2VsbCktPkpTU3RyaW5nOjp+SlNTdHJpbmcoKTsKIH0KIAogdm9pZCBKU1N0
cmluZzo6ZHVtcFRvU3RyZWFtKGNvbnN0IEpTQ2VsbCogY2VsbCwgUHJpbnRTdHJlYW0mIG91dCkK
QEAgLTg0LDcgKzgzLDcgQEAgYm9vbCBKU1N0cmluZzo6ZXF1YWxTbG93Q2FzZShFeGVjU3RhdGUq
IGV4ZWMsIEpTU3RyaW5nKiBvdGhlcikgY29uc3QKIAogc2l6ZV90IEpTU3RyaW5nOjplc3RpbWF0
ZWRTaXplKEpTQ2VsbCogY2VsbCkKIHsKLSAgICBKU1N0cmluZyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxKU1N0cmluZyo+KGNlbGwpOworICAgIEpTU3RyaW5nKiB0aGlzT2JqZWN0ID0gYXNTdHJpbmco
Y2VsbCk7CiAgICAgaWYgKHRoaXNPYmplY3QtPmlzUm9wZSgpKQogICAgICAgICByZXR1cm4gQmFz
ZTo6ZXN0aW1hdGVkU2l6ZShjZWxsKTsKICAgICByZXR1cm4gQmFzZTo6ZXN0aW1hdGVkU2l6ZShj
ZWxsKSArIHRoaXNPYmplY3QtPm1fdmFsdWUuaW1wbCgpLT5jb3N0RHVyaW5nR0MoKTsKQEAgLTky
LDcgKzkxLDcgQEAgc2l6ZV90IEpTU3RyaW5nOjplc3RpbWF0ZWRTaXplKEpTQ2VsbCogY2VsbCkK
IAogdm9pZCBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogewotICAgIEpTU3RyaW5nKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3RyaW5n
Kj4oY2VsbCk7CisgICAgSlNTdHJpbmcqIHRoaXNPYmplY3QgPSBhc1N0cmluZyhjZWxsKTsKICAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIAogICAgIGlm
ICh0aGlzT2JqZWN0LT5pc1JvcGUoKSkKQEAgLTQyMSw3ICs0MjAsNyBAQCBKU1ZhbHVlIEpTU3Ry
aW5nOjp0b1RoaXMoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIEVDTUFNb2RlIGVjbWFN
b2RlKQogewogICAgIGlmIChlY21hTW9kZSA9PSBTdHJpY3RNb2RlKQogICAgICAgICByZXR1cm4g
Y2VsbDsKLSAgICByZXR1cm4gU3RyaW5nT2JqZWN0OjpjcmVhdGUoZXhlYy0+dm0oKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBqc0Nhc3Q8SlNTdHJpbmcqPihjZWxsKSk7CisgICAgcmV0
dXJuIFN0cmluZ09iamVjdDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgYXNTdHJpbmcoY2VsbCkpOwogfQogCiBib29sIEpTU3RyaW5nOjpnZXRTdHJpbmdQ
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAppbmRleCA5NWIwYjBkMGYyOGRkMTkyYTkwOTBhNTYwZDZjNWZi
NTZhNGEwM2IwLi4xZjc3ODE5OGU5OTY0NWE0YTJkMjRjM2IxNDVmYTJjMDlhNjIwMGY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKQEAgLTc1NSw3ICs3NTUsNyBA
QCBpbmxpbmUgYm9vbCBKU1ZhbHVlOjp0b0Jvb2xlYW4oRXhlY1N0YXRlKiBleGVjKSBjb25zdAog
aW5saW5lIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0
CiB7CiAgICAgaWYgKGlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiBqc0Nhc3Q8SlNTdHJpbmcq
Pihhc0NlbGwoKSk7CisgICAgICAgIHJldHVybiBhc1N0cmluZyhhc0NlbGwoKSk7CiAgICAgYm9v
bCByZXR1cm5FbXB0eVN0cmluZ09uRXJyb3IgPSB0cnVlOwogICAgIHJldHVybiB0b1N0cmluZ1Ns
b3dDYXNlKGV4ZWMsIHJldHVybkVtcHR5U3RyaW5nT25FcnJvcik7CiB9CkBAIC03NjMsNyArNzYz
LDcgQEAgaW5saW5lIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0CiBpbmxpbmUgSlNTdHJpbmcqIEpTVmFsdWU6OnRvU3RyaW5nT3JOdWxsKEV4ZWNTdGF0
ZSogZXhlYykgY29uc3QKIHsKICAgICBpZiAoaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIGpz
Q2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKTsKKyAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGFzQ2Vs
bCgpKTsKICAgICBib29sIHJldHVybkVtcHR5U3RyaW5nT25FcnJvciA9IGZhbHNlOwogICAgIHJl
dHVybiB0b1N0cmluZ1Nsb3dDYXNlKGV4ZWMsIHJldHVybkVtcHR5U3RyaW5nT25FcnJvcik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNw
cAppbmRleCA5NjY2ZTY1ZTBiYTI1ZTRjZmI1NGQ1OTljOTNhNWExZWI4NzA3OTNjLi5kYzk2ZWU0
ZTFjN2FiZjI5NGNlNjIyMTA2YzRkYjU0MDIzNTYyNzlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKQEAgLTUzOSw3ICs1MzksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1ZhbHVlT2YoRXhl
Y1N0YXRlKiBleGVjKQogICAgIGRvdWJsZSB4OwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhl
Yy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0b1RoaXNOdW1iZXIodGhpc1ZhbHVlLCB4KSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUsIFdURjo6bWFrZVN0cmlu
ZygidGhpc051bWJlclZhbHVlIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgIiwganNDYXN0PEpTU3Ry
aW5nKj4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgdGhpc1ZhbHVlKSktPnZhbHVlKGV4ZWMp
KSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBXVEY6Om1h
a2VTdHJpbmcoInRoaXNOdW1iZXJWYWx1ZSBjYWxsZWQgb24gaW5jb21wYXRpYmxlICIsIGFzU3Ry
aW5nKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIHRoaXNWYWx1ZSkpLT52YWx1ZShleGVjKSkp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoeCkpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcAppbmRleCA2
OWQzMTNmYjUwNTBlMDFmYzJjNWYxY2FiZDk5YWI1ZTZmY2JmYzdlLi4xOGExZjdkNzVjOTI2NzIw
YzE1YjE0NTM1NjZhZDNhZTExNjE4ODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdFByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgICAgIGlmIChzdHJpbmdUYWcuaXNTdHJpbmcoKSkgewogICAgICAgICAg
ICAgICAgIEpTUm9wZVN0cmluZzo6Um9wZUJ1aWxkZXIgcm9wZUJ1aWxkZXIodm0pOwogICAgICAg
ICAgICAgICAgIHJvcGVCdWlsZGVyLmFwcGVuZCh2bS5zbWFsbFN0cmluZ3Mub2JqZWN0U3RyaW5n
U3RhcnQoKSk7Ci0gICAgICAgICAgICAgICAgcm9wZUJ1aWxkZXIuYXBwZW5kKGpzQ2FzdDxKU1N0
cmluZyo+KHN0cmluZ1RhZykpOworICAgICAgICAgICAgICAgIHJvcGVCdWlsZGVyLmFwcGVuZChh
c1N0cmluZyhzdHJpbmdUYWcpKTsKICAgICAgICAgICAgICAgICByb3BlQnVpbGRlci5hcHBlbmQo
dm0uc21hbGxTdHJpbmdzLnNpbmdsZUNoYXJhY3RlclN0cmluZygnXScpKTsKICAgICAgICAgICAg
ICAgICBKU1N0cmluZyogcmVzdWx0ID0gcm9wZUJ1aWxkZXIucmVsZWFzZSgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCBh
ZWVlNGJjZGQ4YjM1ZTNjODNiNTdjMWZkMGI5N2ZjOWU5Y2I3YWUxLi5mMzEzYThhMzkyNzU4NzQ1
YTgxZDRlNGQyM2NkMjUxMTg0ZDg5Mjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTgxMCw3ICs4MTAsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3RlcihFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgQVNTRVJUKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAyKTsKIAog
ICAgIEFTU0VSVChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc1N0cmluZygpKTsKLSAgICBK
U1N0cmluZyogc3RyaW5nID0ganNDYXN0PEpTU3RyaW5nKj4oZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOworICAgIEpTU3RyaW5nKiBzdHJpbmcgPSBhc1N0cmluZyhleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CiAgICAgQVNTRVJUKHN0cmluZy0+bGVuZ3RoKCkgPT0gMSk7CiAKICAgICBK
U1ZhbHVlIHJlcGVhdENvdW50VmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKQEAg
LTEzMjEsNyArMTMyMSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jU3Vic3RyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1N0cmluZyoganNTdHJpbmcgPSAw
OwogICAgIFN0cmluZyB1U3RyaW5nOwogICAgIGlmICh0aGlzVmFsdWUuaXNTdHJpbmcoKSkgewot
ICAgICAgICBqc1N0cmluZyA9IGpzQ2FzdDxKU1N0cmluZyo+KHRoaXNWYWx1ZS5hc0NlbGwoKSk7
CisgICAgICAgIGpzU3RyaW5nID0gYXNTdHJpbmcodGhpc1ZhbHVlKTsKICAgICAgICAgbGVuID0g
anNTdHJpbmctPmxlbmd0aCgpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHVTdHJpbmcgPSB0aGlz
VmFsdWUudG9XVEZTdHJpbmcoZXhlYyk7CkBAIC0xMzYwLDEwICsxMzYwLDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBidWlsdGluU3RyaW5nU3Vic3RySW50ZXJuYWwoRXhlY1N0YXRl
KiBleGVjKQogICAgIC8vIGd1YXJhbnRlZSB0aGF0IHdlIG9ubHkgcGFzcyBpdCBhIHN0cmluZyB0
aGlzVmFsdWUuIEFzIGEgcmVzdWx0LCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIKICAgICAvLyB3aWxs
IG5vdCBuZWVkIHRvIGNhbGwgdG9TdHJpbmcoKSBvbiB0aGUgdGhpc1ZhbHVlLCBhbmQgdGhlcmUg
d2lsbCBiZSBubyBvYnNlcnZhYmxlCiAgICAgLy8gc2lkZS1lZmZlY3RzLgotI2lmICFBU1NFUlRf
RElTQUJMRUQKLSAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwotICAg
IEFTU0VSVCh0aGlzVmFsdWUuaXNTdHJpbmcoKSk7Ci0jZW5kaWYKKyAgICBBU1NFUlQoZXhlYy0+
dGhpc1ZhbHVlKCkuaXNTdHJpbmcoKSk7CiAgICAgcmV0dXJuIHN0cmluZ1Byb3RvRnVuY1N1YnN0
cihleGVjKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHkuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3Bw
CmluZGV4IGE2Y2ZlMDUwNjJlNWVjNzdkMGNiOWQ4YmIwYjUwYmU0ZTMyNDBhYjUuLmM3MDliNjli
ODQ1M2YwZTAxYjViNThkYjNjODg1MGJlNmEyOGM5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgc3RkOjpvcHRpb25hbDxG
ZXRjaEJvZHk+IEZldGNoQm9keTo6ZXh0cmFjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBKU0MKICAgICB9CiAgICAgaWYgKHZhbHVlLmlzU3RyaW5nKCkpIHsKICAgICAgICAgY29u
dGVudFR5cGUgPSBIVFRQSGVhZGVyVmFsdWVzOjp0ZXh0UGxhaW5Db250ZW50VHlwZSgpOwotICAg
ICAgICByZXR1cm4gRmV0Y2hCb2R5KHZhbHVlLnRvV1RGU3RyaW5nKCZzdGF0ZSkpOworICAgICAg
ICByZXR1cm4gRmV0Y2hCb2R5KFN0cmluZyB7IGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoJnN0YXRl
KSB9KTsKICAgICB9CiAgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpTVVJMU2VhcmNoUGFyYW1zOjpp
bmZvKCkpKSB7CiAgICAgICAgIGNvbnRlbnRUeXBlID0gSFRUUEhlYWRlclZhbHVlczo6Zm9ybVVS
TEVuY29kZWRDb250ZW50VHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9TRFBQcm9jZXNzb3IuY3BwCmluZGV4IDYxZDExYjZjZTVlMmEyOTIwN2E5Njc0
YTg5MTY2YjJmZDlkMDIwMzMuLjkyNTRmZGMwN2U2YjI4MzA1N2QyNTk5MDFhMTQ4MjNjZGZjNTBh
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vU0RQUHJv
Y2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1NEUFBy
b2Nlc3Nvci5jcHAKQEAgLTUzOCw3ICs1MzgsNyBAQCBib29sIFNEUFByb2Nlc3Nvcjo6Y2FsbFNj
cmlwdChjb25zdCBTdHJpbmcmIGZ1bmN0aW9uTmFtZSwgY29uc3QgU3RyaW5nJiBhcmd1bWVudAog
ICAgIGlmICghcmVzdWx0LmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IG91dFJlc3VsdCA9IHJlc3VsdC5nZXRTdHJpbmcoZXhlYyk7CisgICAgb3V0UmVzdWx0ID0gYXNT
dHJpbmcocmVzdWx0KS0+dmFsdWUoZXhlYyk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0FycmF5VmFsdWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQXJyYXlWYWx1ZS5jcHAKaW5kZXggMTQwZWVhNWFkMDFlNjNl
MGY0ODViMjUyMjVkMzc1MTc3ZWY0Mzk1NS4uNjNjOTUzODQ1ZmQxYjc2ZDMwMThkZDk3OWNjZTRj
NGUzNWI5MTM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQXJyYXlW
YWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQXJyYXlWYWx1ZS5jcHAK
QEAgLTkzLDcgKzkzLDcgQEAgYm9vbCBBcnJheVZhbHVlOjpnZXQoc2l6ZV90IGluZGV4LCBTdHJp
bmcmIHZhbHVlKSBjb25zdAogICAgIGlmIChpbmRleGVkVmFsdWUuaXNVbmRlZmluZWRPck51bGwo
KSB8fCAhaW5kZXhlZFZhbHVlLmlzU3RyaW5nKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIHZhbHVlID0gaW5kZXhlZFZhbHVlLnRvV1RGU3RyaW5nKG1fZXhlYyk7CisgICAgdmFsdWUg
PSBhc1N0cmluZyhpbmRleGVkVmFsdWUpLT52YWx1ZShtX2V4ZWMpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCAwYTA2
MWEyN2VhZWYyMzc3YmY5MjkwYjJjNTBmZTY5MzdmNzM4YTY0Li4yYjJlOWY5NDllYTM2NjUwZTAx
ZGY4NTdiMGFlYmExZWJhNjMxYjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcApAQCAtNTYsNyArNTYsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBzdGF0aWMgYm9vbCBnZXQoRXhlY1N0YXRlJiBleGVjLCBKU1ZhbHVlIG9iamVj
dCwgY29uc3QgU3RyaW5nJiBrZXlQYXRoRWxlbWVudCwgSlNWYWx1ZSYgcmVzdWx0KQogewogICAg
IGlmIChvYmplY3QuaXNTdHJpbmcoKSAmJiBrZXlQYXRoRWxlbWVudCA9PSAibGVuZ3RoIikgewot
ICAgICAgICByZXN1bHQgPSBqc051bWJlcihvYmplY3QudG9TdHJpbmcoJmV4ZWMpLT5sZW5ndGgo
KSk7CisgICAgICAgIHJlc3VsdCA9IGpzTnVtYmVyKGFzU3RyaW5nKG9iamVjdCktPmxlbmd0aCgp
KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmICghb2JqZWN0LmlzT2JqZWN0
KCkpCkBAIC0xNDgsNyArMTQ4LDcgQEAgc3RhdGljIFJlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktl
eUZyb21WYWx1ZShFeGVjU3RhdGUmIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIFZlY3QKICAgICAgICAg
cmV0dXJuIElEQktleTo6Y3JlYXRlTnVtYmVyKHZhbHVlLnRvTnVtYmVyKCZleGVjKSk7CiAKICAg
ICBpZiAodmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlU3Ry
aW5nKHZhbHVlLnRvV1RGU3RyaW5nKCZleGVjKSk7CisgICAgICAgIHJldHVybiBJREJLZXk6OmNy
ZWF0ZVN0cmluZyhhc1N0cmluZyh2YWx1ZSktPnZhbHVlKCZleGVjKSk7CiAKICAgICBpZiAodmFs
dWUuaW5oZXJpdHMoRGF0ZUluc3RhbmNlOjppbmZvKCkpICYmICFzdGQ6OmlzbmFuKHZhbHVlVG9E
YXRlKCZleGVjLCB2YWx1ZSkpKQogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVEYXRlKHZh
bHVlVG9EYXRlKCZleGVjLCB2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3J5cHRvQWxnb3JpdGhtRGljdGlvbmFyeS5jcHAKaW5kZXggMjMzODBi
NmIyZTlmNTBjNmJmN2Q2ZmE3NGI1Zjg5Njc3NTgxOTdkZC4uNGM5ZWE3ODc4ZDRiNDUzZTVlNTEx
YjU1MzU0MDAyMTg1MzdlZjMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0NyeXB0b0FsZ29yaXRobURpY3Rpb25hcnkuY3BwCkBAIC02Miw3ICs2Miw3
IEBAIGJvb2wgSlNDcnlwdG9BbGdvcml0aG1EaWN0aW9uYXJ5OjpnZXRBbGdvcml0aG1JZGVudGlm
aWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1CiAgICAgU3RyaW5nIGFsZ29yaXRobU5hbWU7CiAK
ICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgYWxnb3JpdGhtTmFtZSA9IHZhbHVl
LnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICBhbGdvcml0aG1OYW1lID0gYXNTdHJpbmcodmFs
dWUpLT52YWx1ZShleGVjKTsKICAgICBlbHNlIGlmICh2YWx1ZS5pc09iamVjdCgpKSB7CiAgICAg
ICAgIGlmICh2YWx1ZS5nZXRPYmplY3QoKS0+aW5oZXJpdHMoU3RyaW5nT2JqZWN0OjppbmZvKCkp
KQogICAgICAgICAgICAgYWxnb3JpdGhtTmFtZSA9IGFzU3RyaW5nKGFzU3RyaW5nT2JqZWN0KHZh
bHVlKS0+aW50ZXJuYWxWYWx1ZSgpKS0+dmFsdWUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAppbmRleCA1M2M1ZDUwNTA1NDgwOWRlNDFk
M2E3ZWM0NjJjZTQwYWViOGEzNGRlLi5jN2VmYzUxM2JlMGIzMmY1ODU5OWUzNGVmYzhlYWE5N2I5
YWNlNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3Rv
bS5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25z
dHJ1Y3RKU0RhdGFDdWUoRXhlY1N0YXRlJiBleGVjKQogICAgIGlmIChleGVjLmFyZ3VtZW50Q291
bnQoKSA+IDMpIHsKICAgICAgICAgaWYgKCFleGVjLnVuY2hlY2tlZEFyZ3VtZW50KDMpLmlzU3Ry
aW5nKCkpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dBcmd1bWVudFR5cGVFcnJvcihleGVjLCBz
Y29wZSwgMywgInR5cGUiLCAiRGF0YUN1ZSIsIG51bGxwdHIsICJET01TdHJpbmciKTsKLSAgICAg
ICAgdHlwZSA9IGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMykuZ2V0U3RyaW5nKCZleGVjKTsKKyAg
ICAgICAgdHlwZSA9IGFzU3RyaW5nKGV4ZWMudW5jaGVja2VkQXJndW1lbnQoMykpLT52YWx1ZSgm
ZXhlYyk7CiAgICAgfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcAppbmRleCA0MmI0
MzJmZDYzNjQ0ZjA0ZmY2MDBmMmUyZDU0YmExNWY3ZmJjODBmLi5hYjkzYzVlODVhYjRlYWQ3ZWY1
NDE3OTQwOGEwNjBlMjUwZWM4ZmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwCkBAIC02Miw3
ICs2Miw3IEBAIHN0YXRpYyB2b2lkIHBvcHVsYXRlQ29udGV4dE1lbnVJdGVtcyhFeGVjU3RhdGUq
IGV4ZWMsIEpTQXJyYXkqIGFycmF5LCBDb250ZXh0TWVuCiAgICAgICAgIGlmICghdHlwZS5pc1N0
cmluZygpKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgU3RyaW5nIHR5cGVTdHJp
bmcgPSB0eXBlLnRvV1RGU3RyaW5nKGV4ZWMpOworICAgICAgICBTdHJpbmcgdHlwZVN0cmluZyA9
IGFzU3RyaW5nKHR5cGUpLT52YWx1ZShleGVjKTsKICAgICAgICAgaWYgKHR5cGVTdHJpbmcgPT0g
InNlcGFyYXRvciIpIHsKICAgICAgICAgICAgIENvbnRleHRNZW51SXRlbSBpdGVtKFNlcGFyYXRv
clR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uLCBTdHJpbmcoKSk7CiAgICAgICAgICAg
ICBtZW51LmFwcGVuZEl0ZW0oaXRlbSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDkwNTEwZThiN2MwYjdhYTQ0ZWMyMTc2Yjg3ODUw
MDZjNDFiNGEzYTAuLjdiODc0OTVlMGI3OWI0M2EzMjhmYThhYWE2MzVhZjkxMDcwNWEwZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCkBA
IC0zNTUsNyArMzU1LDcgQEAgc3RhdGljIElkZW50aWZpZXIganNWYWx1ZVRvTW9kdWxlS2V5KEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAodmFsdWUuaXNTeW1ib2woKSkK
ICAgICAgICAgcmV0dXJuIElkZW50aWZpZXI6OmZyb21VaWQoanNDYXN0PFN5bWJvbCo+KHZhbHVl
KS0+cHJpdmF0ZU5hbWUoKSk7CiAgICAgQVNTRVJUKHZhbHVlLmlzU3RyaW5nKCkpOwotICAgIHJl
dHVybiBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsIGpzQ2FzdDxKU1N0cmluZyo+KHZhbHVl
KS0+dmFsdWUoZXhlYykpOworICAgIHJldHVybiBhc1N0cmluZyh2YWx1ZSktPnRvSWRlbnRpZmll
cihleGVjKTsKIH0KIAogdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXR1cE1vZHVsZVNjcmlwdEhh
bmRsZXJzKENhY2hlZE1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyaXB0UmVmLCBKU0ludGVybmFsUHJv
bWlzZSYgcHJvbWlzZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDJiMTJi
MDFlMzhkMWU2ODAwNzUwYmNhYjUwNTNkNWU1OGRhMDk1OTguLmViZjA0OTQzMjlmZDNlNjA4Njll
ZTQ0NDQzNjI2NzBjYjc3ZDg5M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtNzQ5LDggKzc0OSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAodmFsdWUuaXNTdHJpbmcoKSkgewotICAgICAg
ICAgICAgU3RyaW5nIHN0ciA9IGFzU3RyaW5nKHZhbHVlKS0+dmFsdWUobV9leGVjKTsKLSAgICAg
ICAgICAgIGR1bXBTdHJpbmcoc3RyKTsKKyAgICAgICAgICAgIGR1bXBTdHJpbmcoYXNTdHJpbmco
dmFsdWUpLT52YWx1ZShtX2V4ZWMpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25QYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKaW5kZXggY2UzOTVmYmYwNmUxNzU5MjMxYmM5YmFh
YjA4NDI0Y2UyYzIzY2MyNy4uYzBiM2UzYmQyNGRjY2EzNTlmYzE3OWMwNzk5OTEyNmFlMDFmZTdl
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgc3RhdGljIHN0ZDo6
ZXJyb3JfY29kZSBnZXREb21haW5MaXN0KEV4ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNPYmplY3Qq
IGFycmF5T2JqZWMKICAgICAgICAgICAgIHJldHVybiBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpT
T05JbnZhbGlkRG9tYWluTGlzdDsKICAgICAgICAgCiAgICAgICAgIC8vIERvbWFpbnMgc2hvdWxk
IGJlIHB1bnljb2RlIGVuY29kZWQgbG93ZXIgY2FzZS4KLSAgICAgICAgY29uc3QgU3RyaW5nJiBk
b21haW4gPSBqc0Nhc3Q8SlNTdHJpbmcqPih2YWx1ZSktPnZhbHVlKCZleGVjKTsKKyAgICAgICAg
Y29uc3QgU3RyaW5nJiBkb21haW4gPSBhc1N0cmluZyh2YWx1ZSktPnZhbHVlKCZleGVjKTsKICAg
ICAgICAgaWYgKGRvbWFpbi5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gQ29udGVudEV4
dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZERvbWFpbkxpc3Q7CiAgICAgICAgIGlmICghY29udGFp
bnNPbmx5QVNDSUlXaXRoTm9VcHBlcmNhc2UoZG9tYWluKSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBz
dGF0aWMgc3RkOjplcnJvcl9jb2RlIGxvYWRUcmlnZ2VyKEV4ZWNTdGF0ZSYgZXhlYywgY29uc3Qg
SlNPYmplY3QmIHJ1bGVPYmplY3QsCiAgICAgaWYgKCF1cmxGaWx0ZXJPYmplY3QgfHwgc2NvcGUu
ZXhjZXB0aW9uKCkgfHwgIXVybEZpbHRlck9iamVjdC5pc1N0cmluZygpKQogICAgICAgICByZXR1
cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OSW52YWxpZFVSTEZpbHRlckluVHJpZ2dlcjsK
IAotICAgIFN0cmluZyB1cmxGaWx0ZXIgPSB1cmxGaWx0ZXJPYmplY3QudG9XVEZTdHJpbmcoJmV4
ZWMpOworICAgIFN0cmluZyB1cmxGaWx0ZXIgPSBhc1N0cmluZyh1cmxGaWx0ZXJPYmplY3QpLT52
YWx1ZSgmZXhlYyk7CiAgICAgaWYgKHVybEZpbHRlci5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBDb250ZW50RXh0ZW5zaW9uRXJyb3I6OkpTT05JbnZhbGlkVVJMRmlsdGVySW5UcmlnZ2VyOwog
CkBAIC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIHN0ZDo6ZXJyb3JfY29kZSBsb2FkQWN0aW9uKEV4
ZWNTdGF0ZSYgZXhlYywgY29uc3QgSlNPYmplY3QmIHJ1bGVPYmplY3QsIEEKICAgICBpZiAoIXR5
cGVPYmplY3QgfHwgc2NvcGUuZXhjZXB0aW9uKCkgfHwgIXR5cGVPYmplY3QuaXNTdHJpbmcoKSkK
ICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRBY3Rpb25U
eXBlOwogCi0gICAgU3RyaW5nIGFjdGlvblR5cGUgPSB0eXBlT2JqZWN0LnRvV1RGU3RyaW5nKCZl
eGVjKTsKKyAgICBTdHJpbmcgYWN0aW9uVHlwZSA9IGFzU3RyaW5nKHR5cGVPYmplY3QpLT52YWx1
ZSgmZXhlYyk7CiAKICAgICBpZiAoYWN0aW9uVHlwZSA9PSAiYmxvY2siKQogICAgICAgICBhY3Rp
b24gPSBBY3Rpb25UeXBlOjpCbG9ja0xvYWQ7CkBAIC0yMjAsMTMgKzIyMCwxMyBAQCBzdGF0aWMg
c3RkOjplcnJvcl9jb2RlIGxvYWRBY3Rpb24oRXhlY1N0YXRlJiBleGVjLCBjb25zdCBKU09iamVj
dCYgcnVsZU9iamVjdCwgQQogICAgICAgICBpZiAoIXNlbGVjdG9yIHx8IHNjb3BlLmV4Y2VwdGlv
bigpIHx8ICFzZWxlY3Rvci5pc1N0cmluZygpKQogICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRF
eHRlbnNpb25FcnJvcjo6SlNPTkludmFsaWRDU1NEaXNwbGF5Tm9uZUFjdGlvblR5cGU7CiAKLSAg
ICAgICAgU3RyaW5nIHMgPSBzZWxlY3Rvci50b1dURlN0cmluZygmZXhlYyk7Ci0gICAgICAgIGlm
ICghaXNWYWxpZFNlbGVjdG9yKHMpKSB7CisgICAgICAgIFN0cmluZyBzZWxlY3RvclN0cmluZyA9
IGFzU3RyaW5nKHNlbGVjdG9yKS0+dmFsdWUoJmV4ZWMpOworICAgICAgICBpZiAoIWlzVmFsaWRT
ZWxlY3RvcihzZWxlY3RvclN0cmluZykpIHsKICAgICAgICAgICAgIC8vIFNraXAgcnVsZXMgd2l0
aCBpbnZhbGlkIHNlbGVjdG9ycyB0byBiZSBiYWNrd2FyZHMtY29tcGF0aWJsZS4KICAgICAgICAg
ICAgIHZhbGlkU2VsZWN0b3IgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAg
ICAgIH0KLSAgICAgICAgYWN0aW9uID0gQWN0aW9uKEFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25l
U2VsZWN0b3IsIHMpOworICAgICAgICBhY3Rpb24gPSBBY3Rpb24oQWN0aW9uVHlwZTo6Q1NTRGlz
cGxheU5vbmVTZWxlY3Rvciwgc2VsZWN0b3JTdHJpbmcpOwogICAgIH0gZWxzZSBpZiAoYWN0aW9u
VHlwZSA9PSAibWFrZS1odHRwcyIpIHsKICAgICAgICAgYWN0aW9uID0gQWN0aW9uVHlwZTo6TWFr
ZUhUVFBTOwogICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRG
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggMjgxOTFhYWQ0
NzE3OWJjNzI5ZTZhZTRmMTE0MzhjZjdkZWQ5ZDE1MS4uYzlmYjczMzU5ODViOGJjN2JlNjg2N2I4
ZjcxY2YyMTMxNjI1NmEzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC01Nyw3ICs1Nyw3
IEBAIEV4Y2VwdGlvbk9yPFJlZjxGb250RmFjZT4+IEZvbnRGYWNlOjpjcmVhdGUoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLCBEb2N1bWVudCYgZG9jCiAgICAgICAgIHJldHVybiBzZXRGYW1pbHlSZXN1
bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCiAgICAgaWYgKHNvdXJjZS5pc1N0cmluZygpKSB7Ci0g
ICAgICAgIGF1dG8gdmFsdWUgPSBGb250RmFjZTo6cGFyc2VTdHJpbmcoc291cmNlLmdldFN0cmlu
Zygmc3RhdGUpLCBDU1NQcm9wZXJ0eVNyYyk7CisgICAgICAgIGF1dG8gdmFsdWUgPSBGb250RmFj
ZTo6cGFyc2VTdHJpbmcoYXNTdHJpbmcoc291cmNlKS0+dmFsdWUoJnN0YXRlKSwgQ1NTUHJvcGVy
dHlTcmMpOwogICAgICAgICBpZiAoIWlzPENTU1ZhbHVlTGlzdD4odmFsdWUuZ2V0KCkpKQogICAg
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNZTlRBWF9FUlIgfTsKICAgICAgICAgQ1NTRm9u
dEZhY2U6OmFwcGVuZFNvdXJjZXMocmVzdWx0LT5iYWNraW5nKCksIGRvd25jYXN0PENTU1ZhbHVl
TGlzdD4oKnZhbHVlKSwgJmRvY3VtZW50LCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0gYi9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJv
eHkubW0KaW5kZXggYjlhYjhhMGRkZGNjNzY0N2RhNzg2MzM5ODQyMzI3Y2E1YzdhOTdhOS4uMGUx
ZGU0OGExZTc1OGVlYmEzYWJkY2I2M2ExNTMxMjJiM2E4YTUxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eS5tbQpAQCAtMTMyMCw3ICsxMzIwLDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OmFkZFZhbHVlVG9BcnJheShOU011dGFibGVBcnJheSAqYXJyYXksIEV4ZWNT
dGEKIAogICAgIGlmICh2YWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIFthcnJheSBhZGRPYmpl
Y3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6U3RyaW5nVmFsdWVUeXBlXV07Ci0gICAgICAgIFth
cnJheSBhZGRPYmplY3Q6dmFsdWUudG9XVEZTdHJpbmcoZXhlYyldOworICAgICAgICBbYXJyYXkg
YWRkT2JqZWN0OmFzU3RyaW5nKHZhbHVlKS0+dmFsdWUoZXhlYyldOwogICAgIH0gZWxzZSBpZiAo
dmFsdWUuaXNOdW1iZXIoKSkgewogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OltOU051bWJlciBu
dW1iZXJXaXRoSW50OkRvdWJsZVZhbHVlVHlwZV1dOwogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0
OltOU051bWJlciBudW1iZXJXaXRoRG91YmxlOnZhbHVlLnRvTnVtYmVyKGV4ZWMpXV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggZTYzYjE0OWNhN2I3Mjk1ZjllMTU1NTQ4
ZDdmYTU3YmNlN2E0MWEwYS4uMTcwNjQxNjg3Yjc3NWMxOWU3ODQ5MzExZGVkOTc3NTM4MjRkNGM2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNzM2OSw3ICs3MzY5LDcg
QEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgSlNDOjpKU1ZhbHVlIGoKICAgICBpZiAoanNWYWx1ZS5pc0Jvb2xlYW4oKSkK
ICAgICAgICAgcmV0dXJuIFtOU0FwcGxlRXZlbnREZXNjcmlwdG9yIGRlc2NyaXB0b3JXaXRoQm9v
bGVhbjpqc1ZhbHVlLmFzQm9vbGVhbigpXTsKICAgICBpZiAoanNWYWx1ZS5pc1N0cmluZygpKQot
ICAgICAgICByZXR1cm4gW05TQXBwbGVFdmVudERlc2NyaXB0b3IgZGVzY3JpcHRvcldpdGhTdHJp
bmc6anNWYWx1ZS5nZXRTdHJpbmcoZXhlYyldOworICAgICAgICByZXR1cm4gW05TQXBwbGVFdmVu
dERlc2NyaXB0b3IgZGVzY3JpcHRvcldpdGhTdHJpbmc6YXNTdHJpbmcoanNWYWx1ZSktPnZhbHVl
KGV4ZWMpXTsKICAgICBpZiAoanNWYWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIGRvdWJsZSB2
YWx1ZSA9IGpzVmFsdWUuYXNOdW1iZXIoKTsKICAgICAgICAgaW50IGludFZhbHVlID0gdmFsdWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TlBSdW50aW1lT2JqZWN0TWFwLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCmluZGV4IDI1OTMyODljNDU1MjJiYjll
Mzg3ZjQ2YWQ0Mjk3NjcwYjQ5ZTkwNDYuLjA4YTIxOWYzYWFlNzExYmQ0NDM3MzgxNDczZjkxZTE5
ZTEzMDVmMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9O
ZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCkBAIC0xNjgsNyAr
MTY4LDcgQEAgdm9pZCBOUFJ1bnRpbWVPYmplY3RNYXA6OmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlh
bnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHUKICAgICB9CiAKICAgICBpZiAodmFsdWUu
aXNTdHJpbmcoKSkgewotICAgICAgICBOUFN0cmluZyBucFN0cmluZyA9IGNyZWF0ZU5QU3RyaW5n
KHZhbHVlLnRvV1RGU3RyaW5nKGV4ZWMpLnV0ZjgoKSk7CisgICAgICAgIE5QU3RyaW5nIG5wU3Ry
aW5nID0gY3JlYXRlTlBTdHJpbmcoYXNTdHJpbmcodmFsdWUpLT52YWx1ZShleGVjKS51dGY4KCkp
OwogICAgICAgICBTVFJJTkdOX1RPX05QVkFSSUFOVChucFN0cmluZy5VVEY4Q2hhcmFjdGVycywg
bnBTdHJpbmcuVVRGOExlbmd0aCwgdmFyaWFudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Cg==
</data>
<flag name="review"
          id="319612"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
      

    </bug>

</bugzilla>