<?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>164581</bug_id>
          
          <creation_ts>2016-11-09 23:35:29 -0800</creation_ts>
          <short_desc>[JSC] op_in should have ArrayProfile</short_desc>
          <delta_ts>2017-02-08 16:03:57 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1249699</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-09 23:35:29 -0800</bug_when>
    <thetext>Much time is taken in Array.prototype.map in ES6SampleBench/Basic.
And sampling profiler tells us that op_in is one of the hottest bytecode.
We have a path optimizing `&quot;string&quot; in obj` case, but we always fall into the slow generic code for `index in array` case.

We should have array profile and handle op_in like GetByVal thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274498</commentid>
    <comment_count>1</comment_count>
      <attachid>300935</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-02-08 12:15:59 -0800</bug_when>
    <thetext>Created attachment 300935
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274540</commentid>
    <comment_count>2</comment_count>
      <attachid>300954</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-02-08 13:36:41 -0800</bug_when>
    <thetext>Created attachment 300954
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274628</commentid>
    <comment_count>3</comment_count>
      <attachid>300954</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-08 16:03:53 -0800</bug_when>
    <thetext>Comment on attachment 300954
Patch for landing

Clearing flags on attachment: 300954

Committed r211908: &lt;http://trac.webkit.org/changeset/211908&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1274629</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-02-08 16:03:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300935</attachid>
            <date>2017-02-08 12:15:59 -0800</date>
            <delta_ts>2017-02-08 13:36:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164581-20170208121335.patch</filename>
            <type>text/plain</type>
            <size>28231</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjdkMWRhMjIzYThmYzYzMzg0OTAwYjk5OTUxZTUzNzBhZGU0M2VjLi40N2M5MjA4ZjBiNGY4MjFm
N2M4N2E4NDc2NTJmZTg3NTBiNTljMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNy0wMi0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBvcF9pbiBzaG91bGQgaGF2ZSBBcnJheVByb2ZpbGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDU4MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
YWRkcyBhbiBBcnJheVByb2ZpbGUgdG8gdGhlIG9wX2luIGJ5dGVjb2RlLiBJbiB0aGUKKyAgICAg
ICAgREZHLCBpZiB3ZSBzZWUgdGhhdCB3ZSB0aGUga2V5IGlzIGFuIGludDMyIHdlIHdpbGwgY29u
dmVydCB0aGUgSW4KKyAgICAgICAgREZHIG5vZGUgdG8gYSBIYXNJbmRleGVkUHJvcGVydHkgbm9k
ZSBpbnN0ZWFkLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBmbGlwcyB0aGUgdHdvIGFyZ3Vt
ZW50cyBvZiBvcF9pbiBhbmQgdGhlIEluIG5vZGUKKyAgICAgICAgdG8gcmVmbGVjdCB0aGUgb3Ro
ZXIgcHJvcGVydHkgbG9va3VwIGJ5dGVjb2Rlcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbik6CisgICAg
ICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0SW4pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpJbk5vZGU6OmVtaXRCeXRlY29kZSk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAg
ICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KToK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0Fy
cmF5TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSW50ZXJuYWxNZXRob2RUeXBl
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppbnRlcm5hbE1ldGhvZFR5cGUpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OnNldEludGVybmFsTWV0aG9kVHlwZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUluKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjpjb21waWxlSW4pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdU
b0IzOjpjb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAg
ICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1df
UEFUSF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAoSlNDOjpDb21tb25TbG93UGF0aHM6Om9wSW4pOgorCiAyMDE3LTAyLTAzICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFdoZW4gT1NSIGVudGVyaW5nIHRvIHRo
ZSBiYXNlbGluZSBKSVQgZnJvbSB0aGUgTExJbnQgZm9yIGEgUHJvZ3JhbUNvZGVCbG9jayB3ZSBj
YW4gc2tpcCBjb21waWxpbmcgYSBsb3Qgb2YgdGhlIHByb2dyYW0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBmYWZkZWQ3ZWY2ZWMz
MWE4YjZkZDBmNTI4Zjg2OGNmMjNlZTE1YTM2Li5hZGE0NDI5Zjc5NmZmNTVjYTBjZTM4OWE3YzA1
ZWVjOGJmZjk5MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlTGlzdC5qc29uCkBAIC02Miw3ICs2Miw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6
ICJvcF9pc19vYmplY3Rfb3JfbnVsbCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfaXNfZnVuY3Rpb24iLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsg
Im5hbWUiIDogIm9wX2lzX2NlbGxfd2l0aF90eXBlIiwgImxlbmd0aCIgOiA0IH0sCi0gICAgICAg
ICAgICB7ICJuYW1lIiA6ICJvcF9pbiIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAi
bmFtZSIgOiAib3BfaW4iLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDog
Im9wX2dldF9hcnJheV9sZW5ndGgiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgiIDogOSAgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX2dldF9ieV9pZF9wcm90b19sb2FkIiwgImxlbmd0aCIgOiA5IH0sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGQ0ZDNjZWI5YmUw
MWU1OTFmMDVlY2YyODFmYzBlODQ3N2U2YmI4NzcuLmM1NTkwYWIwYmVjZTNiZWQ5MzdhODY0NDcz
MmY1MDIyYjg4YTYxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCkBAIC0xMTA1LDYgKzExMDUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVj
b2RlKAogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaW46IHsKICAgICAgICAgICAgIHByaW50
QmluYXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpbiIpOworICAgICAgICAgICAgZHVt
cEFycmF5UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOiB7CkBA
IC0yMDk1LDEyICsyMDk2LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAg
IGxpbmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7Ci0gICAgICAgICAgICBpbnQgYXJy
YXlQcm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZDsKLSAgICAgICAgICAg
IG1fYXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7Ci0g
ICAgICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSAmbV9hcnJheVByb2Zp
bGVzW2FycmF5UHJvZmlsZUluZGV4XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisK
KyAgICAgICAgY2FzZSBvcF9pbjoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAgICAg
ICBjYXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OiB7CiAgICAgICAgICAgICBpbnQgYXJyYXlQcm9m
aWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZDsKICAgICAgICAgICAgIG1fYXJy
YXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCmluZGV4IDk0NWZjZTk5ZGZiNTU2NzUxY2EwZWI3ZmUxYjllZjM3MTM5YWY5YWYuLmUw
NGE1NWVjYzg3MWM1MjI2NzY2NGZhYmFmOTRhMDRlNGU5ZDAyODAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CkBAIC0yNTcxLDYgKzI1NzEsMTcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRJbnN0YW5jZU9mQ3VzdG9tKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCoKICAgICByZXR1
cm4gZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpCit7Cisg
ICAgVW5saW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlID0gbmV3QXJyYXlQcm9maWxlKCk7
CisgICAgZW1pdE9wY29kZShvcF9pbik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+
aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGFycmF5UHJvZmlsZSk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUcnlHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3BlcnRp
ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCB0cnlHZXRCeUlkLiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IGJjNzFkMjYxZjk1M2FiM2JlN2Q1ODJjYTIyMGQxNThiNjA4MDA1MzcuLmMzODI5ZjI5OWMxNzk2
NDI1YjczM2MxNGE3ZDVmMzljZjFjMzdjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTYyOCw3ICs2Mjgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNlT2Yo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogYmFzZVByb3Rv
dHlwZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbnN0YW5jZU9mQ3VzdG9tKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdp
c3RlcklEKiBoYXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFR5cGVP
ZihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVuYXJ5T3Ao
b3BfdHlwZW9mLCBkc3QsIHNyYyk7IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluKFJlZ2lz
dGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpIHsgcmV0
dXJuIGVtaXRCaW5hcnlPcChvcF9pbiwgZHN0LCBwcm9wZXJ0eSwgYmFzZSwgT3BlcmFuZFR5cGVz
KCkpOyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbihSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiBiYXNlKTsKIAogICAgICAgICBSZWdpc3RlcklE
KiBlbWl0VHJ5R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5SWQo
UmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAKaW5kZXggMWIxN2E4YjljNTlmY2Q2MTkyMTE0NmI1NzM5ODliZWNiMzNhMWFj
MS4uZWJlY2MwZGUxMTdmZDM5ZjA2NDE0YjU3MTE3NjA1ZTA0NDZmZTYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAt
MjA0Miw2ICsyMDQyLDE3IEBAIFJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAgICAgcmV0dXJuIGRz
dFJlZy5nZXQoKTsKIH0KIAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEluTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlZ2lzdGVySUQqIEluTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
K3sKKyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4ga2V5ID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVm
dEhhbmRTaWRlKG1fZXhwcjEsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+aXNQdXJl
KGdlbmVyYXRvcikpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVt
aXROb2RlKG1fZXhwcjIpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3Qo
KSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRJ
bihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGtleS5nZXQoKSksIGtleS5nZXQoKSwg
YmFzZS5nZXQoKSk7Cit9CisKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExv
Z2ljYWxPcE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBSZWdpc3RlcklEKiBM
b2dpY2FsT3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCA5MmUwNjhmYmJhNjZhNzI0Y2Y1YTA2ZjVkNzkzOTJjMzdhNDM4
ZjE4Li5lNTY1MWYyYjVjZGZlY2Y2MjgwNTNmYmYyYTAxZGRhYjIxZjAwNjA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTQ4MSw4
ICs1NDgxLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfaW46IHsKKyAgICAgICAgICAgIEFycmF5
TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uW09QQ09ERV9M
RU5HVEgob3BfaW4pIC0gMV0udS5hcnJheVByb2ZpbGUpOwogICAgICAgICAgICAgc2V0KFZpcnR1
YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKLSAgICAgICAgICAg
ICAgICBhZGRUb0dyYXBoKEluLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlv
blsyXS51Lm9wZXJhbmQpKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kKSkpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEluLCBPcEluZm8o
YXJyYXlNb2RlLmFzV29yZCgpKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCkpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbik7CiAgICAg
ICAgIH0KIApAQCAtNTUxMSw3ICs1NTEyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVh
bFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAg
IEFycmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uWzRd
LnUuYXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0
eSA9IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkp
OwotICAgICAgICAgICAgTm9kZSogaGFzSXRlcmFibGVQcm9wZXJ0eSA9IGFkZFRvR3JhcGgoSGFz
SW5kZXhlZFByb3BlcnR5LCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgYmFzZSwgcHJvcGVy
dHkpOworICAgICAgICAgICAgTm9kZSogaGFzSXRlcmFibGVQcm9wZXJ0eSA9IGFkZFRvR3JhcGgo
SGFzSW5kZXhlZFByb3BlcnR5LCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKHN0
YXRpY19jYXN0PHVpbnQzMl90PihQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0
T3duUHJvcGVydHkpKSwgYmFzZSwgcHJvcGVydHkpOwogICAgICAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgaGFzSXRlcmFibGVQcm9w
ZXJ0eSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CmluZGV4IDA5NTg3ZmM2MWJhNTQ5NzJlNTUwMzY4ZDc3Mzk1OTVjYWM1NmM1MGIuLjRhY2E5OTY0
MjQ1ZWU4OTk3MzQxY2E4ZDhlM2JkMTUyY2VmYjVhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTM2MywxMCArMTM2MywxMiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBJbjogewotICAgICAgICAgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBhdCBzb21lIHBvaW50IGhhdmUgYXJyYXkgcHJvZmlsaW5nIG9u
IG9wX2luLCBpbiB3aGljaAotICAgICAgICAgICAgLy8gY2FzZSB3ZSB3b3VsZCBiZSBhYmxlIHRv
IHR1cm4gdGhpcyBpbnRvIGEga2luZCBvZiBHZXRCeVZhbC4KLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKKyAgICAgICAgICAgICAg
ICBjb252ZXJ0VG9IYXNJbmRleGVkUHJvcGVydHkobm9kZSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjY1Miw3ICsy
NjU0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdHJ1bmNhdGVDb25z
dGFudFRvSW50MzIobm9kZS0+Y2hpbGQyKCkpOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgYXR0
ZW1wdFRvTWFrZUludGVnZXJBZGQoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFkZFNwZWN1
bGF0aW9uTW9kZSBtb2RlID0gbV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1vZGUobm9kZSwgRml4dXBQ
YXNzKTsKQEAgLTI3NDMsNyArMjc0NSwyNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9pbmRl
eEluQmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCiAgICAgICAg
ICAgICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNl
KSwgRWRnZShzdG9yYWdlKSk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBjb252ZXJ0VG9IYXNJ
bmRleGVkUHJvcGVydHkoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIG5vZGUtPnNldE9wKEhh
c0luZGV4ZWRQcm9wZXJ0eSk7CisgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5l
cmF0ZSk7CisgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZSgKKyAgICAgICAgICAgIG5vZGUtPmFy
cmF5TW9kZSgpLnJlZmluZSgKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLAorICAgICAg
ICAgICAgICAgIG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksCisgICAgICAgICAgICAgICAg
bm9kZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKSwKKyAgICAgICAgICAgICAgICBTcGVjTm9uZSkp
OworICAgICAgICBub2RlLT5zZXRJbnRlcm5hbE1ldGhvZFR5cGUoUHJvcGVydHlTbG90OjpJbnRl
cm5hbE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKKworICAgICAgICBibGVzc0FycmF5T3BlcmF0
aW9uKG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQzKCkpOworCisg
ICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBmaXhFZGdl
PEludDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgfQorCiAgICAgYm9vbCBhdHRlbXB0VG9N
YWtlQ2FsbERPTShOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgaWYgKG1fZ3JhcGguaGFzRXhp
dFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBCYWRUeXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgKaW5kZXggODZhNWY4NGY1MGJmOTFlYzBjMTg5NzU2YzgwNTMwZTY0Y2JmNDdk
OC4uZTU5MDQyNDgxZjRhNjRkOTI3NGNkNWNkMjYyYjhhNjc5YjE4NDMwMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlLmgKQEAgLTE3ODgsNiArMTc4OCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgc3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFn
ZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBJbjoKICAgICAg
ICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAg
Y2FzZSBQdXRCeVZhbEFsaWFzOgpAQCAtMjQyMSw2ICsyNDIyLDIzIEBAIHB1YmxpYzoKICAgICAg
ICAgcmV0dXJuIG1fb3BJbmZvLmFzPGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKj4oKTsKICAgICB9
CiAKKyAgICBib29sIGhhc0ludGVybmFsTWV0aG9kVHlwZSgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gb3AoKSA9PSBIYXNJbmRleGVkUHJvcGVydHk7CisgICAgfQorCisgICAgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGUgaW50ZXJuYWxNZXRob2RUeXBlKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChoYXNJbnRlcm5hbE1ldGhvZFR5cGUoKSk7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZT4obV9vcElu
Zm8yLmFzPHVpbnQzMl90PigpKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEludGVybmFsTWV0aG9k
VHlwZShQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZSB0eXBlKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKGhhc0ludGVybmFsTWV0aG9kVHlwZSgpKTsKKyAgICAgICAgbV9vcEluZm8yID0g
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2Vt
ZW50KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4
IDY3MWMwNjM3N2Y0ZTkwZmNmMmU5NmI5ZTc3NTBiNjRkYjgyZDE1NjEuLjQ5MDIwZWViZDMxNDBj
YzJmYjM1MTVjNmNiZDkyNmEyYWViZTQ3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMDM3LDE3ICsxMDM3LDE3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVJbihOb2RlKiBub2RlKQogewotICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFz
ZS5ncHIoKTsKICAgICAKLSAgICBpZiAoSlNTdHJpbmcqIHN0cmluZyA9IG5vZGUtPmNoaWxkMSgp
LT5keW5hbWljQ2FzdENvbnN0YW50PEpTU3RyaW5nKj4oKm1faml0LnZtKCkpKSB7CisgICAgaWYg
KEpTU3RyaW5nKiBzdHJpbmcgPSBub2RlLT5jaGlsZDIoKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxK
U1N0cmluZyo+KCptX2ppdC52bSgpKSkgewogICAgICAgICBpZiAoc3RyaW5nLT50cnlHZXRWYWx1
ZUltcGwoKSAmJiBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpLT5pc0F0b21pYygpKSB7CiAgICAg
ICAgICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+
YWRkU3R1YkluZm8oQWNjZXNzVHlwZTo6SW4pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKIAotICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIHVzZShub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGp1bXAgPSBtX2ppdC5wYXRjaGFibGVKdW1wKCk7
CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZSA9IG1faml0LmxhYmVsKCk7
CkBAIC0xMDc5LDcgKzEwNzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW4oTm9k
ZSogbm9kZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlz
LCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNo
aWxkMigpKTsKICAgICBKU1ZhbHVlUmVncyByZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAg
ICAgIAogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA3YzJmMDY3YzU3MzFl
ODRiMzI0OGE5YzZmZDhlNWVjZGM0ZmI5NDhjLi44YWJhN2FhNTYzNGY3YWU3MDVjMWEzN2NkMDVm
NzUzOTZjNjBkMTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCkBAIC0xNTM5LDYgKzE1MzksMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBh
cHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29t
cGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1paIG9wZXJhdGlvbiwg
R1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBpbnQzMl90IGNvbnN0YW50
KQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEs
IGFyZzIsIFRydXN0ZWRJbW0zMihjb25zdGFudCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2Fs
bFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpD
YWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgY29uc3Qg
VW5pcXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZElt
bVB0cih1aWQpKTsKQEAgLTIwNzQsNiArMjA3OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1
bHQudGFnR1BSKCkpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VDWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJn
MSwgR1BSUmVnIGFyZzIsIGludDMyX3QgY29uc3RhbnQpCisgICAgeworICAgICAgICBtX2ppdC5z
ZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMiwgVHJ1c3RlZEltbTMyKGNvbnN0
YW50KSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9w
ZXJhdGlvbl9FSnNjQyBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgR1BSUmVnIGFyZzEs
IEpTQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4
ZWNTdGF0ZShhcmcxLCBUcnVzdGVkSW1tUHRyOjp3ZWFrUG9pbnRlcihtX2ppdC5ncmFwaCgpLCBj
ZWxsKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAppbmRleCAyMDE2NWNhMDdkMWI5M2Q1NjY4ZTk5M2I4MzM3ZDY3Zjc3ZDg1
ODEzLi4zZjZkNmUyZDY2Zjg3OTgwZTExZTZiZmZjZDkzMWEwOTg5OWYyODE1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
QEAgLTUyODAsNyArNTI4MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgbW92ZVRydWVUbyhyZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKIAotICAgICAgICBhZGRTbG93
UGF0aEdlbmVyYXRvcihzbG93UGF0aENhbGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25IYXNJ
bmRleGVkUHJvcGVydHksIEpTVmFsdWVSZWdzKHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
UiksIGJhc2VHUFIsIGluZGV4R1BSKSk7CisgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNs
b3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSwg
SlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgYmFzZUdQUiwgaW5k
ZXhHUFIsIHN0YXRpY19jYXN0PGludDMyX3Q+KG5vZGUtPmludGVybmFsTWV0aG9kVHlwZSgpKSkp
OwogICAgICAgICAKICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAgICAgICAgIGJvb2xlYW5S
ZXN1bHQocmVzdWx0UGF5bG9hZEdQUiwgbm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCAxY2E4ODMyNWYwZmIxMjE5YjFh
YmQxNDRmN2I0ZWI4YTA1NjFmMjc2Li5jM2U4NTFjZGYxYzllNzQ2MzZkYWE3MDNlMGE3YzFkOGMy
ODhjOTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKQEAgLTU0NzYsNyArNTQ3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgYWRkU2xv
d1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSGFz
SW5kZXhlZFByb3BlcnR5LCByZXN1bHRHUFIsIGJhc2VHUFIsIGluZGV4R1BSKSk7CisgICAgICAg
IGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2FsbChzbG93Q2FzZXMsIHRoaXMsIG9wZXJh
dGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSwgcmVzdWx0R1BSLCBiYXNlR1BSLCBpbmRleEdQUiwgc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obm9kZS0+aW50ZXJuYWxNZXRob2RUeXBlKCkpKSk7CiAgICAgICAg
IAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpTQm9v
bGVhbik7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCmluZGV4IDZkY2FmODViMmQyNjExM2IzYWY3ZjAyOGIwMjI1NmMyOGI2
YjBmMmMuLmY3ZWM1YzQzZTcyMmY0YjAzMmMyZWJmNDNmMDBjYTFmMjMxM2JhNGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTgwMzksMTIg
KzgwMzksMTIgQEAgcHJpdmF0ZToKICAgICAKICAgICB2b2lkIGNvbXBpbGVJbigpCiAgICAgewot
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgbV9ub2RlLT5jaGlsZDIoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSk7CisgICAgICAgIERGR19BU1NFUlQobV9ncmFwaCwgbV9ub2RlLCBt
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKIAogICAgICAgICBOb2RlKiBu
b2RlID0gbV9ub2RlOwotICAgICAgICBFZGdlIGJhc2UgPSBub2RlLT5jaGlsZDIoKTsKKyAgICAg
ICAgRWRnZSBiYXNlID0gbm9kZS0+Y2hpbGQxKCk7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93
Q2VsbChiYXNlKTsKLSAgICAgICAgaWYgKEpTU3RyaW5nKiBzdHJpbmcgPSBub2RlLT5jaGlsZDEo
KS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU1N0cmluZyo+KHZtKCkpKSB7CisgICAgICAgIGlmIChK
U1N0cmluZyogc3RyaW5nID0gbm9kZS0+Y2hpbGQyKCktPmR5bmFtaWNDYXN0Q29uc3RhbnQ8SlNT
dHJpbmcqPih2bSgpKSkgewogICAgICAgICAgICAgaWYgKHN0cmluZy0+dHJ5R2V0VmFsdWVJbXBs
KCkgJiYgc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKS0+aXNBdG9taWMoKSkgewogICAgICAgICAg
ICAgICAgIFVuaXF1ZWRTdHJpbmdJbXBsKiBzdHIgPSBiaXR3aXNlX2Nhc3Q8VW5pcXVlZFN0cmlu
Z0ltcGwqPihzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpKTsKICAgICAgICAgICAgICAgICBCMzo6
UGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0gbV9vdXQucGF0Y2hwb2ludChJbnQ2NCk7CkBA
IC04MTE2LDcgKzgxMTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgfQogICAgICAgICB9IAog
Ci0gICAgICAgIHNldEpTVmFsdWUodm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uR2VuZXJpY0luKSwgbV9jYWxsRnJhbWUsIGNlbGwsIGxvd0pTVmFsdWUobV9ub2RlLT5jaGls
ZDEoKSkpKTsKKyAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlv
bihvcGVyYXRpb25HZW5lcmljSW4pLCBtX2NhbGxGcmFtZSwgY2VsbCwgbG93SlNWYWx1ZShtX25v
ZGUtPmNoaWxkMigpKSkpOwogICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUhhc093blByb3BlcnR5
KCkKQEAgLTgzNTEsNiArODM1MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBMVmFsdWUgYmFz
ZSA9IGxvd0NlbGwobV9ub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgICAgICBMVmFsdWUgaW5kZXgg
PSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAgIExWYWx1ZSBzdG9yYWdl
ID0gbG93U3RvcmFnZShtX25vZGUtPmNoaWxkMygpKTsKKyAgICAgICAgICAgIExWYWx1ZSBpbnRl
cm5hbE1ldGhvZFR5cGUgPSBtX291dC5jb25zdEludDMyKHN0YXRpY19jYXN0PGludDMyX3Q+KG1f
bm9kZS0+aW50ZXJuYWxNZXRob2RUeXBlKCkpKTsKIAogICAgICAgICAgICAgSW5kZXhlZEFic3Ry
YWN0SGVhcCYgaGVhcCA9IG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpJbnQz
MiA/CiAgICAgICAgICAgICAgICAgbV9oZWFwcy5pbmRleGVkSW50MzJQcm9wZXJ0aWVzIDogbV9o
ZWFwcy5pbmRleGVkQ29udGlndW91c1Byb3BlcnRpZXM7CkBAIC04Mzc2LDcgKzgzNzcsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgbV9vdXQuYXBwZW5kVG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlv
bik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBzbG93UmVzdWx0ID0gbV9vdXQuYW5jaG9y
KG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIG1fb3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAgICAgICAgICAgICB2bUNhbGwoSW50NjQs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHkpLCBtX2NhbGxGcmFt
ZSwgYmFzZSwgaW5kZXgpKSk7CisgICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJhc2Us
IGluZGV4LCBpbnRlcm5hbE1ldGhvZFR5cGUpKSk7CiAgICAgICAgICAgICBtX291dC5qdW1wKGNv
bnRpbnVhdGlvbik7CiAKICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwg
bGFzdE5leHQpOwpAQCAtODM4Nyw2ICs4Mzg4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIExW
YWx1ZSBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIExWYWx1
ZSBpbmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICAgICAgTFZhbHVl
IHN0b3JhZ2UgPSBsb3dTdG9yYWdlKG1fbm9kZS0+Y2hpbGQzKCkpOworICAgICAgICAgICAgTFZh
bHVlIGludGVybmFsTWV0aG9kVHlwZSA9IG1fb3V0LmNvbnN0SW50MzIoc3RhdGljX2Nhc3Q8aW50
MzJfdD4obV9ub2RlLT5pbnRlcm5hbE1ldGhvZFR5cGUoKSkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBJbmRleGVkQWJzdHJhY3RIZWFwJiBoZWFwID0gbV9oZWFwcy5pbmRleGVkRG91Ymxl
UHJvcGVydGllczsKICAgICAgICAgICAgIApAQCAtODQxMSw3ICs4NDEzLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIG1fb3V0LmFwcGVuZFRvKHNsb3dDYXNlLCBjb250aW51YXRpb24pOwogICAg
ICAgICAgICAgVmFsdWVGcm9tQmxvY2sgc2xvd1Jlc3VsdCA9IG1fb3V0LmFuY2hvcihtX291dC5l
cXVhbCgKICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDY0KEpTVmFsdWU6OmVuY29kZShq
c0Jvb2xlYW4odHJ1ZSkpKSwgCi0gICAgICAgICAgICAgICAgdm1DYWxsKEludDY0LCBtX291dC5v
cGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KSwgbV9jYWxsRnJhbWUsIGJhc2Us
IGluZGV4KSkpOworICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9u
KG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCwg
aW50ZXJuYWxNZXRob2RUeXBlKSkpOwogICAgICAgICAgICAgbV9vdXQuanVtcChjb250aW51YXRp
b24pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRp
b24sIGxhc3ROZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCmluZGV4IDc0YWMxZDI4NGQxMjU3ZTk4NzM4YmUyZDk2NzU2ODQ2OTI1ZWI4Y2IuLmNiOTA2
ZGFhMjk3MTFhYTJjMGJiZGQxMGVhODBiMDMyZjM1ZDljYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2VuZXJpY0luKEV4ZWNTdGF0ZSogZXhlYywg
SlNDZWxsKiBiYXNlLCBFCiAgICAgVk0qIHZtID0gJmV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywgSlNWYWx1ZTo6ZGVjb2Rl
KGtleSksIGJhc2UpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oQ29t
bW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIGJhc2UsIEpTVmFsdWU6OmRlY29kZShrZXkpKSkpOwog
fQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUHV0QnlJZFN0cmljdChFeGVjU3RhdGUq
IGV4ZWMsIFN0cnVjdHVyZVN0dWJJbmZvKiBzdHViSW5mbywgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkQmFzZSwgVW5pcXVlZFN0cmluZ0ltcGwqIHVp
ZCkKQEAgLTIyNTQsMTIgKzIyNTQsMTIgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25IYXNHZW5lcmljUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGUKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihiYXNlLT5oYXNQcm9wZXJ0eUdlbmVyaWMo
ZXhlYywgYXNTdHJpbmcocHJvcGVydHlOYW1lKS0+dG9JZGVudGlmaWVyKGV4ZWMpLCBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHkpKSk7CiB9CiAKLUVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KEV4ZWNT
dGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlQ2VsbCwgaW50MzJfdCBzdWJzY3JpcHQpCitFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMsIEpTQ2VsbCogYmFzZUNlbGwsIGludDMyX3Qgc3Vic2NyaXB0LCBpbnQzMl90IGlu
dGVybmFsTWV0aG9kVHlwZSkKIHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwogICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJnZtLCBleGVjKTsKICAgICBKU09iamVjdCogb2JqZWN0
ID0gYmFzZUNlbGwtPnRvT2JqZWN0KGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ob2JqZWN0LT5oYXNQcm9wZXJ0
eUdlbmVyaWMoZXhlYywgc3Vic2NyaXB0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlw
ZTo6R2V0T3duUHJvcGVydHkpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4ob2JqZWN0LT5oYXNQcm9wZXJ0eUdlbmVyaWMoZXhlYywgc3Vic2NyaXB0LCBzdGF0aWNfY2Fz
dDxQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZT4oaW50ZXJuYWxNZXRob2RUeXBlKSkp
KTsKIH0KICAgICAKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25HZXRQcm9wZXJ0eUVu
dW1lcmF0b3IoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGNlbGwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCmluZGV4IDM0Yjc2MmFhYjIyYjA5M2FhMTJhNTg1Nzdl
ZDQzZjEwOGE0NDY4MGYuLjViNzAzZjBhMjJhNmFkN2IwMTQwZDZlOGEyNzI5OWQ4MDE0OTdkY2Qg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5oCkBAIC0xMzEsNiAr
MTMxLDcgQEAgdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVy
YXRpb25fRUNDKShFeGVjU3RhdGUqLCBKU0NlbGwqLAogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAo
SklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUNJKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBV
bmlxdWVkU3RyaW5nSW1wbCopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElP
TiAqSl9KSVRPcGVyYXRpb25fRUNKKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBFbmNvZGVkSlNWYWx1
ZSk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlv
bl9FQ1opKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGludDMyX3QpOwordHlwZWRlZiBFbmNvZGVkSlNW
YWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUNaWikoRXhlY1N0YXRlKiwgSlND
ZWxsKiwgaW50MzJfdCwgaW50MzJfdCk7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BF
UkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FREEpKEV4ZWNTdGF0ZSosIGRvdWJsZSwgSlNBcnJheSop
OwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklUX09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25f
RUUpKEV4ZWNTdGF0ZSosIEV4ZWNTdGF0ZSopOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSAoSklU
X09QRVJBVElPTiAqSl9KSVRPcGVyYXRpb25fRUdSZW9KKShFeGVjU3RhdGUqLCBKU0dsb2JhbE9i
amVjdCosIFJlZ0V4cE9iamVjdCosIEVuY29kZWRKU1ZhbHVlKTsKQEAgLTQzNSw3ICs0MzYsNyBA
QCBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQ2hlY2tJZkV4Y2VwdGlvbklzVW5jYXRj
aGFibGVBbmROb3RpZnlQcm9maWxlcihFeAogaW50MzJfdCBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkluc3RhbmNlT2ZDdXN0b20oRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVl
LCBKU09iamVjdCogY29uc3RydWN0b3IsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRIYXNJbnN0YW5j
ZSkgV1RGX0lOVEVSTkFMOwogCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bkhhc0dlbmVyaWNQcm9wZXJ0eShFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSwgSlNDZWxsKik7
Ci1FbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0
eShFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90KTsKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGlu
dDMyX3QsIGludDMyX3QpOwogSlNDZWxsKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3Bl
cnR5RW51bWVyYXRvcihFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9P
UEVSQVRJT04gb3BlcmF0aW9uTmV4dEVudW1lcmF0b3JQbmFtZShFeGVjU3RhdGUqLCBKU0NlbGwq
LCBpbnQzMl90KTsKIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25Ub0luZGV4U3RyaW5n
KEV4ZWNTdGF0ZSosIGludDMyX3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCmluZGV4IGVjMjQ3NzNhMzAwNDU3NmM0YmRkMTRj
ZmUwNDMwNzgzYzY5M2M3ZjkuLjZiNDk5NjQwNjIxNzIwMmI4ZWVhMGM2NDg1MmVhMjQ5NmM4NmJh
ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KQEAgLTEzOTEsNyArMTM5MSw3IEBAIF9sbGludF9vcF9pc19mdW5jdGlvbjoK
IF9sbGludF9vcF9pbjoKICAgICB0cmFjZUV4ZWN1dGlvbigpCiAgICAgY2FsbE9wY29kZVNsb3dQ
YXRoKF9zbG93X3BhdGhfaW4pCi0gICAgZGlzcGF0Y2goNCkKKyAgICBkaXNwYXRjaCg1KQogCiAK
IF9sbGludF9vcF90cnlfZ2V0X2J5X2lkOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9Ob2Rlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CmluZGV4IGM4YjU5MjIyMTUwODhjOTliYmQ4YmVhNDM2YTc2MzlmOTQzNTk1NmUuLjkzYzYxODk3
NjcwMzRkY2I3ZmQxZTMyMzJkOTk3YzQ3MjU4ZGUzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKQEAgLTExNTIsNiArMTE1Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIEluTm9kZSA6IHB1YmxpYyBUaHJvd2FibGVCaW5hcnlPcE5vZGUgewogICAgIHB1YmxpYzoK
ICAgICAgICAgSW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xh
c3MgRXF1YWxOb2RlIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcAppbmRleCA0YjhhNTI5NDA1ODBi
ZGRmMDc4YzlmMzdlNDE4YTE5MGM2YWYyZDAwLi41M2NjYWQ1MDFhYjQ1YTZkZDU0MzY5YmMzNzMx
OTE2ZGY3NGI3MTA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25G
dXp6LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIgorI2luY2x1ZGUgIklDU3RhdHMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIkl0ZXJhdG9yT3BlcmF0aW9ucy5oIgogI2luY2x1ZGUgIkpJVC5oIgpAQCAt
NjIwLDcgKzYyMSw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbikKIFNM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbikKIHsKICAgICBCRUdJTigpOwotICAgIFJFVFVSTihq
c0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIE9QX0MoMikuanNWYWx1ZSgpLCBP
UF9DKDMpLmpzVmFsdWUoKSkpKTsKKyAgICBSRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRo
czo6b3BJbihleGVjLCBPUF9DKDIpLmpzVmFsdWUoKSwgT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRd
LnUuYXJyYXlQcm9maWxlKSkpOwogfQogCiBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5
X3ZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKaW5kZXggZmNjMzBkMDVlMjRlMTE1MzAyMTgzODMxNWQ2M2VhYWY0Y2NmMjk0MS4uN2E2Mjcy
OGY4NTFmOGNjMzU4NDkzZWMzOWE3MTM4MWEzZmQyNjk5MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKQEAgLTcxLDcgKzcxLDcgQEAgQUxX
QVlTX0lOTElORSBpbnQgYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFZNJiB2bSwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZAogICAgIHJldHVybiBwYWRkZWRTdGFja1NwYWNlOwogfQogCi1p
bmxpbmUgYm9vbCBvcEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm9wTmFtZSwgSlNWYWx1
ZSBiYXNlVmFsKQoraW5saW5lIGJvb2wgb3BJbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFz
ZVZhbCwgSlNWYWx1ZSBwcm9wTmFtZSwgQXJyYXlQcm9maWxlKiBhcnJheVByb2ZpbGUgPSBudWxs
cHRyKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwpAQCAtODEsNiArODEsOCBAQCBpbmxpbmUgYm9vbCBvcEluKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm9wTmFtZSwgSlNWYWx1ZSBiYXNlVmFsKQogICAgIH0K
IAogICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoYmFzZVZhbCk7CisgICAgaWYgKGFy
cmF5UHJvZmlsZSkKKyAgICAgICAgYXJyYXlQcm9maWxlLT5vYnNlcnZlU3RydWN0dXJlKGJhc2VP
YmotPnN0cnVjdHVyZSh2bSkpOwogCiAgICAgdWludDMyX3QgaTsKICAgICBpZiAocHJvcE5hbWUu
Z2V0VUludDMyKGkpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300954</attachid>
            <date>2017-02-08 13:36:41 -0800</date>
            <delta_ts>2017-02-08 16:03:53 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164581-20170208133417.patch</filename>
            <type>text/plain</type>
            <size>28263</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExNjU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZjdkMWRhMjIzYThmYzYzMzg0OTAwYjk5OTUxZTUzNzBhZGU0M2VjLi5iNGM1MjQzYjE5NGQ4Nzlh
MWI5YmExZjNkOTNlMjYyZmQyNDZjZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNy0wMi0wOCAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBvcF9pbiBzaG91bGQgaGF2ZSBBcnJheVByb2ZpbGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDU4MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IEZpbGlwIFBpemxvLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBhbiBBcnJheVByb2ZpbGUgdG8gdGhlIG9wX2luIGJ5dGVjb2RlLiBJbiB0aGUKKyAgICAgICAg
REZHLCBpZiB3ZSBzZWUgdGhhdCB3ZSB0aGUga2V5IGlzIGFuIGludDMyIHdlIHdpbGwgY29udmVy
dCB0aGUgSW4KKyAgICAgICAgREZHIG5vZGUgdG8gYSBIYXNJbmRleGVkUHJvcGVydHkgbm9kZSBp
bnN0ZWFkLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWxzbyBmbGlwcyB0aGUgdHdvIGFyZ3VtZW50
cyBvZiBvcF9pbiBhbmQgdGhlIEluIG5vZGUKKyAgICAgICAgdG8gcmVmbGVjdCB0aGUgb3RoZXIg
cHJvcGVydHkgbG9va3VwIGJ5dGVjb2Rlcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
TGlzdC5qc29uOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbik6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0SW4pOiBEZWxldGVkLgorICAgICAgICAqIGJ5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpJbk5vZGU6OmVtaXRCeXRlY29kZSk6Cisg
ICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAg
IChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Y29udmVydFRvSGFzSW5kZXhlZFByb3BlcnR5KToKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6Omhhc0FycmF5
TW9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzSW50ZXJuYWxNZXRob2RUeXBlKToK
KyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjppbnRlcm5hbE1ldGhvZFR5cGUpOgorICAgICAgICAo
SlNDOjpERkc6Ok5vZGU6OnNldEludGVybmFsTWV0aG9kVHlwZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlvbik6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjpjb21waWxlSW4pOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0Iz
Ojpjb21waWxlSGFzSW5kZXhlZFByb3BlcnR5KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogaml0L0pJVE9wZXJhdGlvbnMuaDoKKyAgICAgICAgKiBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHA6CisgICAgICAgIChKU0M6OlNMT1dfUEFU
SF9ERUNMKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAo
SlNDOjpDb21tb25TbG93UGF0aHM6Om9wSW4pOgorCiAyMDE3LTAyLTAzICBTYWFtIEJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFdoZW4gT1NSIGVudGVyaW5nIHRvIHRoZSBi
YXNlbGluZSBKSVQgZnJvbSB0aGUgTExJbnQgZm9yIGEgUHJvZ3JhbUNvZGVCbG9jayB3ZSBjYW4g
c2tpcCBjb21waWxpbmcgYSBsb3Qgb2YgdGhlIHByb2dyYW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbiBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUxpc3QuanNvbgppbmRleCBmYWZkZWQ3ZWY2ZWMzMWE4
YjZkZDBmNTI4Zjg2OGNmMjNlZTE1YTM2Li5hZGE0NDI5Zjc5NmZmNTVjYTBjZTM4OWE3YzA1ZWVj
OGJmZjk5MzYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVMaXN0Lmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlTGlzdC5qc29uCkBAIC02Miw3ICs2Miw3IEBACiAgICAgICAgICAgICB7ICJuYW1lIiA6ICJv
cF9pc19vYmplY3Rfb3JfbnVsbCIsICJsZW5ndGgiIDogMyB9LAogICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfaXNfZnVuY3Rpb24iLCAibGVuZ3RoIiA6IDMgfSwKICAgICAgICAgICAgIHsgIm5h
bWUiIDogIm9wX2lzX2NlbGxfd2l0aF90eXBlIiwgImxlbmd0aCIgOiA0IH0sCi0gICAgICAgICAg
ICB7ICJuYW1lIiA6ICJvcF9pbiIsICJsZW5ndGgiIDogNCB9LAorICAgICAgICAgICAgeyAibmFt
ZSIgOiAib3BfaW4iLCAibGVuZ3RoIiA6IDUgfSwKICAgICAgICAgICAgIHsgIm5hbWUiIDogIm9w
X2dldF9hcnJheV9sZW5ndGgiLCAibGVuZ3RoIiA6IDkgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2dldF9ieV9pZCIsICJsZW5ndGgiIDogOSAgfSwKICAgICAgICAgICAgIHsgIm5hbWUi
IDogIm9wX2dldF9ieV9pZF9wcm90b19sb2FkIiwgImxlbmd0aCIgOiA5IH0sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IGQ0ZDNjZWI5YmUwMWU1
OTFmMDVlY2YyODFmYzBlODQ3N2U2YmI4NzcuLmM1NTkwYWIwYmVjZTNiZWQ5MzdhODY0NDczMmY1
MDIyYjg4YTYxM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCkBAIC0xMTA1LDYgKzExMDUsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2Rl
KAogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfaW46IHsKICAgICAgICAgICAgIHByaW50Qmlu
YXJ5T3Aob3V0LCBleGVjLCBsb2NhdGlvbiwgaXQsICJpbiIpOworICAgICAgICAgICAgZHVtcEFy
cmF5UHJvZmlsaW5nKG91dCwgaXQsIGhhc1ByaW50ZWRQcm9maWxpbmcpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF90cnlfZ2V0X2J5X2lkOiB7CkBAIC0y
MDk1LDEyICsyMDk2LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
U2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmsKICAgICAgICAgICAgIGxp
bmtWYWx1ZVByb2ZpbGUoaSwgb3BMZW5ndGgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOiB7Ci0gICAgICAgICAgICBpbnQgYXJyYXlQ
cm9maWxlSW5kZXggPSBwY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZDsKLSAgICAgICAgICAgIG1f
YXJyYXlQcm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7Ci0gICAg
ICAgICAgICBpbnN0cnVjdGlvbnNbaSArIG9wTGVuZ3RoIC0gMV0gPSAmbV9hcnJheVByb2ZpbGVz
W2FycmF5UHJvZmlsZUluZGV4XTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBvcF9pbjoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfdmFsOgogICAgICAgICBj
YXNlIG9wX3B1dF9ieV92YWxfZGlyZWN0OiB7CiAgICAgICAgICAgICBpbnQgYXJyYXlQcm9maWxl
SW5kZXggPSBwY1tvcExlbmd0aCAtIDFdLnUub3BlcmFuZDsKICAgICAgICAgICAgIG1fYXJyYXlQ
cm9maWxlc1thcnJheVByb2ZpbGVJbmRleF0gPSBBcnJheVByb2ZpbGUoaSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCmluZGV4IDk0NWZjZTk5ZGZiNTU2NzUxY2EwZWI3ZmUxYjllZjM3MTM5YWY5YWYuLmUwNGE1
NWVjYzg3MWM1MjI2NzY2NGZhYmFmOTRhMDRlNGU5ZDAyODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBA
IC0yNTcxLDYgKzI1NzEsMTcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJ
bnN0YW5jZU9mQ3VzdG9tKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCoKICAgICByZXR1cm4g
ZHN0OwogfQogCitSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEluKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpCit7CisgICAg
VW5saW5rZWRBcnJheVByb2ZpbGUgYXJyYXlQcm9maWxlID0gbmV3QXJyYXlQcm9maWxlKCk7Cisg
ICAgZW1pdE9wY29kZShvcF9pbik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5k
ZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOworICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChwcm9wZXJ0eS0+aW5kZXgoKSk7CisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGFycmF5UHJvZmlsZSk7CisgICAgcmV0dXJuIGRzdDsKK30KKwogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUcnlHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVn
aXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7CiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghcGFyc2VJbmRleChwcm9wZXJ0eSksICJJbmRleGVkIHByb3BlcnRpZXMg
YXJlIG5vdCBzdXBwb3J0ZWQgd2l0aCB0cnlHZXRCeUlkLiIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGJj
NzFkMjYxZjk1M2FiM2JlN2Q1ODJjYTIyMGQxNThiNjA4MDA1MzcuLmMzODI5ZjI5OWMxNzk2NDI1
YjczM2MxNGE3ZDVmMzljZjFjMzdjMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTYyOCw3ICs2MjgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluc3RhbmNlT2YoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiB2YWx1ZSwgUmVnaXN0ZXJJRCogYmFzZVByb3RvdHlw
ZSk7CiAgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbnN0YW5jZU9mQ3VzdG9tKFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXJJRCogdmFsdWUsIFJlZ2lzdGVySUQqIGNvbnN0cnVjdG9yLCBSZWdpc3Rl
cklEKiBoYXNJbnN0YW5jZVZhbHVlKTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFR5cGVPZihS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIHNyYykgeyByZXR1cm4gZW1pdFVuYXJ5T3Aob3Bf
dHlwZW9mLCBkc3QsIHNyYyk7IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEluKFJlZ2lzdGVy
SUQqIGRzdCwgUmVnaXN0ZXJJRCogcHJvcGVydHksIFJlZ2lzdGVySUQqIGJhc2UpIHsgcmV0dXJu
IGVtaXRCaW5hcnlPcChvcF9pbiwgZHN0LCBwcm9wZXJ0eSwgYmFzZSwgT3BlcmFuZFR5cGVzKCkp
OyB9CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRJbihSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIHByb3BlcnR5LCBSZWdpc3RlcklEKiBiYXNlKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBl
bWl0VHJ5R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5KTsKICAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEdldEJ5SWQoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAKaW5kZXggMWIxN2E4YjljNTlmY2Q2MTkyMTE0NmI1NzM5ODliZWNiMzNhMWFjMS4u
ZWJlY2MwZGUxMTdmZDM5ZjA2NDE0YjU3MTE3NjA1ZTA0NDZmZTYyNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtMjA0
Miw2ICsyMDQyLDE3IEBAIFJlZ2lzdGVySUQqIEluc3RhbmNlT2ZOb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAgICAgcmV0dXJuIGRzdFJl
Zy5nZXQoKTsKIH0KIAorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEluTm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1JlZ2lzdGVySUQqIEluTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3sK
KyAgICBSZWZQdHI8UmVnaXN0ZXJJRD4ga2V5ID0gZ2VuZXJhdG9yLmVtaXROb2RlRm9yTGVmdEhh
bmRTaWRlKG1fZXhwcjEsIG1fcmlnaHRIYXNBc3NpZ25tZW50cywgbV9leHByMi0+aXNQdXJlKGdl
bmVyYXRvcikpOworICAgIFJlZlB0cjxSZWdpc3RlcklEPiBiYXNlID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG1fZXhwcjIpOworICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwg
ZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRJbihn
ZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIGtleS5nZXQoKSksIGtleS5nZXQoKSwgYmFz
ZS5nZXQoKSk7Cit9CisKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvZ2lj
YWxPcE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBSZWdpc3RlcklEKiBMb2dp
Y2FsT3BOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAppbmRleCA5MmUwNjhmYmJhNjZhNzI0Y2Y1YTA2ZjVkNzkzOTJjMzdhNDM4ZjE4
Li5lNTY1MWYyYjVjZGZlY2Y2MjgwNTNmYmYyYTAxZGRhYjIxZjAwNjA1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNTQ4MSw4ICs1
NDgxLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkK
ICAgICAgICAgfQogCiAgICAgICAgIGNhc2Ugb3BfaW46IHsKKyAgICAgICAgICAgIEFycmF5TW9k
ZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uW09QQ09ERV9MRU5H
VEgob3BfaW4pIC0gMV0udS5hcnJheVByb2ZpbGUpOwogICAgICAgICAgICAgc2V0KFZpcnR1YWxS
ZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwKLSAgICAgICAgICAgICAg
ICBhZGRUb0dyYXBoKEluLCBnZXQoVmlydHVhbFJlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kKSkpKTsKKyAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEluLCBPcEluZm8oYXJy
YXlNb2RlLmFzV29yZCgpKSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25b
Ml0udS5vcGVyYW5kKSksIGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZCkpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9pbik7CiAgICAgICAg
IH0KIApAQCAtNTUxMSw3ICs1NTEyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIE5vZGUqIGJhc2UgPSBnZXQoVmlydHVhbFJl
Z2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIEFy
cmF5TW9kZSBhcnJheU1vZGUgPSBnZXRBcnJheU1vZGUoY3VycmVudEluc3RydWN0aW9uWzRdLnUu
YXJyYXlQcm9maWxlLCBBcnJheTo6UmVhZCk7CiAgICAgICAgICAgICBOb2RlKiBwcm9wZXJ0eSA9
IGdldChWaXJ0dWFsUmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCkpOwot
ICAgICAgICAgICAgTm9kZSogaGFzSXRlcmFibGVQcm9wZXJ0eSA9IGFkZFRvR3JhcGgoSGFzSW5k
ZXhlZFByb3BlcnR5LCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgYmFzZSwgcHJvcGVydHkp
OworICAgICAgICAgICAgTm9kZSogaGFzSXRlcmFibGVQcm9wZXJ0eSA9IGFkZFRvR3JhcGgoSGFz
SW5kZXhlZFByb3BlcnR5LCBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgT3BJbmZvKHN0YXRp
Y19jYXN0PHVpbnQzMl90PihQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3du
UHJvcGVydHkpKSwgYmFzZSwgcHJvcGVydHkpOwogICAgICAgICAgICAgc2V0KFZpcnR1YWxSZWdp
c3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgaGFzSXRlcmFibGVQcm9wZXJ0
eSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9oYXNfaW5kZXhlZF9wcm9wZXJ0eSk7CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQ
aGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmlu
ZGV4IDA5NTg3ZmM2MWJhNTQ5NzJlNTUwMzY4ZDc3Mzk1OTVjYWM1NmM1MGIuLjRhY2E5OTY0MjQ1
ZWU4OTk3MzQxY2E4ZDhlM2JkMTUyY2VmYjVhNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTM2MywxMCArMTM2MywxMiBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBJbjogewotICAgICAgICAgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBhdCBzb21lIHBvaW50IGhhdmUgYXJyYXkgcHJvZmlsaW5nIG9uIG9w
X2luLCBpbiB3aGljaAotICAgICAgICAgICAgLy8gY2FzZSB3ZSB3b3VsZCBiZSBhYmxlIHRvIHR1
cm4gdGhpcyBpbnRvIGEga2luZCBvZiBHZXRCeVZhbC4KLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgZml4RWRnZTxDZWxsVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQyKCktPnNob3VsZFNwZWN1bGF0ZUludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBj
b252ZXJ0VG9IYXNJbmRleGVkUHJvcGVydHkobm9kZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjY1Miw3ICsyNjU0
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdHJ1bmNhdGVDb25zdGFu
dFRvSW50MzIobm9kZS0+Y2hpbGQyKCkpOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgYXR0ZW1w
dFRvTWFrZUludGVnZXJBZGQoTm9kZSogbm9kZSkKICAgICB7CiAgICAgICAgIEFkZFNwZWN1bGF0
aW9uTW9kZSBtb2RlID0gbV9ncmFwaC5hZGRTcGVjdWxhdGlvbk1vZGUobm9kZSwgRml4dXBQYXNz
KTsKQEAgLTI3NDMsNyArMjc0NSwyNSBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9pbmRleElu
QmxvY2ssIFNwZWNJbnQzMk9ubHksIEdldEFycmF5TGVuZ3RoLCBvcmlnaW4sCiAgICAgICAgICAg
ICBPcEluZm8oYXJyYXlNb2RlLmFzV29yZCgpKSwgRWRnZShjaGlsZCwgS25vd25DZWxsVXNlKSwg
RWRnZShzdG9yYWdlKSk7CiAgICAgfQotICAgIAorCisgICAgdm9pZCBjb252ZXJ0VG9IYXNJbmRl
eGVkUHJvcGVydHkoTm9kZSogbm9kZSkKKyAgICB7CisgICAgICAgIG5vZGUtPnNldE9wKEhhc0lu
ZGV4ZWRQcm9wZXJ0eSk7CisgICAgICAgIG5vZGUtPmNsZWFyRmxhZ3MoTm9kZU11c3RHZW5lcmF0
ZSk7CisgICAgICAgIG5vZGUtPnNldEFycmF5TW9kZSgKKyAgICAgICAgICAgIG5vZGUtPmFycmF5
TW9kZSgpLnJlZmluZSgKKyAgICAgICAgICAgICAgICBtX2dyYXBoLCBub2RlLAorICAgICAgICAg
ICAgICAgIG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCksCisgICAgICAgICAgICAgICAgbm9k
ZS0+Y2hpbGQyKCktPnByZWRpY3Rpb24oKSwKKyAgICAgICAgICAgICAgICBTcGVjTm9uZSkpOwor
ICAgICAgICBub2RlLT5zZXRJbnRlcm5hbE1ldGhvZFR5cGUoUHJvcGVydHlTbG90OjpJbnRlcm5h
bE1ldGhvZFR5cGU6Okhhc1Byb3BlcnR5KTsKKworICAgICAgICBibGVzc0FycmF5T3BlcmF0aW9u
KG5vZGUtPmNoaWxkMSgpLCBub2RlLT5jaGlsZDIoKSwgbm9kZS0+Y2hpbGQzKCkpOworCisgICAg
ICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBmaXhFZGdlPElu
dDMyVXNlPihub2RlLT5jaGlsZDIoKSk7CisgICAgfQorCiAgICAgYm9vbCBhdHRlbXB0VG9NYWtl
Q2FsbERPTShOb2RlKiBub2RlKQogICAgIHsKICAgICAgICAgaWYgKG1fZ3JhcGguaGFzRXhpdFNp
dGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBCYWRUeXBlKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgKaW5kZXggODZhNWY4NGY1MGJmOTFlYzBjMTg5NzU2YzgwNTMwZTY0Y2JmNDdkOC4u
ZTU5MDQyNDgxZjRhNjRkOTI3NGNkNWNkMjYyYjhhNjc5YjE4NDMwMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKQEAgLTE3ODgsNiArMTc4OCw3IEBAIHB1YmxpYzoKICAgICAgICAg
c3dpdGNoIChvcCgpKSB7CiAgICAgICAgIGNhc2UgR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZToK
ICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgY2FzZSBJbjoKICAgICAgICAg
Y2FzZSBQdXRCeVZhbERpcmVjdDoKICAgICAgICAgY2FzZSBQdXRCeVZhbDoKICAgICAgICAgY2Fz
ZSBQdXRCeVZhbEFsaWFzOgpAQCAtMjQyMSw2ICsyNDIyLDIzIEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPGNvbnN0IERPTUpJVDo6U2lnbmF0dXJlKj4oKTsKICAgICB9CiAK
KyAgICBib29sIGhhc0ludGVybmFsTWV0aG9kVHlwZSgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gb3AoKSA9PSBIYXNJbmRleGVkUHJvcGVydHk7CisgICAgfQorCisgICAgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGUgaW50ZXJuYWxNZXRob2RUeXBlKCkgY29uc3QKKyAgICB7
CisgICAgICAgIEFTU0VSVChoYXNJbnRlcm5hbE1ldGhvZFR5cGUoKSk7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZT4obV9vcEluZm8y
LmFzPHVpbnQzMl90PigpKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEludGVybmFsTWV0aG9kVHlw
ZShQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGhhc0ludGVybmFsTWV0aG9kVHlwZSgpKTsKKyAgICAgICAgbV9vcEluZm8yID0gc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUpOworICAgIH0KKwogICAgIE5vZGUqIHJlcGxhY2VtZW50
KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBtX21pc2MucmVwbGFjZW1lbnQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDY3
MWMwNjM3N2Y0ZTkwZmNmMmU5NmI5ZTc3NTBiNjRkYjgyZDE1NjEuLjQ5MDIwZWViZDMxNDBjYzJm
YjM1MTVjNmNiZDkyNmEyYWViZTQ3YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xMDM3LDE3ICsxMDM3LDE3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVUcnlHZXRCeUlkKE5vZGUqIG5vZGUpCiAKIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVJbihOb2RlKiBub2RlKQogewotICAgIFNwZWN1bGF0ZUNlbGxPcGVy
YW5kIGJhc2UodGhpcywgbm9kZS0+Y2hpbGQyKCkpOworICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5k
IGJhc2UodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5n
cHIoKTsKICAgICAKLSAgICBpZiAoSlNTdHJpbmcqIHN0cmluZyA9IG5vZGUtPmNoaWxkMSgpLT5k
eW5hbWljQ2FzdENvbnN0YW50PEpTU3RyaW5nKj4oKm1faml0LnZtKCkpKSB7CisgICAgaWYgKEpT
U3RyaW5nKiBzdHJpbmcgPSBub2RlLT5jaGlsZDIoKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU1N0
cmluZyo+KCptX2ppdC52bSgpKSkgewogICAgICAgICBpZiAoc3RyaW5nLT50cnlHZXRWYWx1ZUlt
cGwoKSAmJiBzdHJpbmctPnRyeUdldFZhbHVlSW1wbCgpLT5pc0F0b21pYygpKSB7CiAgICAgICAg
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyogc3R1YkluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRk
U3R1YkluZm8oQWNjZXNzVHlwZTo6SW4pOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJl
c3VsdC5ncHIoKTsKIAotICAgICAgICAgICAgdXNlKG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAg
ICAgIHVzZShub2RlLT5jaGlsZDIoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpQYXRjaGFibGVKdW1wIGp1bXAgPSBtX2ppdC5wYXRjaGFibGVKdW1wKCk7CiAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6TGFiZWwgZG9uZSA9IG1faml0LmxhYmVsKCk7CkBA
IC0xMDc5LDcgKzEwNzksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlSW4oTm9kZSog
bm9kZSkKICAgICAgICAgfQogICAgIH0KIAotICAgIEpTVmFsdWVPcGVyYW5kIGtleSh0aGlzLCBu
b2RlLT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZU9wZXJhbmQga2V5KHRoaXMsIG5vZGUtPmNoaWxk
MigpKTsKICAgICBKU1ZhbHVlUmVncyByZWdzID0ga2V5LmpzVmFsdWVSZWdzKCk7CiAgICAgICAg
IAogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRleCA3YzJmMDY3YzU3MzFlODRi
MzI0OGE5YzZmZDhlNWVjZGM0ZmI5NDhjLi4wYzE2OTFiYmMxNTUyZDg4MTZkYTk0NTM0MmFmMGRj
OTZiZWM5MTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oCkBAIC0xNTM5LDYgKzE1MzksMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgYXJnMik7CiAgICAgICAgIHJldHVybiBhcHBl
bmRDYWxsU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29tcGls
ZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihKX0pJVE9wZXJhdGlvbl9FQ1paIG9wZXJhdGlvbiwgR1BS
UmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyLCBpbnQzMl90IGNvbnN0YW50KQor
ICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFy
ZzIsIFRydXN0ZWRJbW0zMihjb25zdGFudCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRVNzaUNJIG9wZXJhdGlvbiwgR1BSUmVnIHJl
c3VsdCwgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvLCBHUFJSZWcgYXJnMSwgY29uc3QgVW5p
cXVlZFN0cmluZ0ltcGwqIHVpZCkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0dWJJbmZvKSwgYXJnMSwgVHJ1c3RlZEltbVB0
cih1aWQpKTsKQEAgLTIwNzQsNiArMjA3OSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKICAgICAgICAgcmV0dXJuIGFw
cGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQu
dGFnR1BSKCkpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpf
SklUT3BlcmF0aW9uX0VDWlogb3BlcmF0aW9uLCBKU1ZhbHVlUmVncyByZXN1bHQsIEdQUlJlZyBh
cmcxLCBHUFJSZWcgYXJnMiwgaW50MzJfdCBjb25zdGFudCkKKyAgICB7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyLCBUcnVzdGVkSW1tMzIoY29u
c3RhbnQpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQucGF5bG9hZEdQUigpLCByZXN1bHQudGFnR1BSKCkpOworICAgIH0KICAgICBKSVRDb21w
aWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKc2NDIG9wZXJhdGlvbiwg
SlNWYWx1ZVJlZ3MgcmVzdWx0LCBHUFJSZWcgYXJnMSwgSlNDZWxsKiBjZWxsKQogICAgIHsKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHI6OndlYWtQb2ludGVyKG1faml0LmdyYXBoKCksIGNlbGwpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDIwMTY1
Y2EwN2QxYjkzZDU2NjhlOTkzYjgzMzdkNjdmNzdkODU4MTMuLjNmNmQ2ZTJkNjZmODc5ODBlMTFl
NmJmZmNkOTMxYTA5ODk5ZjI4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNTI4MCw3ICs1MjgwLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtb3ZlVHJ1ZVRv
KHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0g
bV9qaXQuanVtcCgpOwogCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKHNsb3dQYXRoQ2Fs
bChzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbkhhc0luZGV4ZWRQcm9wZXJ0eSwgSlNWYWx1ZVJl
Z3MocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKSwgYmFzZUdQUiwgaW5kZXhHUFIpKTsK
KyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xvd1BhdGhDYWxsKHNsb3dDYXNlcywgdGhp
cywgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5LCBKU1ZhbHVlUmVncyhyZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIpLCBiYXNlR1BSLCBpbmRleEdQUiwgc3RhdGljX2Nhc3Q8aW50MzJf
dD4obm9kZS0+aW50ZXJuYWxNZXRob2RUeXBlKCkpKSk7CiAgICAgICAgIAogICAgICAgICBkb25l
LmxpbmsoJm1faml0KTsKICAgICAgICAgYm9vbGVhblJlc3VsdChyZXN1bHRQYXlsb2FkR1BSLCBu
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwCmluZGV4IDFjYTg4MzI1ZjBmYjEyMTliMWFiZDE0NGY3YjRlYjhhMDU2MWYyNzYuLmMz
ZTg1MWNkZjFjOWU3NDYzNmRhYTcwM2UwYTdjMWQ4YzI4OGM5MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtNTQ3Niw3ICs1
NDc2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihzbG93UGF0aENh
bGwoc2xvd0Nhc2VzLCB0aGlzLCBvcGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHksIHJlc3VsdEdQ
UiwgYmFzZUdQUiwgaW5kZXhHUFIpKTsKKyAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Ioc2xv
d1BhdGhDYWxsKHNsb3dDYXNlcywgdGhpcywgb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5LCBy
ZXN1bHRHUFIsIGJhc2VHUFIsIGluZGV4R1BSLCBzdGF0aWNfY2FzdDxpbnQzMl90Pihub2RlLT5p
bnRlcm5hbE1ldGhvZFR5cGUoKSkpKTsKICAgICAgICAgCiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0R1BSLCBub2RlLCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKaW5kZXggNmRj
YWY4NWIyZDI2MTEzYjNhZjdmMDI4YjAyMjU2YzI4YjZiMGYyYy4uZjdlYzVjNDNlNzIyZjRiMDMy
YzJlYmY0M2YwMGNhMWYyMzEzYmE0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMTG93ZXJERkdUb0IzLmNwcApAQCAtODAzOSwxMiArODAzOSwxMiBAQCBwcml2YXRlOgogICAg
IAogICAgIHZvaWQgY29tcGlsZUluKCkKICAgICB7Ci0gICAgICAgIERGR19BU1NFUlQobV9ncmFw
aCwgbV9ub2RlLCBtX25vZGUtPmNoaWxkMigpLnVzZUtpbmQoKSA9PSBDZWxsVXNlKTsKKyAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG1fbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgp
ID09IENlbGxVc2UpOwogCiAgICAgICAgIE5vZGUqIG5vZGUgPSBtX25vZGU7Ci0gICAgICAgIEVk
Z2UgYmFzZSA9IG5vZGUtPmNoaWxkMigpOworICAgICAgICBFZGdlIGJhc2UgPSBub2RlLT5jaGls
ZDEoKTsKICAgICAgICAgTFZhbHVlIGNlbGwgPSBsb3dDZWxsKGJhc2UpOwotICAgICAgICBpZiAo
SlNTdHJpbmcqIHN0cmluZyA9IG5vZGUtPmNoaWxkMSgpLT5keW5hbWljQ2FzdENvbnN0YW50PEpT
U3RyaW5nKj4odm0oKSkpIHsKKyAgICAgICAgaWYgKEpTU3RyaW5nKiBzdHJpbmcgPSBub2RlLT5j
aGlsZDIoKS0+ZHluYW1pY0Nhc3RDb25zdGFudDxKU1N0cmluZyo+KHZtKCkpKSB7CiAgICAgICAg
ICAgICBpZiAoc3RyaW5nLT50cnlHZXRWYWx1ZUltcGwoKSAmJiBzdHJpbmctPnRyeUdldFZhbHVl
SW1wbCgpLT5pc0F0b21pYygpKSB7CiAgICAgICAgICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwq
IHN0ciA9IGJpdHdpc2VfY2FzdDxVbmlxdWVkU3RyaW5nSW1wbCo+KHN0cmluZy0+dHJ5R2V0VmFs
dWVJbXBsKCkpOwogICAgICAgICAgICAgICAgIEIzOjpQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9p
bnQgPSBtX291dC5wYXRjaHBvaW50KEludDY0KTsKQEAgLTgxMTYsNyArODExNiw3IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gCiAKLSAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25HZW5lcmljSW4pLCBtX2NhbGxGcmFt
ZSwgY2VsbCwgbG93SlNWYWx1ZShtX25vZGUtPmNoaWxkMSgpKSkpOworICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkdlbmVyaWNJbiksIG1f
Y2FsbEZyYW1lLCBjZWxsLCBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAgICAgfQog
CiAgICAgdm9pZCBjb21waWxlSGFzT3duUHJvcGVydHkoKQpAQCAtODM1MSw2ICs4MzUxLDcgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIExWYWx1ZSBiYXNlID0gbG93Q2VsbChtX25vZGUtPmNoaWxk
MSgpKTsKICAgICAgICAgICAgIExWYWx1ZSBpbmRleCA9IGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQy
KCkpOwogICAgICAgICAgICAgTFZhbHVlIHN0b3JhZ2UgPSBsb3dTdG9yYWdlKG1fbm9kZS0+Y2hp
bGQzKCkpOworICAgICAgICAgICAgTFZhbHVlIGludGVybmFsTWV0aG9kVHlwZSA9IG1fb3V0LmNv
bnN0SW50MzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4obV9ub2RlLT5pbnRlcm5hbE1ldGhvZFR5cGUo
KSkpOwogCiAgICAgICAgICAgICBJbmRleGVkQWJzdHJhY3RIZWFwJiBoZWFwID0gbV9ub2RlLT5h
cnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkludDMyID8KICAgICAgICAgICAgICAgICBtX2hl
YXBzLmluZGV4ZWRJbnQzMlByb3BlcnRpZXMgOiBtX2hlYXBzLmluZGV4ZWRDb250aWd1b3VzUHJv
cGVydGllczsKQEAgLTgzNzYsNyArODM3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBtX291
dC5hcHBlbmRUbyhzbG93Q2FzZSwgY29udGludWF0aW9uKTsKICAgICAgICAgICAgIFZhbHVlRnJv
bUJsb2NrIHNsb3dSZXN1bHQgPSBtX291dC5hbmNob3IobV9vdXQuZXF1YWwoCiAgICAgICAgICAg
ICAgICAgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKSks
IAotICAgICAgICAgICAgICAgIHZtQ2FsbChJbnQ2NCwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlv
bkhhc0luZGV4ZWRQcm9wZXJ0eSksIG1fY2FsbEZyYW1lLCBiYXNlLCBpbmRleCkpKTsKKyAgICAg
ICAgICAgICAgICB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRl
eGVkUHJvcGVydHkpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgsIGludGVybmFsTWV0aG9kVHlw
ZSkpKTsKICAgICAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKIAogICAgICAgICAg
ICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CkBAIC04Mzg3LDYgKzgz
ODgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgTFZhbHVlIGJhc2UgPSBsb3dDZWxsKG1fbm9k
ZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgTFZhbHVlIGluZGV4ID0gbG93SW50MzIobV9ub2Rl
LT5jaGlsZDIoKSk7CiAgICAgICAgICAgICBMVmFsdWUgc3RvcmFnZSA9IGxvd1N0b3JhZ2UobV9u
b2RlLT5jaGlsZDMoKSk7CisgICAgICAgICAgICBMVmFsdWUgaW50ZXJuYWxNZXRob2RUeXBlID0g
bV9vdXQuY29uc3RJbnQzMihzdGF0aWNfY2FzdDxpbnQzMl90PihtX25vZGUtPmludGVybmFsTWV0
aG9kVHlwZSgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIEluZGV4ZWRBYnN0cmFjdEhl
YXAmIGhlYXAgPSBtX2hlYXBzLmluZGV4ZWREb3VibGVQcm9wZXJ0aWVzOwogICAgICAgICAgICAg
CkBAIC04NDExLDcgKzg0MTMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9vdXQuYXBwZW5k
VG8oc2xvd0Nhc2UsIGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICBWYWx1ZUZyb21CbG9jayBz
bG93UmVzdWx0ID0gbV9vdXQuYW5jaG9yKG1fb3V0LmVxdWFsKAogICAgICAgICAgICAgICAgIG1f
b3V0LmNvbnN0SW50NjQoSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSkpLCAKLSAgICAg
ICAgICAgICAgICB2bUNhbGwoSW50NjQsIG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25IYXNJbmRl
eGVkUHJvcGVydHkpLCBtX2NhbGxGcmFtZSwgYmFzZSwgaW5kZXgpKSk7CisgICAgICAgICAgICAg
ICAgdm1DYWxsKEludDY0LCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uSGFzSW5kZXhlZFByb3Bl
cnR5KSwgbV9jYWxsRnJhbWUsIGJhc2UsIGluZGV4LCBpbnRlcm5hbE1ldGhvZFR5cGUpKSk7CiAg
ICAgICAgICAgICBtX291dC5qdW1wKGNvbnRpbnVhdGlvbik7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggNzRhYzFkMjg0ZDEyNTdl
OTg3MzhiZTJkOTY3NTY4NDY5MjVlYjhjYi4uY2I5MDZkYWEyOTcxMWFhMmMwYmJkZDEwZWE4MGIw
MzJmMzVkOWNiMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMu
Y3BwCkBAIC0zMjEsNyArMzIxLDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVy
YXRpb25HZW5lcmljSW4oRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2UsIEUKICAgICBWTSog
dm0gPSAmZXhlYy0+dm0oKTsKICAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBl
eGVjKTsKIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKENvbW1vblNsb3dQ
YXRoczo6b3BJbihleGVjLCBKU1ZhbHVlOjpkZWNvZGUoa2V5KSwgYmFzZSkpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywg
YmFzZSwgSlNWYWx1ZTo6ZGVjb2RlKGtleSkpKSk7CiB9CiAKIHZvaWQgSklUX09QRVJBVElPTiBv
cGVyYXRpb25QdXRCeUlkU3RyaWN0KEV4ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEVuY29kZWRKU1ZhbHVlIGVu
Y29kZWRCYXNlLCBVbmlxdWVkU3RyaW5nSW1wbCogdWlkKQpAQCAtMjI1NCwxMiArMjI1NCwxMiBA
QCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkhhc0dlbmVyaWNQcm9wZXJ0
eShFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNC
b29sZWFuKGJhc2UtPmhhc1Byb3BlcnR5R2VuZXJpYyhleGVjLCBhc1N0cmluZyhwcm9wZXJ0eU5h
bWUpLT50b0lkZW50aWZpZXIoZXhlYyksIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpHZXRPd25Qcm9wZXJ0eSkpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25IYXNJbmRleGVkUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGJhc2VD
ZWxsLCBpbnQzMl90IHN1YnNjcmlwdCkKK0VuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3Bl
cmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlQ2Vs
bCwgaW50MzJfdCBzdWJzY3JpcHQsIGludDMyX3QgaW50ZXJuYWxNZXRob2RUeXBlKQogewogICAg
IFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigm
dm0sIGV4ZWMpOwogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBiYXNlQ2VsbC0+dG9PYmplY3QoZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihvYmplY3QtPmhhc1Byb3BlcnR5R2VuZXJpYyhleGVjLCBzdWJzY3JpcHQs
IFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXRPd25Qcm9wZXJ0eSkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihvYmplY3QtPmhhc1Byb3BlcnR5R2Vu
ZXJpYyhleGVjLCBzdWJzY3JpcHQsIHN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6SW50ZXJuYWxN
ZXRob2RUeXBlPihpbnRlcm5hbE1ldGhvZFR5cGUpKSkpOwogfQogICAgIAogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkdldFByb3BlcnR5RW51bWVyYXRvcihFeGVjU3RhdGUqIGV4ZWMs
IEpTQ2VsbCogY2VsbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
T3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgK
aW5kZXggMzRiNzYyYWFiMjJiMDkzYWExMmE1ODU3N2VkNDNmMTA4YTQ0NjgwZi4uNWI3MDNmMGEy
MmE2YWQ3YjAxNDBkNmU4YTI3Mjk5ZDgwMTQ5N2RjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmgKQEAgLTEzMSw2ICsxMzEsNyBAQCB0eXBlZGVmIEVuY29kZWRK
U1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FQ0MpKEV4ZWNTdGF0ZSosIEpT
Q2VsbCosCiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJh
dGlvbl9FQ0kpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIFVuaXF1ZWRTdHJpbmdJbXBsKik7CiB0eXBl
ZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FQ0opKEV4
ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgRW5jb2RlZEpTVmFs
dWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VDWikoRXhlY1N0YXRlKiwgSlNDZWxs
KiwgaW50MzJfdCk7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJ
VE9wZXJhdGlvbl9FQ1paKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90LCBpbnQzMl90KTsK
IHR5cGVkZWYgRW5jb2RlZEpTVmFsdWUgKEpJVF9PUEVSQVRJT04gKkpfSklUT3BlcmF0aW9uX0VE
QSkoRXhlY1N0YXRlKiwgZG91YmxlLCBKU0FycmF5Kik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVl
IChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlvbl9FRSkoRXhlY1N0YXRlKiwgRXhlY1N0YXRl
Kik7CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIChKSVRfT1BFUkFUSU9OICpKX0pJVE9wZXJhdGlv
bl9FR1Jlb0opKEV4ZWNTdGF0ZSosIEpTR2xvYmFsT2JqZWN0KiwgUmVnRXhwT2JqZWN0KiwgRW5j
b2RlZEpTVmFsdWUpOwpAQCAtNDM1LDcgKzQzNiw3IEBAIGludDMyX3QgSklUX09QRVJBVElPTiBv
cGVyYXRpb25DaGVja0lmRXhjZXB0aW9uSXNVbmNhdGNoYWJsZUFuZE5vdGlmeVByb2ZpbGVyKEV4
CiBpbnQzMl90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSW5zdGFuY2VPZkN1c3RvbShFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUsIEpTT2JqZWN0KiBjb25zdHJ1Y3Rvciwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZEhhc0luc3RhbmNlKSBXVEZfSU5URVJOQUw7CiAKIEVuY29k
ZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uSGFzR2VuZXJpY1Byb3BlcnR5KEV4ZWNT
dGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBKU0NlbGwqKTsKLUVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uSGFzSW5kZXhlZFByb3BlcnR5KEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGlu
dDMyX3QpOworRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25IYXNJbmRleGVk
UHJvcGVydHkoRXhlY1N0YXRlKiwgSlNDZWxsKiwgaW50MzJfdCwgaW50MzJfdCk7CiBKU0NlbGwq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0UHJvcGVydHlFbnVtZXJhdG9yKEV4ZWNTdGF0ZSos
IEpTQ2VsbCopOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXh0RW51
bWVyYXRvclBuYW1lKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIGludDMyX3QpOwogSlNDZWxsKiBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvblRvSW5kZXhTdHJpbmcoRXhlY1N0YXRlKiwgaW50MzJfdCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KaW5kZXggZWMyNDc3M2EzMDA0NTc2YzRiZGQxNGNmZTA0MzA3ODNjNjkzYzdmOS4uNmI0OTk2
NDA2MjE3MjAyYjhlZWEwYzY0ODUyZWEyNDk2Yzg2YmFlNSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQpAQCAtMTM5MSw3ICsx
MzkxLDcgQEAgX2xsaW50X29wX2lzX2Z1bmN0aW9uOgogX2xsaW50X29wX2luOgogICAgIHRyYWNl
RXhlY3V0aW9uKCkKICAgICBjYWxsT3Bjb2RlU2xvd1BhdGgoX3Nsb3dfcGF0aF9pbikKLSAgICBk
aXNwYXRjaCg0KQorICAgIGRpc3BhdGNoKDUpCiAKIAogX2xsaW50X29wX3RyeV9nZXRfYnlfaWQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggYzhiNTkyMjIxNTA4OGM5OWJi
ZDhiZWE0MzZhNzYzOWY5NDM1OTU2ZS4uOTNjNjE4OTc2NzAzNGRjYjdmZDFlMzIzMmQ5OTdjNDcy
NThkZTMzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtMTE1Miw2ICsx
MTUyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSW5Ob2RlIDogcHVibGljIFRocm93
YWJsZUJpbmFyeU9wTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBJbk5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhw
cjIsIGJvb2wgcmlnaHRIYXNBc3NpZ25tZW50cyk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBFcXVhbE5vZGUgOiBwdWJsaWMgQmlu
YXJ5T3BOb2RlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuY3BwCmluZGV4IDRiOGE1Mjk0MDU4MGJkZGYwNzhjOWYzN2U0MThhMTkwYzZhZjJk
MDAuLjUzY2NhZDUwMWFiNDVhNmRkNTQzNjliYzM3MzE5MTZkZjc0YjcxMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtNDAs
NiArNDAsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkZ1enouaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSUNT
dGF0cy5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSXRlcmF0b3JPcGVy
YXRpb25zLmgiCiAjaW5jbHVkZSAiSklULmgiCkBAIC02MjAsNyArNjIxLDcgQEAgU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9uKQogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lu
KQogewogICAgIEJFR0lOKCk7Ci0gICAgUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6
Om9wSW4oZXhlYywgT1BfQygyKS5qc1ZhbHVlKCksIE9QX0MoMykuanNWYWx1ZSgpKSkpOworICAg
IFJFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIE9QX0MoMikuanNW
YWx1ZSgpLCBPUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5hcnJheVByb2ZpbGUpKSk7CiB9CiAK
IFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAppbmRleCBmY2MzMGQwNWUyNGUxMTUz
MDIxODM4MzE1ZDYzZWFhZjRjY2YyOTQxLi43YTYyNzI4Zjg1MWY4Y2MzNTg0OTNlYzM5YTcxMzgx
YTNmZDI2OTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaApAQCAtNzEsNyArNzEsNyBAQCBBTFdBWVNfSU5MSU5FIGludCBhcml0eUNoZWNr
Rm9yKEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kCiAgICAg
cmV0dXJuIHBhZGRlZFN0YWNrU3BhY2U7CiB9CiAKLWlubGluZSBib29sIG9wSW4oRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHByb3BOYW1lLCBKU1ZhbHVlIGJhc2VWYWwpCitpbmxpbmUgYm9vbCBv
cEluKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3BOYW1lLCBB
cnJheVByb2ZpbGUqIGFycmF5UHJvZmlsZSA9IG51bGxwdHIpCiB7CiAgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CkBAIC04
MSw2ICs4MSw4IEBAIGlubGluZSBib29sIG9wSW4oRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHBy
b3BOYW1lLCBKU1ZhbHVlIGJhc2VWYWwpCiAgICAgfQogCiAgICAgSlNPYmplY3QqIGJhc2VPYmog
PSBhc09iamVjdChiYXNlVmFsKTsKKyAgICBpZiAoYXJyYXlQcm9maWxlKQorICAgICAgICBhcnJh
eVByb2ZpbGUtPm9ic2VydmVTdHJ1Y3R1cmUoYmFzZU9iai0+c3RydWN0dXJlKHZtKSk7CiAKICAg
ICB1aW50MzJfdCBpOwogICAgIGlmIChwcm9wTmFtZS5nZXRVSW50MzIoaSkpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>