<?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>31284</bug_id>
          
          <creation_ts>2009-11-09 20:15:20 -0800</creation_ts>
          <short_desc>need to implement aria tree roles</short_desc>
          <delta_ts>2009-11-11 21:26:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="chris fleizach">cfleizach</reporter>
          <assigned_to name="chris fleizach">cfleizach</assigned_to>
          <cc>bdakin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>161937</commentid>
    <comment_count>0</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-09 20:15:20 -0800</bug_when>
    <thetext>we need tree, treegrid and treeitem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162063</commentid>
    <comment_count>1</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-10 09:11:05 -0800</bug_when>
    <thetext>treegrid is separate and will appear as a table, since its supposed to be more like a grid. 

this bug i will use just for

tree

treeitem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162352</commentid>
    <comment_count>2</comment_count>
      <attachid>42928</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-10 22:50:57 -0800</bug_when>
    <thetext>Created attachment 42928
patch

Unfortunately getting an AXOutline to work on the mac is quite a bit of work, as it supports a lot of unique attributes and does some weird things with its children (as in, all rows are reported by the AXOutline regardless of level)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162354</commentid>
    <comment_count>3</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-10 22:52:45 -0800</bug_when>
    <thetext>i also had to fix some attributes in DRT that were returning JSValueNumber instead of JSValueBoolean, which meant fixing some LayoutTests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162616</commentid>
    <comment_count>4</comment_count>
      <attachid>42928</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-11-11 12:32:37 -0800</bug_when>
    <thetext>Comment on attachment 42928
patch

I suspect AccessibilityObject::ariaTreeRows can be made to crash if I make a sufficiently deep tree, i don&apos;t think we need to worry about this now, but it&apos;s worth considering.

The change to AccessibilityRenderObject::accessibilityIsIgnored seems unnecessary, i say remove it :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162617</commentid>
    <comment_count>5</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-11 12:36:12 -0800</bug_when>
    <thetext>thanx for the review. will commit tonight when i have time to monitor the submisson</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>162791</commentid>
    <comment_count>6</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2009-11-11 21:26:49 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/50865</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>42928</attachid>
            <date>2009-11-10 22:50:57 -0800</date>
            <delta_ts>2009-11-11 12:32:36 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>61059</size>
            <attacher name="chris fleizach">cfleizach</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MDc4OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTcgQEAKKzIwMDktMTEtMTAgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBuZWVkIHRvIGltcGxlbWVudCBhcmlhIHRyZWUgcm9sZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxMjg0CisKKyAgICAgICAgVGVzdHM6IHBsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L2FyaWEtbXVsdGlzZWxlY3RhYmxlLmh0bWwKKyAgICAgICAg
ICAgICAgIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2FyaWEtdHJlZS5odG1sCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlMaXN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbUNvbnRlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVJdGVtRGlzY2xvc2VkUm93cyk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0Lmg6CisgICAgICAgIChX
ZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNUcmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzVHJlZUl0ZW0pOgor
ICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c2V0SXNFeHBhbmRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpjYW5TZXRFeHBhbmRlZEF0dHJp
YnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoaWVyYXJjaGlj
YWxMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRTZWxl
Y3RlZFJvd3MpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6cGVyZm9y
bURlZmF1bHRBY3Rpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpoaWVyYXJjaGljYWxMZXZlbCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzRXhwYW5kZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2V0RWxlbWVudEF0dHJpYnV0ZVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmVsZW1lbnRBdHRy
aWJ1dGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
OjpzZXRJc0V4cGFuZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmlzU2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6c2V0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6c2V0U2VsZWN0ZWRSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUFS
SUFSb2xlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmNhblNldEV4cGFuZGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmFyaWFUcmVlU2VsZWN0ZWRSb3dzKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbik6
CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZENo
aWxkcmVuKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFj
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0
eVBsYXRmb3JtSW5jbHVkZXNPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL0Fj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tOgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlTmFtZXNdKToKKyAgICAgICAgKFJvbGVF
bnRyeTo6KToKKyAgICAgICAgKC1bQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgc3Vicm9sZV0p
OgorICAgICAgICAoLVtBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5QXR0
cmlidXRlVmFsdWU6XSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFj
Y2Vzc2liaWxpdHlJc0F0dHJpYnV0ZVNldHRhYmxlOl0pOgorICAgICAgICAoLVtBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciBhY2Nlc3NpYmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uXSk6Cisg
ICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlTZXRWYWx1
ZTpmb3JBdHRyaWJ1dGU6XSk6CisgICAgICAgICgtW0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
IGFjY2Vzc2liaWxpdHlBcnJheUF0dHJpYnV0ZUNvdW50Ol0pOgorICAgICAgICAqIGh0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluOgorCiAyMDA5LTExLTEwICBTaGluaWNoaXJvIEhhbWFqaSAgPGhh
bWFqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCklu
ZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdC5jcHAJKHJldmlz
aW9uIDUwNzg4KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsMTAgQEAgUGFzc1JlZlB0cjxBY2Nlc3NpYmls
aXR5TGlzdD4gQWNjZXNzaWJpbAogCiBib29sIEFjY2Vzc2liaWxpdHlMaXN0OjphY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCkgY29uc3QKIHsKKyAgICAvLyBJcyB0aGUgcGxhdGZvcm0gaW50ZXJlc3Rl
ZCBpbiB0aGUgb2JqZWN0PworICAgIGlmIChhY2Nlc3NpYmlsaXR5UGxhdGZvcm1JbmNsdWRlc09i
amVjdCgpID09IElnbm9yZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAg
Ly8gbGlzdHMgZG9uJ3QgYXBwZWFyIG9uIHRpZ2VyL2xlb3BhcmQgb24gdGhlIG1hYwogI2lmIEFD
Q0VTU0lCSUxJVFlfTElTVFMKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCShyZXZpc2lvbiA1MDc4OCkKKysr
IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzUzLDYgKzc1Myw1MyBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmls
aXR5T2JqZWN0CiAgICAgcmV0dXJuIGFuY2hvclJlbmRlcmVyLT5kb2N1bWVudCgpLT5heE9iamVj
dENhY2hlKCktPmdldE9yQ3JlYXRlKGFuY2hvclJlbmRlcmVyKTsKIH0KICAgICAKK3ZvaWQgQWNj
ZXNzaWJpbGl0eU9iamVjdDo6YXJpYVRyZWVSb3dzKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3Rv
ciYgcmVzdWx0KQoreworICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBheENoaWxkcmVu
ID0gY2hpbGRyZW4oKTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IGF4Q2hpbGRyZW4uc2l6ZSgpOwor
ICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBjb3VudDsgKytrKSB7CisgICAgICAgIEFjY2Vz
c2liaWxpdHlPYmplY3QqIG9iaiA9IGF4Q2hpbGRyZW5ba10uZ2V0KCk7CisgICAgICAgIAorICAg
ICAgICAvLyBBZGQgdHJlZSBpdGVtcyBhcyB0aGUgcm93cy4KKyAgICAgICAgaWYgKG9iai0+cm9s
ZVZhbHVlKCkgPT0gVHJlZUl0ZW1Sb2xlKSAKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQob2Jq
KTsKKworICAgICAgICAvLyBOb3cgc2VlIGlmIHRoaXMgaXRlbSBhbHNvIGhhcyByb3dzIGhpZGlu
ZyBpbnNpZGUgb2YgaXQuCisgICAgICAgIG9iai0+YXJpYVRyZWVSb3dzKHJlc3VsdCk7CisgICAg
fQorfQorICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphcmlhVHJlZUl0ZW1Db250ZW50
KEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0KQoreworICAgIC8vIFRoZSBBUklB
IHRyZWUgaXRlbSBjb250ZW50IGFyZSB0aGUgaXRlbSB0aGF0IGFyZSBub3Qgb3RoZXIgdHJlZSBp
dGVtcyBvciB0aGVpciBjb250YWluaW5nIGdyb3Vwcy4KKyAgICBBY2Nlc3NpYmlsaXR5Q2hpbGRy
ZW5WZWN0b3IgYXhDaGlsZHJlbiA9IGNoaWxkcmVuKCk7CisgICAgdW5zaWduZWQgY291bnQgPSBh
eENoaWxkcmVuLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgY291bnQ7ICsr
aykgeworICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBheENoaWxkcmVuW2tdLmdl
dCgpOworICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSByb2xlID0gb2JqLT5yb2xlVmFsdWUoKTsK
KyAgICAgICAgaWYgKHJvbGUgPT0gVHJlZUl0ZW1Sb2xlIHx8IHJvbGUgPT0gR3JvdXBSb2xlKQor
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAorICAgICAgICByZXN1bHQuYXBwZW5kKG9i
aik7CisgICAgfQorfQorCit2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmFyaWFUcmVlSXRlbURp
c2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHQpCit7CisgICAg
QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGF4Q2hpbGRyZW4gPSBjaGlsZHJlbigpOworICAg
IHVuc2lnbmVkIGNvdW50ID0gYXhDaGlsZHJlbi5zaXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBr
ID0gMDsgayA8IGNvdW50OyArK2spIHsKKyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ID0gYXhDaGlsZHJlbltrXS5nZXQoKTsKKyAgICAgICAgCisgICAgICAgIC8vIEFkZCB0cmVlIGl0
ZW1zIGFzIHRoZSByb3dzLgorICAgICAgICBpZiAob2JqLT5yb2xlVmFsdWUoKSA9PSBUcmVlSXRl
bVJvbGUpCisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKG9iaik7CisgICAgICAgIC8vIElmIGl0
J3Mgbm90IGEgdHJlZSBpdGVtLCB0aGVuIGRlc2NlbmQgaW50byB0aGUgZ3JvdXAgdG8gZmluZCBt
b3JlIHRyZWUgaXRlbXMuCisgICAgICAgIGVsc2UgCisgICAgICAgICAgICBvYmotPmFyaWFUcmVl
Um93cyhyZXN1bHQpOworICAgIH0gICAgCit9CisgICAgCiBjb25zdCBTdHJpbmcmIEFjY2Vzc2li
aWxpdHlPYmplY3Q6OmFjdGlvblZlcmIoKSBjb25zdAogewogICAgIC8vIEZJWE1FOiBOZWVkIHRv
IGFkZCB2ZXJicyBmb3Igc2VsZWN0IGVsZW1lbnRzLgpJbmRleDogV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCShyZXZpc2lvbiA1MDc4OCkKKysrIFdlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE2
NCw2ICsxNjQsOCBAQCBlbnVtIEFjY2Vzc2liaWxpdHlSb2xlIHsKICAgICBUYWJSb2xlLAogICAg
IFRhYkxpc3RSb2xlLAogICAgIFRhYlBhbmVsUm9sZSwKKyAgICBUcmVlUm9sZSwKKyAgICBUcmVl
SXRlbVJvbGUsCiAgICAgCiAgICAgLy8gQVJJQSBHcm91cGluZyByb2xlcwogICAgIExhbmRtYXJr
QXBwbGljYXRpb25Sb2xlLApAQCAtMjc2LDYgKzI3OCw4IEBAIHB1YmxpYzoKICAgICBib29sIGlz
VGFiSXRlbSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFRhYlJvbGU7IH0KICAgICBi
b29sIGlzUmFkaW9Hcm91cCgpIGNvbnN0IHsgcmV0dXJuIHJvbGVWYWx1ZSgpID09IFJhZGlvR3Jv
dXBSb2xlOyB9CiAgICAgYm9vbCBpc0NvbWJvQm94KCkgY29uc3QgeyByZXR1cm4gcm9sZVZhbHVl
KCkgPT0gQ29tYm9Cb3hSb2xlOyB9CisgICAgYm9vbCBpc1RyZWUoKSBjb25zdCB7IHJldHVybiBy
b2xlVmFsdWUoKSA9PSBUcmVlUm9sZTsgfQorICAgIGJvb2wgaXNUcmVlSXRlbSgpIGNvbnN0IHsg
cmV0dXJuIHJvbGVWYWx1ZSgpID09IFRyZWVJdGVtUm9sZTsgfQogICAgIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0NoZWNrZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9v
bCBpc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQpAQCAtMjkyLDEyICsyOTYsMTQg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1JlcXVpcmVkKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNMaW5rZWQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc0V4cGFuZGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0SXNFeHBhbmRlZChib29sKSB7IH0KIAogICAgIHZpcnR1
YWwgYm9vbCBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAg
ICAgdmlydHVhbCBib29sIGNhblNldFRleHRSYW5nZUF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGNhblNldFNlbGVjdGVkQXR0cmli
dXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0U2Vs
ZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmly
dHVhbCBib29sIGNhblNldEV4cGFuZGVkQXR0cmlidXRlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzSW50VmFsdWUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCkBAIC0zNzgsMTcgKzM4NCwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBGcmFt
ZVZpZXcqIHRvcERvY3VtZW50RnJhbWVWaWV3KCkgY29uc3QgeyByZXR1cm4gMDsgfQogICAgIHZp
cnR1YWwgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygpIGNvbnN0OwogICAgIHZpcnR1YWwg
U3RyaW5nIGxhbmd1YWdlKCkgY29uc3Q7Ci0KKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGhpZXJhcmNo
aWNhbExldmVsKCkgY29uc3QgeyByZXR1cm4gMDsgfQorICAgIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGb2N1c2VkKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFRleHQoY29u
c3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFNlbGVjdGVkVGV4dFJhbmdlKGNv
bnN0IFBsYWluVGV4dFJhbmdlJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFZhbHVlKGNvbnN0
IFN0cmluZyYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChib29sKSB7IH0KLQor
ICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJikgeyB9CisgICAgCiAgICAgdmlydHVhbCB2b2lkIG1ha2VSYW5nZVZpc2libGUoY29uc3Qg
UGxhaW5UZXh0UmFuZ2UmKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgcHJlc3MoKSBjb25zdDsKICAg
ICBib29sIHBlcmZvcm1EZWZhdWx0QWN0aW9uKCkgY29uc3QgeyByZXR1cm4gcHJlc3MoKTsgfQot
ICAgIHZpcnR1YWwgdm9pZCBleHBhbmRPYmplY3QoKSBjb25zdCB7IH0KICAgICAKICAgICB2aXJ0
dWFsIEFjY2Vzc2liaWxpdHlPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIGNvbnN0OwogICAgIHZp
cnR1YWwgdm9pZCBpbmNyZW1lbnQoKSB7IH0KQEAgLTQ2MCw3ICs0NjcsMTQgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgU3RyaW5nIHN0cmluZ1JvbGVGb3JNU0FBKCkgY29uc3QgeyByZXR1cm4gU3Ry
aW5nKCk7IH0KICAgICB2aXJ0dWFsIFN0cmluZyBuYW1lRm9yTVNBQSgpIGNvbnN0IHsgcmV0dXJu
IFN0cmluZygpOyB9CiAgICAgdmlydHVhbCBTdHJpbmcgZGVzY3JpcHRpb25Gb3JNU0FBKCkgY29u
c3QgeyByZXR1cm4gU3RyaW5nKCk7IH0KLQorICAgIAorICAgIC8vIFVzZWQgYnkgYW4gQVJJQSB0
cmVlIHRvIGdldCBhbGwgaXRzIHJvd3MuCisgICAgdm9pZCBhcmlhVHJlZVJvd3MoQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJik7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0
byBnZXQgYWxsIG9mIGl0cyBkaXJlY3Qgcm93cyB0aGF0IGl0IGNhbiBkaXNjbG9zZS4KKyAgICB2
b2lkIGFyaWFUcmVlSXRlbURpc2Nsb3NlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
Jik7CisgICAgLy8gVXNlZCBieSBhbiBBUklBIHRyZWUgaXRlbSB0byBnZXQgb25seSBpdHMgY29u
dGVudCwgYW5kIG5vdCBpdHMgY2hpbGQgdHJlZSBpdGVtcyBhbmQgZ3JvdXBzLiAKKyAgICB2b2lk
IGFyaWFUcmVlSXRlbUNvbnRlbnQoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJik7CisgICAg
CiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQogI2lmIFBMQVRGT1JNKEdUSykKICAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciogd3JhcHBlcigpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNp
b24gNTA3ODgpCisrKyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxMiw2ICs3MTIsNDAgQEAgU3RyaW5nIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmhlbHBUZQogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KICAg
ICAKK3Vuc2lnbmVkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmhpZXJhcmNoaWNhbExldmVs
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworCisg
ICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKKyAgICBpZiAoIW5vZGUgfHwgIW5v
ZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgRWxlbWVudCogZWxl
bWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsKKyAgICBTdHJpbmcgYXJpYUxldmVs
ID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKGFyaWFfbGV2ZWxBdHRyKTsKKyAgICBpZiAoIWFyaWFM
ZXZlbC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBhcmlhTGV2ZWwudG9JbnQoKTsKKyAgICAK
KyAgICAvLyBPbmx5IHRyZWUgaXRlbSB3aWxsIGNhbGN1bGF0ZSBpdHMgbGV2ZWwgdGhyb3VnaCB0
aGUgRE9NIGN1cnJlbnRseS4KKyAgICBpZiAocm9sZVZhbHVlKCkgIT0gVHJlZUl0ZW1Sb2xlKQor
ICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICAvLyBIaWVyYXJjaHkgbGV2ZWxpbmcgc3RhcnRz
IGF0IDAuCisgICAgLy8gV2UgbWVhc3VyZSB0cmVlIGhpZXJhcmNoeSBieSB0aGUgbnVtYmVyIG9m
IGdyb3VwcyB0aGF0IHRoZSBpdGVtIGlzIHdpdGhpbi4KKyAgICB1bnNpZ25lZCBsZXZlbCA9IDA7
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7CisgICAg
d2hpbGUgKHBhcmVudCkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBwYXJlbnRSb2xlID0g
cGFyZW50LT5yb2xlVmFsdWUoKTsKKyAgICAgICAgaWYgKHBhcmVudFJvbGUgPT0gR3JvdXBSb2xl
KQorICAgICAgICAgICAgbGV2ZWwrKzsKKyAgICAgICAgZWxzZSBpZiAocGFyZW50Um9sZSA9PSBU
cmVlUm9sZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAKKyAgICAgICAgcGFyZW50ID0g
cGFyZW50LT5wYXJlbnRPYmplY3QoKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGxldmVsOwor
fQorICAgIAogU3RyaW5nIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6Omxhbmd1YWdlKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCkBAIC0xMjg4LDcgKzEzMjIsNyBAQCBib29sIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFJc0hpCiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpIGNvbnN0CiB7Ci0gICAgLy8gaXMg
dGhlIHBsYXRmb3JtIGlzIGludGVyZXN0ZWQgaW4gdGhpcyBvYmplY3Q/CisgICAgLy8gSXMgdGhl
IHBsYXRmb3JtIGludGVyZXN0ZWQgaW4gdGhpcyBvYmplY3Q/CiAgICAgQWNjZXNzaWJpbGl0eU9i
amVjdFBsYXRmb3JtSW5jbHVzaW9uIGRlY2lzaW9uID0gYWNjZXNzaWJpbGl0eVBsYXRmb3JtSW5j
bHVkZXNPYmplY3QoKTsKICAgICBpZiAoZGVjaXNpb24gPT0gSW5jbHVkZU9iamVjdCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU3NSwyNyArMTYwOSw0NCBAQCBib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmlzVmlzaXRlCiAgICAgcmV0dXJuIG1fcmVuZGVyZXItPnN0eWxlKCkt
PnBzZXVkb1N0YXRlKCkgPT0gUHNldWRvVmlzaXRlZDsKIH0KICAgICAKLXZvaWQgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6ZXhwYW5kT2JqZWN0KCkgY29uc3QKK2Jvb2wgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNFeHBhbmRlZCgpIGNvbnN0CiB7Ci0gICAgLy8gQ29tYm8gYm94ZXMg
Y2FuIGJlIGV4cGFuZGVkIChpbiBkaWZmZXJlbnQgd2F5cyBvbiBkaWZmZXJlbnQgcGxhdGZvcm1z
KS4KLSAgICAvLyBUaGF0IGFjdGlvbiB0cmFuc2xhdGVzIGludG8gc2V0dGluZyB0aGUgYXJpYS1l
eHBhbmRlZCBhdHRyaWJ1dGUgdG8gdHJ1ZQotICAgIGlmIChyb2xlVmFsdWUoKSAhPSBDb21ib0Jv
eFJvbGUgfHwgIW1fcmVuZGVyZXIpCisgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJp
YnV0ZShhcmlhX2V4cGFuZGVkQXR0cikuc3RyaW5nKCksICJ0cnVlIikpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIAorICAgIHJldHVybiBmYWxzZTsgIAorfQorCit2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OnNldEVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyaWJ1dGVOYW1lLCBib29sIHZhbHVlKQoreworICAgIGlmICghbV9yZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIE5vZGUqIG5vZGUgPSBtX3JlbmRlcmVyLT5ub2Rl
KCk7CiAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgIHJl
dHVybjsKLQorICAgIAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obm9kZSk7Ci0gICAgZWxlbWVudC0+c2V0QXR0cmlidXRlKGFyaWFfZXhwYW5kZWRBdHRyLCAi
dHJ1ZSIpOworICAgIGVsZW1lbnQtPnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAodmFsdWUp
ID8gInRydWUiIDogImZhbHNlIik7ICAgICAgICAKIH0KICAgICAKLWJvb2wgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6aXNFeHBhbmRlZCgpIGNvbnN0Citib29sIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
aWJ1dGVOYW1lKQogewotICAgIGlmIChlcXVhbElnbm9yaW5nQ2FzZShnZXRBdHRyaWJ1dGUoYXJp
YV9leHBhbmRlZEF0dHIpLnN0cmluZygpLCAidHJ1ZSIpKQotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICBy
ZXR1cm4gZmFsc2U7ICAKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0Nhc2UoZ2V0QXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUpLnN0cmluZygpLCAidHJ1ZSIpOworfQorICAgIAordm9pZCBBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRJc0V4cGFuZGVkKGJvb2wgaXNFeHBhbmRlZCkKK3sKKyAg
ICAvLyBDb21ibyBib3hlcyBhbmQgdHJlZSBpdGVtcyBjYW4gYmUgZXhwYW5kZWQgKGluIGRpZmZl
cmVudCB3YXlzIG9uIGRpZmZlcmVudCBwbGF0Zm9ybXMpLgorICAgIC8vIFRoYXQgYWN0aW9uIHRy
YW5zbGF0ZXMgaW50byBzZXR0aW5nIHRoZSBhcmlhLWV4cGFuZGVkIGF0dHJpYnV0ZSB0byB0cnVl
LgorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSByb2xlVmFsdWUoKTsKKyAgICBpZiAocm9s
ZSAhPSBDb21ib0JveFJvbGUgJiYgcm9sZSAhPSBUcmVlSXRlbVJvbGUpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBzZXRFbGVtZW50QXR0cmlidXRlVmFsdWUoYXJpYV9leHBhbmRlZEF0dHIs
IGlzRXhwYW5kZWQpOwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpp
c1JlcXVpcmVkKCkgY29uc3QKQEAgLTE2MTUsOSArMTY2NiwxNCBAQCBib29sIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmlzU2VsZWN0CiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgCi0gICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGdldEF0dHJpYnV0ZShhcmlh
X3NlbGVjdGVkQXR0cikuc3RyaW5nKCksICJ0cnVlIikpCisgICAgU3RyaW5nIGFyaWFTZWxlY3Rl
ZCA9IGdldEF0dHJpYnV0ZShhcmlhX3NlbGVjdGVkQXR0cikuc3RyaW5nKCk7CisgICAgaWYgKGVx
dWFsSWdub3JpbmdDYXNlKGFyaWFTZWxlY3RlZCwgInRydWUiKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7ICAgIAogICAgIAorICAgIC8vIEFSSUEgc2F5cyB0aGF0IHNlbGVjdGlvbiBzaG91bGQgZm9s
bG93IGZvY3VzIHVubGVzcyBzcGVjaWZpY2FsbHkgc2V0IG90aGVyd2lzZS4KKyAgICBpZiAoIWVx
dWFsSWdub3JpbmdDYXNlKGFyaWFTZWxlY3RlZCwgImZhbHNlIikgJiYgaXNGb2N1c2VkKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIGlmIChpc1RhYkl0ZW0oKSAmJiBpc1RhYkl0
ZW1TZWxlY3RlZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtMTcxMiw2ICsxNzY4LDI2
IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2hhbmdlVmEKICAgICBheE9iamVj
dENhY2hlKCktPnBvc3ROb3RpZmljYXRpb24obV9yZW5kZXJlciwgQVhPYmplY3RDYWNoZTo6QVhW
YWx1ZUNoYW5nZWQsIHRydWUpOwogfQogICAgIAordm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpzZXRTZWxlY3RlZChib29sIGVuYWJsZWQpCit7CisgICAgc2V0RWxlbWVudEF0dHJpYnV0
ZVZhbHVlKGFyaWFfc2VsZWN0ZWRBdHRyLCBlbmFibGVkKTsKK30KKwordm9pZCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpzZXRTZWxlY3RlZFJvd3MoQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVj
dG9yJiBzZWxlY3RlZFJvd3MpCit7CisgICAgLy8gU2V0dGluZyBzZWxlY3RlZCByb3dzIG9ubHkg
d29ya3Mgb24gdHJlZXMgZm9yIG5vdy4KKyAgICBpZiAocm9sZVZhbHVlKCkgIT0gVHJlZVJvbGUp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBib29sIGlzTXVsdGlzZWxlY3RhYmxlID0gZWxl
bWVudEF0dHJpYnV0ZVZhbHVlKGFyaWFfbXVsdGlzZWxlY3RhYmxlQXR0cik7CisgICAgdW5zaWdu
ZWQgY291bnQgPSBzZWxlY3RlZFJvd3Muc2l6ZSgpOworICAgIGlmIChjb3VudCA+IDEgJiYgIWlz
TXVsdGlzZWxlY3RhYmxlKQorICAgICAgICBjb3VudCA9IDE7CisgICAgCisgICAgZm9yICh1bnNp
Z25lZCBrID0gMDsgayA8IGNvdW50OyArK2spCisgICAgICAgIHNlbGVjdGVkUm93c1trXS0+c2V0
U2VsZWN0ZWQodHJ1ZSk7Cit9CisgICAgCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIGlmICghbV9yZW5kZXJlcikK
QEAgLTI0MDcsNyArMjQ4Myw5IEBAIHN0YXRpYyBjb25zdCBBUklBUm9sZU1hcCYgY3JlYXRlQVJJ
QVJvbGUKICAgICAgICAgeyAidGV4dGJveCIsIFRleHRBcmVhUm9sZSB9LAogICAgICAgICB7ICJ0
aW1lciIsIEFwcGxpY2F0aW9uVGltZXJSb2xlIH0sCiAgICAgICAgIHsgInRvb2xiYXIiLCBUb29s
YmFyUm9sZSB9LAotICAgICAgICB7ICJ0b29sdGlwIiwgVXNlckludGVyZmFjZVRvb2x0aXBSb2xl
IH0KKyAgICAgICAgeyAidG9vbHRpcCIsIFVzZXJJbnRlcmZhY2VUb29sdGlwUm9sZSB9LAorICAg
ICAgICB7ICJ0cmVlIiwgVHJlZVJvbGUgfSwKKyAgICAgICAgeyAidHJlZWl0ZW0iLCBUcmVlSXRl
bVJvbGUgfQogICAgIH07CiAgICAgQVJJQVJvbGVNYXAmIHJvbGVNYXAgPSAqbmV3IEFSSUFSb2xl
TWFwOwogICAgICAgICAKQEAgLTI1OTEsNiArMjY2OSwxMyBAQCBib29sIEFjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3Q6OmNhblNldEZvCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiB9Cisg
ICAgCitib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNhblNldEV4cGFuZGVkQXR0cmli
dXRlKCkgY29uc3QKK3sKKyAgICAvLyBBbiBvYmplY3QgY2FuIGJlIGV4cGFuZGVkIGlmIGl0IGFy
aWEtZXhwYW5kZWQgaXMgdHJ1ZSBvciBmYWxzZS4KKyAgICBTdHJpbmcgYXJpYUV4cGFuZGVkID0g
Z2V0QXR0cmlidXRlKGFyaWFfZXhwYW5kZWRBdHRyKS5zdHJpbmcoKTsKKyAgICByZXR1cm4gZXF1
YWxJZ25vcmluZ0Nhc2UoYXJpYUV4cGFuZGVkLCAidHJ1ZSIpIHx8IGVxdWFsSWdub3JpbmdDYXNl
KGFyaWFFeHBhbmRlZCwgImZhbHNlIik7Cit9CiAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6Y2FuU2V0VmFsdWVBdHRyaWJ1dGUoKSBjb25zdAogewpAQCAtMjcwOCwxNyArMjc5Mywz
NCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZENoaWxkCiAgICAgfQogfQog
Cit2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFyaWFUcmVlU2VsZWN0ZWRSb3dzKEFj
Y2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgcmVzdWx0KQoreworICAgIC8vIEdldCBhbGwgdGhl
IHJvd3MuIAorICAgIEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBhbGxSb3dzOworICAgIGFy
aWFUcmVlUm93cyhhbGxSb3dzKTsKKworICAgIC8vIERldGVybWluZSB3aGljaCByb3dzIGFyZSBz
ZWxlY3RlZC4KKyAgICBib29sIGlzTXVsdGlzZWxlY3RhYmxlID0gZWxlbWVudEF0dHJpYnV0ZVZh
bHVlKGFyaWFfbXVsdGlzZWxlY3RhYmxlQXR0cik7CisKKyAgICB1bnNpZ25lZCBjb3VudCA9IGFs
bFJvd3Muc2l6ZSgpOworICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBjb3VudDsgKytrKSB7
CisgICAgICAgIGlmIChhbGxSb3dzW2tdLT5pc1NlbGVjdGVkKCkpIHsKKyAgICAgICAgICAgIHJl
c3VsdC5hcHBlbmQoYWxsUm93c1trXSk7CisgICAgICAgICAgICBpZiAoIWlzTXVsdGlzZWxlY3Rh
YmxlKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorICAgIAog
dm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphcmlhTGlzdGJveFNlbGVjdGVkQ2hpbGRy
ZW4oQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiByZXN1bHQpCiB7CiAgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogY2hpbGQgPSBmaXJzdENoaWxkKCk7Ci0gICAgYm9vbCBpc011bHRpc2VsZWN0
YWJsZSA9IGZhbHNlOwogICAgIAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxF
bGVtZW50Kj4ocmVuZGVyZXIoKS0+bm9kZSgpKTsgICAgICAgIAogICAgIGlmICghZWxlbWVudCB8
fCAhZWxlbWVudC0+aXNFbGVtZW50Tm9kZSgpKSAvLyBkbyB0aGlzIGNoZWNrIHRvIGVuc3VyZSBz
YWZldHkgb2Ygc3RhdGljX2Nhc3QgYWJvdmUKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5n
IG11bHRpc2VsZWN0YWJsZVByb3BlcnR5U3RyID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKCJhcmlh
LW11bHRpc2VsZWN0YWJsZSIpLnN0cmluZygpOwotICAgIGlzTXVsdGlzZWxlY3RhYmxlID0gZXF1
YWxJZ25vcmluZ0Nhc2UobXVsdGlzZWxlY3RhYmxlUHJvcGVydHlTdHIsICJ0cnVlIik7CisgICAg
Ym9vbCBpc011bHRpc2VsZWN0YWJsZSA9IGVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShhcmlhX211bHRp
c2VsZWN0YWJsZUF0dHIpOwogICAgIAogICAgIHdoaWxlIChjaGlsZCkgewogICAgICAgICAvLyBl
dmVyeSBjaGlsZCBzaG91bGQgaGF2ZSBhcmlhLXJvbGUgb3B0aW9uLCBhbmQgaWYgc28sIGNoZWNr
IGZvciBzZWxlY3RlZCBhdHRyaWJ1dGUvc3RhdGUKQEAgLTI3NDYsMTEgKzI4NDgsMTEgQEAgdm9p
ZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZWxlY3RlZAogICAgIEFTU0VSVChyZXN1bHQu
aXNFbXB0eSgpKTsKIAogICAgIC8vIG9ubHkgbGlzdGJveGVzIHNob3VsZCBiZSBhc2tlZCBmb3Ig
dGhlaXIgc2VsZWN0ZWQgY2hpbGRyZW4uIAotICAgIGlmIChhcmlhUm9sZUF0dHJpYnV0ZSgpICE9
IExpc3RCb3hSb2xlKSB7IC8vIG5hdGl2ZSBsaXN0IGJveGVzIHdvdWxkIGJlIEFjY2Vzc2liaWxp
dHlMaXN0Qm94ZXMsIHNvIG9ubHkgY2hlY2sgZm9yIGFyaWEgbGlzdCBib3hlcwotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsgCi0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgcmV0dXJu
IGFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbihyZXN1bHQpOworICAgIEFjY2Vzc2liaWxpdHlS
b2xlIHJvbGUgPSByb2xlVmFsdWUoKTsKKyAgICBpZiAocm9sZSA9PSBMaXN0Qm94Um9sZSkgLy8g
bmF0aXZlIGxpc3QgYm94ZXMgd291bGQgYmUgQWNjZXNzaWJpbGl0eUxpc3RCb3hlcywgc28gb25s
eSBjaGVjayBmb3IgYXJpYSBsaXN0IGJveGVzCisgICAgICAgIGFyaWFMaXN0Ym94U2VsZWN0ZWRD
aGlsZHJlbihyZXN1bHQpOworICAgIGVsc2UgaWYgKHJvbGUgPT0gVHJlZVJvbGUpCisgICAgICAg
IGFyaWFUcmVlU2VsZWN0ZWRSb3dzKHJlc3VsdCk7CiB9CiAKIHZvaWQgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6YXJpYUxpc3Rib3hWaXNpYmxlQ2hpbGRyZW4oQWNjZXNzaWJpbGl0eUNoaWxk
cmVuVmVjdG9yJiByZXN1bHQpICAgICAgCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDUwNzg4KQorKysgV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtMTA0LDEyICsxMDQsMTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1Jl
cXVpcmVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzTGlua2VkKCkgY29uc3Q7CiAgICAg
dmlydHVhbCBib29sIGlzRXhwYW5kZWQoKSBjb25zdDsKLSAgICAKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0SXNFeHBhbmRlZChib29sKTsKKwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0QXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0
Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0VGV4dFJhbmdl
QXR0cmlidXRlcygpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0
ZSgpIGNvbnN0OwotICAgIAorICAgIHZpcnR1YWwgYm9vbCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0
ZSgpIGNvbnN0OworCiAgICAgdmlydHVhbCBib29sIGhhc0ludFZhbHVlKCkgY29uc3Q7CiAgICAg
CiAgICAgdmlydHVhbCBib29sIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdDsKQEAgLTE0
Niw3ICsxNDgsNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBBWE9iamVjdENhY2hlKiBh
eE9iamVjdENhY2hlKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIGV4cGFuZE9iamVj
dCgpIGNvbnN0OwogICAgIHZpcnR1YWwgRWxlbWVudCogYWN0aW9uRWxlbWVudCgpIGNvbnN0Owog
ICAgIEVsZW1lbnQqIG1vdXNlQnV0dG9uTGlzdGVuZXIoKSBjb25zdDsKICAgICBGcmFtZVZpZXcq
IGZyYW1lVmlld0lmUmVuZGVyVmlldygpIGNvbnN0OwpAQCAtMTg4LDEyICsxODksMTUgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudExpbmtzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpOwogICAgIHZpcnR1YWwgRnJhbWVWaWV3KiBkb2N1bWVudEZyYW1lVmlldygp
IGNvbnN0OwogICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Q7Ci0gICAgCisgICAg
dmlydHVhbCB1bnNpZ25lZCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0OworCiAgICAgdmlydHVh
bCBjb25zdCBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuKCk7CiAgICAgCiAg
ICAgdmlydHVhbCB2b2lkIHNldEZvY3VzZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldFNl
bGVjdGVkVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJik7CiAgICAgdmlydHVhbCB2b2lk
IHNldFZhbHVlKGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBzZXRTZWxlY3RlZChi
b29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpOwogICAgIHZpcnR1YWwgdm9pZCBjaGFuZ2VWYWx1ZUJ5UGVyY2VudChmbG9h
dCBwZXJjZW50Q2hhbmdlKTsKICAgICB2aXJ0dWFsIHZvaWQgaW5jcmVtZW50KCk7CiAgICAgdmly
dHVhbCB2b2lkIGRlY3JlbWVudCgpOwpAQCAtMjYyLDYgKzI2NiwxMSBAQCBwcml2YXRlOgogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlJbWFnZU1hcEhpdFRlc3QoSFRNTEFy
ZWFFbGVtZW50KiwgY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBhY2Nlc3NpYmlsaXR5UGFyZW50Rm9ySW1hZ2VNYXAoSFRNTE1hcEVsZW1lbnQqIG1hcCkg
Y29uc3Q7CiAKKyAgICB2b2lkIGFyaWFUcmVlU2VsZWN0ZWRSb3dzKEFjY2Vzc2liaWxpdHlDaGls
ZHJlblZlY3RvciYpOworICAgIAorICAgIGJvb2wgZWxlbWVudEF0dHJpYnV0ZVZhbHVlKGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2b2lkIHNldEVsZW1lbnRBdHRyaWJ1dGVWYWx1ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgYm9vbCk7CisgICAgCiAgICAgU3RyaW5nIGFjY2Vzc2liaWxpdHlE
ZXNjcmlwdGlvbkZvckVsZW1lbnRzKFZlY3RvcjxFbGVtZW50Kj4gJmVsZW1lbnRzKSBjb25zdDsK
ICAgICB2b2lkIGVsZW1lbnRzRnJvbUF0dHJpYnV0ZShWZWN0b3I8RWxlbWVudCo+JiBlbGVtZW50
cywgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSkgY29uc3Q7CiAgICAgCkluZGV4OiBXZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0TWFjLm1tCShy
ZXZpc2lvbiA1MDc4OCkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0
eU9iamVjdE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsMjQgQEAgYm9vbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0UGxh
dGZvcm1JbmNsdXNpb24gQWNjZXNzaWJpbGl0eU9iamVjdDo6YWNjZXNzaWJpbGl0eVBsYXRmb3Jt
SW5jbHVkZXNPYmplY3QoKSBjb25zdAogeworICAgIC8vIERldGVybWluZSBpZiB0aGlzIGlzIGlu
IGEgdHJlZS4gSWYgc28sIHdlIGFwcGx5IHNwZWNpYWwgYmVoYXZpb3IgdG8gbWFrZSBpdCB3b3Jr
IGxpa2UgYW4gQVhPdXRsaW5lLgorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqID0gcGFy
ZW50T2JqZWN0KCk7CisgICAgYm9vbCBpc0luVHJlZSA9IGZhbHNlOworICAgIHdoaWxlIChheE9i
aikgeworICAgICAgICBpZiAoYXhPYmotPmlzVHJlZSgpKSB7CisgICAgICAgICAgICBpc0luVHJl
ZSA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBheE9iaiA9
IGF4T2JqLT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICB9CisgICAgCisgICAgLy8gSWYg
dGhlIG9iamVjdCBpcyBpbiBhIHRyZWUsIG9ubHkgdHJlZSBpdGVtcyBzaG91bGQgYmUgZXhwb3Nl
ZCAoYW5kIHRoZSBjaGlsZHJlbiBvZiB0cmVlIGl0ZW1zKS4KKyAgICBpZiAoaXNJblRyZWUpIHsK
KyAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSA9IHJvbGVWYWx1ZSgpOworICAgICAgICBp
ZiAocm9sZSAhPSBUcmVlSXRlbVJvbGUgJiYgcm9sZSAhPSBTdGF0aWNUZXh0Um9sZSkKKyAgICAg
ICAgICAgIHJldHVybiBJZ25vcmVPYmplY3Q7CisgICAgfQorICAgIAogICAgIHJldHVybiBEZWZh
dWx0QmVoYXZpb3I7CiB9CiAgICAgCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0Fj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIubW0JKHJldmlzaW9uIDUwNzg4
KQorKysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ci5tbQkod29ya2luZyBjb3B5KQpAQCAtNjAyLDYgKzYwMiw4IEBAIHN0YXRpYyBXZWJDb3JlVGV4
dE1hcmtlclJhbmdlKiB0ZXh0TWFya2UKICAgICBzdGF0aWMgTlNBcnJheSogcGFzc3dvcmRGaWVs
ZEF0dHJzID0gbmlsOwogICAgIHN0YXRpYyBOU0FycmF5ICp0YWJMaXN0QXR0cnMgPSBuaWw7CiAg
ICAgc3RhdGljIE5TQXJyYXkgKmNvbWJvQm94QXR0cnMgPSBuaWw7CisgICAgc3RhdGljIE5TQXJy
YXkgKm91dGxpbmVBdHRycyA9IG5pbDsKKyAgICBzdGF0aWMgTlNBcnJheSAqb3V0bGluZVJvd0F0
dHJzID0gbmlsOwogICAgIE5TTXV0YWJsZUFycmF5KiB0ZW1wQXJyYXk7CiAgICAgaWYgKGF0dHJp
YnV0ZXMgPT0gbmlsKSB7CiAgICAgICAgIGF0dHJpYnV0ZXMgPSBbW05TQXJyYXkgYWxsb2NdIGlu
aXRXaXRoT2JqZWN0czogTlNBY2Nlc3NpYmlsaXR5Um9sZUF0dHJpYnV0ZSwKQEAgLTgwOSw2ICs4
MTEsMjQgQEAgc3RhdGljIFdlYkNvcmVUZXh0TWFya2VyUmFuZ2UqIHRleHRNYXJrZQogICAgICAg
ICB0YWJMaXN0QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5
XTsKICAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsgICAgICAgIAogICAgIH0KKyAgICBpZiAo
b3V0bGluZUF0dHJzID09IG5pbCkgeworICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0YWJsZUFy
cmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OmF0dHJpYnV0ZXNdOworICAgICAgICBbdGVtcEFycmF5
IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRyaWJ1dGVdOworICAgICAg
ICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlSb3dzQXR0cmlidXRlXTsKKyAg
ICAgICAgW3RlbXBBcnJheSBhZGRPYmplY3Q6TlNBY2Nlc3NpYmlsaXR5Q29sdW1uc0F0dHJpYnV0
ZV07CisgICAgICAgIG91dGxpbmVBdHRycyA9IFtbTlNBcnJheSBhbGxvY10gaW5pdFdpdGhBcnJh
eTp0ZW1wQXJyYXldOworICAgICAgICBbdGVtcEFycmF5IHJlbGVhc2VdOworICAgIH0KKyAgICBp
ZiAob3V0bGluZVJvd0F0dHJzID09IG5pbCkgeworICAgICAgICB0ZW1wQXJyYXkgPSBbW05TTXV0
YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aEFycmF5OnRhYmxlUm93QXR0cnNdOworICAgICAgICBb
dGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlJbmRleEF0dHJpYnV0ZV07CisgICAg
ICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NpbmdBdHRyaWJ1
dGVdOworICAgICAgICBbdGVtcEFycmF5IGFkZE9iamVjdDpOU0FjY2Vzc2liaWxpdHlEaXNjbG9z
ZWRCeVJvd0F0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRkT2JqZWN0Ok5TQWNjZXNz
aWJpbGl0eURpc2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZV07CisgICAgICAgIFt0ZW1wQXJyYXkgYWRk
T2JqZWN0Ok5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NBdHRyaWJ1dGVdOworICAgICAgICBv
dXRsaW5lUm93QXR0cnMgPSBbW05TQXJyYXkgYWxsb2NdIGluaXRXaXRoQXJyYXk6dGVtcEFycmF5
XTsKKyAgICAgICAgW3RlbXBBcnJheSByZWxlYXNlXTsKKyAgICB9CiAgICAgCiAgICAgaWYgKG1f
b2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIHBhc3N3b3JkRmllbGRB
dHRyczsKQEAgLTgzMSw2ICs4NTEsMTEgQEAgc3RhdGljIFdlYkNvcmVUZXh0TWFya2VyUmFuZ2Uq
IHRleHRNYXJrZQogICAgIGlmIChtX29iamVjdC0+aXNUYWJsZUNlbGwoKSkKICAgICAgICAgcmV0
dXJuIHRhYmxlQ2VsbEF0dHJzOwogICAgIAorICAgIGlmIChtX29iamVjdC0+aXNUcmVlKCkpCisg
ICAgICAgIHJldHVybiBvdXRsaW5lQXR0cnM7CisgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWVJdGVt
KCkpCisgICAgICAgIHJldHVybiBvdXRsaW5lUm93QXR0cnM7CisgICAgCiAgICAgaWYgKG1fb2Jq
ZWN0LT5pc0xpc3RCb3goKSB8fCBtX29iamVjdC0+aXNMaXN0KCkpCiAgICAgICAgIHJldHVybiBs
aXN0Qm94QXR0cnM7CiAKQEAgLTEwMjQsNiArMTA0OSw4IEBAIHN0YXRpYyBjb25zdCBBY2Nlc3Np
YmlsaXR5Um9sZU1hcCYgY3JlYXQKICAgICAgICAgeyBUYWJSb2xlLCBOU0FjY2Vzc2liaWxpdHlS
YWRpb0J1dHRvblJvbGUgfSwKICAgICAgICAgeyBUYWJMaXN0Um9sZSwgTlNBY2Nlc3NpYmlsaXR5
VGFiR3JvdXBSb2xlIH0sCiAgICAgICAgIHsgVGFiUGFuZWxSb2xlLCBOU0FjY2Vzc2liaWxpdHlH
cm91cFJvbGUgfSwKKyAgICAgICAgeyBUcmVlUm9sZSwgTlNBY2Nlc3NpYmlsaXR5T3V0bGluZVJv
bGUgfSwKKyAgICAgICAgeyBUcmVlSXRlbVJvbGUsIE5TQWNjZXNzaWJpbGl0eVJvd1JvbGUgfSwK
ICAgICB9OwogICAgIEFjY2Vzc2liaWxpdHlSb2xlTWFwJiByb2xlTWFwID0gKm5ldyBBY2Nlc3Np
YmlsaXR5Um9sZU1hcDsKICAgICAKQEAgLTEwNjIsNiArMTA4OSw5IEBAIHN0YXRpYyBOU1N0cmlu
Zyogcm9sZVZhbHVlVG9OU1N0cmluZyhBY2MKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBp
ZiAobV9vYmplY3QtPmlzVHJlZUl0ZW0oKSkKKyAgICAgICAgcmV0dXJuIE5TQWNjZXNzaWJpbGl0
eU91dGxpbmVSb3dTdWJyb2xlOworICAgIAogICAgIGlmIChtX29iamVjdC0+aXNMaXN0KCkpIHsK
ICAgICAgICAgQWNjZXNzaWJpbGl0eUxpc3QqIGxpc3RPYmplY3QgPSBzdGF0aWNfY2FzdDxBY2Nl
c3NpYmlsaXR5TGlzdCo+KG1fb2JqZWN0KTsKICAgICAgICAgaWYgKGxpc3RPYmplY3QtPmlzVW5v
cmRlcmVkTGlzdCgpIHx8IGxpc3RPYmplY3QtPmlzT3JkZXJlZExpc3QoKSkKQEAgLTExMDYsOCAr
MTEzNiwxMCBAQCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjCiAgICAg
ICAgICAgICByZXR1cm4gQCJBWFVzZXJJbnRlcmZhY2VUb29sdGlwIjsKICAgICAgICAgY2FzZSBU
YWJQYW5lbFJvbGU6CiAgICAgICAgICAgICByZXR1cm4gQCJBWFRhYlBhbmVsIjsKKworICAgICAg
ICAvLyBEZWZhdWx0IGRvZXNuJ3QgcmV0dXJuIGFueXRoaW5nLCBzbyByb2xlcyBkZWZpbmVkIGJl
bG93IGNhbiBiZSBjaG9zZW4uCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4g
bmlsOworICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAogICAgIGlmIChtX29iamVjdC0+
aXNNZWRpYVRpbWVsaW5lKCkpCkBAIC0xMjI0LDYgKzEyNTYsMTYgQEAgc3RhdGljIE5TU3RyaW5n
KiByb2xlVmFsdWVUb05TU3RyaW5nKEFjYwogICAgICAgICAgICAgICAgIHJldHVybiBmdi0+cGxh
dGZvcm1XaWRnZXQoKTsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgLy8gVHJlZSBpdGVt
IChjaGFuZ2VkIHRvIEFYUm93cykgY2FuIG9ubHkgcmVwb3J0IHRoZSB0cmVlIChBWE91dGxpbmUp
IGFzIGl0cyBwYXJlbnQuCisgICAgICAgIGlmIChtX29iamVjdC0+aXNUcmVlSXRlbSgpKSB7Cisg
ICAgICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBtX29iamVjdC0+cGFyZW50
T2JqZWN0VW5pZ25vcmVkKCk7CisgICAgICAgICAgICB3aGlsZSAocGFyZW50KSB7CisgICAgICAg
ICAgICAgICAgaWYgKHBhcmVudC0+aXNUcmVlKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBwYXJlbnQtPndyYXBwZXIoKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQtPnBh
cmVudE9iamVjdFVuaWdub3JlZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IAogICAgICAgICByZXR1cm4gbV9vYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpLT53cmFw
cGVyKCk7CiAgICAgfQogCkBAIC0xMjMzLDYgKzEyNzUsMTkgQEAgc3RhdGljIE5TU3RyaW5nKiBy
b2xlVmFsdWVUb05TU3RyaW5nKEFjYwogICAgICAgICAgICAgaWYgKGNoaWxkcmVuICE9IG5pbCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gY2hpbGRyZW47CiAgICAgICAgIH0KKworICAgICAgICAv
LyBUaGUgdHJlZSdzIChBWE91dGxpbmUpIGNoaWxkcmVuIGFyZSBzdXBwb3NlZCB0byBiZSBpdHMg
cm93cyBhbmQgY29sdW1ucy4KKyAgICAgICAgLy8gVGhlIEFSSUEgc3BlYyBkb2Vzbid0IGhhdmUg
Y29sdW1ucywgc28gd2UganVzdCBuZWVkIHJvd3MuCisgICAgICAgIGlmIChtX29iamVjdC0+aXNU
cmVlKCkpCisgICAgICAgICAgICByZXR1cm4gW3NlbGYgYWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZh
bHVlOk5TQWNjZXNzaWJpbGl0eVJvd3NBdHRyaWJ1dGVdOworCisgICAgICAgIC8vIEEgdHJlZSBp
dGVtIHNob3VsZCBvbmx5IGV4cG9zZSBpdHMgY29udGVudCBhcyBpdHMgY2hpbGRyZW4gKG5vdCBp
dHMgcm93cykKKyAgICAgICAgaWYgKG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpIHsKKyAgICAgICAg
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciBjb250
ZW50Q29weTsKKyAgICAgICAgICAgIG1fb2JqZWN0LT5hcmlhVHJlZUl0ZW1Db250ZW50KGNvbnRl
bnRDb3B5KTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KGNvbnRlbnRDb3B5
KTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXko
bV9vYmplY3QtPmNoaWxkcmVuKCkpOwogICAgIH0KICAgICAKQEAgLTE1MDIsNiArMTU1Nyw2NSBA
QCBzdGF0aWMgTlNTdHJpbmcqIHJvbGVWYWx1ZVRvTlNTdHJpbmcoQWNjCiAgICAgICAgIH0gIAog
ICAgIH0KICAgICAKKyAgICBpZiAobV9vYmplY3QtPmlzVHJlZSgpKSB7CisgICAgICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dz
QXR0cmlidXRlXSkgeworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yIHNlbGVjdGVkQ2hpbGRyZW5Db3B5OworICAgICAgICAgICAgbV9v
YmplY3QtPnNlbGVjdGVkQ2hpbGRyZW4oc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOworICAgICAgICAg
ICAgcmV0dXJuIGNvbnZlcnRUb05TQXJyYXkoc2VsZWN0ZWRDaGlsZHJlbkNvcHkpOworICAgICAg
ICB9CisgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3Np
YmlsaXR5Um93c0F0dHJpYnV0ZV0pIHsKKyAgICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6
OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dzQ29weTsKKyAgICAgICAgICAgIG1fb2Jq
ZWN0LT5hcmlhVHJlZVJvd3Mocm93c0NvcHkpOworICAgICAgICAgICAgcmV0dXJuIGNvbnZlcnRU
b05TQXJyYXkocm93c0NvcHkpOyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICAvLyBUcmVlUm9sZXMgZG8gbm90IHN1cHBvcnQgY29sdW1ucywgYnV0IE1hYyBBWCBleHBl
Y3RzIHRvIGJlIGFibGUgdG8gYXNrIGFib3V0IGNvbHVtbnMgYXQgdGhlIGxlYXN0LgorICAgICAg
ICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUNvbHVt
bnNBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIFtOU0FycmF5IGFycmF5XTsKKyAgICB9
CisKKyAgICBpZiAobV9vYmplY3QtPmlzVHJlZUl0ZW0oKSkgeworICAgICAgICBpZiAoW2F0dHJp
YnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eUluZGV4QXR0cmlidXRlXSkg
eworICAgICAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gbV9vYmplY3QtPnBh
cmVudE9iamVjdCgpOworICAgICAgICAgICAgaWYgKCFwYXJlbnQpCisgICAgICAgICAgICAgICAg
cmV0dXJuIG5pbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRmluZCB0aGUgaW5kZXgg
b2YgdGhpcyBpdGVtIGJ5IGl0ZXJhdGluZyB0aGUgcGFyZW50cy4KKyAgICAgICAgICAgIGNvbnN0
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRy
ZW4gPSBwYXJlbnQtPmNoaWxkcmVuKCk7CisgICAgICAgICAgICB1bnNpZ25lZCBjb3VudCA9IGNo
aWxkcmVuLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBjb3Vu
dDsgKytrKQorICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbltrXS0+d3JhcHBlcigpID09IHNl
bGYpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBbTlNOdW1iZXIgbnVtYmVyV2l0aFVuc2ln
bmVkSW50OmtdOworICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICAvLyBUaGUgcm93cyB0aGF0IGFyZSBjb25zaWRlcmVkIGlu
c2lkZSB0aGlzIHJvdy4gCisgICAgICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5RGlzY2xvc2VkUm93c0F0dHJpYnV0ZV0pIHsKKyAgICAgICAgICAg
IEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciByb3dzQ29w
eTsKKyAgICAgICAgICAgIG1fb2JqZWN0LT5hcmlhVHJlZUl0ZW1EaXNjbG9zZWRSb3dzKHJvd3ND
b3B5KTsKKyAgICAgICAgICAgIHJldHVybiBjb252ZXJ0VG9OU0FycmF5KHJvd3NDb3B5KTsgICAg
CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgcm93IHRoYXQgY29udGFpbnMgdGhpcyByb3cu
IEl0IHNob3VsZCBiZSB0aGUgc2FtZSBhcyB0aGUgZmlyc3QgcGFyZW50IHRoYXQgaXMgYSB0cmVl
aXRlbS4KKyAgICAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vz
c2liaWxpdHlEaXNjbG9zZWRCeVJvd0F0dHJpYnV0ZV0pIHsKKyAgICAgICAgICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudCA9IG1fb2JqZWN0LT5wYXJlbnRPYmplY3QoKTsKKyAgICAgICAg
ICAgIHdoaWxlIChwYXJlbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50LT5pc1RyZWVJ
dGVtKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnQtPndyYXBwZXIoKTsKKyAg
ICAgICAgICAgICAgICAvLyBJZiB0aGUgcGFyZW50IGlzIHRoZSB0cmVlIGl0c2VsZiwgdGhlbiB0
aGlzIHZhbHVlID09IG5pbC4KKyAgICAgICAgICAgICAgICBpZiAocGFyZW50LT5pc1RyZWUoKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKKyAgICAgICAgICAgICAgICBwYXJlbnQg
PSBwYXJlbnQtPnBhcmVudE9iamVjdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICAgICAgfQorICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3N1cmVMZXZlbEF0dHJpYnV0ZV0pCisgICAgICAg
ICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhJbnQ6bV9vYmplY3QtPmhpZXJhcmNoaWNh
bExldmVsKCldOworICAgICAgICBpZiAoW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOk5T
QWNjZXNzaWJpbGl0eURpc2Nsb3NpbmdBdHRyaWJ1dGVdKQorICAgICAgICAgICAgcmV0dXJuIFtO
U051bWJlciBudW1iZXJXaXRoQm9vbDptX29iamVjdC0+aXNFeHBhbmRlZCgpXTsKKyAgICB9Cisg
ICAgCiAgICAgaWYgKChtX29iamVjdC0+aXNMaXN0Qm94KCkgfHwgbV9vYmplY3QtPmlzTGlzdCgp
KSAmJiBbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5T3JpZW50
YXRpb25BdHRyaWJ1dGVdKQogICAgICAgICByZXR1cm4gTlNBY2Nlc3NpYmlsaXR5VmVydGljYWxP
cmllbnRhdGlvblZhbHVlOwogCkBAIC0xNjM3LDYgKzE3NTEsMTIgQEAgc3RhdGljIE5TU3RyaW5n
KiByb2xlVmFsdWVUb05TU3RyaW5nKEFjYwogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFs
VG9TdHJpbmc6IE5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGVdKQogICAg
ICAgICByZXR1cm4gbV9vYmplY3QtPmNhblNldFNlbGVjdGVkQ2hpbGRyZW5BdHRyaWJ1dGUoKTsK
IAorICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5
RGlzY2xvc2luZ0F0dHJpYnV0ZV0pCisgICAgICAgIHJldHVybiBtX29iamVjdC0+Y2FuU2V0RXhw
YW5kZWRBdHRyaWJ1dGUoKTsKKworICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJp
bmc6TlNBY2Nlc3NpYmlsaXR5U2VsZWN0ZWRSb3dzQXR0cmlidXRlXSkKKyAgICAgICAgcmV0dXJu
IFlFUzsKKwogICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IE5TQWNjZXNz
aWJpbGl0eVNlbGVjdGVkVGV4dEF0dHJpYnV0ZV0gfHwKICAgICAgICAgW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRSYW5nZUF0dHJpYnV0
ZV0gfHwKICAgICAgICAgW2F0dHJpYnV0ZU5hbWUgaXNFcXVhbFRvU3RyaW5nOiBOU0FjY2Vzc2li
aWxpdHlWaXNpYmxlQ2hhcmFjdGVyUmFuZ2VBdHRyaWJ1dGVdKQpAQCAtMTgwNCw3ICsxOTI0LDcg
QEAgc3RhdGljIE5TU3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjYwogLSAodm9pZClhY2Nl
c3NpYmlsaXR5UGVyZm9ybVNob3dNZW51QWN0aW9uCiB7CiAgICAgaWYgKG1fb2JqZWN0LT5yb2xl
VmFsdWUoKSA9PSBDb21ib0JveFJvbGUpCi0gICAgICAgIG1fb2JqZWN0LT5leHBhbmRPYmplY3Qo
KTsKKyAgICAgICAgbV9vYmplY3QtPnNldElzRXhwYW5kZWQodHJ1ZSk7CiAgICAgZWxzZSB7CiAg
ICAgICAgIC8vIFRoaXMgbmVlZHMgdG8gYmUgcGVyZm9ybWVkIGluIGFuIGl0ZXJhdGlvbiBvZiB0
aGUgcnVuIGxvb3AgdGhhdCBkaWQgbm90IHN0YXJ0IGZyb20gYW4gQVggY2FsbC4gCiAgICAgICAg
IC8vIElmIGl0J3MgdGhlIHNhbWUgcnVuIGxvb3AgaXRlcmF0aW9uLCB0aGUgbWVudSBvcGVuIG5v
dGlmaWNhdGlvbiB3b24ndCBiZSBzZW50CkBAIC0xOTIzLDYgKzIwNDMsMTMgQEAgc3RhdGljIE5T
U3RyaW5nKiByb2xlVmFsdWVUb05TU3RyaW5nKEFjYwogICAgICAgICB9IGVsc2UgaWYgKFthdHRy
aWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzogTlNBY2Nlc3NpYmlsaXR5VmlzaWJsZUNoYXJhY3Rl
clJhbmdlQXR0cmlidXRlXSkgewogICAgICAgICAgICAgbV9vYmplY3QtPm1ha2VSYW5nZVZpc2li
bGUoUGxhaW5UZXh0UmFuZ2UocmFuZ2UubG9jYXRpb24sIHJhbmdlLmxlbmd0aCkpOwogICAgICAg
ICB9CisgICAgfSBlbHNlIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nl
c3NpYmlsaXR5RGlzY2xvc2luZ0F0dHJpYnV0ZV0pCisgICAgICAgIG1fb2JqZWN0LT5zZXRJc0V4
cGFuZGVkKFtudW1iZXIgYm9vbFZhbHVlXSk7CisgICAgZWxzZSBpZiAoW2F0dHJpYnV0ZU5hbWUg
aXNFcXVhbFRvU3RyaW5nOk5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkUm93c0F0dHJpYnV0ZV0pIHsK
KyAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9y
IHNlbGVjdGVkUm93czsKKyAgICAgICAgY29udmVydFRvVmVjdG9yKGFycmF5LCBzZWxlY3RlZFJv
d3MpOworICAgICAgICBpZiAobV9vYmplY3QtPmlzVHJlZSgpKQorICAgICAgICAgICAgbV9vYmpl
Y3QtPnNldFNlbGVjdGVkUm93cyhzZWxlY3RlZFJvd3MpOwogICAgIH0KIH0KIApAQCAtMjI4Myw2
ICsyNDEwLDExIEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhOU1YKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5n
Ok5TQWNjZXNzaWJpbGl0eUNoaWxkcmVuQXR0cmlidXRlXSkgeworICAgICAgICAvLyBUcmVlIGl0
ZW1zIG9iamVjdCByZXR1cm5zIGEgZGlmZmVyZW50IHNldCBvZiBjaGlsZHJlbiB0aGFuIHRob3Nl
IHRoYXQgYXJlIGluIGNoaWxkcmVuKCkKKyAgICAgICAgLy8gYmVjYXVzZSBhbiBBWE91dGxpbmUg
KHRoZSBtYWMgcm9sZSBpcyBiZWNvbWVzKSBoYXMgc29tZSBvZGQgc3RpcHVsYXRpb25zLgorICAg
ICAgICBpZiAobV9vYmplY3QtPmlzVHJlZSgpIHx8IG1fb2JqZWN0LT5pc1RyZWVJdGVtKCkpCisg
ICAgICAgICAgICByZXR1cm4gW1tzZWxmIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0Fj
Y2Vzc2liaWxpdHlDaGlsZHJlbkF0dHJpYnV0ZV0gY291bnRdOworICAgICAgICAKICAgICAgICAg
Y29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yJiBj
aGlsZHJlbiA9IG1fb2JqZWN0LT5jaGlsZHJlbigpOwogICAgICAgICBpZiAoY2hpbGRyZW4uaXNF
bXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuIFtbc2VsZiByZW5kZXJXaWRnZXRDaGlsZHJlbl0g
Y291bnRdOwpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShyZXZpc2lvbiA1MDc4
OCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdvcmtpbmcgY29weSkK
QEAgLTIzLDYgKzIzLDcgQEAgYXJpYS1sYWJlbAogYXJpYS1sYWJlbGVkYnkKIGFyaWEtbGFiZWxs
ZWRieQogYXJpYS1sZXZlbAorYXJpYS1tdWx0aXNlbGVjdGFibGUKIGFyaWEtcHJlc3NlZAogYXJp
YS1yZWFkb25seQogYXJpYS1yZXF1aXJlZApJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNTA3ODgpCisrKyBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0MCBAQAorMjAw
OS0xMS0xMCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG5lZWQgdG8gaW1wbGVtZW50
IGFyaWEgdHJlZSByb2xlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzEyODQKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0FjY2Vzc2liaWxpdHlV
SUVsZW1lbnQuY3BwOgorICAgICAgICAoZGlzY2xvc2VkUm93QXRJbmRleENhbGxiYWNrKToKKyAg
ICAgICAgKHNlbGVjdGVkUm93QXRJbmRleENhbGxiYWNrKToKKyAgICAgICAgKGlzRXF1YWxDYWxs
YmFjayk6CisgICAgICAgIChpc0F0dHJpYnV0ZVNldHRhYmxlQ2FsbGJhY2spOgorICAgICAgICAo
aXNBY3Rpb25TdXBwb3J0ZWRDYWxsYmFjayk6CisgICAgICAgIChkaXNjbG9zZWRCeVJvd0NhbGxi
YWNrKToKKyAgICAgICAgKGhpZXJhcmNoaWNhbExldmVsQ2FsbGJhY2spOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlNDbGFzcyk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxl
bWVudDo6aXNFcXVhbCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZ3RrL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRHdGsuY3BwOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGll
cmFyY2hpY2FsTGV2ZWwpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xv
c2VkUm93QXRJbmRleCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpzZWxlY3Rl
ZFJvd0F0SW5kZXgpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2Vk
QnlSb3cpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50TWFjLm1tOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0Q2hpbGRBdElu
ZGV4KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5k
ZXgpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4
KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50KToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnBhcmVudEVsZW1lbnQpOgorICAgICAgICAo
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6ZGlzY2xvc2VkQnlSb3cpOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL3dpbi9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcDoKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKToKKyAgICAgICAgKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgpOgorICAgICAgICAoQWNjZXNzaWJp
bGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KToKKyAgICAgICAgKEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KToKKwogMjAwOS0xMS0xMCAgTWFyayBSb3dlICA8
bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4
OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlF
bGVtZW50LmNwcAkocmV2aXNpb24gNTA3ODgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYxLDYgKzE2
MSwzNSBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBjaGlsZEF0SW5kZXhDYWxsYmFjayhKCiAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6Om1ha2VKU0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQo
Y29udGV4dCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPmdldENoaWxkQXRJbmRleChpbmRleE51
bWJlcikpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBkaXNjbG9zZWRSb3dBdEluZGV4Q2FsbGJh
Y2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1
bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGludCBpbmRleE51bWJlciA9
IDA7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPT0gMSkKKyAgICAgICAgaW5kZXhOdW1iZXIgPSBK
U1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgIAor
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYWtlSlNBY2Nlc3NpYmlsaXR5VUlF
bGVtZW50KGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5kaXNjbG9zZWRSb3dBdElu
ZGV4KGluZGV4TnVtYmVyKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIHNlbGVjdGVkUm93QXRJ
bmRleENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBpbnQgaW5k
ZXhOdW1iZXIgPSAwOworICAgIGlmIChhcmd1bWVudENvdW50ID09IDEpCisgICAgICAgIGluZGV4
TnVtYmVyID0gSlNWYWx1ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9u
KTsKKyAgICAKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNz
aWJpbGl0eVVJRWxlbWVudChjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+c2VsZWN0
ZWRSb3dBdEluZGV4KGluZGV4TnVtYmVyKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlUmVmIGlzRXF1
YWxDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpT
T2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVl
UmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgSlNPYmplY3RS
ZWYgb3RoZXJFbGVtZW50ID0gMDsKKyAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKQorICAgICAg
ICBvdGhlckVsZW1lbnQgPSBKU1ZhbHVlVG9PYmplY3QoY29udGV4dCwgYXJndW1lbnRzWzBdLCBl
eGNlcHRpb24pOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihj
b250ZXh0LCBmYWxzZSk7CisgICAgCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlQm9vbGVhbihjb250
ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+aXNFcXVhbCh0b0FYRWxlbWVudChvdGhlckVs
ZW1lbnQpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGVsZW1lbnRBdFBvaW50Q2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGludCB4ID0gMDsKQEAgLTE3Mywx
MyArMjAyLDEyIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGVsZW1lbnRBdFBvaW50Q2FsbGJhY2sKICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpTQWNjZXNzaWJpbGl0eVVJRWxl
bWVudChjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+ZWxlbWVudEF0UG9pbnQoeCwg
eSkpOwogfQogCi0KIHN0YXRpYyBKU1ZhbHVlUmVmIGlzQXR0cmlidXRlU2V0dGFibGVDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgSlNTdHJpbmdSZWYgYXR0cmli
dXRlID0gTlVMTDsKICAgICBpZiAoYXJndW1lbnRDb3VudCA9PSAxKQogICAgICAgICBhdHRyaWJ1
dGUgPSBKU1ZhbHVlVG9TdHJpbmdDb3B5KGNvbnRleHQsIGFyZ3VtZW50c1swXSwgZXhjZXB0aW9u
KTsgICAgCi0gICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0
LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+aXNBdHRyaWJ1dGVTZXR0YWJsZShhdHRyaWJ1dGUp
KTsKKyAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0
b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+aXNBdHRyaWJ1dGVTZXR0YWJsZShhdHRyaWJ1dGUpKTsK
ICAgICBpZiAoYXR0cmlidXRlKQogICAgICAgICBKU1N0cmluZ1JlbGVhc2UoYXR0cmlidXRlKTsK
ICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTkxLDcgKzIxOSw3IEBAIHN0YXRpYyBKU1ZhbHVlUmVm
IGlzQWN0aW9uU3VwcG9ydGVkQ2FsbGIKICAgICBKU1N0cmluZ1JlZiBhY3Rpb24gPSAwOwogICAg
IGlmIChhcmd1bWVudENvdW50ID09IDEpCiAgICAgICAgIGFjdGlvbiA9IEpTVmFsdWVUb1N0cmlu
Z0NvcHkoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOyAgICAKLSAgICBKU1ZhbHVl
UmVmIHJlc3VsdCA9IEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNP
YmplY3QpLT5pc0FjdGlvblN1cHBvcnRlZChhY3Rpb24pKTsKKyAgICBKU1ZhbHVlUmVmIHJlc3Vs
dCA9IEpTVmFsdWVNYWtlQm9vbGVhbihjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+
aXNBY3Rpb25TdXBwb3J0ZWQoYWN0aW9uKSk7CiAgICAgaWYgKGFjdGlvbikKICAgICAgICAgSlNT
dHJpbmdSZWxlYXNlKGFjdGlvbik7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTIzMCw2ICsyNTgs
MTEgQEAgc3RhdGljIEpTVmFsdWVSZWYgcGFyZW50RWxlbWVudENhbGxiYWNrKAogICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjptYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KGNv
bnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5wYXJlbnRFbGVtZW50KCkpOwogfQogCitz
dGF0aWMgSlNWYWx1ZVJlZiBkaXNjbG9zZWRCeVJvd0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKK3sKKyAgICByZXR1cm4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bWFrZUpT
QWNjZXNzaWJpbGl0eVVJRWxlbWVudChjb250ZXh0LCB0b0FYRWxlbWVudCh0aGlzT2JqZWN0KS0+
ZGlzY2xvc2VkQnlSb3coKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIHNldFNlbGVjdGVkVGV4
dFJhbmdlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9u
LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIHVuc2ln
bmVkIGxvY2F0aW9uID0gVUlOVF9NQVgsIGxlbmd0aCA9IDA7CkBAIC0zNzksNiArNDEyLDExIEBA
IHN0YXRpYyBKU1ZhbHVlUmVmIGdldElzRXhwYW5kZWRDYWxsYmFjaygKICAgICByZXR1cm4gSlNW
YWx1ZU1ha2VCb29sZWFuKGNvbnRleHQsIHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5pc0V4cGFu
ZGVkKCkpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBoaWVyYXJjaGljYWxMZXZlbENhbGxiYWNr
KEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1Jl
ZiwgSlNWYWx1ZVJlZiopCit7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlTnVtYmVyKGNvbnRleHQs
IHRvQVhFbGVtZW50KHRoaXNPYmplY3QpLT5oaWVyYXJjaGljYWxMZXZlbCgpKTsKK30KKwogc3Rh
dGljIEpTVmFsdWVSZWYgZ2V0VmFsdWVEZXNjcmlwdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBKU1JldGFpblB0cjxKU1N0cmluZ1JlZj4g
dmFsdWVEZXNjcmlwdGlvbihBZG9wdCwgdG9BWEVsZW1lbnQodGhpc09iamVjdCktPnZhbHVlRGVz
Y3JpcHRpb24oKSk7CkBAIC00MzIsNiArNDcwLDcgQEAgSlNDbGFzc1JlZiBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjpnZXRKUwogICAgICAgICB7ICJpc1NlbGVjdGVkIiwgZ2V0SXNTZWxlY3RlZENh
bGxiYWNrLCAwLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImlzRXhwYW5kZWQiLCBnZXRJc0V4cGFuZGVk
Q2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAidmFsdWVEZXNjcmlwdGlvbiIsIGdldFZh
bHVlRGVzY3JpcHRpb25DYWxsYmFjaywgMCwga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJoaWVyYXJjaGlj
YWxMZXZlbCIsIGhpZXJhcmNoaWNhbExldmVsQ2FsbGJhY2ssIDAsIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAwLCAwLCAwLCAwIH0KICAgICB9OwogCkBAIC00NjIsOSArNTAxLDEzIEBAIEpTQ2xhc3NSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6Z2V0SlMKICAgICAgICAgeyAiaXNBdHRyaWJ1dGVTZXR0
YWJsZSIsIGlzQXR0cmlidXRlU2V0dGFibGVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJp
c0FjdGlvblN1cHBvcnRlZCIsIGlzQWN0aW9uU3VwcG9ydGVkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAicGFyZW50RWxlbWVudCIsIHBhcmVudEVsZW1lbnRDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAor
ICAgICAgICB7ICJkaXNjbG9zZWRCeVJvdyIsIGRpc2Nsb3NlZEJ5Um93Q2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAiaW5jcmVtZW50IiwgaW5jcmVtZW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAiZGVjcmVtZW50IiwgZGVjcmVtZW50Q2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAic2hvd01lbnUiLCBzaG93TWVudUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImRpc2Ns
b3NlZFJvd0F0SW5kZXgiLCBkaXNjbG9zZWRSb3dBdEluZGV4Q2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAg
ICAgICAgeyAic2VsZWN0ZWRSb3dBdEluZGV4Iiwgc2VsZWN0ZWRSb3dBdEluZGV4Q2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKKyAgICAgICAgeyAiaXNFcXVhbCIsIGlzRXF1YWxDYWxsYmFjaywga0pTUHJvcGVy
dHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAog
ICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50LmgJKHJldmlzaW9uIDUwNzg4
KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvQWNjZXNzaWJpbGl0eVVJRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MSw2ICs2MSw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBK
U09iamVjdFJlZiBtYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KEpTQ29udGV4dFJlZiwgY29u
c3QgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCYpOwogCisgICAgYm9vbCBpc0VxdWFsKEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQqIG90aGVyRWxlbWVudCkgeyByZXR1cm4gcGxhdGZvcm1VSUVsZW1lbnQo
KSA9PSBvdGhlckVsZW1lbnQtPnBsYXRmb3JtVUlFbGVtZW50KCk7IH0KKyAgICAKICAgICB2b2lk
IGdldExpbmtlZFVJRWxlbWVudHMoVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Jik7CiAg
ICAgdm9pZCBnZXREb2N1bWVudExpbmtzKFZlY3RvcjxBY2Nlc3NpYmlsaXR5VUlFbGVtZW50PiYp
OwogICAgIHZvaWQgZ2V0Q2hpbGRyZW4oVmVjdG9yPEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ+Jik7
CkBAIC0xMDcsNiArMTA5LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNSZXF1aXJlZCgpIGNvbnN0
OwogICAgIGJvb2wgaXNTZWxlY3RlZCgpIGNvbnN0OwogICAgIGJvb2wgaXNFeHBhbmRlZCgpIGNv
bnN0OworICAgIGludCBoaWVyYXJjaGljYWxMZXZlbCgpIGNvbnN0OwogICAgIGRvdWJsZSBjbGlj
a1BvaW50WCgpOwogICAgIGRvdWJsZSBjbGlja1BvaW50WSgpOwogCkBAIC0xMjEsNiArMTI0LDEx
IEBAIHB1YmxpYzoKICAgICBKU1N0cmluZ1JlZiByb3dJbmRleFJhbmdlKCk7CiAgICAgSlNTdHJp
bmdSZWYgY29sdW1uSW5kZXhSYW5nZSgpOwogICAgIAorICAgIC8vIFRyZWUvT3V0bGluZSBzcGVj
aWZpYyBhdHRyaWJ1dGVzCisgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBzZWxlY3RlZFJvd0F0
SW5kZXgodW5zaWduZWQpOworICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgZGlzY2xvc2VkQnlS
b3coKTsKKyAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IGRpc2Nsb3NlZFJvd0F0SW5kZXgodW5z
aWduZWQpOworICAgIAogICAgIC8vIFBhcmFtZXRlcml6ZWQgYXR0cmlidXRlcwogICAgIGludCBs
aW5lRm9ySW5kZXgoaW50KTsKICAgICBKU1N0cmluZ1JlZiBib3VuZHNGb3JSYW5nZSh1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoKTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2d0ay9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvQWNjZXNzaWJpbGl0eVVJRWxlbWVudEd0ay5j
cHAJKHJldmlzaW9uIDUwNzg4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0Fj
Y2Vzc2liaWxpdHlVSUVsZW1lbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjgsNiArMzI4
LDEyIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNTZWxlY3RlZCgKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK2ludCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpoaWVyYXJjaGljYWxM
ZXZlbCgpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudAorICAgIHJldHVybiAwOwor
fQorCiBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWQoKSBjb25zdAogewog
ICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQKQEAgLTQ1MCw2ICs0NTYsMjEgQEAgdm9pZCBBY2Nlc3Np
YmlsaXR5VUlFbGVtZW50OjpzaG93TWVudSgpCiAgICAgLy8gRklYTUU6IGltcGxlbWVudAogfQog
CitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3Nl
ZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdElu
ZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIHJldHVybiAwOworfQorCitBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZEJ5Um93KCkKK3sKKyAg
ICByZXR1cm4gMDsKK30KKwogSlNTdHJpbmdSZWYgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNj
ZXNzaWJpbGl0eVZhbHVlKCkgY29uc3QKIHsKICAgICAvLyBGSVhNRTogaW1wbGVtZW50CkluZGV4
OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbQkocmV2aXNpb24gNTA3ODgpCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMjMyLDcgKzIzMiwyNSBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2li
aWxpdHlVSUVsCiAKICAgICBpZiAoY2hpbGRyZW4uc2l6ZSgpID09IDEpCiAgICAgICAgIHJldHVy
biBjaGlsZHJlblswXTsKLSAgICByZXR1cm4gbmlsOworICAgIHJldHVybiAwOworfQorCitBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0
SW5kZXgodW5zaWduZWQgaW5kZXgpCit7CisgICAgTlNBcnJheSogcm93cyA9IFttX2VsZW1lbnQg
YWNjZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZFJvd3NB
dHRyaWJ1dGVdOworICAgIGlmIChpbmRleCA8IFtyb3dzIGNvdW50XSkKKyAgICAgICAgcmV0dXJu
IFtyb3dzIG9iamVjdEF0SW5kZXg6aW5kZXhdOworCisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vz
c2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdElu
ZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIE5TQXJyYXkqIHJvd3MgPSBbbV9lbGVtZW50IGFj
Y2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFJvd3NBdHRy
aWJ1dGVdOworICAgIGlmIChpbmRleCA8IFtyb3dzIGNvdW50XSkKKyAgICAgICAgcmV0dXJuIFty
b3dzIG9iamVjdEF0SW5kZXg6aW5kZXhdOworICAgIAorICAgIHJldHVybiAwOwogfQogCiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnRpdGxlVUlFbGVtZW50
KCkKQEAgLTI0MSw3ICsyNTksNyBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxp
dHlVSUVsCiAgICAgaWYgKGFjY2Vzc2liaWxpdHlPYmplY3QpCiAgICAgICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50KGFjY2Vzc2liaWxpdHlPYmplY3QpOwogICAgIAotICAgIHJldHVy
biBuaWw7CisgICAgcmV0dXJuIDA7CiB9CiAKIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNz
aWJpbGl0eVVJRWxlbWVudDo6cGFyZW50RWxlbWVudCgpCkBAIC0yNTAsNyArMjY4LDE2IEBAIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0eVVJRWwKICAgICBpZiAoYWNjZXNzaWJp
bGl0eU9iamVjdCkKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoYWNjZXNz
aWJpbGl0eU9iamVjdCk7CiAgICAgCi0gICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gMDsKK30K
KworQWNjZXNzaWJpbGl0eVVJRWxlbWVudCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpkaXNjbG9z
ZWRCeVJvdygpCit7CisgICAgaWQgYWNjZXNzaWJpbGl0eU9iamVjdCA9IFttX2VsZW1lbnQgYWNj
ZXNzaWJpbGl0eUF0dHJpYnV0ZVZhbHVlOk5TQWNjZXNzaWJpbGl0eURpc2Nsb3NlZEJ5Um93QXR0
cmlidXRlXTsKKyAgICBpZiAoYWNjZXNzaWJpbGl0eU9iamVjdCkKKyAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQoYWNjZXNzaWJpbGl0eU9iamVjdCk7CisgICAgCisgICAgcmV0
dXJuIDA7CiB9CiAKIEpTU3RyaW5nUmVmIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmF0dHJpYnV0
ZXNPZkxpbmtlZFVJRWxlbWVudHMoKQpAQCAtNDU1LDYgKzQ4MiwxNCBAQCBib29sIEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmlzRXhwYW5kZWQoCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitpbnQg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aGllcmFyY2hpY2FsTGV2ZWwoKSBjb25zdAoreworICAg
IGlkIHZhbHVlID0gW21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6TlNBY2Nl
c3NpYmlsaXR5RGlzY2xvc3VyZUxldmVsQXR0cmlidXRlXTsKKyAgICBpZiAoW3ZhbHVlIGlzS2lu
ZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbdmFsdWUgaW50VmFs
dWVdOworICAgIHJldHVybiAwOworfQorCiAvLyBwYXJhbWV0ZXJpemVkIGF0dHJpYnV0ZXMKIGlu
dCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lRm9ySW5kZXgoaW50IGluZGV4KQogewpJbmRl
eDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRX
aW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9BY2Nl
c3NpYmlsaXR5VUlFbGVtZW50V2luLmNwcAkocmV2aXNpb24gNTA3ODgpCisrKyBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS93aW4vQWNjZXNzaWJpbGl0eVVJRWxlbWVudFdpbi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI1Nyw2ICsyNTcsMTEgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50
Ojppc1NlbGVjdGVkKAogICAgIHJldHVybiBmYWxzZTsKIH0KIAoraW50IEFjY2Vzc2liaWxpdHlV
SUVsZW1lbnQ6OmhpZXJhcmNoaWNhbExldmVsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30K
KwogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0V4cGFuZGVkKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00MDAsNiArNDA1LDIxIEBAIHZvaWQgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6c2hvd01lbnUoKQogewogfQogCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vz
c2liaWxpdHlVSUVsZW1lbnQ6OmRpc2Nsb3NlZFJvd0F0SW5kZXgodW5zaWduZWQgaW5kZXgpCit7
CisgICAgcmV0dXJuIDA7Cit9CisKK0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6c2VsZWN0ZWRSb3dBdEluZGV4KHVuc2lnbmVkIGluZGV4KQoreworICAgIHJl
dHVybiAwOworfQorCitBY2Nlc3NpYmlsaXR5VUlFbGVtZW50IEFjY2Vzc2liaWxpdHlVSUVsZW1l
bnQ6OmRpc2Nsb3NlZEJ5Um93KCkKK3sKKyAgICByZXR1cm4gMDsKK30KKwogSlNTdHJpbmdSZWYg
QWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6YWNjZXNzaWJpbGl0eVZhbHVlKCkgY29uc3QKIHsKICAg
ICBCU1RSIHZhbHVlQlNUUjsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUwNzg4KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMTEtMTAg
IENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBuZWVkIHRvIGltcGxlbWVudCBhcmlhIHRy
ZWUgcm9sZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMxMjg0CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FyaWEtcmVhZG9ubHktZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXJpYS1yZWFkb25seS5odG1sOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2FyaWEtbXVsdGlzZWxlY3RhYmxlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJp
YS1tdWx0aXNlbGVjdGFibGUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvYXJpYS10cmVlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS10cmVlLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQudHh0
OgorICAgICAgICAqIHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3JhZGlvLWJ1dHRvbi1ncm91
cC1tZW1iZXJzLWV4cGVjdGVkLnR4dDoKKwogMjAwOS0xMS0xMCAgUm9sYW5kIFN0ZWluZXIgIDxy
b2xhbmRzdGVpbmVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1yZWFkb25seS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hcmlhLXJl
YWRvbmx5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTA3ODgpCisrKyBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2FyaWEtcmVhZG9ubHktZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00
LDEyICs0LDEyIEBAIFRoaXMgdGVzdHMgdGhhdCB0aGUgYXJpYS1yZWFkb25seSBhdHRyaWIKIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIHN1Y2NlZWRlZCBpcyAwCi1QQVNTIHN1
Y2NlZWRlZCBpcyAxCi1QQVNTIHN1Y2NlZWRlZCBpcyAwCi1QQVNTIHN1Y2NlZWRlZCBpcyAxCi1Q
QVNTIHN1Y2NlZWRlZCBpcyAwCi1QQVNTIHN1Y2NlZWRlZCBpcyAxCitQQVNTIHN1Y2NlZWRlZCBp
cyBmYWxzZQorUEFTUyBzdWNjZWVkZWQgaXMgdHJ1ZQorUEFTUyBzdWNjZWVkZWQgaXMgZmFsc2UK
K1BBU1Mgc3VjY2VlZGVkIGlzIHRydWUKK1BBU1Mgc3VjY2VlZGVkIGlzIGZhbHNlCitQQVNTIHN1
Y2NlZWRlZCBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1Qg
Q09NUExFVEUKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1yZWFkb25seS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJpYS1yZWFkb25s
eS5odG1sCShyZXZpc2lvbiA1MDc4OCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYXJp
YS1yZWFkb25seS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyArMjcsMjcgQEAgdmFyIHN1
Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOwogICAgICAgICAgIGJvZHkuZm9jdXMoKTsKICAgICAg
ICAgICB2YXIgdGV4dEZpZWxkID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCgwKTsKICAgICAgICAgICB2YXIgc3VjY2Vl
ZGVkID0gdGV4dEZpZWxkLmlzQXR0cmlidXRlU2V0dGFibGUoIkFYVmFsdWUiKTsKLSAgICAgICAg
ICBzaG91bGRCZSgic3VjY2VlZGVkIiwgIjAiKTsKKyAgICAgICAgICBzaG91bGRCZSgic3VjY2Vl
ZGVkIiwgImZhbHNlIik7CiAKICAgICAgICAgICB0ZXh0RmllbGQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgoMCkuY2hpbGRBdEluZGV4KDEpOwog
ICAgICAgICAgIHN1Y2NlZWRlZCA9IHRleHRGaWVsZC5pc0F0dHJpYnV0ZVNldHRhYmxlKCJBWFZh
bHVlIik7Ci0gICAgICAgICAgc2hvdWxkQmUoInN1Y2NlZWRlZCIsICIxIik7CisgICAgICAgICAg
c2hvdWxkQmUoInN1Y2NlZWRlZCIsICJ0cnVlIik7CiAgICAgICAgICAgCiAgICAgICAgICAgdGV4
dEZpZWxkID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdElu
ZGV4KDApLmNoaWxkQXRJbmRleCgyKTsKICAgICAgICAgICBzdWNjZWVkZWQgPSB0ZXh0RmllbGQu
aXNBdHRyaWJ1dGVTZXR0YWJsZSgiQVhWYWx1ZSIpOwotICAgICAgICAgIHNob3VsZEJlKCJzdWNj
ZWVkZWQiLCAiMCIpOworICAgICAgICAgIHNob3VsZEJlKCJzdWNjZWVkZWQiLCAiZmFsc2UiKTsK
ICAgICAgICAgICAgIAogICAgICAgICAgIHRleHRGaWVsZCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKS5jaGlsZEF0SW5kZXgoMyk7CiAgICAg
ICAgICAgc3VjY2VlZGVkID0gdGV4dEZpZWxkLmlzQXR0cmlidXRlU2V0dGFibGUoIkFYVmFsdWUi
KTsKLSAgICAgICAgICBzaG91bGRCZSgic3VjY2VlZGVkIiwgIjEiKTsKKyAgICAgICAgICBzaG91
bGRCZSgic3VjY2VlZGVkIiwgInRydWUiKTsKICAgICAgICAgICAKICAgICAgICAgICB0ZXh0Rmll
bGQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgo
MCkuY2hpbGRBdEluZGV4KDQpOwogICAgICAgICAgIHN1Y2NlZWRlZCA9IHRleHRGaWVsZC5pc0F0
dHJpYnV0ZVNldHRhYmxlKCJBWFZhbHVlIik7Ci0gICAgICAgICAgc2hvdWxkQmUoInN1Y2NlZWRl
ZCIsICIwIik7CisgICAgICAgICAgc2hvdWxkQmUoInN1Y2NlZWRlZCIsICJmYWxzZSIpOwogCiAg
ICAgICAgICAgdGV4dEZpZWxkID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQuY2hpbGRBdEluZGV4KDApLmNoaWxkQXRJbmRleCg1KTsKICAgICAgICAgICBzdWNjZWVkZWQg
PSB0ZXh0RmllbGQuaXNBdHRyaWJ1dGVTZXR0YWJsZSgiQVhWYWx1ZSIpOwotICAgICAgICAgIHNo
b3VsZEJlKCJzdWNjZWVkZWQiLCAiMSIpOworICAgICAgICAgIHNob3VsZEJlKCJzdWNjZWVkZWQi
LCAidHJ1ZSIpOwogICAgIH0KIAogICAgIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLW11bHRpc2VsZWN0
YWJsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2FjY2Vzc2liaWxpdHkvYXJpYS1tdWx0aXNlbGVjdGFibGUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS1tdWx0
aXNlbGVjdGFibGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACitT
aWFtZXNlCitUYWJieQorVGhpcyB0ZXN0cyB0aGF0IGFyaWEgdHJlZXMgdGhhdCBhcmUgbXVsdGkg
c2VsZWN0YWJsZSB3aWxsIHJldHVybiB0aGUgcmlnaHQgc2VsZWN0ZWQgcm93cy4KKworT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdHJlZWl0ZW0xLnJvbGUgaXMgJ0FYUm9sZTog
QVhSb3cnCitQQVNTIHRyZWVpdGVtMS5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYT3V0bGluZVJv
dycKK1BBU1MgdHJlZWl0ZW0yLnJvbGUgaXMgJ0FYUm9sZTogQVhSb3cnCitQQVNTIHRyZWVpdGVt
Mi5zdWJyb2xlIGlzICdBWFN1YnJvbGU6IEFYT3V0bGluZVJvdycKK1BBU1Mgc2VsZWN0ZWRSb3cx
LmlzRXF1YWwodHJlZWl0ZW0xKSBpcyB0cnVlCitQQVNTIHNlbGVjdGVkUm93Mi5pc0VxdWFsKHRy
ZWVpdGVtMikgaXMgdHJ1ZQorUEFTUyBzZWxlY3RlZFJvdzEuaXNFcXVhbCh0cmVlaXRlbTIpIGlz
IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLW11bHRp
c2VsZWN0YWJsZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L2FyaWEtbXVsdGlzZWxlY3RhYmxlLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9hcmlhLW11bHRpc2VsZWN0YWJs
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXN0eWxl
LmNzcyI+Cis8c2NyaXB0PgordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9IGZhbHNlOworPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgaWQ9ImJvZHkiPgorCis8dWwgaWQ9InRyZWUi
IHJvbGU9InRyZWUiIGFyaWEtbXVsdGlzZWxlY3RhYmxlPSJ0cnVlIiB0YWJpbmRleD0iMCI+Cisg
ICAgPGxpIGlkPSJ0cmVlaXRlbTEiIHJvbGU9InRyZWVpdGVtIj48c3Bhbj5TaWFtZXNlPC9zcGFu
PjwvbGk+CisgICAgPGxpIGlkPSJ0cmVlaXRlbTIiIHJvbGU9InRyZWVpdGVtIj48c3Bhbj5UYWJi
eTwvc3Bhbj48L2xpPgorPC91bD4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHRoYXQgYXJpYSB0cmVlcyB0aGF0IGFyZSBtdWx0aSBzZWxlY3RhYmxlIHdpbGwgcmV0dXJu
IHRoZSByaWdodCBzZWxlY3RlZCByb3dzLiIpOworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworCisgICAgICAgICAgdmFyIHRyZWUgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgidHJlZSIpOworICAgICAgICAgIHRyZWUuZm9jdXMoKTsKKworICAgICAgICAgIC8v
IFRlc3QgdHJlZSBhdHRyaWJ1dGVzLgorICAgICAgICAgIHRyZWUgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKworICAgICAgICAgIHZhciB0cmVlaXRlbTEgPSB0cmVl
LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgICBzaG91bGRCZSgidHJlZWl0ZW0xLnJvbGUiLCAi
J0FYUm9sZTogQVhSb3cnIik7CisgICAgICAgICAgc2hvdWxkQmUoInRyZWVpdGVtMS5zdWJyb2xl
IiwgIidBWFN1YnJvbGU6IEFYT3V0bGluZVJvdyciKTsKKyAgICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgidHJlZWl0ZW0xIikuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwgdHJ1
ZSk7CisKKyAgICAgICAgICB2YXIgdHJlZWl0ZW0yID0gdHJlZS5jaGlsZEF0SW5kZXgoMSk7Cisg
ICAgICAgICAgc2hvdWxkQmUoInRyZWVpdGVtMi5yb2xlIiwgIidBWFJvbGU6IEFYUm93JyIpOwor
ICAgICAgICAgIHNob3VsZEJlKCJ0cmVlaXRlbTIuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE91
dGxpbmVSb3cnIik7CisgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRyZWVpdGVt
MiIpLnNldEF0dHJpYnV0ZSgiYXJpYS1zZWxlY3RlZCIsIHRydWUpOworCQorICAgICAgICAgIC8v
IFRlc3QgdGhhdCB0aGUgdHJlZSB3aWxsIGdpdmUgdXMgYm90aCByb3dzIGFzIHNlbGVjdGVkIChz
aW5jZSBpdHMgbXVsdGktc2VsZWN0YWJsZSkKKyAgICAgICAgICB2YXIgc2VsZWN0ZWRSb3cxID0g
dHJlZS5zZWxlY3RlZFJvd0F0SW5kZXgoMCk7CisgICAgICAgICAgdmFyIHNlbGVjdGVkUm93MiA9
IHRyZWUuc2VsZWN0ZWRSb3dBdEluZGV4KDEpOworCisgICAgICAgICAgc2hvdWxkQmUoInNlbGVj
dGVkUm93MS5pc0VxdWFsKHRyZWVpdGVtMSkiLCAidHJ1ZSIpOyAgICAgICAgICAKKyAgICAgICAg
ICBzaG91bGRCZSgic2VsZWN0ZWRSb3cyLmlzRXF1YWwodHJlZWl0ZW0yKSIsICJ0cnVlIik7CisK
KyAgICAgICAgICAvLyBUZXN0IHRoYXQgaWYgb25lIG9mIHRoZSBpdGVtcyBiZWNvbWVzIGRlLXNl
bGVjdGVkLCB3ZSBzdGlsbCBnZXQgdGhlIHJpZ2h0IHNlbGVjdGVkIHJvdy4KKyAgICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgidHJlZWl0ZW0xIikuc2V0QXR0cmlidXRlKCJhcmlhLXNl
bGVjdGVkIiwgZmFsc2UpOworICAgICAgICAgIHNlbGVjdGVkUm93MSA9IHRyZWUuc2VsZWN0ZWRS
b3dBdEluZGV4KDApOworICAgICAgICAgIHNob3VsZEJlKCJzZWxlY3RlZFJvdzEuaXNFcXVhbCh0
cmVlaXRlbTIpIiwgInRydWUiKTsgICAgICAgICAgCisgICAgfQorCisgICAgc3VjY2Vzc2Z1bGx5
UGFyc2VkID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2FyaWEtdHJlZS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvYXJpYS10cmVlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2FyaWEtdHJlZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKK0FuaW1hbHMKK0JpcmRzCitDYXRzCitTaWFtZXNl
CitUYWJieQorVGhpcyB0ZXN0cyB0aGF0IGFyaWEgdHJlZXMgYW5kIHRyZWUgaXRlbXMgYXJlIGNv
bnZlcnRlZCBpbnRvIEFYT3V0bGluZXMgYW5kIEFYUm93cywgd2l0aCBhbGwgdGhlIHJpZ2h0IGF0
dHJpYnV0ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRyZWUucm9s
ZSBpcyAnQVhSb2xlOiBBWE91dGxpbmUnCitQQVNTIGNhblNldFJvd3MgaXMgdHJ1ZQorUEFTUyB0
cmVlLmNoaWxkcmVuQ291bnQgaXMgNQorUEFTUyB0cmVlaXRlbTEucm9sZSBpcyAnQVhSb2xlOiBB
WFJvdycKK1BBU1MgdHJlZWl0ZW0xLnN1YnJvbGUgaXMgJ0FYU3Vicm9sZTogQVhPdXRsaW5lUm93
JworUEFTUyB0cmVlaXRlbTEuaXNFeHBhbmRlZCBpcyB0cnVlCitQQVNTIHRyZWVpdGVtMS5oaWVy
YXJjaGljYWxMZXZlbCBpcyAxCitQQVNTIGNhblNldERpc2Nsb3NpbmcgaXMgdHJ1ZQorUEFTUyB0
cmVlaXRlbTIucm9sZSBpcyAnQVhSb2xlOiBBWFJvdycKK1BBU1MgdHJlZWl0ZW0yLnN1YnJvbGUg
aXMgJ0FYU3Vicm9sZTogQVhPdXRsaW5lUm93JworUEFTUyB0cmVlaXRlbTIuaXNFeHBhbmRlZCBp
cyBmYWxzZQorUEFTUyB0cmVlaXRlbTIuaGllcmFyY2hpY2FsTGV2ZWwgaXMgMgorUEFTUyB0cmVl
aXRlbTIuZGlzY2xvc2VkQnlSb3coKS5pc0VxdWFsKHRyZWVpdGVtMSkgaXMgdHJ1ZQorUEFTUyBj
YW5TZXREaXNjbG9zaW5nIGlzIGZhbHNlCitQQVNTIHRyZWVpdGVtMy5zdHJpbmdWYWx1ZSBpcyAn
QVhWYWx1ZTogQmlyZHMnCitQQVNTIGNhblNldERpc2Nsb3NpbmcgaXMgZmFsc2UKK1BBU1MgdHJl
ZWl0ZW0zLnJvbGUgaXMgJ0FYUm9sZTogQVhSb3cnCitQQVNTIHRyZWVpdGVtMy5zdWJyb2xlIGlz
ICdBWFN1YnJvbGU6IEFYT3V0bGluZVJvdycKK1BBU1MgdHJlZWl0ZW0zLmlzRXhwYW5kZWQgaXMg
dHJ1ZQorUEFTUyB0cmVlaXRlbTMuaXNTZWxlY3RlZCBpcyBmYWxzZQorUEFTUyB0cmVlaXRlbTMu
aXNTZWxlY3RlZCBpcyB0cnVlCitQQVNTIHNlbGVjdGVkUm93LmlzRXF1YWwodHJlZWl0ZW0zKSBp
cyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvYXJpYS10cmVl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxp
dHkvYXJpYS10cmVlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9hcmlhLXRyZWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5
OSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0
bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdD4KK3ZhciBzdWNjZXNzZnVs
bHlQYXJzZWQgPSBmYWxzZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGlk
PSJib2R5Ij4KKworPHVsIGlkPSJ0cmVlIiByb2xlPSJ0cmVlIiBhcmlhLWxhYmVsbGVkYnk9InRy
ZWVsYWJlbCIgYXJpYS1hY3RpdmVkZXNjZW5kYW50PSJ0cmVlMF9pdGVtMF8yXzBfMSIgdGFiaW5k
ZXg9IjAiPgorICAgIDxsaSBpZD0idHJlZWl0ZW0xIiByb2xlPSJ0cmVlaXRlbSIgYXJpYS1sZXZl
bD0iMSIgYXJpYS1leHBhbmRlZD0idHJ1ZSI+CisgICAgICAgIDxzcGFuPgorICAgICAgICAgICAg
PHNwYW4gY2xhc3M9ImV4cGFuZGVyIj48L3NwYW4+CisgICAgICAgICAgICBBbmltYWxzCisgICAg
ICAgICAgICA8L3NwYW4+CisgICAgICAgICAgICA8dWwgcm9sZT0iZ3JvdXAiPgorICAgICAgICAg
ICAgICAgIDxkaXYgaWQ9InRyZWVpdGVtMiIgcm9sZT0idHJlZWl0ZW0iIGFyaWEtbGV2ZWw9IjIi
PjxzcGFuPkJpcmRzPC9zcGFuPjwvZGl2PgorICAgICAgICAgICAgICAgIDxsaSBpZD0idHJlZWl0
ZW0zIiByb2xlPSJ0cmVlaXRlbSIgYXJpYS1sZXZlbD0iMiIgYXJpYS1leHBhbmRlZD0idHJ1ZSI+
CisgICAgICAgICAgICAgICAgICAgIDxzcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgPHNw
YW4gY2xhc3M9ImV4cGFuZGVyIj48L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICBDYXRz
CisgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgPHVsIHJv
bGU9Imdyb3VwIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0idHJlZTBfaXRlbTBf
MV8wIiByb2xlPSJ0cmVlaXRlbSJhcmlhLWxldmVsPSIzIj48c3Bhbj5TaWFtZXNlPC9zcGFuPjwv
bGk+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGkgaWQ9InRyZWUwX2l0ZW0wXzFfMSIgcm9s
ZT0idHJlZWl0ZW0iIGFyaWEtbGV2ZWw9IjMiPjxzcGFuPlRhYmJ5PC9zcGFuPjwvbGk+CisgICAg
ICAgICAgICAgICAgICAgIDwvdWw+CisgICAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAg
IDwvdWw+CisgICAgICAgIDwvc3Bhbj4KKyAgICA8L2xpPgorPC91bD4KKworPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworICAg
IGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgYXJpYSB0cmVlcyBhbmQgdHJlZSBpdGVtcyBh
cmUgY29udmVydGVkIGludG8gQVhPdXRsaW5lcyBhbmQgQVhSb3dzLCB3aXRoIGFsbCB0aGUgcmln
aHQgYXR0cmlidXRlcy4iKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKKworICAgICAgICAgIHZhciB0cmVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRy
ZWUiKTsKKyAgICAgICAgICB0cmVlLmZvY3VzKCk7CisKKyAgICAgICAgICAvLyBUZXN0IHRyZWUg
YXR0cmlidXRlcy4KKyAgICAgICAgICB0cmVlID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQ7CisgICAgICAgICAgc2hvdWxkQmUoInRyZWUucm9sZSIsICInQVhSb2xlOiBB
WE91dGxpbmUnIik7CisgICAgICAgICAgdmFyIGNhblNldFJvd3MgPSB0cmVlLmlzQXR0cmlidXRl
U2V0dGFibGUoJ0FYU2VsZWN0ZWRSb3dzJyk7CisgICAgICAgICAgc2hvdWxkQmUoImNhblNldFJv
d3MiLCAidHJ1ZSIpOworICAgICAgICAgIHNob3VsZEJlKCJ0cmVlLmNoaWxkcmVuQ291bnQiLCAi
NSIpOworICAgICAgCisgICAgICAgICAgLy8gVGVzdCB0cmVlIGl0ZW0gYXR0cmlidXRlcy4KKyAg
ICAgICAgICB2YXIgdHJlZWl0ZW0xID0gdHJlZS5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgICAg
c2hvdWxkQmUoInRyZWVpdGVtMS5yb2xlIiwgIidBWFJvbGU6IEFYUm93JyIpOworICAgICAgICAg
IHNob3VsZEJlKCJ0cmVlaXRlbTEuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE91dGxpbmVSb3cn
Iik7CisgICAgICAgICAgc2hvdWxkQmUoInRyZWVpdGVtMS5pc0V4cGFuZGVkIiwgInRydWUiKTsK
KyAgICAgICAgICBzaG91bGRCZSgidHJlZWl0ZW0xLmhpZXJhcmNoaWNhbExldmVsIiwgIjEiKTsK
KyAgICAgICAgICB2YXIgY2FuU2V0RGlzY2xvc2luZyA9IHRyZWVpdGVtMS5pc0F0dHJpYnV0ZVNl
dHRhYmxlKCdBWERpc2Nsb3NpbmcnKTsKKyAgICAgICAgICBzaG91bGRCZSgiY2FuU2V0RGlzY2xv
c2luZyIsICJ0cnVlIik7CisgICAgICAgICAgCisgICAgICAgICAgLy8gVGVzdCBtb3JlIHRyZWUg
aXRlbSBhdHRyaWJ1dGVzIGFzIHdlIGRpdmUgaSwKKyAgICAgICAgICB2YXIgdHJlZWl0ZW0yID0g
dHJlZWl0ZW0xLmRpc2Nsb3NlZFJvd0F0SW5kZXgoMCk7CisgICAgICAgICAgc2hvdWxkQmUoInRy
ZWVpdGVtMi5yb2xlIiwgIidBWFJvbGU6IEFYUm93JyIpOworICAgICAgICAgIHNob3VsZEJlKCJ0
cmVlaXRlbTIuc3Vicm9sZSIsICInQVhTdWJyb2xlOiBBWE91dGxpbmVSb3cnIik7CisgICAgICAg
ICAgc2hvdWxkQmUoInRyZWVpdGVtMi5pc0V4cGFuZGVkIiwgImZhbHNlIik7CisgICAgICAgICAg
c2hvdWxkQmUoInRyZWVpdGVtMi5oaWVyYXJjaGljYWxMZXZlbCIsICIyIik7CisgICAgICAgICAg
c2hvdWxkQmUoInRyZWVpdGVtMi5kaXNjbG9zZWRCeVJvdygpLmlzRXF1YWwodHJlZWl0ZW0xKSIs
ICJ0cnVlIik7CisgICAgICAgICAgY2FuU2V0RGlzY2xvc2luZyA9IHRyZWVpdGVtMi5pc0F0dHJp
YnV0ZVNldHRhYmxlKCdBWERpc2Nsb3NpbmcnKTsKKyAgICAgICAgICBzaG91bGRCZSgiY2FuU2V0
RGlzY2xvc2luZyIsICJmYWxzZSIpOworCisgICAgICAgICAgdmFyIHRyZWVpdGVtMyA9IHRyZWVp
dGVtMi5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgICAgc2hvdWxkQmUoInRyZWVpdGVtMy5zdHJp
bmdWYWx1ZSIsICInQVhWYWx1ZTogQmlyZHMnIik7CisgICAgICAgICAgY2FuU2V0RGlzY2xvc2lu
ZyA9IHRyZWVpdGVtMy5pc0F0dHJpYnV0ZVNldHRhYmxlKCdBWERpc2Nsb3NpbmcnKTsKKyAgICAg
ICAgICBzaG91bGRCZSgiY2FuU2V0RGlzY2xvc2luZyIsICJmYWxzZSIpOworCisgICAgICAgICAg
Ly8gVGVzdCBtb3JlIEFYUm93IGF0dHJpYnV0ZXMgYW5kIHZhbHVlcyBhcyB3ZSBkaXZlIGZ1cnRo
ZXIgaW4uCisgICAgICAgICAgdHJlZWl0ZW0zID0gdHJlZWl0ZW0xLmRpc2Nsb3NlZFJvd0F0SW5k
ZXgoMSk7CisgICAgICAgICAgc2hvdWxkQmUoInRyZWVpdGVtMy5yb2xlIiwgIidBWFJvbGU6IEFY
Um93JyIpOworICAgICAgICAgIHNob3VsZEJlKCJ0cmVlaXRlbTMuc3Vicm9sZSIsICInQVhTdWJy
b2xlOiBBWE91dGxpbmVSb3cnIik7CisgICAgICAgICAgc2hvdWxkQmUoInRyZWVpdGVtMy5pc0V4
cGFuZGVkIiwgInRydWUiKTsKKyAgCisgICAgICAgICAgLy8gdGVzdCB0aGF0IHRoZSByb3cgY2Fu
IGJlIHNlbGVjdGVkIGNvcnJlY3RseS4KKyAgICAgICAgICBzaG91bGRCZSgidHJlZWl0ZW0zLmlz
U2VsZWN0ZWQiLCAiZmFsc2UiKTsKKyAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dHJlZWl0ZW0zIikuc2V0QXR0cmlidXRlKCJhcmlhLXNlbGVjdGVkIiwgdHJ1ZSk7CisgICAgICAg
ICAgc2hvdWxkQmUoInRyZWVpdGVtMy5pc1NlbGVjdGVkIiwgInRydWUiKTsKKworICAgICAgICAg
IC8vIFRlc3QgdGhhdCB0aGUgdHJlZSByZXBvcnRzIHRoZSByaWdodCBzZWxlY3RlZCByb3cgKHRy
ZWVpdGVtMykKKyAgICAgICAgICB2YXIgc2VsZWN0ZWRSb3cgPSB0cmVlLnNlbGVjdGVkUm93QXRJ
bmRleCgwKTsKKyAgICAgICAgICBzaG91bGRCZSgic2VsZWN0ZWRSb3cuaXNFcXVhbCh0cmVlaXRl
bTMpIiwgInRydWUiKTsgICAgICAgICAgCisgICAgfQorCisgICAgc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NvbnRlbnQtZWRpdGFibGUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L2NvbnRlbnQtZWRpdGFibGUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA1MDc4OCkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2NvbnRlbnQtZWRpdGFi
bGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAogVGV4dAotSXMg
c2V0dGFibGU6IDEKK0lzIHNldHRhYmxlOiB0cnVlCiAKIApJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvcmFkaW8tYnV0dG9uLWdyb3VwLW1lbWJlcnMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmls
aXR5L3JhZGlvLWJ1dHRvbi1ncm91cC1tZW1iZXJzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNTA3
ODgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9yYWRpby1idXR0
b24tZ3JvdXAtbWVtYmVycy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4LDcgKzE4
LDcgQEAgQVhTdGFydFRleHRNYXJrZXI6IDxBWFJhZGlvQnV0dG9uPgogQVhFbmRUZXh0TWFya2Vy
OiA8QVhSYWRpb0J1dHRvbj4KIEFYVmlzaXRlZDogMAogQVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJy
YXkgb2Ygc2l6ZSAzPgotQVhTZWxlY3RlZDogMAorQVhTZWxlY3RlZDogMQogQVhCbG9ja1F1b3Rl
TGV2ZWw6IDAKIEFYVG9wTGV2ZWxVSUVsZW1lbnQ6IDxBWFJhZGlvQnV0dG9uPgogQVhUaXRsZVVJ
RWxlbWVudDogKG51bGwpCkBAIC0xMDAsNyArMTAwLDcgQEAgQVhTdGFydFRleHRNYXJrZXI6IDxB
WFJhZGlvQnV0dG9uPgogQVhFbmRUZXh0TWFya2VyOiA8QVhSYWRpb0J1dHRvbj4KIEFYVmlzaXRl
ZDogMAogQVhMaW5rZWRVSUVsZW1lbnRzOiA8YXJyYXkgb2Ygc2l6ZSAyPgotQVhTZWxlY3RlZDog
MAorQVhTZWxlY3RlZDogMQogQVhCbG9ja1F1b3RlTGV2ZWw6IDAKIEFYVG9wTGV2ZWxVSUVsZW1l
bnQ6IDxBWFJhZGlvQnV0dG9uPgogQVhUaXRsZVVJRWxlbWVudDogKG51bGwpCkBAIC0xNTYsNyAr
MTU2LDcgQEAgQVhTdGFydFRleHRNYXJrZXI6IDxBWFJhZGlvQnV0dG9uOiAnWWVzJwogQVhFbmRU
ZXh0TWFya2VyOiA8QVhSYWRpb0J1dHRvbjogJ1llcyc+CiBBWFZpc2l0ZWQ6IDAKIEFYTGlua2Vk
VUlFbGVtZW50czogPGFycmF5IG9mIHNpemUgMj4KLUFYU2VsZWN0ZWQ6IDAKK0FYU2VsZWN0ZWQ6
IDEKIEFYQmxvY2tRdW90ZUxldmVsOiAwCiBBWFRvcExldmVsVUlFbGVtZW50OiA8QVhSYWRpb0J1
dHRvbjogJ1llcyc+CiBBWFRpdGxlVUlFbGVtZW50OiAobnVsbCkKQEAgLTIxMiw3ICsyMTIsNyBA
QCBBWFN0YXJ0VGV4dE1hcmtlcjogPEFYUmFkaW9CdXR0b24+CiBBWEVuZFRleHRNYXJrZXI6IDxB
WFJhZGlvQnV0dG9uPgogQVhWaXNpdGVkOiAwCiBBWExpbmtlZFVJRWxlbWVudHM6IDxhcnJheSBv
ZiBzaXplIDE+Ci1BWFNlbGVjdGVkOiAwCitBWFNlbGVjdGVkOiAxCiBBWEJsb2NrUXVvdGVMZXZl
bDogMAogQVhUb3BMZXZlbFVJRWxlbWVudDogPEFYUmFkaW9CdXR0b24+CiBBWFRpdGxlVUlFbGVt
ZW50OiAobnVsbCkK
</data>
<flag name="review"
          id="24554"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>