<?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>86327</bug_id>
          
          <creation_ts>2012-05-13 16:24:56 -0700</creation_ts>
          <short_desc>DFG should optimize inlined uses of arguments.length and arguments[i]</short_desc>
          <delta_ts>2012-05-23 17:18:21 -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>All</rep_platform>
          <op_sys>All</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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>622564</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-13 16:24:56 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622569</commentid>
    <comment_count>1</comment_count>
      <attachid>141616</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-13 16:32:39 -0700</bug_when>
    <thetext>Created attachment 141616
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623260</commentid>
    <comment_count>2</comment_count>
      <attachid>141776</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-14 13:37:50 -0700</bug_when>
    <thetext>Created attachment 141776
more

Still a work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623353</commentid>
    <comment_count>3</comment_count>
      <attachid>141794</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-14 14:40:43 -0700</bug_when>
    <thetext>Created attachment 141794
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>623457</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-14 16:55:13 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/117017</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632238</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-23 17:18:21 -0700</bug_when>
    <thetext>Merged in http://trac.webkit.org/changeset/118278</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141616</attachid>
            <date>2012-05-13 16:32:39 -0700</date>
            <delta_ts>2012-05-14 13:37:50 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>inlined_arguments_opt_patch_1.diff</filename>
            <type>text/plain</type>
            <size>29490</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2OTA0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDEyLTA1LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBvcHRpbWl6ZSBpbmxpbmVkIHVzZXMgb2YgYXJndW1lbnRzLmxlbmd0aCBhbmQg
YXJndW1lbnRzW2ldCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NjMyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAgICAqIGJ5dGVjb2RlL0RGR0V4
aXRQcm9maWxlLmg6CisgICAgICAgIChGcmVxdWVudEV4aXRTaXRlKToKKyAgICAgICAgKEpTQzo6
REZHOjpGcmVxdWVudEV4aXRTaXRlOjpGcmVxdWVudEV4aXRTaXRlKToKKyAgICAgICAgKEpTQzo6
REZHOjpRdWVyeWFibGVFeGl0UHJvZmlsZTo6aGFzRXhpdFNpdGUpOgorICAgICAgICAoUXVlcnlh
YmxlRXhpdFByb2ZpbGUpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6IEFkZGVkLgorICAgICAgICAoREZH
KToKKyAgICAgICAgKEFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UpOgorICAgICAgICAoSlND
OjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2U6OkFyZ3VtZW50c1NpbXBsaWZpY2F0
aW9uUGhhc2UpOgorICAgICAgICAoSlNDOjpERkc6OkFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhh
c2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybUFyZ3VtZW50c1NpbXBsaWZpY2F0
aW9uKToKKyAgICAgICAgKiBkZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5oOiBB
ZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5o
OgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcik6Cisg
ICAgICAgIChBc3NlbWJseUhlbHBlcnMpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxp
bmVTdGFja0VudHJ5KToKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6R3JhcGgpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpleGVjdXRhYmxl
Rm9yKToKKyAgICAgICAgKEdyYXBoKToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Y2xvYmJl
cnNXb3JsZCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpjb252ZXJ0VG9Db25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVy
dFRvR2V0TG9jYWxVbmxpbmtlZCk6CisgICAgICAgIChOb2RlKToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjp1bmxpbmtlZExvY2FsKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAg
ICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlND
OjpERkc6Ok9TUkV4aXQ6OmNvbnNpZGVyQWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlU2xvdyk6Cisg
ICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAyMDEyLTA1LTExICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIHNob3VsZCBiZSBhYmxlIHRvIGlubGluZSBmdW5j
dGlvbnMgdGhhdCB1c2UgYXJndW1lbnRzIHJlZmxlY3RpdmVseQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDExNjg1
OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIGVudW0gRXhpdEtpbmQgewogICAgIE92ZXJm
bG93LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBvZiBvdmVyZmxvdy4KICAgICBOZWdhdGl2ZVplcm8s
IC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuY291bnRlcmVkIG5lZ2F0aXZlIHplcm8uCiAgICAg
SW5hZGVxdWF0ZUNvdmVyYWdlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmRlZCB1cCBpbiBj
b2RlIHRoYXQgZGlkbid0IGhhdmUgcHJvZmlsaW5nIGNvdmVyYWdlLgorICAgIEFyZ3VtZW50c0Vz
Y2FwZWQsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFyZ3VtZW50cyBlc2NhcGVkIGJ1dCB3ZSBkaWRu
J3QgZXhwZWN0IHRoZW0gdG8uCiAgICAgVW5jb3VudGFibGUsIC8vIFdlIGV4aXRlZCBmb3Igbm9u
ZSBvZiB0aGUgYWJvdmUgcmVhc29ucywgYW5kIHdlIHNob3VsZCBub3QgY291bnQgaXQuIE1vc3Qg
dXNlcyBvZiB0aGlzIHNob3VsZCBiZSB2aWV3ZWQgYXMgYSBGSVhNRS4KIH07CiAKQEAgLTk2LDYg
Kzk3LDE1IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKGV4aXRLaW5kSXNDb3VudGFibGUoa2lu
ZCkpOwogICAgIH0KICAgICAKKyAgICAvLyBVc2UgdGhpcyBjb25zdHJ1Y3RvciBpZiB5b3Ugd2lz
aCBmb3IgdGhlIGV4aXQgc2l0ZSB0byBiZSBjb3VudGVkIGdsb2JhbGx5IHdpdGhpbiBpdHMKKyAg
ICAvLyBjb2RlIGJsb2NrLgorICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUoRXhpdEtpbmQg
a2luZCkKKyAgICAgICAgOiBtX2J5dGVjb2RlT2Zmc2V0KDApCisgICAgICAgICwgbV9raW5kKGtp
bmQpCisgICAgeworICAgICAgICBBU1NFUlQoZXhpdEtpbmRJc0NvdW50YWJsZShraW5kKSk7Cisg
ICAgfQorICAgIAogICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJl
dHVybiBtX2tpbmQgPT0gRXhpdEtpbmRVbnNldDsKQEAgLTE3OCw2ICsxODgsMTEgQEAgcHVibGlj
OgogICAgICAgICByZXR1cm4gbV9mcmVxdWVudEV4aXRTaXRlcy5maW5kKHNpdGUpICE9IG1fZnJl
cXVlbnRFeGl0U2l0ZXMuZW5kKCk7CiAgICAgfQogICAgIAorICAgIGJvb2wgaGFzRXhpdFNpdGUo
RXhpdEtpbmQga2luZCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShG
cmVxdWVudEV4aXRTaXRlKGtpbmQpKTsKKyAgICB9CisgICAgCiAgICAgYm9vbCBoYXNFeGl0U2l0
ZSh1bnNpZ25lZCBieXRlY29kZUluZGV4LCBFeGl0S2luZCBraW5kKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZyZXF1ZW50RXhpdFNpdGUoYnl0ZWNvZGVJbmRleCwg
a2luZCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
U3RhdGUuY3BwCShyZXZpc2lvbiAxMTY4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNiArMjY3LDExIEBA
IGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIEdldExvY2FsVW5saW5rZWQ6IHsKKyAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLm1ha2VUb3AoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
ICAgICAKICAgICBjYXNlIFNldExvY2FsOiB7CiAgICAgICAgIGlmIChub2RlLnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5pc0NhcHR1cmVkKCkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTEwNzMsNiAr
MTA3OCwxOSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAg
ICAgIGJyZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoOgorICAg
ICAgICBpZiAoIW1fZ3JhcGgubV9leGVjdXRhYmxlc1dob3NlQXJndW1lbnRzRXNjYXBlZC5jb250
YWlucygKKyAgICAgICAgICAgICAgICBtX2dyYXBoLmV4ZWN1dGFibGVGb3Iobm9kZS5jb2RlT3Jp
Z2luKSkpIHsKKyAgICAgICAgICAgIC8vIFdlIGtub3cgdGhhdCB0aGlzIGV4ZWN1dGFibGUgZG9l
cyBub3QgZXNjYXBlIGl0cyBhcmd1bWVudHMsIHNvIHdlIGNhbiBvcHRpbWl6ZQorICAgICAgICAg
ICAgLy8gdGhlIGFyZ3VtZW50cyBhIGJpdC4gTm90ZSB0aGF0IHRoaXMgaXMgbm90IHN1ZmZpY2ll
bnQgdG8gZm9yY2UgY29uc3RhbnQgZm9sZGluZworICAgICAgICAgICAgLy8gb2YgR2V0TXlBcmd1
bWVudHNMZW5ndGgsIGJlY2F1c2UgR2V0TXlBcmd1bWVudHNMZW5ndGggaXMgYSBjbG9iYmVyaW5n
IG9wZXJhdGlvbi4KKyAgICAgICAgICAgIC8vIFdlIHBlcmZvcm0gZnVydGhlciBvcHRpbWl6YXRp
b25zIG9uIHRoaXMgbGF0ZXIgb24uCisgICAgICAgICAgICBpZiAobm9kZS5jb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQo
anNOdW1iZXIobm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgLy8gVGhpcyBwb3RlbnRpYWxseSBjbG9iYmVycyBhbGwgc3Ry
dWN0dXJlcyBpZiB0aGUgYXJndW1lbnRzIG9iamVjdCBoYWQgYSBnZXR0ZXIKICAgICAgICAgLy8g
aW5zdGFsbGVkIG9uIHRoZSBsZW5ndGggcHJvcGVydHkuCiAgICAgICAgIGNsb2JiZXJTdHJ1Y3R1
cmVzKGluZGV4SW5CbG9jayk7CkBAIC0xMDgyLDYgKzExMDAsMTUgQEAgYm9vbCBBYnN0cmFjdFN0
YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAg
Y2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CisgICAgICAgIGlmICghbV9ncmFwaC5tX2V4ZWN1dGFi
bGVzV2hvc2VBcmd1bWVudHNFc2NhcGVkLmNvbnRhaW5zKAorICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZXhlY3V0YWJsZUZvcihub2RlLmNvZGVPcmlnaW4pKSkgeworICAgICAgICAgICAgLy8gV2Ug
a25vdyB0aGF0IHRoaXMgZXhlY3V0YWJsZSBkb2VzIG5vdCBlc2NhcGUgaXRzIGFyZ3VtZW50cywg
c28gd2UgY2FuIG9wdGltaXplCisgICAgICAgICAgICAvLyB0aGUgYXJndW1lbnRzIGEgYml0LiBO
b3RlIHRoYXQgdGhpcyBlbmRzIHVwIGJlaW5nIGZ1cnRoZXIgb3B0aW1pemVkIGJ5IHRoZQorICAg
ICAgICAgICAgLy8gQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS4KKyAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgLy8gVGhpcyBwb3RlbnRpYWxseSBjbG9iYmVycyBhbGwgc3RydWN0dXJlcyBp
ZiB0aGUgcHJvcGVydHkgd2UncmUgYWNjZXNzaW5nIGhhcwogICAgICAgICAvLyBhIGdldHRlci4g
V2UgZG9uJ3Qgc3BlY3VsYXRlIGFnYWluc3QgdGhpcy4KICAgICAgICAgY2xvYmJlclN0cnVjdHVy
ZXMoaW5kZXhJbkJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJn
dW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmgiCisKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0Fic3RyYWN0U3RhdGUuaCIKKyNpbmNsdWRlICJE
RkdCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlICJERkdJbnNl
cnRpb25TZXQuaCIKKyNpbmNsdWRlICJERkdQaGFzZS5oIgorI2luY2x1ZGUgIkRGR1ZhbGlkYXRl
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgQXJndW1lbnRz
U2ltcGxpZmljYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CitwdWJsaWM6CisgICAgQXJndW1l
bnRzU2ltcGxpZmljYXRpb25QaGFzZShHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogUGhhc2UoZ3Jh
cGgsICJhcmd1bWVudHMgc2ltcGxpZmljYXRpb24iKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBydW4oKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1faGFzQXJndW1lbnRzKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgYm9vbCBjaGFuZ2Vk
ID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBJbnNlcnRpb25TZXQ8Tm9kZUluZGV4PiBpbnNl
cnRpb25TZXQ7CisgICAgICAgIAorICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9
IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytibG9ja0luZGV4KSB7
CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJ
bmRleF0uZ2V0KCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRl
eEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgeworICAgICAgICAgICAg
ICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBibG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKKyAgICAg
ICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOworICAgICAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3Vt
ZW50c0xlbmd0aDogeworICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2V4ZWN1dGFi
bGVzV2hvc2VBcmd1bWVudHNFc2NhcGVkLmNvbnRhaW5zKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguZXhlY3V0YWJsZUZvcihub2RlLmNvZGVPcmlnaW4pKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUuY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgZXhh
Y3RseSB3aGF0IHRoaXMgd2lsbCByZXR1cm4uIEJ1dCBvbmx5IGFmdGVyIHdlIGhhdmUgY2hlY2tl
ZAorICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IG5vYm9keSBoYXMgZXNjYXBlZCBvdXIgYXJn
dW1lbnRzLgorICAgICAgICAgICAgICAgICAgICBOb2RlIGNoZWNrKENoZWNrQXJndW1lbnRzTm90
Q3JlYXRlZCwgbm9kZS5jb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2sucmVm
KCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGVJbmRleCBjaGVja0luZGV4ID0gbV9ncmFwaC5z
aXplKCk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrKTsKKyAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIGNoZWNrSW5k
ZXgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5j
b252ZXJ0VG9Db25zdGFudChub2RlSW5kZXgsIGpzTnVtYmVyKG5vZGUuY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hh
bmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3Vt
ZW50c0J5VmFsOgorICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2V4ZWN1dGFibGVz
V2hvc2VBcmd1bWVudHNFc2NhcGVkLmNvbnRhaW5zKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZ3JhcGguZXhlY3V0YWJsZUZvcihub2RlLmNvZGVPcmlnaW4pKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUuY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKCFtX2dyYXBoW25vZGUuY2hpbGQxKCldLmhhc0NvbnN0YW50
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
SlNWYWx1ZSB2YWx1ZSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0udmFsdWVPZkpTQ29uc3RhbnQo
Y29kZUJsb2NrKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpbnQz
Ml90IGluZGV4ID0gdmFsdWUuYXNJbnQzMigpOworICAgICAgICAgICAgICAgICAgICBpZiAoaW5k
ZXggPCAwCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KGlu
ZGV4KSA+PQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUuY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtu
b3cgd2hpY2ggYXJndW1lbnQgdGhpcyBpcyBhY2Nlc3NpbmcuIEJ1dCBvbmx5IGFmdGVyIHdlIGhh
dmUgY2hlY2tlZAorICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IG5vYm9keSBoYXMgZXNjYXBl
ZCBvdXIgYXJndW1lbnRzLiBXZSBhbHNvIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlCisgICAgICAg
ICAgICAgICAgICAgIC8vIGluZGV4IGlzIGtlcHQgYWxpdmUuIFRoYXQncyBzb21ld2hhdCBwb2lu
dGxlc3Mgc2luY2UgaXQncyBhIGNvbnN0YW50LCBidXQKKyAgICAgICAgICAgICAgICAgICAgLy8g
aXQncyBpbXBvcnRhbnQgYmVjYXVzZSB0aGlzIGlzIG9uZSBvZiB0aG9zZSBpbnZhcmlhbnRzIHRo
YXQgd2UgbGlrZSB0bworICAgICAgICAgICAgICAgICAgICAvLyBoYXZlIGluIHRoZSBERkcuIE5v
dGUgZmluYWxseSB0aGF0IHdlIHVzZSB0aGUgR2V0TG9jYWxVbmxpbmtlZCBvcGNvZGUKKyAgICAg
ICAgICAgICAgICAgICAgLy8gaGVyZSwgc2luY2UgdGhpcyBpcyBiZWluZyBkb25lIF9hZnRlcl8g
dGhlIHByZWRpY3Rpb24gcHJvcGFnYXRpb24gcGhhc2UKKyAgICAgICAgICAgICAgICAgICAgLy8g
aGFzIHJ1biAtIHRoZXJlZm9yZSBpdCBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gbGluayB0aGUgR2V0
TG9jYWwgb3BlcmF0aW9uCisgICAgICAgICAgICAgICAgICAgIC8vIGludG8gdGhlIFZhcmlhYmxl
QWNjZXNzRGF0YSBhbmQgUGhpIGdyYXBocy4KKworICAgICAgICAgICAgICAgICAgICBOb2RlIGNo
ZWNrKENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZCwgbm9kZS5jb2RlT3JpZ2luKTsKKyAgICAgICAg
ICAgICAgICAgICAgY2hlY2sucmVmKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICBOb2RlIHBoYW50b20oUGhhbnRvbSwgbm9kZS5jb2RlT3JpZ2luKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGhudG9tLnJlZigpOworICAgICAgICAgICAgICAgICAgICBwaGFudG9t
LmNoaWxkcmVuID0gbm9kZS5jaGlsZHJlbjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIG5vZGUuY29udmVydFRvR2V0TG9jYWxVbmxpbmtlZCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZS5jb2RlT3JpZ2luLmlubGluZVN0YWNrVG9wLT5zdGFja09mZnNl
dCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRUb09wZXJhbmQoaW5kZXgg
KyAxKSkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgTm9kZUlu
ZGV4IGNoZWNrTm9kZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7CisgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGguYXBwZW5kKGNoZWNrKTsKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0
LmFwcGVuZChpbmRleEluQmxvY2ssIGNoZWNrTm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZUluZGV4IHBoYW50b21Ob2RlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQocGhhbnRvbSk7CisgICAgICAgICAgICAgICAgICAg
IGluc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCBwaGFudG9tTm9kZUluZGV4KTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgqYmxvY2spOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICB9Cit9OworCitib29sIHBlcmZv
cm1Bcmd1bWVudHNTaW1wbGlmaWNhdGlvbihHcmFwaCYgZ3JhcGgpCit7CisgICAgcmV0dXJuIHJ1
blBoYXNlPEFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2U+KGdyYXBoKTsKK30KKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBo
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNTaW1wbGlmaWNhdGlvblBoYXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2VfaAorI2RlZmlu
ZSBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKKworY2xhc3MgR3JhcGg7CisKKy8vIFNpbXBsaWZpZXMgcmVmbGVjdGl2ZSB1c2Vz
IG9mIHRoZSBBcmd1bWVudHMgb2JqZWN0LgorCitib29sIHBlcmZvcm1Bcmd1bWVudHNTaW1wbGlm
aWNhdGlvbihHcmFwaCYpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAv
LyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9u
UGhhc2VfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVs
cGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1i
bHlIZWxwZXJzLmgJKHJldmlzaW9uIDExNjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OSw2ICsyOTksMTQg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNh
bGxlZS0+anNFeGVjdXRhYmxlKCktPmlzU3RyaWN0TW9kZSgpOwogICAgIH0KICAgICAKKyAgICBF
eGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZUZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2lu
KQorICAgIHsKKyAgICAgICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKKyAgICAg
ICAgICAgIHJldHVybiBtX2NvZGVCbG9jay0+ZXhlY3V0YWJsZSgpOworICAgICAgICAKKyAgICAg
ICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpOwor
ICAgIH0KKyAgICAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvbnN0IENv
ZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAgewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2Rl
QmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhjb2RlT3JpZ2luLCBiYXNlbGluZUNv
ZGVCbG9jaygpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMTY4NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQwOCw2ICsy
NDA4LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAg
ICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzOiB7Cisg
ICAgICAgICAgICBtX2dyYXBoLm1faGFzQXJndW1lbnRzID0gdHJ1ZTsKKyAgICAgICAgICAgIG1f
Z3JhcGgubV9leGVjdXRhYmxlc1dob3NlQXJndW1lbnRzRXNjYXBlcy5hZGQobV9pbmxpbmVTdGFj
a1RvcC0+ZXhlY3V0YWJsZSgpKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBjcmVhdGVBcmd1bWVu
dHMgPSBhZGRUb0dyYXBoKENyZWF0ZUFyZ3VtZW50cywgZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpKTsKICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kLCBjcmVhdGVBcmd1bWVudHMpOwogICAgICAgICAgICAgc2V0KHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSwgY3JlYXRlQXJn
dW1lbnRzKTsKQEAgLTI0MjAsMTYgKzI0MjIsMTkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBv
cF90ZWFyX29mZl9hcmd1bWVudHM6IHsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNBcmd1bWVu
dHMgPSB0cnVlOwogICAgICAgICAgICAgYWRkVG9HcmFwaChUZWFyT2ZmQXJndW1lbnRzLCBnZXQo
dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpKSk7CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF90ZWFyX29mZl9hcmd1bWVudHMpOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9nZXRfYXJndW1lbnRzX2xl
bmd0aDogeworICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0FyZ3VtZW50cyA9IHRydWU7CiAgICAg
ICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwgYWRkVG9HcmFwaChH
ZXRNeUFyZ3VtZW50c0xlbmd0aCkpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2Fy
Z3VtZW50c19sZW5ndGgpOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBv
cF9nZXRfYXJndW1lbnRfYnlfdmFsOiB7CisgICAgICAgICAgICBtX2dyYXBoLm1faGFzQXJndW1l
bnRzID0gdHJ1ZTsKICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kLAogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoCiAgICAgICAgICAgICAgICAgICAgIEdl
dE15QXJndW1lbnRCeVZhbCwgT3BJbmZvKDApLCBPcEluZm8oZ2V0UHJlZGljdGlvbigpKSwKQEAg
LTI3MTMsNiArMjcxOCwxMiBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5s
aW5lCiAgICAgICAgIEFyZ3VtZW50UG9zaXRpb24qIGFyZ3VtZW50UG9zaXRpb24gPSAmYnl0ZUNv
ZGVQYXJzZXItPm1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5sYXN0KCk7CiAgICAgICAgIG1f
YXJndW1lbnRQb3NpdGlvbnNbaV0gPSBhcmd1bWVudFBvc2l0aW9uOwogICAgIH0KKyAgICAKKyAg
ICAvLyBUcmFjayB0aGUgY29kZS1ibG9jay1nbG9iYWwgZXhpdCBzaXRlcy4KKyAgICBpZiAobV9l
eGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShBcmd1bWVudHNFc2NhcGVkKSkgeworICAgICAgICBieXRl
Q29kZVBhcnNlci0+bV9ncmFwaC5tX2V4ZWN1dGFibGVzV2hvc2VBcmd1bWVudHNFc2NhcGVkLmFk
ZCgKKyAgICAgICAgICAgIGNvZGVCbG9jay0+ZXhlY3V0YWJsZSgpKTsKKyAgICB9CiAgICAgICAg
IAogICAgIGlmIChtX2NhbGxlcikgewogICAgICAgICAvLyBJbmxpbmUgY2FzZS4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDExNjg1OSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiAr
ODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAgICAg
ICAgICwgbV9jb2RlQmxvY2soY29kZUJsb2NrKQogICAgICAgICAsIG1fcHJvZmlsZWRCbG9jayhj
b2RlQmxvY2stPmFsdGVybmF0aXZlKCkpCisgICAgICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2Up
CiAgICAgewogICAgICAgICBBU1NFUlQobV9wcm9maWxlZEJsb2NrKTsKICAgICB9CkBAIC0zMDEs
NiArMzAyLDE0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZtX3N0cnVjdHVyZVRyYW5zaXRp
b25EYXRhLmxhc3QoKTsKICAgICB9CiAgICAgCisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKKyAgICB7CisgICAgICAgIGlmICgh
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxv
Y2stPmV4ZWN1dGFibGUoKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBjb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKTsKKyAgICB9CisgICAgCiAgICAgQ29kZUJs
b2NrKiBiYXNlbGluZUNvZGVCbG9ja0Zvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxp
bmVDb2RlQmxvY2soY29kZU9yaWdpbiwgbV9wcm9maWxlZEJsb2NrKTsKQEAgLTQwMSw2ICs0MTAs
OSBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gIWlzUHJlZGljdGVkTnVtZXJpY2FsKG5v
ZGUpOwogICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICAgICAgcmV0dXJuICFieVZhbElz
UHVyZShub2RlKTsKKyAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CisgICAgICAgICAg
ICByZXR1cm4gbV9leGVjdXRhYmxlc1dob3NlQXJndW1lbnRzRXNjYXBlZC5jb250YWlucygKKyAg
ICAgICAgICAgICAgICBtX2dyYXBoLmV4ZWN1dGFibGVGb3Iobm9kZS5jb2RlT3JpZ2luKSk7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIHJldHVybiB0cnVlOyAvLyBJZiBieSBzb21lIG9kZGl0eSB3ZSBoaXQgdGhpcyBjYXNl
IGluIHJlbGVhc2UgYnVpbGQgaXQncyBzYWZlciB0byBoYXZlIENTRSBhc3N1bWUgdGhlIHdvcnN0
LgpAQCAtNDQyLDYgKzQ1NCw4IEBAIHB1YmxpYzoKICAgICBTZWdtZW50ZWRWZWN0b3I8QXJndW1l
bnRQb3NpdGlvbiwgOD4gbV9hcmd1bWVudFBvc2l0aW9uczsKICAgICBTZWdtZW50ZWRWZWN0b3I8
U3RydWN0dXJlU2V0LCAxNj4gbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgU2VnbWVudGVkVmVjdG9yPFN0
cnVjdHVyZVRyYW5zaXRpb25EYXRhLCA4PiBtX3N0cnVjdHVyZVRyYW5zaXRpb25EYXRhOworICAg
IGJvb2wgbV9oYXNBcmd1bWVudHM7CisgICAgSGFzaFNldDxFeGVjdXRhYmxlQmFzZSo+IG1fZXhl
Y3V0YWJsZXNXaG9zZUFyZ3VtZW50c0VzY2FwZWQ7CiAgICAgQml0VmVjdG9yIG1fcHJlc2VydmVk
VmFyczsKICAgICBEb21pbmF0b3JzIG1fZG9taW5hdG9yczsKICAgICB1bnNpZ25lZCBtX2xvY2Fs
VmFyczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMTY4
NTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjAyLDEyICsyMDIsMjEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBtX29wID0gSlND
b25zdGFudDsKICAgICAgICAgaWYgKG1fZmxhZ3MgJiBOb2RlTXVzdEdlbmVyYXRlKQogICAgICAg
ICAgICAgbV9yZWZDb3VudC0tOwotICAgICAgICBBU1NFUlQoIShtX2ZsYWdzICYgTm9kZUNsb2Ji
ZXJzV29ybGQpKTsKLSAgICAgICAgbV9mbGFncyAmPSB+KE5vZGVNdXN0R2VuZXJhdGUgfCBOb2Rl
TWlnaHRDbG9iYmVyKTsKKyAgICAgICAgbV9mbGFncyAmPSB+KE5vZGVNdXN0R2VuZXJhdGUgfCBO
b2RlTWlnaHRDbG9iYmVyIHwgTm9kZUNsb2JiZXJzV29ybGQpOwogICAgICAgICBtX29wSW5mbyA9
IGNvbnN0YW50TnVtYmVyOwogICAgICAgICBjaGlsZHJlbi5yZXNldCgpOwogICAgIH0KICAgICAK
KyAgICB2b2lkIGNvbnZlcnRUb0dldExvY2FsVW5saW5rZWQoVmlydHVhbFJlZ2lzdGVyIGxvY2Fs
KQorICAgIHsKKyAgICAgICAgbV9vcCA9IEdldExvY2FsVW5saW5rZWQ7CisgICAgICAgIGlmICht
X2ZsYWdzICYgTm9kZU11c3RHZW5lcmF0ZSkKKyAgICAgICAgICAgIG1fcmVmQ291bnQtLTsKKyAg
ICAgICAgbV9mbGFncyAmPSB+KE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyIHwg
Tm9kZUNsb2JiZXJzV29ybGQpOworICAgICAgICBtX29wSW5mbyA9IGxvY2FsOworICAgICAgICBj
aGlsZHJlbi5yZXNldCgpOworICAgIH0KKyAgICAKICAgICBKU0NlbGwqIHdlYWtDb25zdGFudCgp
CiAgICAgewogICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTQ2VsbCo+KG1fb3BJbmZvKTsK
QEAgLTI4MSw2ICsyOTAsMTIgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihtX29wSW5mbyk7CiAgICAgfQogICAgIAorICAgIFZpcnR1
YWxSZWdpc3RlciB1bmxpbmtlZExvY2FsKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgpID09
IEdldExvY2FsVW5saW5rZWQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlydHVhbFJl
Z2lzdGVyPihtX29wSW5mbyk7CisgICAgfQorICAgIAogICAgIGJvb2wgaGFzSWRlbnRpZmllcigp
CiAgICAgewogICAgICAgICBzd2l0Y2ggKG9wKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDExNjg1OSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsOSBA
QCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ3JlYXRlVGhpcywg
Tm9kZVJlc3VsdEpTKSAvKiBOb3RlIHRoaXMgaXMgbm90IE11c3RHZW5lcmF0ZSBzaW5jZSB3ZSdy
ZSByZXR1cm5pbmcgaXQgYW55d2F5LiAqLyBcCiAgICAgbWFjcm8oR2V0Q2FsbGVlLCBOb2RlUmVz
dWx0SlMpIFwKICAgICBcCi0gICAgLyogTm9kZXMgZm9yIGxvY2FsIHZhcmlhYmxlIGFjY2Vzcy4g
Ki9cCisgICAgLyogTm9kZXMgZm9yIGxvY2FsIHZhcmlhYmxlIGFjY2Vzcy4gVGhlc2Ugbm9kZXMg
YXJlIGxpbmtlZCB0b2dldGhlciB1c2luZyBQaGkgbm9kZXMuICovXAorICAgIC8qIEFueSB0d28g
bm9kZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUgc2FtZSBQaGkgZ3JhcGggd2lsbCBzaGFyZSB0aGUg
c2FtZSAqL1wKKyAgICAvKiBWYXJpYWJsZUFjY2Vzc0RhdGEsIGFuZCB0aHVzIHdpbGwgc2hhcmUg
cHJlZGljdGlvbnMuICovXAogICAgIG1hY3JvKEdldExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBtYWNybyhTZXRMb2NhbCwgMCkgXAogICAgIG1hY3JvKFBoYW50b20sIE5vZGVNdXN0R2VuZXJh
dGUpIFwKQEAgLTU2LDYgKzU4LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsK
ICAgICBtYWNybyhQaGksIDApIFwKICAgICBtYWNybyhGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIFwKKyAgICAvKiBHZXQgdGhlIHZhbHVlIG9mIGEgbG9jYWwgdmFyaWFibGUsIHdpdGhv
dXQgbGlua2luZyBpbnRvIHRoZSBWYXJpYWJsZUFjY2Vzc0RhdGEgKi9cCisgICAgLyogbmV0d29y
ay4gVGhpcyBpcyBvbmx5IHZhbGlkIGZvciB2YXJpYWJsZSBhY2Nlc3NlcyB3aG9zZSBwcmVkaWN0
aW9ucyBvcmlnaW5hdGVkICovXAorICAgIC8qIGFzIHNvbWV0aGluZyBvdGhlciB0aGFuIGEgbG9j
YWwgYWNjZXNzLCBhbmQgdGh1cyBoYWQgdGhlaXIgb3duIHByb2ZpbGluZy4gKi9cCisgICAgbWFj
cm8oR2V0TG9jYWxVbmxpbmtlZCwgTm9kZVJlc3VsdEpTKSBcCisgICAgXAogICAgIC8qIE1hcmtl
ciBmb3IgYXJndW1lbnRzIGJlaW5nIHNldC4gKi9cCiAgICAgbWFjcm8oU2V0QXJndW1lbnQsIDAp
IFwKICAgICBcCkBAIC0xOTEsOCArMTk4LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogICAgIC8qIHNlbnNlLiAqL1wKICAgICBtYWNybyhDcmVhdGVBcmd1bWVudHMsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKFRlYXJPZmZBcmd1bWVudHMsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBtYWNybyhDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBtYWNybyhHZXRNeUFyZ3VtZW50c0xlbmd0aCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11
c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCi0gICAgbWFjcm8oR2V0TXlBcmd1bWVu
dEJ5VmFsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29y
bGQpIFwKKyAgICBtYWNybyhHZXRNeUFyZ3VtZW50QnlWYWwsIE5vZGVSZXN1bHRKUyB8IE5vZGVN
dXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyKSBcCiAgICAgXAogICAgIC8qIE5vZGVzIGZv
ciBjcmVhdGluZyBmdW5jdGlvbnMuICovXAogICAgIG1hY3JvKE5ld0Z1bmN0aW9uTm9DaGVjaywg
Tm9kZVJlc3VsdEpTKSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dC5jcHAJKHJldmlzaW9uIDExNjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDE2IEBAIGJvb2wgT1NSRXhp
dDo6Y29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXgKICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91Ymxl
PihtX2NvdW50KSAvIGRmZ0NvZGVCbG9jay0+c3BlY3VsYXRpdmVGYWlsQ291bnRlcigpIDw9IE9w
dGlvbnM6Om9zckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0U2l0ZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIAotICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFu
ZEJhc2VsaW5lQ29kZUJsb2NrKG1fY29kZU9yaWdpbiwgcHJvZmlsZWRDb2RlQmxvY2spLT5hZGRG
cmVxdWVudEV4aXRTaXRlKEZyZXF1ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5k
ZXgsIG1fa2luZCkpOworICAgIEZyZXF1ZW50RXhpdFNpdGUgZXhpdFNpdGU7CisgICAgCisgICAg
aWYgKG1fa2luZCA9PSBBcmd1bWVudHNFc2NhcGVkKSB7CisgICAgICAgIC8vIENvdW50IHRoaXMg
b25lIGdsb2JhbGx5LiBJdCBkb2Vzbid0IG1hdHRlciB3aGVyZSBpbiB0aGUgY29kZSBibG9jayB0
aGUgYXJndW1lbnRzIGV4Y2FwZWQ7CisgICAgICAgIC8vIHRoZSBmYWN0IHRoYXQgdGhleSBkaWQg
aXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbnkgcGFydGljdWxhciBpbnN0cnVjdGlvbi4KKyAgICAg
ICAgZXhpdFNpdGUgPSBGcmVxdWVudEV4aXRTaXRlKG1fa2luZCk7CisgICAgfSBlbHNlCisgICAg
ICAgIGV4aXRTaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShtX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCwgbV9raW5kKTsKKyAgICAKKyAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5B
bmRCYXNlbGluZUNvZGVCbG9jayhtX2NvZGVPcmlnaW4sIHByb2ZpbGVkQ29kZUJsb2NrKS0+YWRk
RnJlcXVlbnRFeGl0U2l0ZShleGl0U2l0ZSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpE
RkcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMTY4NTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjE1LDcgKzYxNSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
R2V0RmxvYXQzMkFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIEdldEZsb2F0NjRBcnJheUxlbmd0
aDoKICAgICAgICAgY2FzZSBHZXRTdHJpbmdMZW5ndGg6Ci0gICAgICAgIGNhc2UgSW50MzJUb0Rv
dWJsZTogeworICAgICAgICBjYXNlIEludDMyVG9Eb3VibGU6CisgICAgICAgIGNhc2UgQ2hlY2tB
cmd1bWVudHNOb3RDcmVhdGVkOgorICAgICAgICBjYXNlIEdldExvY2FsVW5saW5rZWQ6IHsKICAg
ICAgICAgICAgIC8vIFRoaXMgbm9kZSBzaG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0
YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBpcwogICAgICAgICAgICAgLy8gaW5zZXJ0ZWQgYnkgZml4
dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlzIHBoYXNlLgogICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDExNjg1OSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5ODUs
NiArMTk4NSwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNhc2UgR2V0TG9jYWxVbmxpbmtlZDogeworICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAKKyAgICAgICAgbV9qaXQu
bG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLnVubGlua2VkTG9jYWwoKSksIHJl
c3VsdC5ncHIoKSk7CisgICAgICAgIAorICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIo
KSwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIFNl
dExvY2FsOiB7CiAgICAgICAgIC8vIFNldExvY2FsIGRvdWJsZXMgYXMgYSBoaW50IGFzIHRvIHdo
ZXJlIGEgbm9kZSB3aWxsIGJlIHN0b3JlZCBhbmQKICAgICAgICAgLy8gYXMgYSBzcGVjdWxhdGlv
biBwb2ludC4gU28gYmVmb3JlIHdlIHNwZWN1bGF0ZSBtYWtlIHN1cmUgdGhhdCB3ZQpAQCAtMzg4
MSw2ICszODkwLDIyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3Vs
dEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCisgICAgICAgIGlmICghbV9ncmFwaC5tX2V4
ZWN1dGFibGVzV2hvc2VBcmd1bWVudHNFc2NhcGVkLmNvbnRhaW5zKAorICAgICAgICAgICAgICAg
IG1fZ3JhcGguZXhlY3V0YWJsZUZvcihub2RlLmNvZGVPcmlnaW4pKSkgeworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBBcmd1bWVudHNDcmVhdGVkLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cigK
KyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCisgICAgICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKAorICAgICAgICAgICAgICAgICAgICAgICAg
bV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSkpKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgQVNTRVJUKCFub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KTsKKyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihSZWdp
c3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQu
c3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOworICAgICAgICAgICAgaW50ZWdlclJl
c3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBjcmVhdGVkID0gbV9q
aXQuYnJhbmNoVGVzdFB0cigKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLAogICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCkBAIC0zOTE4LDYgKzM5NDMsNDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcg
aW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKICAgICAgICAgCisgICAgICAgIGlmICghbV9ncmFwaC5tX2V4ZWN1dGFibGVzV2hv
c2VBcmd1bWVudHNFc2NhcGVkLmNvbnRhaW5zKAorICAgICAgICAgICAgICAgIG1fZ3JhcGguZXhl
Y3V0YWJsZUZvcihub2RlLmNvZGVPcmlnaW4pKSkgeworICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjaygKKyAgICAgICAgICAgICAgICBBcmd1bWVudHNDcmVhdGVkLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cigKKyAgICAgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCisgICAgICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjphZGRyZXNzRm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYXJndW1l
bnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSkpKTsKKworICAgICAgICAgICAgbV9qaXQu
YWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBpbmRleEdQUiwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAg
IGlmIChub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCisg
ICAgICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLAorICAgICAg
ICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgSW1t
MzIobm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygK
KyAgICAgICAgICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwK
KyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFsLAorICAgICAgICAgICAgICAgICAgICAgICAg
cmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnBheWxvYWRG
b3IoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KSkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICBtX2ppdC5uZWczMihyZXN1bHRHUFIpOworICAgICAgICAgICAg
bV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0R1BSLCByZXN1bHRHUFIpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKAorICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpCYXNlSW5kZXgoCisgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJl
Z2lzdGVyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVyOjpUaW1lc0VpZ2h0LAorICAgICAgICAgICAg
ICAgICAgICAoKG5vZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUKKyAgICAgICAgICAgICAg
ICAgICAgICA/IG5vZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0Cisg
ICAgICAgICAgICAgICAgICAgICAgOiAwKSArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNs
dWRpbmdUaGlzKDApKSAqIHNpemVvZihSZWdpc3RlcikpLAorICAgICAgICAgICAgICAgIHJlc3Vs
dEdQUik7CisKKyAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJ
bmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRoOwogICAgICAgICBzbG93UGF0aC5hcHBlbmQo
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKApAQCAtMzk2MSw2ICs0MDI3LDE3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90Q3JlYXRlZDogewor
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgQXJndW1lbnRzQ3JlYXRlZCwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAorICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cigK
KyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6YWRkcmVzc0ZvcigKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYXJndW1l
bnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSkpKTsKKyAgICAgICAgbm9SZXN1bHQobV9j
b21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2Ug
TmV3RnVuY3Rpb25Ob0NoZWNrOgogICAgICAgICBjb21waWxlTmV3RnVuY3Rpb25Ob0NoZWNrKG5v
ZGUpOwogICAgICAgICBicmVhazsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141776</attachid>
            <date>2012-05-14 13:37:50 -0700</date>
            <delta_ts>2012-05-14 14:40:43 -0700</delta_ts>
            <desc>more</desc>
            <filename>inlined_arguments_opt_patch_2.diff</filename>
            <type>text/plain</type>
            <size>40917</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2OTg2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYxIEBA
CisyMDEyLTA1LTE0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBvcHRpbWl6ZSBpbmxpbmVkIHVzZXMgb2YgYXJndW1lbnRzLmxlbmd0aCBhbmQg
YXJndW1lbnRzW2ldCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NjMyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4gSXQga2luZCBvZiB3b3JrcyBidXQgc3RpbGwg
bmVlZHMgbW9yZSBsb3ZlLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oOgorICAg
ICAgICAoRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0
U2l0ZTo6RnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkRGRzo6UXVlcnlhYmxlRXhp
dFByb2ZpbGU6Omhhc0V4aXRTaXRlKToKKyAgICAgICAgKFF1ZXJ5YWJsZUV4aXRQcm9maWxlKToK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChBcmd1
bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudHNT
aW1wbGlmaWNhdGlvblBoYXNlOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlKToKKyAgICAg
ICAgKEpTQzo6REZHOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlOjpydW4pOgorICAgICAg
ICAoSlNDOjpERkc6OnBlcmZvcm1Bcmd1bWVudHNTaW1wbGlmaWNhdGlvbik6CisgICAgICAgICog
ZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaDogQWRkZWQuCisgICAgICAgIChE
RkcpOgorICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkFzc2VtYmx5SGVscGVyczo6ZXhlY3V0YWJsZUZvcik6CisgICAgICAgIChERkcpOgor
ICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMuaDoKKyAgICAgICAgKEFzc2VtYmx5SGVs
cGVycyk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAg
ICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6
OmdldExvY2FsTG9hZEVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6
cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRmZy9ERkdDb21tb24uaDoKKyAgICAgICAgKiBk
ZmcvREZHRHJpdmVyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjb21waWxlKToKKyAgICAgICAg
KiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6R3JhcGgpOgorICAg
ICAgICAoSlNDOjpERkc6OkdyYXBoOjpleGVjdXRhYmxlRm9yKToKKyAgICAgICAgKEdyYXBoKToK
KyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6Y2xvYmJlcnNXb3JsZCk6CisgICAgICAgICogZGZn
L0RGR05vZGUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9Db25zdGFudCk6
CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29udmVydFRvR2V0TG9jYWxVbmxpbmtlZCk6Cisg
ICAgICAgIChOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp1bmxpbmtlZExvY2FsKToK
KyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICog
ZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNvbnNpZGVy
QWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlU2xvdyk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJv
cGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
CiAyMDEyLTA1LTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAg
REZHIHNob3VsZCBiZSBhYmxlIHRvIG9wdGltaXplIGZvby5hcHBseShiYXIsIGFyZ3VtZW50cykK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTY5MTIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsOCBAQAogCQkwRjBCODNCOTE0QkNGOTVG
MDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4
NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEZDNDVBMTRCRDE1RjUwMEI4
MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExp
bmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAw
NURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMTYwMTVEMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdBcmd1
bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTYwMTVBMTU2MTk4QkYwMEMyNTg3QyAvKiBERkdBcmd1bWVu
dHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCAqLzsgfTsKKwkJMEYxNjAxNUUxNTYxOThDOTAwQzI1
ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTYwMTVCMTU2MTk4QkYwMEMyNTg3QyAv
KiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxRTNBNDYxNTM0Q0JBRjAwMEY5NDU2IC8q
IERGR0FyZ3VtZW50UG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMUUzQTQzMTUzNENCQUQwMDBGOTQ1NiAvKiBERkdBcmd1bWVudFBvc2l0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYxRTNBNDcxNTM0Q0JCOTAwMEY5NDU2IC8qIERGR0RvdWJsZUZvcm1hdFN0YXRlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFFM0E0NDE1MzRDQkFE
MDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjFFM0E2NzE1M0EyMUUyMDAwRjk0NTYgLyog
REZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYxRTNBNjUxNTNBMjFERjAwMEY5NDU2IC8qIERGR1NpbGVudFJl
Z2lzdGVyU2F2ZVBsYW4uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNzU3LDYgKzc1OSw4IEBACiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAv
KiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRD
YWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxs
TGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTcz
QTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb21tb25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYxNjAxNUExNTYxOThCRjAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhh
c2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXJndW1lbnRz
U2ltcGxpZmljYXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQXJndW1lbnRzU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMTYwMTVCMTU2
MTk4QkYwMEMyNTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhh
c2UuaDsgcGF0aCA9IGRmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMUUzQTQzMTUzNENCQUQwMDBGOTQ1NiAvKiBERkdB
cmd1bWVudFBvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0Fy
Z3VtZW50UG9zaXRpb24uaDsgcGF0aCA9IGRmZy9ERkdBcmd1bWVudFBvc2l0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMUUzQTQ0MTUzNENCQUQwMDBGOTQ1NiAvKiBERkdE
b3VibGVGb3JtYXRTdGF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdE
b3VibGVGb3JtYXRTdGF0ZS5oOyBwYXRoID0gZGZnL0RGR0RvdWJsZUZvcm1hdFN0YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMUUzQTUwMTUzN0MyQ0IwMDBGOTQ1NiAvKiBE
RkdTbG93UGF0aEdlbmVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdTbG93UGF0aEdlbmVyYXRvci5oOyBwYXRoID0gZGZnL0RGR1Nsb3dQYXRoR2VuZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQ1LDYgKzIwNDksOCBAQAogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQkwRjFFM0E0MzE1MzRDQkFEMDAwRjk0
NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oICovLAorCQkJCTBGMTYwMTVBMTU2MTk4QkYwMEMy
NTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCAqLywKKwkJCQkwRjE2
MDE1QjE1NjE5OEJGMDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5o
ICovLAogCQkJCTBGNjIwMTZEMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmNw
cCAqLywKIAkJCQkwRjYyMDE2RTE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5o
ICovLAogCQkJCTBGNjIwMTZGMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFZhbHVlLmgg
Ki8sCkBAIC0yNjA0LDYgKzI2MTAsNyBAQAogCQkJCTBGM0IzQTI4MTU0NEM5OTcwMDNFRDBGRiAv
KiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjNCM0Ey
QzE1NDc1MDAyMDAzRUQwRkYgLyogREZHVmFsaWRhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
RDgxQUQzMTU0RkI0RjAwMDk4M0U3MiAvKiBERkdEb21pbmF0b3JzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjE2MDE1RTE1NjE5OEM5MDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zMTcxLDYgKzMxNzgsNyBAQAogCQkJCTBGM0Iz
QTI3MTU0NEM5OTUwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGM0IzQTJCMTU0NzUwMDAwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkQ4MUFEMjE1NEZCNEVFMDA5ODNFNzIgLyogREZHRG9t
aW5hdG9ycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjE2MDE1RDE1NjE5OEM5MDBDMjU4N0Mg
LyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5o
CShyZXZpc2lvbiAxMTY5MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZH
RXhpdFByb2ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBlbnVtIEV4aXRL
aW5kIHsKICAgICBPdmVyZmxvdywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugb2Ygb3ZlcmZsb3cuCiAg
ICAgTmVnYXRpdmVaZXJvLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmNvdW50ZXJlZCBuZWdh
dGl2ZSB6ZXJvLgogICAgIEluYWRlcXVhdGVDb3ZlcmFnZSwgLy8gV2UgZXhpdGVkIGJlY2F1c2Ug
d2UgZW5kZWQgdXAgaW4gY29kZSB0aGF0IGRpZG4ndCBoYXZlIHByb2ZpbGluZyBjb3ZlcmFnZS4K
KyAgICBBcmd1bWVudHNFc2NhcGVkLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSBhcmd1bWVudHMgZXNj
YXBlZCBidXQgd2UgZGlkbid0IGV4cGVjdCB0aGVtIHRvLgogICAgIFVuY291bnRhYmxlLCAvLyBX
ZSBleGl0ZWQgZm9yIG5vbmUgb2YgdGhlIGFib3ZlIHJlYXNvbnMsIGFuZCB3ZSBzaG91bGQgbm90
IGNvdW50IGl0LiBNb3N0IHVzZXMgb2YgdGhpcyBzaG91bGQgYmUgdmlld2VkIGFzIGEgRklYTUUu
CiB9OwogCkBAIC05Niw2ICs5NywxNSBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChleGl0S2lu
ZElzQ291bnRhYmxlKGtpbmQpKTsKICAgICB9CiAgICAgCisgICAgLy8gVXNlIHRoaXMgY29uc3Ry
dWN0b3IgaWYgeW91IHdpc2ggZm9yIHRoZSBleGl0IHNpdGUgdG8gYmUgY291bnRlZCBnbG9iYWxs
eSB3aXRoaW4gaXRzCisgICAgLy8gY29kZSBibG9jay4KKyAgICBleHBsaWNpdCBGcmVxdWVudEV4
aXRTaXRlKEV4aXRLaW5kIGtpbmQpCisgICAgICAgIDogbV9ieXRlY29kZU9mZnNldCgwKQorICAg
ICAgICAsIG1fa2luZChraW5kKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGV4aXRLaW5kSXNDb3Vu
dGFibGUoa2luZCkpOworICAgIH0KKyAgICAKICAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0CiAg
ICAgewogICAgICAgICByZXR1cm4gbV9raW5kID09IEV4aXRLaW5kVW5zZXQ7CkBAIC0xNzgsNiAr
MTg4LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fZnJlcXVlbnRFeGl0U2l0ZXMuZmlu
ZChzaXRlKSAhPSBtX2ZyZXF1ZW50RXhpdFNpdGVzLmVuZCgpOwogICAgIH0KICAgICAKKyAgICBi
b29sIGhhc0V4aXRTaXRlKEV4aXRLaW5kIGtpbmQpIGNvbnN0CisgICAgeworICAgICAgICByZXR1
cm4gaGFzRXhpdFNpdGUoRnJlcXVlbnRFeGl0U2l0ZShraW5kKSk7CisgICAgfQorICAgIAogICAg
IGJvb2wgaGFzRXhpdFNpdGUodW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgRXhpdEtpbmQga2luZCkg
Y29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBoYXNFeGl0U2l0ZShGcmVxdWVudEV4aXRTaXRl
KGJ5dGVjb2RlSW5kZXgsIGtpbmQpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkocmV2aXNpb24gMTE2OTEyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjY3LDYgKzI2NywxMSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5k
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBHZXRMb2NhbFVubGlu
a2VkOiB7CisgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBTZXRMb2NhbDogewogICAgICAgICBpZiAo
bm9kZS52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+aXNDYXB0dXJlZCgpKQogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMDc0LDYgKzEwNzksMTkgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVu
c2lnbmVkIGluZAogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBHZXRNeUFyZ3Vt
ZW50c0xlbmd0aDoKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1fZXhlY3V0YWJsZXNXaG9zZUFyZ3Vt
ZW50c0VzY2FwZWQuY29udGFpbnMoCisgICAgICAgICAgICAgICAgbV9ncmFwaC5leGVjdXRhYmxl
Rm9yKG5vZGUuY29kZU9yaWdpbikpKSB7CisgICAgICAgICAgICAvLyBXZSBrbm93IHRoYXQgdGhp
cyBleGVjdXRhYmxlIGRvZXMgbm90IGVzY2FwZSBpdHMgYXJndW1lbnRzLCBzbyB3ZSBjYW4gb3B0
aW1pemUKKyAgICAgICAgICAgIC8vIHRoZSBhcmd1bWVudHMgYSBiaXQuIE5vdGUgdGhhdCB0aGlz
IGlzIG5vdCBzdWZmaWNpZW50IHRvIGZvcmNlIGNvbnN0YW50IGZvbGRpbmcKKyAgICAgICAgICAg
IC8vIG9mIEdldE15QXJndW1lbnRzTGVuZ3RoLCBiZWNhdXNlIEdldE15QXJndW1lbnRzTGVuZ3Ro
IGlzIGEgY2xvYmJlcmluZyBvcGVyYXRpb24uCisgICAgICAgICAgICAvLyBXZSBwZXJmb3JtIGZ1
cnRoZXIgb3B0aW1pemF0aW9ucyBvbiB0aGlzIGxhdGVyIG9uLgorICAgICAgICAgICAgaWYgKG5v
ZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAgICAgICAgICBmb3JOb2Rl
KG5vZGVJbmRleCkuc2V0KGpzTnVtYmVyKG5vZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUt
PmFyZ3VtZW50cy5zaXplKCkgLSAxKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFByZWRpY3RJbnQzMik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICAvLyBUaGlzIHBvdGVudGlh
bGx5IGNsb2JiZXJzIGFsbCBzdHJ1Y3R1cmVzIGlmIHRoZSBhcmd1bWVudHMgb2JqZWN0IGhhZCBh
IGdldHRlcgogICAgICAgICAvLyBpbnN0YWxsZWQgb24gdGhlIGxlbmd0aCBwcm9wZXJ0eS4KICAg
ICAgICAgY2xvYmJlclN0cnVjdHVyZXMoaW5kZXhJbkJsb2NrKTsKQEAgLTEwODMsNiArMTEwMSwx
NSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQgaW5kCiAgICAgICAgIGJy
ZWFrOwogICAgICAgICAKICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKKyAgICAgICAgaWYg
KCFtX2dyYXBoLm1fZXhlY3V0YWJsZXNXaG9zZUFyZ3VtZW50c0VzY2FwZWQuY29udGFpbnMoCisg
ICAgICAgICAgICAgICAgbV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUuY29kZU9yaWdpbikpKSB7
CisgICAgICAgICAgICAvLyBXZSBrbm93IHRoYXQgdGhpcyBleGVjdXRhYmxlIGRvZXMgbm90IGVz
Y2FwZSBpdHMgYXJndW1lbnRzLCBzbyB3ZSBjYW4gb3B0aW1pemUKKyAgICAgICAgICAgIC8vIHRo
ZSBhcmd1bWVudHMgYSBiaXQuIE5vdGUgdGhhdCB0aGlzIGVuZHMgdXAgYmVpbmcgZnVydGhlciBv
cHRpbWl6ZWQgYnkgdGhlCisgICAgICAgICAgICAvLyBBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBo
YXNlLgorICAgICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxkMSgpKS5maWx0ZXIoUHJlZGljdElu
dDMyKTsKKyAgICAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5tYWtlVG9wKCk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICAvLyBUaGlzIHBvdGVudGlhbGx5IGNsb2Ji
ZXJzIGFsbCBzdHJ1Y3R1cmVzIGlmIHRoZSBwcm9wZXJ0eSB3ZSdyZSBhY2Nlc3NpbmcgaGFzCiAg
ICAgICAgIC8vIGEgZ2V0dGVyLiBXZSBkb24ndCBzcGVjdWxhdGUgYWdhaW5zdCB0aGlzLgogICAg
ICAgICBjbG9iYmVyU3RydWN0dXJlcyhpbmRleEluQmxvY2spOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0
aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkRGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9u
UGhhc2UuaCIKKworI2lmIEVOQUJMRShERkdfSklUKQorCisjaW5jbHVkZSAiREZHQWJzdHJhY3RT
dGF0ZS5oIgorI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2suaCIKKyNpbmNsdWRlICJERkdHcmFwaC5o
IgorI2luY2x1ZGUgIkRGR0luc2VydGlvblNldC5oIgorI2luY2x1ZGUgIkRGR1BoYXNlLmgiCisj
aW5jbHVkZSAiREZHVmFsaWRhdGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
eworCitjbGFzcyBBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsK
K3B1YmxpYzoKKyAgICBBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlKEdyYXBoJiBncmFwaCkK
KyAgICAgICAgOiBQaGFzZShncmFwaCwgImFyZ3VtZW50cyBzaW1wbGlmaWNhdGlvbiIpCisgICAg
eworICAgIH0KKyAgICAKKyAgICBib29sIHJ1bigpCisgICAgeworICAgICAgICBpZiAoIW1fZ3Jh
cGgubV9oYXNBcmd1bWVudHMpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAor
ICAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIEluc2VydGlv
blNldDxOb2RlSW5kZXg+IGluc2VydGlvblNldDsKKyAgICAgICAgCisgICAgICAgIGZvciAoQmxv
Y2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6
ZSgpOyArK2Jsb2NrSW5kZXgpIHsKKyAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9n
cmFwaC5tX2Jsb2Nrc1tibG9ja0luZGV4XS5nZXQoKTsKKyAgICAgICAgICAgIGlmICghYmxvY2sp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4SW5CbG9jayA9IDA7IGluZGV4SW5CbG9jayA8IGJsb2NrLT5zaXplKCk7ICsraW5kZXhJbkJs
b2NrKSB7CisgICAgICAgICAgICAgICAgTm9kZUluZGV4IG5vZGVJbmRleCA9IGJsb2NrLT5hdChp
bmRleEluQmxvY2spOworICAgICAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW25vZGVJ
bmRleF07CisgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEdldE15QXJndW1lbnRzTGVuZ3RoOiB7CisgICAgICAgICAgICAgICAgICAgIGlm
IChtX2dyYXBoLm1fZXhlY3V0YWJsZXNXaG9zZUFyZ3VtZW50c0VzY2FwZWQuY29udGFpbnMoCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5leGVjdXRhYmxlRm9yKG5vZGUuY29k
ZU9yaWdpbikpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgICAgIGlmICghbm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgLy8gV2Uga25vdyBleGFjdGx5IHdoYXQgdGhpcyB3aWxsIHJldHVybi4gQnV0IG9ubHkg
YWZ0ZXIgd2UgaGF2ZSBjaGVja2VkCisgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgbm9ib2R5
IGhhcyBlc2NhcGVkIG91ciBhcmd1bWVudHMuCisgICAgICAgICAgICAgICAgICAgIE5vZGUgY2hl
Y2soQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkLCBub2RlLmNvZGVPcmlnaW4pOworICAgICAgICAg
ICAgICAgICAgICBjaGVjay5yZWYoKTsKKyAgICAgICAgICAgICAgICAgICAgTm9kZUluZGV4IGNo
ZWNrSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5h
cHBlbmQoY2hlY2spOworICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuYXBwZW5kKGlu
ZGV4SW5CbG9jaywgY2hlY2tJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KAorICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZUluZGV4LCBqc051bWJlcihub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpIC0gMSkpOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZh
bDogeworICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2V4ZWN1dGFibGVzV2hvc2VB
cmd1bWVudHNFc2NhcGVkLmNvbnRhaW5zKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Z3JhcGguZXhlY3V0YWJsZUZvcihub2RlLmNvZGVPcmlnaW4pKSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUuY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFtX2dyYXBoW25vZGUuY2hpbGQxKCldLmhhc0NvbnN0YW50KCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0udmFsdWVPZkpTQ29uc3RhbnQoY29kZUJs
b2NrKCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzSW50MzIoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGlu
ZGV4ID0gdmFsdWUuYXNJbnQzMigpOworICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCAw
CisgICAgICAgICAgICAgICAgICAgICAgICB8fCBzdGF0aWNfY2FzdDxzaXplX3Q+KGluZGV4ICsg
MSkgPj0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBXZSBrbm93
IHdoaWNoIGFyZ3VtZW50IHRoaXMgaXMgYWNjZXNzaW5nLiBCdXQgb25seSBhZnRlciB3ZSBoYXZl
IGNoZWNrZWQKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBub2JvZHkgaGFzIGVzY2FwZWQg
b3VyIGFyZ3VtZW50cy4gV2UgYWxzbyBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZQorICAgICAgICAg
ICAgICAgICAgICAvLyBpbmRleCBpcyBrZXB0IGFsaXZlLiBUaGF0J3Mgc29tZXdoYXQgcG9pbnRs
ZXNzIHNpbmNlIGl0J3MgYSBjb25zdGFudCwgYnV0CisgICAgICAgICAgICAgICAgICAgIC8vIGl0
J3MgaW1wb3J0YW50IGJlY2F1c2UgdGhpcyBpcyBvbmUgb2YgdGhvc2UgaW52YXJpYW50cyB0aGF0
IHdlIGxpa2UgdG8KKyAgICAgICAgICAgICAgICAgICAgLy8gaGF2ZSBpbiB0aGUgREZHLiBOb3Rl
IGZpbmFsbHkgdGhhdCB3ZSB1c2UgdGhlIEdldExvY2FsVW5saW5rZWQgb3Bjb2RlCisgICAgICAg
ICAgICAgICAgICAgIC8vIGhlcmUsIHNpbmNlIHRoaXMgaXMgYmVpbmcgZG9uZSBfYWZ0ZXJfIHRo
ZSBwcmVkaWN0aW9uIHByb3BhZ2F0aW9uIHBoYXNlCisgICAgICAgICAgICAgICAgICAgIC8vIGhh
cyBydW4gLSB0aGVyZWZvcmUgaXQgbWFrZXMgbGl0dGxlIHNlbnNlIHRvIGxpbmsgdGhlIEdldExv
Y2FsIG9wZXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAvLyBpbnRvIHRoZSBWYXJpYWJsZUFj
Y2Vzc0RhdGEgYW5kIFBoaSBncmFwaHMuCisKKyAgICAgICAgICAgICAgICAgICAgTm9kZSBjaGVj
ayhDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQsIG5vZGUuY29kZU9yaWdpbik7CisgICAgICAgICAg
ICAgICAgICAgIGNoZWNrLnJlZigpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSBwaGFudG9tKFBoYW50b20sIG5vZGUuY29kZU9yaWdpbik7CisgICAgICAg
ICAgICAgICAgICAgIHBoYW50b20ucmVmKCk7CisgICAgICAgICAgICAgICAgICAgIHBoYW50b20u
Y2hpbGRyZW4gPSBub2RlLmNoaWxkcmVuOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgbm9kZS5jb252ZXJ0VG9HZXRMb2NhbFVubGlua2VkKAorICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPigKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRUb09wZXJhbmQoaW5kZXgg
KyAxKSkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgTm9kZUlu
ZGV4IGNoZWNrTm9kZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7CisgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGguYXBwZW5kKGNoZWNrKTsKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0
LmFwcGVuZChpbmRleEluQmxvY2ssIGNoZWNrTm9kZUluZGV4KTsKKyAgICAgICAgICAgICAgICAg
ICAgTm9kZUluZGV4IHBoYW50b21Ob2RlSW5kZXggPSBtX2dyYXBoLnNpemUoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9ncmFwaC5hcHBlbmQocGhhbnRvbSk7CisgICAgICAgICAgICAgICAgICAg
IGluc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2NrLCBwaGFudG9tTm9kZUluZGV4KTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlu
c2VydGlvblNldC5leGVjdXRlKCpibG9jayk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHJldHVybiBjaGFuZ2VkOworICAgIH0KK307CisKK2Jvb2wgcGVyZm9ybUFyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uKEdyYXBoJiBncmFwaCkKK3sKKyAgICByZXR1cm4gcnVuUGhhc2U8QXJndW1lbnRz
U2ltcGxpZmljYXRpb25QaGFzZT4oZ3JhcGgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9u
UGhhc2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJn
dW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
REZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZV9oCisjZGVmaW5lIERGR0FyZ3VtZW50c1Np
bXBsaWZpY2F0aW9uUGhhc2VfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBF
TkFCTEUoREZHX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFz
cyBHcmFwaDsKKworLy8gU2ltcGxpZmllcyByZWZsZWN0aXZlIHVzZXMgb2YgdGhlIEFyZ3VtZW50
cyBvYmplY3Q6CisvLworLy8gSW5saW5lZCBhcmd1bWVudHMubGVuZ3RoIC0+IGNvbnN0YW50Cisv
LyBJbmxpbmVkIGFyZ3VtZW50c1tjb25zdGFudF0gLT4gR2V0TG9jYWxVbmxpbmtlZAorCitib29s
IHBlcmZvcm1Bcmd1bWVudHNTaW1wbGlmaWNhdGlvbihHcmFwaCYpOworCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERG
R0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2VfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAxMTY5MTIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDE0IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
REZHIHsKIAogY29uc3QgZG91YmxlIEFzc2VtYmx5SGVscGVyczo6dHdvVG9UaGUzMiA9IChkb3Vi
bGUpMHgxMDAwMDAwMDB1bGw7CiAKK0V4ZWN1dGFibGVCYXNlKiBBc3NlbWJseUhlbHBlcnM6OmV4
ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKK3sKKyAgICBpZiAoIWNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpOworICAgIAorICAgIHJldHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZS0+ZXhlY3V0YWJsZS5nZXQoKTsKK30KKwogVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9m
ZnNldD4mIEFzc2VtYmx5SGVscGVyczo6ZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCiB7CiAgICAgQVNTRVJUKGNvZGVCbG9jayA9PSBjb2RlQmxvY2stPmJhc2VsaW5lVmVy
c2lvbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxw
ZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJs
eUhlbHBlcnMuaAkocmV2aXNpb24gMTE2OTEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjk5LDYgKzI5OSw4IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxs
ZWUtPmpzRXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKTsKICAgICB9CiAgICAgCisgICAgRXhl
Y3V0YWJsZUJhc2UqIGV4ZWN1dGFibGVGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbik7
CisgICAgCiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0Zvcihjb25zdCBDb2RlT3Jp
Z2luJiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2Nr
Rm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwgYmFzZWxpbmVDb2RlQmxv
Y2soKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkocmV2aXNpb24gMTE2OTEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NTIsNiArMjQ1Miw4
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgfQog
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfY3JlYXRlX2FyZ3VtZW50czogeworICAgICAg
ICAgICAgbV9ncmFwaC5tX2hhc0FyZ3VtZW50cyA9IHRydWU7CisgICAgICAgICAgICBtX2dyYXBo
Lm1fZXhlY3V0YWJsZXNXaG9zZUFyZ3VtZW50c0VzY2FwZWQuYWRkKG1faW5saW5lU3RhY2tUb3At
PmV4ZWN1dGFibGUoKSk7CiAgICAgICAgICAgICBOb2RlSW5kZXggY3JlYXRlQXJndW1lbnRzID0g
YWRkVG9HcmFwaChDcmVhdGVBcmd1bWVudHMsIGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKSk7CiAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFu
ZCwgY3JlYXRlQXJndW1lbnRzKTsKICAgICAgICAgICAgIHNldCh1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCksIGNyZWF0ZUFyZ3VtZW50
cyk7CkBAIC0yNDY0LDE2ICsyNDY2LDE5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfdGVh
cl9vZmZfYXJndW1lbnRzOiB7CisgICAgICAgICAgICBtX2dyYXBoLm1faGFzQXJndW1lbnRzID0g
dHJ1ZTsKICAgICAgICAgICAgIGFkZFRvR3JhcGgoVGVhck9mZkFyZ3VtZW50cywgZ2V0KHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKSkp
OwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfdGVhcl9vZmZfYXJndW1lbnRzKTsKICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6
IHsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNBcmd1bWVudHMgPSB0cnVlOwogICAgICAgICAg
ICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoR2V0TXlB
cmd1bWVudHNMZW5ndGgpKTsKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9hcmd1bWVu
dHNfbGVuZ3RoKTsKICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAgICAgIGNhc2Ugb3BfZ2V0
X2FyZ3VtZW50X2J5X3ZhbDogeworICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0FyZ3VtZW50cyA9
IHRydWU7CiAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwK
ICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKAogICAgICAgICAgICAgICAgICAgICBHZXRNeUFy
Z3VtZW50QnlWYWwsIE9wSW5mbygwKSwgT3BJbmZvKGdldFByZWRpY3Rpb24oKSksCkBAIC0yNzU4
LDYgKzI3NjMsMTIgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQog
ICAgICAgICBBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVudFBvc2l0aW9uID0gJmJ5dGVDb2RlUGFy
c2VyLT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMubGFzdCgpOwogICAgICAgICBtX2FyZ3Vt
ZW50UG9zaXRpb25zW2ldID0gYXJndW1lbnRQb3NpdGlvbjsKICAgICB9CisgICAgCisgICAgLy8g
VHJhY2sgdGhlIGNvZGUtYmxvY2stZ2xvYmFsIGV4aXQgc2l0ZXMuCisgICAgaWYgKG1fZXhpdFBy
b2ZpbGUuaGFzRXhpdFNpdGUoQXJndW1lbnRzRXNjYXBlZCkpIHsKKyAgICAgICAgYnl0ZUNvZGVQ
YXJzZXItPm1fZ3JhcGgubV9leGVjdXRhYmxlc1dob3NlQXJndW1lbnRzRXNjYXBlZC5hZGQoCisg
ICAgICAgICAgICBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpKTsKKyAgICB9CiAgICAgICAg
IAogICAgIGlmIChtX2NhbGxlcikgewogICAgICAgICAvLyBJbmxpbmUgY2FzZS4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCShyZXZpc2lvbiAxMTY5MTIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDQxLDIwICs0NDEsMzMgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIE5vTm9k
ZTsKICAgICB9CiAgICAgCi0gICAgTm9kZUluZGV4IGdldExvY2FsTG9hZEVsaW1pbmF0aW9uKFZh
cmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhKQorICAgIE5vZGVJbmRleCBnZXRM
b2NhbExvYWRFbGltaW5hdGlvbihWaXJ0dWFsUmVnaXN0ZXIgbG9jYWwsIE5vZGVJbmRleCYgcmVs
ZXZhbnRMb2NhbE9wKQogICAgIHsKKyAgICAgICAgcmVsZXZhbnRMb2NhbE9wID0gTm9Ob2RlOwor
ICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTsp
IHsKICAgICAgICAgICAgIE5vZGVJbmRleCBpbmRleCA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsK
ICAgICAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW2luZGV4XTsKICAgICAgICAgICAgIHN3
aXRjaCAobm9kZS5vcCgpKSB7CiAgICAgICAgICAgICBjYXNlIEdldExvY2FsOgotICAgICAgICAg
ICAgICAgIGlmIChub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpID09IHZhcmlhYmxlQWNjZXNzRGF0
YSkKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5sb2NhbCgpID09IGxvY2FsKSB7CisgICAgICAg
ICAgICAgICAgICAgIHJlbGV2YW50TG9jYWxPcCA9IGluZGV4OworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gaW5kZXg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOgor
ICAgICAgICAgICAgICAgIGlmIChub2RlLnVubGlua2VkTG9jYWwoKSA9PSBsb2NhbCkgeworICAg
ICAgICAgICAgICAgICAgICByZWxldmFudExvY2FsT3AgPSBpbmRleDsKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgU2V0TG9jYWw6Ci0gICAg
ICAgICAgICAgICAgaWYgKG5vZGUudmFyaWFibGVBY2Nlc3NEYXRhKCkgPT0gdmFyaWFibGVBY2Nl
c3NEYXRhKQorICAgICAgICAgICAgICAgIGlmIChub2RlLmxvY2FsKCkgPT0gbG9jYWwpIHsKKyAg
ICAgICAgICAgICAgICAgICAgcmVsZXZhbnRMb2NhbE9wID0gaW5kZXg7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBub2RlLmNoaWxkMSgpLmluZGV4KCk7CisgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgZGVm
YXVsdDoKQEAgLTYwMCwxOCArNjEzLDM3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUudmFyaWFibGVBY2Nlc3NEYXRh
KCk7CiAgICAgICAgICAgICBpZiAoIXZhcmlhYmxlQWNjZXNzRGF0YS0+aXNDYXB0dXJlZCgpKQog
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgTm9kZUluZGV4IHBvc3NpYmxlUmVw
bGFjZW1lbnQgPSBnZXRMb2NhbExvYWRFbGltaW5hdGlvbih2YXJpYWJsZUFjY2Vzc0RhdGEpOwor
ICAgICAgICAgICAgTm9kZUluZGV4IHJlbGV2YW50TG9jYWxPcDsKKyAgICAgICAgICAgIE5vZGVJ
bmRleCBwb3NzaWJsZVJlcGxhY2VtZW50ID0gZ2V0TG9jYWxMb2FkRWxpbWluYXRpb24odmFyaWFi
bGVBY2Nlc3NEYXRhLT5sb2NhbCgpLCByZWxldmFudExvY2FsT3ApOworICAgICAgICAgICAgQVNT
RVJUKHJlbGV2YW50TG9jYWxPcCA9PSBOb05vZGUKKyAgICAgICAgICAgICAgICAgICB8fCBtX2dy
YXBoW3JlbGV2YW50TG9jYWxPcF0ub3AoKSA9PSBHZXRMb2NhbFVubGlua2VkCisgICAgICAgICAg
ICAgICAgICAgfHwgbV9ncmFwaFtyZWxldmFudExvY2FsT3BdLnZhcmlhYmxlQWNjZXNzRGF0YSgp
ID09IHZhcmlhYmxlQWNjZXNzRGF0YSk7CisgICAgICAgICAgICBOb2RlSW5kZXggcGhpSW5kZXgg
PSBub2RlLmNoaWxkMSgpLmluZGV4KCk7CiAgICAgICAgICAgICBpZiAoIXNldFJlcGxhY2VtZW50
KHBvc3NpYmxlUmVwbGFjZW1lbnQpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgTm9kZUluZGV4IG9sZFRhaWxJbmRleCA9IG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRh
aWwub3BlcmFuZCgKICAgICAgICAgICAgICAgICB2YXJpYWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkp
OwogICAgICAgICAgICAgaWYgKG9sZFRhaWxJbmRleCA9PSBtX2NvbXBpbGVJbmRleCkgewogICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrLT52YXJpYWJsZXNBdFRhaWwub3BlcmFuZCh2YXJp
YWJsZUFjY2Vzc0RhdGEtPmxvY2FsKCkpID0KLSAgICAgICAgICAgICAgICAgICAgcG9zc2libGVS
ZXBsYWNlbWVudDsKKyAgICAgICAgICAgICAgICAgICAgcmVsZXZhbnRMb2NhbE9wOworICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIE1haW50YWluIGdyYXBoIGludGVncml0eTog
c2luY2Ugd2UncmUgcmVwbGFjaW5nIGEgR2V0TG9jYWwgd2l0aCBhIEdldExvY2FsVW5saW5rZWQs
CisgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIEdldExvY2FsVW5saW5rZWQg
aXMgbm93IGxpbmtlZC4KKyAgICAgICAgICAgICAgICBpZiAobV9ncmFwaFtyZWxldmFudExvY2Fs
T3BdLm9wKCkgPT0gR2V0TG9jYWxVbmxpbmtlZCkgeworICAgICAgICAgICAgICAgICAgICBtX2dy
YXBoW3JlbGV2YW50TG9jYWxPcF0uc2V0T3AoR2V0TG9jYWwpOworICAgICAgICAgICAgICAgICAg
ICBtX2dyYXBoW3JlbGV2YW50TG9jYWxPcF0uY2hpbGRyZW4uY2hpbGQxKCkgPSBFZGdlKHBoaUlu
ZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5yZWYocGhpSW5kZXgpOworICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOiB7CisgICAgICAg
ICAgICBOb2RlSW5kZXggcmVsZXZhbnRMb2NhbE9wSWdub3JlZDsKKyAgICAgICAgICAgIHNldFJl
cGxhY2VtZW50KGdldExvY2FsTG9hZEVsaW1pbmF0aW9uKG5vZGUudW5saW5rZWRMb2NhbCgpLCBy
ZWxldmFudExvY2FsT3BJZ25vcmVkKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgSlNDb25zdGFudDoKICAgICAgICAgICAgIC8vIFRo
aXMgaXMgc3RyYW5nZSwgYnV0IG5lY2Vzc2FyeS4gU29tZSBwaGFzZXMgd2lsbCBjb252ZXJ0IG5v
ZGVzIHRvIGNvbnN0YW50cywKICAgICAgICAgICAgIC8vIHdoaWNoIG1heSByZXN1bHQgaW4gZHVw
bGljYXRlZCBjb25zdGFudHMuIFdlIHVzZSBDU0UgdG8gY2xlYW4gdGhpcyB1cC4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAJKHJldmlzaW9uIDExNjkxMikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAKKyNpbmNsdWRlICJERkdB
cmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHQnl0ZUNvZGVQYXJz
ZXIuaCIKICNpbmNsdWRlICJERkdDRkFQaGFzZS5oIgogI2luY2x1ZGUgIkRGR0NGR1NpbXBsaWZp
Y2F0aW9uUGhhc2UuaCIKQEAgLTUwLDcgKzUxLDcgQEAgaW5saW5lIGJvb2wgY29tcGlsZShDb21w
aWxlTW9kZSBjb21waWxlTQogICAgIEFTU0VSVChjb2RlQmxvY2spOwogICAgIEFTU0VSVChjb2Rl
QmxvY2stPmFsdGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZl
KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0KKyAgICAKICNpZiBE
RkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgZGF0YUxvZygiREZHIGNvbXBpbGluZyBjb2Rl
IGJsb2NrICVwKCVwKSBmb3IgZXhlY3V0YWJsZSAlcCwgbnVtYmVyIG9mIGluc3RydWN0aW9ucyA9
ICV1LlxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmFsdGVybmF0aXZlKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpKTsKICNlbmRp
ZgpAQCAtNzMsNiArNzQsNyBAQCBpbmxpbmUgYm9vbCBjb21waWxlKENvbXBpbGVNb2RlIGNvbXBp
bGVNCiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBwZXJmb3JtQ0ZBKGRm
Zyk7CiAgICAgICAgIGNoYW5nZWQgfD0gcGVyZm9ybUNvbnN0YW50Rm9sZGluZyhkZmcpOworICAg
ICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1Bcmd1bWVudHNTaW1wbGlmaWNhdGlvbihkZmcpOwogICAg
ICAgICBjaGFuZ2VkIHw9IHBlcmZvcm1DRkdTaW1wbGlmaWNhdGlvbihkZmcpOwogICAgICAgICBw
ZXJmb3JtQ1NFKGRmZyk7CiAgICAgICAgIGlmICghY2hhbmdlZCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDExNjkxMikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtODAsNiArODAsNyBAQCBw
dWJsaWM6CiAgICAgICAgIDogbV9nbG9iYWxEYXRhKGdsb2JhbERhdGEpCiAgICAgICAgICwgbV9j
b2RlQmxvY2soY29kZUJsb2NrKQogICAgICAgICAsIG1fcHJvZmlsZWRCbG9jayhjb2RlQmxvY2st
PmFsdGVybmF0aXZlKCkpCisgICAgICAgICwgbV9oYXNBcmd1bWVudHMoZmFsc2UpCiAgICAgewog
ICAgICAgICBBU1NFUlQobV9wcm9maWxlZEJsb2NrKTsKICAgICB9CkBAIC0zMDEsNiArMzAyLDE0
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuICZtX3N0cnVjdHVyZVRyYW5zaXRpb25EYXRhLmxh
c3QoKTsKICAgICB9CiAgICAgCisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGVGb3IoY29u
c3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKKyAgICB7CisgICAgICAgIGlmICghY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpOworICAgIH0KKyAgICAKICAgICBDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAg
ewogICAgICAgICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNv
ZGVCbG9jayhjb2RlT3JpZ2luLCBtX3Byb2ZpbGVkQmxvY2spOwpAQCAtNDAxLDYgKzQxMCw5IEBA
IHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAhaXNQcmVkaWN0ZWROdW1lcmljYWwobm9kZSk7
CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgICAgICByZXR1cm4gIWJ5VmFsSXNQdXJl
KG5vZGUpOworICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZhbDoKKyAgICAgICAgICAgIHJl
dHVybiBtX2V4ZWN1dGFibGVzV2hvc2VBcmd1bWVudHNFc2NhcGVkLmNvbnRhaW5zKAorICAgICAg
ICAgICAgICAgIGV4ZWN1dGFibGVGb3Iobm9kZS5jb2RlT3JpZ2luKSk7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVy
biB0cnVlOyAvLyBJZiBieSBzb21lIG9kZGl0eSB3ZSBoaXQgdGhpcyBjYXNlIGluIHJlbGVhc2Ug
YnVpbGQgaXQncyBzYWZlciB0byBoYXZlIENTRSBhc3N1bWUgdGhlIHdvcnN0LgpAQCAtNDQyLDYg
KzQ1NCw4IEBAIHB1YmxpYzoKICAgICBTZWdtZW50ZWRWZWN0b3I8QXJndW1lbnRQb3NpdGlvbiwg
OD4gbV9hcmd1bWVudFBvc2l0aW9uczsKICAgICBTZWdtZW50ZWRWZWN0b3I8U3RydWN0dXJlU2V0
LCAxNj4gbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgU2VnbWVudGVkVmVjdG9yPFN0cnVjdHVyZVRyYW5z
aXRpb25EYXRhLCA4PiBtX3N0cnVjdHVyZVRyYW5zaXRpb25EYXRhOworICAgIGJvb2wgbV9oYXNB
cmd1bWVudHM7CisgICAgSGFzaFNldDxFeGVjdXRhYmxlQmFzZSo+IG1fZXhlY3V0YWJsZXNXaG9z
ZUFyZ3VtZW50c0VzY2FwZWQ7CiAgICAgQml0VmVjdG9yIG1fcHJlc2VydmVkVmFyczsKICAgICBE
b21pbmF0b3JzIG1fZG9taW5hdG9yczsKICAgICB1bnNpZ25lZCBtX2xvY2FsVmFyczsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMTY5MTIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDEy
ICsyMDIsMjEgQEAgc3RydWN0IE5vZGUgewogICAgICAgICBtX29wID0gSlNDb25zdGFudDsKICAg
ICAgICAgaWYgKG1fZmxhZ3MgJiBOb2RlTXVzdEdlbmVyYXRlKQogICAgICAgICAgICAgbV9yZWZD
b3VudC0tOwotICAgICAgICBBU1NFUlQoIShtX2ZsYWdzICYgTm9kZUNsb2JiZXJzV29ybGQpKTsK
LSAgICAgICAgbV9mbGFncyAmPSB+KE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVy
KTsKKyAgICAgICAgbV9mbGFncyAmPSB+KE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9i
YmVyIHwgTm9kZUNsb2JiZXJzV29ybGQpOwogICAgICAgICBtX29wSW5mbyA9IGNvbnN0YW50TnVt
YmVyOwogICAgICAgICBjaGlsZHJlbi5yZXNldCgpOwogICAgIH0KICAgICAKKyAgICB2b2lkIGNv
bnZlcnRUb0dldExvY2FsVW5saW5rZWQoVmlydHVhbFJlZ2lzdGVyIGxvY2FsKQorICAgIHsKKyAg
ICAgICAgbV9vcCA9IEdldExvY2FsVW5saW5rZWQ7CisgICAgICAgIGlmIChtX2ZsYWdzICYgTm9k
ZU11c3RHZW5lcmF0ZSkKKyAgICAgICAgICAgIG1fcmVmQ291bnQtLTsKKyAgICAgICAgbV9mbGFn
cyAmPSB+KE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyIHwgTm9kZUNsb2JiZXJz
V29ybGQpOworICAgICAgICBtX29wSW5mbyA9IGxvY2FsOworICAgICAgICBjaGlsZHJlbi5yZXNl
dCgpOworICAgIH0KKyAgICAKICAgICBKU0NlbGwqIHdlYWtDb25zdGFudCgpCiAgICAgewogICAg
ICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEpTQ2VsbCo+KG1fb3BJbmZvKTsKQEAgLTI4MSw2ICsy
OTAsMTIgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlydHVh
bFJlZ2lzdGVyPihtX29wSW5mbyk7CiAgICAgfQogICAgIAorICAgIFZpcnR1YWxSZWdpc3RlciB1
bmxpbmtlZExvY2FsKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChvcCgpID09IEdldExvY2FsVW5s
aW5rZWQpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihtX29w
SW5mbyk7CisgICAgfQorICAgIAogICAgIGJvb2wgaGFzSWRlbnRpZmllcigpCiAgICAgewogICAg
ICAgICBzd2l0Y2ggKG9wKCkpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGVUeXBlLmgJKHJldmlzaW9uIDExNjkxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ3JlYXRlVGhpcywgTm9kZVJlc3VsdEpT
KSAvKiBOb3RlIHRoaXMgaXMgbm90IE11c3RHZW5lcmF0ZSBzaW5jZSB3ZSdyZSByZXR1cm5pbmcg
aXQgYW55d2F5LiAqLyBcCiAgICAgbWFjcm8oR2V0Q2FsbGVlLCBOb2RlUmVzdWx0SlMpIFwKICAg
ICBcCi0gICAgLyogTm9kZXMgZm9yIGxvY2FsIHZhcmlhYmxlIGFjY2Vzcy4gKi9cCisgICAgLyog
Tm9kZXMgZm9yIGxvY2FsIHZhcmlhYmxlIGFjY2Vzcy4gVGhlc2Ugbm9kZXMgYXJlIGxpbmtlZCB0
b2dldGhlciB1c2luZyBQaGkgbm9kZXMuICovXAorICAgIC8qIEFueSB0d28gbm9kZXMgdGhhdCBh
cmUgcGFydCBvZiB0aGUgc2FtZSBQaGkgZ3JhcGggd2lsbCBzaGFyZSB0aGUgc2FtZSAqL1wKKyAg
ICAvKiBWYXJpYWJsZUFjY2Vzc0RhdGEsIGFuZCB0aHVzIHdpbGwgc2hhcmUgcHJlZGljdGlvbnMu
ICovXAogICAgIG1hY3JvKEdldExvY2FsLCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhTZXRM
b2NhbCwgMCkgXAogICAgIG1hY3JvKFBoYW50b20sIE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTU2
LDYgKzU4LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhQ
aGksIDApIFwKICAgICBtYWNybyhGbHVzaCwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKKyAg
ICAvKiBHZXQgdGhlIHZhbHVlIG9mIGEgbG9jYWwgdmFyaWFibGUsIHdpdGhvdXQgbGlua2luZyBp
bnRvIHRoZSBWYXJpYWJsZUFjY2Vzc0RhdGEgKi9cCisgICAgLyogbmV0d29yay4gVGhpcyBpcyBv
bmx5IHZhbGlkIGZvciB2YXJpYWJsZSBhY2Nlc3NlcyB3aG9zZSBwcmVkaWN0aW9ucyBvcmlnaW5h
dGVkICovXAorICAgIC8qIGFzIHNvbWV0aGluZyBvdGhlciB0aGFuIGEgbG9jYWwgYWNjZXNzLCBh
bmQgdGh1cyBoYWQgdGhlaXIgb3duIHByb2ZpbGluZy4gKi9cCisgICAgbWFjcm8oR2V0TG9jYWxV
bmxpbmtlZCwgTm9kZVJlc3VsdEpTKSBcCisgICAgXAogICAgIC8qIE1hcmtlciBmb3IgYXJndW1l
bnRzIGJlaW5nIHNldC4gKi9cCiAgICAgbWFjcm8oU2V0QXJndW1lbnQsIDApIFwKICAgICBcCkBA
IC0xOTIsNyArMTk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1h
Y3JvKENyZWF0ZUFyZ3VtZW50cywgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oVGVhck9mZkFy
Z3VtZW50cywgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEdldE15QXJndW1lbnRzTGVu
Z3RoLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2JiZXJzV29ybGQp
IFwKLSAgICBtYWNybyhHZXRNeUFyZ3VtZW50QnlWYWwsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0
R2VuZXJhdGUgfCBOb2RlQ2xvYmJlcnNXb3JsZCkgXAorICAgIG1hY3JvKEdldE15QXJndW1lbnRC
eVZhbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVNaWdodENsb2JiZXIp
IFwKICAgICBtYWNybyhDaGVja0FyZ3VtZW50c05vdENyZWF0ZWQsIE5vZGVNdXN0R2VuZXJhdGUp
IFwKICAgICBcCiAgICAgLyogTm9kZXMgZm9yIGNyZWF0aW5nIGZ1bmN0aW9ucy4gKi9cCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDExNjkx
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDcgKzc3LDE2IEBAIGJvb2wgT1NSRXhpdDo6Y29uc2lkZXJBZGRpbmdBc0Zy
ZXF1ZW50RXgKICAgICBpZiAoc3RhdGljX2Nhc3Q8ZG91YmxlPihtX2NvdW50KSAvIGRmZ0NvZGVC
bG9jay0+c3BlY3VsYXRpdmVGYWlsQ291bnRlcigpIDw9IE9wdGlvbnM6Om9zckV4aXRQcm9taW5l
bmNlRm9yRnJlcXVlbnRFeGl0U2l0ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAg
IHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKG1f
Y29kZU9yaWdpbiwgcHJvZmlsZWRDb2RlQmxvY2spLT5hZGRGcmVxdWVudEV4aXRTaXRlKEZyZXF1
ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgsIG1fa2luZCkpOworICAgIEZy
ZXF1ZW50RXhpdFNpdGUgZXhpdFNpdGU7CisgICAgCisgICAgaWYgKG1fa2luZCA9PSBBcmd1bWVu
dHNFc2NhcGVkKSB7CisgICAgICAgIC8vIENvdW50IHRoaXMgb25lIGdsb2JhbGx5LiBJdCBkb2Vz
bid0IG1hdHRlciB3aGVyZSBpbiB0aGUgY29kZSBibG9jayB0aGUgYXJndW1lbnRzIGV4Y2FwZWQ7
CisgICAgICAgIC8vIHRoZSBmYWN0IHRoYXQgdGhleSBkaWQgaXMgbm90IGFzc29jaWF0ZWQgd2l0
aCBhbnkgcGFydGljdWxhciBpbnN0cnVjdGlvbi4KKyAgICAgICAgZXhpdFNpdGUgPSBGcmVxdWVu
dEV4aXRTaXRlKG1fa2luZCk7CisgICAgfSBlbHNlCisgICAgICAgIGV4aXRTaXRlID0gRnJlcXVl
bnRFeGl0U2l0ZShtX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCwgbV9raW5kKTsKKyAgICAKKyAg
ICByZXR1cm4gYmFzZWxpbmVDb2RlQmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayht
X2NvZGVPcmlnaW4sIHByb2ZpbGVkQ29kZUJsb2NrKS0+YWRkRnJlcXVlbnRFeGl0U2l0ZShleGl0
U2l0ZSk7CiB9CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9u
UGhhc2UuY3BwCShyZXZpc2lvbiAxMTY5MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjE1
LDcgKzYxNSw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgR2V0RmxvYXQzMkFycmF5TGVuZ3Ro
OgogICAgICAgICBjYXNlIEdldEZsb2F0NjRBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBHZXRT
dHJpbmdMZW5ndGg6Ci0gICAgICAgIGNhc2UgSW50MzJUb0RvdWJsZTogeworICAgICAgICBjYXNl
IEludDMyVG9Eb3VibGU6CisgICAgICAgIGNhc2UgR2V0TG9jYWxVbmxpbmtlZDogewogICAgICAg
ICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ug
b2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAgICAgICAgICAvLyBpbnNlcnRlZCBieSBmaXh1cCgp
LCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2UuCiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTE2OTEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk4NSw2ICsx
OTg1LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgYnJlYWs7CiAgICAgfQogCisgICAgY2FzZSBHZXRMb2NhbFVubGlua2VkOiB7CisgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgIAorICAgICAgICBtX2ppdC5sb2Fk
UHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUudW5saW5rZWRMb2NhbCgpKSwgcmVzdWx0
LmdwcigpKTsKKyAgICAgICAgCisgICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBt
X2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgU2V0TG9j
YWw6IHsKICAgICAgICAgLy8gU2V0TG9jYWwgZG91YmxlcyBhcyBhIGhpbnQgYXMgdG8gd2hlcmUg
YSBub2RlIHdpbGwgYmUgc3RvcmVkIGFuZAogICAgICAgICAvLyBhcyBhIHNwZWN1bGF0aW9uIHBv
aW50LiBTbyBiZWZvcmUgd2Ugc3BlY3VsYXRlIG1ha2Ugc3VyZSB0aGF0IHdlCkBAIC0zODc3LDIz
ICszODg2LDI2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBjYXNlIENoZWNrQXJndW1lbnRzTm90
Q3JlYXRlZDogewotICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgYSB3YXkgdG8gY291
bnQgc3VjaCBmYWlsdXJlcy4gVGhpcyB3aWxsIGJlIHBhcnQgb2YKLSAgICAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg2MzI3Ci0gICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soCi0gICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LAotICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cigKLSAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6Tm9uWmVybywKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6YWRkcmVzc0Zv
cigKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5j
b2RlT3JpZ2luKSkpKTsKLSAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgICAgIAogICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6
IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCisgICAgICAgIGlmICghbV9qaXQuZ3Jh
cGgoKS5tX2V4ZWN1dGFibGVzV2hvc2VBcmd1bWVudHNFc2NhcGVkLmNvbnRhaW5zKAorICAgICAg
ICAgICAgICAgIG1faml0LmdyYXBoKCkuZXhlY3V0YWJsZUZvcihub2RlLmNvZGVPcmlnaW4pKSkg
eworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBBcmd1bWVu
dHNFc2NhcGVkLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdFB0cigKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8s
CisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2lu
KSkpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKCFub2RlLmNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6
cGF5bG9hZEZvcihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRHUFIpOworICAg
ICAgICAgICAgbV9qaXQuc3ViMzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRHUFIpOworICAgICAg
ICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBjcmVhdGVkID0gbV9qaXQuYnJhbmNoVGVzdFB0cigKICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpOb25aZXJvLAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCkBAIC0zOTMx
LDYgKzM5NDMsNDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
ICAgICAgICBHUFJSZWcgaW5kZXhHUFIgPSBpbmRleC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCisgICAgICAgIGlmICghbV9qaXQuZ3Jh
cGgoKS5tX2V4ZWN1dGFibGVzV2hvc2VBcmd1bWVudHNFc2NhcGVkLmNvbnRhaW5zKAorICAgICAg
ICAgICAgICAgIG1faml0LmdyYXBoKCkuZXhlY3V0YWJsZUZvcihub2RlLmNvZGVPcmlnaW4pKSkg
eworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBBcmd1bWVu
dHNFc2NhcGVkLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdFB0cigKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8s
CisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKAorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2lu
KSkpKTsKKworICAgICAgICAgICAgbV9qaXQuYWRkMzIoVHJ1c3RlZEltbTMyKDEpLCBpbmRleEdQ
UiwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGlmIChub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lKSB7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAg
ICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKKyAgICAgICAgICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCisgICAgICAgICAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6QWJvdmVPckVxdWFsLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLAor
ICAgICAgICAgICAgICAgICAgICAgICAgSW1tMzIobm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICAgICAgVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJh
bmNoMzIoCisgICAgICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWJvdmVPckVxdWFs
LAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50
KSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBtX2ppdC5uZWcz
MihyZXN1bHRHUFIpOworICAgICAgICAgICAgbV9qaXQuc2lnbkV4dGVuZDMyVG9QdHIocmVzdWx0
R1BSLCByZXN1bHRHUFIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX2ppdC5sb2FkUHRy
KAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpCYXNlSW5kZXgoCisgICAgICAgICAgICAg
ICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCByZXN1bHRHUFIsIEpJVENvbXBpbGVy
OjpUaW1lc0VpZ2h0LAorICAgICAgICAgICAgICAgICAgICAoKG5vZGUuY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUKKyAgICAgICAgICAgICAgICAgICAgICA/IG5vZGUuY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0CisgICAgICAgICAgICAgICAgICAgICAgOiAwKSArIENh
bGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDApKSAqIHNpemVvZihSZWdpc3Rl
cikpLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQUik7CisKKyAgICAgICAgICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQYXRo
OwogICAgICAgICBzbG93UGF0aC5hcHBlbmQoCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0
UHRyKApAQCAtMzk3NCw2ICs0MDI3LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIENo
ZWNrQXJndW1lbnRzTm90Q3JlYXRlZDogeworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAg
ICAgICAgICAgQXJndW1lbnRzRXNjYXBlZCwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAorICAgICAg
ICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
Tm9uWmVybywKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6YWRkcmVzc0ZvcigKKyAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2lu
KSkpKTsKKyAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgICAgIAogICAgIGNhc2UgTmV3RnVuY3Rpb25Ob0NoZWNrOgogICAgICAgICBj
b21waWxlTmV3RnVuY3Rpb25Ob0NoZWNrKG5vZGUpOwogICAgICAgICBicmVhazsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141794</attachid>
            <date>2012-05-14 14:40:43 -0700</date>
            <delta_ts>2012-05-14 15:02:09 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>inlined_arguments_opt_patch_3.diff</filename>
            <type>text/plain</type>
            <size>46256</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE3MDAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBA
CisyMDEyLTA1LTE0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBvcHRpbWl6ZSBpbmxpbmVkIHVzZXMgb2YgYXJndW1lbnRzLmxlbmd0aCBhbmQg
YXJndW1lbnRzW2ldCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD04NjMyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAg
ICAKKyAgICAgICAgVHVybnMgaW5saW5lZCB1c2VzIG9mIGFyZ3VtZW50cy5sZW5ndGggaW50byBh
IGNvbnN0YW50LgorICAgICAgICAKKyAgICAgICAgVHVybnMgaW5saW5lZCB1c2VzIG9mIGFyZ3Vt
ZW50c1tjb25zdGFudF0gaW50byBhIGRpcmVjdCByZWZlcmVuY2UgdG8gdGhlCisgICAgICAgIGFy
Z3VtZW50LgorICAgICAgICAKKyAgICAgICAgQmlnIHdpbiBvbiBtaWNyby1iZW5jaG1hcmtzLiBO
b3QgeWV0IGEgd2luIG9uIFY4IGJlY2F1c2UgdGhlIGhvdCB1c2VzIG9mCisgICAgICAgIGFyZ3Vt
ZW50cy5sZW5ndGggYW5kIGFyZ3VtZW50c1tpXSBhcmUgYWxpYXNlZC4gSSdsbCBsZWF2ZSB0aGUg
YWxpYXNpbmcKKyAgICAgICAgb3B0aW1pemF0aW9ucyB0byBhIGxhdGVyIHBhdGNoLgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oOgorICAgICAgICAoRnJlcXVlbnRFeGl0U2l0ZSk6
CisgICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0U2l0ZTo6RnJlcXVlbnRFeGl0U2l0ZSk6
CisgICAgICAgIChKU0M6OkRGRzo6UXVlcnlhYmxlRXhpdFByb2ZpbGU6Omhhc0V4aXRTaXRlKToK
KyAgICAgICAgKFF1ZXJ5YWJsZUV4aXRQcm9maWxlKToKKyAgICAgICAgKiBkZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSk6
CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKERGRyk6CisgICAgICAgIChBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNl
KToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlOjpBcmd1
bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudHNT
aW1wbGlmaWNhdGlvblBoYXNlOjpydW4pOgorICAgICAgICAoSlNDOjpERkc6OnBlcmZvcm1Bcmd1
bWVudHNTaW1wbGlmaWNhdGlvbik6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZp
Y2F0aW9uUGhhc2UuaDogQWRkZWQuCisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdB
c3NlbWJseUhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5SGVscGVyczo6
ZXhlY3V0YWJsZUZvcik6CisgICAgICAgIChERkcpOgorICAgICAgICAqIGRmZy9ERkdBc3NlbWJs
eUhlbHBlcnMuaDoKKyAgICAgICAgKEFzc2VtYmx5SGVscGVycyk6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0
YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OmdldExvY2FsTG9hZEVsaW1pbmF0aW9u
KToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAg
ICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNvbXBpbGUpOgorICAg
ICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpHcmFwaCk6
CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmV4ZWN1dGFibGVGb3IpOgorICAgICAgICAoR3Jh
cGgpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpjbG9iYmVyc1dvcmxkKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZS5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb0NvbnN0
YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjb252ZXJ0VG9HZXRMb2NhbFVubGlua2Vk
KToKKyAgICAgICAgKE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnVubGlua2VkTG9j
YWwpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAoREZHKToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdDo6Y29u
c2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGVTbG93KToKKyAgICAgICAgKiBkZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlOjpwcm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKwogMjAxMi0wNS0xMyAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERGRyBzaG91bGQgYmUgYWJsZSB0
byBvcHRpbWl6ZSBmb28uYXBwbHkoYmFyLCBhcmd1bWVudHMpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTE2OTEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTc4LDYgKzc4LDggQEAKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9m
ZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlu
a0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVGMTVGMTRCN0E3M0Uw
MDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93
UGF0aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjE2MDE1RDE1NjE5OEM5MDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25Q
aGFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjE2MDE1QTE1NjE5OEJGMDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFz
ZS5jcHAgKi87IH07CisJCTBGMTYwMTVFMTU2MTk4QzkwMEMyNTg3QyAvKiBERkdBcmd1bWVudHNT
aW1wbGlmaWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjE2MDE1QjE1NjE5OEJGMDBDMjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxp
ZmljYXRpb25QaGFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMUUzQTQ2MTUzNENCQUYwMDBGOTQ1NiAvKiBERkdBcmd1bWVudFBvc2l0aW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjFFM0E0
MzE1MzRDQkFEMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMUUzQTQ3MTUzNENCQjkwMDBG
OTQ1NiAvKiBERkdEb3VibGVGb3JtYXRTdGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxRTNBNDQxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0RvdWJs
ZUZvcm1hdFN0YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEYxRTNBNjcxNTNBMjFFMjAwMEY5NDU2IC8qIERGR1NpbGVudFJlZ2lzdGVyU2F2
ZVBsYW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MUUzQTY1MTUzQTIxREYwMDBGOTQ1NiAvKiBERkdTaWxlbnRSZWdpc3RlclNhdmVQbGFuLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1Nyw2ICs3
NTksOCBAQAogCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25T
bG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1Bh
dGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMTYwMTVBMTU2MTk4QkYwMEMy
NTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2Uu
Y3BwOyBwYXRoID0gZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjE2MDE1QjE1NjE5OEJGMDBDMjU4N0MgLyogREZH
QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmg7IHBhdGggPSBkZmcvREZH
QXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjFFM0E0MzE1MzRDQkFEMDAwRjk0NTYgLyogREZHQXJndW1lbnRQb3NpdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdBcmd1bWVudFBvc2l0aW9uLmg7IHBh
dGggPSBkZmcvREZHQXJndW1lbnRQb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjFFM0E0NDE1MzRDQkFEMDAwRjk0NTYgLyogREZHRG91YmxlRm9ybWF0U3RhdGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHRG91YmxlRm9ybWF0U3RhdGUuaDsg
cGF0aCA9IGRmZy9ERkdEb3VibGVGb3JtYXRTdGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjFFM0E1MDE1MzdDMkNCMDAwRjk0NTYgLyogREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aDsgcGF0aCA9IGRmZy9ERkdTbG93UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjA0NSw2ICsyMDQ5LDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCiAJCQkJMEYxRTNBNDMxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0FyZ3VtZW50UG9z
aXRpb24uaCAqLywKKwkJCQkwRjE2MDE1QTE1NjE5OEJGMDBDMjU4N0MgLyogREZHQXJndW1lbnRz
U2ltcGxpZmljYXRpb25QaGFzZS5jcHAgKi8sCisJCQkJMEYxNjAxNUIxNTYxOThCRjAwQzI1ODdD
IC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCAqLywKIAkJCQkwRjYyMDE2RDE0
M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi8sCiAJCQkJMEY2MjAxNkUx
NDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuaCAqLywKIAkJCQkwRjYyMDE2RjE0
M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RWYWx1ZS5oICovLApAQCAtMjYwNCw2ICsyNjEw
LDcgQEAKIAkJCQkwRjNCM0EyODE1NDRDOTk3MDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRp
b25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQjNBMkMxNTQ3NTAwMjAwM0VEMEZGIC8q
IERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkQ4MUFEMzE1NEZCNEYwMDA5ODNF
NzIgLyogREZHRG9taW5hdG9ycy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxNjAxNUUxNTYxOThD
OTAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMzE3MSw2ICszMTc4LDcgQEAKIAkJCQkwRjNCM0EyNzE1NDRDOTk1MDAzRUQwRkYg
LyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjNC
M0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEZEODFBRDIxNTRGQjRFRTAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYxNjAxNUQxNTYxOThDOTAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBs
aWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAkocmV2aXNpb24gMTE2OTEyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgZW51bSBFeGl0S2luZCB7CiAgICAgT3ZlcmZsb3cs
IC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIG92ZXJmbG93LgogICAgIE5lZ2F0aXZlWmVybywgLy8g
V2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5jb3VudGVyZWQgbmVnYXRpdmUgemVyby4KICAgICBJbmFk
ZXF1YXRlQ292ZXJhZ2UsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuZGVkIHVwIGluIGNvZGUg
dGhhdCBkaWRuJ3QgaGF2ZSBwcm9maWxpbmcgY292ZXJhZ2UuCisgICAgQXJndW1lbnRzRXNjYXBl
ZCwgLy8gV2UgZXhpdGVkIGJlY2F1c2UgYXJndW1lbnRzIGVzY2FwZWQgYnV0IHdlIGRpZG4ndCBl
eHBlY3QgdGhlbSB0by4KICAgICBVbmNvdW50YWJsZSwgLy8gV2UgZXhpdGVkIGZvciBub25lIG9m
IHRoZSBhYm92ZSByZWFzb25zLCBhbmQgd2Ugc2hvdWxkIG5vdCBjb3VudCBpdC4gTW9zdCB1c2Vz
IG9mIHRoaXMgc2hvdWxkIGJlIHZpZXdlZCBhcyBhIEZJWE1FLgogfTsKIApAQCAtOTYsNiArOTcs
MTUgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoZXhpdEtpbmRJc0NvdW50YWJsZShraW5kKSk7
CiAgICAgfQogICAgIAorICAgIC8vIFVzZSB0aGlzIGNvbnN0cnVjdG9yIGlmIHlvdSB3aXNoIGZv
ciB0aGUgZXhpdCBzaXRlIHRvIGJlIGNvdW50ZWQgZ2xvYmFsbHkgd2l0aGluIGl0cworICAgIC8v
IGNvZGUgYmxvY2suCisgICAgZXhwbGljaXQgRnJlcXVlbnRFeGl0U2l0ZShFeGl0S2luZCBraW5k
KQorICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQoMCkKKyAgICAgICAgLCBtX2tpbmQoa2luZCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChleGl0S2luZElzQ291bnRhYmxlKGtpbmQpKTsKKyAgICB9
CisgICAgCiAgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJu
IG1fa2luZCA9PSBFeGl0S2luZFVuc2V0OwpAQCAtMTc4LDYgKzE4OCwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBtX2ZyZXF1ZW50RXhpdFNpdGVzLmZpbmQoc2l0ZSkgIT0gbV9mcmVxdWVu
dEV4aXRTaXRlcy5lbmQoKTsKICAgICB9CiAgICAgCisgICAgYm9vbCBoYXNFeGl0U2l0ZShFeGl0
S2luZCBraW5kKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZyZXF1
ZW50RXhpdFNpdGUoa2luZCkpOworICAgIH0KKyAgICAKICAgICBib29sIGhhc0V4aXRTaXRlKHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgsIEV4aXRLaW5kIGtpbmQpIGNvbnN0CiAgICAgewogICAgICAg
ICByZXR1cm4gaGFzRXhpdFNpdGUoRnJlcXVlbnRFeGl0U2l0ZShieXRlY29kZUluZGV4LCBraW5k
KSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0
ZS5jcHAJKHJldmlzaW9uIDExNjkxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2Nyw2ICsyNjcsMTEgQEAgYm9v
bCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgICAgIAorICAgIGNhc2UgR2V0TG9jYWxVbmxpbmtlZDogeworICAgICAgICBmb3JO
b2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAg
IAogICAgIGNhc2UgU2V0TG9jYWw6IHsKICAgICAgICAgaWYgKG5vZGUudmFyaWFibGVBY2Nlc3NE
YXRhKCktPmlzQ2FwdHVyZWQoKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA3NCw2ICsxMDc5
LDE5IEBAIGJvb2wgQWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAg
YnJlYWs7CiAgICAgICAgIAogICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6CisgICAgICAg
IGlmICghbV9ncmFwaC5tX2V4ZWN1dGFibGVzV2hvc2VBcmd1bWVudHNFc2NhcGVkLmNvbnRhaW5z
KAorICAgICAgICAgICAgICAgIG1fZ3JhcGguZXhlY3V0YWJsZUZvcihub2RlLmNvZGVPcmlnaW4p
KSkgeworICAgICAgICAgICAgLy8gV2Uga25vdyB0aGF0IHRoaXMgZXhlY3V0YWJsZSBkb2VzIG5v
dCBlc2NhcGUgaXRzIGFyZ3VtZW50cywgc28gd2UgY2FuIG9wdGltaXplCisgICAgICAgICAgICAv
LyB0aGUgYXJndW1lbnRzIGEgYml0LiBOb3RlIHRoYXQgdGhpcyBpcyBub3Qgc3VmZmljaWVudCB0
byBmb3JjZSBjb25zdGFudCBmb2xkaW5nCisgICAgICAgICAgICAvLyBvZiBHZXRNeUFyZ3VtZW50
c0xlbmd0aCwgYmVjYXVzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aCBpcyBhIGNsb2JiZXJpbmcgb3Bl
cmF0aW9uLgorICAgICAgICAgICAgLy8gV2UgcGVyZm9ybSBmdXJ0aGVyIG9wdGltaXphdGlvbnMg
b24gdGhpcyBsYXRlciBvbi4KKyAgICAgICAgICAgIGlmIChub2RlLmNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lKSB7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChqc051
bWJlcihub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpIC0g
MSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
Zm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0SW50MzIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgLy8gVGhpcyBwb3RlbnRpYWxseSBjbG9iYmVycyBhbGwgc3Ry
dWN0dXJlcyBpZiB0aGUgYXJndW1lbnRzIG9iamVjdCBoYWQgYSBnZXR0ZXIKICAgICAgICAgLy8g
aW5zdGFsbGVkIG9uIHRoZSBsZW5ndGggcHJvcGVydHkuCiAgICAgICAgIGNsb2JiZXJTdHJ1Y3R1
cmVzKGluZGV4SW5CbG9jayk7CkBAIC0xMDgzLDYgKzExMDEsMTUgQEAgYm9vbCBBYnN0cmFjdFN0
YXRlOjpleGVjdXRlKHVuc2lnbmVkIGluZAogICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAg
Y2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6CisgICAgICAgIGlmICghbV9ncmFwaC5tX2V4ZWN1dGFi
bGVzV2hvc2VBcmd1bWVudHNFc2NhcGVkLmNvbnRhaW5zKAorICAgICAgICAgICAgICAgIG1fZ3Jh
cGguZXhlY3V0YWJsZUZvcihub2RlLmNvZGVPcmlnaW4pKSkgeworICAgICAgICAgICAgLy8gV2Ug
a25vdyB0aGF0IHRoaXMgZXhlY3V0YWJsZSBkb2VzIG5vdCBlc2NhcGUgaXRzIGFyZ3VtZW50cywg
c28gd2UgY2FuIG9wdGltaXplCisgICAgICAgICAgICAvLyB0aGUgYXJndW1lbnRzIGEgYml0LiBO
b3RlIHRoYXQgdGhpcyBlbmRzIHVwIGJlaW5nIGZ1cnRoZXIgb3B0aW1pemVkIGJ5IHRoZQorICAg
ICAgICAgICAgLy8gQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS4KKyAgICAgICAgICAgIGZv
ck5vZGUobm9kZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CisgICAgICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgLy8gVGhpcyBwb3RlbnRpYWxseSBjbG9iYmVycyBhbGwgc3RydWN0dXJlcyBp
ZiB0aGUgcHJvcGVydHkgd2UncmUgYWNjZXNzaW5nIGhhcwogICAgICAgICAvLyBhIGdldHRlci4g
V2UgZG9uJ3Qgc3BlY3VsYXRlIGFnYWluc3QgdGhpcy4KICAgICAgICAgY2xvYmJlclN0cnVjdHVy
ZXMoaW5kZXhJbkJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJn
dW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzU2ltcGxpZmlj
YXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmgiCisKKyNpZiBFTkFC
TEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0Fic3RyYWN0U3RhdGUuaCIKKyNpbmNsdWRlICJE
RkdCYXNpY0Jsb2NrLmgiCisjaW5jbHVkZSAiREZHR3JhcGguaCIKKyNpbmNsdWRlICJERkdJbnNl
cnRpb25TZXQuaCIKKyNpbmNsdWRlICJERkdQaGFzZS5oIgorI2luY2x1ZGUgIkRGR1ZhbGlkYXRl
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgQXJndW1lbnRz
U2ltcGxpZmljYXRpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CitwdWJsaWM6CisgICAgQXJndW1l
bnRzU2ltcGxpZmljYXRpb25QaGFzZShHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogUGhhc2UoZ3Jh
cGgsICJhcmd1bWVudHMgc2ltcGxpZmljYXRpb24iKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
Ym9vbCBydW4oKQorICAgIHsKKyAgICAgICAgaWYgKCFtX2dyYXBoLm1faGFzQXJndW1lbnRzKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAKKyAgICAgICAgYm9vbCBjaGFuZ2Vk
ID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBJbnNlcnRpb25TZXQ8Tm9kZUluZGV4PiBpbnNl
cnRpb25TZXQ7CisgICAgICAgIAorICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9
IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytibG9ja0luZGV4KSB7
CisgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJ
bmRleF0uZ2V0KCk7CisgICAgICAgICAgICBpZiAoIWJsb2NrKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleEluQmxvY2sgPSAwOyBpbmRl
eEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK2luZGV4SW5CbG9jaykgeworICAgICAgICAgICAg
ICAgIE5vZGVJbmRleCBub2RlSW5kZXggPSBibG9jay0+YXQoaW5kZXhJbkJsb2NrKTsKKyAgICAg
ICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtub2RlSW5kZXhdOworICAgICAgICAgICAg
ICAgIHN3aXRjaCAobm9kZS5vcCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3Vt
ZW50c0xlbmd0aDogeworICAgICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5tX2V4ZWN1dGFi
bGVzV2hvc2VBcmd1bWVudHNFc2NhcGVkLmNvbnRhaW5zKAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGguZXhlY3V0YWJsZUZvcihub2RlLmNvZGVPcmlnaW4pKSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpZiAoIW5vZGUuY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgZXhh
Y3RseSB3aGF0IHRoaXMgd2lsbCByZXR1cm4uIEJ1dCBvbmx5IGFmdGVyIHdlIGhhdmUgY2hlY2tl
ZAorICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IG5vYm9keSBoYXMgZXNjYXBlZCBvdXIgYXJn
dW1lbnRzLgorICAgICAgICAgICAgICAgICAgICBOb2RlIGNoZWNrKENoZWNrQXJndW1lbnRzTm90
Q3JlYXRlZCwgbm9kZS5jb2RlT3JpZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgY2hlY2sucmVm
KCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGVJbmRleCBjaGVja0luZGV4ID0gbV9ncmFwaC5z
aXplKCk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGguYXBwZW5kKGNoZWNrKTsKKyAgICAg
ICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0LmFwcGVuZChpbmRleEluQmxvY2ssIGNoZWNrSW5k
ZXgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5j
b252ZXJ0VG9Db25zdGFudCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVJbmRleCwganNO
dW1iZXIobm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAt
IDEpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgY2FzZSBHZXRNeUFyZ3VtZW50QnlWYWw6IHsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fZ3JhcGgubV9leGVjdXRhYmxlc1dob3NlQXJndW1lbnRzRXNjYXBlZC5jb250
YWlucygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmV4ZWN1dGFibGVGb3Io
bm9kZS5jb2RlT3JpZ2luKSkpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQorICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGlmICghbV9n
cmFwaFtub2RlLmNoaWxkMSgpXS5oYXNDb25zdGFudCgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnZhbHVlT2ZKU0NvbnN0YW50KGNvZGVCbG9jaygpKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKCF2YWx1ZS5pc0ludDMyKCkpCisgICAgICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleCA9IHZhbHVlLmFzSW50MzIo
KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMAorICAgICAgICAgICAgICAgICAg
ICAgICAgfHwgc3RhdGljX2Nhc3Q8c2l6ZV90PihpbmRleCArIDEpID49CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRz
LnNpemUoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyB3aGljaCBhcmd1bWVudCB0aGlz
IGlzIGFjY2Vzc2luZy4gQnV0IG9ubHkgYWZ0ZXIgd2UgaGF2ZSBjaGVja2VkCisgICAgICAgICAg
ICAgICAgICAgIC8vIHRoYXQgbm9ib2R5IGhhcyBlc2NhcGVkIG91ciBhcmd1bWVudHMuIFdlIGFs
c28gbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5kZXgg
aXMga2VwdCBhbGl2ZS4gVGhhdCdzIHNvbWV3aGF0IHBvaW50bGVzcyBzaW5jZSBpdCdzIGEgY29u
c3RhbnQsIGJ1dAorICAgICAgICAgICAgICAgICAgICAvLyBpdCdzIGltcG9ydGFudCBiZWNhdXNl
IHRoaXMgaXMgb25lIG9mIHRob3NlIGludmFyaWFudHMgdGhhdCB3ZSBsaWtlIHRvCisgICAgICAg
ICAgICAgICAgICAgIC8vIGhhdmUgaW4gdGhlIERGRy4gTm90ZSBmaW5hbGx5IHRoYXQgd2UgdXNl
IHRoZSBHZXRMb2NhbFVubGlua2VkIG9wY29kZQorICAgICAgICAgICAgICAgICAgICAvLyBoZXJl
LCBzaW5jZSB0aGlzIGlzIGJlaW5nIGRvbmUgX2FmdGVyXyB0aGUgcHJlZGljdGlvbiBwcm9wYWdh
dGlvbiBwaGFzZQorICAgICAgICAgICAgICAgICAgICAvLyBoYXMgcnVuIC0gdGhlcmVmb3JlIGl0
IG1ha2VzIGxpdHRsZSBzZW5zZSB0byBsaW5rIHRoZSBHZXRMb2NhbCBvcGVyYXRpb24KKyAgICAg
ICAgICAgICAgICAgICAgLy8gaW50byB0aGUgVmFyaWFibGVBY2Nlc3NEYXRhIGFuZCBQaGkgZ3Jh
cGhzLgorCisgICAgICAgICAgICAgICAgICAgIE5vZGUgY2hlY2soQ2hlY2tBcmd1bWVudHNOb3RD
cmVhdGVkLCBub2RlLmNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgICAgICBjaGVjay5yZWYo
KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIE5vZGUgcGhhbnRv
bShQaGFudG9tLCBub2RlLmNvZGVPcmlnaW4pOworICAgICAgICAgICAgICAgICAgICBwaGFudG9t
LnJlZigpOworICAgICAgICAgICAgICAgICAgICBwaGFudG9tLmNoaWxkcmVuID0gbm9kZS5jaGls
ZHJlbjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG5vZGUuY29u
dmVydFRvR2V0TG9jYWxVbmxpbmtlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PFZpcnR1YWxSZWdpc3Rlcj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5j
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFyZ3VtZW50VG9PcGVyYW5kKGluZGV4ICsgMSkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIE5vZGVJbmRleCBjaGVja05vZGVJbmRleCA9
IG1fZ3JhcGguc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmFwcGVuZChjaGVj
ayk7CisgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5hcHBlbmQoaW5kZXhJbkJsb2Nr
LCBjaGVja05vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIE5vZGVJbmRleCBwaGFudG9t
Tm9kZUluZGV4ID0gbV9ncmFwaC5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
YXBwZW5kKHBoYW50b20pOworICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuYXBwZW5k
KGluZGV4SW5CbG9jaywgcGhhbnRvbU5vZGVJbmRleCk7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnNlcnRpb25TZXQuZXhlY3V0ZSgq
YmxvY2spOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAg
ICB9Cit9OworCitib29sIHBlcmZvcm1Bcmd1bWVudHNTaW1wbGlmaWNhdGlvbihHcmFwaCYgZ3Jh
cGgpCit7CisgICAgcmV0dXJuIHJ1blBoYXNlPEFyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2U+
KGdyYXBoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5B
QkxFKERGR19KSVQpCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1
bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9u
UGhhc2UuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR0FyZ3VtZW50c1NpbXBsaWZp
Y2F0aW9uUGhhc2VfaAorI2RlZmluZSBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlX2gK
KworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgR3JhcGg7CisKKy8vIFNpbXBs
aWZpZXMgcmVmbGVjdGl2ZSB1c2VzIG9mIHRoZSBBcmd1bWVudHMgb2JqZWN0OgorLy8KKy8vIElu
bGluZWQgYXJndW1lbnRzLmxlbmd0aCAtPiBjb25zdGFudAorLy8gSW5saW5lZCBhcmd1bWVudHNb
Y29uc3RhbnRdIC0+IEdldExvY2FsVW5saW5rZWQKKworYm9vbCBwZXJmb3JtQXJndW1lbnRzU2lt
cGxpZmljYXRpb24oR3JhcGgmKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5k
aWYgLy8gRU5BQkxFKERGR19KSVQpCisKKyNlbmRpZiAvLyBERkdBcmd1bWVudHNTaW1wbGlmaWNh
dGlvblBoYXNlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJs
eUhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
QXNzZW1ibHlIZWxwZXJzLmNwcAkocmV2aXNpb24gMTE2OTEyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2
ICszMiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKIGNvbnN0IGRvdWJs
ZSBBc3NlbWJseUhlbHBlcnM6OnR3b1RvVGhlMzIgPSAoZG91YmxlKTB4MTAwMDAwMDAwdWxsOwog
CitFeGVjdXRhYmxlQmFzZSogQXNzZW1ibHlIZWxwZXJzOjpleGVjdXRhYmxlRm9yKGNvbnN0IENv
ZGVPcmlnaW4mIGNvZGVPcmlnaW4pCit7CisgICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSkKKyAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKKyAg
ICAKKyAgICByZXR1cm4gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0
KCk7Cit9CisKIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBBc3NlbWJseUhlbHBl
cnM6OmRlY29kZWRDb2RlTWFwRm9yKENvZGVCbG9jayogY29kZUJsb2NrKQogewogICAgIEFTU0VS
VChjb2RlQmxvY2sgPT0gY29kZUJsb2NrLT5iYXNlbGluZVZlcnNpb24oKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9u
IDExNjkxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OSw2ICsyOTksOCBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+
aXNTdHJpY3RNb2RlKCk7CiAgICAgfQogICAgIAorICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRh
YmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pOworICAgIAogICAgIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29uc3QgQ29kZU9yaWdpbiYgY29kZU9yaWdpbikKICAg
ICB7CiAgICAgICAgIHJldHVybiBiYXNlbGluZUNvZGVCbG9ja0Zvck9yaWdpbkFuZEJhc2VsaW5l
Q29kZUJsb2NrKGNvZGVPcmlnaW4sIGJhc2VsaW5lQ29kZUJsb2NrKCkpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDExNjkxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUyLDYgKzI0NTIsOCBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIG9wX2NyZWF0ZV9hcmd1bWVudHM6IHsKKyAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNB
cmd1bWVudHMgPSB0cnVlOworICAgICAgICAgICAgbV9ncmFwaC5tX2V4ZWN1dGFibGVzV2hvc2VB
cmd1bWVudHNFc2NhcGVkLmFkZChtX2lubGluZVN0YWNrVG9wLT5leGVjdXRhYmxlKCkpOwogICAg
ICAgICAgICAgTm9kZUluZGV4IGNyZWF0ZUFyZ3VtZW50cyA9IGFkZFRvR3JhcGgoQ3JlYXRlQXJn
dW1lbnRzLCBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpOwogICAgICAgICAg
ICAgc2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGNyZWF0ZUFyZ3VtZW50cyk7
CiAgICAgICAgICAgICBzZXQodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpLCBjcmVhdGVBcmd1bWVudHMpOwpAQCAtMjQ2NCwxNiArMjQ2
NiwxOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX3RlYXJfb2ZmX2FyZ3VtZW50czogewor
ICAgICAgICAgICAgbV9ncmFwaC5tX2hhc0FyZ3VtZW50cyA9IHRydWU7CiAgICAgICAgICAgICBh
ZGRUb0dyYXBoKFRlYXJPZmZBcmd1bWVudHMsIGdldCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCkpKTsKICAgICAgICAgICAgIE5FWFRf
T1BDT0RFKG9wX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CiAgICAgICAgIH0KICAgICAgICAgICAgIAog
ICAgICAgICBjYXNlIG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoOiB7CisgICAgICAgICAgICBtX2dy
YXBoLm1faGFzQXJndW1lbnRzID0gdHJ1ZTsKICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kLCBhZGRUb0dyYXBoKEdldE15QXJndW1lbnRzTGVuZ3RoKSk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CiAgICAgICAg
IH0KICAgICAgICAgICAgIAogICAgICAgICBjYXNlIG9wX2dldF9hcmd1bWVudF9ieV92YWw6IHsK
KyAgICAgICAgICAgIG1fZ3JhcGgubV9oYXNBcmd1bWVudHMgPSB0cnVlOwogICAgICAgICAgICAg
c2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsCiAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaCgKICAgICAgICAgICAgICAgICAgICAgR2V0TXlBcmd1bWVudEJ5VmFsLCBPcEluZm8o
MCksIE9wSW5mbyhnZXRQcmVkaWN0aW9uKCkpLApAQCAtMjc1OCw2ICsyNzYzLDEyIEBAIEJ5dGVD
b2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgQXJndW1lbnRQb3Np
dGlvbiogYXJndW1lbnRQb3NpdGlvbiA9ICZieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX2FyZ3Vt
ZW50UG9zaXRpb25zLmxhc3QoKTsKICAgICAgICAgbV9hcmd1bWVudFBvc2l0aW9uc1tpXSA9IGFy
Z3VtZW50UG9zaXRpb247CiAgICAgfQorICAgIAorICAgIC8vIFRyYWNrIHRoZSBjb2RlLWJsb2Nr
LWdsb2JhbCBleGl0IHNpdGVzLgorICAgIGlmIChtX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKEFy
Z3VtZW50c0VzY2FwZWQpKSB7CisgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fZXhl
Y3V0YWJsZXNXaG9zZUFyZ3VtZW50c0VzY2FwZWQuYWRkKAorICAgICAgICAgICAgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSk7CisgICAgfQogICAgICAgICAKICAgICBpZiAobV9jYWxsZXIp
IHsKICAgICAgICAgLy8gSW5saW5lIGNhc2UuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NTRVBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NTRVBoYXNlLmNwcAkocmV2aXNpb24gMTE2OTEyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0MSwyMCArNDQx
LDMzIEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBOb05vZGU7CiAgICAgfQogICAgIAotICAg
IE5vZGVJbmRleCBnZXRMb2NhbExvYWRFbGltaW5hdGlvbihWYXJpYWJsZUFjY2Vzc0RhdGEqIHZh
cmlhYmxlQWNjZXNzRGF0YSkKKyAgICBOb2RlSW5kZXggZ2V0TG9jYWxMb2FkRWxpbWluYXRpb24o
VmlydHVhbFJlZ2lzdGVyIGxvY2FsLCBOb2RlSW5kZXgmIHJlbGV2YW50TG9jYWxPcCkKICAgICB7
CisgICAgICAgIHJlbGV2YW50TG9jYWxPcCA9IE5vTm9kZTsKKyAgICAgICAgCiAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7CiAgICAgICAgICAgICBOb2Rl
SW5kZXggaW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7CiAgICAgICAgICAgICBOb2RlJiBu
b2RlID0gbV9ncmFwaFtpbmRleF07CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgewog
ICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDoKLSAgICAgICAgICAgICAgICBpZiAobm9kZS52YXJp
YWJsZUFjY2Vzc0RhdGEoKSA9PSB2YXJpYWJsZUFjY2Vzc0RhdGEpCisgICAgICAgICAgICAgICAg
aWYgKG5vZGUubG9jYWwoKSA9PSBsb2NhbCkgeworICAgICAgICAgICAgICAgICAgICByZWxldmFu
dExvY2FsT3AgPSBpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgIGNhc2UgR2V0TG9jYWxVbmxpbmtlZDoKKyAgICAgICAgICAgICAgICBpZiAo
bm9kZS51bmxpbmtlZExvY2FsKCkgPT0gbG9jYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVs
ZXZhbnRMb2NhbE9wID0gaW5kZXg7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbmRleDsK
KyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgotICAgICAgICAgICAgICAgIGlmIChub2Rl
LnZhcmlhYmxlQWNjZXNzRGF0YSgpID09IHZhcmlhYmxlQWNjZXNzRGF0YSkKKyAgICAgICAgICAg
ICAgICBpZiAobm9kZS5sb2NhbCgpID09IGxvY2FsKSB7CisgICAgICAgICAgICAgICAgICAgIHJl
bGV2YW50TG9jYWxPcCA9IGluZGV4OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5j
aGlsZDEoKS5pbmRleCgpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC02MDAsMTggKzYx
MywzNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJs
ZUFjY2Vzc0RhdGEgPSBub2RlLnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICAgICAgaWYg
KCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzQ2FwdHVyZWQoKSkKICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIE5vZGVJbmRleCBwb3NzaWJsZVJlcGxhY2VtZW50ID0gZ2V0TG9jYWxM
b2FkRWxpbWluYXRpb24odmFyaWFibGVBY2Nlc3NEYXRhKTsKKyAgICAgICAgICAgIE5vZGVJbmRl
eCByZWxldmFudExvY2FsT3A7CisgICAgICAgICAgICBOb2RlSW5kZXggcG9zc2libGVSZXBsYWNl
bWVudCA9IGdldExvY2FsTG9hZEVsaW1pbmF0aW9uKHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwo
KSwgcmVsZXZhbnRMb2NhbE9wKTsKKyAgICAgICAgICAgIEFTU0VSVChyZWxldmFudExvY2FsT3Ag
PT0gTm9Ob2RlCisgICAgICAgICAgICAgICAgICAgfHwgbV9ncmFwaFtyZWxldmFudExvY2FsT3Bd
Lm9wKCkgPT0gR2V0TG9jYWxVbmxpbmtlZAorICAgICAgICAgICAgICAgICAgIHx8IG1fZ3JhcGhb
cmVsZXZhbnRMb2NhbE9wXS52YXJpYWJsZUFjY2Vzc0RhdGEoKSA9PSB2YXJpYWJsZUFjY2Vzc0Rh
dGEpOworICAgICAgICAgICAgTm9kZUluZGV4IHBoaUluZGV4ID0gbm9kZS5jaGlsZDEoKS5pbmRl
eCgpOwogICAgICAgICAgICAgaWYgKCFzZXRSZXBsYWNlbWVudChwb3NzaWJsZVJlcGxhY2VtZW50
KSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIE5vZGVJbmRleCBvbGRUYWls
SW5kZXggPSBtX2N1cnJlbnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLm9wZXJhbmQoCiAgICAgICAg
ICAgICAgICAgdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpKTsKICAgICAgICAgICAgIGlmIChv
bGRUYWlsSW5kZXggPT0gbV9jb21waWxlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBtX2N1cnJl
bnRCbG9jay0+dmFyaWFibGVzQXRUYWlsLm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRhLT5sb2Nh
bCgpKSA9Ci0gICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlUmVwbGFjZW1lbnQ7CisgICAgICAg
ICAgICAgICAgICAgIHJlbGV2YW50TG9jYWxPcDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAvLyBNYWludGFpbiBncmFwaCBpbnRlZ3JpdHk6IHNpbmNlIHdlJ3JlIHJlcGxhY2lu
ZyBhIEdldExvY2FsIHdpdGggYSBHZXRMb2NhbFVubGlua2VkLAorICAgICAgICAgICAgICAgIC8v
IG1ha2Ugc3VyZSB0aGF0IHRoZSBHZXRMb2NhbFVubGlua2VkIGlzIG5vdyBsaW5rZWQuCisgICAg
ICAgICAgICAgICAgaWYgKG1fZ3JhcGhbcmVsZXZhbnRMb2NhbE9wXS5vcCgpID09IEdldExvY2Fs
VW5saW5rZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaFtyZWxldmFudExvY2FsT3Bd
LnNldE9wKEdldExvY2FsKTsKKyAgICAgICAgICAgICAgICAgICAgbV9ncmFwaFtyZWxldmFudExv
Y2FsT3BdLmNoaWxkcmVuLmNoaWxkMSgpID0gRWRnZShwaGlJbmRleCk7CisgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgucmVmKHBoaUluZGV4KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCisgICAg
ICAgIGNhc2UgR2V0TG9jYWxVbmxpbmtlZDogeworICAgICAgICAgICAgTm9kZUluZGV4IHJlbGV2
YW50TG9jYWxPcElnbm9yZWQ7CisgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChnZXRMb2NhbExv
YWRFbGltaW5hdGlvbihub2RlLnVubGlua2VkTG9jYWwoKSwgcmVsZXZhbnRMb2NhbE9wSWdub3Jl
ZCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAg
ICBjYXNlIEpTQ29uc3RhbnQ6CiAgICAgICAgICAgICAvLyBUaGlzIGlzIHN0cmFuZ2UsIGJ1dCBu
ZWNlc3NhcnkuIFNvbWUgcGhhc2VzIHdpbGwgY29udmVydCBub2RlcyB0byBjb25zdGFudHMsCiAg
ICAgICAgICAgICAvLyB3aGljaCBtYXkgcmVzdWx0IGluIGR1cGxpY2F0ZWQgY29uc3RhbnRzLiBX
ZSB1c2UgQ1NFIHRvIGNsZWFuIHRoaXMgdXAuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEcml2ZXIuY3BwCShyZXZpc2lvbiAxMTY5MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0RyaXZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShERkdfSklUKQogCisjaW5jbHVkZSAiREZHQXJndW1lbnRzU2ltcGxpZmljYXRp
b25QaGFzZS5oIgogI2luY2x1ZGUgIkRGR0J5dGVDb2RlUGFyc2VyLmgiCiAjaW5jbHVkZSAiREZH
Q0ZBUGhhc2UuaCIKICNpbmNsdWRlICJERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmgiCkBAIC01
MCw3ICs1MSw3IEBAIGlubGluZSBib29sIGNvbXBpbGUoQ29tcGlsZU1vZGUgY29tcGlsZU0KICAg
ICBBU1NFUlQoY29kZUJsb2NrKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
KTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpLT5nZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOwotCisgICAgCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJC
T1NFKQogICAgIGRhdGFMb2coIkRGRyBjb21waWxpbmcgY29kZSBibG9jayAlcCglcCkgZm9yIGV4
ZWN1dGFibGUgJXAsIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgPSAldS5cbiIsIGNvZGVCbG9jaywg
Y29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBj
b2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSk7CiAjZW5kaWYKQEAgLTczLDYgKzc0LDcgQEAg
aW5saW5lIGJvb2wgY29tcGlsZShDb21waWxlTW9kZSBjb21waWxlTQogICAgICAgICBib29sIGNo
YW5nZWQgPSBmYWxzZTsKICAgICAgICAgcGVyZm9ybUNGQShkZmcpOwogICAgICAgICBjaGFuZ2Vk
IHw9IHBlcmZvcm1Db25zdGFudEZvbGRpbmcoZGZnKTsKKyAgICAgICAgY2hhbmdlZCB8PSBwZXJm
b3JtQXJndW1lbnRzU2ltcGxpZmljYXRpb24oZGZnKTsKICAgICAgICAgY2hhbmdlZCB8PSBwZXJm
b3JtQ0ZHU2ltcGxpZmljYXRpb24oZGZnKTsKICAgICAgICAgcGVyZm9ybUNTRShkZmcpOwogICAg
ICAgICBpZiAoIWNoYW5nZWQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CShyZXZpc2lvbiAxMTY5MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmgJKHdvcmtpbmcgY29weSkKQEAgLTgwLDYgKzgwLDcgQEAgcHVibGljOgogICAgICAgICA6IG1f
Z2xvYmFsRGF0YShnbG9iYWxEYXRhKQogICAgICAgICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykK
ICAgICAgICAgLCBtX3Byb2ZpbGVkQmxvY2soY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKQorICAg
ICAgICAsIG1faGFzQXJndW1lbnRzKGZhbHNlKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fcHJv
ZmlsZWRCbG9jayk7CiAgICAgfQpAQCAtMzAxLDYgKzMwMiwxNCBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiAmbV9zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YS5sYXN0KCk7CiAgICAgfQogICAgIAor
ICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVP
cmlnaW4pCisgICAgeworICAgICAgICBpZiAoIWNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKQor
ICAgICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKKyAgICAg
ICAgCisgICAgICAgIHJldHVybiBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJs
ZS5nZXQoKTsKKyAgICB9CisgICAgCiAgICAgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0Zv
cihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQogICAgIHsKICAgICAgICAgcmV0dXJuIGJh
c2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29kZU9yaWdpbiwg
bV9wcm9maWxlZEJsb2NrKTsKQEAgLTQwMSw2ICs0MTAsOSBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICByZXR1cm4gIWlzUHJlZGljdGVkTnVtZXJpY2FsKG5vZGUpOwogICAgICAgICBjYXNlIEdldEJ5
VmFsOgogICAgICAgICAgICAgcmV0dXJuICFieVZhbElzUHVyZShub2RlKTsKKyAgICAgICAgY2Fz
ZSBHZXRNeUFyZ3VtZW50QnlWYWw6CisgICAgICAgICAgICByZXR1cm4gbV9leGVjdXRhYmxlc1do
b3NlQXJndW1lbnRzRXNjYXBlZC5jb250YWlucygKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxl
Rm9yKG5vZGUuY29kZU9yaWdpbikpOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gSWYgYnkgc29t
ZSBvZGRpdHkgd2UgaGl0IHRoaXMgY2FzZSBpbiByZWxlYXNlIGJ1aWxkIGl0J3Mgc2FmZXIgdG8g
aGF2ZSBDU0UgYXNzdW1lIHRoZSB3b3JzdC4KQEAgLTQ0Miw2ICs0NTQsOCBAQCBwdWJsaWM6CiAg
ICAgU2VnbWVudGVkVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24sIDg+IG1fYXJndW1lbnRQb3NpdGlv
bnM7CiAgICAgU2VnbWVudGVkVmVjdG9yPFN0cnVjdHVyZVNldCwgMTY+IG1fc3RydWN0dXJlU2V0
OwogICAgIFNlZ21lbnRlZFZlY3RvcjxTdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSwgOD4gbV9zdHJ1
Y3R1cmVUcmFuc2l0aW9uRGF0YTsKKyAgICBib29sIG1faGFzQXJndW1lbnRzOworICAgIEhhc2hT
ZXQ8RXhlY3V0YWJsZUJhc2UqPiBtX2V4ZWN1dGFibGVzV2hvc2VBcmd1bWVudHNFc2NhcGVkOwog
ICAgIEJpdFZlY3RvciBtX3ByZXNlcnZlZFZhcnM7CiAgICAgRG9taW5hdG9ycyBtX2RvbWluYXRv
cnM7CiAgICAgdW5zaWduZWQgbV9sb2NhbFZhcnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuaAkocmV2aXNpb24gMTE2OTEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiwxMiArMjAyLDIxIEBAIHN0cnVjdCBO
b2RlIHsKICAgICAgICAgbV9vcCA9IEpTQ29uc3RhbnQ7CiAgICAgICAgIGlmIChtX2ZsYWdzICYg
Tm9kZU11c3RHZW5lcmF0ZSkKICAgICAgICAgICAgIG1fcmVmQ291bnQtLTsKLSAgICAgICAgQVNT
RVJUKCEobV9mbGFncyAmIE5vZGVDbG9iYmVyc1dvcmxkKSk7Ci0gICAgICAgIG1fZmxhZ3MgJj0g
fihOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlcik7CisgICAgICAgIG1fZmxhZ3Mg
Jj0gfihOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZU1pZ2h0Q2xvYmJlciB8IE5vZGVDbG9iYmVyc1dv
cmxkKTsKICAgICAgICAgbV9vcEluZm8gPSBjb25zdGFudE51bWJlcjsKICAgICAgICAgY2hpbGRy
ZW4ucmVzZXQoKTsKICAgICB9CiAgICAgCisgICAgdm9pZCBjb252ZXJ0VG9HZXRMb2NhbFVubGlu
a2VkKFZpcnR1YWxSZWdpc3RlciBsb2NhbCkKKyAgICB7CisgICAgICAgIG1fb3AgPSBHZXRMb2Nh
bFVubGlua2VkOworICAgICAgICBpZiAobV9mbGFncyAmIE5vZGVNdXN0R2VuZXJhdGUpCisgICAg
ICAgICAgICBtX3JlZkNvdW50LS07CisgICAgICAgIG1fZmxhZ3MgJj0gfihOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZU1pZ2h0Q2xvYmJlciB8IE5vZGVDbG9iYmVyc1dvcmxkKTsKKyAgICAgICAgbV9v
cEluZm8gPSBsb2NhbDsKKyAgICAgICAgY2hpbGRyZW4ucmVzZXQoKTsKKyAgICB9CisgICAgCiAg
ICAgSlNDZWxsKiB3ZWFrQ29uc3RhbnQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIGJpdHdpc2Vf
Y2FzdDxKU0NlbGwqPihtX29wSW5mbyk7CkBAIC0yODEsNiArMjkwLDEyIEBAIHN0cnVjdCBOb2Rl
IHsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4obV9vcEluZm8p
OwogICAgIH0KICAgICAKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgdW5saW5rZWRMb2NhbCgpCisgICAg
eworICAgICAgICBBU1NFUlQob3AoKSA9PSBHZXRMb2NhbFVubGlua2VkKTsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4obV9vcEluZm8pOworICAgIH0KKyAgICAK
ICAgICBib29sIGhhc0lkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChvcCgpKSB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCShyZXZpc2lvbiAx
MTY5MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ4LDcgKzQ4LDkgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcg
ewogICAgIG1hY3JvKENyZWF0ZVRoaXMsIE5vZGVSZXN1bHRKUykgLyogTm90ZSB0aGlzIGlzIG5v
dCBNdXN0R2VuZXJhdGUgc2luY2Ugd2UncmUgcmV0dXJuaW5nIGl0IGFueXdheS4gKi8gXAogICAg
IG1hY3JvKEdldENhbGxlZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgXAotICAgIC8qIE5vZGVzIGZv
ciBsb2NhbCB2YXJpYWJsZSBhY2Nlc3MuICovXAorICAgIC8qIE5vZGVzIGZvciBsb2NhbCB2YXJp
YWJsZSBhY2Nlc3MuIFRoZXNlIG5vZGVzIGFyZSBsaW5rZWQgdG9nZXRoZXIgdXNpbmcgUGhpIG5v
ZGVzLiAqL1wKKyAgICAvKiBBbnkgdHdvIG5vZGVzIHRoYXQgYXJlIHBhcnQgb2YgdGhlIHNhbWUg
UGhpIGdyYXBoIHdpbGwgc2hhcmUgdGhlIHNhbWUgKi9cCisgICAgLyogVmFyaWFibGVBY2Nlc3NE
YXRhLCBhbmQgdGh1cyB3aWxsIHNoYXJlIHByZWRpY3Rpb25zLiAqL1wKICAgICBtYWNybyhHZXRM
b2NhbCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oU2V0TG9jYWwsIDApIFwKICAgICBtYWNy
byhQaGFudG9tLCBOb2RlTXVzdEdlbmVyYXRlKSBcCkBAIC01Niw2ICs1OCwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oUGhpLCAwKSBcCiAgICAgbWFjcm8o
Rmx1c2gsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBcCisgICAgLyogR2V0IHRoZSB2YWx1ZSBv
ZiBhIGxvY2FsIHZhcmlhYmxlLCB3aXRob3V0IGxpbmtpbmcgaW50byB0aGUgVmFyaWFibGVBY2Nl
c3NEYXRhICovXAorICAgIC8qIG5ldHdvcmsuIFRoaXMgaXMgb25seSB2YWxpZCBmb3IgdmFyaWFi
bGUgYWNjZXNzZXMgd2hvc2UgcHJlZGljdGlvbnMgb3JpZ2luYXRlZCAqL1wKKyAgICAvKiBhcyBz
b21ldGhpbmcgb3RoZXIgdGhhbiBhIGxvY2FsIGFjY2VzcywgYW5kIHRodXMgaGFkIHRoZWlyIG93
biBwcm9maWxpbmcuICovXAorICAgIG1hY3JvKEdldExvY2FsVW5saW5rZWQsIE5vZGVSZXN1bHRK
UykgXAorICAgIFwKICAgICAvKiBNYXJrZXIgZm9yIGFyZ3VtZW50cyBiZWluZyBzZXQuICovXAog
ICAgIG1hY3JvKFNldEFyZ3VtZW50LCAwKSBcCiAgICAgXApAQCAtMTkyLDcgKzE5OSw3IEBAIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhDcmVhdGVBcmd1bWVudHMs
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFRlYXJPZmZBcmd1bWVudHMsIE5vZGVNdXN0R2Vu
ZXJhdGUpIFwKICAgICBtYWNybyhHZXRNeUFyZ3VtZW50c0xlbmd0aCwgTm9kZVJlc3VsdEpTIHwg
Tm9kZU11c3RHZW5lcmF0ZSB8IE5vZGVDbG9iYmVyc1dvcmxkKSBcCi0gICAgbWFjcm8oR2V0TXlB
cmd1bWVudEJ5VmFsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9kZUNsb2Ji
ZXJzV29ybGQpIFwKKyAgICBtYWNybyhHZXRNeUFyZ3VtZW50QnlWYWwsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlTWlnaHRDbG9iYmVyKSBcCiAgICAgbWFjcm8oQ2hlY2tB
cmd1bWVudHNOb3RDcmVhdGVkLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgXAogICAgIC8qIE5v
ZGVzIGZvciBjcmVhdGluZyBmdW5jdGlvbnMuICovXApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCShyZXZpc2lvbiAxMTY5MTIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nywx
NiBAQCBib29sIE9TUkV4aXQ6OmNvbnNpZGVyQWRkaW5nQXNGcmVxdWVudEV4CiAgICAgaWYgKHN0
YXRpY19jYXN0PGRvdWJsZT4obV9jb3VudCkgLyBkZmdDb2RlQmxvY2stPnNwZWN1bGF0aXZlRmFp
bENvdW50ZXIoKSA8PSBPcHRpb25zOjpvc3JFeGl0UHJvbWluZW5jZUZvckZyZXF1ZW50RXhpdFNp
dGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKLSAgICByZXR1cm4gYmFzZWxpbmVDb2Rl
QmxvY2tGb3JPcmlnaW5BbmRCYXNlbGluZUNvZGVCbG9jayhtX2NvZGVPcmlnaW4sIHByb2ZpbGVk
Q29kZUJsb2NrKS0+YWRkRnJlcXVlbnRFeGl0U2l0ZShGcmVxdWVudEV4aXRTaXRlKG1fY29kZU9y
aWdpbi5ieXRlY29kZUluZGV4LCBtX2tpbmQpKTsKKyAgICBGcmVxdWVudEV4aXRTaXRlIGV4aXRT
aXRlOworICAgIAorICAgIGlmIChtX2tpbmQgPT0gQXJndW1lbnRzRXNjYXBlZCkgeworICAgICAg
ICAvLyBDb3VudCB0aGlzIG9uZSBnbG9iYWxseS4gSXQgZG9lc24ndCBtYXR0ZXIgd2hlcmUgaW4g
dGhlIGNvZGUgYmxvY2sgdGhlIGFyZ3VtZW50cyBleGNhcGVkOworICAgICAgICAvLyB0aGUgZmFj
dCB0aGF0IHRoZXkgZGlkIGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW55IHBhcnRpY3VsYXIgaW5z
dHJ1Y3Rpb24uCisgICAgICAgIGV4aXRTaXRlID0gRnJlcXVlbnRFeGl0U2l0ZShtX2tpbmQpOwor
ICAgIH0gZWxzZQorICAgICAgICBleGl0U2l0ZSA9IEZyZXF1ZW50RXhpdFNpdGUobV9jb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXgsIG1fa2luZCk7CisgICAgCisgICAgcmV0dXJuIGJhc2VsaW5lQ29k
ZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2sobV9jb2RlT3JpZ2luLCBwcm9maWxl
ZENvZGVCbG9jayktPmFkZEZyZXF1ZW50RXhpdFNpdGUoZXhpdFNpdGUpOwogfQogCiB9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2aXNpb24g
MTE2OTEyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYxNSw3ICs2MTUsOCBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIEdldEZsb2F0MzJBcnJheUxlbmd0aDoKICAgICAgICAgY2FzZSBHZXRG
bG9hdDY0QXJyYXlMZW5ndGg6CiAgICAgICAgIGNhc2UgR2V0U3RyaW5nTGVuZ3RoOgotICAgICAg
ICBjYXNlIEludDMyVG9Eb3VibGU6IHsKKyAgICAgICAgY2FzZSBJbnQzMlRvRG91YmxlOgorICAg
ICAgICBjYXNlIEdldExvY2FsVW5saW5rZWQ6IHsKICAgICAgICAgICAgIC8vIFRoaXMgbm9kZSBz
aG91bGQgbmV2ZXIgYmUgdmlzaWJsZSBhdCB0aGlzIHN0YWdlIG9mIGNvbXBpbGF0aW9uLiBJdCBp
cwogICAgICAgICAgICAgLy8gaW5zZXJ0ZWQgYnkgZml4dXAoKSwgd2hpY2ggZm9sbG93cyB0aGlz
IHBoYXNlLgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHJldmlzaW9uIDExNjkxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MzksNiArMTkzOSwxNSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIG1fZ2VuZXJh
dGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyXS5pbml0SlNWYWx1ZShtX2NvbXBpbGVJbmRleCwgbm9k
ZS5yZWZDb3VudCgpLCB0YWcuZ3ByKCksIHJlc3VsdC5ncHIoKSwgZm9ybWF0KTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIEdldExvY2FsVW5saW5rZWQ6IHsKKyAg
ICAgICAgR1BSVGVtcG9yYXJ5IHBheWxvYWQodGhpcyk7CisgICAgICAgIEdQUlRlbXBvcmFyeSB0
YWcodGhpcyk7CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihu
b2RlLnVubGlua2VkTG9jYWwoKSksIHBheWxvYWQuZ3ByKCkpOworICAgICAgICBtX2ppdC5sb2Fk
MzIoSklUQ29tcGlsZXI6OnRhZ0Zvcihub2RlLnVubGlua2VkTG9jYWwoKSksIHRhZy5ncHIoKSk7
CisgICAgICAgIGpzVmFsdWVSZXN1bHQodGFnLmdwcigpLCBwYXlsb2FkLmdwcigpLCBtX2NvbXBp
bGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIGNhc2UgU2V0TG9jYWw6IHsK
ICAgICAgICAgLy8gU2V0TG9jYWwgZG91YmxlcyBhcyBhIGhpbnQgYXMgdG8gd2hlcmUgYSBub2Rl
IHdpbGwgYmUgc3RvcmVkIGFuZApAQCAtMzg4OSw4ICszODk4LDYgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDaGVj
a0FyZ3VtZW50c05vdENyZWF0ZWQ6IHsKLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBoYXZl
IGEgd2F5IHRvIGNvdW50IHN1Y2ggZmFpbHVyZXMuIFRoaXMgd2lsbCBiZSBwYXJ0IG9mCi0gICAg
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NjMyNwogICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKApAQCAtMzkwMiw2ICsz
OTA5LDI1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9
CiAgICAgICAgIAogICAgIGNhc2UgR2V0TXlBcmd1bWVudHNMZW5ndGg6IHsKKyAgICAgICAgaWYg
KCFtX2ppdC5ncmFwaCgpLm1fZXhlY3V0YWJsZXNXaG9zZUFyZ3VtZW50c0VzY2FwZWQuY29udGFp
bnMoCisgICAgICAgICAgICAgICAgbV9qaXQuZ3JhcGgoKS5leGVjdXRhYmxlRm9yKG5vZGUuY29k
ZU9yaWdpbikpKSB7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAg
ICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBBcmd1bWVudHNF
c2NhcGVkLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJh
bmNoMzIoCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKKyAgICAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0ZvcihtX2ppdC5hcmd1bWVudHNSZWdpc3Rl
ckZvcihub2RlLmNvZGVPcmlnaW4pKSwKKyAgICAgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMy
KEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFT
U0VSVCghbm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSk7CisgICAgICAgICAgICBtX2pp
dC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENv
dW50KSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0zMigx
KSwgcmVzdWx0R1BSKTsKKyAgICAgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0R1BSLCBtX2Nv
bXBpbGVJbmRleCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFBheWxvYWQodGhpcyk7CiAgICAgICAgIEdQUlRlbXBv
cmFyeSByZXN1bHRUYWcodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2FkR1BSID0g
cmVzdWx0UGF5bG9hZC5ncHIoKTsKQEAgLTM5NDQsNiArMzk3MCw1NCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRQYXlsb2Fk
R1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdFRhZ0dQUiA9
IHJlc3VsdFRhZy5ncHIoKTsKICAgICAgICAgCisgICAgICAgIGlmICghbV9qaXQuZ3JhcGgoKS5t
X2V4ZWN1dGFibGVzV2hvc2VBcmd1bWVudHNFc2NhcGVkLmNvbnRhaW5zKAorICAgICAgICAgICAg
ICAgIG1faml0LmdyYXBoKCkuZXhlY3V0YWJsZUZvcihub2RlLmNvZGVPcmlnaW4pKSkgeworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKKyAgICAgICAgICAgICAgICBBcmd1bWVudHNFc2Nh
cGVkLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNo
MzIoCisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKKyAgICAgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0ZvcihtX2ppdC5hcmd1bWVudHNSZWdpc3RlckZv
cihub2RlLmNvZGVPcmlnaW4pKSwKKyAgICAgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1faml0
LmFkZDMyKFRydXN0ZWRJbW0zMigxKSwgaW5kZXhHUFIsIHJlc3VsdFBheWxvYWRHUFIpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAobm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSkgeworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAg
ICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaDMyKAorICAgICAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkFib3ZlT3JFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFBheWxvYWRHUFIs
CisgICAgICAgICAgICAgICAgICAgICAgICBJbW0zMihub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpKSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgICAgICBVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1
YWwsCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkR1BSLAorICAgICAgICAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1
bWVudENvdW50KSkpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIG1faml0
Lm5lZzMyKHJlc3VsdFBheWxvYWRHUFIpOworICAgICAgICAKKyAgICAgICAgICAgIHNpemVfdCBi
YXNlT2Zmc2V0ID0KKyAgICAgICAgICAgICAgICAoKG5vZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxs
RnJhbWUKKyAgICAgICAgICAgICAgICAgID8gbm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZS0+c3RhY2tPZmZzZXQKKyAgICAgICAgICAgICAgICAgIDogMCkgKyBDYWxsRnJhbWU6OmFyZ3Vt
ZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSkgKiBzaXplb2YoUmVnaXN0ZXIpOworICAgICAgICAg
ICAgbV9qaXQubG9hZDMyKAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpCYXNlSW5kZXgo
CisgICAgICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCByZXN1bHRQ
YXlsb2FkR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwKKyAgICAgICAgICAgICAgICAgICAg
YmFzZU9mZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0Jp
dHMudGFnKSksCisgICAgICAgICAgICAgICAgcmVzdWx0VGFnR1BSKTsKKyAgICAgICAgICAgIG1f
aml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QmFzZUluZGV4KAorICAg
ICAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcmVzdWx0UGF5bG9h
ZEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsCisgICAgICAgICAgICAgICAgICAgIGJhc2VP
ZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBh
eWxvYWQpKSwKKyAgICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRH
UFIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAgICAgIHNs
b3dQYXRoLmFwcGVuZCgKICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZp
c2lvbiAxMTY5MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTg1LDYgKzE5ODUsMTUgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAK
KyAgICBjYXNlIEdldExvY2FsVW5saW5rZWQ6IHsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKKyAgICAgICAgCisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFk
ZHJlc3NGb3Iobm9kZS51bmxpbmtlZExvY2FsKCkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAK
KyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKKyAg
ICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgY2FzZSBTZXRMb2NhbDogewogICAgICAgICAvLyBT
ZXRMb2NhbCBkb3VibGVzIGFzIGEgaGludCBhcyB0byB3aGVyZSBhIG5vZGUgd2lsbCBiZSBzdG9y
ZWQgYW5kCiAgICAgICAgIC8vIGFzIGEgc3BlY3VsYXRpb24gcG9pbnQuIFNvIGJlZm9yZSB3ZSBz
cGVjdWxhdGUgbWFrZSBzdXJlIHRoYXQgd2UKQEAgLTM4NzcsMjMgKzM4ODYsMjYgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9
CiAgICAgICAgIAotICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVhdGVkOiB7Ci0gICAgICAg
IC8vIEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIHdheSB0byBjb3VudCBzdWNoIGZhaWx1cmVzLiBU
aGlzIHdpbGwgYmUgcGFydCBvZgotICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODYzMjcKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAg
ICAgIFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCi0gICAgICAgICAgICBtX2pp
dC5icmFuY2hUZXN0UHRyKAotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLAot
ICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKAotICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKSkpOwotICAg
ICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAg
ICAgICAgCiAgICAgY2FzZSBHZXRNeUFyZ3VtZW50c0xlbmd0aDogewogICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwogICAgICAgICAKKyAgICAgICAgaWYgKCFtX2ppdC5ncmFwaCgpLm1fZXhlY3V0YWJsZXNX
aG9zZUFyZ3VtZW50c0VzY2FwZWQuY29udGFpbnMoCisgICAgICAgICAgICAgICAgbV9qaXQuZ3Jh
cGgoKS5leGVjdXRhYmxlRm9yKG5vZGUuY29kZU9yaWdpbikpKSB7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIEFyZ3VtZW50c0VzY2FwZWQsIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKAorICAg
ICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2pp
dC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKSkpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBBU1NFUlQoIW5vZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpOwor
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKFJlZ2lzdGVy
RmlsZTo6QXJndW1lbnRDb3VudCksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBtX2ppdC5zdWIz
MihUcnVzdGVkSW1tMzIoMSksIHJlc3VsdEdQUik7CisgICAgICAgICAgICBpbnRlZ2VyUmVzdWx0
KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGNyZWF0ZWQgPSBtX2ppdC5i
cmFuY2hUZXN0UHRyKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCiAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6YWRkcmVzc0ZvcigKQEAgLTM5MzEsNiArMzk0Myw0NyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyBpbmRl
eEdQUiA9IGluZGV4LmdwcigpOwogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0Lmdw
cigpOwogICAgICAgICAKKyAgICAgICAgaWYgKCFtX2ppdC5ncmFwaCgpLm1fZXhlY3V0YWJsZXNX
aG9zZUFyZ3VtZW50c0VzY2FwZWQuY29udGFpbnMoCisgICAgICAgICAgICAgICAgbV9qaXQuZ3Jh
cGgoKS5leGVjdXRhYmxlRm9yKG5vZGUuY29kZU9yaWdpbikpKSB7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgIEFyZ3VtZW50c0VzY2FwZWQsIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKAorICAg
ICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6Tm9uWmVybywKKyAgICAgICAgICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2pp
dC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKSkpOworCisgICAgICAgICAg
ICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIGluZGV4R1BSLCByZXN1bHRHUFIpOworICAg
ICAgICAgICAgaWYgKG5vZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAorICAgICAgICAgICAgICAgICAgICBVbmNvdW50YWJs
ZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFu
Y2gzMigKKyAgICAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWws
CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAg
ICAgICBJbW0zMihub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6
ZSgpKSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKAorICAgICAgICAgICAgICAgICAgICBVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLAorICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCisgICAgICAgICAgICAgICAg
ICAgICAgICByZXN1bHRHUFIsCisgICAgICAgICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
cGF5bG9hZEZvcihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1faml0Lm5lZzMyKHJlc3VsdEdQUik7CisgICAg
ICAgICAgICBtX2ppdC5zaWduRXh0ZW5kMzJUb1B0cihyZXN1bHRHUFIsIHJlc3VsdEdQUik7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIG1faml0LmxvYWRQdHIoCisgICAgICAgICAgICAgICAg
SklUQ29tcGlsZXI6OkJhc2VJbmRleCgKKyAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2Fs
bEZyYW1lUmVnaXN0ZXIsIHJlc3VsdEdQUiwgSklUQ29tcGlsZXI6OlRpbWVzRWlnaHQsCisgICAg
ICAgICAgICAgICAgICAgICgobm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZQorICAgICAg
ICAgICAgICAgICAgICAgID8gbm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tP
ZmZzZXQKKyAgICAgICAgICAgICAgICAgICAgICA6IDApICsgQ2FsbEZyYW1lOjphcmd1bWVudE9m
ZnNldEluY2x1ZGluZ1RoaXMoMCkpICogc2l6ZW9mKFJlZ2lzdGVyKSksCisgICAgICAgICAgICAg
ICAgcmVzdWx0R1BSKTsKKworICAgICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1f
Y29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAog
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcExpc3Qgc2xvd1BhdGg7CiAgICAgICAgIHNsb3dQYXRo
LmFwcGVuZCgKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3RQdHIoCkBAIC0zOTc0LDYgKzQw
MjcsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgICAgIAorICAgIGNhc2UgQ2hlY2tBcmd1bWVudHNOb3RDcmVh
dGVkOiB7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCisgICAgICAgICAgICBBcmd1bWVudHNF
c2NhcGVkLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsCisgICAgICAgICAgICBtX2ppdC5icmFuY2hU
ZXN0UHRyKAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLAorICAgICAgICAg
ICAgICAgIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKAorICAgICAgICAgICAgICAgICAgICBtX2pp
dC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKSkpOworICAgICAgICBub1Jl
c3VsdChtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAg
ICAgY2FzZSBOZXdGdW5jdGlvbk5vQ2hlY2s6CiAgICAgICAgIGNvbXBpbGVOZXdGdW5jdGlvbk5v
Q2hlY2sobm9kZSk7CiAgICAgICAgIGJyZWFrOwo=
</data>
<flag name="review"
          id="147980"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>