<?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>177609</bug_id>
          
          <creation_ts>2017-09-28 10:43:39 -0700</creation_ts>
          <short_desc>Add missing exception checks and book-keeping for exception check validation.</short_desc>
          <delta_ts>2017-09-28 16:50:16 -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>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162351</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1354188</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-28 10:43:39 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354190</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-28 10:45:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/34717972&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354191</commentid>
    <comment_count>2</comment_count>
      <attachid>322098</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-28 10:48:23 -0700</bug_when>
    <thetext>Created attachment 322098
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354200</commentid>
    <comment_count>3</comment_count>
      <attachid>322098</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-28 11:04:31 -0700</bug_when>
    <thetext>Comment on attachment 322098
proposed patch.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354203</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-28 11:09:47 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r222617: &lt;http://trac.webkit.org/r222617&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354374</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-09-28 16:50:16 -0700</bug_when>
    <thetext>*** Bug 176924 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322098</attachid>
            <date>2017-09-28 10:48:23 -0700</date>
            <delta_ts>2017-09-28 11:04:31 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-177609.patch</filename>
            <type>text/plain</type>
            <size>32305</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyNjE1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcxIEBA
CisyMDE3LTA5LTI4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgbWlzc2luZyBleGNlcHRpb24gY2hlY2tzIGFuZCBib29rLWtlZXBpbmcgZm9yIGV4Y2VwdGlv
biBjaGVjayB2YWxpZGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTc3NjA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNDcxNzk3Mj4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHJlc29s
dmVzIGV4Y2VwdGlvbiBjaGVjayB2YWxpZGF0aW9uIGZhaWx1cmVzIHdoZW4gcnVubmluZyB0ZXN0
MjYyIHRlc3RzIGFuZAorICAgICAgICBhIGZldyBvdGhlciB0ZXN0cy4KKworICAgICAgICAqIEFQ
SS9BUElVdGlscy5oOgorICAgICAgICAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQpOgorICAgICAg
ICAqIEFQSS9KU09iamVjdFJlZi5jcHA6CisgICAgICAgIChKU09iamVjdE1ha2VGdW5jdGlvbik6
CisgICAgICAgIChKU09iamVjdE1ha2VBcnJheSk6CisgICAgICAgIChKU09iamVjdE1ha2VEYXRl
KToKKyAgICAgICAgKEpTT2JqZWN0TWFrZUVycm9yKToKKyAgICAgICAgKEpTT2JqZWN0TWFrZVJl
Z0V4cCk6CisgICAgICAgIChKU09iamVjdFNldFByb3RvdHlwZSk6CisgICAgICAgIChKU09iamVj
dEdldFByb3BlcnR5KToKKyAgICAgICAgKEpTT2JqZWN0U2V0UHJvcGVydHkpOgorICAgICAgICAo
SlNPYmplY3RHZXRQcm9wZXJ0eUF0SW5kZXgpOgorICAgICAgICAoSlNPYmplY3RTZXRQcm9wZXJ0
eUF0SW5kZXgpOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcm9wZXJ0eSk6CisgICAgICAgIChK
U09iamVjdENhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0
b3IpOgorICAgICAgICAqIEFQSS9KU1R5cGVkQXJyYXkuY3BwOgorICAgICAgICAoSlNPYmplY3RN
YWtlVHlwZWRBcnJheSk6CisgICAgICAgIChKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5dGVz
Tm9Db3B5KToKKyAgICAgICAgKEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRoQXJyYXlCdWZmZXIp
OgorICAgICAgICAoSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhBcnJheUJ1ZmZlckFuZE9mZnNl
dCk6CisgICAgICAgIChKU09iamVjdE1ha2VBcnJheUJ1ZmZlcldpdGhCeXRlc05vQ29weSk6Cisg
ICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAoSlNWYWx1ZUlzRXF1YWwpOgor
ICAgICAgICAoSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTVmFs
dWVDcmVhdGVKU09OU3RyaW5nKToKKyAgICAgICAgKEpTVmFsdWVUb051bWJlcik6CisgICAgICAg
IChKU1ZhbHVlVG9TdHJpbmdDb3B5KToKKyAgICAgICAgKEpTVmFsdWVUb09iamVjdCk6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6ZXhlY3V0ZVByb2dyYW0pOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNw
cDoKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAg
KiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1
bmNJbmRleE9mKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNMYXN0SW5kZXhPZik6Cisg
ICAgICAgICogcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZmlsbFN0
cnVjdHVyZXNVc2luZ1RpbWVBcmdzKToKKyAgICAgICAgKEpTQzo6c2V0TmV3VmFsdWVGcm9tRGF0
ZUFyZ3MpOgorICAgICAgICAoSlNDOjpkYXRlUHJvdG9GdW5jU2V0WWVhcik6CisgICAgICAgICog
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKToK
KyAgICAgICAgKiBydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlND
OjpKU01vZHVsZUVudmlyb25tZW50OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4
ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6
ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAgICAqIHJ1bnRpbWUvUHJveHlPYmplY3QuY3BwOgor
ICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6dG9TdHJpbmdOYW1lKToKKyAgICAgICAgKiBydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0No
YXJBdCk6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQpOgorICAgICAg
ICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNJbmRleE9mKToKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJv
dG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAoSlNDOjpzdHJpbmdQcm90b0Z1bmNTbGljZSk6
CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY1NwbGl0RmFzdCk6CisgICAgICAgIChKU0M6
OnN0cmluZ1Byb3RvRnVuY1N1YnN0cik6CisKIDIwMTctMDktMjcgIE1pY2hhZWwgU2Fib2ZmICA8
bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTigyMTA4MzcpOiBSZWdFeHAg
Y29udGFpbmluZyBmYWlsZWQgbm9uLXplcm8gbWluaW11bSBncmVlZHkgZ3JvdXBzIGluY29ycmVj
dGx5IG1hdGNoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSVV0aWxzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElVdGlscy5oCShyZXZpc2lv
biAyMjI2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSVV0aWxzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDEwICszNyw4IEBAIGVudW0gY2xhc3MgRXhjZXB0aW9uU3RhdHVzIHsK
ICAgICBEaWROb3RUaHJvdwogfTsKIAotaW5saW5lIEV4Y2VwdGlvblN0YXR1cyBoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZVJlZiogcmV0dXJuZWRF
eGNlcHRpb25SZWYpCitpbmxpbmUgRXhjZXB0aW9uU3RhdHVzIGhhbmRsZUV4Y2VwdGlvbklmTmVl
ZGVkKEpTQzo6Q2F0Y2hTY29wZSYgc2NvcGUsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
UmVmKiByZXR1cm5lZEV4Y2VwdGlvblJlZikKIHsKLSAgICBKU0M6OlZNJiB2bSA9IGV4ZWMtPnZt
KCk7Ci0gICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogICAgIGlmIChV
TkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgSlNDOjpFeGNlcHRpb24qIGV4
Y2VwdGlvbiA9IHNjb3BlLmV4Y2VwdGlvbigpOwogICAgICAgICBpZiAocmV0dXJuZWRFeGNlcHRp
b25SZWYpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAko
cmV2aXNpb24gMjIyNjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2ICsxNDIsNyBAQCBKU09iamVjdFJlZiBKU09i
amVjdE1ha2VGdW5jdGlvbihKU0NvbnRlCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgp
OwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgc3RhcnRp
bmdMaW5lTnVtYmVyID0gc3RkOjptYXgoMSwgc3RhcnRpbmdMaW5lTnVtYmVyKTsKICAgICBJZGVu
dGlmaWVyIG5hbWVJRCA9IG5hbWUgPyBuYW1lLT5pZGVudGlmaWVyKCZ2bSkgOiBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGV4ZWMsICJhbm9ueW1vdXMiKTsKQEAgLTE1Myw3ICsxNTQsNyBAQCBKU09i
amVjdFJlZiBKU09iamVjdE1ha2VGdW5jdGlvbihKU0NvbnRlCiAKICAgICBhdXRvIHNvdXJjZVVS
TFN0cmluZyA9IHNvdXJjZVVSTCA/IHNvdXJjZVVSTC0+c3RyaW5nKCkgOiBTdHJpbmcoKTsKICAg
ICBKU09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RnVuY3Rpb24oZXhlYywgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBhcmdzLCBuYW1lSUQsIFNvdXJjZU9yaWdpbiB7IHNvdXJjZVVSTFN0
cmluZyB9LCBzb3VyY2VVUkxTdHJpbmcsIFRleHRQb3NpdGlvbihPcmRpbmFsTnVtYmVyOjpmcm9t
T25lQmFzZWRJbnQoc3RhcnRpbmdMaW5lTnVtYmVyKSwgT3JkaW5hbE51bWJlcigpKSk7Ci0gICAg
aWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9u
U3RhdHVzOjpEaWRUaHJvdykKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUs
IGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAg
cmVzdWx0ID0gMDsKICAgICByZXR1cm4gdG9SZWYocmVzdWx0KTsKIH0KQEAgLTE2NSw3ICsxNjYs
OSBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0NvbnRleHRSCiAgICAgICAgIHJl
dHVybiAwOwogICAgIH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgSlNM
b2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpT
TG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1ND
T1BFKHZtKTsKIAogICAgIEpTT2JqZWN0KiByZXN1bHQ7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQp
IHsKQEAgLTE3Nyw3ICsxODAsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheShKU0Nv
bnRleHRSCiAgICAgfSBlbHNlCiAgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
ZXhlYywgMCk7CiAKLSAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0
aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgIGlmIChoYW5kbGVFeGNlcHRp
b25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRp
ZFRocm93KQogICAgICAgICByZXN1bHQgPSAwOwogCiAgICAgcmV0dXJuIHRvUmVmKHJlc3VsdCk7
CkBAIC0xOTAsMTQgKzE5MywxNiBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VEYXRlKEpTQ29u
dGV4dFJlCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0
b0pTKGN0eCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFy
Z0xpc3Q7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCiAg
ICAgICAgIGFyZ0xpc3QuYXBwZW5kKHRvSlMoZXhlYywgYXJndW1lbnRzW2ldKSk7CiAKICAgICBK
U09iamVjdCogcmVzdWx0ID0gY29uc3RydWN0RGF0ZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIEpTVmFsdWUoKSwgYXJnTGlzdCk7Ci0gICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAg
ICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0g
RXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgcmVzdWx0ID0gMDsKIAogICAgIHJl
dHVybiB0b1JlZihyZXN1bHQpOwpAQCAtMjEwLDEzICsyMTUsMTUgQEAgSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlRXJyb3IoSlNDb250ZXh0UgogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhl
Yyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZt
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU1Zh
bHVlIG1lc3NhZ2UgPSBhcmd1bWVudENvdW50ID8gdG9KUyhleGVjLCBhcmd1bWVudHNbMF0pIDog
anNVbmRlZmluZWQoKTsKICAgICBTdHJ1Y3R1cmUqIGVycm9yU3RydWN0dXJlID0gZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpLT5lcnJvclN0cnVjdHVyZSgpOwogICAgIEpTT2JqZWN0KiByZXN1
bHQgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUoZXhlYywgZXJyb3JTdHJ1Y3R1cmUsIG1lc3NhZ2Up
OwogCi0gICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0g
RXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVk
ZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykK
ICAgICAgICAgcmVzdWx0ID0gMDsKIAogICAgIHJldHVybiB0b1JlZihyZXN1bHQpOwpAQCAtMjI5
LDE0ICsyMzYsMTYgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlUmVnRXhwKEpTQ29udGV4dAog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgp
OwotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdMaXN0Owog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgKytpKQogICAgICAgICBh
cmdMaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGFyZ3VtZW50c1tpXSkpOwogCiAgICAgSlNPYmplY3Qq
IHJlc3VsdCA9IGNvbnN0cnVjdFJlZ0V4cChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGFyZ0xpc3QpOwotICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNl
cHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlkVGhyb3cpCisgICAgaWYgKGhhbmRsZUV4Y2Vw
dGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6
RGlkVGhyb3cpCiAgICAgICAgIHJlc3VsdCA9IDA7CiAgICAgCiAgICAgcmV0dXJuIHRvUmVmKHJl
c3VsdCk7CkBAIC0yNjQsMTEgKzI3MywxMiBAQCB2b2lkIEpTT2JqZWN0U2V0UHJvdG90eXBlKEpT
Q29udGV4dFJlZiBjCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIFZNJiB2
bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0
ID0gdG9KUyhvYmplY3QpOwogICAgIEpTVmFsdWUganNWYWx1ZSA9IHRvSlMoZXhlYywgdmFsdWUp
OwogICAgIGpzT2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4ZWMsIGpzVmFsdWUuaXNPYmplY3Qo
KSA/IGpzVmFsdWUgOiBqc051bGwoKSk7Ci0gICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhl
YywgbnVsbHB0cik7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIG51
bGxwdHIpOwogfQogCiBib29sIEpTT2JqZWN0SGFzUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwg
SlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpCkBAIC0yOTUsMTEg
KzMwNSwxMiBAQCBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHkoSlNDb250ZXh0CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwog
CiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0ganNPYmplY3QtPmdldChleGVjLCBwcm9wZXJ0eU5hbWUt
PmlkZW50aWZpZXIoJnZtKSk7Ci0gICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhj
ZXB0aW9uKTsKKyAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0
aW9uKTsKICAgICByZXR1cm4gdG9SZWYoZXhlYywganNWYWx1ZSk7CiB9CiAKQEAgLTMyOCw3ICsz
MzksNyBAQCB2b2lkIEpTT2JqZWN0U2V0UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0CiAgICAgICAg
ICAgICBqc09iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXQoanNPYmplY3QsIGV4ZWMsIG5hbWUs
IGpzVmFsdWUsIHNsb3QpOwogICAgICAgICB9CiAgICAgfQotICAgIGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2Nv
cGUsIGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm9wZXJ0
eUF0SW5kZXgoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCB1bnNpZ25lZCBw
cm9wZXJ0eUluZGV4LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC0zMzgsMTIgKzM0OSwxNCBA
QCBKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0UHJvcGVydHlBdEluZGV4KEpTCiAgICAgICAgIHJldHVy
biAwOwogICAgIH0KICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgSlNMb2Nr
SG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9j
a0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BF
KHZtKTsKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKIAogICAgIEpT
VmFsdWUganNWYWx1ZSA9IGpzT2JqZWN0LT5nZXQoZXhlYywgcHJvcGVydHlJbmRleCk7Ci0gICAg
aGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9uKTsKKyAgICBoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKTsKICAgICByZXR1cm4gdG9SZWYo
ZXhlYywganNWYWx1ZSk7CiB9CiAKQEAgLTM1NywxMiArMzcwLDEzIEBAIHZvaWQgSlNPYmplY3RT
ZXRQcm9wZXJ0eUF0SW5kZXgoSlNDb250ZXgKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0
eCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZt
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU09i
amVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdG9K
UyhleGVjLCB2YWx1ZSk7CiAgICAgCiAgICAganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHV0
QnlJbmRleChqc09iamVjdCwgZXhlYywgcHJvcGVydHlJbmRleCwganNWYWx1ZSwgZmFsc2UpOwot
ICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKIGJvb2wgSlNP
YmplY3REZWxldGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQpAQCAtMzc0
LDExICszODgsMTIgQEAgYm9vbCBKU09iamVjdERlbGV0ZVByb3BlcnR5KEpTQ29udGV4dFJlZgog
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKICAgICBWTSYgdm0gPSBleGVjLT52bSgp
OwogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKIAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0
KTsKIAogICAgIGJvb2wgcmVzdWx0ID0ganNPYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVsZXRl
UHJvcGVydHkoanNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmdm0pKTsK
LSAgICBoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChleGVjLCBleGNlcHRpb24pOworICAgIGhhbmRs
ZUV4Y2VwdGlvbklmTmVlZGVkKHNjb3BlLCBleGVjLCBleGNlcHRpb24pOwogICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKQEAgLTU1Miw2ICs1NjcsNyBAQCBKU1ZhbHVlUmVmIEpTT2JqZWN0Q2FsbEFz
RnVuY3Rpb24oSlNDb250CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwogICAgIFZN
JiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgaWYgKCFvYmplY3QpCiAg
ICAgICAgIHJldHVybiAwOwpAQCAtNTcyLDcgKzU4OCw3IEBAIEpTVmFsdWVSZWYgSlNPYmplY3RD
YWxsQXNGdW5jdGlvbihKU0NvbnQKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBKU1ZhbHVlUmVm
IHJlc3VsdCA9IHRvUmVmKGV4ZWMsIHByb2ZpbGVkQ2FsbChleGVjLCBQcm9maWxpbmdSZWFzb246
OkFQSSwganNPYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwganNUaGlzT2JqZWN0LCBhcmdMaXN0
KSk7Ci0gICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0g
RXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVk
ZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykK
ICAgICAgICAgcmVzdWx0ID0gMDsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtNTkxLDYgKzYw
Nyw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3IoSlMKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKICAgICBK
U0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9T
Q09QRSh2bSk7CiAKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIDA7CkBAIC02MDcs
NyArNjI0LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcihKUwogICAg
ICAgICBhcmdMaXN0LmFwcGVuZCh0b0pTKGV4ZWMsIGFyZ3VtZW50c1tpXSkpOwogCiAgICAgSlNP
YmplY3RSZWYgcmVzdWx0ID0gdG9SZWYocHJvZmlsZWRDb25zdHJ1Y3QoZXhlYywgUHJvZmlsaW5n
UmVhc29uOjpBUEksIGpzT2JqZWN0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdM
aXN0KSk7Ci0gICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikg
PT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJv
dykKICAgICAgICAgcmVzdWx0ID0gMDsKICAgICByZXR1cm4gcmVzdWx0OwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFycmF5LmNwcAkocmV2aXNpb24gMjIyNjEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNTcsNyArMTU3LDkgQEAgSlNUeXBlZEFycmF5VHlwZSBKU1ZhbHVlR2V0VHlw
ZWRBcnJheVR5cAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheShKU0NvbnRleHRS
ZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgc2l6ZV90IGxlbmd0aCwgSlNWYWx1
ZVJlZiogZXhjZXB0aW9uKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKLSAg
ICBKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Cisg
ICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FU
Q0hfU0NPUEUodm0pOwogCiAgICAgaWYgKGFycmF5VHlwZSA9PSBrSlNUeXBlZEFycmF5VHlwZU5v
bmUgfHwgYXJyYXlUeXBlID09IGtKU1R5cGVkQXJyYXlUeXBlQXJyYXlCdWZmZXIpCiAgICAgICAg
IHJldHVybiBudWxscHRyOwpAQCAtMTY2LDcgKzE2OCw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZVR5cGVkQXJyYXkoSlNDb24KIAogICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShsZW5ndGgsIGVsZW1lbnRCeXRlU2l6ZSk7CiAgICAgSlNPYmplY3QqIHJlc3VsdCA9
IGNyZWF0ZVR5cGVkQXJyYXkoZXhlYywgYXJyYXlUeXBlLCBXVEZNb3ZlKGJ1ZmZlciksIDAsIGxl
bmd0aCk7Ci0gICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikg
PT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJv
dykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuIHRvUmVmKHJlc3VsdCk7CiB9
CkBAIC0xNzQsNyArMTc2LDkgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheShK
U0NvbgogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlVHlwZWRBcnJheVdpdGhCeXRlc05vQ29weShK
U0NvbnRleHRSZWYgY3R4LCBKU1R5cGVkQXJyYXlUeXBlIGFycmF5VHlwZSwgdm9pZCogYnl0ZXMs
IHNpemVfdCBsZW5ndGgsIEpTVHlwZWRBcnJheUJ5dGVzRGVhbGxvY2F0b3IgZGVzdHJ1Y3Rvciwg
dm9pZCogZGVzdHJ1Y3RvckNvbnRleHQsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVj
KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0p
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgIGlmIChh
cnJheVR5cGUgPT0ga0pTVHlwZWRBcnJheVR5cGVOb25lIHx8IGFycmF5VHlwZSA9PSBrSlNUeXBl
ZEFycmF5VHlwZUFycmF5QnVmZmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTE4Niw3
ICsxOTAsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEJ5CiAgICAg
ICAgICAgICBkZXN0cnVjdG9yKHAsIGRlc3RydWN0b3JDb250ZXh0KTsKICAgICB9KTsKICAgICBK
U09iamVjdCogcmVzdWx0ID0gY3JlYXRlVHlwZWRBcnJheShleGVjLCBhcnJheVR5cGUsIFdURk1v
dmUoYnVmZmVyKSwgMCwgbGVuZ3RoIC8gZWxlbWVudEJ5dGVTaXplKTsKLSAgICBpZiAoaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRp
ZFRocm93KQorICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhj
ZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICByZXR1cm4gdG9SZWYocmVzdWx0KTsKIH0KQEAgLTE5Niw2ICsyMDAsNyBAQCBK
U09iamVjdFJlZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEFyCiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9s
ZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0p
OwogCiAgICAgaWYgKGFycmF5VHlwZSA9PSBrSlNUeXBlZEFycmF5VHlwZU5vbmUgfHwgYXJyYXlU
eXBlID09IGtKU1R5cGVkQXJyYXlUeXBlQXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwpAQCAtMjEwLDcgKzIxNSw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJy
YXlXaXRoQXIKICAgICB1bnNpZ25lZCBlbGVtZW50Qnl0ZVNpemUgPSBlbGVtZW50U2l6ZSh0b1R5
cGVkQXJyYXlUeXBlKGFycmF5VHlwZSkpOwogCiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNyZWF0
ZVR5cGVkQXJyYXkoZXhlYywgYXJyYXlUeXBlLCBXVEZNb3ZlKGJ1ZmZlciksIDAsIGJ1ZmZlci0+
Ynl0ZUxlbmd0aCgpIC8gZWxlbWVudEJ5dGVTaXplKTsKLSAgICBpZiAoaGFuZGxlRXhjZXB0aW9u
SWZOZWVkZWQoZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQor
ICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9
PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICByZXR1cm4gdG9SZWYocmVzdWx0KTsKIH0KQEAgLTIyMCw2ICsyMjUsNyBAQCBKU09iamVjdFJl
ZiBKU09iamVjdE1ha2VUeXBlZEFycmF5V2l0aEFyCiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9K
UyhjdHgpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tl
cih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAg
aWYgKGFycmF5VHlwZSA9PSBrSlNUeXBlZEFycmF5VHlwZU5vbmUgfHwgYXJyYXlUeXBlID09IGtK
U1R5cGVkQXJyYXlUeXBlQXJyYXlCdWZmZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAt
MjMxLDcgKzIzNyw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZVR5cGVkQXJyYXlXaXRoQXIK
ICAgICB9CiAKICAgICBKU09iamVjdCogcmVzdWx0ID0gY3JlYXRlVHlwZWRBcnJheShleGVjLCBh
cnJheVR5cGUsIGpzQnVmZmVyLT5pbXBsKCksIG9mZnNldCwgbGVuZ3RoKTsKLSAgICBpZiAoaGFu
ZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6
OkRpZFRocm93KQorICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywg
ZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICByZXR1cm4gdG9SZWYocmVzdWx0KTsKIH0KQEAgLTMwNSw2ICszMTEsNyBA
QCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheUJ1ZmZlcldpdGhCCiAgICAgRXhlY1N0YXRl
KiBleGVjID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgSlNMb2Nr
SG9sZGVyIGxvY2tlcih2bSk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUo
dm0pOwogCiAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlRnJvbUJ5dGVzKGJ5
dGVzLCBieXRlTGVuZ3RoLCBbPV0odm9pZCogcCkgewogICAgICAgICBpZiAoYnl0ZXNEZWFsbG9j
YXRvcikKQEAgLTMxMiw3ICszMTksNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VBcnJheUJ1
ZmZlcldpdGhCCiAgICAgfSk7CiAKICAgICBKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IEpTQXJy
YXlCdWZmZXI6OmNyZWF0ZSh2bSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5hcnJheUJ1
ZmZlclN0cnVjdHVyZShBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0KSwgV1RGTW92ZShi
dWZmZXIpKTsKLSAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9u
KSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgIGlmIChoYW5kbGVFeGNlcHRpb25J
Zk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRo
cm93KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiB0b1JlZihqc0J1ZmZl
cik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJKHJldmlz
aW9uIDIyMjYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIyMywxMyArMjIzLDE1IEBAIGJvb2wgSlNWYWx1ZUlzRXF1YWwo
SlNDb250ZXh0UmVmIGN0eCwgSlMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBF
eGVjU3RhdGUqIGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVj
KTsKKyAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0p
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgIEpTVmFs
dWUganNBID0gdG9KUyhleGVjLCBhKTsKICAgICBKU1ZhbHVlIGpzQiA9IHRvSlMoZXhlYywgYik7
CiAKICAgICBib29sIHJlc3VsdCA9IEpTVmFsdWU6OmVxdWFsKGV4ZWMsIGpzQSwganNCKTsgLy8g
ZmFsc2UgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93bgotICAgIGhhbmRsZUV4Y2VwdGlvbklmTmVl
ZGVkKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUs
IGV4ZWMsIGV4Y2VwdGlvbik7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1Niw3
ICsyNTgsOSBAQCBib29sIEpTVmFsdWVJc0luc3RhbmNlT2ZDb25zdHJ1Y3RvcihKU0NvCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgp
OwotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0o
KTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZh
bHVlKTsKIApAQCAtMjY0LDcgKzI2OCw3IEBAIGJvb2wgSlNWYWx1ZUlzSW5zdGFuY2VPZkNvbnN0
cnVjdG9yKEpTQ28KICAgICBpZiAoIWpzQ29uc3RydWN0b3ItPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
Ym9vbCByZXN1bHQgPSBqc0NvbnN0cnVjdG9yLT5oYXNJbnN0YW5jZShleGVjLCBqc1ZhbHVlKTsg
Ly8gZmFsc2UgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93bgotICAgIGhhbmRsZUV4Y2VwdGlvbklm
TmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbik7CisgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2Nv
cGUsIGV4ZWMsIGV4Y2VwdGlvbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMzUzLDEy
ICszNTcsMTUgQEAgSlNTdHJpbmdSZWYgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlNDbwogICAg
ICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwot
ICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
KyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9D
QVRDSF9TQ09QRSh2bSk7CisKICAgICBKU1ZhbHVlIHZhbHVlID0gdG9KUyhleGVjLCBhcGlWYWx1
ZSk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IEpTT05TdHJpbmdpZnkoZXhlYywgdmFsdWUsIGluZGVu
dCk7CiAgICAgaWYgKGV4Y2VwdGlvbikKICAgICAgICAgKmV4Y2VwdGlvbiA9IDA7Ci0gICAgaWYg
KGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3Rh
dHVzOjpEaWRUaHJvdykKKyAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGV4
ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKICAgICAgICAgcmV0
dXJuIDA7CiAgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocmVzdWx0KS5sZWFrUmVm
KCk7CiB9CkBAIC0zODMsMTIgKzM5MCwxNCBAQCBkb3VibGUgSlNWYWx1ZVRvTnVtYmVyKEpTQ29u
dGV4dFJlZiBjdHgsCiAgICAgICAgIHJldHVybiBQTmFOOwogICAgIH0KICAgICBFeGVjU3RhdGUq
IGV4ZWMgPSB0b0pTKGN0eCk7Ci0gICAgSlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICBW
TSYgdm0gPSBleGVjLT52bSgpOworICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKIAogICAgIEpTVmFsdWUganNWYWx1
ZSA9IHRvSlMoZXhlYywgdmFsdWUpOwogCiAgICAgZG91YmxlIG51bWJlciA9IGpzVmFsdWUudG9O
dW1iZXIoZXhlYyk7Ci0gICAgaWYgKGhhbmRsZUV4Y2VwdGlvbklmTmVlZGVkKGV4ZWMsIGV4Y2Vw
dGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpEaWRUaHJvdykKKyAgICBpZiAoaGFuZGxlRXhjZXB0
aW9uSWZOZWVkZWQoc2NvcGUsIGV4ZWMsIGV4Y2VwdGlvbikgPT0gRXhjZXB0aW9uU3RhdHVzOjpE
aWRUaHJvdykKICAgICAgICAgbnVtYmVyID0gUE5hTjsKICAgICByZXR1cm4gbnVtYmVyOwogfQpA
QCAtNDAwLDEyICs0MDksMTQgQEAgSlNTdHJpbmdSZWYgSlNWYWx1ZVRvU3RyaW5nQ29weShKU0Nv
bnRleAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9K
UyhjdHgpOwotICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4
ZWMsIHZhbHVlKTsKICAgICAKICAgICBhdXRvIHN0cmluZ1JlZihPcGFxdWVKU1N0cmluZzo6Y3Jl
YXRlKGpzVmFsdWUudG9XVEZTdHJpbmcoZXhlYykpKTsKLSAgICBpZiAoaGFuZGxlRXhjZXB0aW9u
SWZOZWVkZWQoZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQor
ICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRlZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9
PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQogICAgICAgICBzdHJpbmdSZWYgPSBudWxscHRy
OwogICAgIHJldHVybiBzdHJpbmdSZWYubGVha1JlZigpOwogfQpAQCAtNDE3LDEyICs0MjgsMTQg
QEAgSlNPYmplY3RSZWYgSlNWYWx1ZVRvT2JqZWN0KEpTQ29udGV4dFJlZgogICAgICAgICByZXR1
cm4gMDsKICAgICB9CiAgICAgRXhlY1N0YXRlKiBleGVjID0gdG9KUyhjdHgpOwotICAgIEpTTG9j
a0hvbGRlciBsb2NrZXIoZXhlYyk7CisgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBKU0xv
Y2tIb2xkZXIgbG9ja2VyKHZtKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09Q
RSh2bSk7CiAKICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB0b0pTKGV4ZWMsIHZhbHVlKTsKICAgICAK
ICAgICBKU09iamVjdFJlZiBvYmplY3RSZWYgPSB0b1JlZihqc1ZhbHVlLnRvT2JqZWN0KGV4ZWMp
KTsKLSAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoZXhlYywgZXhjZXB0aW9uKSA9PSBF
eGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQorICAgIGlmIChoYW5kbGVFeGNlcHRpb25JZk5lZWRl
ZChzY29wZSwgZXhlYywgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQog
ICAgICAgICBvYmplY3RSZWYgPSAwOwogICAgIHJldHVybiBvYmplY3RSZWY7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHJldmlzaW9uIDIyMjYxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxNSw4ICs4MTUsMTAgQEAgSlNWYWx1
ZSBJbnRlcnByZXRlcjo6ZXhlY3V0ZVByb2dyYW0oY29ucwogICAgICAgICAgICAgSlNWYWx1ZSBK
U09OUFZhbHVlID0gSlNPTlBEYXRhW2VudHJ5XS5tX3ZhbHVlLmdldCgpOwogICAgICAgICAgICAg
aWYgKEpTT05QUGF0aC5zaXplKCkgPT0gMSAmJiBKU09OUFBhdGhbMF0ubV90eXBlID09IEpTT05Q
UGF0aEVudHJ5VHlwZURlY2xhcmUpIHsKICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmFk
ZFZhcihjYWxsRnJhbWUsIEpTT05QUGF0aFswXS5tX3BhdGhFbnRyeU5hbWUpOworICAgICAgICAg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICAgICAgICAg
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgICAg
IGdsb2JhbE9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wdXQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUsIEpTT05QUGF0aFswXS5tX3BhdGhFbnRyeU5hbWUsIEpTT05QVmFsdWUsIHNsb3QpOworICAg
ICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAyMjI2MTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzEs
NyArOTMxLDggQEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV92YQogICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICAgICAgY291bGREZWxldGUgPSBiYXNl
T2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMs
IHByb3BlcnR5KTsKICAgICB9Ci0gICAgCisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisK
ICAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUo
KSkKICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFVuYWJsZVRvRGVs
ZXRlUHJvcGVydHlFcnJvcikpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAkocmV2aXNpb24gMjIyNjEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTIwLDkgKzExMjAsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRgogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IGlmIChKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBzZWFyY2hFbGVtZW50LCBlKSkKLSAgICAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5kZXgpKTsKKyAgICAgICAg
Ym9vbCBpc0VxdWFsID0gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgc2VhcmNoRWxlbWVudCwg
ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OworICAgICAgICBpZiAoaXNFcXVhbCkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoaW5kZXgpKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKC0xKSk7CkBAIC0xMTQ2LDYgKzExNDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAy
KSB7CiAgICAgICAgIEpTVmFsdWUgZnJvbVZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MSk7CiAgICAgICAgIGRvdWJsZSBmcm9tRG91YmxlID0gZnJvbVZhbHVlLnRvSW50ZWdlcihleGVj
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgICAgIGlmIChmcm9tRG91YmxlIDwgMCkgewogICAgICAgICAgICAgZnJvbURvdWJsZSAr
PSBsZW5ndGg7CiAgICAgICAgICAgICBpZiAoZnJvbURvdWJsZSA8IDApCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAkocmV2aXNpb24g
MjIyNjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM0Myw2ICszNDMsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgZm9ybWF0ZURhdGVJbnN0YW5jCiAvLyBGb3JtYXQgb2YgbWVtYmVyIGZ1bmN0aW9uOiBmKFto
b3VyLF0gW21pbixdIFtzZWMsXSBbbXNdKQogc3RhdGljIGJvb2wgZmlsbFN0cnVjdHVyZXNVc2lu
Z1RpbWVBcmdzKEV4ZWNTdGF0ZSogZXhlYywgaW50IG1heEFyZ3MsIGRvdWJsZSogbXMsIEdyZWdv
cmlhbkRhdGVUaW1lKiB0KQogeworICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCiAgICAgZG91YmxlIG1pbGxpc2Vjb25k
cyA9IDA7CiAgICAgYm9vbCBvayA9IHRydWU7CiAgICAgaW50IGlkeCA9IDA7CkBAIC0zNTYsNiAr
MzU5LDcgQEAgc3RhdGljIGJvb2wgZmlsbFN0cnVjdHVyZXNVc2luZ1RpbWVBcmdzKAogICAgIGlm
IChtYXhBcmdzID49IDQgJiYgaWR4IDwgbnVtQXJncykgewogICAgICAgICB0LT5zZXRIb3VyKDAp
OwogICAgICAgICBkb3VibGUgaG91cnMgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpZHgrKyku
dG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKICAgICAgICAgb2sgPSBzdGQ6OmlzZmluaXRlKGhvdXJzKTsKICAgICAg
ICAgbWlsbGlzZWNvbmRzICs9IGhvdXJzICogbXNQZXJIb3VyOwogICAgIH0KQEAgLTM2NCw2ICsz
NjgsNyBAQCBzdGF0aWMgYm9vbCBmaWxsU3RydWN0dXJlc1VzaW5nVGltZUFyZ3MoCiAgICAgaWYg
KG1heEFyZ3MgPj0gMyAmJiBpZHggPCBudW1BcmdzICYmIG9rKSB7CiAgICAgICAgIHQtPnNldE1p
bnV0ZSgwKTsKICAgICAgICAgZG91YmxlIG1pbnV0ZXMgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dChpZHgrKykudG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYyk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgb2sgPSBzdGQ6OmlzZmluaXRlKG1pbnV0
ZXMpOwogICAgICAgICBtaWxsaXNlY29uZHMgKz0gbWludXRlcyAqIG1zUGVyTWludXRlOwogICAg
IH0KQEAgLTM3Miw2ICszNzcsNyBAQCBzdGF0aWMgYm9vbCBmaWxsU3RydWN0dXJlc1VzaW5nVGlt
ZUFyZ3MoCiAgICAgaWYgKG1heEFyZ3MgPj0gMiAmJiBpZHggPCBudW1BcmdzICYmIG9rKSB7CiAg
ICAgICAgIHQtPnNldFNlY29uZCgwKTsKICAgICAgICAgZG91YmxlIHNlY29uZHMgPSBleGVjLT51
bmNoZWNrZWRBcmd1bWVudChpZHgrKykudG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYyk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgb2sgPSBzdGQ6
OmlzZmluaXRlKHNlY29uZHMpOwogICAgICAgICBtaWxsaXNlY29uZHMgKz0gc2Vjb25kcyAqIG1z
UGVyU2Vjb25kOwogICAgIH0KQEAgLTM4Miw2ICszODgsNyBAQCBzdGF0aWMgYm9vbCBmaWxsU3Ry
dWN0dXJlc1VzaW5nVGltZUFyZ3MoCiAgICAgLy8gbWlsbGlzZWNvbmRzCiAgICAgaWYgKGlkeCA8
IG51bUFyZ3MpIHsKICAgICAgICAgZG91YmxlIG1pbGxpcyA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KGlkeCkudG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYyk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgb2sgPSBzdGQ6OmlzZmluaXRlKG1pbGxp
cyk7CiAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBtaWxsaXM7CiAgICAgfSBlbHNlCkBAIC0xMDA2
LDcgKzEwMTMsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgc2V0TmV3VmFsdWVGcm9tRGF0CiAg
ICAgICAgIGdyZWdvcmlhbkRhdGVUaW1lLmNvcHlGcm9tKCpvdGhlcik7CiAgICAgfQogICAgIAot
ICAgIGlmICghZmlsbFN0cnVjdHVyZXNVc2luZ0RhdGVBcmdzKGV4ZWMsIG51bUFyZ3NUb1VzZSwg
Jm1zLCAmZ3JlZ29yaWFuRGF0ZVRpbWUpKSB7CisgICAgYm9vbCBzdWNjZXNzID0gZmlsbFN0cnVj
dHVyZXNVc2luZ0RhdGVBcmdzKGV4ZWMsIG51bUFyZ3NUb1VzZSwgJm1zLCAmZ3JlZ29yaWFuRGF0
ZVRpbWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OworICAgIGlmICghc3VjY2VzcykgewogICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzTmFOKCk7
CiAgICAgICAgIHRoaXNEYXRlT2JqLT5zZXRJbnRlcm5hbFZhbHVlKHZtLCByZXN1bHQpOwogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CkBAIC0xMTE5LDYgKzExMjgsNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGRhdGVQcm90b0Z1CiAgICAgfQogCiAgICAg
ZG91YmxlIHllYXIgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVj
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUoeWVhcikpIHsKICAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBq
c05hTigpOwogICAgICAgICB0aGlzRGF0ZU9iai0+c2V0SW50ZXJuYWxWYWx1ZSh2bSwgcmVzdWx0
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aAkocmV2aXNpb24gMjIyNjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAkod29ya2luZyBjb3B5KQpA
QCAtMTYxLDYgKzE2MSw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVk
QXIKICAgICAgICAgICAgICAgICAgICAgfHwgbGVuZ3RoU2xvdC5pc0FjY2Vzc29yKCkgfHwgbGVu
Z3RoU2xvdC5pc0N1c3RvbSgpIHx8IGxlbmd0aFNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3Qo
KQogICAgICAgICAgICAgICAgICAgICB8fCBoYXNBbnlBcnJheVN0b3JhZ2Uob2JqZWN0LT5pbmRl
eGluZ1R5cGUoKSkpKSB7CiAKKyAgICAgICAgICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
RnJvbUl0ZXJhdG9yPFZpZXdDbGFzcz4oZXhlYywgc3RydWN0dXJlLCBvYmplY3QsIGl0ZXJhdG9y
RnVuYyk7CiAgICAgICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlRW52aXJvbm1lbnQuY3BwCShyZXZpc2lvbiAyMjI2MTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZUVudmlyb25tZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIGJvb2wgSlNNb2R1bGVFbnZpcm9u
bWVudDo6cHV0KEpTQ2VsbCogY2UKICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgc2NvcGUs
IEFTQ0lJTGl0ZXJhbChSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQorICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICByZXR1cm4gQmFzZTo6
cHV0KHRoaXNPYmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1
dGFibGUuY3BwCShyZXZpc2lvbiAyMjI2MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCwxMCArMTMw
LDEyIEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUcKICAgICAgICAg
Ly8gSXQncyBhbiBlcnJvciB0byBpbnRyb2R1Y2UgYSBzaGFkb3cuCiAgICAgICAgIGZvciAoYXV0
byYgZW50cnkgOiBsZXhpY2FsRGVjbGFyYXRpb25zKSB7CiAgICAgICAgICAgICAvLyBUaGUgRVM2
IHNwZWMgc2F5cyB0aGF0IFJlc3RyaWN0ZWRHbG9iYWxQcm9wZXJ0eSBjYW4ndCBiZSBzaGFkb3dl
ZC4KLSAgICAgICAgICAgIGlmIChoYXNSZXN0cmljdGVkR2xvYmFsUHJvcGVydHkoZXhlYywgZ2xv
YmFsT2JqZWN0LCBlbnRyeS5rZXkuZ2V0KCkpKQorICAgICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0
eSA9IGhhc1Jlc3RyaWN0ZWRHbG9iYWxQcm9wZXJ0eShleGVjLCBnbG9iYWxPYmplY3QsIGVudHJ5
LmtleS5nZXQoKSk7CisgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHRocm93U2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICAgICAgaWYgKGhhc1Byb3BlcnR5KQog
ICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVTeW50YXhFcnJvcihleGVjLCBtYWtlU3RyaW5n
KCJDYW4ndCBjcmVhdGUgZHVwbGljYXRlIHZhcmlhYmxlIHRoYXQgc2hhZG93cyBhIGdsb2JhbCBw
cm9wZXJ0eTogJyIsIFN0cmluZyhlbnRyeS5rZXkuZ2V0KCkpLCAiJyIpKTsKIAotICAgICAgICAg
ICAgYm9vbCBoYXNQcm9wZXJ0eSA9IGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+aGFzUHJvcGVy
dHkoZXhlYywgZW50cnkua2V5LmdldCgpKTsKKyAgICAgICAgICAgIGhhc1Byb3BlcnR5ID0gZ2xv
YmFsTGV4aWNhbEVudmlyb25tZW50LT5oYXNQcm9wZXJ0eShleGVjLCBlbnRyeS5rZXkuZ2V0KCkp
OwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB0aHJvd1Njb3Bl
LmV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgIGlmIChoYXNQcm9wZXJ0eSkgewogICAgICAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShlbnRyeS52YWx1ZS5pc0NvbnN0KCkgJiYgIXZtLmdsb2JhbENv
bnN0UmVkZWNsYXJhdGlvblNob3VsZFRocm93KCkgJiYgIWlzU3RyaWN0TW9kZSgpKSkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAkocmV2
aXNpb24gMjIyNjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMCArNTgsMTMgQEAgU3RyaW5nIFByb3h5T2Jq
ZWN0Ojp0b1N0cmluZ05hbWUoY29uc3QgSgogICAgIGNvbnN0IFByb3h5T2JqZWN0KiBwcm94eSA9
IGpzQ2FzdDxjb25zdCBQcm94eU9iamVjdCo+KG9iamVjdCk7CiAgICAgd2hpbGUgKHByb3h5KSB7
CiAgICAgICAgIGNvbnN0IEpTT2JqZWN0KiB0YXJnZXQgPSBwcm94eS0+dGFyZ2V0KCk7Ci0gICAg
ICAgIGlmIChpc0FycmF5KGV4ZWMsIHRhcmdldCkpCi0gICAgICAgICAgICByZXR1cm4gdGFyZ2V0
LT5jbGFzc0luZm8odm0pLT5tZXRob2RUYWJsZS50b1N0cmluZ05hbWUodGFyZ2V0LCBleGVjKTsK
KyAgICAgICAgYm9vbCB0YXJnZXRJc0FycmF5ID0gaXNBcnJheShleGVjLCB0YXJnZXQpOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKQogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGlmICh0YXJnZXRJc0FycmF5KSB7CisgICAgICAgICAgICBzY29wZS5yZWxlYXNl
KCk7CisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0LT5jbGFzc0luZm8odm0pLT5tZXRob2RUYWJs
ZS50b1N0cmluZ05hbWUodGFyZ2V0LCBleGVjKTsKKyAgICAgICAgfQogCiAgICAgICAgIHByb3h5
ID0ganNEeW5hbWljQ2FzdDxjb25zdCBQcm94eU9iamVjdCo+KHZtLCB0YXJnZXQpOwogICAgIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAkocmV2aXNpb24gMjIyNjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyMCw2ICsxMDIwLDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90bwogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJpbmcoZXhlYykpOwogICAgIH0KICAgICBkb3Vi
bGUgZHBvcyA9IGEwLnRvSW50ZWdlcihleGVjKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBpZiAoZHBvcyA+PSAwICYmIGRwb3MgPCB2aWV3
Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU2luZ2xlQ2hhcmFj
dGVyU3RyaW5nKGV4ZWMsIHZpZXdbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRwb3MpXSkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNFbXB0eVN0cmluZyhleGVjKSk7CkBAIC0xMDQ0LDYg
KzEwNDUsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4oKSk7CiAgICAgfQogICAgIGRvdWJsZSBk
cG9zID0gYTAudG9JbnRlZ2VyKGV4ZWMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChkcG9zID49IDAgJiYgZHBvcyA8IHZpZXcubGVu
Z3RoKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodmlld1tzdGF0
aWNfY2FzdDxpbnQ+KGRwb3MpXSkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOYU4o
KSk7CkBAIC0xMTE0LDYgKzExMTYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvCiAgICAgICAgICAgICBwb3MgPSBzdGQ6Om1pbjx1aW50MzJfdD4oYTEuYXNVSW50
MzIoKSwgbGVuKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkb3VibGUgZHBvcyA9IGEx
LnRvSW50ZWdlcihleGVjKTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IGVuY29kZWRKU1ZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKGRwb3MgPCAwKQogICAgICAgICAg
ICAgICAgIGRwb3MgPSAwOwogICAgICAgICAgICAgZWxzZSBpZiAoZHBvcyA+IGxlbikKQEAgLTEx
NTQsNiArMTE1Nyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG8K
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAg
IGRvdWJsZSBkcG9zID0gYTEudG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYyk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdW5zaWduZWQgc3Rh
cnRQb3NpdGlvbjsKICAgICBpZiAoZHBvcyA8IDApCiAgICAgICAgIHN0YXJ0UG9zaXRpb24gPSAw
OwpAQCAtMTE5Niw3ICsxMjAwLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJp
bmdQcm90bwogCiAgICAgLy8gVGhlIGFyZyBwcm9jZXNzaW5nIGlzIHZlcnkgbXVjaCBsaWtlIEFy
cmF5UHJvdG9GdW5jOjpTbGljZQogICAgIGRvdWJsZSBzdGFydCA9IGEwLnRvSW50ZWdlcihleGVj
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBkb3VibGUgZW5kID0gYTEuaXNVbmRlZmluZWQoKSA/IGxlbiA6IGExLnRvSW50ZWdlcihleGVj
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBkb3VibGUgZnJvbSA9IHN0YXJ0IDwgMCA/IGxlbiArIHN0YXJ0IDogc3RhcnQ7CiAgICAgZG91
YmxlIHRvID0gZW5kIDwgMCA/IGxlbiArIGVuZCA6IGVuZDsKICAgICBpZiAodG8gPiBmcm9tICYm
IHRvID4gMCAmJiBmcm9tIDwgbGVuKSB7CkBAIC0xMjY4LDYgKzEyNzQsNyBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvCiAgICAgLy8gNi4gSWYgbGltaXQgaXMgdW5k
ZWZpbmVkLCBsZXQgbGltID0gMl4zMi0xOyBlbHNlIGxldCBsaW0gPSBUb1VpbnQzMihsaW1pdCku
CiAgICAgSlNWYWx1ZSBsaW1pdFZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7CiAg
ICAgdW5zaWduZWQgbGltaXQgPSBsaW1pdFZhbHVlLmlzVW5kZWZpbmVkKCkgPyAweEZGRkZGRkZG
dSA6IGxpbWl0VmFsdWUudG9VSW50MzIoZXhlYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKICAgICAvLyA4LiBMZXQgcCA9IDAuCiAgICAgc2l6
ZV90IHBvc2l0aW9uID0gMDsKQEAgLTE0MDMsNyArMTQxMCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG8KICAgICBKU1ZhbHVlIGExID0gZXhlYy0+YXJndW1lbnQo
MSk7CiAKICAgICBkb3VibGUgc3RhcnQgPSBhMC50b0ludGVnZXIoZXhlYyk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgZG91YmxlIGxlbmd0
aCA9IGExLmlzVW5kZWZpbmVkKCkgPyBsZW4gOiBhMS50b0ludGVnZXIoZXhlYyk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKHN0YXJ0
ID49IGxlbiB8fCBsZW5ndGggPD0gMCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c0VtcHR5U3RyaW5nKGV4ZWMpKTsKICAgICBpZiAoc3RhcnQgPCAwKSB7Cg==
</data>
<flag name="review"
          id="342025"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>