<?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>74877</bug_id>
          
          <creation_ts>2011-12-19 12:16:09 -0800</creation_ts>
          <short_desc>REGRESSION(r103250): it still breaks codegen (Requested by olliej on #webkit).</short_desc>
          <delta_ts>2019-05-30 09:41:56 -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>
          
          <blocked>74747</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>barraclough</cc>
    
    <cc>brownsevan67</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>524104</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-19 12:16:09 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/103250 broke the build:
it still breaks codegen (Requested by olliej on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524106</commentid>
    <comment_count>1</comment_count>
      <attachid>119899</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-19 12:16:44 -0800</bug_when>
    <thetext>Created attachment 119899
ROLLOUT of r103250

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524109</commentid>
    <comment_count>2</comment_count>
      <attachid>119899</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-19 12:22:50 -0800</bug_when>
    <thetext>Comment on attachment 119899
ROLLOUT of r103250

Clearing flags on attachment: 119899

Committed r103255: &lt;http://trac.webkit.org/changeset/103255&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524110</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-19 12:22:54 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119899</attachid>
            <date>2011-12-19 12:16:44 -0800</date>
            <delta_ts>2011-12-19 12:22:50 -0800</delta_ts>
            <desc>ROLLOUT of r103250</desc>
            <filename>bug-74877-20111219201702.patch</filename>
            <type>text/plain</type>
            <size>68403</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMjUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
ZTQ0ZTg2MjhmNzFlMjNjZTllZTM2YjAxNTFkYmE3YzM1NzY0Y2UyLi4yYzkwYWEzMWM4ZDg5ODQy
NmM3NjE5ODc5MDIwYTYyOTg0OTkwMGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxMS0xMi0xOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBn
bWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwMzI1MC4KKyAg
ICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTAzMjUwCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDg3NworCisgICAgICAgIGl0
IHN0aWxsIGJyZWFrcyBjb2RlZ2VuIChSZXF1ZXN0ZWQgYnkgb2xsaWVqIG9uICN3ZWJraXQpLgor
CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgICogZGZnL0RGR1Byb3BhZ2F0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnByb3BhZ2F0ZUFyaXRoTm9kZUZsYWdz
KToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9yOjpmaXh1cE5vZGUpOgorICAgICAgICAo
SlNDOjpERkc6OlByb3BhZ2F0b3I6OmJ5VmFsSXNQdXJlKToKKyAgICAgICAgKEpTQzo6REZHOjpQ
cm9wYWdhdG9yOjpjbG9iYmVyc1dvcmxkKToKKyAgICAgICAgKEpTQzo6REZHOjpQcm9wYWdhdG9y
OjpnZXRCeVZhbExvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRv
cjo6Y2hlY2tTdHJ1Y3R1cmVMb2FkRWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlBy
b3BhZ2F0b3I6OmdldEJ5T2Zmc2V0TG9hZEVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZH
OjpQcm9wYWdhdG9yOjpnZXRQcm9wZXJ0eVN0b3JhZ2VMb2FkRWxpbWluYXRpb24pOgorICAgICAg
ICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OmdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2VMb2FkRWxp
bWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OlByb3BhZ2F0b3I6OnBlcmZvcm1Ob2RlQ1NF
KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFy
cmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFs
Rm9yRmxvYXRUeXBlZEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoK
KyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZSk6CisKIDIwMTEtMTItMTYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSb2xsaW5nIHIxMDMxMjAgYmFjayBpbiB3aXRoIG1lcmdlIGVycm9ycyBjb3JyZWN0ZWQu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAppbmRl
eCAyMWM4ZjI5NTIxY2JkNTRhOTczOGQ0NzQwMGJlNDY3Njg0ODc1ZmUzLi41OTM1NDZiYWYzMDQz
NDE1MjViNTEwZWQ0NDBmMTg2YjZjNGJkZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTQ5Myw3MyArNDkzLDcwIEBAIGJvb2wgQWJz
dHJhY3RTdGF0ZTo6ZXhlY3V0ZShOb2RlSW5kZXggbm9kZUluZGV4KQogICAgICAgICAgICAgCiAg
ICAgY2FzZSBQdXRCeVZhbDoKICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKLSAgICAgICAgTm9k
ZUluZGV4IGNoaWxkMSA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltub2RlLmZpcnN0Q2hpbGQo
KV07Ci0gICAgICAgIE5vZGVJbmRleCBjaGlsZDIgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5b
bm9kZS5maXJzdENoaWxkKCkgKyAxXTsKLSAgICAgICAgTm9kZUluZGV4IGNoaWxkMyA9IG1fZ3Jh
cGgubV92YXJBcmdDaGlsZHJlbltub2RlLmZpcnN0Q2hpbGQoKSArIDJdOwotICAgICAgICBQcmVk
aWN0ZWRUeXBlIGluZGV4UHJlZGljdGlvbiA9IG1fZ3JhcGhbY2hpbGQyXS5wcmVkaWN0aW9uKCk7
CisgICAgICAgIFByZWRpY3RlZFR5cGUgaW5kZXhQcmVkaWN0aW9uID0gbV9ncmFwaFtub2RlLmNo
aWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgIGlmICghKGluZGV4UHJlZGljdGlvbiAmIFBy
ZWRpY3RJbnQzMikgJiYgaW5kZXhQcmVkaWN0aW9uKSB7CiAgICAgICAgICAgICBjbG9iYmVyU3Ry
dWN0dXJlcyhub2RlSW5kZXgpOwogICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLm1ha2VU
b3AoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX2dyYXBo
W2NoaWxkMV0uc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKLSAgICAgICAgICAgIGZvck5v
ZGUoY2hpbGQxKS5maWx0ZXIoUHJlZGljdEJ5dGVBcnJheSk7Ci0gICAgICAgICAgICBmb3JOb2Rl
KGNoaWxkMikuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICBmb3JOb2RlKGNoaWxk
MykuZmlsdGVyKFByZWRpY3ROdW1iZXIpOworICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxk
MSgpXS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKSkgeworICAgICAgICAgICAgZm9yTm9kZShu
b2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEJ5dGVBcnJheSk7CisgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgZm9y
Tm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKG1fZ3JhcGhbY2hpbGQxXS5z
aG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9kZShjaGlsZDEp
LmZpbHRlcihQcmVkaWN0SW50OEFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUoY2hpbGQyKS5m
aWx0ZXIoUHJlZGljdEludDMyKTsKLSAgICAgICAgICAgIGZvck5vZGUoY2hpbGQzKS5maWx0ZXIo
UHJlZGljdE51bWJlcik7CisgICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3Vs
ZFNwZWN1bGF0ZUludDhBcnJheSgpKSB7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLmZpbHRlcihQcmVkaWN0SW50OEFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUu
Y2hpbGQzKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9Ci0gICAgICAgIGlmIChtX2dyYXBoW2NoaWxkMV0uc2hvdWxkU3BlY3VsYXRlSW50MTZB
cnJheSgpKSB7Ci0gICAgICAgICAgICBmb3JOb2RlKGNoaWxkMSkuZmlsdGVyKFByZWRpY3RJbnQx
NkFycmF5KTsKLSAgICAgICAgICAgIGZvck5vZGUoY2hpbGQyKS5maWx0ZXIoUHJlZGljdEludDMy
KTsKLSAgICAgICAgICAgIGZvck5vZGUoY2hpbGQzKS5maWx0ZXIoUHJlZGljdE51bWJlcik7Cisg
ICAgICAgIGlmIChtX2dyYXBoW25vZGUuY2hpbGQxKCldLnNob3VsZFNwZWN1bGF0ZUludDE2QXJy
YXkoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGlj
dEludDE2QXJyYXkpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIo
UHJlZGljdEludDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVy
KFByZWRpY3ROdW1iZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAg
aWYgKG1fZ3JhcGhbY2hpbGQxXS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKLSAgICAg
ICAgICAgIGZvck5vZGUoY2hpbGQxKS5maWx0ZXIoUHJlZGljdEludDMyQXJyYXkpOwotICAgICAg
ICAgICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihQcmVkaWN0SW50MzIpOwotICAgICAgICAgICAg
Zm9yTm9kZShjaGlsZDMpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgaWYgKG1fZ3Jh
cGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7CisgICAgICAg
ICAgICBmb3JOb2RlKG5vZGUuY2hpbGQxKCkpLmZpbHRlcihQcmVkaWN0SW50MzJBcnJheSk7Cisg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0SW50MzIpOwor
ICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGljdE51bWJlcik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAobV9ncmFwaFtjaGls
ZDFdLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9kZShj
aGlsZDEpLmZpbHRlcihQcmVkaWN0VWludDhBcnJheSk7Ci0gICAgICAgICAgICBmb3JOb2RlKGNo
aWxkMikuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAgICAgICBmb3JOb2RlKGNoaWxkMyku
ZmlsdGVyKFByZWRpY3ROdW1iZXIpOworICAgICAgICBpZiAobV9ncmFwaFtub2RlLmNoaWxkMSgp
XS5zaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKKyAgICAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RVaW50OEFycmF5KTsKKyAgICAgICAgICAgIGZvck5v
ZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX2dyYXBoW2NoaWxkMV0uc2hvdWxkU3BlY3Vs
YXRlVWludDE2QXJyYXkoKSkgewotICAgICAgICAgICAgZm9yTm9kZShjaGlsZDEpLmZpbHRlcihQ
cmVkaWN0VWludDE2QXJyYXkpOwotICAgICAgICAgICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihQ
cmVkaWN0SW50MzIpOwotICAgICAgICAgICAgZm9yTm9kZShjaGlsZDMpLmZpbHRlcihQcmVkaWN0
TnVtYmVyKTsKKyAgICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3Vs
YXRlVWludDE2QXJyYXkoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5m
aWx0ZXIoUHJlZGljdFVpbnQxNkFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGls
ZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hp
bGQzKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9Ci0gICAgICAgIGlmIChtX2dyYXBoW2NoaWxkMV0uc2hvdWxkU3BlY3VsYXRlVWludDMyQXJy
YXkoKSkgewotICAgICAgICAgICAgZm9yTm9kZShjaGlsZDEpLmZpbHRlcihQcmVkaWN0VWludDMy
QXJyYXkpOwotICAgICAgICAgICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihQcmVkaWN0SW50MzIp
OwotICAgICAgICAgICAgZm9yTm9kZShjaGlsZDMpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAg
ICAgICAgaWYgKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlVWludDMyQXJy
YXkoKSkgeworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGlj
dFVpbnQzMkFycmF5KTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDIoKSkuZmlsdGVy
KFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRl
cihQcmVkaWN0TnVtYmVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAg
IGlmIChtX2dyYXBoW2NoaWxkMV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkpIHsKLSAg
ICAgICAgICAgIGZvck5vZGUoY2hpbGQxKS5maWx0ZXIoUHJlZGljdEZsb2F0MzJBcnJheSk7Ci0g
ICAgICAgICAgICBmb3JOb2RlKGNoaWxkMikuZmlsdGVyKFByZWRpY3RJbnQzMik7Ci0gICAgICAg
ICAgICBmb3JOb2RlKGNoaWxkMykuZmlsdGVyKFByZWRpY3ROdW1iZXIpOworICAgICAgICBpZiAo
bV9ncmFwaFtub2RlLmNoaWxkMSgpXS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkgewor
ICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdEZsb2F0MzJB
cnJheSk7CisgICAgICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkpLmZpbHRlcihQcmVkaWN0
SW50MzIpOworICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMygpKS5maWx0ZXIoUHJlZGlj
dE51bWJlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBpZiAobV9n
cmFwaFtjaGlsZDFdLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKSB7Ci0gICAgICAgICAg
ICBmb3JOb2RlKGNoaWxkMSkuZmlsdGVyKFByZWRpY3RGbG9hdDY0QXJyYXkpOwotICAgICAgICAg
ICAgZm9yTm9kZShjaGlsZDIpLmZpbHRlcihQcmVkaWN0SW50MzIpOwotICAgICAgICAgICAgZm9y
Tm9kZShjaGlsZDMpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKKyAgICAgICAgaWYgKG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKKyAgICAgICAg
ICAgIGZvck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RGbG9hdDY0QXJyYXkpOwor
ICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5maWx0ZXIoUHJlZGljdEludDMyKTsK
KyAgICAgICAgICAgIGZvck5vZGUobm9kZS5jaGlsZDMoKSkuZmlsdGVyKFByZWRpY3ROdW1iZXIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBm
b3JOb2RlKGNoaWxkMSkuZmlsdGVyKFByZWRpY3RBcnJheSk7Ci0gICAgICAgIGZvck5vZGUoY2hp
bGQyKS5maWx0ZXIoUHJlZGljdEludDMyKTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgp
KS5maWx0ZXIoUHJlZGljdEFycmF5KTsKKyAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMigpKS5m
aWx0ZXIoUHJlZGljdEludDMyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCmlu
ZGV4IDQwYTdmNjk2N2Q2OWEzNjY2MDNkYjgyN2QyOTgzNWY5YTg4MDJiOGEuLjExYThlMDZmMzcx
MTE0NzIxMDhlNGFjZjAxZTNhNDg5OWYxZTQzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xNjYyLDE0ICsxNjYyLDggQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAg
IE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwog
ICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5ID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwotICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5
U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSwgYmFzZSwgcHJv
cGVydHkpOwogCi0gICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChiYXNlKTsKLSAgICAgICAgICAg
IGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5KTsKLSAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHZh
bHVlKTsKLSAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHByb3BlcnR5U3RvcmFnZSk7Ci0gICAg
ICAgICAgICAKLSAgICAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBQdXRCeVZhbCwg
T3BJbmZvKDApLCBPcEluZm8oMCkpOworICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRCeVZhbCwg
YmFzZSwgcHJvcGVydHksIHZhbHVlKTsKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfcHV0
X2J5X3ZhbCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKaW5kZXgg
MWI2NDQwZDhlZTBiNTMxYWU2OTU1OTM4NDU5YTFjODk0NzM1MWM1OC4uMGU4MzRkMjM4OGJhYjc2
MjBjYjNkY2YxZWJiMGYyMzI1NGU0ZThhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
LmgKQEAgLTIyNiwxNSArMjI2LDE1IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogYXJpdGhO
b2RlRmxhZ3NBc1N0cmluZyhBcml0aE5vZGVGbGFncyBmbGFncykKICAgICAvKiBTaW5jZSBhIHB1
dCB0byAnbGVuZ3RoJyBtYXkgaW52YWxpZGF0ZSBvcHRpbWl6YXRpb25zIGhlcmUsICovXAogICAg
IC8qIHRoaXMgbXVzdCBiZSB0aGUgZGlyZWN0bHkgc3Vic2VxdWVudCBwcm9wZXJ0eSBwdXQuICov
XAogICAgIG1hY3JvKEdldEJ5VmFsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZU1pZ2h0Q2xvYmJlcikgXAotICAgIG1hY3JvKFB1dEJ5VmFsLCBOb2RlTXVzdEdlbmVyYXRl
IHwgTm9kZUNsb2JiZXJzV29ybGQgfCBOb2RlSGFzVmFyQXJncykgXAotICAgIG1hY3JvKFB1dEJ5
VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCB8IE5vZGVIYXNW
YXJBcmdzKSBcCisgICAgbWFjcm8oUHV0QnlWYWwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xv
YmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKFB1dEJ5VmFsQWxpYXMsIE5vZGVNdXN0R2VuZXJhdGUg
fCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKEdldEJ5SWQsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKFB1dEJ5
SWQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAgIG1hY3JvKFB1
dEJ5SWREaXJlY3QsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAogICAg
IG1hY3JvKENoZWNrU3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUHV0
U3RydWN0dXJlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKICAgICBt
YWNybyhHZXRQcm9wZXJ0eVN0b3JhZ2UsIE5vZGVSZXN1bHRTdG9yYWdlKSBcCi0gICAgbWFjcm8o
R2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZSwgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKKyAgICBtYWNy
byhHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlLCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZVJlc3Vs
dFN0b3JhZ2UpIFwKICAgICBtYWNybyhHZXRCeU9mZnNldCwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oUHV0QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkg
XAogICAgIG1hY3JvKEdldEFycmF5TGVuZ3RoLCBOb2RlUmVzdWx0SW50MzIpIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCmluZGV4IGIxNzU1ZDUzOTFlYjE3
NDIyNDIyN2E4YTYwOWM1NThlOWYxNTM0OGEuLjE4MDRjOTVlMGUyNzA3OWJhNDhmODdiNGFmYTJi
YmJiNjM1YzQ3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJv
cGFnYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9y
LmNwcApAQCAtMTkyLDEyICsxOTIsOSBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgY2FzZSBQdXRCeVZhbDogewotICAgICAgICAgICAgTm9kZUluZGV4IGJhc2Ug
PSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCldOwotICAgICAgICAg
ICAgTm9kZUluZGV4IHByb3BlcnR5ID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmly
c3RDaGlsZCgpICsgMV07Ci0gICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBtX2dyYXBoLm1f
dmFyQXJnQ2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCkgKyAyXTsKLSAgICAgICAgICAgIGNoYW5n
ZWQgfD0gbV9ncmFwaFtiYXNlXS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRB
c051bWJlciB8IE5vZGVOZWVkc05lZ1plcm8pOwotICAgICAgICAgICAgY2hhbmdlZCB8PSBtX2dy
YXBoW3Byb3BlcnR5XS5tZXJnZUFyaXRoTm9kZUZsYWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJl
cik7Ci0gICAgICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbdmFsdWVdLm1lcmdlQXJpdGhOb2Rl
RmxhZ3MoZmxhZ3MgfCBOb2RlVXNlZEFzTnVtYmVyIHwgTm9kZU5lZWRzTmVnWmVybyk7CisgICAg
ICAgICAgICBjaGFuZ2VkIHw9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ubWVyZ2VBcml0aE5vZGVG
bGFncyhmbGFncyB8IE5vZGVVc2VkQXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvKTsKKyAgICAg
ICAgICAgIGNoYW5nZWQgfD0gbV9ncmFwaFtub2RlLmNoaWxkMigpXS5tZXJnZUFyaXRoTm9kZUZs
YWdzKGZsYWdzIHwgTm9kZVVzZWRBc051bWJlcik7CisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1f
Z3JhcGhbbm9kZS5jaGlsZDMoKV0ubWVyZ2VBcml0aE5vZGVGbGFncyhmbGFncyB8IE5vZGVVc2Vk
QXNOdW1iZXIgfCBOb2RlTmVlZHNOZWdaZXJvKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CiAgICAgICAgICAgICAKQEAgLTkzMywxNCArOTMwLDYgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgUHV0QnlW
YWw6Ci0gICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczogewotICAgICAgICAgICAgTm9kZUluZGV4
IHN0b3JhZ2UgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCkgKyAz
XTsKLSAgICAgICAgICAgIGlmIChtX2dyYXBoW3N0b3JhZ2VdLm9wID09IE5vcCkKLSAgICAgICAg
ICAgICAgICBub2RlLmNoaWxkcmVuLnZhcmlhYmxlLm51bUNoaWxkcmVuID0gMzsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRCeVZh
bDoKICAgICAgICAgY2FzZSBTdHJpbmdDaGFyQXQ6CiAgICAgICAgIGNhc2UgU3RyaW5nQ2hhckNv
ZGVBdDogewpAQCAtMTA5Niw5ICsxMDg1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIGlz
Qm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGlvbikgfHwgIXByZWRpY3Rpb247CiAgICAgfQogICAg
IAotICAgIGJvb2wgYnlWYWxJbmRleElzUHVyZShOb2RlJiBub2RlKQorICAgIGJvb2wgYnlWYWxJ
c1B1cmUoTm9kZSYgbm9kZSkKICAgICB7Ci0gICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlv
biA9IG5vZGUucHJlZGljdGlvbigpOworICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24g
PSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24oKTsKICAgICAgICAgcmV0dXJuIChw
cmVkaWN0aW9uICYgUHJlZGljdEludDMyKSB8fCAhcHJlZGljdGlvbjsKICAgICB9CiAgICAgCkBA
IC0xMTIwLDcgKzExMDksNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIExvZ2ljYWxOb3Q6CiAg
ICAgICAgICAgICByZXR1cm4gIWxvZ2ljYWxOb3RJc1B1cmUobm9kZSk7CiAgICAgICAgIGNhc2Ug
R2V0QnlWYWw6Ci0gICAgICAgICAgICByZXR1cm4gIWJ5VmFsSW5kZXhJc1B1cmUobV9ncmFwaFtu
b2RlLmNoaWxkMigpXSk7CisgICAgICAgICAgICByZXR1cm4gIWJ5VmFsSXNQdXJlKG5vZGUpOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gSWYgYnkgc29tZSBvZGRpdHkgd2UgaGl0IHRoaXMgY2Fz
ZSBpbiByZWxlYXNlIGJ1aWxkIGl0J3Mgc2FmZXIgdG8gaGF2ZSBDU0UgYXNzdW1lIHRoZSB3b3Jz
dC4KQEAgLTExOTAsMjUgKzExNzksMjEgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIE5vZGUmIG5v
ZGUgPSBtX2dyYXBoW2luZGV4XTsKICAgICAgICAgICAgIHN3aXRjaCAobm9kZS5vcCkgewogICAg
ICAgICAgICAgY2FzZSBHZXRCeVZhbDoKLSAgICAgICAgICAgICAgICBpZiAoIWJ5VmFsSW5kZXhJ
c1B1cmUobV9ncmFwaFtub2RlLmNoaWxkMigpXSkpCisgICAgICAgICAgICAgICAgaWYgKCFieVZh
bElzUHVyZShub2RlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICAg
ICAgICAgICAgICBpZiAobm9kZS5jaGlsZDEoKSA9PSBjaGlsZDEgJiYgY2Fub25pY2FsaXplKG5v
ZGUuY2hpbGQyKCkpID09IGNhbm9uaWNhbGl6ZShjaGlsZDIpKQogICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaW5kZXg7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNl
IFB1dEJ5VmFsOgotICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7Ci0gICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBtX2dyYXBoLm1fdmFyQXJn
Q2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCldOwotICAgICAgICAgICAgICAgICAgICBOb2RlSW5k
ZXggcHJvcGVydHkgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCkg
KyAxXTsKLSAgICAgICAgICAgICAgICBpZiAoIWJ5VmFsSW5kZXhJc1B1cmUobV9ncmFwaFtwcm9w
ZXJ0eV0pKQorICAgICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOgorICAgICAgICAgICAgICAg
IGlmICghYnlWYWxJc1B1cmUobm9kZSkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb05v
ZGU7Ci0gICAgICAgICAgICAgICAgaWYgKGJhc2UgPT0gY2hpbGQxICYmIGNhbm9uaWNhbGl6ZShw
cm9wZXJ0eSkgPT0gY2Fub25pY2FsaXplKGNoaWxkMikpCi0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCkgKyAyXTsKKyAg
ICAgICAgICAgICAgICBpZiAobm9kZS5jaGlsZDEoKSA9PSBjaGlsZDEgJiYgY2Fub25pY2FsaXpl
KG5vZGUuY2hpbGQyKCkpID09IGNhbm9uaWNhbGl6ZShjaGlsZDIpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gbm9kZS5jaGlsZDMoKTsKICAgICAgICAgICAgICAgICAvLyBXZSBtdXN0IGFz
c3VtZSB0aGF0IHRoZSBQdXRCeVZhbCB3aWxsIGNsb2JiZXIgdGhlIGxvY2F0aW9uIHdlJ3JlIGdl
dHRpbmcgZnJvbS4KICAgICAgICAgICAgICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGJldHRlcjsg
aWYgd2Uga25vdyB0aGF0IHRoZSBQdXRCeVZhbCBpcyBhY2Nlc3NpbmcgYW4gYXJyYXkgb2YgYQog
ICAgICAgICAgICAgICAgIC8vIGRpZmZlcmVudCB0eXBlIHRoYW4gdGhlIEdldEJ5VmFsLCB0aGVu
IHdlIGtub3cgdGhhdCB0aGV5IHdvbid0IGNsb2JiZXIgZWFjaCBvdGhlci4KICAgICAgICAgICAg
ICAgICByZXR1cm4gTm9Ob2RlOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBQdXRT
dHJ1Y3R1cmU6CiAgICAgICAgICAgICBjYXNlIFB1dEJ5T2Zmc2V0OgogICAgICAgICAgICAgICAg
IC8vIEdldEJ5VmFsIGN1cnJlbnRseSBhbHdheXMgc3BlY3VsYXRlcyB0aGF0IGl0J3MgYWNjZXNz
aW5nIGFuCkBAIC0xMjY0LDE3ICsxMjQ5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgotICAg
ICAgICAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7Ci0gICAgICAgICAgICAgICAgTm9kZUluZGV4
IHByb3BlcnR5ID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpICsg
MV07Ci0gICAgICAgICAgICAgICAgaWYgKGJ5VmFsSW5kZXhJc1B1cmUobV9ncmFwaFtwcm9wZXJ0
eV0pKSB7CisgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CisgICAgICAgICAgICAgICAg
aWYgKGJ5VmFsSXNQdXJlKG5vZGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIFB1dEJ5
VmFsIHNwZWN1bGF0ZXMgdGhhdCBpdCdzIGFjY2Vzc2luZyBhbiBhcnJheSB3aXRoIGFuCiAgICAg
ICAgICAgICAgICAgICAgIC8vIGludGVnZXIgaW5kZXgsIHRoZW4gaXQncyBpbXBvc3NpYmxlIGZv
ciBpdCB0byBjYXVzZSBhIHN0cnVjdHVyZQogICAgICAgICAgICAgICAgICAgICAvLyBjaGFuZ2Uu
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgaWYgKGNsb2JiZXJzV29ybGQo
aW5kZXgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzA5LDE3ICsx
MjkyLDE1IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsOgotICAgICAgICAgICAgY2FzZSBQdXRCeVZh
bEFsaWFzOiB7Ci0gICAgICAgICAgICAgICAgTm9kZUluZGV4IHByb3BlcnR5ID0gbV9ncmFwaC5t
X3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpICsgMV07Ci0gICAgICAgICAgICAgICAg
aWYgKGJ5VmFsSW5kZXhJc1B1cmUobV9ncmFwaFtwcm9wZXJ0eV0pKSB7CisgICAgICAgICAgICBj
YXNlIFB1dEJ5VmFsQWxpYXM6CisgICAgICAgICAgICAgICAgaWYgKGJ5VmFsSXNQdXJlKG5vZGUp
KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIElmIFB1dEJ5VmFsIHNwZWN1bGF0ZXMgdGhhdCBp
dCdzIGFjY2Vzc2luZyBhbiBhcnJheSB3aXRoIGFuCiAgICAgICAgICAgICAgICAgICAgIC8vIGlu
dGVnZXIgaW5kZXgsIHRoZW4gaXQncyBpbXBvc3NpYmxlIGZvciBpdCB0byBjYXVzZSBhIHN0cnVj
dHVyZQogICAgICAgICAgICAgICAgICAgICAvLyBjaGFuZ2UuCiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2Rl
OwotICAgICAgICAgICAgfQotCisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIGlmIChjbG9iYmVyc1dvcmxkKGluZGV4KSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIE5vTm9kZTsKQEAgLTEzNDcsMTcgKzEzMjgsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNh
c2UgUHV0QnlWYWw6Ci0gICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6IHsKLSAgICAgICAg
ICAgICAgICBOb2RlSW5kZXggcHJvcGVydHkgPSBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW5bbm9k
ZS5maXJzdENoaWxkKCkgKyAxXTsKLSAgICAgICAgICAgICAgICBpZiAoYnlWYWxJbmRleElzUHVy
ZShtX2dyYXBoW3Byb3BlcnR5XSkpIHsKKyAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoK
KyAgICAgICAgICAgICAgICBpZiAoYnlWYWxJc1B1cmUobm9kZSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgLy8gSWYgUHV0QnlWYWwgc3BlY3VsYXRlcyB0aGF0IGl0J3MgYWNjZXNzaW5nIGFuIGFy
cmF5IHdpdGggYW4KICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZWdlciBpbmRleCwgdGhlbiBp
dCdzIGltcG9zc2libGUgZm9yIGl0IHRvIGNhdXNlIGEgc3RydWN0dXJlCiAgICAgICAgICAgICAg
ICAgICAgIC8vIGNoYW5nZS4KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybiBOb05vZGU7Ci0gICAgICAgICAgICB9Ci0K
KyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAg
aWYgKGNsb2JiZXJzV29ybGQoaW5kZXgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9O
b2RlOwpAQCAtMTM2Nyw3ICsxMzQ2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIE5vTm9k
ZTsKICAgICB9CiAKLSAgICBOb2RlSW5kZXggZ2V0SW5kZXhlZFByb3BlcnR5U3RvcmFnZUxvYWRF
bGltaW5hdGlvbihOb2RlSW5kZXggY2hpbGQxKQorICAgIE5vZGVJbmRleCBnZXRJbmRleGVkUHJv
cGVydHlTdG9yYWdlTG9hZEVsaW1pbmF0aW9uKE5vZGVJbmRleCBjaGlsZDEsIGJvb2wgaGFzSW50
ZWdlckluZGV4UHJlZGljdGlvbikKICAgICB7CiAgICAgICAgIE5vZGVJbmRleCBzdGFydCA9IHN0
YXJ0SW5kZXhGb3JDaGlsZHJlbihjaGlsZDEpOwogICAgICAgICBmb3IgKE5vZGVJbmRleCBpbmRl
eCA9IG1fY29tcGlsZUluZGV4OyBpbmRleC0tID4gc3RhcnQ7KSB7CkBAIC0xMzc2LDcgKzEzNTUs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdl
OiB7CiAgICAgICAgICAgICAgICAgUHJlZGljdGVkVHlwZSBiYXNlUHJlZGljdGlvbiA9IG1fZ3Jh
cGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwogICAgICAgICAgICAgICAgIGJvb2wgbm9k
ZUhhc0ludGVnZXJJbmRleFByZWRpY3Rpb24gPSAhKCEoYmFzZVByZWRpY3Rpb24gJiBQcmVkaWN0
SW50MzIpICYmIGJhc2VQcmVkaWN0aW9uKTsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS5jaGls
ZDEoKSA9PSBjaGlsZDEgJiYgbm9kZUhhc0ludGVnZXJJbmRleFByZWRpY3Rpb24pCisgICAgICAg
ICAgICAgICAgaWYgKG5vZGUuY2hpbGQxKCkgPT0gY2hpbGQxICYmIGhhc0ludGVnZXJJbmRleFBy
ZWRpY3Rpb24gPT0gbm9kZUhhc0ludGVnZXJJbmRleFByZWRpY3Rpb24pCiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KQEAgLTEzOTEsMTMgKzEzNzAsMTAgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAvLyBQ
dXRCeVZhbEFsaWFzIGNhbid0IGNoYW5nZSB0aGUgaW5kZXhlZCBzdG9yYWdlIHBvaW50ZXIKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGNhc2Ug
UHV0QnlWYWw6IHsKLSAgICAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IG1fZ3JhcGgubV92
YXJBcmdDaGlsZHJlbltub2RlLmZpcnN0Q2hpbGQoKV07Ci0gICAgICAgICAgICAgICAgTm9kZUlu
ZGV4IHByb3BlcnR5ID0gbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgp
ICsgMV07Ci0gICAgICAgICAgICAgICAgaWYgKGlzRml4ZWRJbmRleGVkU3RvcmFnZU9iamVjdFBy
ZWRpY3Rpb24obV9ncmFwaFtiYXNlXS5wcmVkaWN0aW9uKCkpICYmIGJ5VmFsSW5kZXhJc1B1cmUo
bV9ncmFwaFtwcm9wZXJ0eV0pKQorICAgICAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAg
ICAgICAgICBpZiAoaXNGaXhlZEluZGV4ZWRTdG9yYWdlT2JqZWN0UHJlZGljdGlvbihtX2dyYXBo
W25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkgJiYgYnlWYWxJc1B1cmUobm9kZSkpCiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHJldHVybiBOb05vZGU7Ci0g
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgaWYg
KGNsb2JiZXJzV29ybGQoaW5kZXgpKQpAQCAtMTU3OCwxNyArMTU1NCwxNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBHZXRCeVZhbDoK
LSAgICAgICAgICAgIGlmIChieVZhbEluZGV4SXNQdXJlKG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0p
KQorICAgICAgICAgICAgaWYgKGJ5VmFsSXNQdXJlKG5vZGUpKQogICAgICAgICAgICAgICAgIHNl
dFJlcGxhY2VtZW50KGdldEJ5VmFsTG9hZEVsaW1pbmF0aW9uKG5vZGUuY2hpbGQxKCksIG5vZGUu
Y2hpbGQyKCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCi0gICAgICAgIGNh
c2UgUHV0QnlWYWw6IHsKLSAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gbV9ncmFwaC5tX3Zh
ckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpXTsKLSAgICAgICAgICAgIE5vZGVJbmRleCBw
cm9wZXJ0eSA9IG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbltub2RlLmZpcnN0Q2hpbGQoKSArIDFd
OwotICAgICAgICAgICAgaWYgKGJ5VmFsSW5kZXhJc1B1cmUobV9ncmFwaFtwcm9wZXJ0eV0pICYm
IGdldEJ5VmFsTG9hZEVsaW1pbmF0aW9uKGJhc2UsIHByb3BlcnR5KSAhPSBOb05vZGUpCisgICAg
ICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAgICAgICBpZiAoYnlWYWxJc1B1cmUobm9kZSkgJiYg
Z2V0QnlWYWxMb2FkRWxpbWluYXRpb24obm9kZS5jaGlsZDEoKSwgbm9kZS5jaGlsZDIoKSkgIT0g
Tm9Ob2RlKQogICAgICAgICAgICAgICAgIG5vZGUub3AgPSBQdXRCeVZhbEFsaWFzOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENoZWNr
U3RydWN0dXJlOgogICAgICAgICAgICAgaWYgKGNoZWNrU3RydWN0dXJlTG9hZEVsaW1pbmF0aW9u
KG5vZGUuc3RydWN0dXJlU2V0KCksIG5vZGUuY2hpbGQxKCkpKQpAQCAtMTYwMyw4ICsxNTc2LDcg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlOiB7CiAg
ICAgICAgICAgICBQcmVkaWN0ZWRUeXBlIGJhc2VQcmVkaWN0aW9uID0gbV9ncmFwaFtub2RlLmNo
aWxkMigpXS5wcmVkaWN0aW9uKCk7CiAgICAgICAgICAgICBib29sIG5vZGVIYXNJbnRlZ2VySW5k
ZXhQcmVkaWN0aW9uID0gISghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAmJiBiYXNl
UHJlZGljdGlvbik7Ci0gICAgICAgICAgICBpZiAobm9kZUhhc0ludGVnZXJJbmRleFByZWRpY3Rp
b24pCi0gICAgICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoZ2V0SW5kZXhlZFByb3BlcnR5U3Rv
cmFnZUxvYWRFbGltaW5hdGlvbihub2RlLmNoaWxkMSgpKSk7CisgICAgICAgICAgICBzZXRSZXBs
YWNlbWVudChnZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlTG9hZEVsaW1pbmF0aW9uKG5vZGUuY2hp
bGQxKCksIG5vZGVIYXNJbnRlZ2VySW5kZXhQcmVkaWN0aW9uKSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCmluZGV4IGMxNzcwNWNjYWMwM2Q3NDU1OWQ5NDBhNGQ2ZWRiMjg0OWFjYWI4
MTcuLmJkMDU3ZTAyMDA0MDA2ZDdhZjI5Y2JhNWRjYjI4MzRhNWJlNTUwNTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0xNTUzLDE3
ICsxNTUzLDEzIEBAIHN0YXRpYyB2b2lkIGNvbXBpbGVDbGFtcERvdWJsZVRvQnl0ZShKSVRDb21w
aWxlciYgaml0LCBHUFJSZWcgcmVzdWx0LCBGUFJSZWcgc291CiAKIH0KIAotdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQnl0ZUFycmF5KE5vZGUmIG5vZGUpCit2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoR1BSUmVnIGJhc2UsIEdQ
UlJlZyBwcm9wZXJ0eSwgTm9kZSYgbm9kZSkKIHsKLSAgICBOb2RlSW5kZXggYmFzZUluZGV4ID0g
bV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpXTsKLSAgICBO
b2RlSW5kZXggcHJvcGVydHlJbmRleCA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltu
b2RlLmZpcnN0Q2hpbGQoKSArIDFdOwotICAgIE5vZGVJbmRleCB2YWx1ZUluZGV4ID0gbV9qaXQu
Z3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpICsgMl07Ci0gICAgTm9k
ZUluZGV4IHN0b3JhZ2VJbmRleCA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2Rl
LmZpcnN0Q2hpbGQoKSArIDNdOworICAgIE5vZGVJbmRleCBiYXNlSW5kZXggPSBub2RlLmNoaWxk
MSgpOworICAgIE5vZGVJbmRleCB2YWx1ZUluZGV4ID0gbm9kZS5jaGlsZDMoKTsKICAgICAKLSAg
ICBpZiAoIWlzQnl0ZUFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUoYmFzZUluZGV4KS5t
X3R5cGUpKSB7Ci0gICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgYmFzZUlu
ZGV4KTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChiYXNlLmdwcigpKSwgYmFzZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBK
U0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
JkpTQnl0ZUFycmF5OjpzX2luZm8pKSk7Ci0gICAgfQorICAgIGlmICghaXNCeXRlQXJyYXlQcmVk
aWN0aW9uKG1fc3RhdGUuZm9yTm9kZShiYXNlSW5kZXgpLm1fdHlwZSkpCisgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZSksIGJh
c2VJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0J5dGVBcnJheTo6c19pbmZvKSkpOwogICAgIEdQ
UlRlbXBvcmFyeSB2YWx1ZTsKICAgICBHUFJSZWcgdmFsdWVHUFI7CiAKQEAgLTE2MTAsMTEgKzE2
MDYsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yQnl0ZUFycmF5
KE5vZGUmIG5vZGUpCiAgICAgICAgIHZhbHVlLmFkb3B0KHJlc3VsdCk7CiAgICAgICAgIHZhbHVl
R1BSID0gZ3ByOwogICAgIH0KLSAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIHN0b3Jh
Z2VJbmRleCk7Ci0gICAgU3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgcHJvcGVydHkodGhpcywgcHJv
cGVydHlJbmRleCk7CisgICAgQVNTRVJUX1VOVVNFRCh2YWx1ZUdQUiwgdmFsdWVHUFIgIT0gcHJv
cGVydHkpOworICAgIEFTU0VSVCh2YWx1ZUdQUiAhPSBiYXNlKTsKKyAgICBHUFJUZW1wb3Jhcnkg
c3RvcmFnZSh0aGlzKTsKICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgb3V0T2ZCb3VuZHMgPSBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eS5ncHIoKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZVJlZywgQnl0ZUFycmF5OjpvZmZzZXRPZlNpemUoKSkpOwotICAgIG1f
aml0LnN0b3JlOCh2YWx1ZS5ncHIoKSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdl
UmVnLCBwcm9wZXJ0eS5ncHIoKSwgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzT25lLCBCeXRlQXJyYXk6
Om9mZnNldE9mRGF0YSgpKSk7CisgICAgQVNTRVJUKHZhbHVlR1BSICE9IHN0b3JhZ2VSZWcpOwor
ICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwgSlNCeXRlQXJy
YXk6Om9mZnNldE9mU3RvcmFnZSgpKSwgc3RvcmFnZVJlZyk7CisgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgb3V0T2ZCb3VuZHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVP
ckVxdWFsLCBwcm9wZXJ0eSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnl0
ZUFycmF5OjpvZmZzZXRPZlNpemUoKSkpOworICAgIG1faml0LnN0b3JlOCh2YWx1ZS5ncHIoKSwg
TWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eSwgTWFjcm9Bc3Nl
bWJsZXI6OlRpbWVzT25lLCBCeXRlQXJyYXk6Om9mZnNldE9mRGF0YSgpKSk7CiAgICAgb3V0T2ZC
b3VuZHMubGluaygmbV9qaXQpOwogICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKIH0KQEAg
LTE3MTEsMzAgKzE3MTAsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFs
T25JbnRUeXBlZEFycmF5KGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJgogICAgIH0KIH0KIAot
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShjb25z
dCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgTm9kZSYgbm9kZSwgc2l6ZV90IGVs
ZW1lbnRTaXplLCBUeXBlZEFycmF5U3BlY3VsYXRpb25SZXF1aXJlbWVudHMgc3BlY3VsYXRpb25S
ZXF1aXJlbWVudHMsIFR5cGVkQXJyYXlTaWduZWRuZXNzIHNpZ25lZG5lc3MpCit2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KGNvbnN0IFR5cGVkQXJy
YXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBHUFJSZWcgYmFzZSwgR1BSUmVnIHByb3BlcnR5LCBO
b2RlJiBub2RlLCBzaXplX3QgZWxlbWVudFNpemUsIFR5cGVkQXJyYXlTcGVjdWxhdGlvblJlcXVp
cmVtZW50cyBzcGVjdWxhdGlvblJlcXVpcmVtZW50cywgVHlwZWRBcnJheVNpZ25lZG5lc3Mgc2ln
bmVkbmVzcykKIHsKLSAgICBOb2RlSW5kZXggYmFzZUluZGV4ID0gbV9qaXQuZ3JhcGgoKS5tX3Zh
ckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpXTsKLSAgICBOb2RlSW5kZXggcHJvcGVydHlJ
bmRleCA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLmZpcnN0Q2hpbGQoKSAr
IDFdOwotICAgIE5vZGVJbmRleCB2YWx1ZUluZGV4ID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0No
aWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpICsgMl07Ci0gICAgTm9kZUluZGV4IHN0b3JhZ2VJbmRl
eCA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLmZpcnN0Q2hpbGQoKSArIDNd
OwotCi0gICAgaWYgKHNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzICE9IE5vVHlwZWRBcnJheVR5cGVT
cGVjQ2hlY2spIHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNl
SW5kZXgpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKGJhc2UuZ3ByKCkpLCBiYXNlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCkp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkp
OwotICAgIH0KKyAgICBOb2RlSW5kZXggYmFzZUluZGV4ID0gbm9kZS5jaGlsZDEoKTsKKyAgICBO
b2RlSW5kZXggdmFsdWVJbmRleCA9IG5vZGUuY2hpbGQzKCk7CiAgICAgCi0gICAgU3RvcmFnZU9w
ZXJhbmQgc3RvcmFnZSh0aGlzLCBzdG9yYWdlSW5kZXgpOwotICAgIEdQUlJlZyBzdG9yYWdlUmVn
ID0gc3RvcmFnZS5ncHIoKTsKLSAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBwcm9wZXJ0eSh0
aGlzLCBwcm9wZXJ0eUluZGV4KTsKLSAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5n
cHIoKTsKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5kczsKLSAgICBpZiAoc3Bl
Y3VsYXRpb25SZXF1aXJlbWVudHMgIT0gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayB8fCBzcGVj
dWxhdGlvblJlcXVpcmVtZW50cyAhPSBOb1R5cGVkQXJyYXlTcGVjQ2hlY2spIHsKLSAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlSW5kZXgpOwotICAgICAgICBpZiAo
c3BlY3VsYXRpb25SZXF1aXJlbWVudHMgIT0gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjaykKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoYmFzZS5ncHIoKSksIGJhc2VJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxs
OjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2Ny
aXB0b3IubV9jbGFzc0luZm8pKSk7Ci0gICAgICAgIGlmIChzcGVjdWxhdGlvblJlcXVpcmVtZW50
cyAhPSBOb1R5cGVkQXJyYXlTcGVjQ2hlY2spCi0gICAgICAgICAgICBvdXRPZkJvdW5kcyA9IG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBkZXNjcmlwdG9yLm1fbGVuZ3RoT2Zm
c2V0KSk7Ci0gICAgfQorICAgIGlmIChzcGVjdWxhdGlvblJlcXVpcmVtZW50cyAhPSBOb1R5cGVk
QXJyYXlUeXBlU3BlY0NoZWNrKQorICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UpLCBiYXNlSW5kZXgsIG1faml0LmJyYW5jaFB0
cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2Us
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOwogICAgIEdQUlRlbXBvcmFyeSB2YWx1ZTsKICAg
ICBHUFJSZWcgdmFsdWVHUFI7CiAgICAgCkBAIC0xNzc2LDE2ICsxNzU4LDI1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkoY29uc3QgVHlwZWRB
cnJheURlc2NyaXB0b3ImCiAgICAgICAgIHZhbHVlLmFkb3B0KHJlc3VsdCk7CiAgICAgICAgIHZh
bHVlR1BSID0gZ3ByOwogICAgIH0KKyAgICBBU1NFUlRfVU5VU0VEKHZhbHVlR1BSLCB2YWx1ZUdQ
UiAhPSBwcm9wZXJ0eSk7CisgICAgQVNTRVJUKHZhbHVlR1BSICE9IGJhc2UpOworICAgIEdQUlRl
bXBvcmFyeSBzdG9yYWdlKHRoaXMpOworICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc3RvcmFnZS5n
cHIoKTsKKyAgICBBU1NFUlQodmFsdWVHUFIgIT0gc3RvcmFnZVJlZyk7CisgICAgbV9qaXQubG9h
ZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9m
ZnNldCksIHN0b3JhZ2VSZWcpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG91dE9mQm91bmRz
OworICAgIGlmIChzcGVjdWxhdGlvblJlcXVpcmVtZW50cyAhPSBOb1R5cGVkQXJyYXlTcGVjQ2hl
Y2spCisgICAgICAgIG91dE9mQm91bmRzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgcHJvcGVydHksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UsIGRl
c2NyaXB0b3IubV9sZW5ndGhPZmZzZXQpKTsKIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUpIHsK
ICAgICBjYXNlIDE6Ci0gICAgICAgIG1faml0LnN0b3JlOCh2YWx1ZS5ncHIoKSwgTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6
OlRpbWVzT25lKSk7CisgICAgICAgIG1faml0LnN0b3JlOCh2YWx1ZS5ncHIoKSwgTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eSwgTWFjcm9Bc3NlbWJsZXI6OlRp
bWVzT25lKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAgICAgICAgbV9qaXQuc3Rv
cmUxNih2YWx1ZS5ncHIoKSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzVHdvKSk7CisgICAgICAgIG1faml0LnN0
b3JlMTYodmFsdWUuZ3ByKCksIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywg
cHJvcGVydHksIE1hY3JvQXNzZW1ibGVyOjpUaW1lc1R3bykpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIDQ6Ci0gICAgICAgIG1faml0LnN0b3JlMzIodmFsdWUuZ3ByKCksIE1hY3JvQXNzZW1i
bGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpU
aW1lc0ZvdXIpKTsKKyAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5ncHIoKSwgTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eSwgTWFjcm9Bc3NlbWJsZXI6OlRp
bWVzRm91cikpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTE4NDAsNDAgKzE4MzEsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEJ5VmFsT25GbG9hdFR5cGVkQXJyYXkoY29uc3QgVHlwZWRBcnJheURlc2Ny
aXB0b3IKICAgICBkb3VibGVSZXN1bHQocmVzdWx0UmVnLCBtX2NvbXBpbGVJbmRleCk7CiB9CiAK
LXZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShj
b25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgTm9kZSYgbm9kZSwgc2l6ZV90
IGVsZW1lbnRTaXplLCBUeXBlZEFycmF5U3BlY3VsYXRpb25SZXF1aXJlbWVudHMgc3BlY3VsYXRp
b25SZXF1aXJlbWVudHMpCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JG
bG9hdFR5cGVkQXJyYXkoY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIEdQ
UlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHksIE5vZGUmIG5vZGUsIHNpemVfdCBlbGVtZW50U2l6
ZSwgVHlwZWRBcnJheVNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzIHNwZWN1bGF0aW9uUmVxdWlyZW1l
bnRzKQogewotICAgIE5vZGVJbmRleCBiYXNlSW5kZXggPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJn
Q2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCldOwotICAgIE5vZGVJbmRleCBwcm9wZXJ0eUluZGV4
ID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpICsgMV07
Ci0gICAgTm9kZUluZGV4IHZhbHVlSW5kZXggPSBtX2ppdC5ncmFwaCgpLm1fdmFyQXJnQ2hpbGRy
ZW5bbm9kZS5maXJzdENoaWxkKCkgKyAyXTsKLSAgICBOb2RlSW5kZXggc3RvcmFnZUluZGV4ID0g
bV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpICsgM107Cisg
ICAgTm9kZUluZGV4IGJhc2VJbmRleCA9IG5vZGUuY2hpbGQxKCk7CisgICAgTm9kZUluZGV4IHZh
bHVlSW5kZXggPSBub2RlLmNoaWxkMygpOwogICAgIAogICAgIFNwZWN1bGF0ZURvdWJsZU9wZXJh
bmQgdmFsdWVPcCh0aGlzLCB2YWx1ZUluZGV4KTsKLSAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9w
ZXJhbmQgcHJvcGVydHkodGhpcywgcHJvcGVydHlJbmRleCk7Ci0gICAgU3RvcmFnZU9wZXJhbmQg
c3RvcmFnZSh0aGlzLCBzdG9yYWdlSW5kZXgpOworICAgIAorICAgIGlmIChzcGVjdWxhdGlvblJl
cXVpcmVtZW50cyAhPSBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrKQorICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UpLCBiYXNl
SW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2UsIEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fY2xhc3NJbmZvKSkpOworICAgIAor
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgCisgICAgR1BSVGVtcG9yYXJ5IHN0
b3JhZ2UodGhpcyk7CiAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigpOwotICAg
IEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgIAorICAgIG1faml0Lmxv
YWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwgZGVzY3JpcHRvci5tX3N0b3JhZ2VP
ZmZzZXQpLCBzdG9yYWdlUmVnKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBvdXRPZkJvdW5k
czsKLSAgICBpZiAoc3BlY3VsYXRpb25SZXF1aXJlbWVudHMgIT0gTm9UeXBlZEFycmF5VHlwZVNw
ZWNDaGVjayB8fCBzcGVjdWxhdGlvblJlcXVpcmVtZW50cyAhPSBOb1R5cGVkQXJyYXlTcGVjQ2hl
Y2spIHsKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBiYXNlSW5kZXgp
OwotICAgICAgICBpZiAoc3BlY3VsYXRpb25SZXF1aXJlbWVudHMgIT0gTm9UeXBlZEFycmF5VHlw
ZVNwZWNDaGVjaykKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZS5ncHIoKSksIGJhc2VJbmRleCwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZS5ncHIoKSwgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKGRlc2NyaXB0b3IubV9jbGFzc0luZm8pKSk7Ci0gICAgICAgIGlmIChzcGVjdWxh
dGlvblJlcXVpcmVtZW50cyAhPSBOb1R5cGVkQXJyYXlTcGVjQ2hlY2spCi0gICAgICAgICAgICBv
dXRPZkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWws
IHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBkZXNjcmlw
dG9yLm1fbGVuZ3RoT2Zmc2V0KSk7Ci0gICAgfQotICAgIAotCisgICAgaWYgKHNwZWN1bGF0aW9u
UmVxdWlyZW1lbnRzICE9IE5vVHlwZWRBcnJheVNwZWNDaGVjaykKKyAgICAgICAgb3V0T2ZCb3Vu
ZHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0
eSwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSwgZGVzY3JpcHRvci5tX2xlbmd0aE9mZnNl
dCkpOwogICAgIAogICAgIHN3aXRjaCAoZWxlbWVudFNpemUpIHsKICAgICBjYXNlIDQ6IHsKICAg
ICAgICAgRlBSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgICAgIG1faml0Lm1vdmVEb3Vi
bGUodmFsdWVPcC5mcHIoKSwgc2NyYXRjaC5mcHIoKSk7CiAgICAgICAgIG1faml0LmNvbnZlcnRE
b3VibGVUb0Zsb2F0KHZhbHVlT3AuZnByKCksIHNjcmF0Y2guZnByKCkpOwotICAgICAgICBtX2pp
dC5zdG9yZUZsb2F0KHNjcmF0Y2guZnByKCksIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3Rv
cmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0ZvdXIpKTsKKyAgICAg
ICAgbV9qaXQuc3RvcmVGbG9hdChzY3JhdGNoLmZwcigpLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUlu
ZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5LCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNGb3VyKSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIDg6Ci0gICAgICAgIG1faml0LnN0b3JlRG91
YmxlKHZhbHVlT3AuZnByKCksIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywg
cHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSk7CisgICAgICAgIG1faml0
LnN0b3JlRG91YmxlKHZhbHVlT3AuZnByKCksIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3Rv
cmFnZVJlZywgcHJvcGVydHksIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDQzZDg0
YjU4N2FhNDk4YTk4MThlY2ViYjc2MWI0ZWQ1M2VjODBjYjYuLjBjMTYzMjcwMTczMDQ1YTE0N2Uz
ODU3NzA3MWU3ZTQxY2Y4NTU4NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmgKQEAgLTE5NzAsNyArMTk3MCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjb21waWxlVmFsdWVUb0ludDMyKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVVSW50MzJUb051
bWJlcihOb2RlJik7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkJ5dGVBcnJheShOb2RlJik7
Ci0gICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoTm9kZSYpOworICAgIHZvaWQg
Y29tcGlsZVB1dEJ5VmFsRm9yQnl0ZUFycmF5KEdQUlJlZyBiYXNlLCBHUFJSZWcgcHJvcGVydHks
IE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVBcml0aE11bChOb2RlJik7CiAgICAgdm9pZCBjb21w
aWxlQXJpdGhNb2QoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZVNvZnRNb2R1bG8oTm9kZSYpOwpA
QCAtMTk4Niw5ICsxOTg2LDkgQEAgcHJpdmF0ZToKICAgICB9OwogICAgIHZvaWQgY29tcGlsZUdl
dEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSYpOwogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFs
T25JbnRUeXBlZEFycmF5KGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiwgTm9kZSYsIHNpemVf
dCBlbGVtZW50U2l6ZSwgVHlwZWRBcnJheVNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzLCBUeXBlZEFy
cmF5U2lnbmVkbmVzcyk7Ci0gICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5
KGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiwgTm9kZSYsIHNpemVfdCBlbGVtZW50U2l6ZSwg
VHlwZWRBcnJheVNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzLCBUeXBlZEFycmF5U2lnbmVkbmVzcyk7
CisgICAgdm9pZCBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KGNvbnN0IFR5cGVkQXJy
YXlEZXNjcmlwdG9yJiwgR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSYsIHNpemVf
dCBlbGVtZW50U2l6ZSwgVHlwZWRBcnJheVNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzLCBUeXBlZEFy
cmF5U2lnbmVkbmVzcyk7CiAgICAgdm9pZCBjb21waWxlR2V0QnlWYWxPbkZsb2F0VHlwZWRBcnJh
eShjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYsIE5vZGUmLCBzaXplX3QgZWxlbWVudFNpemUs
IFR5cGVkQXJyYXlTcGVjdWxhdGlvblJlcXVpcmVtZW50cyk7Ci0gICAgdm9pZCBjb21waWxlUHV0
QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkoY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImLCBOb2Rl
Jiwgc2l6ZV90IGVsZW1lbnRTaXplLCBUeXBlZEFycmF5U3BlY3VsYXRpb25SZXF1aXJlbWVudHMp
OworICAgIHZvaWQgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KGNvbnN0IFR5cGVk
QXJyYXlEZXNjcmlwdG9yJiwgR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTm9kZSYsIHNp
emVfdCBlbGVtZW50U2l6ZSwgVHlwZWRBcnJheVNwZWN1bGF0aW9uUmVxdWlyZW1lbnRzKTsKICAg
ICAKICAgICAvLyBJdCBpcyBhY2NlcHRhYmxlIHRvIGhhdmUgc3RydWN0dXJlIGJlIGVxdWFsIHRv
IHNjcmF0Y2gsIHNvIGxvbmcgYXMgeW91J3JlIGZpbmUKICAgICAvLyB3aXRoIHRoZSBzdHJ1Y3R1
cmUgR1BSIGJlaW5nIGNsb2JiZXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IDkwOThhOTE4MjY2ZGEzZDM3NjM3
NWEyYmE1NTUxNDk4ZjRiMjMxMmYuLmQ4NmMwMWJmZDY3OGVkMGU2YjgzNGIzZmE3OGI1ODc0MzM0
MDBmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcApAQCAtMjY5MywxNiArMjY5MywxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogCiAgICAgY2FzZSBQdXRCeVZhbDogewot
ICAgICAgICBOb2RlSW5kZXggY2hpbGQxID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVu
W25vZGUuZmlyc3RDaGlsZCgpXTsKLSAgICAgICAgTm9kZUluZGV4IGNoaWxkMiA9IG1faml0Lmdy
YXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLmZpcnN0Q2hpbGQoKSArIDFdOwotICAgICAgICBO
b2RlSW5kZXggY2hpbGQzID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmly
c3RDaGlsZCgpICsgMl07Ci0gICAgICAgIE5vZGVJbmRleCBjaGlsZDQgPSBtX2ppdC5ncmFwaCgp
Lm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCkgKyAzXTsKLQotICAgICAgICBQcmVk
aWN0ZWRUeXBlIGJhc2VQcmVkaWN0aW9uID0gYXQoY2hpbGQyKS5wcmVkaWN0aW9uKCk7CisgICAg
ICAgIFByZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBhdChub2RlLmNoaWxkMigpKS5wcmVk
aWN0aW9uKCk7CiAgICAgICAgIGlmICghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAm
JiBiYXNlUHJlZGljdGlvbikgewotICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFz
ZSh0aGlzLCBjaGlsZDEpOyAvLyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSds
bCBwcm9iYWJseSBiZSByaWdodC4KLSAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5
KHRoaXMsIGNoaWxkMik7Ci0gICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBj
aGlsZDMpOworICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsgLy8gU2F2ZSBhIHJlZ2lzdGVyLCBzcGVjdWxhdGUgY2VsbC4gV2UnbGwgcHJv
YmFibHkgYmUgcmlnaHQuCisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlz
LCBub2RlLmNoaWxkMigpKTsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUuY2hpbGQzKCkpOwogICAgICAgICAgICAgR1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigp
OwogICAgICAgICAgICAgR1BSUmVnIHByb3BlcnR5VGFnR1BSID0gcHJvcGVydHkudGFnR1BSKCk7
CiAgICAgICAgICAgICBHUFJSZWcgcHJvcGVydHlQYXlsb2FkR1BSID0gcHJvcGVydHkucGF5bG9h
ZEdQUigpOwpAQCAtMjcxNiwxMDggKzI3MTEsMTExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKLSAgICAgICAg
ICAgIGNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheShub2RlKTsKKyAgICAgICAgU3BlY3VsYXRl
Q2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgU3BlY3VsYXRl
U3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgICAg
ICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKKyAg
ICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheShiYXNlLmdwcigpLCBwcm9wZXJ0
eS5ncHIoKSwgbm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQnl0ZUFycmF5KCkpIHsKKyAgICAg
ICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheShiYXNlLmdwcigpLCBwcm9wZXJ0eS5n
cHIoKSwgbm9kZSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlSW50OEFycmF5KCkpIHsKLSAgICAg
ICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgp
LT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihpbnQ4X3QpLCBpc0ludDhBcnJh
eVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKGNoaWxkMSkubV90eXBlKSA/IE5vVHlwZWRBcnJh
eVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJh
eSk7CisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJy
YXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2pp
dC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVy
dHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQ4X3QpLCBpc0ludDhBcnJheVByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3Bl
Y0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkpOwogICAg
ICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsKLSAgICAgICAg
ICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5p
bnQxNkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoaW50MTZfdCksIGlzSW50MTZBcnJh
eVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKGNoaWxkMSkubV90eXBlKSA/IE5vVHlwZWRBcnJh
eVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJh
eSk7CisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQxNkFy
cmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9q
aXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9w
ZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDE2X3QpLCBpc0ludDE2QXJyYXlQcmVkaWN0aW9u
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlw
ZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFycmF5KTsK
ICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKLSAg
ICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7Ci0gICAg
ICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEo
KS0+aW50MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGludDMyX3QpLCBpc0ludDMy
QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShjaGlsZDEpLm1fdHlwZSkgPyBOb1R5cGVk
QXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVk
QXJyYXkpOworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50
MzJBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5
KG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwg
cHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQzMl90KSwgaXNJbnQzMkFycmF5UHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJh
eVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJh
eSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAg
Ci0gICAgICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKSkgewot
ICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxE
YXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNV
aW50OEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUoY2hpbGQxKS5tX3R5cGUpID8gTm9U
eXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25l
ZFR5cGVkQXJyYXkpOworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3Vs
YXRlVWludDhBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBl
ZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5n
cHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50OEFycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlw
ZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRU
eXBlZEFycmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQog
ICAgICAgICAKLSAgICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlVWludDE2QXJy
YXkoKSkgewotICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2pp
dC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YodWlu
dDE2X3QpLCBpc1VpbnQxNkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUoY2hpbGQxKS5t
X3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hl
Y2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSku
c2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5
VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3Jp
cHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQxNl90
KSwgaXNVaW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWND
aGVja3MsIFVuc2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9r
YXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAg
ICAgCiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNw
ZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKSwg
bm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgaXNVaW50MzJBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5m
b3JOb2RlKGNoaWxkMSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxU
eXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgaWYgKGF0
KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKKyAgICAgICAg
ICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51
aW50MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUs
IHNpemVvZih1aW50MzJfdCksIGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFs
bFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAg
aWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
IGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYXQo
Y2hpbGQxKS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkgewotICAgICAgICAgICAgY29t
cGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQz
MkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoZmxvYXQpLCBpc0Zsb2F0MzJBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKGNoaWxkMSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5
cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcyk7CisgICAgICAgIGlmIChhdChu
b2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkgeworICAgICAgICAg
ICAgY29tcGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+
ZmxvYXQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9k
ZSwgc2l6ZW9mKGZsb2F0KSwgaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9k
ZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFs
bFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkK
ICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAK
ICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3Vs
YXRlRmxvYXQ2NEFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0
VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKSwg
bm9kZSwgc2l6ZW9mKGRvdWJsZSksIGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUoY2hpbGQxKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5
cGVkQXJyYXlTcGVjQ2hlY2tzKTsKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3Vs
ZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxG
b3JGbG9hdFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlw
dG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoZG91YmxlKSwg
aXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hl
Y2tzKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogCi0gICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgY2hpbGQxKTsKLSAgICAgICAgU3Bl
Y3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIGNoaWxkMik7Ci0gICAgICAg
IEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIGNoaWxkMyk7CisgICAgICAgIEpTVmFsdWVPcGVy
YW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQzKCkpOworICAgICAgICBHUFJUZW1wb3Jhcnkgc2Ny
YXRjaCh0aGlzKTsKIAogICAgICAgICAvLyBNYXAgYmFzZSwgcHJvcGVydHkgJiB2YWx1ZSBpbnRv
IHJlZ2lzdGVycywgYWxsb2NhdGUgYSBzY3JhdGNoIHJlZ2lzdGVyLgogICAgICAgICBHUFJSZWcg
YmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3Bl
cnR5LmdwcigpOwogICAgICAgICBHUFJSZWcgdmFsdWVUYWdSZWcgPSB2YWx1ZS50YWdHUFIoKTsK
ICAgICAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZFJlZyA9IHZhbHVlLnBheWxvYWRHUFIoKTsKKyAg
ICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICAKICAgICAg
ICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHsK
LSAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICAgICAgd3Jp
dGVCYXJyaWVyKGJhc2VSZWcsIHZhbHVlVGFnUmVnLCBjaGlsZDMsIFdyaXRlQmFycmllckZvclBy
b3BlcnR5QWNjZXNzLCBzY3JhdGNoLmdwcigpKTsKLSAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgd3JpdGVCYXJyaWVyKGJhc2VSZWcsIHZhbHVlVGFnUmVnLCBub2RlLmNoaWxkMygpLCBXcml0
ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaFJlZyk7CiAKICAgICAgICAgLy8gQ2hl
Y2sgdGhhdCBiYXNlIGlzIGFuIGFycmF5LCBhbmQgdGhhdCBwcm9wZXJ0eSBpcyBjb250YWluZWQg
d2l0aGluIG1fdmVjdG9yICg8IG1fdmVjdG9yTGVuZ3RoKS4KICAgICAgICAgLy8gSWYgd2UgaGF2
ZSBwcmVkaWN0ZWQgdGhlIGJhc2UgdG8gYmUgdHlwZSBhcnJheSwgd2UgY2FuIHNraXAgdGhlIGNo
ZWNrLgotICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShjaGls
ZDEpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBjaGlsZDEsIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcs
IEpTQ2VsbDo6Y2xhc3NJbmZvT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cigmSlNBcnJheTo6c19pbmZvKSkpOwotCi0gICAgICAgIFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2Uo
dGhpcywgY2hpbGQ0KTsKLSAgICAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9yYWdlLmdwcigp
OworICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKQorICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0luZm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2luZm8pKSk7CiAKICAgICAgICAgYmFzZS51c2UoKTsK
ICAgICAgICAgcHJvcGVydHkudXNlKCk7CiAgICAgICAgIHZhbHVlLnVzZSgpOwotICAgICAgICBz
dG9yYWdlLnVzZSgpOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgd2l0
aGluQXJyYXlCb3VuZHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIHBy
b3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5Ojp2ZWN0
b3JMZW5ndGhPZmZzZXQoKSkpOwogCiAgICAgICAgIC8vIENvZGUgdG8gaGFuZGxlIHB1dCBiZXlv
bmQgYXJyYXkgYm91bmRzLgotICAgICAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVycyhJbnZhbGlk
R1BSUmVnKTsKKyAgICAgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMoc2NyYXRjaFJlZyk7CiAg
ICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uUHV0QnlWYWxCZXlvbmRBcnJheUJvdW5kcywg
YmFzZVJlZywgcHJvcGVydHlSZWcsIHZhbHVlVGFnUmVnLCB2YWx1ZVBheWxvYWRSZWcpOwotICAg
ICAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKEludmFsaWRHUFJSZWcpOworICAgICAgICBzaWxl
bnRGaWxsQWxsUmVnaXN0ZXJzKHNjcmF0Y2hSZWcpOwogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCB3YXNCZXlvbmRBcnJheUJvdW5kcyA9IG1faml0Lmp1bXAoKTsKIAogICAgICAgICB3aXRoaW5B
cnJheUJvdW5kcy5saW5rKCZtX2ppdCk7CiAKKyAgICAgICAgLy8gR2V0IHRoZSBhcnJheSBzdG9y
YWdlLgorICAgICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHNjcmF0Y2hSZWc7CisgICAgICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheTo6c3Rv
cmFnZU9mZnNldCgpKSwgc3RvcmFnZVJlZyk7CisKICAgICAgICAgLy8gQ2hlY2sgaWYgd2UncmUg
d3JpdGluZyB0byBhIGhvbGU7IGlmIHNvIGluY3JlbWVudCBtX251bVZhbHVlc0luVmVjdG9yLgog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RIb2xlVmFsdWUgPSBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3Rv
cmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1Rf
T0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3RvclswXSkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNW
YWx1ZSwgdS5hc0JpdHMudGFnKSksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFn
KSk7CiAgICAgICAgIG1faml0LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZVJlZywgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9udW1W
YWx1ZXNJblZlY3RvcikpKTsKQEAgLTI4NDIsODcgKzI4NDAsODYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgUHV0QnlWYWxBbGlh
czogewotICAgICAgICBOb2RlSW5kZXggY2hpbGQxID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0No
aWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpXTsKLSAgICAgICAgTm9kZUluZGV4IGNoaWxkMiA9IG1f
aml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLmZpcnN0Q2hpbGQoKSArIDFdOwotICAg
ICAgICBOb2RlSW5kZXggY2hpbGQzID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25v
ZGUuZmlyc3RDaGlsZCgpICsgMl07Ci0gICAgICAgIE5vZGVJbmRleCBjaGlsZDQgPSBtX2ppdC5n
cmFwaCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCkgKyAzXTsKKyAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAg
U3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkp
OwogCi0gICAgICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUJ5dGVBcnJheSgpKSB7
Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkobm9kZSk7CisgICAgICAg
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKSkgeworICAg
ICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9yQnl0ZUFycmF5KGJhc2UuZ3ByKCksIHByb3BlcnR5
LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgewotICAg
ICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRh
KCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGludDhfdCksIE5vVHlwZWRB
cnJheVNwZWNDaGVjaywgU2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgIGlmIChhdChub2RlLmNo
aWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGls
ZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURl
c2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQ4
X3QpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAg
ICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
ICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAo
YXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNv
bXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFy
cmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoaW50MTZfdCksIE5vVHlwZWRBcnJheVNwZWND
aGVjaywgU2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5z
aG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQxNkFycmF5RGVzY3JpcHRv
cigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDE2X3QpLCBO
b1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYg
KCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJy
ZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYXQoY2hp
bGQxKS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQ
dXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVz
Y3JpcHRvcigpLCBub2RlLCBzaXplb2YoaW50MzJfdCksIE5vVHlwZWRBcnJheVNwZWNDaGVjaywg
U2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRT
cGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvcklu
dFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3JpcHRvcigpLCBi
YXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDMyX3QpLCBOb1R5cGVk
QXJyYXlTcGVjQ2hlY2ssIFNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2Nv
bXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAg
ICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYXQoY2hpbGQxKS5z
aG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZh
bEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50OEFycmF5RGVzY3JpcHRv
cigpLCBub2RlLCBzaXplb2YodWludDhfdCksIE5vVHlwZWRBcnJheVNwZWNDaGVjaywgVW5zaWdu
ZWRUeXBlZEFycmF5KTsKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1
bGF0ZVVpbnQ4QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlw
ZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCksIGJhc2Uu
Z3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDhfdCksIE5vVHlwZWRBcnJh
eVNwZWNDaGVjaywgVW5zaWduZWRUeXBlZEFycmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21w
aWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAg
ICAgICAgICAKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGF0KGNoaWxkMSkuc2hv
dWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFs
Rm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRv
cigpLCBub2RlLCBzaXplb2YodWludDE2X3QpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFVuc2ln
bmVkVHlwZWRBcnJheSk7CisgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVj
dWxhdGVVaW50MTZBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRU
eXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCksIGJh
c2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YodWludDE2X3QpLCBOb1R5cGVk
QXJyYXlTcGVjQ2hlY2ssIFVuc2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1f
Y29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7
ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChhdChjaGlsZDEp
LnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRC
eVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2Ny
aXB0b3IoKSwgbm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgTm9UeXBlZEFycmF5U3BlY0NoZWNrLCBV
bnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxk
U3BlY3VsYXRlVWludDMyQXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9y
SW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigp
LCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgTm9U
eXBlZEFycmF5U3BlY0NoZWNrLCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYg
KCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJy
ZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYXQoY2hp
bGQxKS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGls
ZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFy
cmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoZmxvYXQpLCBOb1R5cGVkQXJyYXlTcGVjQ2hl
Y2spOworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQz
MkFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJh
eShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIo
KSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihmbG9hdCksIE5vVHlwZWRBcnJheVNwZWND
aGVjayk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAg
ICAgCi0gICAgICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJheSgp
KSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVkQXJyYXkobV9qaXQu
Z2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihkb3Vi
bGUpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2spOworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEo
KSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQ
dXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJh
eURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihk
b3VibGUpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2spOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBp
bGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAg
ICAgICAgIAogICAgICAgICB9CisKKyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywg
bm9kZS5jaGlsZDMoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMsIGJhc2Up
OwogICAgICAgICAKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgY2hpbGQzKTsK
LSAgICAgICAgewotICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBj
aGlsZDEpOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcywgYmFzZSk7Ci0g
ICAgICAgICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7Ci0gICAgICAgICAgICBHUFJS
ZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7Ci0gICAgICAgICAgICB3cml0ZUJhcnJpZXIo
YmFzZVJlZywgdmFsdWUudGFnR1BSKCksIGNoaWxkMywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlB
Y2Nlc3MsIHNjcmF0Y2hSZWcpOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIFNwZWN1bGF0ZVN0
cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBjaGlsZDIpOwotICAgICAgICBTdG9yYWdl
T3BlcmFuZCBzdG9yYWdlKHRoaXMsIGNoaWxkNCk7CisgICAgICAgIEdQUlJlZyBiYXNlUmVnID0g
YmFzZS5ncHIoKTsKKyAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwor
CisgICAgICAgIHdyaXRlQmFycmllcihiYXNlUmVnLCB2YWx1ZS50YWdHUFIoKSwgbm9kZS5jaGls
ZDMoKSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hSZWcpOworCisgICAg
ICAgIC8vIEdldCB0aGUgYXJyYXkgc3RvcmFnZS4KKyAgICAgICAgR1BSUmVnIHN0b3JhZ2VSZWcg
PSBzY3JhdGNoUmVnOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKGJhc2VSZWcsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHN0b3JhZ2VSZWcpOworCiAg
ICAgICAgIC8vIFN0b3JlIHRoZSB2YWx1ZSB0byB0aGUgYXJyYXkuCiAgICAgICAgIEdQUlJlZyBw
cm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwotICAgICAgICBtX2ppdC5zdG9yZTMyKHZhbHVl
LnRhZ0dQUigpLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2UuZ3ByKCksIHByb3Bl
cnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEFycmF5
U3RvcmFnZSwgbV92ZWN0b3JbMF0pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRz
LnRhZykpKTsKLSAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5wYXlsb2FkR1BSKCksIE1hY3Jv
QXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZS5ncHIoKSwgcHJvcGVydHlSZWcsIE1hY3JvQXNz
ZW1ibGVyOjpUaW1lc0VpZ2h0LCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3Rv
clswXSkgKyBPQkpFQ1RfT0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpKTsKKyAg
ICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS50YWdHUFIoKSwgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJ
bmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQs
IE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSArIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy50YWcpKSk7CisgICAgICAgIG1faml0LnN0b3JlMzIodmFs
dWUucGF5bG9hZEdQUigpLCBNYWNyb0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHBy
b3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEFy
cmF5U3RvcmFnZSwgbV92ZWN0b3JbMF0pICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKSk7CiAKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCmluZGV4IGJjYzhjNjNjYzI2NTIxZjI1NTExZDFlOGIyZjQ1ZDYzMDE1OTJl
M2QuLjkzOWYyMjZmZjE2ZWQyYjIzMWIxMWFkMzQ5ZTY0MDZmNDczMzJlMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMjU5
Nyw3ICsyNTk3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIEFTU0VSVChub2RlLmNoaWxk
MygpICE9IE5vTm9kZSk7CisgICAgICAgIAogICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSku
cHJlZGljdGlvbigpID09IFByZWRpY3RTdHJpbmcpIHsKICAgICAgICAgICAgIGNvbXBpbGVHZXRC
eVZhbE9uU3RyaW5nKG5vZGUpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQpAQCAt
MjY5NSwxNSArMjY5NSwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5v
ZGUpCiAgICAgfQogCiAgICAgY2FzZSBQdXRCeVZhbDogewotICAgICAgICBOb2RlSW5kZXggY2hp
bGQxID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpXTsK
LSAgICAgICAgTm9kZUluZGV4IGNoaWxkMiA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJl
bltub2RlLmZpcnN0Q2hpbGQoKSArIDFdOwotICAgICAgICBOb2RlSW5kZXggY2hpbGQzID0gbV9q
aXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpICsgMl07Ci0KLSAg
ICAgICAgUHJlZGljdGVkVHlwZSBiYXNlUHJlZGljdGlvbiA9IGF0KGNoaWxkMikucHJlZGljdGlv
bigpOworICAgICAgICBQcmVkaWN0ZWRUeXBlIGJhc2VQcmVkaWN0aW9uID0gYXQobm9kZS5jaGls
ZDIoKSkucHJlZGljdGlvbigpOwogICAgICAgICBpZiAoIShiYXNlUHJlZGljdGlvbiAmIFByZWRp
Y3RJbnQzMikgJiYgYmFzZVByZWRpY3Rpb24pIHsKLSAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5k
IGFyZzEodGhpcywgY2hpbGQxKTsKLSAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzIodGhp
cywgY2hpbGQyKTsKLSAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzModGhpcywgY2hpbGQz
KTsKKyAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS5jaGlsZDEoKSk7
CisgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBhcmcyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOwor
ICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJnMyh0aGlzLCBub2RlLmNoaWxkMygpKTsKICAg
ICAgICAgICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKICAgICAgICAgICAgIEdQUlJl
ZyBhcmcyR1BSID0gYXJnMi5ncHIoKTsKICAgICAgICAgICAgIEdQUlJlZyBhcmczR1BSID0gYXJn
My5ncHIoKTsKQEAgLTI3MTUsOTYgKzI3MTEsOTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAg
ICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKSkgewotICAgICAgICAg
ICAgY29tcGlsZVB1dEJ5VmFsRm9yQnl0ZUFycmF5KG5vZGUpOworICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAgICAgICBTcGVjdWxhdGVT
dHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgbm9kZS5jaGlsZDIoKSk7CisgICAgICAg
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVCeXRlQXJyYXkoKSkgeworICAg
ICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9yQnl0ZUFycmF5KGJhc2UuZ3ByKCksIHByb3BlcnR5
LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIAot
ICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgewotICAg
ICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRh
KCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGludDhfdCksIGlzSW50OEFy
cmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUoY2hpbGQxKS5tX3R5cGUpID8gTm9UeXBlZEFy
cmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFy
cmF5KTsKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludDhB
cnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1f
aml0Lmdsb2JhbERhdGEoKS0+aW50OEFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9w
ZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKGludDhfdCksIGlzSW50OEFycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVT
cGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CiAg
ICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUludDE2QXJyYXkoKSkgewotICAgICAg
ICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCkt
PmludDE2QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihpbnQxNl90KSwgaXNJbnQxNkFy
cmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUoY2hpbGQxKS5tX3R5cGUpID8gTm9UeXBlZEFy
cmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBTaWduZWRUeXBlZEFy
cmF5KTsKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludDE2
QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSht
X2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHBy
b3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoaW50MTZfdCksIGlzSW50MTZBcnJheVByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlU
eXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkp
OwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7Ci0gICAgICAgICAg
ICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+aW50
MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGludDMyX3QpLCBpc0ludDMyQXJyYXlQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShjaGlsZDEpLm1fdHlwZSkgPyBOb1R5cGVkQXJyYXlU
eXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3MsIFNpZ25lZFR5cGVkQXJyYXkp
OworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJh
eSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0
Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVy
dHkuZ3ByKCksIG5vZGUsIHNpemVvZihpbnQzMl90KSwgaXNJbnQzMkFycmF5UHJlZGljdGlvbiht
X3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVT
cGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgU2lnbmVkVHlwZWRBcnJheSk7CiAg
ICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKSkgewotICAgICAg
ICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCkt
PnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50OEFy
cmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUoY2hpbGQxKS5tX3R5cGUpID8gTm9UeXBlZEFy
cmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVk
QXJyYXkpOworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWlu
dDhBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5
KG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwg
cHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgaXNVaW50OEFycmF5UHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSA/IE5vVHlwZWRBcnJh
eVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFy
cmF5KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQogICAgICAg
ICAKLSAgICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKSkg
ewotICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9i
YWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YodWludDE2X3Qp
LCBpc1VpbnQxNkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUoY2hpbGQxKS5tX3R5cGUp
ID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzLCBV
bnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxk
U3BlY3VsYXRlVWludDE2QXJyYXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9y
SW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVzY3JpcHRvcigp
LCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQxNl90KSwgaXNV
aW50MTZBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkgPyBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNrIDogQWxsVHlwZWRBcnJheVNwZWNDaGVja3Ms
IFVuc2lnbmVkVHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAg
ICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0
ZVVpbnQzMkFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVk
QXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwg
c2l6ZW9mKHVpbnQzMl90KSwgaXNVaW50MzJBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2Rl
KGNoaWxkMSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVjQ2hlY2sgOiBBbGxUeXBlZEFy
cmF5U3BlY0NoZWNrcywgVW5zaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgaWYgKGF0KG5vZGUu
Y2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkpIHsKKyAgICAgICAgICAgIGNv
bXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MzJB
cnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVv
Zih1aW50MzJfdCksIGlzVWludDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVk
QXJyYXlTcGVjQ2hlY2tzLCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFt
X2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFr
OyAgICAgICAgICAgIAogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoYXQoY2hpbGQx
KS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkgewotICAgICAgICAgICAgY29tcGlsZVB1
dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQzMkFycmF5
RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YoZmxvYXQpLCBpc0Zsb2F0MzJBcnJheVByZWRpY3Rp
b24obV9zdGF0ZS5mb3JOb2RlKGNoaWxkMSkubV90eXBlKSA/IE5vVHlwZWRBcnJheVR5cGVTcGVj
Q2hlY2sgOiBBbGxUeXBlZEFycmF5U3BlY0NoZWNrcyk7CisgICAgICAgIGlmIChhdChub2RlLmNo
aWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9hdDMyQXJyYXkoKSkgeworICAgICAgICAgICAgY29t
cGlsZVB1dEJ5VmFsRm9yRmxvYXRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQz
MkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6
ZW9mKGZsb2F0KSwgaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVk
QXJyYXlTcGVjQ2hlY2tzKTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAg
ICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlRmxv
YXQ2NEFycmF5KCkpIHsKLSAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRB
cnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwg
c2l6ZW9mKGRvdWJsZSksIGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUo
Y2hpbGQxKS5tX3R5cGUpID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJy
YXlTcGVjQ2hlY2tzKTsKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1
bGF0ZUZsb2F0NjRBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JGbG9h
dFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCks
IGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBzaXplb2YoZG91YmxlKSwgaXNGbG9h
dDY0QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUp
ID8gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjayA6IEFsbFR5cGVkQXJyYXlTcGVjQ2hlY2tzKTsK
ICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBjaGlsZDEpOwotICAgICAgICBT
cGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhpcywgY2hpbGQyKTsKLSAgICAg
ICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgY2hpbGQzKTsKLSAgICAgICAgTm9kZUluZGV4
IGNoaWxkNCA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLmZpcnN0Q2hpbGQo
KSArIDNdOwotICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIGNoaWxkNCk7CisK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDMoKSk7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwotICAgICAgICAKKwogICAgICAgICAvLyBN
YXAgYmFzZSwgcHJvcGVydHkgJiB2YWx1ZSBpbnRvIHJlZ2lzdGVycywgYWxsb2NhdGUgYSBzY3Jh
dGNoIHJlZ2lzdGVyLgogICAgICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2UuZ3ByKCk7CiAgICAg
ICAgIEdQUlJlZyBwcm9wZXJ0eVJlZyA9IHByb3BlcnR5LmdwcigpOwogICAgICAgICBHUFJSZWcg
dmFsdWVSZWcgPSB2YWx1ZS5ncHIoKTsKLSAgICAgICAgR1BSUmVnIHN0b3JhZ2VSZWcgPSBzdG9y
YWdlLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7CiAg
ICAgICAgIAogICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIAotICAgICAgICB3cml0ZUJhcnJpZXIoYmFzZVJlZywgdmFsdWUuZ3ByKCksIGNo
aWxkMywgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hSZWcpOworICAgICAg
ICB3cml0ZUJhcnJpZXIoYmFzZVJlZywgdmFsdWUuZ3ByKCksIG5vZGUuY2hpbGQzKCksIFdyaXRl
QmFycmllckZvclByb3BlcnR5QWNjZXNzLCBzY3JhdGNoUmVnKTsKIAogICAgICAgICAvLyBDaGVj
ayB0aGF0IGJhc2UgaXMgYW4gYXJyYXksIGFuZCB0aGF0IHByb3BlcnR5IGlzIGNvbnRhaW5lZCB3
aXRoaW4gbV92ZWN0b3IgKDwgbV92ZWN0b3JMZW5ndGgpLgogICAgICAgICAvLyBJZiB3ZSBoYXZl
IHByZWRpY3RlZCB0aGUgYmFzZSB0byBiZSB0eXBlIGFycmF5LCB3ZSBjYW4gc2tpcCB0aGUgY2hl
Y2suCi0gICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKGNoaWxk
MSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVJlZ3MoYmFzZVJlZyksIGNoaWxkMSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNDZWxsOjpjbGFzc0lu
Zm9PZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKCZKU0FycmF5OjpzX2lu
Zm8pKSk7CisgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5v
ZGUuY2hpbGQxKCkpLm1fdHlwZSkpCisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVn
LCBKU0NlbGw6OmNsYXNzSW5mb09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoJkpTQXJyYXk6OnNfaW5mbykpKTsKIAogICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICBw
cm9wZXJ0eS51c2UoKTsKICAgICAgICAgdmFsdWUudXNlKCk7Ci0gICAgICAgIHN0b3JhZ2UudXNl
KCk7Ci0KKyAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHdpdGhpbkFycmF5
Qm91bmRzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBwcm9wZXJ0eVJl
ZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheTo6dmVjdG9yTGVuZ3Ro
T2Zmc2V0KCkpKTsKIAogICAgICAgICAvLyBDb2RlIHRvIGhhbmRsZSBwdXQgYmV5b25kIGFycmF5
IGJvdW5kcy4KQEAgLTI4MTUsNiArMjgwNywxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAKICAgICAgICAgd2l0aGluQXJyYXlCb3VuZHMubGluaygmbV9qaXQp
OwogCisgICAgICAgIC8vIEdldCB0aGUgYXJyYXkgc3RvcmFnZS4KKyAgICAgICAgR1BSUmVnIHN0
b3JhZ2VSZWcgPSBzY3JhdGNoUmVnOworICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHN0b3JhZ2VS
ZWcpOworCiAgICAgICAgIC8vIENoZWNrIGlmIHdlJ3JlIHdyaXRpbmcgdG8gYSBob2xlOyBpZiBz
byBpbmNyZW1lbnQgbV9udW1WYWx1ZXNJblZlY3Rvci4KICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgbm90SG9sZVZhbHVlID0gbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm9uWmVybywgTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJl
ZywgTWFjcm9Bc3NlbWJsZXI6OlNjYWxlUHRyLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdl
LCBtX3ZlY3RvclswXSkpKTsKICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlT
dG9yYWdlLCBtX251bVZhbHVlc0luVmVjdG9yKSkpOwpAQCAtMjgzOCw4NyArMjgzNCw4MyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogCiAgICAgY2Fz
ZSBQdXRCeVZhbEFsaWFzOiB7Ci0gICAgICAgIE5vZGVJbmRleCBjaGlsZDEgPSBtX2ppdC5ncmFw
aCgpLm1fdmFyQXJnQ2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCldOwotICAgICAgICBOb2RlSW5k
ZXggY2hpbGQyID0gbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGls
ZCgpICsgMV07Ci0gICAgICAgIE5vZGVJbmRleCBjaGlsZDMgPSBtX2ppdC5ncmFwaCgpLm1fdmFy
QXJnQ2hpbGRyZW5bbm9kZS5maXJzdENoaWxkKCkgKyAyXTsKLSAgICAgICAgTm9kZUluZGV4IGNo
aWxkNCA9IG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLmZpcnN0Q2hpbGQoKSAr
IDNdOwotCi0gICAgICAgIFByZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBhdChjaGlsZDIp
LnByZWRpY3Rpb24oKTsKKyAgICAgICAgUHJlZGljdGVkVHlwZSBiYXNlUHJlZGljdGlvbiA9IGF0
KG5vZGUuY2hpbGQyKCkpLnByZWRpY3Rpb24oKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChiYXNl
UHJlZGljdGlvbiwgKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSB8fCAhYmFzZVByZWRp
Y3Rpb24pOwogCi0gICAgICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUJ5dGVBcnJh
eSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkobm9kZSk7Cisg
ICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7Cisg
ICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNo
aWxkMigpKTsKKyAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUJ5
dGVBcnJheSgpKSB7CisgICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkoYmFz
ZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXko
KSkgewotICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5n
bG9iYWxEYXRhKCktPmludDhBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGludDhfdCks
IE5vVHlwZWRBcnJheVNwZWNDaGVjaywgU2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAgIGlmIChh
dChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQ4QXJyYXkoKSkgeworICAgICAgICAg
ICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmlu
dDhBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNp
emVvZihpbnQ4X3QpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFNpZ25lZFR5cGVkQXJyYXkpOwog
ICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9Ci0gICAgCi0gICAgICAg
IGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUludDE2QXJyYXkoKSkgewotICAgICAgICAg
ICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmlu
dDE2QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihpbnQxNl90KSwgTm9UeXBlZEFycmF5
U3BlY0NoZWNrLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgCisgICAgICAgIGlmIChhdChu
b2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KCkpIHsKKyAgICAgICAgICAg
IGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQx
NkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6
ZW9mKGludDE2X3QpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFNpZ25lZFR5cGVkQXJyYXkpOwog
ICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9Ci0gICAgCi0gICAgICAg
IGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUludDMyQXJyYXkoKSkgewotICAgICAgICAg
ICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmlu
dDMyQXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZihpbnQzMl90KSwgTm9UeXBlZEFycmF5
U3BlY0NoZWNrLCBTaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgCisgICAgICAgIGlmIChhdChu
b2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KCkpIHsKKyAgICAgICAgICAg
IGNvbXBpbGVQdXRCeVZhbEZvckludFR5cGVkQXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQz
MkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9wZXJ0eS5ncHIoKSwgbm9kZSwgc2l6
ZW9mKGludDMyX3QpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFNpZ25lZFR5cGVkQXJyYXkpOwog
ICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9Ci0gICAgCi0gICAgICAg
IGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKSkgewotICAgICAgICAg
ICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVp
bnQ4QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1aW50OF90KSwgTm9UeXBlZEFycmF5
U3BlY0NoZWNrLCBVbnNpZ25lZFR5cGVkQXJyYXkpOworICAgICAgICAKKyAgICAgICAgaWYgKGF0
KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKSkgeworICAgICAgICAg
ICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPnVp
bnQ4QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5LmdwcigpLCBub2RlLCBz
aXplb2YodWludDhfdCksIE5vVHlwZWRBcnJheVNwZWNDaGVjaywgVW5zaWduZWRUeXBlZEFycmF5
KTsKICAgICAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAgICAgICAgfQotICAgIAotICAg
ICAgICBpZiAoYXQoY2hpbGQxKS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgpKSB7Ci0gICAg
ICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERhdGEo
KS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCksIG5vZGUsIHNpemVvZih1aW50MTZfdCksIE5vVHlw
ZWRBcnJheVNwZWNDaGVjaywgVW5zaWduZWRUeXBlZEFycmF5KTsKKyAgICAgICAgCisgICAgICAg
IGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSgpKSB7Cisg
ICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KG1faml0Lmdsb2JhbERh
dGEoKS0+dWludDE2QXJyYXlEZXNjcmlwdG9yKCksIGJhc2UuZ3ByKCksIHByb3BlcnR5Lmdwcigp
LCBub2RlLCBzaXplb2YodWludDE2X3QpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFVuc2lnbmVk
VHlwZWRBcnJheSk7CiAgICAgICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0K
LSAgICAKLSAgICAgICAgaWYgKGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXko
KSkgewotICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2ppdC5n
bG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLCBub2RlLCBzaXplb2YodWludDMy
X3QpLCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2ssIFVuc2lnbmVkVHlwZWRBcnJheSk7CisgICAgICAg
IAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDMyQXJy
YXkoKSkgeworICAgICAgICAgICAgY29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheShtX2pp
dC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLCBiYXNlLmdwcigpLCBwcm9w
ZXJ0eS5ncHIoKSwgbm9kZSwgc2l6ZW9mKHVpbnQzMl90KSwgTm9UeXBlZEFycmF5U3BlY0NoZWNr
LCBVbnNpZ25lZFR5cGVkQXJyYXkpOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAog
ICAgICAgICB9Ci0gICAgCi0gICAgICAgIGlmIChhdChjaGlsZDEpLnNob3VsZFNwZWN1bGF0ZUZs
b2F0MzJBcnJheSgpKSB7Ci0gICAgICAgICAgICBjb21waWxlUHV0QnlWYWxGb3JGbG9hdFR5cGVk
QXJyYXkobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCksIG5vZGUs
IHNpemVvZihmbG9hdCksIE5vVHlwZWRBcnJheVNwZWNDaGVjayk7CisgICAgICAgIAorICAgICAg
ICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQzMkFycmF5KCkpIHsK
KyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9i
YWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHku
Z3ByKCksIG5vZGUsIHNpemVvZihmbG9hdCksIE5vVHlwZWRBcnJheVNwZWNDaGVjayk7CiAgICAg
ICAgICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KLSAgICAKLSAgICAgICAgaWYg
KGF0KGNoaWxkMSkuc2hvdWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKLSAgICAgICAgICAg
IGNvbXBpbGVQdXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZs
b2F0NjRBcnJheURlc2NyaXB0b3IoKSwgbm9kZSwgc2l6ZW9mKGRvdWJsZSksIE5vVHlwZWRBcnJh
eVNwZWNDaGVjayk7CisgICAgICAgIAorICAgICAgICBpZiAoYXQobm9kZS5jaGlsZDEoKSkuc2hv
dWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KCkpIHsKKyAgICAgICAgICAgIGNvbXBpbGVQdXRCeVZh
bEZvckZsb2F0VHlwZWRBcnJheShtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2Ny
aXB0b3IoKSwgYmFzZS5ncHIoKSwgcHJvcGVydHkuZ3ByKCksIG5vZGUsIHNpemVvZihkb3VibGUp
LCBOb1R5cGVkQXJyYXlTcGVjQ2hlY2spOwogICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5
KQogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAg
IAogICAgICAgICB9CiAKLSAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0aGlzLCBj
aGlsZDEpOwotICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhp
cywgY2hpbGQyKTsKLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgY2hpbGQzKTsK
KyAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDMoKSk7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOworICAgICAgICAKKyAgICAgICAgR1BSUmVn
IGJhc2VSZWcgPSBiYXNlLmdwcigpOworICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0
Y2guZ3ByKCk7CisKKyAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2UuZ3ByKCksIHZhbHVlLmdwcigp
LCBub2RlLmNoaWxkMygpLCBXcml0ZUJhcnJpZXJGb3JQcm9wZXJ0eUFjY2Vzcywgc2NyYXRjaFJl
Zyk7CiAKLSAgICAgICAgewotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7
Ci0gICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHNjcmF0Y2guZ3ByKCk7Ci0gICAgICAg
ICAgICB3cml0ZUJhcnJpZXIoYmFzZS5ncHIoKSwgdmFsdWUuZ3ByKCksIGNoaWxkMywgV3JpdGVC
YXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHNjcmF0Y2hSZWcpOwotICAgICAgICB9Ci0gICAgICAg
IFN0b3JhZ2VPcGVyYW5kIHN0b3JhZ2UodGhpcywgY2hpbGQ0KTsKICAgICAgICAgLy8gR2V0IHRo
ZSBhcnJheSBzdG9yYWdlLgotICAgICAgICBHUFJSZWcgc3RvcmFnZVJlZyA9IHN0b3JhZ2UuZ3By
KCk7CisgICAgICAgIEdQUlJlZyBzdG9yYWdlUmVnID0gc2NyYXRjaFJlZzsKKyAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5OjpzdG9y
YWdlT2Zmc2V0KCkpLCBzdG9yYWdlUmVnKTsKIAogICAgICAgICAvLyBTdG9yZSB0aGUgdmFsdWUg
dG8gdGhlIGFycmF5LgogICAgICAgICBHUFJSZWcgcHJvcGVydHlSZWcgPSBwcm9wZXJ0eS5ncHIo
KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>