<?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>195791</bug_id>
          
          <creation_ts>2019-03-14 20:36:28 -0700</creation_ts>
          <short_desc>[JSC] Retain PrivateName of Symbol before passing it to operations potentially incurring GC</short_desc>
          <delta_ts>2019-03-19 21:30:42 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1516874</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-14 20:36:28 -0700</bug_when>
    <thetext>[JSC] Do not pass Symbol::privateName() directly to PropertyName without ref-ing it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516875</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-14 20:38:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/48806130&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516879</commentid>
    <comment_count>2</comment_count>
      <attachid>364768</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-14 21:08:01 -0700</bug_when>
    <thetext>Created attachment 364768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516880</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-14 21:08:03 -0700</bug_when>
    <thetext>&lt;rdar://problem/48806130&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516886</commentid>
    <comment_count>4</comment_count>
      <attachid>364770</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-14 22:06:43 -0700</bug_when>
    <thetext>Created attachment 364770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516896</commentid>
    <comment_count>5</comment_count>
      <attachid>364770</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-14 22:36:12 -0700</bug_when>
    <thetext>Comment on attachment 364770
Patch

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

r=me with fixes.

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        PropertyName can be accidentally destroyed in the middle of putByVal operation. We should retain PrivateName

/middle of putByVal/middle of the putByVal/

&gt; Source/JavaScriptCore/ChangeLog:37
&gt; +        3. We audit similar functions `toPropertyKey(exec)` and `toIdentifier(exec)` necessary exception checks.

/necessary exception checks/for needed but missing exception checks/.

&gt; Source/JavaScriptCore/runtime/JSONObject.cpp:250
&gt; +                    auto propertyName = name.toString(exec)-&gt;toIdentifier(exec);

name.toString() can also throw an exception because it can allocate a string from a name that is a number.  So, you&apos;ll need another exception check before the toIdentifier() conversion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516898</commentid>
    <comment_count>6</comment_count>
      <attachid>364770</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-14 22:38:16 -0700</bug_when>
    <thetext>Comment on attachment 364770
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:19
&gt;&gt; +        PropertyName can be accidentally destroyed in the middle of putByVal operation. We should retain PrivateName
&gt; 
&gt; /middle of putByVal/middle of the putByVal/

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:37
&gt;&gt; +        3. We audit similar functions `toPropertyKey(exec)` and `toIdentifier(exec)` necessary exception checks.
&gt; 
&gt; /necessary exception checks/for needed but missing exception checks/.

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSONObject.cpp:250
&gt;&gt; +                    auto propertyName = name.toString(exec)-&gt;toIdentifier(exec);
&gt; 
&gt; name.toString() can also throw an exception because it can allocate a string from a name that is a number.  So, you&apos;ll need another exception check before the toIdentifier() conversion.

Nice catch. Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516904</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-14 22:56:32 -0700</bug_when>
    <thetext>Committed r242991: &lt;https://trac.webkit.org/changeset/242991&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1516972</commentid>
    <comment_count>8</comment_count>
      <attachid>364770</attachid>
    <who name="Robin Morisset">rmorisset</who>
    <bug_when>2019-03-15 08:16:01 -0700</bug_when>
    <thetext>Comment on attachment 364770
Patch

LGTM too. Thanks a lot for solving this bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1517006</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2019-03-15 10:14:56 -0700</bug_when>
    <thetext>Added a missing exception check in r242999: &lt;http://trac.webkit.org/r242999&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1518748</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-03-19 21:30:42 -0700</bug_when>
    <thetext>Committed r243191: &lt;https://trac.webkit.org/changeset/243191&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364768</attachid>
            <date>2019-03-14 21:08:01 -0700</date>
            <delta_ts>2019-03-14 22:06:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195791-20190314210800.patch</filename>
            <type>text/plain</type>
            <size>23922</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyOTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NGQ1NjU5NmQyNDhjNmEzNmRhMmE0OTUxMTMyMWQ4NjRjYTkzN2YyLi40NTQwMjdhYzczNTk5NzA3
NmI0NmVhYzQ3NWJmNWMxYmYzMWI4MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxOS0wMy0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJldGFpbiBQcml2YXRlTmFtZSBvZiBTeW1ib2wgYmVmb3JlIHBh
c3NpbmcgaXQgdG8gb3BlcmF0aW9ucyBwb3RlbnRpYWxseSBpbmN1cnJpbmcgR0MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc5MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDg4MDYxMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlOgorCisgICAg
ICAgICAgICB2b2lkIHB1dEJ5VmFsKEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgLi4uKTsKKworICAgICAgICAgICAgcHV0QnlWYWwob2JqZWN0LCBzeW1ib2wtPnByaXZhdGVO
YW1lKCksIC4uLik7CisKKyAgICAgICAgUHJvcGVydHlOYW1lIGRvZXMgbm90IHJldGFpbiB0aGUg
cGFzc2VkIFVuaXF1ZWRTdHJpbmdJbXBsKi4gSXQganVzdCBob2xkcyB0aGUgcG9pbnRlciB0byBV
bmlxdWVkU3RyaW5nSW1wbCouCisgICAgICAgIEl0IG1lYW5zIHRoYXQgc2luY2UgYFN5bWJvbDo6
cHJpdmF0ZU5hbWUoKWAgcmV0dXJucyBgY29uc3QgUHJpdmF0ZU5hbWUmYCBpbnN0ZWFkIG9mIGBQ
cml2YXRlTmFtZWAsIHB1dEJ5VmFsCisgICAgICAgIGFuZCBpdHMgY2FsbGVyIGRvZXMgbm90IHJl
dGFpbiBVbmlxdWVkU3RyaW5nSW1wbCogaGVsZCBpbiBQcm9wZXJ0eU5hbWUuIFRoZSBwcm9ibGVt
IGhhcHBlbnMgd2hlbiB0aGUgcHV0QnlWYWwKKyAgICAgICAgaW5jdXJzIEdDLCBhbmQgd2hlbiB0
aGUgYHN5bWJvbGAgaXMgbWlzc2luZyBpbiB0aGUgY29uc2VydmF0aXZlIEdDIHNjYW4uIFRoZSB1
bmRlcmx5aW5nIFVuaXF1ZWRTdHJpbmdJbXBsKiBvZgorICAgICAgICBQcm9wZXJ0eU5hbWUgY2Fu
IGJlIGFjY2lkZW50YWxseSBkZXN0cm95ZWQgaW4gdGhlIG1pZGRsZSBvZiBwdXRCeVZhbCBvcGVy
YXRpb24uIFdlIHNob3VsZCByZXRhaW4gUHJpdmF0ZU5hbWUKKyAgICAgICAgYmVmb3JlIHBhc3Np
bmcgaXQgdG8gb3BlcmF0aW9ucyB3aGljaCB0YWtlcyBpdCBhcyBQcm9wZXJ0eU5hbWUuCisKKyAg
ICAgICAgMS4gV2UgdXNlIHRoZSBjb2RlIHBhdHRlcm4gbGlrZSB0aGlzLgorCisgICAgICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IHN5bWJvbC0+cHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAg
IHNvbWVPcGVyYXRpb24oLi4uLCBwcm9wZXJ0eU5hbWUpOworCisgICAgICAgIFRoaXMgcGF0dGVy
biBpcyB3ZWxsIGFsaWduZWQgdG8gZXhpc3RpbmcgYEpTVmFsdWU6OnRvUHJvcGVydHlLZXkoZXhl
YylgIGFuZCBgSlNTdHJpbmc6OnRvSWRlbnRpZmllcihleGVjKWAgY29kZSBwYXR0ZXJucy4KKwor
ICAgICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSB2YWx1ZS50b1Byb3BlcnR5S2V5KGV4ZWMp
OworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAg
ICAgIHNvbWVPcGVyYXRpb24oLi4uLCBwcm9wZXJ0eU5hbWUpOworCisgICAgICAgIDIuIFdlIGNo
YW5nZSBgU3ltYm9sOjpwcml2YXRlTmFtZSgpYCB0byByZXR1cm5pbmcgYFByaXZhdGVOYW1lYCBp
bnN0ZWFkIG9mIGBjb25zdCBQcml2YXRlTmFtZSZgIHRvIGF2b2lkCisgICAgICAgICAgIHBvdGVu
dGlhbCBkYW5nZXJvdXMgdXNlIGNhc2VzLiBUaGlzIGlzIE9LIGJlY2F1c2UgdGhlIGNvZGUgdXNp
bmcgYFN5bWJvbDo6cHJpdmF0ZU5hbWUoKWAgaXMgbm90IGEgY3JpdGljYWwgcGF0aCwKKyAgICAg
ICAgICAgYW5kIHRoZXkgdHlwaWNhbGx5IG5lZWQgdG8gcmV0YWluIFByaXZhdGVOYW1lLgorCisg
ICAgICAgIDMuIFdlIGF1ZGl0IHNpbWlsYXIgZnVuY3Rpb25zIGB0b1Byb3BlcnR5S2V5KGV4ZWMp
YCBhbmQgYHRvSWRlbnRpZmllcihleGVjKWAgbmVjZXNzYXJ5IGV4Y2VwdGlvbiBjaGVja3MuCisg
ICAgICAgICAgIEJUVywgdGhlc2UgZnVuY3Rpb25zIGFyZSBzYWZlIHRvIHRoZSBwcm9ibGVtIGZp
eGVkIGluIHRoaXMgcGF0Y2ggc2luY2UgdGhleSByZXR1cm4gYElkZW50aWZpZXJgIGluc3RlYWQK
KyAgICAgICAgICAgb2YgYGNvbnN0IElkZW50aWZpZXImYC4KKworICAgICAgICBNYXJrIGFuZCBS
b2JpbiBpbnZlc3RpZ2F0ZWQgYW5kIG9mZmVyZWQgaW1wb3J0YW50IGRhdGEgdG8gdW5kZXJzdGFu
ZCB3aGF0IHdlbnQgd3JvbmcuIEFuZCBmaWd1cmVkIG91dCB0aGUgcmVhc29uIGJlaGluZAorICAg
ICAgICB0aGUgbXlzdGVyaW91cyBiZWhhdmlvciBzaG93biBpbiB0aGUgZGF0YSwgYW5kIG5vdywg
d2UgY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlIHJpZ2h0IGZpeCBmb3IgdGhpcyBidWcuCisKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAoSlNDOjp0cnlHZXRCeVZhbE9wdGltaXplKToKKyAgICAgICAgKiBy
dW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpzZXRGdW5j
dGlvbk5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAg
ICAoSlNDOjpwcmludGFibGVNb2R1bGVLZXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6CisgICAgICAg
ICogcnVudGltZS9TeW1ib2wuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2w6OmRlc2NyaXB0aXZl
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9TeW1ib2wuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0b3JLZXlGb3IpOgor
ICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdl
dEdldHRlclNldHRlcik6CisKIDIwMTktMDMtMTQgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBh
cHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogcmVnZXhwLT5pc1ZhbGlkKCkg
b3IgQVNTRVJUSU9OIEZBSUxFRDogIWlzQ29tcGlsYXRpb25UaHJlYWQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDUyMTllZjdkMzY5YWFjN2ExYjdjY2MyMGQ3NGU0ZDZmYWUxYjgwYzMuLjc3NDI1ZmZiZWE4NGY3
ZTY4MzQzNmI5YzBiN2JmZWU5NWM2NWRhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOS0wMy0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtKU0NdIFJldGFpbiBQcml2YXRlTmFtZSBvZiBTeW1ib2wgYmVmb3JlIHBhc3NpbmcgaXQgdG8g
b3BlcmF0aW9ucyBwb3RlbnRpYWxseSBpbmN1cnJpbmcgR0MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc5MQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDg4MDYxMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMpOgorCiAyMDE5
LTAzLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0b3Jp
bmcgYSBOb2RlIGluIFJlZi9SZWZQdHIgaW5zaWRlIGl0cyBkZXN0cnVjdG9yIHJlc3VsdHMgaW4g
ZG91YmxlIGRlbGV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKaW5kZXggYTVkMTg0ODg0ZDRjYzRkMzE1ODdjMThiMTcyN2UwZjgwN2IzZjgxZS4uN2ZiMjQ2
ZThiMWU3N2ZlMDI3MmQ5ODIxNjlkODA0M2QxZWZiMDI5MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC03NzAsNyArNzcwLDggQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN5bWJvbChFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ2UKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZ2V0QnlWYWxPYmplY3QoZXhlYywgdm0sIGFzT2JqZWN0KGJhc2UpLCBhc1N5bWJvbChzeW1i
b2wpLT5wcml2YXRlTmFtZSgpKSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N5bWJvbChz
eW1ib2wpLT5wcml2YXRlTmFtZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0QnlW
YWxPYmplY3QoZXhlYywgdm0sIGFzT2JqZWN0KGJhc2UpLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9w
ZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpAQCAtODI2LDcgKzgyNyw4IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xTdHJpY3QoRXhlY1N0
YXRlKiBleGVjLCBKU0NlbGwqIGNlCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICBwdXRCeVZhbENlbGxJ
bnRlcm5hbDx0cnVlLCBmYWxzZT4oZXhlYywgdm0sIGNlbGwsIGFzU3ltYm9sKHN5bWJvbCktPnBy
aXZhdGVOYW1lKCksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKKyAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IGFzU3ltYm9sKHN5bWJvbCktPnByaXZhdGVOYW1lKCk7CisgICAgcHV0QnlW
YWxDZWxsSW50ZXJuYWw8dHJ1ZSwgZmFsc2U+KGV4ZWMsIHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEpT
Q2VsbCogY2VsbCwgSlNDZWxsKiBzeW1ib2wsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
QEAgLTgzNCw3ICs4MzYsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxD
ZWxsU3ltYm9sTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKgogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OwogCi0gICAgcHV0QnlWYWxDZWxsSW50ZXJuYWw8ZmFsc2UsIGZhbHNlPihleGVjLCB2bSwgY2Vs
bCwgYXNTeW1ib2woc3ltYm9sKS0+cHJpdmF0ZU5hbWUoKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSkpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gYXNTeW1ib2woc3ltYm9sKS0+cHJp
dmF0ZU5hbWUoKTsKKyAgICBwdXRCeVZhbENlbGxJbnRlcm5hbDxmYWxzZSwgZmFsc2U+KGV4ZWMs
IHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsK
IH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3Vu
ZHNTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBpbnQzMl90IGluZGV4
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkBAIC05ODYsNyArOTg5LDggQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbFN0cmljdChFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2UKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIHB1dEJ5VmFsQ2VsbEludGVy
bmFsPHRydWUsIHRydWU+KGV4ZWMsIHZtLCBjZWxsLCBhc1N5bWJvbChzeW1ib2wpLT5wcml2YXRl
TmFtZSgpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CisgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBhc1N5bWJvbChzeW1ib2wpLT5wcml2YXRlTmFtZSgpOworICAgIHB1dEJ5VmFsQ2Vs
bEludGVybmFsPHRydWUsIHRydWU+KGV4ZWMsIHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEpT
Q2VsbCogY2VsbCwgSlNDZWxsKiBzeW1ib2wsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
QEAgLTk5NCw3ICs5OTgsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3RDZWxsU3ltYm9sTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSgogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OwogCi0gICAgcHV0QnlWYWxDZWxsSW50ZXJuYWw8ZmFsc2UsIHRydWU+KGV4ZWMsIHZtLCBjZWxs
LCBhc1N5bWJvbChzeW1ib2wpLT5wcml2YXRlTmFtZSgpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N5bWJvbChzeW1ib2wpLT5wcml2
YXRlTmFtZSgpOworICAgIHB1dEJ5VmFsQ2VsbEludGVybmFsPGZhbHNlLCB0cnVlPihleGVjLCB2
bSwgY2VsbCwgcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9
CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5
Qm91bmRzU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgaW50MzJfdCBp
bmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpAQCAtMjA1NCwxMCArMjA1OSwxMiBA
QCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkVuc3VyZUFycmF5U3RvcmFnZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEpTQ2VsbCogcHJvcGVy
dHlOYW1lKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNHZW5lcmlj
UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVl
LCBKU0NlbGwqIHByb3BlcnR5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwogICAgIGlmIChiYXNlVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFs
c2UpKTsKQEAgLTIwNjUsNyArMjA3Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlCiAgICAg
SlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKCFiYXNl
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYmFzZS0+aGFzUHJvcGVydHlHZW5lcmljKGV4ZWMs
IGFzU3RyaW5nKHByb3BlcnR5TmFtZSktPnRvSWRlbnRpZmllcihleGVjKSwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOworICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gYXNTdHJpbmcocHJvcGVydHkpLT50b0lkZW50aWZpZXIoZXhlYyk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYmFzZS0+aGFzUHJvcGVydHlHZW5lcmljKGV4
ZWMsIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93
blByb3BlcnR5KSkpKTsKIH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5QnlJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2VDZWxsLCBpbnQz
Ml90IHN1YnNjcmlwdCwgaW50MzJfdCBpbnRlcm5hbE1ldGhvZFR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBhNDk2Y2U1YWRmMjNkMzU2NWE4
NWU4ZjM4OGRkOGI4NTFhYjllMjAzLi44MjYxYTY5YzdkODNmMjg2NGQ2N2NiY2NlNzY2NGI5OWI0
Y2UzMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
QEAgLTcyMCw2ICs3MjAsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeVB1dEJ5VmFs
T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZQogICAgIE9wdGltaXph
dGlvblJlc3VsdCBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9w
dGltaXplZDsKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYm
IGlzQ29weU9uV3JpdGUoYmFzZVZhbHVlLmdldE9iamVjdCgpLT5pbmRleGluZ01vZGUoKSkpCiAg
ICAgICAgIHJldHVybiBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKQEAgLTc1MCw2ICs3NTEs
NyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeVB1dEJ5VmFsT3B0aW1pemUoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZQogCiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVj
dCgpICYmIGlzU3RyaW5nT3JTeW1ib2woc3Vic2NyaXB0KSkgewogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVV
cCk7CiAgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2woKSB8fCAhcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBBU1NFUlQoZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSk7
CiAgICAgICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJvdXRpbmUpOwpAQCAtNzkwLDE2
ICs3OTIsMTkgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmMKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKICAgICBKU1ZhbHVl
IHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgaWYgKHRyeVB1
dEJ5VmFsT3B0aW1pemUoZXhlYywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIGJ5VmFsSW5mbywgUmV0
dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpKSA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6
OkdpdmVVcCkgeworICAgIE9wdGltaXphdGlvblJlc3VsdCByZXN1bHQgPSB0cnlQdXRCeVZhbE9w
dGltaXplKGV4ZWMsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCBieVZhbEluZm8sIFJldHVybkFkZHJl
c3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKyAgICBpZiAocmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVw
KSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZh
bEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJu
QWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1
dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQotICAgIHB1dEJ5VmFsKGV4ZWMsIGJhc2VWYWx1ZSwgc3Vi
c2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHB1dEJ5VmFsKGV4ZWMsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKSk7
CiB9CiAKIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIEpTVmFsdWUgc3Vic2NyaXB0LCBC
eVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAt
ODA4LDYgKzgxMyw3IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlW
YWxPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvCiAgICAgT3B0aW1pemF0aW9u
UmVzdWx0IG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6Tm90T3B0aW1p
emVkOwogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoc3Vic2NyaXB0LmlzSW50MzIoKSkgewogICAg
ICAgICBBU1NFUlQoZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSk7CkBAIC04MzIsNiArODM4LDcgQEAg
c3RhdGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlEaXJlY3RQdXRCeVZhbE9wdGltaXplKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIG8KICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9
IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOwogICAgIH0gZWxzZSBpZiAoaXNTdHJpbmdPclN5
bWJvbChzdWJzY3JpcHQpKSB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlOYW1l
ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKTsKICAgICAgICAgaWYgKHN1
YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAg
ICAgICAgIEFTU0VSVChleGVjLT5ieXRlY29kZU9mZnNldCgpKTsKICAgICAgICAgICAgIEFTU0VS
VCghYnlWYWxJbmZvLT5zdHViUm91dGluZSk7CkBAIC04NzIsMTkgKzg3OSwyMiBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuaXNP
YmplY3QoKSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0g
ICAgaWYgKHRyeURpcmVjdFB1dEJ5VmFsT3B0aW1pemUoZXhlYywgb2JqZWN0LCBzdWJzY3JpcHQs
IGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpKSA9PSBPcHRp
bWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgeworICAgIE9wdGltaXphdGlvblJlc3VsdCByZXN1bHQg
PSB0cnlEaXJlY3RQdXRCeVZhbE9wdGltaXplKGV4ZWMsIG9iamVjdCwgc3Vic2NyaXB0LCBieVZh
bEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAocmVzdWx0ID09IE9wdGltaXph
dGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGlt
aXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIGN0
aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQURE
UkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogCi0gICAgZGly
ZWN0UHV0QnlWYWwoZXhlYywgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGlyZWN0UHV0QnlWYWwoZXhlYywgb2JqZWN0
LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCkBAIC0xODczLDYg
KzE4ODMsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeUdldEJ5VmFsT3B0aW1pemUo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZQogICAgIE9wdGltaXphdGlvblJlc3Vs
dCBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXplZDsK
IAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIHN1YnNjcmlw
dC5pc0ludDMyKCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWx1ZSk7CkBAIC0xOTAzLDYgKzE5MTQsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRy
eUdldEJ5VmFsT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZQogCiAg
ICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIGlzU3RyaW5nT3JTeW1ib2woc3Vic2NyaXB0
KSkgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50
b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBP
cHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCk7CiAgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1i
b2woKSB8fCAhcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
ZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+
c3R1YlJvdXRpbmUpOwpAQCAtMTk1NiwxNyArMTk2OCwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSgogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCYXNlKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
U3Vic2NyaXB0KTsKICAgICBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MgPSBSZXR1cm5B
ZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyk7Ci0gICAgaWYgKHRyeUdldEJ5VmFsT3B0aW1p
emUoZXhlYywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcykg
PT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKKyAgICBPcHRpbWl6YXRpb25SZXN1bHQg
cmVzdWx0ID0gdHJ5R2V0QnlWYWxPcHRpbWl6ZShleGVjLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwg
YnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgIGlmIChyZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsK
ICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5m
by0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRy
ZXNzKHJldHVybkFkZHJlc3MsIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnZXRCeVZhbChleGVjLCBiYXNlVmFsdWUsIHN1YnNj
cmlwdCwgYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2V0QnlWYWwoZXhlYywgYmFzZVZhbHVlLCBzdWJzY3Jp
cHQsIGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcykpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRT
dWJzY3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4MzEwMGM5N2UyMDQ3YzYxZjk3NWI0ZGExYTM1
OWI0MDA2ZWExY2Q3Li5mNTkyYTFhNDE3ODNmMWY5M2E5ZWIyNDAwODM5ODUxY2UxZTg3MGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNjY5
LDcgKzY2OSw4IEBAIHZvaWQgSlNGdW5jdGlvbjo6c2V0RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBBU1NFUlQoanNFeGVjdXRhYmxlKCktPmVjbWFOYW1l
KCkuaXNOdWxsKCkpOwogICAgIFN0cmluZyBuYW1lOwogICAgIGlmICh2YWx1ZS5pc1N5bWJvbCgp
KSB7Ci0gICAgICAgIFN5bWJvbEltcGwmIHVpZCA9IGFzU3ltYm9sKHZhbHVlKS0+cHJpdmF0ZU5h
bWUoKS51aWQoKTsKKyAgICAgICAgUHJpdmF0ZU5hbWUgcHJpdmF0ZU5hbWUgPSBhc1N5bWJvbCh2
YWx1ZSktPnByaXZhdGVOYW1lKCk7CisgICAgICAgIFN5bWJvbEltcGwmIHVpZCA9IHByaXZhdGVO
YW1lLnVpZCgpOwogICAgICAgICBpZiAodWlkLmlzTnVsbFN5bWJvbCgpKQogICAgICAgICAgICAg
bmFtZSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAppbmRleCA5ODJiYWE3YTU4ZjQ3ZmRj
ZTBiZTI3MTg0YWZmMGRiZDAzMTc1MTYzLi45ZDFjMjIxMDY2NzdkNmIyYWFjZDY5MDU1OWUwZDU0
OTI3MTg0ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuY3BwCkBAIC0xMTYsOCArMTE2LDEyIEBAIHZvaWQgSlNNb2R1bGVMb2FkZXI6OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
CiBzdGF0aWMgU3RyaW5nIHByaW50YWJsZU1vZHVsZUtleShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUga2V5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKGtleS5pc1N0cmlu
ZygpIHx8IGtleS5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4ga2V5LnRvUHJvcGVydHlLZXko
ZXhlYykuaW1wbCgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBpZiAoa2V5LmlzU3RyaW5nKCkgfHwga2V5LmlzU3ltYm9sKCkpIHsKKyAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBrZXkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICAgICAgc2NvcGUu
YXNzZXJ0Tm9FeGNlcHRpb24oKTsgLy8gVGhpcyBpcyBPSyBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlz
IGp1c3QgZm9yIGRlYnVnZ2luZyBwdXJwb3NlLgorICAgICAgICByZXR1cm4gcHJvcGVydHlOYW1l
LmltcGwoKTsKKyAgICB9CiAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRp
Zmllci5pbXBsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9i
amVjdC5jcHAKaW5kZXggNjU0NTI2MmU5NWMzZDNiMDM2MzFiMjA5N2ZmNWNjNWUzYWVlZTFmNC4u
ZGM1Y2NhZDVkYzYyMDY0NjNlYWU2OGQ2OWFjOTBkOWVhYjI5NDhjOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBT
dHJpbmdpZmllcjo6U3RyaW5naWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHJlcGxhY2Vy
LCBKU1ZhbHVlIHNwYWNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFuYW1lLmlzTnVtYmVyKCkgJiYgIW5hbWUu
aXNTdHJpbmcoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgICAgICBtX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzLmFkZChuYW1lLnRvU3RyaW5n
KGV4ZWMpLT50b0lkZW50aWZpZXIoZXhlYykpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IG5hbWUudG9TdHJpbmcoZXhlYyktPnRvSWRlbnRpZmllcihleGVjKTsKICAg
ICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9hcnJheVJlcGxhY2VyUHJvcGVydHlOYW1lcy5hZGQoV1RGTW92ZShwcm9w
ZXJ0eU5hbWUpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCmluZGV4IGQ4M2UzMWQxMDI5
YzNlYTI5OTMxYzFkZTIzYjAwYmM0ZWNmNmMxMDkuLmNhZjQ1ZTVmNzUwMDY0NWQzOWEyNDJhMWY2
MDA2MzIyY2NlNzM0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNw
cApAQCAtMTAwLDEyICsxMDAsMTIgQEAgdm9pZCBTeW1ib2w6OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQogCiBTdHJpbmcgU3ltYm9sOjpkZXNjcmlwdGl2ZVN0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1ha2VTdHJpbmcoIlN5bWJvbCgiLCBTdHJpbmcocHJpdmF0ZU5hbWUoKS51aWQoKSksICcp
Jyk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlN5bWJvbCgiLCBTdHJpbmcobV9wcml2YXRlTmFt
ZS51aWQoKSksICcpJyk7CiB9CiAKIFN0cmluZyBTeW1ib2w6OmRlc2NyaXB0aW9uKCkgY29uc3QK
IHsKLSAgICBhdXRvJiB1aWQgPSBwcml2YXRlTmFtZSgpLnVpZCgpOworICAgIGF1dG8mIHVpZCA9
IG1fcHJpdmF0ZU5hbWUudWlkKCk7CiAgICAgcmV0dXJuIHVpZC5pc051bGxTeW1ib2woKSA/IFN0
cmluZygpIDogdWlkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2wuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCmlu
ZGV4IDUyYzkxNjIxZjViYTJkYWM2NTI2ZDVhNTM4NjM5ZDRhMjY0ODBkNzAuLjFmMTc4NmVjNmNj
MzQyNDEzZTBhOTg0MDJjMGExMDVlM2Y3MDYwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFN5bWJvbCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU1N0cmlu
ZyogZGVzY3JpcHRpb24pOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTeW1ib2wqIGNy
ZWF0ZShWTSYsIFN5bWJvbEltcGwmIHVpZCk7CiAKLSAgICBjb25zdCBQcml2YXRlTmFtZSYgcHJp
dmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lOyB9CisgICAgUHJpdmF0ZU5h
bWUgcHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lOyB9CiAgICAgU3Ry
aW5nIGRlc2NyaXB0aXZlU3RyaW5nKCkgY29uc3Q7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENv
bnN0cnVjdG9yLmNwcAppbmRleCAwZTBiY2I4MTU4ZDFiOGMyODRhNzRiNmVmZGI3ZmUzMjJkOTQ2
YjI3Li40ODNmMDg1MGMxZTE2Y2M2Yjg3MWNkMDU0YmIzYmU3NzVkNTkyM2VjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBA
IC0xMDksNyArMTA5LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25z
dHJ1Y3RvcktleUZvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFzeW1ib2xWYWx1ZS5pc1N5
bWJvbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBTeW1ib2xLZXlGb3JUeXBlRXJyb3IpKTsKIAotICAgIFN5bWJvbEltcGwmIHVp
ZCA9IGFzU3ltYm9sKHN5bWJvbFZhbHVlKS0+cHJpdmF0ZU5hbWUoKS51aWQoKTsKKyAgICBQcml2
YXRlTmFtZSBwcml2YXRlTmFtZSA9IGFzU3ltYm9sKHN5bWJvbFZhbHVlKS0+cHJpdmF0ZU5hbWUo
KTsKKyAgICBTeW1ib2xJbXBsJiB1aWQgPSBwcml2YXRlTmFtZS51aWQoKTsKICAgICBpZiAoIXVp
ZC5zeW1ib2xSZWdpc3RyeSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
aW5kZXggNTU2MGU1YWJhMjk4OTBkOTI2Yzc0NzhkOTZkYmNmM2QzMjlhZTMyOC4uODI2ZGEwMTc3
ZmU5ODJjOWM1NDRhYzg3Zjg0ZDdiZGM0NmE3OWUyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjEwMyw2ICsyMTAzLDkgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HbG9iYWxPYmplY3RGb3JPYmplY3QoRXhl
Y1N0YXRlKiBleGUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25HZXRHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdmFsdWUuaXNPYmpl
Y3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTIxMTEsOCArMjExNCwxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkdldEdldHRlclNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFwcm9wZXJ0
eS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N0cmluZyhwcm9wZXJ0eSktPnRvSWRl
bnRpZmllcihleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCiAg
ICAgUHJvcGVydHlTbG90IHNsb3QodmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOwotICAgIHZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBhc1N0cmlu
Zyhwcm9wZXJ0eSktPnRvSWRlbnRpZmllcihleGVjKSwgc2xvdCk7CisgICAgdmFsdWUuZ2V0UHJv
cGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBKU1ZhbHVlIHJlc3Vs
dDsKICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA3ODRhZTU0MDYzNWEwY2Zi
NDJiYTAyNTcxNWY1MjAzNTdkMGM4ZWY3Li5jZDgzNzRkNzU1ZjgzMTA5M2UyZTM3NTc3ZmMwMmIy
Mjg0YzlhOTM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcApAQCAtMjc5LDcgKzI3OSwxMCBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNl
dHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcgog
ICAgIFJlZlB0cjxMb2FkYWJsZU1vZHVsZVNjcmlwdD4gbW9kdWxlU2NyaXB0KCZtb2R1bGVTY3Jp
cHRSZWYpOwogCiAgICAgYXV0byYgZnVsZmlsbEhhbmRsZXIgPSAqSlNOYXRpdmVTdGRGdW5jdGlv
bjo6Y3JlYXRlKHN0YXRlLnZtKCksIHByb3h5LndpbmRvdygpLCAxLCBTdHJpbmcoKSwgW21vZHVs
ZVNjcmlwdF0oRXhlY1N0YXRlKiBleGVjKSB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CisgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAgICAg
SWRlbnRpZmllciBtb2R1bGVLZXkgPSBqc1ZhbHVlVG9Nb2R1bGVLZXkoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMCkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAg
ICAgICBtb2R1bGVTY3JpcHQtPm5vdGlmeUxvYWRDb21wbGV0ZWQoKm1vZHVsZUtleS5pbXBsKCkp
OwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0p
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRl
eCBlY2QzZGEyMjg1M2I4NTIzMmNhN2E2OGNlMTI4MjY0ZjkyOWJkNDBjLi42OGNiMDA0MTg3YWU5
ZjdmNDEzZTRkY2VmOWFlOWNkZDdmZGE2ZWQwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxv
ZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTAzLTE0ICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gUmV0YWlu
IFByaXZhdGVOYW1lIG9mIFN5bWJvbCBiZWZvcmUgcGFzc2luZyBpdCB0byBvcGVyYXRpb25zIHBv
dGVudGlhbGx5IGluY3VycmluZyBHQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTk1NzkxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODgwNjEzMD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVz
cy9zeW1ib2wtaXMtZGVzdHJ1Y3RlZC1iZWZvcmUtcmVmaW5nLXVuZGVybHlpbmctc3ltYm9sLWlt
cGwuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKwogMjAxOS0wMy0xMyAgTWljaGFlbCBTYWJv
ZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBBU1NFUlRJT04gRkFJTEVEOiByZWdl
eHAtPmlzVmFsaWQoKSBvciBBU1NFUlRJT04gRkFJTEVEOiAhaXNDb21waWxhdGlvblRocmVhZCgp
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zeW1ib2wtaXMtZGVzdHJ1Y3RlZC1iZWZvcmUt
cmVmaW5nLXVuZGVybHlpbmctc3ltYm9sLWltcGwuanMgYi9KU1Rlc3RzL3N0cmVzcy9zeW1ib2wt
aXMtZGVzdHJ1Y3RlZC1iZWZvcmUtcmVmaW5nLXVuZGVybHlpbmctc3ltYm9sLWltcGwuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNmU1M2U1NmY4MjNmMDE5YmRjNGNkNzc4OWM5YWNhNDkyOWQzZTJhMQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3N5bWJvbC1pcy1kZXN0cnVjdGVkLWJlZm9yZS1y
ZWZpbmctdW5kZXJseWluZy1zeW1ib2wtaW1wbC5qcwpAQCAtMCwwICsxLDEyIEBACisvL0Agc2xv
dyEKKy8vQCBydW5EZWZhdWx0KCItLWNvbGxlY3RDb250aW51b3VzbHk9MSIsICItLXNsb3dQYXRo
QWxsb2NzQmV0d2VlbkdDcz0xMDAiKQorCitmdW5jdGlvbiBmb28oYSkgeworICAgIGFbU3ltYm9s
KCldID0gMTsKK30KK25vSW5saW5lKGZvbyk7CisKK2ZvciAobGV0IGkgPSAwOyBpIDwgM2U3OyBp
KyspIHsKKyAgICBsZXQgYSA9IHt9OworICAgIGZvbyhhKTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>364770</attachid>
            <date>2019-03-14 22:06:43 -0700</date>
            <delta_ts>2019-03-14 22:36:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-195791-20190314220643.patch</filename>
            <type>text/plain</type>
            <size>24114</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQyOTY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
NGQ1NjU5NmQyNDhjNmEzNmRhMmE0OTUxMTMyMWQ4NjRjYTkzN2YyLi40NTQwMjdhYzczNTk5NzA3
NmI0NmVhYzQ3NWJmNWMxYmYzMWI4MjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NCBAQAorMjAxOS0wMy0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIFJldGFpbiBQcml2YXRlTmFtZSBvZiBTeW1ib2wgYmVmb3JlIHBh
c3NpbmcgaXQgdG8gb3BlcmF0aW9ucyBwb3RlbnRpYWxseSBpbmN1cnJpbmcgR0MKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc5MQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNDg4MDYxMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlOgorCisgICAg
ICAgICAgICB2b2lkIHB1dEJ5VmFsKEpTT2JqZWN0KiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgLi4uKTsKKworICAgICAgICAgICAgcHV0QnlWYWwob2JqZWN0LCBzeW1ib2wtPnByaXZhdGVO
YW1lKCksIC4uLik7CisKKyAgICAgICAgUHJvcGVydHlOYW1lIGRvZXMgbm90IHJldGFpbiB0aGUg
cGFzc2VkIFVuaXF1ZWRTdHJpbmdJbXBsKi4gSXQganVzdCBob2xkcyB0aGUgcG9pbnRlciB0byBV
bmlxdWVkU3RyaW5nSW1wbCouCisgICAgICAgIEl0IG1lYW5zIHRoYXQgc2luY2UgYFN5bWJvbDo6
cHJpdmF0ZU5hbWUoKWAgcmV0dXJucyBgY29uc3QgUHJpdmF0ZU5hbWUmYCBpbnN0ZWFkIG9mIGBQ
cml2YXRlTmFtZWAsIHB1dEJ5VmFsCisgICAgICAgIGFuZCBpdHMgY2FsbGVyIGRvZXMgbm90IHJl
dGFpbiBVbmlxdWVkU3RyaW5nSW1wbCogaGVsZCBpbiBQcm9wZXJ0eU5hbWUuIFRoZSBwcm9ibGVt
IGhhcHBlbnMgd2hlbiB0aGUgcHV0QnlWYWwKKyAgICAgICAgaW5jdXJzIEdDLCBhbmQgd2hlbiB0
aGUgYHN5bWJvbGAgaXMgbWlzc2luZyBpbiB0aGUgY29uc2VydmF0aXZlIEdDIHNjYW4uIFRoZSB1
bmRlcmx5aW5nIFVuaXF1ZWRTdHJpbmdJbXBsKiBvZgorICAgICAgICBQcm9wZXJ0eU5hbWUgY2Fu
IGJlIGFjY2lkZW50YWxseSBkZXN0cm95ZWQgaW4gdGhlIG1pZGRsZSBvZiBwdXRCeVZhbCBvcGVy
YXRpb24uIFdlIHNob3VsZCByZXRhaW4gUHJpdmF0ZU5hbWUKKyAgICAgICAgYmVmb3JlIHBhc3Np
bmcgaXQgdG8gb3BlcmF0aW9ucyB3aGljaCB0YWtlcyBpdCBhcyBQcm9wZXJ0eU5hbWUuCisKKyAg
ICAgICAgMS4gV2UgdXNlIHRoZSBjb2RlIHBhdHRlcm4gbGlrZSB0aGlzLgorCisgICAgICAgICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IHN5bWJvbC0+cHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAg
IHNvbWVPcGVyYXRpb24oLi4uLCBwcm9wZXJ0eU5hbWUpOworCisgICAgICAgIFRoaXMgcGF0dGVy
biBpcyB3ZWxsIGFsaWduZWQgdG8gZXhpc3RpbmcgYEpTVmFsdWU6OnRvUHJvcGVydHlLZXkoZXhl
YylgIGFuZCBgSlNTdHJpbmc6OnRvSWRlbnRpZmllcihleGVjKWAgY29kZSBwYXR0ZXJucy4KKwor
ICAgICAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSB2YWx1ZS50b1Byb3BlcnR5S2V5KGV4ZWMp
OworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAg
ICAgIHNvbWVPcGVyYXRpb24oLi4uLCBwcm9wZXJ0eU5hbWUpOworCisgICAgICAgIDIuIFdlIGNo
YW5nZSBgU3ltYm9sOjpwcml2YXRlTmFtZSgpYCB0byByZXR1cm5pbmcgYFByaXZhdGVOYW1lYCBp
bnN0ZWFkIG9mIGBjb25zdCBQcml2YXRlTmFtZSZgIHRvIGF2b2lkCisgICAgICAgICAgIHBvdGVu
dGlhbCBkYW5nZXJvdXMgdXNlIGNhc2VzLiBUaGlzIGlzIE9LIGJlY2F1c2UgdGhlIGNvZGUgdXNp
bmcgYFN5bWJvbDo6cHJpdmF0ZU5hbWUoKWAgaXMgbm90IGEgY3JpdGljYWwgcGF0aCwKKyAgICAg
ICAgICAgYW5kIHRoZXkgdHlwaWNhbGx5IG5lZWQgdG8gcmV0YWluIFByaXZhdGVOYW1lLgorCisg
ICAgICAgIDMuIFdlIGF1ZGl0IHNpbWlsYXIgZnVuY3Rpb25zIGB0b1Byb3BlcnR5S2V5KGV4ZWMp
YCBhbmQgYHRvSWRlbnRpZmllcihleGVjKWAgbmVjZXNzYXJ5IGV4Y2VwdGlvbiBjaGVja3MuCisg
ICAgICAgICAgIEJUVywgdGhlc2UgZnVuY3Rpb25zIGFyZSBzYWZlIHRvIHRoZSBwcm9ibGVtIGZp
eGVkIGluIHRoaXMgcGF0Y2ggc2luY2UgdGhleSByZXR1cm4gYElkZW50aWZpZXJgIGluc3RlYWQK
KyAgICAgICAgICAgb2YgYGNvbnN0IElkZW50aWZpZXImYC4KKworICAgICAgICBNYXJrIGFuZCBS
b2JpbiBpbnZlc3RpZ2F0ZWQgYW5kIG9mZmVyZWQgaW1wb3J0YW50IGRhdGEgdG8gdW5kZXJzdGFu
ZCB3aGF0IHdlbnQgd3JvbmcuIEFuZCBmaWd1cmVkIG91dCB0aGUgcmVhc29uIGJlaGluZAorICAg
ICAgICB0aGUgbXlzdGVyaW91cyBiZWhhdmlvciBzaG93biBpbiB0aGUgZGF0YSwgYW5kIG5vdywg
d2UgY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlIHJpZ2h0IGZpeCBmb3IgdGhpcyBidWcuCisKKyAg
ICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAoSlNDOjp0cnlHZXRCeVZhbE9wdGltaXplKToKKyAgICAgICAgKiBy
dW50aW1lL0pTRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9uOjpzZXRGdW5j
dGlvbk5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVMb2FkZXIuY3BwOgorICAgICAg
ICAoSlNDOjpwcmludGFibGVNb2R1bGVLZXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OlN0cmluZ2lmaWVyOjpTdHJpbmdpZmllcik6CisgICAgICAg
ICogcnVudGltZS9TeW1ib2wuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2w6OmRlc2NyaXB0aXZl
U3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3ltYm9sOjpkZXNjcmlwdGlvbiBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9TeW1ib2wuaDoKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbENv
bnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6c3ltYm9sQ29uc3RydWN0b3JLZXlGb3IpOgor
ICAgICAgICAqIHRvb2xzL0pTRG9sbGFyVk0uY3BwOgorICAgICAgICAoSlNDOjpmdW5jdGlvbkdl
dEdldHRlclNldHRlcik6CisKIDIwMTktMDMtMTQgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBh
cHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogcmVnZXhwLT5pc1ZhbGlkKCkg
b3IgQVNTRVJUSU9OIEZBSUxFRDogIWlzQ29tcGlsYXRpb25UaHJlYWQoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDUyMTllZjdkMzY5YWFjN2ExYjdjY2MyMGQ3NGU0ZDZmYWUxYjgwYzMuLjc3NDI1ZmZiZWE4NGY3
ZTY4MzQzNmI5YzBiN2JmZWU5NWM2NWRhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOS0wMy0xNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtKU0NdIFJldGFpbiBQcml2YXRlTmFtZSBvZiBTeW1ib2wgYmVmb3JlIHBhc3NpbmcgaXQgdG8g
b3BlcmF0aW9ucyBwb3RlbnRpYWxseSBpbmN1cnJpbmcgR0MKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NTc5MQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDg4MDYxMzA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMpOgorCiAyMDE5
LTAzLTE0ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0b3Jp
bmcgYSBOb2RlIGluIFJlZi9SZWZQdHIgaW5zaWRlIGl0cyBkZXN0cnVjdG9yIHJlc3VsdHMgaW4g
ZG91YmxlIGRlbGV0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKaW5kZXggYTVkMTg0ODg0ZDRjYzRkMzE1ODdjMThiMTcyN2UwZjgwN2IzZjgxZS4uN2ZiMjQ2
ZThiMWU3N2ZlMDI3MmQ5ODIxNjlkODA0M2QxZWZiMDI5MiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC03NzAsNyArNzcwLDggQEAgRW5jb2RlZEpT
VmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbE9iamVjdFN5bWJvbChFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ2UKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZ2V0QnlWYWxPYmplY3QoZXhlYywgdm0sIGFzT2JqZWN0KGJhc2UpLCBhc1N5bWJvbChzeW1i
b2wpLT5wcml2YXRlTmFtZSgpKSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N5bWJvbChz
eW1ib2wpLT5wcml2YXRlTmFtZSgpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2V0QnlW
YWxPYmplY3QoZXhlYywgdm0sIGFzT2JqZWN0KGJhc2UpLCBwcm9wZXJ0eU5hbWUpKTsKIH0KIAog
dm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsU3RyaWN0KEV4ZWNTdGF0ZSogZXhl
YywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9w
ZXJ0eSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpAQCAtODI2LDcgKzgyNyw4IEBAIHZv
aWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbENlbGxTeW1ib2xTdHJpY3QoRXhlY1N0
YXRlKiBleGVjLCBKU0NlbGwqIGNlCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBOYXRp
dmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2bSwgZXhlYyk7CiAKLSAgICBwdXRCeVZhbENlbGxJ
bnRlcm5hbDx0cnVlLCBmYWxzZT4oZXhlYywgdm0sIGNlbGwsIGFzU3ltYm9sKHN5bWJvbCktPnBy
aXZhdGVOYW1lKCksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKKyAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IGFzU3ltYm9sKHN5bWJvbCktPnByaXZhdGVOYW1lKCk7CisgICAgcHV0QnlW
YWxDZWxsSW50ZXJuYWw8dHJ1ZSwgZmFsc2U+KGV4ZWMsIHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsQ2VsbFN5bWJvbE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEpT
Q2VsbCogY2VsbCwgSlNDZWxsKiBzeW1ib2wsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
QEAgLTgzNCw3ICs4MzYsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxD
ZWxsU3ltYm9sTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKgogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OwogCi0gICAgcHV0QnlWYWxDZWxsSW50ZXJuYWw8ZmFsc2UsIGZhbHNlPihleGVjLCB2bSwgY2Vs
bCwgYXNTeW1ib2woc3ltYm9sKS0+cHJpdmF0ZU5hbWUoKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRWYWx1ZSkpOworICAgIGF1dG8gcHJvcGVydHlOYW1lID0gYXNTeW1ib2woc3ltYm9sKS0+cHJp
dmF0ZU5hbWUoKTsKKyAgICBwdXRCeVZhbENlbGxJbnRlcm5hbDxmYWxzZSwgZmFsc2U+KGV4ZWMs
IHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsK
IH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3Vu
ZHNTdHJpY3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBpbnQzMl90IGluZGV4
LCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCkBAIC05ODYsNyArOTg5LDggQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbFN0cmljdChFeGVj
U3RhdGUqIGV4ZWMsIEpTQ2UKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKIAotICAgIHB1dEJ5VmFsQ2VsbEludGVy
bmFsPHRydWUsIHRydWU+KGV4ZWMsIHZtLCBjZWxsLCBhc1N5bWJvbChzeW1ib2wpLT5wcml2YXRl
TmFtZSgpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CisgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBhc1N5bWJvbChzeW1ib2wpLT5wcml2YXRlTmFtZSgpOworICAgIHB1dEJ5VmFsQ2Vs
bEludGVybmFsPHRydWUsIHRydWU+KGV4ZWMsIHZtLCBjZWxsLCBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkVmFsdWUpKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvblB1dEJ5VmFsRGlyZWN0Q2VsbFN5bWJvbE5vblN0cmljdChFeGVjU3RhdGUqIGV4ZWMsIEpT
Q2VsbCogY2VsbCwgSlNDZWxsKiBzeW1ib2wsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkK
QEAgLTk5NCw3ICs5OTgsOCBAQCB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlWYWxE
aXJlY3RDZWxsU3ltYm9sTm9uU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSgogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMp
OwogCi0gICAgcHV0QnlWYWxDZWxsSW50ZXJuYWw8ZmFsc2UsIHRydWU+KGV4ZWMsIHZtLCBjZWxs
LCBhc1N5bWJvbChzeW1ib2wpLT5wcml2YXRlTmFtZSgpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZFZhbHVlKSk7CisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N5bWJvbChzeW1ib2wpLT5wcml2
YXRlTmFtZSgpOworICAgIHB1dEJ5VmFsQ2VsbEludGVybmFsPGZhbHNlLCB0cnVlPihleGVjLCB2
bSwgY2VsbCwgcHJvcGVydHlOYW1lLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFZhbHVlKSk7CiB9
CiAKIHZvaWQgSklUX09QRVJBVElPTiBvcGVyYXRpb25QdXRCeVZhbERpcmVjdEJleW9uZEFycmF5
Qm91bmRzU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9iamVjdCwgaW50MzJfdCBp
bmRleCwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQpAQCAtMjA1NCwxMCArMjA1OSwxMiBA
QCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkVuc3VyZUFycmF5U3RvcmFnZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ2VsbCogY2VsbCkKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1FbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlVmFsdWUsIEpTQ2VsbCogcHJvcGVy
dHlOYW1lKQorRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNHZW5lcmlj
UHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZVZhbHVl
LCBKU0NlbGwqIHByb3BlcnR5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0
aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwogICAgIGlmIChiYXNlVmFsdWUuaXNVbmRlZmlu
ZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFs
c2UpKTsKQEAgLTIwNjUsNyArMjA3Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04g
b3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgRW5jb2RlCiAgICAg
SlNPYmplY3QqIGJhc2UgPSBiYXNlVmFsdWUudG9PYmplY3QoZXhlYyk7CiAgICAgaWYgKCFiYXNl
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYmFzZS0+aGFzUHJvcGVydHlHZW5lcmljKGV4ZWMs
IGFzU3RyaW5nKHByb3BlcnR5TmFtZSktPnRvSWRlbnRpZmllcihleGVjKSwgUHJvcGVydHlTbG90
OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5KSkpOworICAgIGF1dG8gcHJvcGVy
dHlOYW1lID0gYXNTdHJpbmcocHJvcGVydHkpLT50b0lkZW50aWZpZXIoZXhlYyk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYmFzZS0+aGFzUHJvcGVydHlHZW5lcmljKGV4
ZWMsIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93
blByb3BlcnR5KSkpKTsKIH0KIAogc2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5k
ZXhlZFByb3BlcnR5QnlJbnQoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2VDZWxsLCBpbnQz
Ml90IHN1YnNjcmlwdCwgaW50MzJfdCBpbnRlcm5hbE1ldGhvZFR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCBhNDk2Y2U1YWRmMjNkMzU2NWE4
NWU4ZjM4OGRkOGI4NTFhYjllMjAzLi44MjYxYTY5YzdkODNmMjg2NGQ2N2NiY2NlNzY2NGI5OWI0
Y2UzMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlv
bnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAK
QEAgLTcyMCw2ICs3MjAsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeVB1dEJ5VmFs
T3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZQogICAgIE9wdGltaXph
dGlvblJlc3VsdCBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9w
dGltaXplZDsKIAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYm
IGlzQ29weU9uV3JpdGUoYmFzZVZhbHVlLmdldE9iamVjdCgpLT5pbmRleGluZ01vZGUoKSkpCiAg
ICAgICAgIHJldHVybiBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcDsKQEAgLTc1MCw2ICs3NTEs
NyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeVB1dEJ5VmFsT3B0aW1pemUoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZQogCiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVj
dCgpICYmIGlzU3RyaW5nT3JTeW1ib2woc3Vic2NyaXB0KSkgewogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50b1Byb3BlcnR5S2V5KGV4ZWMpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBPcHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVV
cCk7CiAgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1ib2woKSB8fCAhcGFyc2VJbmRleChwcm9w
ZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBBU1NFUlQoZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSk7
CiAgICAgICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+c3R1YlJvdXRpbmUpOwpAQCAtNzkwLDE2
ICs3OTIsMTkgQEAgdm9pZCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblB1dEJ5VmFsT3B0aW1pemUo
RXhlY1N0YXRlKiBleGVjLCBFbmNvZGVkSlNWYWx1ZSBlbmMKIHsKICAgICBWTSYgdm0gPSBleGVj
LT52bSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkQmFzZVZhbHVlKTsKICAgICBKU1ZhbHVl
IHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkU3Vic2NyaXB0KTsKICAgICBKU1Zh
bHVlIHZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRWYWx1ZSk7Ci0gICAgaWYgKHRyeVB1
dEJ5VmFsT3B0aW1pemUoZXhlYywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIGJ5VmFsSW5mbywgUmV0
dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpKSA9PSBPcHRpbWl6YXRpb25SZXN1bHQ6
OkdpdmVVcCkgeworICAgIE9wdGltaXphdGlvblJlc3VsdCByZXN1bHQgPSB0cnlQdXRCeVZhbE9w
dGltaXplKGV4ZWMsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCBieVZhbEluZm8sIFJldHVybkFkZHJl
c3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKKyAgICBpZiAocmVzdWx0ID09IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVw
KSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGltaXplLgogICAgICAgICBieVZh
bEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIGN0aVBhdGNoQ2FsbEJ5UmV0dXJu
QWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyksIG9wZXJhdGlvblB1
dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQotICAgIHB1dEJ5VmFsKGV4ZWMsIGJhc2VWYWx1ZSwgc3Vi
c2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHB1dEJ5VmFsKGV4ZWMsIGJhc2VWYWx1ZSwgc3Vic2NyaXB0LCB2YWx1ZSwgYnlWYWxJbmZvKSk7
CiB9CiAKIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlWYWxPcHRpbWl6
ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIEpTVmFsdWUgc3Vic2NyaXB0LCBC
eVZhbEluZm8qIGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQpAQCAt
ODA4LDYgKzgxMyw3IEBAIHN0YXRpYyBPcHRpbWl6YXRpb25SZXN1bHQgdHJ5RGlyZWN0UHV0QnlW
YWxPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvCiAgICAgT3B0aW1pemF0aW9u
UmVzdWx0IG9wdGltaXphdGlvblJlc3VsdCA9IE9wdGltaXphdGlvblJlc3VsdDo6Tm90T3B0aW1p
emVkOwogCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoc3Vic2NyaXB0LmlzSW50MzIoKSkgewogICAg
ICAgICBBU1NFUlQoZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSk7CkBAIC04MzIsNiArODM4LDcgQEAg
c3RhdGljIE9wdGltaXphdGlvblJlc3VsdCB0cnlEaXJlY3RQdXRCeVZhbE9wdGltaXplKEV4ZWNT
dGF0ZSogZXhlYywgSlNPYmplY3QqIG8KICAgICAgICAgICAgIG9wdGltaXphdGlvblJlc3VsdCA9
IE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwOwogICAgIH0gZWxzZSBpZiAoaXNTdHJpbmdPclN5
bWJvbChzdWJzY3JpcHQpKSB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIgcHJvcGVydHlOYW1l
ID0gc3Vic2NyaXB0LnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIE9wdGltaXphdGlvblJlc3VsdDo6R2l2ZVVwKTsKICAgICAgICAgaWYgKHN1
YnNjcmlwdC5pc1N5bWJvbCgpIHx8ICFwYXJzZUluZGV4KHByb3BlcnR5TmFtZSkpIHsKICAgICAg
ICAgICAgIEFTU0VSVChleGVjLT5ieXRlY29kZU9mZnNldCgpKTsKICAgICAgICAgICAgIEFTU0VS
VCghYnlWYWxJbmZvLT5zdHViUm91dGluZSk7CkBAIC04NzIsMTkgKzg3OSwyMiBAQCB2b2lkIEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGlyZWN0UHV0QnlWYWxPcHRpbWl6ZShFeGVjU3RhdGUqIGV4
ZWMsIEVuY29kZWRKU1ZhbAogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRCYXNlVmFsdWUpOwogICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRTdWJzY3JpcHQpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKICAgICBSRUxFQVNFX0FTU0VSVChiYXNlVmFsdWUuaXNP
YmplY3QoKSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7Ci0g
ICAgaWYgKHRyeURpcmVjdFB1dEJ5VmFsT3B0aW1pemUoZXhlYywgb2JqZWN0LCBzdWJzY3JpcHQs
IGJ5VmFsSW5mbywgUmV0dXJuQWRkcmVzc1B0cihPVVJfUkVUVVJOX0FERFJFU1MpKSA9PSBPcHRp
bWl6YXRpb25SZXN1bHQ6OkdpdmVVcCkgeworICAgIE9wdGltaXphdGlvblJlc3VsdCByZXN1bHQg
PSB0cnlEaXJlY3RQdXRCeVZhbE9wdGltaXplKGV4ZWMsIG9iamVjdCwgc3Vic2NyaXB0LCBieVZh
bEluZm8sIFJldHVybkFkZHJlc3NQdHIoT1VSX1JFVFVSTl9BRERSRVNTKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKKyAgICBpZiAocmVzdWx0ID09IE9wdGltaXph
dGlvblJlc3VsdDo6R2l2ZVVwKSB7CiAgICAgICAgIC8vIERvbid0IGV2ZXIgdHJ5IHRvIG9wdGlt
aXplLgogICAgICAgICBieVZhbEluZm8tPnRvb2tTbG93UGF0aCA9IHRydWU7CiAgICAgICAgIGN0
aVBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhSZXR1cm5BZGRyZXNzUHRyKE9VUl9SRVRVUk5fQURE
UkVTUyksIG9wZXJhdGlvbkRpcmVjdFB1dEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogCi0gICAgZGly
ZWN0UHV0QnlWYWwoZXhlYywgb2JqZWN0LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pOwor
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGlyZWN0UHV0QnlWYWwoZXhlYywgb2JqZWN0
LCBzdWJzY3JpcHQsIHZhbHVlLCBieVZhbEluZm8pKTsKIH0KIAogdm9pZCBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvblB1dEJ5VmFsR2VuZXJpYyhFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVl
IGVuY29kZWRCYXNlVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRTdWJzY3JpcHQsIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSwgQnlWYWxJbmZvKiBieVZhbEluZm8pCkBAIC0xODczLDYg
KzE4ODMsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRyeUdldEJ5VmFsT3B0aW1pemUo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZQogICAgIE9wdGltaXphdGlvblJlc3Vs
dCBvcHRpbWl6YXRpb25SZXN1bHQgPSBPcHRpbWl6YXRpb25SZXN1bHQ6Ok5vdE9wdGltaXplZDsK
IAogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIHN1YnNjcmlw
dC5pc0ludDMyKCkpIHsKICAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGJhc2VW
YWx1ZSk7CkBAIC0xOTAzLDYgKzE5MTQsNyBAQCBzdGF0aWMgT3B0aW1pemF0aW9uUmVzdWx0IHRy
eUdldEJ5VmFsT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZQogCiAg
ICAgaWYgKGJhc2VWYWx1ZS5pc09iamVjdCgpICYmIGlzU3RyaW5nT3JTeW1ib2woc3Vic2NyaXB0
KSkgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IHN1YnNjcmlwdC50
b1Byb3BlcnR5S2V5KGV4ZWMpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBP
cHRpbWl6YXRpb25SZXN1bHQ6OkdpdmVVcCk7CiAgICAgICAgIGlmIChzdWJzY3JpcHQuaXNTeW1i
b2woKSB8fCAhcGFyc2VJbmRleChwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBBU1NFUlQo
ZXhlYy0+Ynl0ZWNvZGVPZmZzZXQoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIWJ5VmFsSW5mby0+
c3R1YlJvdXRpbmUpOwpAQCAtMTk1NiwxNyArMTk2OCwyMCBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsT3B0aW1pemUoRXhlY1N0YXRlKiBleGVjLCBFbmNv
ZGVkSgogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcigmdm0sIGV4ZWMpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKIAogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29k
ZWRCYXNlKTsKICAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
U3Vic2NyaXB0KTsKICAgICBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MgPSBSZXR1cm5B
ZGRyZXNzUHRyKE9VUl9SRVRVUk5fQUREUkVTUyk7Ci0gICAgaWYgKHRyeUdldEJ5VmFsT3B0aW1p
emUoZXhlYywgYmFzZVZhbHVlLCBzdWJzY3JpcHQsIGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcykg
PT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsKKyAgICBPcHRpbWl6YXRpb25SZXN1bHQg
cmVzdWx0ID0gdHJ5R2V0QnlWYWxPcHRpbWl6ZShleGVjLCBiYXNlVmFsdWUsIHN1YnNjcmlwdCwg
YnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworICAgIGlmIChyZXN1bHQgPT0gT3B0aW1pemF0aW9uUmVzdWx0OjpHaXZlVXApIHsK
ICAgICAgICAgLy8gRG9uJ3QgZXZlciB0cnkgdG8gb3B0aW1pemUuCiAgICAgICAgIGJ5VmFsSW5m
by0+dG9va1Nsb3dQYXRoID0gdHJ1ZTsKICAgICAgICAgY3RpUGF0Y2hDYWxsQnlSZXR1cm5BZGRy
ZXNzKHJldHVybkFkZHJlc3MsIG9wZXJhdGlvbkdldEJ5VmFsR2VuZXJpYyk7CiAgICAgfQogCi0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShnZXRCeVZhbChleGVjLCBiYXNlVmFsdWUsIHN1YnNj
cmlwdCwgYnlWYWxJbmZvLCByZXR1cm5BZGRyZXNzKSk7CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2V0QnlWYWwoZXhlYywgYmFzZVZhbHVlLCBzdWJzY3Jp
cHQsIGJ5VmFsSW5mbywgcmV0dXJuQWRkcmVzcykpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHlEZWZhdWx0KEV4ZWNTdGF0ZSog
ZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRT
dWJzY3JpcHQsIEJ5VmFsSW5mbyogYnlWYWxJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA4MzEwMGM5N2UyMDQ3YzYxZjk3NWI0ZGExYTM1
OWI0MDA2ZWExY2Q3Li5mNTkyYTFhNDE3ODNmMWY5M2E5ZWIyNDAwODM5ODUxY2UxZTg3MGUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNjY5
LDcgKzY2OSw4IEBAIHZvaWQgSlNGdW5jdGlvbjo6c2V0RnVuY3Rpb25OYW1lKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSkKICAgICBBU1NFUlQoanNFeGVjdXRhYmxlKCktPmVjbWFOYW1l
KCkuaXNOdWxsKCkpOwogICAgIFN0cmluZyBuYW1lOwogICAgIGlmICh2YWx1ZS5pc1N5bWJvbCgp
KSB7Ci0gICAgICAgIFN5bWJvbEltcGwmIHVpZCA9IGFzU3ltYm9sKHZhbHVlKS0+cHJpdmF0ZU5h
bWUoKS51aWQoKTsKKyAgICAgICAgUHJpdmF0ZU5hbWUgcHJpdmF0ZU5hbWUgPSBhc1N5bWJvbCh2
YWx1ZSktPnByaXZhdGVOYW1lKCk7CisgICAgICAgIFN5bWJvbEltcGwmIHVpZCA9IHByaXZhdGVO
YW1lLnVpZCgpOwogICAgICAgICBpZiAodWlkLmlzTnVsbFN5bWJvbCgpKQogICAgICAgICAgICAg
bmFtZSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTG9hZGVyLmNwcAppbmRleCA5ODJiYWE3YTU4ZjQ3ZmRj
ZTBiZTI3MTg0YWZmMGRiZDAzMTc1MTYzLi45ZDFjMjIxMDY2NzdkNmIyYWFjZDY5MDU1OWUwZDU0
OTI3MTg0ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1
bGVMb2FkZXIuY3BwCkBAIC0xMTYsOCArMTE2LDEyIEBAIHZvaWQgSlNNb2R1bGVMb2FkZXI6OmZp
bmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xv
CiBzdGF0aWMgU3RyaW5nIHByaW50YWJsZU1vZHVsZUtleShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUga2V5KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKGtleS5pc1N0cmlu
ZygpIHx8IGtleS5pc1N5bWJvbCgpKQotICAgICAgICByZXR1cm4ga2V5LnRvUHJvcGVydHlLZXko
ZXhlYykuaW1wbCgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KyAgICBpZiAoa2V5LmlzU3RyaW5nKCkgfHwga2V5LmlzU3ltYm9sKCkpIHsKKyAgICAgICAgYXV0
byBwcm9wZXJ0eU5hbWUgPSBrZXkudG9Qcm9wZXJ0eUtleShleGVjKTsKKyAgICAgICAgc2NvcGUu
YXNzZXJ0Tm9FeGNlcHRpb24oKTsgLy8gVGhpcyBpcyBPSyBzaW5jZSB0aGlzIGZ1bmN0aW9uIGlz
IGp1c3QgZm9yIGRlYnVnZ2luZyBwdXJwb3NlLgorICAgICAgICByZXR1cm4gcHJvcGVydHlOYW1l
LmltcGwoKTsKKyAgICB9CiAgICAgcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPmVtcHR5SWRlbnRp
Zmllci5pbXBsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9i
amVjdC5jcHAKaW5kZXggNjU0NTI2MmU5NWMzZDNiMDM2MzFiMjA5N2ZmNWNjNWUzYWVlZTFmNC4u
ZGM1Y2NhZDVkYzYyMDY0NjNlYWU2OGQ2OWFjOTBkOWVhYjI5NDhjOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTI0Nyw4ICsyNDcsOSBAQCBT
dHJpbmdpZmllcjo6U3RyaW5naWZpZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHJlcGxhY2Vy
LCBKU1ZhbHVlIHNwYWNlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFuYW1lLmlzTnVtYmVyKCkgJiYgIW5hbWUu
aXNTdHJpbmcoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgICAgICBtX2FycmF5UmVwbGFjZXJQcm9wZXJ0eU5hbWVzLmFkZChuYW1lLnRvU3RyaW5n
KGV4ZWMpLT50b0lkZW50aWZpZXIoZXhlYykpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IG5hbWUudG9TdHJpbmcoZXhlYyktPnRvSWRlbnRpZmllcihleGVjKTsKICAg
ICAgICAgICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9hcnJheVJlcGxhY2VyUHJvcGVydHlOYW1lcy5hZGQoV1RGTW92ZShwcm9w
ZXJ0eU5hbWUpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCmluZGV4IGQ4M2UzMWQxMDI5
YzNlYTI5OTMxYzFkZTIzYjAwYmM0ZWNmNmMxMDkuLmNhZjQ1ZTVmNzUwMDY0NWQzOWEyNDJhMWY2
MDA2MzIyY2NlNzM0NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNw
cApAQCAtMTAwLDEyICsxMDAsMTIgQEAgdm9pZCBTeW1ib2w6OmRlc3Ryb3koSlNDZWxsKiBjZWxs
KQogCiBTdHJpbmcgU3ltYm9sOjpkZXNjcmlwdGl2ZVN0cmluZygpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1ha2VTdHJpbmcoIlN5bWJvbCgiLCBTdHJpbmcocHJpdmF0ZU5hbWUoKS51aWQoKSksICcp
Jyk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoIlN5bWJvbCgiLCBTdHJpbmcobV9wcml2YXRlTmFt
ZS51aWQoKSksICcpJyk7CiB9CiAKIFN0cmluZyBTeW1ib2w6OmRlc2NyaXB0aW9uKCkgY29uc3QK
IHsKLSAgICBhdXRvJiB1aWQgPSBwcml2YXRlTmFtZSgpLnVpZCgpOworICAgIGF1dG8mIHVpZCA9
IG1fcHJpdmF0ZU5hbWUudWlkKCk7CiAgICAgcmV0dXJuIHVpZC5pc051bGxTeW1ib2woKSA/IFN0
cmluZygpIDogdWlkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TeW1ib2wuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCmlu
ZGV4IDUyYzkxNjIxZjViYTJkYWM2NTI2ZDVhNTM4NjM5ZDRhMjY0ODBkNzAuLjFmMTc4NmVjNmNj
MzQyNDEzZTBhOTg0MDJjMGExMDVlM2Y3MDYwYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbC5oCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFN5bWJvbCBmaW5hbCA6IHB1Ymxp
YyBKU0NlbGwgewogICAgIHN0YXRpYyBTeW1ib2wqIGNyZWF0ZShFeGVjU3RhdGUqLCBKU1N0cmlu
ZyogZGVzY3JpcHRpb24pOwogICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBTeW1ib2wqIGNy
ZWF0ZShWTSYsIFN5bWJvbEltcGwmIHVpZCk7CiAKLSAgICBjb25zdCBQcml2YXRlTmFtZSYgcHJp
dmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lOyB9CisgICAgUHJpdmF0ZU5h
bWUgcHJpdmF0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3ByaXZhdGVOYW1lOyB9CiAgICAgU3Ry
aW5nIGRlc2NyaXB0aXZlU3RyaW5nKCkgY29uc3Q7CiAgICAgU3RyaW5nIGRlc2NyaXB0aW9uKCkg
Y29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbENv
bnN0cnVjdG9yLmNwcAppbmRleCAwZTBiY2I4MTU4ZDFiOGMyODRhNzRiNmVmZGI3ZmUzMjJkOTQ2
YjI3Li40ODNmMDg1MGMxZTE2Y2M2Yjg3MWNkMDU0YmIzYmU3NzVkNTkyM2VjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xDb25zdHJ1Y3Rvci5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sQ29uc3RydWN0b3IuY3BwCkBA
IC0xMDksNyArMTA5LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzeW1ib2xDb25z
dHJ1Y3RvcktleUZvcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFzeW1ib2xWYWx1ZS5pc1N5
bWJvbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsIHNjb3BlLCBTeW1ib2xLZXlGb3JUeXBlRXJyb3IpKTsKIAotICAgIFN5bWJvbEltcGwmIHVp
ZCA9IGFzU3ltYm9sKHN5bWJvbFZhbHVlKS0+cHJpdmF0ZU5hbWUoKS51aWQoKTsKKyAgICBQcml2
YXRlTmFtZSBwcml2YXRlTmFtZSA9IGFzU3ltYm9sKHN5bWJvbFZhbHVlKS0+cHJpdmF0ZU5hbWUo
KTsKKyAgICBTeW1ib2xJbXBsJiB1aWQgPSBwcml2YXRlTmFtZS51aWQoKTsKICAgICBpZiAoIXVp
ZC5zeW1ib2xSZWdpc3RyeSgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5k
ZWZpbmVkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
aW5kZXggNTU2MGU1YWJhMjk4OTBkOTI2Yzc0NzhkOTZkYmNmM2QzMjlhZTMyOC4uODI2ZGEwMTc3
ZmU5ODJjOWM1NDRhYzg3Zjg0ZDdiZGM0NmE3OWUyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMjEwMyw2ICsyMTAzLDkgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25HbG9iYWxPYmplY3RGb3JPYmplY3QoRXhl
Y1N0YXRlKiBleGUKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25HZXRHZXR0ZXJTZXR0ZXIoRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAg
SlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghdmFsdWUuaXNPYmpl
Y3QoKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTIxMTEsOCArMjExNCwxMSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBm
dW5jdGlvbkdldEdldHRlclNldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFwcm9wZXJ0
eS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogCisgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBhc1N0cmluZyhwcm9wZXJ0eSktPnRvSWRl
bnRpZmllcihleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCiAg
ICAgUHJvcGVydHlTbG90IHNsb3QodmFsdWUsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RU
eXBlOjpWTUlucXVpcnkpOwotICAgIHZhbHVlLmdldFByb3BlcnR5U2xvdChleGVjLCBhc1N0cmlu
Zyhwcm9wZXJ0eSktPnRvSWRlbnRpZmllcihleGVjKSwgc2xvdCk7CisgICAgdmFsdWUuZ2V0UHJv
cGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBKU1ZhbHVlIHJlc3Vs
dDsKICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAppbmRleCA3ODRhZTU0MDYzNWEwY2Zi
NDJiYTAyNTcxNWY1MjAzNTdkMGM4ZWY3Li45ZDhiNTc1ZDBkNDE0M2NiMzJmYjA5M2Q4YWEzOThk
MzYxNTY5NzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcApAQCAtMjc4LDggKzI3OCwxMSBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNl
dHVwTW9kdWxlU2NyaXB0SGFuZGxlcnMoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcgog
CiAgICAgUmVmUHRyPExvYWRhYmxlTW9kdWxlU2NyaXB0PiBtb2R1bGVTY3JpcHQoJm1vZHVsZVNj
cmlwdFJlZik7CiAKLSAgICBhdXRvJiBmdWxmaWxsSGFuZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0
aW9uOjpjcmVhdGUoc3RhdGUudm0oKSwgcHJveHkud2luZG93KCksIDEsIFN0cmluZygpLCBbbW9k
dWxlU2NyaXB0XShFeGVjU3RhdGUqIGV4ZWMpIHsKKyAgICBhdXRvJiBmdWxmaWxsSGFuZGxlciA9
ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoc3RhdGUudm0oKSwgcHJveHkud2luZG93KCks
IDEsIFN0cmluZygpLCBbbW9kdWxlU2NyaXB0XShFeGVjU3RhdGUqIGV4ZWMpIC0+IEpTQzo6RW5j
b2RlZEpTVmFsdWUgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIElkZW50aWZpZXIgbW9k
dWxlS2V5ID0ganNWYWx1ZVRvTW9kdWxlS2V5KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgbW9kdWxlU2Ny
aXB0LT5ub3RpZnlMb2FkQ29tcGxldGVkKCptb2R1bGVLZXkuaW1wbCgpKTsKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9KTsKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZWNkM2RhMjI4NTNi
ODUyMzJjYTdhNjhjZTEyODI2NGY5MjliZDQwYy4uNjhjYjAwNDE4N2FlOWY3ZjQxM2U0ZGNlZjlh
ZTljZGQ3ZmRhNmVkMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0wMy0xNCAgWXVzdWtlIFN1enVraSAg
PHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIFJldGFpbiBQcml2YXRlTmFtZSBv
ZiBTeW1ib2wgYmVmb3JlIHBhc3NpbmcgaXQgdG8gb3BlcmF0aW9ucyBwb3RlbnRpYWxseSBpbmN1
cnJpbmcgR0MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5NTc5MQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDg4MDYxMzA+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mvc3ltYm9sLWlzLWRl
c3RydWN0ZWQtYmVmb3JlLXJlZmluZy11bmRlcmx5aW5nLXN5bWJvbC1pbXBsLmpzOiBBZGRlZC4K
KyAgICAgICAgKGZvbyk6CisKIDIwMTktMDMtMTMgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBh
cHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUSU9OIEZBSUxFRDogcmVnZXhwLT5pc1ZhbGlkKCkg
b3IgQVNTRVJUSU9OIEZBSUxFRDogIWlzQ29tcGlsYXRpb25UaHJlYWQoKQpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3Mvc3ltYm9sLWlzLWRlc3RydWN0ZWQtYmVmb3JlLXJlZmluZy11bmRlcmx5
aW5nLXN5bWJvbC1pbXBsLmpzIGIvSlNUZXN0cy9zdHJlc3Mvc3ltYm9sLWlzLWRlc3RydWN0ZWQt
YmVmb3JlLXJlZmluZy11bmRlcmx5aW5nLXN5bWJvbC1pbXBsLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRmNDE0
YTczNGFlNTZlZmVjZDkzMDNhMWZlMGQyYTUwYWNhZTIzYjIKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL3N0cmVzcy9zeW1ib2wtaXMtZGVzdHJ1Y3RlZC1iZWZvcmUtcmVmaW5nLXVuZGVybHlp
bmctc3ltYm9sLWltcGwuanMKQEAgLTAsMCArMSwxMyBAQAorLy9AIHNraXAgaWYgJGJ1aWxkVHlw
ZSA9PSAiZGVidWciCisvL0Agc2xvdyEKKy8vQCBydW5EZWZhdWx0KCItLWNvbGxlY3RDb250aW51
b3VzbHk9MSIsICItLXNsb3dQYXRoQWxsb2NzQmV0d2VlbkdDcz0xMDAiKQorCitmdW5jdGlvbiBm
b28oYSkgeworICAgIGFbU3ltYm9sKCldID0gMTsKK30KK25vSW5saW5lKGZvbyk7CisKK2ZvciAo
bGV0IGkgPSAwOyBpIDwgM2U3OyBpKyspIHsKKyAgICBsZXQgYSA9IHt9OworICAgIGZvbyhhKTsK
K30K
</data>
<flag name="review"
          id="381266"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>