<?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>116353</bug_id>
          
          <creation_ts>2013-05-17 14:35:45 -0700</creation_ts>
          <short_desc>CheckArrays should be hoisted</short_desc>
          <delta_ts>2013-05-19 17:50:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>890674</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-05-17 14:35:45 -0700</bug_when>
    <thetext>This should make flat arrays possible without a regression, since flat arrays can cause many CheckStructures to become CheckArrays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>890687</commentid>
    <comment_count>1</comment_count>
      <attachid>202161</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-05-17 14:54:18 -0700</bug_when>
    <thetext>Created attachment 202161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>891091</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-05-19 17:50:16 -0700</bug_when>
    <thetext>Committed r150359: &lt;http://trac.webkit.org/changeset/150359&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202161</attachid>
            <date>2013-05-17 14:54:18 -0700</date>
            <delta_ts>2013-05-17 15:12:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116353-20130517145417.patch</filename>
            <type>text/plain</type>
            <size>49621</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwMjk5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk0IEBA
CisyMDEzLTA1LTE3ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQ2hlY2tBcnJheXMgc2hvdWxkIGJlIGhvaXN0ZWQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjM1MworCisgICAgICAgIFBlcmZvcm1h
bmNlIG5ldXRyYWwuIFRoaXMgd2lsbCBiZSBtb3JlIGltcG9ydGFudCB3aGVuIHdlIHN0YXJ0IGRl
cGVuZGluZyBvbiBDaGVja0FycmF5IGZvciBmbGF0IGFycmF5cy4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNw
cDogQWRkIEZvcndhcmRDaGVja0FycmF5IHRvIHdoZXJldmVyIHdlIGhhZCBhIENoZWNrQXJyYXkg
YmVmb3JlLgorICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZTo6cnVuKToKKyAg
ICAgICAgKiBkZmcvREZHQXJyYXlNb2RlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QXJyYXlNb2Rl
Ojppc0NvbnRyYXZlbmVkQnlTdHJ1Y3R1cmUpOiBDaGVja3MgaWYgdGhlIEFycmF5TW9kZSBkZXJp
dmVkIGZyb20gYSBzcGVjaWZpYyBTdHJ1Y3R1cmUgCisgICAgICAgIHdvdWxkIGNvbnRyYWRpY3Qg
dGhlIEFycmF5TW9kZXMgdGhhdCB3b3VsZCBiZSBmaWx0ZXJlZCBieSB0aGUgY3VycmVudCBBcnJh
eU1vZGUuIFRoaXMgaXMgdXNlZCB0byBkZXRlY3QKKyAgICAgICAgaWYgYW55IHNwZWNpZmljIENo
ZWNrU3RydWN0dXJlcyB3b3VsZCBjb250cmFkaWN0IG91ciBDaGVja0FycmF5IHNvIHRoYXQgd2Ug
Y2FuIGRlZmVyIHRvIHRoZSBDaGVja1N0cnVjdHVyZSdzCisgICAgICAgIGp1ZGdtZW50LgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6IEZpbGwgaW4gY2hlY2tBcnJheUhvaXN0
aW5nRmFpbGVkIHdoZXJlIHdlIHByZXZpb3VzbHkgZXhpdGVkIGR1ZSB0byBhIEJhZEluZGV4aW5n
VHlwZS4KKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6c2V0TG9jYWwpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpzZXRBcmd1bWVudCk6CisgICAgICAgIChK
U0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdD
U0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmNoZWNrQXJyYXlFbGlt
aW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2RlQ1NFKToK
KyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAgKiBk
ZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6Zml4
dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5v
ZGU6Omhhc0FycmF5TW9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6IE5ldyBGb3J3
YXJkQ2hlY2tBcnJheSBub2RlIHR5cGUuCisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1R5cGVDaGVja0hvaXN0
aW5nUGhhc2UuY3BwOiBSZWZhY3RvcmVkIG1vc3Qgb2YgVHlwZUNoZWNrSG9pc3RpbmdQaGFzZSBp
bnRvIHNlcGFyYXRlIGZ1bmN0aW9ucywgc29tZSAKKyAgICAgICAgb2Ygd2hpY2ggYXJlIG5vdyBn
ZW5lcmljIHRvIGJvdGggQ2hlY2tTdHJ1Y3R1cmUgYW5kIENoZWNrQXJyYXkgaG9pc3Rpbmcgd2hp
bGUgb3RoZXJzIGFyZSBzcGVjaWZpYyB0byBvbmUgb3IgdGhlCisgICAgICAgIG90aGVyLiBCb3Ro
IG9mIHRoZSBub24temVybyBDaGVja0JhbGxvdCB2YWx1ZXMgbXVzdCBiZSAxIGJlY2F1c2Ugd2Ug
dXNlIHRoZW0gYXMgYW4gaW5kZXggaW50byBhbiBhcnJheSBvZiAKKyAgICAgICAgbGVuZ3RoIDIg
aW5zaWRlIHRoZSBWYXJpYWJsZUFjY2Vzc0RhdGEuCisgICAgICAgIChDaGVja0RhdGEpOiBNb3Zl
ZCBzdHJ1Y3R1cmUgb3V0c2lkZSBvZiBUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlIHNvIHRoYXQgQXJy
YXlUeXBlQ2hlY2sgYW5kIFN0cnVjdHVyZVR5cGVDaGVjaworICAgICAgICBjYW4gYWNjZXNzIGl0
LiBBbHNvIGFkZGVkIG5ldyBmaWVsZHMgZm9yIHRyYWNraW5nIEFycmF5TW9kZXMuIFdlIG5lZWQg
dGhlIG1fYXJyYXlNb2RlSXNWYWxpZCBiZWNhdXNlIHRoZXJlIAorICAgICAgICBpc24ndCBhIGdv
b2Qgc2VudGluZWwgdmFsdWUgZm9yICJ0aGlzIEFycmF5TW9kZSBpcyBpbnZhbGlkIGFuZCBtZWFu
aW5nbGVzcyIgbGlrZSB0aGVyZSBpcyBmb3IgbV9zdHJ1Y3R1cmUuCisgICAgICAgIFdlIG5lZWQg
bV9hcnJheU1vZGVIb2lzdGluZ09rYXkgZm9yIHdoZW4gd2Ugd2FudCB0byBwZXJtYW5lbnRseSBk
aXNhYmxlIGhvaXN0aW5nIGZvciB0aGF0IHBhcnRpY3VsYXIgdmFyaWFibGUuCisgICAgICAgIChK
U0M6OkRGRzo6Q2hlY2tEYXRhOjpDaGVja0RhdGEpOgorICAgICAgICAoSlNDOjpERkc6OkNoZWNr
RGF0YTo6ZGlzYWJsZUNoZWNrQXJyYXlIb2lzdGluZyk6IEhlbHBlciBmdW5jdGlvbiBmb3IgZGlz
YWJsaW5nIENoZWNrQXJyYXkgaG9pc3RpbmcgZm9yIGEgCisgICAgICAgIHNwZWNpZmljIENoZWNr
RGF0YS4KKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjpydW4pOiBX
ZSBub3cgZG8gYm90aCBDaGVja1N0cnVjdHVyZSBhbmQgQ2hlY2tBcnJheSBob2lzdGluZywgYWx0
aG91Z2ggd2UgcHJlZmVyCisgICAgICAgIENoZWNrU3RydWN0dXJlIGhvaXN0aW5nIHdoZW4gZ2l2
ZW4gdGhlIHBvc3NpYmlsaXR5IHRvIGRvIGJvdGguCisgICAgICAgIChUeXBlQ2hlY2tIb2lzdGlu
Z1BoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjpjbGVh
clZhcmlhYmxlVm90ZXMpOiBDbGVhcnMgYWxsIG9mIHRoZSBWYXJpYWJsZUFjY2Vzc0RhdGEgdm90
ZXMgc2luY2UgdGhleSAKKyAgICAgICAgY2FuIG9ubHkgaGF2ZSB0d28gdHlwZXMgb2Ygdm90ZXMg
YXQgYW55IHBhcnRpY3VsYXIgdGltZS4KKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lz
dGluZ1BoYXNlOjppZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcyk6CisgICAgICAgIChK
U0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6aWRlbnRpZnlSZWR1bmRhbnRBcnJheUNo
ZWNrcyk6IFZlcnkgc2ltaWxhciB0byBpZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcywK
KyAgICAgICAgYnV0IHdpdGggYSBmZXcgZGlmZmVyZW50IG5vZGVzIHRoYXQgYXJlIGltcG9ydGFu
dCwgbmFtZWx5IENoZWNrQXJyYXkgKGluc3RlYWQgb2YgQ2hlY2tTdHJ1Y3R1cmUpIGFuZCB0aGUg
QXJyYXlpZnktbGlrZQorICAgICAgICBub2RlcyBhbHdheXMgZGlzYWJsZSBob2lzdGluZyBzaW5j
ZSB0aGV5IGFsd2F5cyBjaGFuZ2UgdGhlIEluZGV4aW5nVHlwZS4gCisgICAgICAgIChKU0M6OkRG
Rzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6ZGlzYWJsZUhvaXN0aW5nRm9yVmFyaWFibGVzV2l0
aEluc3VmZmljaWVudFZvdGVzKToKKyAgICAgICAgKEpTQzo6REZHOjpUeXBlQ2hlY2tIb2lzdGlu
Z1BoYXNlOjpkaXNhYmxlSG9pc3RpbmdBY3Jvc3NPU1JFbnRyaWVzKToKKyAgICAgICAgKEpTQzo6
REZHOjpUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlOjpkaXNhYmxlQ2hlY2tBcnJheUhvaXN0aW5nKTog
SGVscGVyIHRoYXQgbG9va3MgdXAgdGhlIENoZWNrRGF0YSBmb3IgdGhlIAorICAgICAgICBzcGVj
aWZpZWQgdmFyaWFibGUgYW5kIGRpc2FibGVzIENoZWNrQXJyYXkgaG9pc3Rpbmcgb24gaXQuCisg
ICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6c2hvdWxkQ29uc2lkZXJG
b3JIb2lzdGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6VHlwZUNoZWNrSG9pc3RpbmdQaGFzZTo6
bm90aWNlU3RydWN0dXJlQ2hlY2spOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVja0hvaXN0
aW5nUGhhc2U6Om5vdGljZUNoZWNrQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6OlR5cGVDaGVj
a0hvaXN0aW5nUGhhc2U6Om5vdGljZVN0cnVjdHVyZUNoZWNrQWNjb3VudGluZ0ZvckFycmF5TW9k
ZSk6IFdlIHdhbnQgdG8gdGFrZSBDaGVja1N0cnVjdHVyZSBub2RlcworICAgICAgICBpbnRvIGFj
Y291bnQgd2hlbiBob2lzdGluZyBDaGVja0FycmF5cywgc28gd2UgbWFrZSBzdXJlIHRoYXQgaWYg
d2UgY29udHJhZGljdCB3aGF0IGEgQ2hlY2tTdHJ1Y3R1cmUgc2F5cyB0aGVuIHdlIAorICAgICAg
ICBnaXZlIHVwIG9uIGhvaXN0aW5nIHRoZSBDaGVja0FycmF5LgorICAgICAgICAoSlNDOjpERkc6
OkFycmF5VHlwZUNoZWNrOjppc1ZhbGlkVG9Ib2lzdCk6CisgICAgICAgIChBcnJheVR5cGVDaGVj
ayk6IFN0cnVjdHVyZSB0aGF0IGhvdXNlcyBzb21lIG9mIHRoZSBzcGVjaWZpY3Mgb24gaG93IHRv
IGhvaXN0IENoZWNrQXJyYXlzLiBUaGlzIHN0cnVjdHVyZQorICAgICAgICBpcyB1c2VkIGEgdGVt
cGxhdGUgYXJndW1lbnQgdG8gYWxsb3cgc29tZSBvZiB0aGUgdmVyeSBzaW1pbGFyIGNvZGUgdG8g
c3RhdGljYWxseSBwYXJhbWV0ZXJpemVkIGFuZCByZXVzZWQKKyAgICAgICAgZm9yIGJvdGggQ2hl
Y2tTdHJ1Y3R1cmUgYW5kIENoZWNrQXJyYXkgaG9pc3RpbmcuCisgICAgICAgIChKU0M6OkRGRzo6
QXJyYXlUeXBlQ2hlY2s6OmRpc2FibGVIb2lzdGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6QXJy
YXlUeXBlQ2hlY2s6OmlzQ29udHJhdmVuZWRCeVZhbHVlKToKKyAgICAgICAgKEpTQzo6REZHOjpB
cnJheVR5cGVDaGVjazo6aGFzRW5vdWdoVm90ZXNUb0hvaXN0KToKKyAgICAgICAgKEpTQzo6REZH
OjpBcnJheVR5cGVDaGVjazo6aG9pc3RpbmdQcmV2aW91c2x5RmFpbGVkKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTdHJ1Y3R1cmVUeXBlQ2hlY2s6OmlzVmFsaWRUb0hvaXN0KToKKyAgICAgICAgKFN0
cnVjdHVyZVR5cGVDaGVjayk6IFNhbWUgYXMgQXJyYXlUeXBlQ2hlY2ssIGJ1dCBzcGVjaWZpYyB0
byBDaGVja1N0cnVjdHVyZSBob2lzdGluZy4KKyAgICAgICAgKEpTQzo6REZHOjpTdHJ1Y3R1cmVU
eXBlQ2hlY2s6OmRpc2FibGVIb2lzdGluZyk6CisgICAgICAgIChKU0M6OkRGRzo6U3RydWN0dXJl
VHlwZUNoZWNrOjppc0NvbnRyYXZlbmVkQnlWYWx1ZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3Ry
dWN0dXJlVHlwZUNoZWNrOjpoYXNFbm91Z2hWb3Rlc1RvSG9pc3QpOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZVR5cGVDaGVjazo6aG9pc3RpbmdQcmV2aW91c2x5RmFpbGVkKToKKyAgICAg
ICAgKiBkZmcvREZHVW5pZmljYXRpb25QaGFzZS5jcHA6IEFkZGVkIG1lcmdpbmcgb2Ygd2hldGhl
ciBvciBub3QgQ2hlY2tBcnJheSBob2lzdGluZyBmYWlsZWQuCisgICAgICAgIChKU0M6OkRGRzo6
VW5pZmljYXRpb25QaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHVmFyaWFibGVBY2Nlc3NE
YXRhLmg6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjpWYXJpYWJsZUFj
Y2Vzc0RhdGEpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6bWVyZ2VD
aGVja0FycmF5SG9pc3RpbmdGYWlsZWQpOgorICAgICAgICAoVmFyaWFibGVBY2Nlc3NEYXRhKToK
KyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6OmNoZWNrQXJyYXlIb2lzdGlu
Z0ZhaWxlZCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6CisKIDIwMTMtMDUtMTYgIE1h
cmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBvYnNlcnZl
VXNlS2luZE9uTm9kZSBkb2Vzbid0IGNvbnRhaW4gYSBjYXNlIGZvciBLbm93bkNlbGxVc2UKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAko
cmV2aXNpb24gMTUwMjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2MCw2ICsxMzYwLDcgQEAgYm9vbCBBYnN0
cmFjdFN0YXRlOjpleGVjdXRlRWZmZWN0cyh1bnNpZwogICAgIGNhc2UgUmVhbGxvY2F0ZVByb3Bl
cnR5U3RvcmFnZToKICAgICAgICAgZm9yTm9kZShub2RlKS5jbGVhcigpOyAvLyBUaGUgcmVzdWx0
IGlzIG5vdCBhIEpTIHZhbHVlLgogICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvcndhcmRDaGVj
a0FycmF5OgogICAgIGNhc2UgQ2hlY2tBcnJheTogewogICAgICAgICBpZiAobm9kZS0+YXJyYXlN
b2RlKCkuYWxyZWFkeUNoZWNrZWQobV9ncmFwaCwgbm9kZSwgZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkpKSB7CiAgICAgICAgICAgICBtX2ZvdW5kQ29uc3RhbnRzID0gdHJ1ZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1w
bGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMTUwMjYwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMyLDYgKzMzMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBjYXNlIFN0
cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgogICAgICAgICAgICAgICAgIGNhc2UgRm9yd2Fy
ZFN0cnVjdHVyZVRyYW5zaXRpb25XYXRjaHBvaW50OgogICAgICAgICAgICAgICAgIGNhc2UgQ2hl
Y2tBcnJheToKKyAgICAgICAgICAgICAgICBjYXNlIEZvcndhcmRDaGVja0FycmF5OgogICAgICAg
ICAgICAgICAgICAgICAvLyBXZSBkb24ndCBjYXJlIGFib3V0IHRoZXNlIGJlY2F1c2UgaWYgd2Ug
Z2V0IHVzZXMgb2YgdGhlIHJlbGV2YW50CiAgICAgICAgICAgICAgICAgICAgIC8vIHZhcmlhYmxl
IHRoZW4gd2UgY2FuIHNhZmVseSBnZXQgcmlkIG9mIHRoZXNlLCB0b28uIFRoaXMgb2YgY291cnNl
CiAgICAgICAgICAgICAgICAgICAgIC8vIHJlbGllcyBvbiB0aGVyZSBub3QgYmVpbmcgYW55IGlu
Zm9ybWF0aW9uIHRyYW5zZmVycmVkIGJ5IHRoZSBDRkEKQEAgLTUyMCw3ICs1MjEsOCBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgY2FzZSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmU6CiAgICAgICAg
ICAgICAgICAgY2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKICAgICAgICAgICAg
ICAgICBjYXNlIEZvcndhcmRTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKLSAgICAgICAg
ICAgICAgICBjYXNlIENoZWNrQXJyYXk6IHsKKyAgICAgICAgICAgICAgICBjYXNlIENoZWNrQXJy
YXk6CisgICAgICAgICAgICAgICAgY2FzZSBGb3J3YXJkQ2hlY2tBcnJheTogewogICAgICAgICAg
ICAgICAgICAgICAvLyBXZSBjYW4ganVzdCBnZXQgcmlkIG9mIHRoaXMgbm9kZSwgaWYgaXQgcmVm
ZXJlbmNlcyBhIHBoYW50b20gYXJndW1lbnQuCiAgICAgICAgICAgICAgICAgICAgIGlmICghaXNP
S1RvT3B0aW1pemUobm9kZS0+Y2hpbGQxKCkubm9kZSgpKSkKICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5o
CShyZXZpc2lvbiAxNTAyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5
TW9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNjIsNiArMzYyLDExIEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIHJldHVybiBjb252ZXJzaW9uKCkgIT0gQXJyYXk6OkFzSXM7CiAgICAgfQorCisg
ICAgYm9vbCBpc0NvbnRyYXZlbmVkQnlTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgeworICAgICAgICByZXR1cm4gIWFycmF5TW9kZXNBbHJlYWR5Q2hlY2tlZChhcnJheU1vZGVz
VGhhdFBhc3NGaWx0ZXJpbmcoKSwgYXJyYXlNb2RlRnJvbVN0cnVjdHVyZShzdHJ1Y3R1cmUpKTsK
KyAgICB9CiAgICAgCiAgICAgQXJyYXlNb2RlcyBhcnJheU1vZGVzVGhhdFBhc3NGaWx0ZXJpbmco
KSBjb25zdAogICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxNTAyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMwLDYg
KzMzMCw4IEBAIHByaXZhdGU6CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVB
Y2Nlc3NEYXRhID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9wZXJhbmQsIGlzQ2FwdHVyZWQpOwog
ICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0Zh
aWxlZCgKICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgICAgIHZhcmlhYmxlQWNjZXNz
RGF0YS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRJ
bmRleGluZ1R5cGUpKTsKICAgICAgICAgTm9kZSogbm9kZSA9IGFkZFRvR3JhcGgoU2V0TG9jYWws
IE9wSW5mbyh2YXJpYWJsZUFjY2Vzc0RhdGEpLCB2YWx1ZSk7CiAgICAgICAgIG1fY3VycmVudEJs
b2NrLT52YXJpYWJsZXNBdFRhaWwubG9jYWwob3BlcmFuZCkgPSBub2RlOwogICAgIH0KQEAgLTM4
Myw2ICszODUsOCBAQCBwcml2YXRlOgogICAgICAgICAKICAgICAgICAgdmFyaWFibGVBY2Nlc3NE
YXRhLT5tZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoCiAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBC
YWRDYWNoZSkpOworICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPm1lcmdlQ2hlY2tBcnJheUhv
aXN0aW5nRmFpbGVkKAorICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CiAgICAgICAg
IE5vZGUqIG5vZGUgPSBhZGRUb0dyYXBoKFNldExvY2FsLCBPcEluZm8odmFyaWFibGVBY2Nlc3NE
YXRhKSwgdmFsdWUpOwogICAgICAgICBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLmFy
Z3VtZW50KGFyZ3VtZW50KSA9IG5vZGU7CiAgICAgfQpAQCAtMTk2Nyw2ICsxOTcxLDggQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIGFy
Z3VtZW50VG9PcGVyYW5kKGFyZ3VtZW50KSwgbV9jb2RlQmxvY2stPmlzQ2FwdHVyZWQoYXJndW1l
bnRUb09wZXJhbmQoYXJndW1lbnQpKSk7CiAgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VTdHJ1
Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7
CisgICAgICAgICAgICB2YXJpYWJsZS0+bWVyZ2VDaGVja0FycmF5SG9pc3RpbmdGYWlsZWQoCisg
ICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0
ZShtX2N1cnJlbnRJbmRleCwgQmFkSW5kZXhpbmdUeXBlKSk7CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIE5vZGUqIHNldEFyZ3VtZW50ID0gYWRkVG9HcmFwaChTZXRBcmd1bWVudCwgT3BJbmZv
KHZhcmlhYmxlKSk7CiAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSA9
IHNldEFyZ3VtZW50OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFz
ZS5jcHAJKHJldmlzaW9uIDE1MDI2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTIsNiArNzUyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNh
c2UgQ2hlY2tBcnJheToKKyAgICAgICAgICAgIGNhc2UgRm9yd2FyZENoZWNrQXJyYXk6CiAgICAg
ICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpID09IGNoaWxkMSAmJiBub2RlLT5hcnJheU1v
ZGUoKSA9PSBhcnJheU1vZGUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTMxOCw2ICsxMzE5LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICBjYXNlIENoZWNrQXJyYXk6
CisgICAgICAgIGNhc2UgRm9yd2FyZENoZWNrQXJyYXk6CiAgICAgICAgICAgICBpZiAoY3NlTW9k
ZSA9PSBTdG9yZUVsaW1pbmF0aW9uKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgaWYgKGNoZWNrQXJyYXlFbGltaW5hdGlvbihub2RlLT5jaGlsZDEoKS5ub2RlKCksIG5vZGUt
PmFycmF5TW9kZSgpKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNTAyNjApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIxLDYgKzEyMSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIENoZWNrQXJyYXk6CisgICAgICAgICAgICBj
YXNlIEZvcndhcmRDaGVja0FycmF5OgogICAgICAgICAgICAgY2FzZSBBcnJheWlmeTogewogICAg
ICAgICAgICAgICAgIGlmICghbm9kZS0+YXJyYXlNb2RlKCkuYWxyZWFkeUNoZWNrZWQobV9ncmFw
aCwgbm9kZSwgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKSkpCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCShyZXZpc2lvbiAxNTAyNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03ODQsNyArNzg0LDggQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAg
ICAgY2FzZSBDaGVja0FycmF5OiB7CisgICAgICAgIGNhc2UgQ2hlY2tBcnJheToKKyAgICAgICAg
Y2FzZSBGb3J3YXJkQ2hlY2tBcnJheTogewogICAgICAgICAgICAgc3dpdGNoIChub2RlLT5hcnJh
eU1vZGUoKS50eXBlKCkpIHsKICAgICAgICAgICAgIGNhc2UgQXJyYXk6OlN0cmluZzoKICAgICAg
ICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8U3RyaW5nVXNlPihub2Rl
LT5jaGlsZDEoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNp
b24gMTUwMjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkxOSw2ICs5MTksNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2Ug
U3RyaW5nQ2hhckF0OgogICAgICAgICBjYXNlIFN0cmluZ0NoYXJDb2RlQXQ6CiAgICAgICAgIGNh
c2UgQ2hlY2tBcnJheToKKyAgICAgICAgY2FzZSBGb3J3YXJkQ2hlY2tBcnJheToKICAgICAgICAg
Y2FzZSBBcnJheWlmeToKICAgICAgICAgY2FzZSBBcnJheWlmeVRvU3RydWN0dXJlOgogICAgICAg
ICBjYXNlIEFycmF5UHVzaDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVU
eXBlLmgJKHJldmlzaW9uIDE1MDI2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDYgKzE0OSw3IEBAIG5hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdl
LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZURvZXNOb3RFeGl0IHwgTm9kZVJlc3VsdFN0b3JhZ2Up
IFwKICAgICBtYWNybyhHZXRCdXR0ZXJmbHksIE5vZGVSZXN1bHRTdG9yYWdlKSBcCiAgICAgbWFj
cm8oQ2hlY2tBcnJheSwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKEZvcndhcmRDaGVj
a0FycmF5LCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUV4aXRzRm9yd2FyZCkgXAogICAgIG1hY3Jv
KEFycmF5aWZ5LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQXJyYXlpZnlUb1N0cnVj
dHVyZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldEluZGV4ZWRQcm9wZXJ0eVN0
b3JhZ2UsIE5vZGVSZXN1bHRTdG9yYWdlKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAko
cmV2aXNpb24gMTUwMjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2OCw2ICs0NjgsNyBA
QCBwcml2YXRlOgogICAgICAgICBjYXNlIFBoYW50b21QdXRTdHJ1Y3R1cmU6CiAgICAgICAgIGNh
c2UgUGhhbnRvbUFyZ3VtZW50czoKICAgICAgICAgY2FzZSBDaGVja0FycmF5OgorICAgICAgICBj
YXNlIEZvcndhcmRDaGVja0FycmF5OgogICAgICAgICBjYXNlIEFycmF5aWZ5OgogICAgICAgICBj
YXNlIEFycmF5aWZ5VG9TdHJ1Y3R1cmU6CiAgICAgICAgIGNhc2UgSWRlbnRpdHk6CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAJKHJldmlzaW9uIDE1MDI2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTQsNiArMjQ1NCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIEZvcndhcmRDaGVja0FycmF5OgogICAgIGNh
c2UgQ2hlY2tBcnJheTogewogICAgICAgICBjaGVja0FycmF5KG5vZGUpOwogICAgICAgICBicmVh
azsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAkocmV2aXNpb24gMTUwMjYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM4NCw2ICsyMzg0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgRm9yd2FyZENoZWNrQXJyYXk6CiAgICAg
Y2FzZSBDaGVja0FycmF5OiB7CiAgICAgICAgIGNoZWNrQXJyYXkobm9kZSk7CiAgICAgICAgIGJy
ZWFrOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGlu
Z1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNTAyNjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw4ICszOCw0NiBAQAogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7
CiAKLWVudW0gQ2hlY2tCYWxsb3QgeyBWb3RlT3RoZXIsIFZvdGVTdHJ1Y3R1cmVDaGVjayB9Owor
ZW51bSBDaGVja0JhbGxvdCB7IFZvdGVPdGhlciwgVm90ZVN0cnVjdHVyZUNoZWNrID0gMSwgVm90
ZUNoZWNrQXJyYXkgPSAxIH07CiAKK3N0cnVjdCBBcnJheVR5cGVDaGVjazsKK3N0cnVjdCBTdHJ1
Y3R1cmVUeXBlQ2hlY2s7CisKK3N0cnVjdCBDaGVja0RhdGEgeworICAgIFN0cnVjdHVyZSogbV9z
dHJ1Y3R1cmU7CisgICAgQXJyYXlNb2RlIG1fYXJyYXlNb2RlOworICAgIGJvb2wgbV9hcnJheU1v
ZGVJc1ZhbGlkOworICAgIGJvb2wgbV9hcnJheU1vZGVIb2lzdGluZ09rYXk7CisgICAgCisgICAg
Q2hlY2tEYXRhKCkKKyAgICAgICAgOiBtX3N0cnVjdHVyZSgwKQorICAgICAgICAsIG1fYXJyYXlN
b2RlSXNWYWxpZChmYWxzZSkKKyAgICAgICAgLCBtX2FycmF5TW9kZUhvaXN0aW5nT2theShmYWxz
ZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIENoZWNrRGF0YShTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKKyAgICAgICAgOiBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCisgICAgICAgICwgbV9hcnJheU1v
ZGVJc1ZhbGlkKGZhbHNlKQorICAgICAgICAsIG1fYXJyYXlNb2RlSG9pc3RpbmdPa2F5KHRydWUp
CisgICAgeworICAgIH0KKworICAgIENoZWNrRGF0YShBcnJheU1vZGUgYXJyYXlNb2RlKQorICAg
ICAgICA6IG1fc3RydWN0dXJlKDApCisgICAgICAgICwgbV9hcnJheU1vZGUoYXJyYXlNb2RlKQor
ICAgICAgICAsIG1fYXJyYXlNb2RlSXNWYWxpZCh0cnVlKQorICAgICAgICAsIG1fYXJyYXlNb2Rl
SG9pc3RpbmdPa2F5KHRydWUpCisgICAgeworICAgIH0KKworICAgIHZvaWQgZGlzYWJsZUNoZWNr
QXJyYXlIb2lzdGluZygpCisgICAgeworICAgICAgICBtX2FycmF5TW9kZUlzVmFsaWQgPSBmYWxz
ZTsKKyAgICAgICAgbV9hcnJheU1vZGVIb2lzdGluZ09rYXkgPSBmYWxzZTsKKyAgICB9Cit9Owor
ICAgIAogY2xhc3MgVHlwZUNoZWNrSG9pc3RpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiBwdWJs
aWM6CiAgICAgVHlwZUNoZWNrSG9pc3RpbmdQaGFzZShHcmFwaCYgZ3JhcGgpCkBAIC01MCwxNyAr
ODgsMTM1IEBAIHB1YmxpYzoKICAgICBib29sIHJ1bigpCiAgICAgewogICAgICAgICBBU1NFUlQo
bV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpOworCisgICAgICAgIGNsZWFyVmFyaWFibGVW
b3RlcygpOworICAgICAgICBpZGVudGlmeVJlZHVuZGFudFN0cnVjdHVyZUNoZWNrcygpOworICAg
ICAgICBkaXNhYmxlSG9pc3RpbmdGb3JWYXJpYWJsZXNXaXRoSW5zdWZmaWNpZW50Vm90ZXM8U3Ry
dWN0dXJlVHlwZUNoZWNrPigpOworCisgICAgICAgIGNsZWFyVmFyaWFibGVWb3RlcygpOworICAg
ICAgICBpZGVudGlmeVJlZHVuZGFudEFycmF5Q2hlY2tzKCk7CisgICAgICAgIGRpc2FibGVIb2lz
dGluZ0ZvclZhcmlhYmxlc1dpdGhJbnN1ZmZpY2llbnRWb3RlczxBcnJheVR5cGVDaGVjaz4oKTsK
KworICAgICAgICBkaXNhYmxlSG9pc3RpbmdBY3Jvc3NPU1JFbnRyaWVzPFN0cnVjdHVyZVR5cGVD
aGVjaz4oKTsKKyAgICAgICAgZGlzYWJsZUhvaXN0aW5nQWNyb3NzT1NSRW50cmllczxBcnJheVR5
cGVDaGVjaz4oKTsKKworICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKworICAgICAgICAv
LyBQbGFjZSBDaGVja1N0cnVjdHVyZSdzIGF0IFNldExvY2FsIHNpdGVzLgorICAgICAgICBJbnNl
cnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOworICAgICAgICBmb3IgKEJsb2NrSW5kZXgg
YmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKyti
bG9ja0luZGV4KSB7CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgubV9i
bG9ja3NbYmxvY2tJbmRleF0uZ2V0KCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxv
Y2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgewor
ICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKKyAg
ICAgICAgICAgICAgICAvLyBCZSBjYXJlZnVsIG5vdCB0byB1c2UgJ25vZGUnIGFmdGVyIGFwcGVu
ZGluZyB0byB0aGUgZ3JhcGguIEluIHRob3NlIHN3aXRjaAorICAgICAgICAgICAgICAgIC8vIGNh
c2VzIHdoZXJlIHdlIG5lZWQgdG8gYXBwZW5kLCB3ZSBmaXJzdCBjYXJlZnVsbHkgZXh0cmFjdCBl
dmVyeXRoaW5nIHdlIG5lZWQKKyAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBub2RlLCBiZWZv
cmUgZG9pbmcgYW55IGFwcGVuZGluZy4KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPm9w
KCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFNldEFyZ3VtZW50OiB7CisgICAgICAgICAgICAg
ICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEluc2Vy
dCBhIEdldExvY2FsIGFuZCBhIENoZWNrU3RydWN0dXJlIGltbWVkaWF0ZWx5IGZvbGxvd2luZyB0
aGlzCisgICAgICAgICAgICAgICAgICAgIC8vIFNldEFyZ3VtZW50LCBpZiB0aGUgdmFyaWFibGUg
d2FzIGEgY2FuZGlkYXRlIGZvciBzdHJ1Y3R1cmUgaG9pc3RpbmcuCisgICAgICAgICAgICAgICAg
ICAgIC8vIElmIHRoZSBiYXNpYyBibG9jayBwcmV2aW91c2x5IG9ubHkgaGFkIHRoZSBTZXRBcmd1
bWVudCBhcyBpdHMKKyAgICAgICAgICAgICAgICAgICAgLy8gdmFyaWFibGUtYXQtdGFpbCwgdGhl
biByZXBsYWNlIGl0IHdpdGggdGhpcyBHZXRMb2NhbC4KKyAgICAgICAgICAgICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwor
ICAgICAgICAgICAgICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSosIENoZWNrRGF0
YT46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHZhcmlhYmxlKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSAm
JiAhaXRlci0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKQorICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0g
bm9kZS0+Y29kZU9yaWdpbjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGdldExvY2FsID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBH
ZXRMb2NhbCwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyh2YXJp
YWJsZSksIEVkZ2Uobm9kZSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXRlci0+dmFsdWUu
bV9zdHJ1Y3R1cmUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNl
cnROb2RlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIFNw
ZWNOb25lLCBDaGVja1N0cnVjdHVyZSwgY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQoaXRlci0+dmFsdWUubV9zdHJ1
Y3R1cmUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKGdldExvY2FsLCBDZWxs
VXNlKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlci0+dmFsdWUubV9hcnJh
eU1vZGVJc1ZhbGlkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaXRlci0+dmFs
dWUubV9hcnJheU1vZGVIb2lzdGluZ09rYXkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5z
ZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJ
bkJsb2NrICsgMSwgU3BlY05vbmUsIENoZWNrQXJyYXksIGNvZGVPcmlnaW4sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgT3BJbmZvKGl0ZXItPnZhbHVlLm1fYXJyYXlNb2RlLmFzV29yZCgp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGdlKGdldExvY2FsLCBDZWxsVXNlKSk7
CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoYmxv
Y2stPnZhcmlhYmxlc0F0VGFpbC5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpKSA9PSBub2RlKQor
ICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2stPnZhcmlhYmxlc0F0VGFpbC5vcGVyYW5kKHZh
cmlhYmxlLT5sb2NhbCgpKSA9IGdldExvY2FsOworICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5zdWJzdGl0dXRlR2V0TG9jYWwoKmJsb2NrLCBpbmRleElu
QmxvY2ssIHZhcmlhYmxlLCBnZXRMb2NhbCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICBjYXNlIFNldExvY2FsOiB7CisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0
YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgICAg
ICAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjppdGVyYXRvciBp
dGVyID0gbV9tYXAuZmluZCh2YXJpYWJsZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpdGVy
ID09IG1fbWFwLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUgJiYgIWl0ZXItPnZhbHVl
Lm1fYXJyYXlNb2RlSXNWYWxpZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgICAgICAgICAgICAgIC8vIEZpcnN0IGluc2VydCBhIGRlYWQgU2V0TG9jYWwgdG8gdGVs
bCBPU1IgdGhhdCB0aGUgY2hpbGQncyB2YWx1ZSBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAg
Ly8gYmUgZHJvcHBlZCBpbnRvIHRoaXMgYnl0ZWNvZGUgdmFyaWFibGUgaWYgdGhlIENoZWNrU3Ry
dWN0dXJlIGRlY2lkZXMKKyAgICAgICAgICAgICAgICAgICAgLy8gdG8gZXhpdC4KKyAgICAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9
IG5vZGUtPmNvZGVPcmlnaW47CisgICAgICAgICAgICAgICAgICAgIEVkZ2UgY2hpbGQxID0gbm9k
ZS0+Y2hpbGQxKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBp
bnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5C
bG9jaywgU3BlY05vbmUsIFNldExvY2FsLCBjb2RlT3JpZ2luLCBPcEluZm8odmFyaWFibGUpLCBj
aGlsZDEpOworCisgICAgICAgICAgICAgICAgICAgIC8vIFVzZSBhIEZvcndhcmRDaGVja1N0cnVj
dHVyZSBvciBGb3J3YXJkQ2hlY2tBcnJheSB0byBpbmRpY2F0ZSB0aGF0IHdlIHNob3VsZCBleGl0
IHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGJ5dGVjb2RlIGluc3RydWN0aW9u
IHJhdGhlciB0aGFuIHJlZXhlY3V0aW5nIHRoZSBjdXJyZW50IG9uZS4KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGl0ZXItPnZhbHVlLm1fc3RydWN0dXJlKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleEluQmxvY2ssIFNwZWNOb25lLCBGb3J3YXJkQ2hlY2tTdHJ1Y3R1cmUsIGNvZGVPcmln
aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0
dXJlU2V0KGl0ZXItPnZhbHVlLm1fc3RydWN0dXJlKSksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRWRnZShjaGlsZDEubm9kZSgpLCBDZWxsVXNlKSk7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSBpZiAoaXRlci0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoaXRlci0+dmFsdWUubV9hcnJheU1vZGVIb2lzdGluZ09rYXkp
OworICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwgRm9yd2FyZENo
ZWNrQXJyYXksIGNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3BJbmZv
KGl0ZXItPnZhbHVlLm1fYXJyYXlNb2RlLmFzV29yZCgpKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBFZGdlKGNoaWxkMS5ub2RlKCksIENlbGxVc2UpKTsKKyAgICAgICAgICAgICAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnNlcnRpb25TZXQu
ZXhlY3V0ZShibG9jayk7CisgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHJldHVybiBjaGFu
Z2VkOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGNsZWFyVmFyaWFibGVWb3RlcygpCisg
ICAgeyAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNz
RGF0YS5zaXplKCk7IGktLTspIHsKICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFy
aWFibGUgPSAmbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNzRGF0YVtpXTsKICAgICAgICAgICAgIGlm
ICghdmFyaWFibGUtPmlzUm9vdCgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgdmFyaWFibGUtPmNsZWFyVm90ZXMoKTsKICAgICAgICAgfQorICAgIH0KICAgICAgICAg
Ci0gICAgICAgIC8vIElkZW50aWZ5IHRoZSBzZXQgb2YgdmFyaWFibGVzIHRoYXQgYXJlIGFsd2F5
cyBzdWJqZWN0IHRvIHRoZSBzYW1lIHN0cnVjdHVyZQotICAgICAgICAvLyBjaGVja3MuIEZvciBu
b3csIG9ubHkgY29uc2lkZXIgbW9ub21vcnBoaWMgc3RydWN0dXJlIGNoZWNrcyAob25lIHN0cnVj
dHVyZSkuCi0gICAgICAgIAorICAgIC8vIElkZW50aWZ5IHRoZSBzZXQgb2YgdmFyaWFibGVzIHRo
YXQgYXJlIGFsd2F5cyBzdWJqZWN0IHRvIHRoZSBzYW1lIHN0cnVjdHVyZQorICAgIC8vIGNoZWNr
cy4gRm9yIG5vdywgb25seSBjb25zaWRlciBtb25vbW9ycGhpYyBzdHJ1Y3R1cmUgY2hlY2tzIChv
bmUgc3RydWN0dXJlKS4KKyAgICB2b2lkIGlkZW50aWZ5UmVkdW5kYW50U3RydWN0dXJlQ2hlY2tz
KCkKKyAgICB7ICAgIAogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJs
b2NrSW5kZXggPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytibG9ja0luZGV4KSB7CiAgICAg
ICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJbmRleF0u
Z2V0KCk7CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQpAQCAtNzUsNyArMjMxLDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBjaGlsZC0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7
CiAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLT52b3RlKFZvdGVTdHJ1Y3R1cmVDaGVjayk7
Ci0gICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkQ29uc2lkZXJGb3JIb2lzdGluZyh2YXJp
YWJsZSkpCisgICAgICAgICAgICAgICAgICAgIGlmICghc2hvdWxkQ29uc2lkZXJGb3JIb2lzdGlu
ZzxTdHJ1Y3R1cmVUeXBlQ2hlY2s+KHZhcmlhYmxlKSkKICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVjayh2YXJpYWJs
ZSwgbm9kZS0+c3RydWN0dXJlU2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAg
LTExNCw3ICsyNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxl
ID0gY2hpbGQtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgICAgICAgICAgICAg
dmFyaWFibGUtPnZvdGUoVm90ZU90aGVyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
c2hvdWxkQ29uc2lkZXJGb3JIb2lzdGluZyh2YXJpYWJsZSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoIXNob3VsZENvbnNpZGVyRm9ySG9pc3Rpbmc8U3RydWN0dXJlVHlwZUNoZWNrPih2
YXJpYWJsZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVjayh2YXJpYWJsZSwgMCk7CiAgICAgICAg
ICAgICAgICAgICAgIH0KQEAgLTEyNiw3ICsyODIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgIC8vIHdlJ3JlIG5vdCBob2lzdGluZyBhIGNoZWNrIHRoYXQgd291bGQgY29udHJhdmVu
ZSBjaGVja3MgdGhhdCBhcmUKICAgICAgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBiZWluZyBw
ZXJmb3JtZWQuCiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFi
bGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KCFzaG91bGRDb25zaWRlckZvckhvaXN0aW5nKHZhcmlhYmxlKSkKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKCFzaG91bGRDb25zaWRlckZvckhvaXN0aW5nPFN0cnVjdHVyZVR5cGVDaGVjaz4odmFy
aWFibGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIHNvdXJjZSA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKICAgICAgICAgICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBzdWJJbmRleEluQmxvY2sgPSAwOyBzdWJJbmRleEluQmxvY2sg
PCBibG9jay0+c2l6ZSgpOyArK3N1YkluZGV4SW5CbG9jaykgewpAQCAtMTYzLDMxICszMTksMTQy
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
KyAgICB9CiAgICAgICAgIAotICAgICAgICAvLyBEaXNhYmxlIHN0cnVjdHVyZSBob2lzdGluZyBv
biB2YXJpYWJsZXMgdGhhdCBhcHBlYXIgdG8gbW9zdGx5IGJlIHVzZWQgaW4KLSAgICAgICAgLy8g
Y29udGV4dHMgd2hlcmUgaXQgZG9lc24ndCBtYWtlIHNlbnNlLgotICAgICAgICAKKyAgICB2b2lk
IGlkZW50aWZ5UmVkdW5kYW50QXJyYXlDaGVja3MoKQorICAgIHsKKyAgICAgICAgZm9yIChCbG9j
a0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXpl
KCk7ICsrYmxvY2tJbmRleCkgeworICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dy
YXBoLm1fYmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgpOworICAgICAgICAgICAgaWYgKCFibG9jaykK
KyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGZvciAodW5zaWduZWQgaW5k
ZXhJbkJsb2NrID0gMDsgaW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytpbmRleEluQmxv
Y2spIHsKKyAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KGluZGV4SW5CbG9j
ayk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAg
ICAgY2FzZSBDaGVja0FycmF5OiB7CisgICAgICAgICAgICAgICAgICAgIE5vZGUqIGNoaWxkID0g
bm9kZS0+Y2hpbGQxKCkubm9kZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQtPm9w
KCkgIT0gR2V0TG9jYWwpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IGNoaWxkLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUtPnZvdGUoVm90ZUNo
ZWNrQXJyYXkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZENvbnNpZGVyRm9ySG9p
c3Rpbmc8QXJyYXlUeXBlQ2hlY2s+KHZhcmlhYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgICBub3RpY2VDaGVja0FycmF5KHZhcmlhYmxlLCBu
b2RlLT5hcnJheU1vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2UgRm9yd2FyZENoZWNrQXJyYXk6CisgICAg
ICAgICAgICAgICAgICAgIC8vIFdlIGN1cnJlbnRseSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgd2Un
cmUgdGhlIG9ubHkgb25lcyB3aG8gd291bGQKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5zZXJ0
IHRoaXMgbm9kZS4KKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdHJ1Y3R1cmU6CisgICAgICAgICAgICAgICAgY2Fz
ZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDoKKyAgICAgICAgICAgICAgICBjYXNlIEdl
dEJ5T2Zmc2V0OgorICAgICAgICAgICAgICAgIGNhc2UgUHV0QnlPZmZzZXQ6CisgICAgICAgICAg
ICAgICAgY2FzZSBQdXRTdHJ1Y3R1cmU6CisgICAgICAgICAgICAgICAgY2FzZSBSZWFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlOgorICAgICAgICAgICAgICAgIGNhc2UgR2V0QnV0dGVyZmx5OgorICAg
ICAgICAgICAgICAgIGNhc2UgR2V0QnlWYWw6CisgICAgICAgICAgICAgICAgY2FzZSBQdXRCeVZh
bDoKKyAgICAgICAgICAgICAgICBjYXNlIFB1dEJ5VmFsQWxpYXM6CisgICAgICAgICAgICAgICAg
Y2FzZSBHZXRBcnJheUxlbmd0aDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9w
ZXJ0eVN0b3JhZ2U6CisgICAgICAgICAgICAgICAgY2FzZSBQaGFudG9tOgorICAgICAgICAgICAg
ICAgICAgICAvLyBEb24ndCBjb3VudCB0aGVzZSB1c2VzLgorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBBbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZToKKyAgICAgICAgICAgICAgICBjYXNlIEFycmF5aWZ5VG9TdHJ1Y3R1
cmU6CisgICAgICAgICAgICAgICAgY2FzZSBBcnJheWlmeTogeworICAgICAgICAgICAgICAgICAg
ICAvLyBBbnkgQXJyYXlpZnkgY291bGQgY2hhbmdlIG91ciBpbmRleGluZyB0eXBlLCBzbyBkaXNh
YmxlCisgICAgICAgICAgICAgICAgICAgIC8vIGFsbCBDaGVja0FycmF5IGhvaXN0aW5nLgorICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPmNoaWxkMSgpLm5vZGUoKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5vcCgpICE9IEdldExvY2FsKQorICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGUgPSBjaGlsZC0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAg
ICAgICAgICAgIHZhcmlhYmxlLT52b3RlKFZvdGVPdGhlcik7CisgICAgICAgICAgICAgICAgICAg
IGlmICghc2hvdWxkQ29uc2lkZXJGb3JIb2lzdGluZzxBcnJheVR5cGVDaGVjaz4odmFyaWFibGUp
KQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRp
c2FibGVDaGVja0FycmF5SG9pc3RpbmcodmFyaWFibGUpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIGNhc2UgU2V0TG9jYWw6IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRmluZCBhbGwg
dXNlcyBvZiB0aGUgc291cmNlIG9mIHRoZSBTZXRMb2NhbC4gSWYgYW55IG9mIHRoZW0gYXJlIGEK
KyAgICAgICAgICAgICAgICAgICAgLy8ga2luZCBvZiBDaGVja1N0cnVjdHVyZSwgdGhlbiB3ZSBz
aG91bGQgbm90aWNlIHRoZW0gdG8gZW5zdXJlIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgLy8g
d2UncmUgbm90IGhvaXN0aW5nIGEgY2hlY2sgdGhhdCB3b3VsZCBjb250cmF2ZW5lIGNoZWNrcyB0
aGF0IGFyZQorICAgICAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IGJlaW5nIHBlcmZvcm1lZC4K
KyAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUt
PnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXNob3VsZENv
bnNpZGVyRm9ySG9pc3Rpbmc8QXJyYXlUeXBlQ2hlY2s+KHZhcmlhYmxlKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBOb2RlKiBzb3VyY2UgPSBu
b2RlLT5jaGlsZDEoKS5ub2RlKCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
c3ViSW5kZXhJbkJsb2NrID0gMDsgc3ViSW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKytz
dWJJbmRleEluQmxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIHN1Yk5vZGUg
PSBibG9jay0+YXQoc3ViSW5kZXhJbkJsb2NrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN3
aXRjaCAoc3ViTm9kZS0+b3AoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDaGVj
a1N0cnVjdHVyZTogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdWJOb2RlLT5j
aGlsZDEoKSAhPSBzb3VyY2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrQWNjb3VudGluZ0ZvckFycmF5TW9kZSh2YXJpYWJsZSwg
c3ViTm9kZS0+c3RydWN0dXJlU2V0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBTdHJ1Y3R1cmVUcmFuc2l0aW9uV2F0Y2hwb2ludDogeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChzdWJOb2RlLT5jaGlsZDEoKSAhPSBzb3VyY2UpCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGljZVN0cnVjdHVyZUNoZWNrQWNjb3VudGlu
Z0ZvckFycmF5TW9kZSh2YXJpYWJsZSwgc3ViTm9kZS0+c3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAgICAgY2FzZSBDaGVja0FycmF5OiB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKHN1Yk5vZGUtPmNoaWxkMSgpICE9IHNvdXJjZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vdGljZUNoZWNrQXJyYXkodmFyaWFibGUsIHN1Yk5vZGUtPmFycmF5TW9kZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
dm90ZUNoaWxkcmVuKG5vZGUsIFZvdGVPdGhlcik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEdhcmJhZ2VWYWx1ZToK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgudm90ZUNoaWxk
cmVuKG5vZGUsIFZvdGVPdGhlcik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIERp
c2FibGUgaG9pc3Rpbmcgb24gdmFyaWFibGVzIHRoYXQgYXBwZWFyIHRvIG1vc3RseSBiZSB1c2Vk
IGluCisgICAgLy8gY29udGV4dHMgd2hlcmUgaXQgZG9lc24ndCBtYWtlIHNlbnNlLgorICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBUeXBlQ2hlY2s+CisgICAgdm9pZCBkaXNhYmxlSG9pc3RpbmdGb3JW
YXJpYWJsZXNXaXRoSW5zdWZmaWNpZW50Vm90ZXMoKQorICAgIHsgICAgCiAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGEuc2l6ZSgpOyBpLS07KSB7
CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gJm1fZ3JhcGgubV92
YXJpYWJsZUFjY2Vzc0RhdGFbaV07CiAgICAgICAgICAgICBpZiAoIXZhcmlhYmxlLT5pc1Jvb3Qo
KSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+
dm90ZVJhdGlvKCkgPj0gT3B0aW9uczo6c3RydWN0dXJlQ2hlY2tWb3RlUmF0aW9Gb3JIb2lzdGlu
ZygpKQorICAgICAgICAgICAgaWYgKFR5cGVDaGVjazo6aGFzRW5vdWdoVm90ZXNUb0hvaXN0KHZh
cmlhYmxlKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEhhc2hNYXA8
VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6aXRlcmF0b3IgaXRlciA9IG1fbWFwLmZp
bmQodmFyaWFibGUpOwogICAgICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCiAgICAg
ICAgICAgICAgICAgY29udGludWU7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9QQUdBVElPTl9W
RVJCT1NFKQotICAgICAgICAgICAgZGF0YUxvZygKLSAgICAgICAgICAgICAgICAiWmVyb2luZyB0
aGUgc3RydWN0dXJlIHRvIGhvaXN0IGZvciAiLCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKG1fZ3Jh
cGgsIHZhcmlhYmxlKSwKLSAgICAgICAgICAgICAgICAiIGJlY2F1c2UgdGhlIHJhdGlvIGlzICIs
IHZhcmlhYmxlLT52b3RlUmF0aW8oKSwgIi5cbiIpOwotI2VuZGlmCi0gICAgICAgICAgICBpdGVy
LT52YWx1ZS5tX3N0cnVjdHVyZSA9IDA7CisgICAgICAgICAgICBUeXBlQ2hlY2s6OmRpc2FibGVI
b2lzdGluZyhpdGVyLT52YWx1ZSk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIERp
c2FibGUgc3RydWN0dXJlIGNoZWNrIGhvaXN0aW5nIGZvciB2YXJpYWJsZXMgdGhhdCBjcm9zcyB0
aGUgT1NSIGVudHJ5IHRoYXQKLSAgICAgICAgLy8gd2UncmUgY3VycmVudGx5IHRha2luZywgYW5k
IHdoZXJlIHRoZSB2YWx1ZSBjdXJyZW50bHkgZG9lcyBub3QgaGF2ZSB0aGUKLSAgICAgICAgLy8g
c3RydWN0dXJlIHdlIHdhbnQuCi0gICAgICAgIAorICAgIH0KKworICAgIC8vIERpc2FibGUgY2hl
Y2sgaG9pc3RpbmcgZm9yIHZhcmlhYmxlcyB0aGF0IGNyb3NzIHRoZSBPU1IgZW50cnkgdGhhdAor
ICAgIC8vIHdlJ3JlIGN1cnJlbnRseSB0YWtpbmcsIGFuZCB3aGVyZSB0aGUgdmFsdWUgY3VycmVu
dGx5IGRvZXMgbm90IGhhdmUgdGhlCisgICAgLy8gcGFydGljdWxhciBmb3JtIHdlIHdhbnQgKGUu
Zy4gYSBjb250cmFkaWN0b3J5IEFycmF5TW9kZSBvciBTdHJ1dHVyZSkuCisgICAgdGVtcGxhdGUg
PHR5cGVuYW1lIFR5cGVDaGVjaz4KKyAgICB2b2lkIGRpc2FibGVIb2lzdGluZ0Fjcm9zc09TUkVu
dHJpZXMoKQorICAgIHsKICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBi
bG9ja0luZGV4IDwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXplKCk7ICsrYmxvY2tJbmRleCkgewogICAg
ICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLm1fYmxvY2tzW2Jsb2NrSW5kZXhd
LmdldCgpOwogICAgICAgICAgICAgaWYgKCFibG9jaykKQEAgLTIwNiwxMzYgKzQ3MywyOSBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVj
a0RhdGE+OjppdGVyYXRvciBpdGVyID0gbV9tYXAuZmluZCh2YXJpYWJsZSk7CiAgICAgICAgICAg
ICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICAgICAgICAgIGlmICghaXRlci0+dmFsdWUubV9zdHJ1Y3R1cmUpCisgICAg
ICAgICAgICAgICAgaWYgKCFUeXBlQ2hlY2s6OmlzVmFsaWRUb0hvaXN0KGl0ZXItPnZhbHVlKSkK
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IG1fZ3JhcGgubV9wbGFuLm11c3RIYW5kbGVWYWx1ZXNbaV07Ci0gICAgICAgICAgICAg
ICAgaWYgKCF2YWx1ZSB8fCAhdmFsdWUuaXNDZWxsKCkpIHsKLSNpZiBERkdfRU5BQkxFKERFQlVH
X1BST1BBR0FUSU9OX1ZFUkJPU0UpCi0gICAgICAgICAgICAgICAgICAgIGRhdGFMb2coCi0gICAg
ICAgICAgICAgICAgICAgICAgICAiWmVyb2luZyB0aGUgc3RydWN0dXJlIHRvIGhvaXN0IGZvciAi
LCBWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wKG1fZ3JhcGgsIHZhcmlhYmxlKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICIgYmVjYXVzZSB0aGUgT1NSIGVudHJ5IHZhbHVlIGlzIG5vdCBhIGNlbGw6
ICIsIHZhbHVlLCAiLlxuIik7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgaXRlci0+dmFs
dWUubV9zdHJ1Y3R1cmUgPSAwOworICAgICAgICAgICAgICAgIGlmICghdmFsdWUgfHwgIXZhbHVl
LmlzQ2VsbCgpIHx8IFR5cGVDaGVjazo6aXNDb250cmF2ZW5lZEJ5VmFsdWUoaXRlci0+dmFsdWUs
IHZhbHVlKSkgeworICAgICAgICAgICAgICAgICAgICBUeXBlQ2hlY2s6OmRpc2FibGVIb2lzdGlu
ZyhpdGVyLT52YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodmFsdWUuYXNDZWxsKCktPnN0cnVjdHVyZSgp
ICE9IGl0ZXItPnZhbHVlLm1fc3RydWN0dXJlKSB7Ci0jaWYgREZHX0VOQUJMRShERUJVR19QUk9Q
QUdBVElPTl9WRVJCT1NFKQotICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKAotICAgICAgICAg
ICAgICAgICAgICAgICAgIlplcm9pbmcgdGhlIHN0cnVjdHVyZSB0byBob2lzdCBmb3IgIiwgVmFy
aWFibGVBY2Nlc3NEYXRhRHVtcChtX2dyYXBoLCB2YXJpYWJsZSksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAiIGJlY2F1c2UgdGhlIE9TUiBlbnRyeSB2YWx1ZSBoYXMgc3RydWN0dXJlICIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBSYXdQb2ludGVyKHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1
cmUoKSksICIgYW5kIHdlIHdhbnRlZCAiLAotICAgICAgICAgICAgICAgICAgICAgICAgUmF3UG9p
bnRlcihpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSksICIuXG4iKTsKLSNlbmRpZgotICAgICAgICAg
ICAgICAgICAgICBpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSA9IDA7Ci0gICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwotCi0jaWYgREZHX0VOQUJMRShERUJV
R19QUk9QQUdBVElPTl9WRVJCT1NFKQotICAgICAgICBmb3IgKEhhc2hNYXA8VmFyaWFibGVBY2Nl
c3NEYXRhKiwgQ2hlY2tEYXRhPjo6aXRlcmF0b3IgaXQgPSBtX21hcC5iZWdpbigpOwotICAgICAg
ICAgICAgIGl0ICE9IG1fbWFwLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoIWl0LT52
YWx1ZS5tX3N0cnVjdHVyZSkgewotICAgICAgICAgICAgICAgIGRhdGFMb2coCi0gICAgICAgICAg
ICAgICAgICAgICJOb3QgaG9pc3RpbmcgY2hlY2tzIGZvciAiLCBWYXJpYWJsZUFjY2Vzc0RhdGFE
dW1wKG1fZ3JhcGgsIGl0LT5rZXkpLAotICAgICAgICAgICAgICAgICAgICAiIGJlY2F1c2Ugb2Yg
aGV1cmlzdGljcy5cbiIpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgZGF0YUxvZygiSG9pc3RpbmcgY2hlY2tzIGZvciAiLCBWYXJpYWJsZUFj
Y2Vzc0RhdGFEdW1wKG1fZ3JhcGgsIGl0LT5rZXkpLCAiXG4iKTsKICAgICAgICAgfQotI2VuZGlm
IC8vIERGR19FTkFCTEUoREVCVUdfUFJPUEFHQVRJT05fVkVSQk9TRSkKLSAgICAgICAgCi0gICAg
ICAgIC8vIFBsYWNlIENoZWNrU3RydWN0dXJlJ3MgYXQgU2V0TG9jYWwgc2l0ZXMuCi0gICAgICAg
IAotICAgICAgICBJbnNlcnRpb25TZXQgaW5zZXJ0aW9uU2V0KG1fZ3JhcGgpOwotICAgICAgICBm
b3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm1fYmxv
Y2tzLnNpemUoKTsgKytibG9ja0luZGV4KSB7Ci0gICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9j
ayA9IG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCk7Ci0gICAgICAgICAgICBpZiAo
IWJsb2NrKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2lu
ZGV4SW5CbG9jaykgewotICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBibG9jay0+YXQoaW5k
ZXhJbkJsb2NrKTsKLSAgICAgICAgICAgICAgICAvLyBCZSBjYXJlZnVsIG5vdCB0byB1c2UgJ25v
ZGUnIGFmdGVyIGFwcGVuZGluZyB0byB0aGUgZ3JhcGguIEluIHRob3NlIHN3aXRjaAotICAgICAg
ICAgICAgICAgIC8vIGNhc2VzIHdoZXJlIHdlIG5lZWQgdG8gYXBwZW5kLCB3ZSBmaXJzdCBjYXJl
ZnVsbHkgZXh0cmFjdCBldmVyeXRoaW5nIHdlIG5lZWQKLSAgICAgICAgICAgICAgICAvLyBmcm9t
IHRoZSBub2RlLCBiZWZvcmUgZG9pbmcgYW55IGFwcGVuZGluZy4KLSAgICAgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUtPm9wKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFNldEFyZ3VtZW50OiB7
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCghYmxvY2tJbmRleCk7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIEluc2VydCBhIEdldExvY2FsIGFuZCBhIENoZWNrU3RydWN0dXJlIGltbWVkaWF0
ZWx5IGZvbGxvd2luZyB0aGlzCi0gICAgICAgICAgICAgICAgICAgIC8vIFNldEFyZ3VtZW50LCBp
ZiB0aGUgdmFyaWFibGUgd2FzIGEgY2FuZGlkYXRlIGZvciBzdHJ1Y3R1cmUgaG9pc3RpbmcuCi0g
ICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBiYXNpYyBibG9jayBwcmV2aW91c2x5IG9ubHkg
aGFkIHRoZSBTZXRBcmd1bWVudCBhcyBpdHMKLSAgICAgICAgICAgICAgICAgICAgLy8gdmFyaWFi
bGUtYXQtdGFpbCwgdGhlbiByZXBsYWNlIGl0IHdpdGggdGhpcyBHZXRMb2NhbC4KLSAgICAgICAg
ICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxl
QWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNz
RGF0YSosIENoZWNrRGF0YT46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHZhcmlhYmxlKTsK
LSAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1
ZS5tX3N0cnVjdHVyZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0g
bm9kZS0+Y29kZU9yaWdpbjsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAg
ICAgIE5vZGUqIGdldExvY2FsID0gaW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleEluQmxvY2sgKyAxLCB2YXJpYWJsZS0+cHJlZGljdGlvbigpLCBH
ZXRMb2NhbCwgY29kZU9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyh2YXJp
YWJsZSksIEVkZ2Uobm9kZSkpOwotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5z
ZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jayArIDEsIFNwZWNO
b25lLCBDaGVja1N0cnVjdHVyZSwgY29kZU9yaWdpbiwKLSAgICAgICAgICAgICAgICAgICAgICAg
IE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVyZVNldChpdGVyLT52YWx1ZS5tX3N0cnVjdHVyZSkp
LAotICAgICAgICAgICAgICAgICAgICAgICAgRWRnZShnZXRMb2NhbCwgQ2VsbFVzZSkpOwotCi0g
ICAgICAgICAgICAgICAgICAgIGlmIChibG9jay0+dmFyaWFibGVzQXRUYWlsLm9wZXJhbmQodmFy
aWFibGUtPmxvY2FsKCkpID09IG5vZGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBibG9jay0+
dmFyaWFibGVzQXRUYWlsLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpID0gZ2V0TG9jYWw7Ci0g
ICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLnN1YnN0aXR1
dGVHZXRMb2NhbCgqYmxvY2ssIGluZGV4SW5CbG9jaywgdmFyaWFibGUsIGdldExvY2FsKTsKLSAg
ICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6IHsKLSAgICAgICAgICAg
ICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpOwotICAgICAgICAgICAgICAgICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0
YSosIENoZWNrRGF0YT46Oml0ZXJhdG9yIGl0ZXIgPSBtX21hcC5maW5kKHZhcmlhYmxlKTsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0gbV9tYXAuZW5kKCkpCi0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVyLT52YWx1ZS5t
X3N0cnVjdHVyZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAg
ICAgICAgICAgIC8vIEZpcnN0IGluc2VydCBhIGRlYWQgU2V0TG9jYWwgdG8gdGVsbCBPU1IgdGhh
dCB0aGUgY2hpbGQncyB2YWx1ZSBzaG91bGQKLSAgICAgICAgICAgICAgICAgICAgLy8gYmUgZHJv
cHBlZCBpbnRvIHRoaXMgYnl0ZWNvZGUgdmFyaWFibGUgaWYgdGhlIENoZWNrU3RydWN0dXJlIGRl
Y2lkZXMKLSAgICAgICAgICAgICAgICAgICAgLy8gdG8gZXhpdC4KLSAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgIENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IG5vZGUtPmNv
ZGVPcmlnaW47Ci0gICAgICAgICAgICAgICAgICAgIEVkZ2UgY2hpbGQxID0gbm9kZS0+Y2hpbGQx
KCk7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25T
ZXQuaW5zZXJ0Tm9kZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5CbG9jaywgU3Bl
Y05vbmUsIFNldExvY2FsLCBjb2RlT3JpZ2luLCBPcEluZm8odmFyaWFibGUpLCBjaGlsZDEpOwor
ICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAvLyBVc2UgYSBGb3J3YXJkQ2hlY2tTdHJ1Y3R1
cmUgdG8gaW5kaWNhdGUgdGhhdCB3ZSBzaG91bGQgZXhpdCB0byB0aGUKLSAgICAgICAgICAgICAg
ICAgICAgLy8gbmV4dCBieXRlY29kZSBpbnN0cnVjdGlvbiByYXRoZXIgdGhhbiByZWV4ZWN1dGlu
ZyB0aGUgY3VycmVudCBvbmUuCi0gICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNl
cnROb2RlKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbkJsb2NrLCBTcGVjTm9uZSwg
Rm9yd2FyZENoZWNrU3RydWN0dXJlLCBjb2RlT3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAg
ICAgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KGl0ZXItPnZhbHVlLm1fc3RydWN0dXJl
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICBFZGdlKGNoaWxkMS5ub2RlKCksIENlbGxVc2Up
KTsKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmV4ZWN1
dGUoYmxvY2spOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gY2hhbmdlZDsK
KyAgICB2b2lkIGRpc2FibGVDaGVja0FycmF5SG9pc3RpbmcoVmFyaWFibGVBY2Nlc3NEYXRhKiB2
YXJpYWJsZSkKKyAgICB7CisgICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hl
Y2tEYXRhPjo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZCh2YXJpYWJsZSwgQ2hlY2tEYXRh
KCkpOworICAgICAgICByZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmRpc2FibGVDaGVja0FycmF5SG9p
c3RpbmcoKTsKICAgICB9CiAKLXByaXZhdGU6CisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFR5cGVD
aGVjaz4KICAgICBib29sIHNob3VsZENvbnNpZGVyRm9ySG9pc3RpbmcoVmFyaWFibGVBY2Nlc3NE
YXRhKiB2YXJpYWJsZSkKICAgICB7CiAgICAgICAgIGlmICghdmFyaWFibGUtPnNob3VsZFVuYm94
SWZQb3NzaWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAodmFy
aWFibGUtPnN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoKSkKKyAgICAgICAgaWYgKFR5cGVD
aGVjazo6aG9pc3RpbmdQcmV2aW91c2x5RmFpbGVkKHZhcmlhYmxlKSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFpc0NlbGxTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJl
ZGljdGlvbigpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM0NCw4ICs1MDQsNyBA
QCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2soVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewotICAgICAg
ICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSosIENoZWNrRGF0YT46OkFkZFJlc3VsdCByZXN1
bHQgPQotICAgICAgICAgICAgbV9tYXAuYWRkKHZhcmlhYmxlLCBDaGVja0RhdGEoc3RydWN0dXJl
KSk7CisgICAgICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgQ2hlY2tEYXRhPjo6QWRk
UmVzdWx0IHJlc3VsdCA9IG1fbWFwLmFkZCh2YXJpYWJsZSwgQ2hlY2tEYXRhKHN0cnVjdHVyZSkp
OwogICAgICAgICBpZiAocmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIGlmIChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1fc3RydWN0dXJlID09IHN0cnVjdHVy
ZSkKQEAgLTM2MSwyMSArNTIwLDQyIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgbm90
aWNlU3RydWN0dXJlQ2hlY2sodmFyaWFibGUsIHNldC5zaW5nbGV0b25TdHJ1Y3R1cmUoKSk7CiAg
ICAgfQotICAgIAotICAgIHN0cnVjdCBDaGVja0RhdGEgewotICAgICAgICBTdHJ1Y3R1cmUqIG1f
c3RydWN0dXJlOwotICAgICAgICAKLSAgICAgICAgQ2hlY2tEYXRhKCkKLSAgICAgICAgICAgIDog
bV9zdHJ1Y3R1cmUoMCkKLSAgICAgICAgewotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBD
aGVja0RhdGEoU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgICAgICA6IG1fc3RydWN0dXJl
KHN0cnVjdHVyZSkKLSAgICAgICAgeworCisgICAgdm9pZCBub3RpY2VDaGVja0FycmF5KFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIEFycmF5TW9kZSBhcnJheU1vZGUpCisgICAgeworICAg
ICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSosIENoZWNrRGF0YT46OkFkZFJlc3VsdCBy
ZXN1bHQgPSBtX21hcC5hZGQodmFyaWFibGUsIENoZWNrRGF0YShhcnJheU1vZGUpKTsKKyAgICAg
ICAgaWYgKHJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBp
ZiAoIXJlc3VsdC5pdGVyYXRvci0+dmFsdWUubV9hcnJheU1vZGVIb2lzdGluZ09rYXkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1fYXJy
YXlNb2RlID09IGFycmF5TW9kZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1fYXJyYXlNb2RlSXNWYWxpZCkgeworICAgICAgICAgICAg
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5tX2FycmF5TW9kZSA9IGFycmF5TW9kZTsKKyAgICAgICAg
ICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUubV9hcnJheU1vZGVJc1ZhbGlkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgIH07Ci0gICAgCisgICAgICAgIHJlc3Vs
dC5pdGVyYXRvci0+dmFsdWUuZGlzYWJsZUNoZWNrQXJyYXlIb2lzdGluZygpOworICAgIH0KKwor
ICAgIHZvaWQgbm90aWNlU3RydWN0dXJlQ2hlY2tBY2NvdW50aW5nRm9yQXJyYXlNb2RlKFZhcmlh
YmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAg
ICAgICAgSGFzaE1hcDxWYXJpYWJsZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+OjppdGVyYXRvciBy
ZXN1bHQgPSBtX21hcC5maW5kKHZhcmlhYmxlKTsKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBtX21h
cC5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFyZXN1bHQtPnZhbHVl
Lm1fYXJyYXlNb2RlSG9pc3RpbmdPa2F5IHx8ICFyZXN1bHQtPnZhbHVlLm1fYXJyYXlNb2RlSXNW
YWxpZCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFyZXN1bHQtPnZhbHVlLm1f
YXJyYXlNb2RlLmlzQ29udHJhdmVuZWRCeVN0cnVjdHVyZShzdHJ1Y3R1cmUpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICByZXN1bHQtPnZhbHVlLmRpc2FibGVDaGVja0FycmF5SG9pc3Rp
bmcoKTsKKyAgICB9CisKKyAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNoZWNrQWNjb3VudGluZ0Zv
ckFycmF5TW9kZShWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlLCBjb25zdCBTdHJ1Y3R1cmVT
ZXQmIHNldCkKKyAgICB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzZXQuc2l6
ZSgpOyBpKyspCisgICAgICAgICAgICBub3RpY2VTdHJ1Y3R1cmVDaGVja0FjY291bnRpbmdGb3JB
cnJheU1vZGUodmFyaWFibGUsIHNldFtpXSk7CisgICAgfQorCiAgICAgSGFzaE1hcDxWYXJpYWJs
ZUFjY2Vzc0RhdGEqLCBDaGVja0RhdGE+IG1fbWFwOwogfTsKIApAQCAtMzg1LDYgKzU2NSw2MiBA
QCBib29sIHBlcmZvcm1UeXBlQ2hlY2tIb2lzdGluZyhHcmFwaCYgZ3JhCiAgICAgcmV0dXJuIHJ1
blBoYXNlPFR5cGVDaGVja0hvaXN0aW5nUGhhc2U+KGdyYXBoKTsKIH0KIAorc3RydWN0IEFycmF5
VHlwZUNoZWNrIHsKKyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkVG9Ib2lzdChDaGVja0RhdGEmIGNo
ZWNrRGF0YSkKKyAgICB7CisgICAgICAgIHJldHVybiBjaGVja0RhdGEubV9hcnJheU1vZGVJc1Zh
bGlkOworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGRpc2FibGVIb2lzdGluZyhDaGVja0RhdGEm
IGNoZWNrRGF0YSkKKyAgICB7CisgICAgICAgIGNoZWNrRGF0YS5kaXNhYmxlQ2hlY2tBcnJheUhv
aXN0aW5nKCk7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgaXNDb250cmF2ZW5lZEJ5VmFsdWUo
Q2hlY2tEYXRhJiBjaGVja0RhdGEsIEpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBBU1NF
UlQodmFsdWUuaXNDZWxsKCkpOworICAgICAgICByZXR1cm4gY2hlY2tEYXRhLm1fYXJyYXlNb2Rl
LmlzQ29udHJhdmVuZWRCeVN0cnVjdHVyZSh2YWx1ZS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpOwor
ICAgIH0KKworICAgIHN0YXRpYyBib29sIGhhc0Vub3VnaFZvdGVzVG9Ib2lzdChWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhcmlhYmxlLT52b3Rl
UmF0aW8oKSA+PSBPcHRpb25zOjpjaGVja0FycmF5Vm90ZVJhdGlvRm9ySG9pc3RpbmcoKTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBob2lzdGluZ1ByZXZpb3VzbHlGYWlsZWQoVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiB2YXJpYWJsZS0+Y2hl
Y2tBcnJheUhvaXN0aW5nRmFpbGVkKCk7CisgICAgfQorfTsKKworc3RydWN0IFN0cnVjdHVyZVR5
cGVDaGVjayB7CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZFRvSG9pc3QoQ2hlY2tEYXRhJiBjaGVj
a0RhdGEpCisgICAgeworICAgICAgICByZXR1cm4gY2hlY2tEYXRhLm1fc3RydWN0dXJlOworICAg
IH0KKworICAgIHN0YXRpYyB2b2lkIGRpc2FibGVIb2lzdGluZyhDaGVja0RhdGEmIGNoZWNrRGF0
YSkKKyAgICB7CisgICAgICAgIGNoZWNrRGF0YS5tX3N0cnVjdHVyZSA9IDA7CisgICAgfQorCisg
ICAgc3RhdGljIGJvb2wgaXNDb250cmF2ZW5lZEJ5VmFsdWUoQ2hlY2tEYXRhJiBjaGVja0RhdGEs
IEpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlQodmFsdWUuaXNDZWxsKCkpOwor
ICAgICAgICByZXR1cm4gY2hlY2tEYXRhLm1fc3RydWN0dXJlICE9IHZhbHVlLmFzQ2VsbCgpLT5z
dHJ1Y3R1cmUoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBoYXNFbm91Z2hWb3Rlc1RvSG9p
c3QoVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiB2
YXJpYWJsZS0+dm90ZVJhdGlvKCkgPj0gT3B0aW9uczo6c3RydWN0dXJlQ2hlY2tWb3RlUmF0aW9G
b3JIb2lzdGluZygpOworICAgIH0KKworICAgIHN0YXRpYyBib29sIGhvaXN0aW5nUHJldmlvdXNs
eUZhaWxlZChWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHZhcmlhYmxlLT5zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKCk7CisgICAgfQorfTsK
KwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiAjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1VuaWZpY2F0aW9uUGhhc2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVW5pZmljYXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDE1MDI2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVW5pZmljYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAg
cHVibGljOgogICAgICAgICAgICAgZGF0YS0+ZmluZCgpLT5wcmVkaWN0KGRhdGEtPm5vblVuaWZp
ZWRQcmVkaWN0aW9uKCkpOwogICAgICAgICAgICAgZGF0YS0+ZmluZCgpLT5tZXJnZUlzQ2FwdHVy
ZWQoZGF0YS0+aXNDYXB0dXJlZCgpKTsKICAgICAgICAgICAgIGRhdGEtPmZpbmQoKS0+bWVyZ2VT
dHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKGRhdGEtPnN0cnVjdHVyZUNoZWNrSG9pc3RpbmdG
YWlsZWQoKSk7CisgICAgICAgICAgICBkYXRhLT5maW5kKCktPm1lcmdlQ2hlY2tBcnJheUhvaXN0
aW5nRmFpbGVkKGRhdGEtPmNoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCgpKTsKICAgICAgICAgICAg
IGRhdGEtPmZpbmQoKS0+bWVyZ2VTaG91bGROZXZlclVuYm94KGRhdGEtPnNob3VsZE5ldmVyVW5i
b3goKSk7CiAgICAgICAgICAgICBkYXRhLT5maW5kKCktPm1lcmdlSXNMb2FkZWRGcm9tKGRhdGEt
PmlzTG9hZGVkRnJvbSgpKTsKICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCShyZXZpc2lvbiAxNTAyNjApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3Nob3VsZE5l
dmVyVW5ib3goZmFsc2UpCiAgICAgICAgICwgbV9pc0FyZ3VtZW50c0FsaWFzKGZhbHNlKQogICAg
ICAgICAsIG1fc3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZChmYWxzZSkKKyAgICAgICAgLCBt
X2NoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJvZml0YWJs
ZVRvVW5ib3goZmFsc2UpCiAgICAgICAgICwgbV9pc0xvYWRlZEZyb20oZmFsc2UpCiAgICAgICAg
ICwgbV9kb3VibGVGb3JtYXRTdGF0ZShFbXB0eURvdWJsZUZvcm1hdFN0YXRlKQpAQCAtNjYsNiAr
NjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zaG91bGROZXZlclVuYm94KGlzQ2FwdHVyZWQp
CiAgICAgICAgICwgbV9pc0FyZ3VtZW50c0FsaWFzKGZhbHNlKQogICAgICAgICAsIG1fc3RydWN0
dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZChmYWxzZSkKKyAgICAgICAgLCBtX2NoZWNrQXJyYXlIb2lz
dGluZ0ZhaWxlZChmYWxzZSkKICAgICAgICAgLCBtX2lzUHJvZml0YWJsZVRvVW5ib3goZmFsc2Up
CiAgICAgICAgICwgbV9kb3VibGVGb3JtYXRTdGF0ZShFbXB0eURvdWJsZUZvcm1hdFN0YXRlKQog
ICAgIHsKQEAgLTEzNSwxMSArMTM3LDIxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNoZWNr
QW5kU2V0KG1fc3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCwgbV9zdHJ1Y3R1cmVDaGVja0hv
aXN0aW5nRmFpbGVkIHwgZmFpbGVkKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBtZXJnZUNoZWNr
QXJyYXlIb2lzdGluZ0ZhaWxlZChib29sIGZhaWxlZCkKKyAgICB7CisgICAgICAgIHJldHVybiBj
aGVja0FuZFNldChtX2NoZWNrQXJyYXlIb2lzdGluZ0ZhaWxlZCwgbV9jaGVja0FycmF5SG9pc3Rp
bmdGYWlsZWQgfCBmYWlsZWQpOworICAgIH0KKyAgICAKICAgICBib29sIHN0cnVjdHVyZUNoZWNr
SG9pc3RpbmdGYWlsZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc3RydWN0dXJlQ2hlY2tI
b2lzdGluZ0ZhaWxlZDsKICAgICB9CiAgICAgCisgICAgYm9vbCBjaGVja0FycmF5SG9pc3RpbmdG
YWlsZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fY2hlY2tBcnJheUhvaXN0aW5nRmFpbGVk
OworICAgIH0KKyAgICAKICAgICBib29sIG1lcmdlSXNBcmd1bWVudHNBbGlhcyhib29sIGlzQXJn
dW1lbnRzQWxpYXMpCiAgICAgewogICAgICAgICByZXR1cm4gY2hlY2tBbmRTZXQobV9pc0FyZ3Vt
ZW50c0FsaWFzLCBtX2lzQXJndW1lbnRzQWxpYXMgfCBpc0FyZ3VtZW50c0FsaWFzKTsKQEAgLTMy
MSw2ICszMzMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGROZXZlclVuYm94OwogICAg
IGJvb2wgbV9pc0FyZ3VtZW50c0FsaWFzOwogICAgIGJvb2wgbV9zdHJ1Y3R1cmVDaGVja0hvaXN0
aW5nRmFpbGVkOworICAgIGJvb2wgbV9jaGVja0FycmF5SG9pc3RpbmdGYWlsZWQ7CiAgICAgYm9v
bCBtX2lzUHJvZml0YWJsZVRvVW5ib3g7CiAgICAgYm9vbCBtX2lzTG9hZGVkRnJvbTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTUwMjYw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMzEsNiArMTMxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgXAogICAgIHYoZG91
YmxlLCBkb3VibGVWb3RlUmF0aW9Gb3JEb3VibGVGb3JtYXQsIDIpIFwKICAgICB2KGRvdWJsZSwg
c3RydWN0dXJlQ2hlY2tWb3RlUmF0aW9Gb3JIb2lzdGluZywgMSkgXAorICAgIHYoZG91YmxlLCBj
aGVja0FycmF5Vm90ZVJhdGlvRm9ySG9pc3RpbmcsIDEpIFwKICAgICBcCiAgICAgdih1bnNpZ25l
ZCwgbWluaW11bU51bWJlck9mU2NhbnNCZXR3ZWVuUmViYWxhbmNlLCAxMDApIFwKICAgICB2KHVu
c2lnbmVkLCBudW1iZXJPZkdDTWFya2VycywgY29tcHV0ZU51bWJlck9mR0NNYXJrZXJzKDcpKSBc
CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAxNTAyOTkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wNS0xNyAgTWFyayBIYWhuZW5iZXJn
ICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgorCisgICAgICAgIENoZWNrQXJyYXlzIHNob3VsZCBi
ZSBob2lzdGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTYzNTMKKworICAgICAgICBBZGRlZCBhIG1pY3JvYmVuY2htYXJrIHRvIEpTUmVncmVzcyB0
aGF0IHNwZWNpZmljYWxseSB0YXJnZXRzIENoZWNrQXJyYXkgaG9pc3RpbmcuCisgICAgICAgIFdl
IGdldCBhIDI1JSBpbXByb3ZlbWVudCBvbiBpdC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9jaGVjay1hcnJheS1ob2lz
dGluZy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9jaGVj
ay1hcnJheS1ob2lzdGluZy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mv
c2NyaXB0LXRlc3RzL2NoZWNrLWFycmF5LWhvaXN0aW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGYp
OgorCiAyMDEzLTA1LTA2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ2hlcnJ5LXBpY2sgbWVyZ2VkIHNvbWUgcGF0Y2hlcyB0byB0aGUgRlRMIGJyYW5jaC4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9jaGVjay1hcnJheS1ob2lzdGluZy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL2No
ZWNrLWFycmF5LWhvaXN0aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvanMvcmVncmVzcy9jaGVjay1hcnJheS1ob2lzdGluZy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL2NoZWNrLWFycmF5LWhvaXN0
aW5nCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIG5vIGV4Y2VwdGlvbiB0
aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQor
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvY2hlY2stYXJyYXktaG9pc3Rpbmcu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvY2hlY2stYXJy
YXktaG9pc3RpbmcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvcmVn
cmVzcy9jaGVjay1hcnJheS1ob2lzdGluZy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJzY3JpcHQtdGVzdHMvY2hlY2stYXJyYXktaG9pc3RpbmcuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9jaGVjay1h
cnJheS1ob2lzdGluZy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jl
c3Mvc2NyaXB0LXRlc3RzL2NoZWNrLWFycmF5LWhvaXN0aW5nLmpzCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9jaGVjay1hcnJheS1ob2lz
dGluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM1IEBACit2YXIgYXJyYXlMZW5ndGgg
PSA1MDAwMDsKK3ZhciBpdGVycyA9IDEwMDA7CisKK3ZhciBmID0gZnVuY3Rpb24oYSkgeworICAg
IHZhciBzdW0gPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlMZW5ndGg7IGkrKykg
eworICAgICAgICBzdW0gKz0gYVtpXTsKKyAgICB9CisgICAgcmV0dXJuIHN1bTsKK30KKwordmFy
IGExID0gW107Citmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5TGVuZ3RoOyBpKyspCisgICAgYTFb
aV0gPSBpOworYTEuZm9vID0gImZvbyI7Cit2YXIgYTFTdW0gPSBmKGExKTsKKwordmFyIGEyID0g
W107Citmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5TGVuZ3RoOyBpKyspCisgICAgYTJbaV0gPSBp
OworYTIuYmFyID0gImJhciI7Cit2YXIgYTJTdW0gPSBmKGEyKTsKKwordmFyIGV4cGVjdGVkUmVz
dWx0ID0gKGl0ZXJzIC8gMikgKiBhMVN1bSArIChpdGVycyAvIDIpICogYTJTdW07CisKK3ZhciBy
ZXN1bHQgPSAwOworZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyczsgKytpKSB7CisgICAgaWYgKGkg
JSAyID09PSAwKQorICAgICAgICByZXN1bHQgKz0gZihhMSk7CisgICAgZWxzZQorICAgICAgICBy
ZXN1bHQgKz0gZihhMik7Cit9CisKK2lmIChyZXN1bHQgIT0gZXhwZWN0ZWRSZXN1bHQpCisgICAg
dGhyb3cgIkJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cg==
</data>
<flag name="review"
          id="223577"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>