<?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>113969</bug_id>
          
          <creation_ts>2013-04-04 15:33:52 -0700</creation_ts>
          <short_desc>Stop pretending that statements return a value</short_desc>
          <delta_ts>2013-04-04 16:14:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>869403</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-04 15:33:52 -0700</bug_when>
    <thetext>Stop pretending that statements return a value</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869406</commentid>
    <comment_count>1</comment_count>
      <attachid>196544</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-04 15:38:02 -0700</bug_when>
    <thetext>Created attachment 196544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>869431</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-04 16:14:37 -0700</bug_when>
    <thetext>Committed r147677: &lt;http://trac.webkit.org/changeset/147677&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>196544</attachid>
            <date>2013-04-04 15:38:02 -0700</date>
            <delta_ts>2013-04-04 15:39:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-113969-20130404153751.patch</filename>
            <type>text/plain</type>
            <size>36092</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ3Njc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBA
CisyMDEzLTA0LTA0ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU3RvcCBwcmV0ZW5kaW5nIHRoYXQgc3RhdGVtZW50cyByZXR1cm4gYSB2YWx1ZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEzOTY5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwcmVzc2lvbnMgaGF2
ZSBhbiBpbnRyaW5zaWMgdmFsdWUsIHdoaWNoIHRoZXkgcmV0dXJuIHRvIHRoZWlyIHBhcmVudAor
ICAgICAgICBpbiB0aGUgQVNULgorCisgICAgICAgIFN0YXRlbWVudHMganVzdCBleGVjdXRlIGZv
ciBlZmZlY3QgaW4gc2VxdWVuY2UuCisKKyAgICAgICAgVGhpcyBwYXRjaCBtb3ZlcyBlbWl0Qnl0
ZWNvZGUgaW50byB0aGUgRXhwcmVzc2lvbk5vZGUgYW5kIFN0YXRlbWVudE5vZGUKKyAgICAgICAg
c3ViY2xhc3NlcywgYW5kIGNoYW5nZXMgdGhlIFNhdGVtZW50Tm9kZSBzdWJjbGFzcyB0byByZXR1
cm4gdm9pZC4gVGhpcworICAgICAgICBlbGltaW5hdGVzIHNvbWUgY3J1ZnQgd2hlcmUgd2UgdXNl
ZCB0byByZXR1cm4gMCwgb3IgdHJ5IHRvIHNhdmUgYSBib2d1cworICAgICAgICByZWdpc3RlciBh
bmQgcmV0dXJuIGl0LCBhcyBpZiBhIHN0YXRlbWVudCBoYWQgYSBjb25zdW1pbmcgcGFyZW50IGlu
IHRoZQorICAgICAgICBBU1QuCisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuaDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXROb2RlKToKKyAg
ICAgICAgKEJ5dGVjb2RlR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6Q29uc3RTdGF0ZW1lbnROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpCbG9ja05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAg
ICAgIChKU0M6OkVtcHR5U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpT
Qzo6RGVidWdnZXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpF
eHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6VmFyU3RhdGVt
ZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6SWZOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpJZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6V2hpbGVOb2Rl
OjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpGb3JOb2RlOjplbWl0Qnl0ZWNvZGUpOgor
ICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNv
bnRpbnVlTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QnJlYWtOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAg
ICAgICAoSlNDOjpXaXRoTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2FzZUNs
YXVzZU5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OkNhc2VCbG9ja05vZGU6OmVt
aXRCeXRlY29kZUZvckJsb2NrKToKKyAgICAgICAgKEpTQzo6U3dpdGNoTm9kZTo6ZW1pdEJ5dGVj
b2RlKToKKyAgICAgICAgKEpTQzo6TGFiZWxOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAo
SlNDOjpUaHJvd05vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlRyeU5vZGU6OmVt
aXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlNjb3BlTm9kZTo6ZW1pdFN0YXRlbWVudHNCeXRl
Y29kZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1Ob2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAg
ICAoSlNDOjpFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25C
b2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6RnVuY0RlY2xOb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAqIHBhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmg6CisgICAgICAg
IChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OlByb3BlcnR5TGlzdE5vZGUpOgorICAgICAgICAoSlND
OjpBcmd1bWVudExpc3ROb2RlOjpBcmd1bWVudExpc3ROb2RlKToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZXMuaDoKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoRXhwcmVzc2lvbk5vZGUpOgorICAg
ICAgICAoU3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChDb25zdFN0YXRlbWVudE5vZGUpOgorICAg
ICAgICAoQmxvY2tOb2RlKToKKyAgICAgICAgKEVtcHR5U3RhdGVtZW50Tm9kZSk6CisgICAgICAg
IChEZWJ1Z2dlclN0YXRlbWVudE5vZGUpOgorICAgICAgICAoRXhwclN0YXRlbWVudE5vZGUpOgor
ICAgICAgICAoVmFyU3RhdGVtZW50Tm9kZSk6CisgICAgICAgIChJZk5vZGUpOgorICAgICAgICAo
SWZFbHNlTm9kZSk6CisgICAgICAgIChEb1doaWxlTm9kZSk6CisgICAgICAgIChXaGlsZU5vZGUp
OgorICAgICAgICAoRm9yTm9kZSk6CisgICAgICAgIChGb3JJbk5vZGUpOgorICAgICAgICAoQ29u
dGludWVOb2RlKToKKyAgICAgICAgKEJyZWFrTm9kZSk6CisgICAgICAgIChSZXR1cm5Ob2RlKToK
KyAgICAgICAgKFdpdGhOb2RlKToKKyAgICAgICAgKExhYmVsTm9kZSk6CisgICAgICAgIChUaHJv
d05vZGUpOgorICAgICAgICAoVHJ5Tm9kZSk6CisgICAgICAgIChQcm9ncmFtTm9kZSk6CisgICAg
ICAgIChFdmFsTm9kZSk6CisgICAgICAgIChGdW5jdGlvbkJvZHlOb2RlKToKKyAgICAgICAgKEZ1
bmNEZWNsTm9kZSk6CisgICAgICAgIChDYXNlQmxvY2tOb2RlKToKKyAgICAgICAgKFN3aXRjaE5v
ZGUpOgorCiAyMDEzLTA0LTA0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgRXhjZXB0aW9uIHN0YWNrIHVud2luZGluZyBkb2Vzbid0IGhhbmRsZSBpbmxpbmUgY2Fs
bGZyYW1lcyBjb3JyZWN0bHkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHJldmlzaW9uIDE0NzY3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMzM0LDIyICszMzQsMzQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIExhYmVsU2NvcGVQdHIgbmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpUeXBlLCBjb25zdCBJ
ZGVudGlmaWVyKiA9IDApOwogICAgICAgICBQYXNzUmVmUHRyPExhYmVsPiBuZXdMYWJlbCgpOwog
Ci0gICAgICAgIC8vIFRoZSBlbWl0Tm9kZSBmdW5jdGlvbnMgYXJlIGp1c3Qgc3ludGFjdGljIHN1
Z2FyIGZvciBjYWxsaW5nCi0gICAgICAgIC8vIE5vZGU6OmVtaXRDb2RlLiBUaGVzZSBmdW5jdGlv
bnMgYWNjZXB0IGEgMCBmb3IgdGhlIHJlZ2lzdGVyLAotICAgICAgICAvLyBtZWFuaW5nIHRoYXQg
dGhlIG5vZGUgc2hvdWxkIGFsbG9jYXRlIGEgcmVnaXN0ZXIsIG9yIGlnbm9yZWRSZXN1bHQoKSwK
LSAgICAgICAgLy8gbWVhbmluZyB0aGF0IHRoZSBub2RlIG5lZWQgbm90IHB1dCB0aGUgcmVzdWx0
IGluIGEgcmVnaXN0ZXIuCi0gICAgICAgIC8vIE90aGVyIGVtaXQgZnVuY3Rpb25zIGRvIG5vdCBh
Y2NlcHQgMCBvciBpZ25vcmVkUmVzdWx0KCkuCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXROb2Rl
KFJlZ2lzdGVySUQqIGRzdCwgTm9kZSogbikKKyAgICAgICAgdm9pZCBlbWl0Tm9kZShSZWdpc3Rl
cklEKiBkc3QsIFN0YXRlbWVudE5vZGUqIG4pCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIE5v
ZGU6OmVtaXRDb2RlIGFzc3VtZXMgdGhhdCBkc3QsIGlmIHByb3ZpZGVkLCBpcyBlaXRoZXIgYSBs
b2NhbCBvciBhIHJlZmVyZW5jZWQgdGVtcG9yYXJ5LgogICAgICAgICAgICAgQVNTRVJUKCFkc3Qg
fHwgZHN0ID09IGlnbm9yZWRSZXN1bHQoKSB8fCAhZHN0LT5pc1RlbXBvcmFyeSgpIHx8IGRzdC0+
cmVmQ291bnQoKSk7CiAgICAgICAgICAgICBhZGRMaW5lSW5mbyhuLT5saW5lTm8oKSk7Ci0gICAg
ICAgICAgICByZXR1cm4gbV9zdGFjay5pc1NhZmVUb1JlY3Vyc2UoKQotICAgICAgICAgICAgICAg
ID8gbi0+ZW1pdEJ5dGVjb2RlKCp0aGlzLCBkc3QpCi0gICAgICAgICAgICAgICAgOiBlbWl0VGhy
b3dFeHByZXNzaW9uVG9vRGVlcEV4Y2VwdGlvbigpOworICAgICAgICAgICAgaWYgKCFtX3N0YWNr
LmlzU2FmZVRvUmVjdXJzZSgpKSB7CisgICAgICAgICAgICAgICAgZW1pdFRocm93RXhwcmVzc2lv
blRvb0RlZXBFeGNlcHRpb24oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBuLT5lbWl0Qnl0ZWNvZGUoKnRoaXMsIGRzdCk7CiAgICAgICAgIH0K
IAotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Tm9kZShOb2RlKiBuKQorICAgICAgICB2b2lkIGVt
aXROb2RlKFN0YXRlbWVudE5vZGUqIG4pCisgICAgICAgIHsKKyAgICAgICAgICAgIGVtaXROb2Rl
KDAsIG4pOworICAgICAgICB9CisKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdE5vZGUoUmVnaXN0
ZXJJRCogZHN0LCBFeHByZXNzaW9uTm9kZSogbikKKyAgICAgICAgeworICAgICAgICAgICAgLy8g
Tm9kZTo6ZW1pdENvZGUgYXNzdW1lcyB0aGF0IGRzdCwgaWYgcHJvdmlkZWQsIGlzIGVpdGhlciBh
IGxvY2FsIG9yIGEgcmVmZXJlbmNlZCB0ZW1wb3JhcnkuCisgICAgICAgICAgICBBU1NFUlQoIWRz
dCB8fCBkc3QgPT0gaWdub3JlZFJlc3VsdCgpIHx8ICFkc3QtPmlzVGVtcG9yYXJ5KCkgfHwgZHN0
LT5yZWZDb3VudCgpKTsKKyAgICAgICAgICAgIGFkZExpbmVJbmZvKG4tPmxpbmVObygpKTsKKyAg
ICAgICAgICAgIGlmICghbV9zdGFjay5pc1NhZmVUb1JlY3Vyc2UoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZW1pdFRocm93RXhwcmVzc2lvblRvb0RlZXBFeGNlcHRpb24oKTsKKyAgICAgICAg
ICAgIHJldHVybiBuLT5lbWl0Qnl0ZWNvZGUoKnRoaXMsIGRzdCk7CisgICAgICAgIH0KKworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Tm9kZShFeHByZXNzaW9uTm9kZSogbikKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIGVtaXROb2RlKDAsIG4pOwogICAgICAgICB9CkBAIC0zNTcsMTAg
KzM2OSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBlbWl0Tm9kZUluQ29uZGl0
aW9uQ29udGV4dChFeHByZXNzaW9uTm9kZSogbiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBm
YWxzZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlIGZhbGxUaHJvdWdoTW9kZSkKICAgICAgICAgewog
ICAgICAgICAgICAgYWRkTGluZUluZm8obi0+bGluZU5vKCkpOwotICAgICAgICAgICAgaWYgKG1f
c3RhY2suaXNTYWZlVG9SZWN1cnNlKCkpCi0gICAgICAgICAgICAgICAgbi0+ZW1pdEJ5dGVjb2Rl
SW5Db25kaXRpb25Db250ZXh0KCp0aGlzLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwgZmFsbFRo
cm91Z2hNb2RlKTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmICghbV9zdGFjay5p
c1NhZmVUb1JlY3Vyc2UoKSkgewogICAgICAgICAgICAgICAgIGVtaXRUaHJvd0V4cHJlc3Npb25U
b29EZWVwRXhjZXB0aW9uKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBuLT5lbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoKnRoaXMs
IHRydWVUYXJnZXQsIGZhbHNlVGFyZ2V0LCBmYWxsVGhyb3VnaE1vZGUpOwogICAgICAgICB9CiAK
ICAgICAgICAgdm9pZCBlbWl0RXhwcmVzc2lvbkluZm8odW5zaWduZWQgZGl2b3QsIHVuc2lnbmVk
IHN0YXJ0T2Zmc2V0LCB1bnNpZ25lZCBlbmRPZmZzZXQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCShyZXZpc2lvbiAx
NDc2NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MzEsMTAgKzE0MzEsMTAgQEAgUmVnaXN0ZXJJRCog
Q29uc3REZWNsTm9kZTo6ZW1pdEJ5dGVjb2RlKAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQ29uc3RTdGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAKLVJlZ2lzdGVySUQqIENvbnN0U3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQordm9pZCBDb25zdFN0YXRlbWVudE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KikKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwg
Zmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKLSAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXROb2RlKG1fbmV4dCk7CisgICAgZ2VuZXJhdG9yLmVtaXROb2RlKG1fbmV4dCk7
CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTb3VyY2VFbGVtZW50cyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNDY1LDUwICsxNDY1LDQ4IEBAIGlu
bGluZSBTdGF0ZW1lbnROb2RlKiBCbG9ja05vZGU6OnNpbmdsZVMKICAgICByZXR1cm4gbV9zdGF0
ZW1lbnRzID8gbV9zdGF0ZW1lbnRzLT5zaW5nbGVTdGF0ZW1lbnQoKSA6IDA7CiB9CiAKLVJlZ2lz
dGVySUQqIEJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlmIChtX3N0
YXRlbWVudHMpCi0gICAgICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwg
ZHN0KTsKLSAgICByZXR1cm4gMDsKKyAgICBpZiAoIW1fc3RhdGVtZW50cykKKyAgICAgICAgcmV0
dXJuOworICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0KTsKIH0K
IAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEVtcHR5U3RhdGVtZW50Tm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRW1wdHlTdGF0ZW1lbnRO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJ
RCogZHN0KQordm9pZCBFbXB0eVN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBnZW5lcmF0b3IuZW1pdERl
YnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNo
YXJQb3NpdGlvbigpKTsKLSAgICByZXR1cm4gZHN0OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gRGVidWdnZXJTdGF0ZW1lbnROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCi1SZWdpc3RlcklEKiBEZWJ1Z2dlclN0YXRlbWVudE5vZGU6OmVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIERl
YnVnZ2VyU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZFJl
YWNoQnJlYWtwb2ludCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsK
LSAgICByZXR1cm4gZHN0OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g
RXhwclN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3Rl
cklEKiBFeHByU3RhdGVtZW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgRXhwclN0YXRlbWVudE5vZGU6OmVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7
CiAgICAgQVNTRVJUKG1fZXhwcik7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4
ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7
Ci0gICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fZXhwcik7CisgICAgZ2VuZXJh
dG9yLmVtaXROb2RlKGRzdCwgbV9leHByKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tIFZhclN0YXRlbWVudE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
Ci1SZWdpc3RlcklEKiBWYXJTdGF0ZW1lbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCit2b2lkIFZhclN0YXRlbWVudE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsK
ICAgICBBU1NFUlQobV9leHByKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhl
Y3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsK
LSAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CisgICAgZ2VuZXJhdG9yLmVt
aXROb2RlKG1fZXhwcik7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJ
Zk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVy
SUQqIElmTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKK3ZvaWQgSWZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGdlbmVyYXRvci5lbWl0RGVi
dWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hh
clBvc2l0aW9uKCkpOwogICAgIApAQCAtMTUyMCwxNCArMTUxOCwxMSBAQCBSZWdpc3RlcklEKiBJ
Zk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kCiAKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0
LCBtX2lmQmxvY2spOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYWZ0ZXJUaGVuLmdldCgpKTsK
LQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCByZXR1cm4gdGhlIGxhc3Qgc3RhdGVtZW50IGV4
ZWN1dGVkIHNvIHRoYXQgaXQgY2FuIGJlIHJldHVybmVkIGFzIGEgQ29tcGxldGlvbi4KLSAgICBy
ZXR1cm4gMDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIElmRWxzZU5v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQq
IElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCit2b2lkIElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgZ2VuZXJhdG9yLmVt
aXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgp
LCBjaGFyUG9zaXRpb24oKSk7CiAgICAgCkBAIC0xNTQ2LDE0ICsxNTQxLDExIEBAIFJlZ2lzdGVy
SUQqIElmRWxzZU5vZGU6OmVtaXRCeXRlY29kZShCeXQKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUo
ZHN0LCBtX2Vsc2VCbG9jayk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGFmdGVyRWxzZS5n
ZXQoKSk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIHRoZSBsYXN0IHN0YXRl
bWVudCBleGVjdXRlZCBzbyB0aGF0IGl0IGNhbiBiZSByZXR1cm5lZCBhcyBhIENvbXBsZXRpb24u
Ci0gICAgcmV0dXJuIDA7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBE
b1doaWxlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVy
SUQqIERvV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBEb1doaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBMYWJlbFNj
b3BlUHRyIHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7
CiAKQEAgLTE1NjIsMTkgKzE1NTQsMTggQEAgUmVnaXN0ZXJJRCogRG9XaGlsZU5vZGU6OmVtaXRC
eXRlY29kZShCeQogICAgIGdlbmVyYXRvci5lbWl0TG9vcEhpbnQoKTsKICAgICBnZW5lcmF0b3Iu
ZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgbGFzdExpbmUo
KSwgY2hhclBvc2l0aW9uKCkpOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdl
bmVyYXRvci5lbWl0Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5v
ZGUoZHN0LCBtX3N0YXRlbWVudCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5j
b250aW51ZVRhcmdldCgpKTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0
ZVN0YXRlbWVudCwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOwogICAg
IGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9vcC5n
ZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIEZhbGxUaHJvdWdoTWVhbnNGYWxzZSk7CiAKICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKLSAgICByZXR1cm4g
cmVzdWx0LmdldCgpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2hp
bGVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklE
KiBXaGlsZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCit2b2lkIFdoaWxlTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBMYWJlbFNjb3BlUHRy
IHNjb3BlID0gZ2VuZXJhdG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAgICAg
UmVmUHRyPExhYmVsPiB0b3BPZkxvb3AgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKQEAgLTE1OTMs
MTQgKzE1ODQsMTEgQEAgUmVnaXN0ZXJJRCogV2hpbGVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZQog
ICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29uZGl0aW9uQ29udGV4dChtX2V4cHIsIHRvcE9mTG9v
cC5nZXQoKSwgc2NvcGUtPmJyZWFrVGFyZ2V0KCksIEZhbGxUaHJvdWdoTWVhbnNGYWxzZSk7CiAK
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKLSAgICAKLSAg
ICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmV0dXJuIHRoZSBsYXN0IHN0YXRlbWVudCBleGVjdXRl
ZCBzbyB0aGF0IGl0IGNhbiBiZSByZXR1cm5lZCBhcyBhIENvbXBsZXRpb24KLSAgICByZXR1cm4g
MDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZvck5vZGUgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogRm9yTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKK3ZvaWQgRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBMYWJlbFNjb3BlUHRyIHNjb3BlID0gZ2VuZXJh
dG9yLm5ld0xhYmVsU2NvcGUoTGFiZWxTY29wZTo6TG9vcCk7CiAKQEAgLTE2MTYsNyArMTYwNCw3
IEBAIFJlZ2lzdGVySUQqIEZvck5vZGU6OmVtaXRCeXRlY29kZShCeXRlY28KICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKHRvcE9mTG9vcC5nZXQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRMb29wSGlu
dCgpOwogCi0gICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHJlc3VsdCA9IGdlbmVyYXRvci5lbWl0Tm9k
ZShkc3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRl
bWVudCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5jb250aW51ZVRhcmdldCgp
KTsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVudCwgZmly
c3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKQEAgLTE2MjksMTcgKzE2MTcs
MTggQEAgUmVnaXN0ZXJJRCogRm9yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjbwogICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXAodG9wT2ZMb29wLmdldCgpKTsKIAogICAgIGdlbmVyYXRvci5lbWl0
TGFiZWwoc2NvcGUtPmJyZWFrVGFyZ2V0KCkpOwotICAgIHJldHVybiByZXN1bHQuZ2V0KCk7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGb3JJbk5vZGUgLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEZvckluTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkK
K3ZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIExhYmVsU2NvcGVQdHIgc2NvcGUgPSBnZW5lcmF0
b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpMb29wKTsKIAotICAgIGlmICghbV9sZXhwci0+
aXNMb2NhdGlvbigpKQotICAgICAgICByZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2Vu
ZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJlbmNl
LiIpOworICAgIGlmICghbV9sZXhwci0+aXNMb2NhdGlvbigpKSB7CisgICAgICAgIGVtaXRUaHJv
d1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgIkxlZnQgc2lkZSBvZiBmb3ItaW4gc3RhdGVtZW50
IGlzIG5vdCBhIHJlZmVyZW5jZS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGdl
bmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwg
bGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOwogCkBAIC0xNzA3LDEzICsxNjk2LDExIEBAIFJl
Z2lzdGVySUQqIEZvckluTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGUKICAgICBnZW5lcmF0b3IuZW1p
dE5leHRQcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lLCBiYXNlLmdldCgpLCBpLmdldCgpLCBzaXpl
LmdldCgpLCBpdGVyLmdldCgpLCBsb29wU3RhcnQuZ2V0KCkpOwogICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwg
Y2hhclBvc2l0aW9uKCkpOwogICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc2NvcGUtPmJyZWFrVGFy
Z2V0KCkpOwotICAgIHJldHVybiBkc3Q7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSBDb250aW51ZU5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAK
LS8vIEVDTUEgMTIuNwotUmVnaXN0ZXJJRCogQ29udGludWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBDb250aW51
ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKikKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKICAgICAKQEAgLTE3
MjIsMTMgKzE3MDksMTEgQEAgUmVnaXN0ZXJJRCogQ29udGludWVOb2RlOjplbWl0Qnl0ZWNvZGUo
QgogCiAgICAgZ2VuZXJhdG9yLmVtaXRQb3BTY29wZXMoc2NvcGUtPnNjb3BlRGVwdGgoKSk7CiAg
ICAgZ2VuZXJhdG9yLmVtaXRKdW1wKHNjb3BlLT5jb250aW51ZVRhcmdldCgpKTsKLSAgICByZXR1
cm4gZHN0OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQnJlYWtOb2Rl
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0vLyBFQ01BIDEyLjgKLVJl
Z2lzdGVySUQqIEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgQnJlYWtOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiB7CiAgICAgZ2VuZXJhdG9y
LmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGlu
ZSgpLCBjaGFyUG9zaXRpb24oKSk7CiAgICAgCkBAIC0xNzM3LDEyICsxNzIyLDExIEBAIFJlZ2lz
dGVySUQqIEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGUKIAogICAgIGdlbmVyYXRvci5lbWl0
UG9wU2NvcGVzKHNjb3BlLT5zY29wZURlcHRoKCkpOwogICAgIGdlbmVyYXRvci5lbWl0SnVtcChz
Y29wZS0+YnJlYWtUYXJnZXQoKSk7Ci0gICAgcmV0dXJuIGRzdDsKIH0KIAogLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJldHVybk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK3ZvaWQgUmV0dXJuTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
IGRzdCkKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhXaWxsRXhlY3V0ZVN0YXRlbWVu
dCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKICAgICBBU1NFUlQo
Z2VuZXJhdG9yLmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKTsKQEAgLTE3NTcsMjkgKzE3NDEs
MjkgQEAgUmVnaXN0ZXJJRCogUmV0dXJuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dAogICAgIH0KIAog
ICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxMZWF2ZUNhbGxGcmFtZSwgZmlyc3RMaW5l
KCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlvbigpKTsKLSAgICByZXR1cm4gZ2VuZXJhdG9yLmVt
aXRSZXR1cm4ocmV0dXJuUmVnaXN0ZXIuZ2V0KCkpOworICAgIGdlbmVyYXRvci5lbWl0UmV0dXJu
KHJldHVyblJlZ2lzdGVyLmdldCgpKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIFdpdGhOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAot
UmVnaXN0ZXJJRCogV2l0aE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIFdpdGhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGdlbmVy
YXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFz
dExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOwogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3Bl
ID0gZ2VuZXJhdG9yLmVtaXROb2RlKG1fZXhwcik7CiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNz
aW9uSW5mbyhtX2Rpdm90LCBtX2V4cHJlc3Npb25MZW5ndGgsIDApOwogICAgIGdlbmVyYXRvci5l
bWl0UHVzaFdpdGhTY29wZShzY29wZS5nZXQoKSk7Ci0gICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0g
Z2VuZXJhdG9yLmVtaXROb2RlKGRzdCwgbV9zdGF0ZW1lbnQpOworICAgIGdlbmVyYXRvci5lbWl0
Tm9kZShkc3QsIG1fc3RhdGVtZW50KTsKICAgICBnZW5lcmF0b3IuZW1pdFBvcFNjb3BlKCk7Ci0g
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IENhc2VDbGF1c2VOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGlubGlu
ZSB2b2lkIENhc2VDbGF1c2VOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewotICAgIGlmIChtX3N0YXRlbWVudHMpCi0gICAg
ICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5dGVjb2RlKGdlbmVyYXRvciwgZHN0KTsKKyAgICBpZiAo
IW1fc3RhdGVtZW50cykKKyAgICAgICAgcmV0dXJuOworICAgIG1fc3RhdGVtZW50cy0+ZW1pdEJ5
dGVjb2RlKGdlbmVyYXRvciwgZHN0KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIENhc2VCbG9ja05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAg
LTE4NzMsNyArMTg1Nyw3IEBAIFN3aXRjaEluZm86OlN3aXRjaFR5cGUgQ2FzZUJsb2NrTm9kZTo6
dHIKICAgICByZXR1cm4gU3dpdGNoSW5mbzo6U3dpdGNoU3RyaW5nOwogfQogCi1SZWdpc3RlcklE
KiBDYXNlQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBzd2l0Y2hFeHByZXNzaW9uLCBSZWdpc3RlcklEKiBkc3Qp
Cit2b2lkIENhc2VCbG9ja05vZGU6OmVtaXRCeXRlY29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHN3aXRjaEV4cHJlc3Npb24sIFJlZ2lzdGVySUQq
IGRzdCkKIHsKICAgICBSZWZQdHI8TGFiZWw+IGRlZmF1bHRMYWJlbDsKICAgICBWZWN0b3I8UmVm
UHRyPExhYmVsPiwgOD4gbGFiZWxWZWN0b3I7CkBAIC0xOTA5LDggKzE4OTMsNiBAQCBSZWdpc3Rl
cklEKiBDYXNlQmxvY2tOb2RlOjplbWl0Qnl0ZWNvZGVGCiAgICAgICAgIGdlbmVyYXRvci5lbWl0
SnVtcChkZWZhdWx0TGFiZWwuZ2V0KCkpOwogICAgIH0KIAotICAgIFJlZ2lzdGVySUQqIHJlc3Vs
dCA9IDA7Ci0KICAgICBzaXplX3QgaSA9IDA7CiAgICAgZm9yIChDbGF1c2VMaXN0Tm9kZSogbGlz
dCA9IG1fbGlzdDE7IGxpc3Q7IGxpc3QgPSBsaXN0LT5nZXROZXh0KCkpIHsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRMYWJlbChsYWJlbFZlY3RvcltpKytdLmdldCgpKTsKQEAgLTE5MzQsNDIgKzE5
MTYsMzkgQEAgUmVnaXN0ZXJJRCogQ2FzZUJsb2NrTm9kZTo6ZW1pdEJ5dGVjb2RlRgogICAgICAg
ICBBU1NFUlQobGFiZWxWZWN0b3Iuc2l6ZSgpID09IGxpdGVyYWxWZWN0b3Iuc2l6ZSgpKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVuZFN3aXRjaChsYWJlbFZlY3Rvci5zaXplKCksIGxhYmVsVmVjdG9y
LmRhdGEoKSwgbGl0ZXJhbFZlY3Rvci5kYXRhKCksIGRlZmF1bHRMYWJlbC5nZXQoKSwgbWluX251
bSwgbWF4X251bSk7CiAgICAgfQotICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTd2l0Y2hOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIFN3aXRjaE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIFN3aXRjaE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1l
bnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7CiAgICAgCiAgICAg
TGFiZWxTY29wZVB0ciBzY29wZSA9IGdlbmVyYXRvci5uZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6
OlN3aXRjaCk7CiAKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9leHByKTsKLSAgICBSZWdpc3RlcklEKiByMSA9IG1fYmxvY2stPmVtaXRCeXRlY29kZUZv
ckJsb2NrKGdlbmVyYXRvciwgcjAuZ2V0KCksIGRzdCk7CisgICAgbV9ibG9jay0+ZW1pdEJ5dGVj
b2RlRm9yQmxvY2soZ2VuZXJhdG9yLCByMC5nZXQoKSwgZHN0KTsKIAogICAgIGdlbmVyYXRvci5l
bWl0TGFiZWwoc2NvcGUtPmJyZWFrVGFyZ2V0KCkpOwotICAgIHJldHVybiByMTsKIH0KIAogLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExhYmVsTm9kZSAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCogTGFiZWxOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQordm9pZCBM
YWJlbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCiB7CiAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbEV4ZWN1dGVT
dGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSk7CiAKICAg
ICBBU1NFUlQoIWdlbmVyYXRvci5icmVha1RhcmdldChtX25hbWUpKTsKIAogICAgIExhYmVsU2Nv
cGVQdHIgc2NvcGUgPSBnZW5lcmF0b3IubmV3TGFiZWxTY29wZShMYWJlbFNjb3BlOjpOYW1lZExh
YmVsLCAmbV9uYW1lKTsKLSAgICBSZWdpc3RlcklEKiByMCA9IGdlbmVyYXRvci5lbWl0Tm9kZShk
c3QsIG1fc3RhdGVtZW50KTsKKyAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX3N0YXRlbWVu
dCk7CiAKICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHNjb3BlLT5icmVha1RhcmdldCgpKTsKLSAg
ICByZXR1cm4gcjA7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUaHJv
d05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQq
IFRocm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCkKK3ZvaWQgVGhyb3dOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGdlbmVyYXRvci5lbWl0
RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwg
Y2hhclBvc2l0aW9uKCkpOwogCkBAIC0xOTc4LDEyICsxOTU3LDExIEBAIFJlZ2lzdGVySUQqIFRo
cm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGUKICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZXhwciA9
IGdlbmVyYXRvci5lbWl0Tm9kZShtX2V4cHIpOwogICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lv
bkluZm8oZGl2b3QoKSwgc3RhcnRPZmZzZXQoKSwgZW5kT2Zmc2V0KCkpOwogICAgIGdlbmVyYXRv
ci5lbWl0VGhyb3coZXhwci5nZXQoKSk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBUcnlOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIFRyeU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCit2b2lkIFRyeU5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3Qp
CiB7CiAgICAgLy8gTk9URTogVGhlIGNhdGNoIGFuZCBmaW5hbGx5IGJsb2NrcyBtdXN0IGJlIGxh
YmVsZWQgZXhwbGljaXRseSwgc28gdGhlCiAgICAgLy8gb3B0aW1pemVyIGtub3dzIHRoZXkgbWF5
IGJlIGp1bXBlZCB0byBmcm9tIGFueXdoZXJlLgpAQCAtMjA0MSwyMSArMjAxOSwyMCBAQCBSZWdp
c3RlcklEKiBUcnlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvCiAKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRMYWJlbChmaW5hbGx5RW5kTGFiZWwuZ2V0KCkpOwogICAgIH0KLQotICAgIHJldHVybiBk
c3Q7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTY29wZU5vZGUgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogaW5saW5lIHZvaWQgU2NvcGVOb2RlOjplbWl0
U3RhdGVtZW50c0J5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVy
SUQqIGRzdCkKIHsKLSAgICBpZiAobV9zdGF0ZW1lbnRzKQotICAgICAgICBtX3N0YXRlbWVudHMt
PmVtaXRCeXRlY29kZShnZW5lcmF0b3IsIGRzdCk7CisgICAgaWYgKCFtX3N0YXRlbWVudHMpCisg
ICAgICAgIHJldHVybjsKKyAgICBtX3N0YXRlbWVudHMtPmVtaXRCeXRlY29kZShnZW5lcmF0b3Is
IGRzdCk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQcm9ncmFtTm9k
ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBQcm9ncmFtTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQordm9pZCBQcm9ncmFtTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxF
eGVjdXRlUHJvZ3JhbSwgc3RhcnRMaW5lKCksIHN0YXJ0TGluZSgpLCBzdGFydENoYXJQb3NpdGlv
bigpKTsKIApAQCAtMjA2NSwxMiArMjA0MiwxMSBAQCBSZWdpc3RlcklEKiBQcm9ncmFtTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5CiAKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRl
UHJvZ3JhbSwgbGFzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkgLSAxKTsKICAg
ICBnZW5lcmF0b3IuZW1pdEVuZChkc3RSZWdpc3Rlci5nZXQoKSk7Ci0gICAgcmV0dXJuIDA7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBFdmFsTm9kZSAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCi1SZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQordm9pZCBFdmFsTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQq
KQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlUHJvZ3JhbSwgc3Rh
cnRMaW5lKCksIHN0YXJ0TGluZSgpLCBzdGFydENoYXJQb3NpdGlvbigpKTsKIApAQCAtMjA4MCwx
MiArMjA1NiwxMSBAQCBSZWdpc3RlcklEKiBFdmFsTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjCiAK
ICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhEaWRFeGVjdXRlUHJvZ3JhbSwgbGFzdExpbmUo
KSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkgLSAxKTsKICAgICBnZW5lcmF0b3IuZW1pdEVu
ZChkc3RSZWdpc3Rlci5nZXQoKSk7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSBGdW5jdGlvbkJvZHlOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKikKK3ZvaWQgRnVuY3Rpb25C
b2R5Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqKQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKERpZEVudGVyQ2FsbEZyYW1l
LCBzdGFydExpbmUoKSwgc3RhcnRMaW5lKCksIHN0YXJ0Q2hhclBvc2l0aW9uKCkpOwogICAgIGVt
aXRTdGF0ZW1lbnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgp
KTsKQEAgLTIxMDYsNyArMjA4MSw3IEBAIFJlZ2lzdGVySUQqIEZ1bmN0aW9uQm9keU5vZGU6OmVt
aXRCeXRlY28KICAgICAgICAgQVNTRVJUKChjaGFyUG9zaXRpb24oKSAtICAxKSA+PSAwKTsKICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXREZWJ1Z0hvb2soV2lsbExlYXZlQ2FsbEZyYW1lLCBsYXN0TGlu
ZSgpLCBsYXN0TGluZSgpLCBjaGFyUG9zaXRpb24oKSAtIDEpOwogICAgICAgICBnZW5lcmF0b3Iu
ZW1pdFJldHVybihyMCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgLy8gSWYgdGhlcmUgaXMgYSByZXR1cm4gc3RhdG1lbnQsIGFuZCBpdCBpcyB0aGUg
b25seSBzdGF0ZW1lbnQgaW4gdGhlIGZ1bmN0aW9uLCBjaGVjayBpZiB0aGlzIGlzIGEgbnVtZXJp
YyBjb21wYXJlLgpAQCAtMjEyNCwxNyArMjA5OSwxMiBAQCBSZWdpc3RlcklEKiBGdW5jdGlvbkJv
ZHlOb2RlOjplbWl0Qnl0ZWNvCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KLSAg
ICByZXR1cm4gMDsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1bmNE
ZWNsTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotUmVnaXN0ZXJJRCog
RnVuY0RlY2xOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQordm9pZCBGdW5jRGVjbE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqKQogewotICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmln
bm9yZWRSZXN1bHQoKSkKLSAgICAgICAgZHN0ID0gMDsKLSAgICByZXR1cm4gZHN0OwogfQogCiAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY0V4cHJOb2RlIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2RlQ29uc3RydWN0b3JzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgJKHJldmlzaW9uIDE0NzY3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTYsMTQgKzE1NiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9CiAKICAgICBpbmxpbmUg
UHJvcGVydHlMaXN0Tm9kZTo6UHJvcGVydHlMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBQcm9wZXJ0eU5vZGUqIG5vZGUpCi0gICAgICAgIDogTm9kZShsb2NhdGlvbikK
KyAgICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX25vZGUobm9k
ZSkKICAgICAgICAgLCBtX25leHQoMCkKICAgICB7CiAgICAgfQogCiAgICAgaW5saW5lIFByb3Bl
cnR5TGlzdE5vZGU6OlByb3BlcnR5TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgUHJvcGVydHlOb2RlKiBub2RlLCBQcm9wZXJ0eUxpc3ROb2RlKiBsaXN0KQotICAgICAg
ICA6IE5vZGUobG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24pCiAg
ICAgICAgICwgbV9ub2RlKG5vZGUpCiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgewpAQCAtMTk4
LDE0ICsxOTgsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfQogCiAgICAgaW5saW5lIEFyZ3Vt
ZW50TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2Nh
dGlvbiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIpCi0gICAgICAgIDogTm9kZShsb2NhdGlvbikKKyAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX25leHQoMCkKICAg
ICAgICAgLCBtX2V4cHIoZXhwcikKICAgICB7CiAgICAgfQogCiAgICAgaW5saW5lIEFyZ3VtZW50
TGlzdE5vZGU6OkFyZ3VtZW50TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgQXJndW1lbnRMaXN0Tm9kZSogbGlzdE5vZGUsIEV4cHJlc3Npb25Ob2RlKiBleHByKQotICAg
ICAgICA6IE5vZGUobG9jYXRpb24pCisgICAgICAgIDogRXhwcmVzc2lvbk5vZGUobG9jYXRpb24p
CiAgICAgICAgICwgbV9uZXh0KDApCiAgICAgICAgICwgbV9leHByKGV4cHIpCiAgICAgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24gMTQ3Njc1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjksOCArMTI5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIH5Ob2RlKCkgeyB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbiA9IDApID0gMDsK
LQogICAgICAgICBpbnQgbGluZU5vKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CiAK
ICAgICAgICAgaW50IGNoYXJQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hhclBvc2l0aW9u
OyB9CkBAIC0xNDUsNiArMTQzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUgPSBSZXN1bHRUeXBlOjp1
bmtub3duVHlwZSgpKTsKIAogICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiBkZXN0aW5hdGlv
biA9IDApID0gMDsKKwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXIoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTdHJpbmcoKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KQEAgLTE3NCw2ICsxNzQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
U3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHB1YmxpYzoKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqIGRlc3RpbmF0aW9uID0gMCkgPSAwOworCiAgICAgICAgIHZvaWQgc2V0TG9jKGludCBm
aXJzdExpbmUsIGludCBsYXN0TGluZSwgaW50IGNoYXJQb3NpdGlvbik7CiAgICAgICAgIGludCBm
aXJzdExpbmUoKSBjb25zdCB7IHJldHVybiBsaW5lTm8oKTsgfQogICAgICAgICBpbnQgbGFzdExp
bmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CkBAIC00MjIsNyArNDI0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFR5cGUgbV90eXBlOwogICAgIH07CiAKLSAgICBjbGFzcyBQ
cm9wZXJ0eUxpc3ROb2RlIDogcHVibGljIE5vZGUgeworICAgIGNsYXNzIFByb3BlcnR5TGlzdE5v
ZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgUHJvcGVy
dHlMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGUqKTsKICAgICAg
ICAgUHJvcGVydHlMaXN0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBQcm9wZXJ0eU5vZGUq
LCBQcm9wZXJ0eUxpc3ROb2RlKik7CkBAIC00ODIsNyArNDg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgfTsKIAotICAgIGNsYXNz
IEFyZ3VtZW50TGlzdE5vZGUgOiBwdWJsaWMgTm9kZSB7CisgICAgY2xhc3MgQXJndW1lbnRMaXN0
Tm9kZSA6IHB1YmxpYyBFeHByZXNzaW9uTm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBBcmd1
bWVudExpc3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAg
ICAgICAgIEFyZ3VtZW50TGlzdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgQXJndW1lbnRM
aXN0Tm9kZSosIEV4cHJlc3Npb25Ob2RlKik7CkBAIC0xMDQ2LDcgKzEwNDgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgQ29uc3RTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIENvbnN0RGVjbE5vZGUqIG5leHQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKIAogICAgICAgICBDb25zdERlY2xOb2RlKiBtX25leHQ7
CiAgICAgfTsKQEAgLTEwNzQsNyArMTA3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBT
dGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVtZW50KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc0Jsb2NrKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0xMDg2LDcgKzEwODgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRW1wdHlTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFbXB0eVN0YXRlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwpAQCAtMTA5Niw3ICsxMDk4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIERlYnVnZ2VyU3RhdGVtZW50Tm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mKTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKTsKICAgICB9OwogCiAgICAgY2xhc3MgRXhwclN0YXRlbWVudE5vZGUgOiBw
dWJsaWMgU3RhdGVtZW50Tm9kZSB7CkBAIC0xMTA4LDcgKzExMTAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwcml2YXRlOgogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFeHByU3RhdGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICB9OwpAQCAtMTEx
Nyw3ICsxMTE5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHVibGljOgogICAgICAgICBWYXJT
dGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKIAogICAg
ICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC0xMTI3LDcgKzExMjksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSWZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2spOwogCiAg
ICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwogCiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2NvbmRpdGlvbjsKICAgICAgICAgU3RhdGVtZW50Tm9k
ZSogbV9pZkJsb2NrOwpAQCAtMTEzOCw3ICsxMTQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIElmRWxzZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGNv
bmRpdGlvbiwgU3RhdGVtZW50Tm9kZSogaWZCbG9jaywgU3RhdGVtZW50Tm9kZSogZWxzZUJsb2Nr
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7
CiAKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV9lbHNlQmxvY2s7CiAgICAgfTsKQEAgLTExNDgs
NyArMTE1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBEb1doaWxlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBTdGF0ZW1lbnROb2RlKiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAKICAgICAg
ICAgU3RhdGVtZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBt
X2V4cHI7CkBAIC0xMTU5LDcgKzExNjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV2hp
bGVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgU3RhdGVtZW50
Tm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgICAgICBTdGF0ZW1l
bnROb2RlKiBtX3N0YXRlbWVudDsKQEAgLTExNzAsNyArMTE3Miw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBGb3JOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0
YXRlbWVudE5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX2V4cHIyOwpAQCAtMTE4NCw3ICsxMTg2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEZvckluTm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBFeHByZXNzaW9uTm9k
ZSosIFN0YXRlbWVudE5vZGUqLCBpbnQgZGl2b3QsIGludCBzdGFydE9mZnNldCwgaW50IGVuZE9m
ZnNldCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2luaXQ7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2xleHByOwpAQCAtMTE5OCw3ICsxMjAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIENvbnRpbnVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCk7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9
OwpAQCAtMTIwOSw3ICsxMjExLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEJyZWFrTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7CiAgICAgICAgIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAKICAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwpAQCAtMTIyMSw3ICsxMjIz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiB2YWx1ZSgpIHsg
cmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCk7CiAKICAgICAgICAgdmlydHVhbCBib29sIGlzUmV0dXJuTm9kZSgpIGNv
bnN0IHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMTIzMyw3ICsxMjM1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFdpdGhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiwgU3RhdGVtZW50Tm9kZSosIHVpbnQzMl90IGRpdm90LCB1aW50MzJfdCBleHByZXNzaW9u
TGVuZ3RoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gMCk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgU3RhdGVt
ZW50Tm9kZSogbV9zdGF0ZW1lbnQ7CkBAIC0xMjQ2LDcgKzEyNDgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgTGFiZWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImIG5hbWUsIFN0YXRlbWVudE5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
bV9uYW1lOwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX3N0YXRlbWVudDsKQEAgLTEyNTcsNyAr
MTI1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBUaHJvd05vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZp
cnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1f
ZXhwcjsKICAgICB9OwpAQCAtMTI2Nyw3ICsxMjY5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFRyeU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9kZSogdHJ5Qmxv
Y2ssIGNvbnN0IElkZW50aWZpZXImIGV4Y2VwdGlvbklkZW50LCBTdGF0ZW1lbnROb2RlKiBjYXRj
aEJsb2NrLCBTdGF0ZW1lbnROb2RlKiBmaW5hbGx5QmxvY2spOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKIAogICAgICAgICBTdGF0ZW1lbnRO
b2RlKiBtX3RyeUJsb2NrOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2V4Y2VwdGlvbklk
ZW50OwpAQCAtMTM2OSw3ICsxMzcxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJpdmF0ZToK
ICAgICAgICAgUHJvZ3JhbU5vZGUoSlNHbG9iYWxEYXRhKiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiBzdGFydCwgY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBlbmQsIFNvdXJjZUVsZW1lbnRzKiwgVmFy
U3RhY2sqLCBGdW5jdGlvblN0YWNrKiwgSWRlbnRpZmllclNldCYsIGNvbnN0IFNvdXJjZUNvZGUm
LCBDb2RlRmVhdHVyZXMsIGludCBudW1Db25zdGFudHMpOwogCi0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxOb2RlIDogcHVibGlj
IFNjb3BlTm9kZSB7CkBAIC0xMzgyLDcgKzEzODQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
cml2YXRlOgogICAgICAgICBFdmFsTm9kZShKU0dsb2JhbERhdGEqLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0LCBjb25zdCBKU1Rva2VuTG9jYXRpb24mIGVuZCwgU291cmNlRWxlbWVudHMq
LCBWYXJTdGFjayosIEZ1bmN0aW9uU3RhY2sqLCBJZGVudGlmaWVyU2V0JiwgY29uc3QgU291cmNl
Q29kZSYsIENvZGVGZWF0dXJlcywgaW50IG51bUNvbnN0YW50cyk7CiAKLSAgICAgICAgdmlydHVh
bCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKICAgICB9OwogCiAgICAgY2xhc3MgRnVuY3Rpb25QYXJh
bWV0ZXJzIDogcHVibGljIFJlZkNvdW50ZWQ8RnVuY3Rpb25QYXJhbWV0ZXJzPiB7CkBAIC0xNDEz
LDcgKzE0MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJz
KiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzLmdldCgpOyB9CiAgICAg
ICAgIHNpemVfdCBwYXJhbWV0ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFyYW1ldGVycy0+
c2l6ZSgpOyB9CiAKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKIAogICAg
ICAgICB2b2lkIGZpbmlzaFBhcnNpbmcoY29uc3QgU291cmNlQ29kZSYsIFBhcmFtZXRlck5vZGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25OYW1lSXNJblNjb3BlVG9nZ2xlKTsKICAgICAg
ICAgdm9pZCBmaW5pc2hQYXJzaW5nKFBhc3NSZWZQdHI8RnVuY3Rpb25QYXJhbWV0ZXJzPiwgY29u
c3QgSWRlbnRpZmllciYsIEZ1bmN0aW9uTmFtZUlzSW5TY29wZVRvZ2dsZSk7CkBAIC0xNDYyLDcg
KzE0NjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogYm9k
eSgpIHsgcmV0dXJuIG1fYm9keTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKTsKIAogICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBtX2JvZHk7
CiAgICAgfTsKQEAgLTE0OTcsNyArMTQ5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1Ymxp
YzoKICAgICAgICAgQ2FzZUJsb2NrTm9kZShDbGF1c2VMaXN0Tm9kZSogbGlzdDEsIENhc2VDbGF1
c2VOb2RlKiBkZWZhdWx0Q2xhdXNlLCBDbGF1c2VMaXN0Tm9kZSogbGlzdDIpOwogCi0gICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZUZvckJsb2NrKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogaW5wdXQsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uKTsKKyAgICAgICAgdm9pZCBl
bWl0Qnl0ZWNvZGVGb3JCbG9jayhCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGlucHV0
LCBSZWdpc3RlcklEKiBkZXN0aW5hdGlvbik7CiAKICAgICBwcml2YXRlOgogICAgICAgICBTd2l0
Y2hJbmZvOjpTd2l0Y2hUeXBlIHRyeVRhYmxlU3dpdGNoKFZlY3RvcjxFeHByZXNzaW9uTm9kZSos
IDg+JiBsaXRlcmFsVmVjdG9yLCBpbnQzMl90JiBtaW5fbnVtLCBpbnQzMl90JiBtYXhfbnVtKTsK
QEAgLTE1MTIsNyArMTUxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTd2l0Y2hOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgQ2FzZUJsb2NrTm9kZSop
OwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
IAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgICAgICBDYXNlQmxvY2tOb2Rl
KiBtX2Jsb2NrOwo=
</data>
<flag name="review"
          id="218631"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>