<?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>103715</bug_id>
          
          <creation_ts>2012-11-30 00:03:46 -0800</creation_ts>
          <short_desc>Rationalize and clean up DFG handling of scoped accesses</short_desc>
          <delta_ts>2012-11-30 13:57:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>779869</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-30 00:03:46 -0800</bug_when>
    <thetext>We use GetScope with a scope count even in places where the base is known (put_to_base), and the scope count eliminates CSE opportunities for code that accesses variables at different scope depths.  Also the code could just be simplified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779873</commentid>
    <comment_count>1</comment_count>
      <attachid>176907</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-30 00:06:56 -0800</bug_when>
    <thetext>Created attachment 176907
work in progress

Still testing it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>779987</commentid>
    <comment_count>2</comment_count>
      <attachid>176935</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-30 03:28:07 -0800</bug_when>
    <thetext>Created attachment 176935
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>780396</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-30 13:57:27 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/136276</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176907</attachid>
            <date>2012-11-30 00:06:56 -0800</date>
            <delta_ts>2012-11-30 03:28:07 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>fixscope.patch</filename>
            <type>text/plain</type>
            <size>27340</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MjA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBA
CisyMDEyLTExLTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmF0aW9uYWxpemUgYW5kIGNsZWFuIHVwIERGRyBoYW5kbGluZyBvZiBzY29wZWQgYWNjZXNzZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzcxNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdvcmsgaW4g
cHJvZ3Jlc3MuCisKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVPcmlnaW4uY3BwOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjppbmxpbmVTdGFjayk6
CisgICAgICAgIChKU0M6OkNvZGVPcmlnaW46OmR1bXApOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpkdW1wKToKKyAgICAgICAgKiBieXRlY29kZS9Db2Rl
T3JpZ2luLmg6CisgICAgICAgIChDb2RlT3JpZ2luKToKKyAgICAgICAgKElubGluZUNhbGxGcmFt
ZSk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkFic3RyYWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHA6CisgICAgICAgIChCeXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OmdldFNjb3BlKToKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlUmVzb2x2ZU9wZXJhdGlvbnMpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZH
Q1NFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpzY29wZWRWYXJMb2Fk
RWxpbWluYXRpb24pOgorICAgICAgICAoSlNDOjpERkc6OkNTRVBoYXNlOjpzY29wZWRWYXJTdG9y
ZUVsaW1pbmF0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpDU0VQaGFzZTo6Z2V0TXlTY29wZUxv
YWRFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnNldExvY2FsU3Rv
cmVFbGltaW5hdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Q1NFUGhhc2U6OnBlcmZvcm1Ob2Rl
Q1NFKToKKyAgICAgICAgKiBkZmcvREZHRGlzYXNzZW1ibGVyLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpEaXNhc3NlbWJsZXI6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmR1bXBDb2RlT3JpZ2luKToKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgor
ICAgICAgICAoTm9kZSk6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgIChE
RkcpOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6
CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQ2NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUpOgorICAgICAgICAqIGppdC9KSVREaXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpK
SVREaXNhc3NlbWJsZXI6OmR1bXApOgorCiAyMDEyLTExLTI5ICBSYWZhZWwgV2VpbnN0ZWluICA8
cmFmYWVsd0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0hUTUxUZW1wbGF0ZUVsZW1lbnRdIEFk
ZCBmZWF0dXJlIGZsYWcKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMzYyMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBD
b2RlQmxvY2tIYXNoIENvZGVCbG9jazo6aGFzaCgpIGNvbnN0CiAKIHZvaWQgQ29kZUJsb2NrOjpk
dW1wQXNzdW1pbmdKSVRUeXBlKFByaW50U3RyZWFtJiBvdXQsIEpJVENvZGU6OkpJVFR5cGUgaml0
VHlwZSkgY29uc3QKIHsKLSAgICBvdXQucHJpbnQoIiMiLCBoYXNoKCksICI6WyIsIFJhd1BvaW50
ZXIodGhpcyksICIsICIsIGppdFR5cGUsIGNvZGVUeXBlKCkpOworICAgIG91dC5wcmludCgiIyIs
IGhhc2goKSwgIjpbIiwgUmF3UG9pbnRlcih0aGlzKSwgIi0+IiwgUmF3UG9pbnRlcihvd25lckV4
ZWN1dGFibGUoKSksICIsICIsIGppdFR5cGUsIGNvZGVUeXBlKCkpOwogICAgIGlmIChjb2RlVHlw
ZSgpID09IEZ1bmN0aW9uQ29kZSkKICAgICAgICAgb3V0LnByaW50KHNwZWNpYWxpemF0aW9uS2lu
ZCgpKTsKICAgICBvdXQucHJpbnQoIl0iKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlT3JpZ2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAJKHJldmlzaW9uIDEzNjIwMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTAsMTMgKzUwLDMzIEBAIFZlY3RvcjxDb2RlT3JpZ2luPiBDb2RlT3JpZ2luOjppbmxpbmVTdGEK
ICAgICB1bnNpZ25lZCBpbmRleCA9IHJlc3VsdC5zaXplKCkgLSAyOwogICAgIGZvciAoSW5saW5l
Q2FsbEZyYW1lKiBjdXJyZW50ID0gaW5saW5lQ2FsbEZyYW1lOyBjdXJyZW50OyBjdXJyZW50ID0g
Y3VycmVudC0+Y2FsbGVyLmlubGluZUNhbGxGcmFtZSkKICAgICAgICAgcmVzdWx0W2luZGV4LS1d
ID0gY3VycmVudC0+Y2FsbGVyOworICAgIEFTU0VSVCghcmVzdWx0WzBdLmlubGluZUNhbGxGcmFt
ZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAordm9pZCBDb2RlT3JpZ2luOjpkdW1wKFByaW50
U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgVmVjdG9yPENvZGVPcmlnaW4+IHN0YWNrID0gaW5s
aW5lU3RhY2soKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhY2suc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKGkpCisgICAgICAgICAgICBvdXQucHJpbnQoIiAtLT4gIik7Cisg
ICAgICAgIAorICAgICAgICBpZiAoSW5saW5lQ2FsbEZyYW1lKiBmcmFtZSA9IHN0YWNrW2ldLmlu
bGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIG91dC5wcmludCgiIyIsIGZyYW1lLT5oYXNoKCks
ICI6PCIsIFJhd1BvaW50ZXIoZnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpLCAiPiAiKTsKKyAgICAg
ICAgCisgICAgICAgIG91dC5wcmludCgiYmMjIiwgc3RhY2tbaV0uYnl0ZWNvZGVJbmRleCk7Cisg
ICAgfQorfQorCiBDb2RlQmxvY2tIYXNoIElubGluZUNhbGxGcmFtZTo6aGFzaCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIGV4ZWN1dGFibGUtPmhhc2hGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKCkpOwog
fQogCit2b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAor
eworICAgIG91dC5wcmludCgiIyIsIGhhc2goKSwgIjo8IiwgUmF3UG9pbnRlcihleGVjdXRhYmxl
LmdldCgpKSwgIiwgYmMjIiwgY2FsbGVyLmJ5dGVjb2RlSW5kZXgsICIsICIsIHNwZWNpYWxpemF0
aW9uS2luZCgpLCAiPiIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAxMzYyMDEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiVmFsdWVSZWNvdmVyeS5oIgogI2lu
Y2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KKyNpbmNs
dWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC05MCw2ICs5MSw4IEBAIHN0cnVjdCBDb2RlT3Jp
Z2luIHsKICAgICAKICAgICAvLyBHZXQgdGhlIGlubGluZSBzdGFjay4gVGhpcyBpcyBzbG93LCBh
bmQgaXMgaW50ZW5kZWQgZm9yIGRlYnVnZ2luZyBvbmx5LgogICAgIFZlY3RvcjxDb2RlT3JpZ2lu
PiBpbmxpbmVTdGFjaygpIGNvbnN0OworICAgIAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYp
IGNvbnN0OwogfTsKIAogc3RydWN0IElubGluZUNhbGxGcmFtZSB7CkBAIC0xMDQsNiArMTA3LDgg
QEAgc3RydWN0IElubGluZUNhbGxGcmFtZSB7CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBz
cGVjaWFsaXphdGlvbktpbmQoKSBjb25zdCB7IHJldHVybiBzcGVjaWFsaXphdGlvbkZyb21Jc0Nh
bGwoaXNDYWxsKTsgfQogICAgIAogICAgIENvZGVCbG9ja0hhc2ggaGFzaCgpIGNvbnN0OworICAg
IAorICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogfTsKIAogc3RydWN0IENvZGVP
cmlnaW5BdENhbGxSZXR1cm5PZmZzZXQgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFN0YXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxMzYyMDEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzgzLDcgKzEzODMsOSBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUodW5zaWduZWQg
aW5kCiAgICAgICAgIGZvck5vZGUobm9kZUluZGV4KS5zZXQoU3BlY0Z1bmN0aW9uKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAKLSAgICBjYXNlIEdldFNjb3BlOgorICAgIGNhc2UgR2V0
TXlTY29wZToKKyAgICBjYXNlIFNraXBUb3BTY29wZToKKyAgICBjYXNlIFNraXBTY29wZToKICAg
ICAgICAgbm9kZS5zZXRDYW5FeGl0KGZhbHNlKTsKICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgp
LnNldChTcGVjQ2VsbE90aGVyKTsKICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTM2MjAx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE3Niw2ICsxNzYsOCBAQCBwcml2YXRlOgogICAgICAgICBpbnQgZGVz
dGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIsCiAgICAgICAgIGNvbnN0IEdldEJ5SWRTdGF0dXMmKTsKIAorICAg
IE5vZGVJbmRleCBnZXRTY29wZShib29sIHNraXBUb3AsIHVuc2lnbmVkIHNraXBDb3VudCk7Cisg
ICAgCiAgICAgLy8gQ29udmVydCBhIHNldCBvZiBSZXNvbHZlT3BlcmF0aW9ucyBpbnRvIGdyYXBo
IG5vZGVzCiAgICAgYm9vbCBwYXJzZVJlc29sdmVPcGVyYXRpb25zKFNwZWN1bGF0ZWRUeXBlLCB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLCB1bnNpZ25lZCBvcGVyYXRpb25zLCB1bnNpZ25lZCBw
dXRUb0Jhc2VPcGVyYXRpb24sIE5vZGVJbmRleCogYmFzZSwgTm9kZUluZGV4KiB2YWx1ZSk7CiAK
QEAgLTE4ODIsNiArMTg4NCwxNiBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcmVwYXJlVG9QYXJz
ZUJsb2NrCiAgICAgbV9jZWxsQ29uc3RhbnROb2Rlcy5jbGVhcigpOwogfQogCitOb2RlSW5kZXgg
Qnl0ZUNvZGVQYXJzZXI6OmdldFNjb3BlKGJvb2wgc2tpcFRvcCwgdW5zaWduZWQgc2tpcENvdW50
KQoreworICAgIE5vZGVJbmRleCBsb2NhbEJhc2UgPSBhZGRUb0dyYXBoKEdldE15U2NvcGUpOwor
ICAgIGlmIChza2lwVG9wKQorICAgICAgICBsb2NhbEJhc2UgPSBhZGRUb0dyYXBoKFNraXBUb3BT
Y29wZSwgbG9jYWxCYXNlKTsKKyAgICBmb3IgKHVuc2lnbmVkIG4gPSBza2lwQ291bnQ7IG4tLTsp
CisgICAgICAgIGxvY2FsQmFzZSA9IGFkZFRvR3JhcGgoU2tpcFNjb3BlLCBsb2NhbEJhc2UpOwor
ICAgIHJldHVybiBsb2NhbEJhc2U7Cit9CisKIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlUmVz
b2x2ZU9wZXJhdGlvbnMoU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbiwgdW5zaWduZWQgaWRlbnRp
ZmllciwgdW5zaWduZWQgb3BlcmF0aW9ucywgdW5zaWduZWQgcHV0VG9CYXNlT3BlcmF0aW9uLCBO
b2RlSW5kZXgqIGJhc2UsIE5vZGVJbmRleCogdmFsdWUpCiB7CiAgICAgUmVzb2x2ZU9wZXJhdGlv
bnMqIHJlc29sdmVPcGVyYXRpb25zID0gbV9jb2RlQmxvY2stPnJlc29sdmVPcGVyYXRpb25zKG9w
ZXJhdGlvbnMpOwpAQCAtMTg5MSw2ICsxOTAzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VSZXNvbHZlT3BlcmF0aQogICAgIH0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwogICAgIGlu
dCBza2lwQ291bnQgPSAwOworICAgIGJvb2wgc2tpcFRvcCA9IGZhbHNlOwogICAgIGJvb2wgc2tp
cHBlZFNjb3BlcyA9IGZhbHNlOwogICAgIGJvb2wgc2V0QmFzZSA9IGZhbHNlOwogICAgIFJlc29s
dmVPcGVyYXRpb24qIHBjID0gcmVzb2x2ZU9wZXJhdGlvbnMtPmRhdGEoKTsKQEAgLTE5MTgsNyAr
MTkzMSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlUmVzb2x2ZU9wZXJhdGkKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgUmVzb2x2ZU9wZXJhdGlvbjo6U2V0QmFzZVRv
U2NvcGU6Ci0gICAgICAgICAgICBsb2NhbEJhc2UgPSBhZGRUb0dyYXBoKEdldFNjb3BlLCBPcElu
Zm8oc2tpcENvdW50KSk7CisgICAgICAgICAgICBsb2NhbEJhc2UgPSBnZXRTY29wZShza2lwVG9w
LCBza2lwQ291bnQpOwogICAgICAgICAgICAgKmJhc2UgPSBsb2NhbEJhc2U7CiAgICAgICAgICAg
ICBzZXRCYXNlID0gdHJ1ZTsKIApAQCAtMTkyOSwyMSArMTk0MiwxOSBAQCBib29sIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZVJlc29sdmVPcGVyYXRpCiAgICAgICAgICAgICArK3BjOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVzb2x2ZU9wZXJhdGlvbjo6UmV0dXJuU2NvcGVBc0Jh
c2U6Ci0gICAgICAgICAgICAqYmFzZSA9IGFkZFRvR3JhcGgoR2V0U2NvcGUsIE9wSW5mbyhza2lw
Q291bnQpKTsKKyAgICAgICAgICAgICpiYXNlID0gZ2V0U2NvcGUoc2tpcFRvcCwgc2tpcENvdW50
KTsKICAgICAgICAgICAgIEFTU0VSVCghdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAKICAgICAgICAgY2FzZSBSZXNvbHZlT3BlcmF0aW9uOjpTa2lwVG9wU2NvcGVOb2RlOgotICAg
ICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIHNraXBDb3VudCA9IDE7CisgICAg
ICAgICAgICBBU1NFUlQoIW1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lKTsKKyAg
ICAgICAgICAgIHNraXBUb3AgPSB0cnVlOwogICAgICAgICAgICAgc2tpcHBlZFNjb3BlcyA9IHRy
dWU7CiAgICAgICAgICAgICArK3BjOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBSZXNvbHZlT3BlcmF0aW9uOjpTa2lwU2NvcGVzOgotICAgICAgICAgICAgaWYgKG1faW5saW5l
U3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJh
bWUpOwogICAgICAgICAgICAgc2tpcENvdW50ICs9IHBjLT5tX3Njb3Blc1RvU2tpcDsKICAgICAg
ICAgICAgIHNraXBwZWRTY29wZXMgPSB0cnVlOwogICAgICAgICAgICAgKytwYzsKQEAgLTE5NjAs
NyArMTk3MSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlUmVzb2x2ZU9wZXJhdGkKICAg
ICAgICAgfQogICAgIH0KICAgICBpZiAoc2tpcHBlZFNjb3BlcykKLSAgICAgICAgbG9jYWxCYXNl
ID0gYWRkVG9HcmFwaChHZXRTY29wZSwgT3BJbmZvKHNraXBDb3VudCkpOworICAgICAgICBsb2Nh
bEJhc2UgPSBnZXRTY29wZShza2lwVG9wLCBza2lwQ291bnQpOwogCiAgICAgaWYgKGJhc2UgJiYg
IXNldEJhc2UpCiAgICAgICAgICpiYXNlID0gbG9jYWxCYXNlOwpAQCAtMzA1MCwxMCArMzA2MSw5
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdldCh2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgY2FzZSBQdXRUb0Jhc2VPcGVyYXRpb246OlZhcmlhYmxlUHV0OiB7Ci0gICAgICAg
ICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQoYmFzZSkpOwotICAgICAgICAgICAgICAg
IE5vZGVJbmRleCBnZXRTY29wZSA9IGFkZFRvR3JhcGgoR2V0U2NvcGUsIE9wSW5mbyhwdXRUb0Jh
c2UtPm1fc2NvcGVEZXB0aCkpOwotICAgICAgICAgICAgICAgIE5vZGVJbmRleCBnZXRTY29wZVJl
Z2lzdGVycyA9IGFkZFRvR3JhcGgoR2V0U2NvcGVSZWdpc3RlcnMsIGdldFNjb3BlKTsKLSAgICAg
ICAgICAgICAgICBhZGRUb0dyYXBoKFB1dFNjb3BlZFZhciwgT3BJbmZvKHB1dFRvQmFzZS0+bV9v
ZmZzZXQpLCBnZXRTY29wZSwgZ2V0U2NvcGVSZWdpc3RlcnMsIGdldCh2YWx1ZSkpOworICAgICAg
ICAgICAgICAgIE5vZGVJbmRleCBzY29wZSA9IGdldChiYXNlKTsKKyAgICAgICAgICAgICAgICBO
b2RlSW5kZXggc2NvcGVSZWdpc3RlcnMgPSBhZGRUb0dyYXBoKEdldFNjb3BlUmVnaXN0ZXJzLCBz
Y29wZSk7CisgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChQdXRTY29wZWRWYXIsIE9wSW5mbyhw
dXRUb0Jhc2UtPm1fb2Zmc2V0KSwgc2NvcGUsIHNjb3BlUmVnaXN0ZXJzLCBnZXQodmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2Ug
UHV0VG9CYXNlT3BlcmF0aW9uOjpHbG9iYWxQcm9wZXJ0eVB1dDogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDU0VQaGFzZS5jcHAJKHJldmlzaW9uIDEzNjIwMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1NFUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTMsNyArMjEzLDcgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9
CiAgICAgCi0gICAgTm9kZUluZGV4IHNjb3BlZFZhckxvYWRFbGltaW5hdGlvbih1bnNpZ25lZCBz
Y29wZUNoYWluRGVwdGgsIHVuc2lnbmVkIHZhck51bWJlcikKKyAgICBOb2RlSW5kZXggc2NvcGVk
VmFyTG9hZEVsaW1pbmF0aW9uKE5vZGVJbmRleCByZWdpc3RlcnMsIHVuc2lnbmVkIHZhck51bWJl
cikKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07
KSB7CiAgICAgICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7
CkBAIC0yMjIsMTUgKzIyMiwxMiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgR2V0
U2NvcGVkVmFyOiB7Ci0gICAgICAgICAgICAgICAgTm9kZSYgZ2V0U2NvcGVSZWdpc3RlcnMgPSBt
X2dyYXBoW25vZGUuY2hpbGQxKCldOwotICAgICAgICAgICAgICAgIE5vZGUmIGdldFNjb3BlID0g
bV9ncmFwaFtnZXRTY29wZVJlZ2lzdGVycy5jaGlsZDEoKV07Ci0gICAgICAgICAgICAgICAgaWYg
KGdldFNjb3BlLnNjb3BlQ2hhaW5EZXB0aCgpID09IHNjb3BlQ2hhaW5EZXB0aCAmJiBub2RlLnZh
ck51bWJlcigpID09IHZhck51bWJlcikKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5jaGlsZDEo
KSA9PSByZWdpc3RlcnMgJiYgbm9kZS52YXJOdW1iZXIoKSA9PSB2YXJOdW1iZXIpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0gCiAgICAgICAgICAgICBjYXNlIFB1dFNjb3BlZFZhcjogewotICAgICAgICAgICAg
ICAgIE5vZGUmIGdldFNjb3BlID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXTsKLSAgICAgICAgICAg
ICAgICBpZiAoZ2V0U2NvcGUuc2NvcGVDaGFpbkRlcHRoKCkgPT0gc2NvcGVDaGFpbkRlcHRoICYm
IG5vZGUudmFyTnVtYmVyKCkgPT0gdmFyTnVtYmVyKQorICAgICAgICAgICAgICAgIGlmIChub2Rl
LmNoaWxkMigpID09IHJlZ2lzdGVycyAmJiBub2RlLnZhck51bWJlcigpID09IHZhck51bWJlcikK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGQzKCkuaW5kZXgoKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTI5Niw3ICsyOTMsNyBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgIH0KICAgICAKLSAgICBOb2RlSW5kZXgg
c2NvcGVkVmFyU3RvcmVFbGltaW5hdGlvbih1bnNpZ25lZCBzY29wZUNoYWluRGVwdGgsIHVuc2ln
bmVkIHZhck51bWJlcikKKyAgICBOb2RlSW5kZXggc2NvcGVkVmFyU3RvcmVFbGltaW5hdGlvbihO
b2RlSW5kZXggc2NvcGUsIE5vZGVJbmRleCByZWdpc3RlcnMsIHVuc2lnbmVkIHZhck51bWJlcikK
ICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJsb2NrOyBpLS07KSB7
CiAgICAgICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2N1cnJlbnRCbG9jay0+YXQoaSk7CkBA
IC0zMDUsMTYgKzMwMiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgc3dpdGNoIChub2RlLm9wKCkpIHsKICAgICAgICAgICAgIGNhc2UgUHV0U2Nv
cGVkVmFyOiB7Ci0gICAgICAgICAgICAgICAgTm9kZSYgZ2V0U2NvcGUgPSBtX2dyYXBoW25vZGUu
Y2hpbGQxKCldOwotICAgICAgICAgICAgICAgIGlmIChnZXRTY29wZS5zY29wZUNoYWluRGVwdGgo
KSA9PSBzY29wZUNoYWluRGVwdGggJiYgbm9kZS52YXJOdW1iZXIoKSA9PSB2YXJOdW1iZXIpCisg
ICAgICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQxKCkgPT0gc2NvcGUgJiYgbm9kZS5jaGlsZDIo
KSA9PSByZWdpc3RlcnMgJiYgbm9kZS52YXJOdW1iZXIoKSA9PSB2YXJOdW1iZXIpCiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgR2V0U2NvcGVkVmFy
OiB7Ci0gICAgICAgICAgICAgICAgTm9kZSYgZ2V0U2NvcGVSZWdpc3RlcnMgPSBtX2dyYXBoW25v
ZGUuY2hpbGQxKCldOwotICAgICAgICAgICAgICAgIE5vZGUmIGdldFNjb3BlID0gbV9ncmFwaFtn
ZXRTY29wZVJlZ2lzdGVycy5jaGlsZDEoKV07Ci0gICAgICAgICAgICAgICAgaWYgKGdldFNjb3Bl
LnNjb3BlQ2hhaW5EZXB0aCgpID09IHNjb3BlQ2hhaW5EZXB0aCAmJiBub2RlLnZhck51bWJlcigp
ID09IHZhck51bWJlcikKKyAgICAgICAgICAgICAgICAvLyBMZXQncyBiZSBjb25zZXJ2YXRpdmUu
CisgICAgICAgICAgICAgICAgaWYgKG5vZGUudmFyTnVtYmVyKCkgPT0gdmFyTnVtYmVyKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQpAQCAtNzc5LDMwICs3NzQsMjIgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0
dXJuIE5vTm9kZTsKICAgICB9CiAgICAgCi0gICAgTm9kZUluZGV4IGdldFNjb3BlTG9hZEVsaW1p
bmF0aW9uKHVuc2lnbmVkIGRlcHRoKQorICAgIE5vZGVJbmRleCBnZXRNeVNjb3BlTG9hZEVsaW1p
bmF0aW9uKCkKICAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGVuZEluZGV4Rm9yUHVy
ZUNTRSgpOyBpLS07KSB7Ci0gICAgICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2N1cnJlbnRC
bG9jay0+YXQoaSk7Ci0gICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtpbmRleF07Ci0g
ICAgICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkKLSAgICAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgICAgIGlmIChub2RlLm9wKCkgPT0gR2V0U2NvcGUKLSAgICAgICAg
ICAgICAgICAmJiBub2RlLnNjb3BlQ2hhaW5EZXB0aCgpID09IGRlcHRoKQotICAgICAgICAgICAg
ICAgIHJldHVybiBpbmRleDsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gTm9Ob2RlOwotICAg
IH0KLQotICAgIE5vZGVJbmRleCBnZXRTY29wZVJlZ2lzdGVyc0xvYWRFbGltaW5hdGlvbih1bnNp
Z25lZCBkZXB0aCkKLSAgICB7Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IGVuZEluZGV4Rm9y
UHVyZUNTRSgpOyBpLS07KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1faW5kZXhJbkJs
b2NrOyBpLS07KSB7CiAgICAgICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2N1cnJlbnRCbG9j
ay0+YXQoaSk7CiAgICAgICAgICAgICBOb2RlJiBub2RlID0gbV9ncmFwaFtpbmRleF07CiAgICAg
ICAgICAgICBpZiAoIW5vZGUuc2hvdWxkR2VuZXJhdGUoKSkKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgICAgIGlmIChub2RlLm9wKCkgPT0gR2V0U2NvcGVSZWdpc3RlcnMKLSAg
ICAgICAgICAgICAgICAmJiBtX2dyYXBoW25vZGUuc2NvcGUoKV0uc2NvcGVDaGFpbkRlcHRoKCkg
PT0gZGVwdGgpCisgICAgICAgICAgICBzd2l0Y2ggKG5vZGUub3AoKSkgeworICAgICAgICAgICAg
Y2FzZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgICAgICAgICAgICAgIC8vIFRoaXMgbWF5IGNhdXNl
IHVzIHRvIHJldHVybiBhIGRpZmZlcmVudCBzY29wZS4KKyAgICAgICAgICAgICAgICByZXR1cm4g
Tm9Ob2RlOworICAgICAgICAgICAgY2FzZSBHZXRNeVNjb3BlOgogICAgICAgICAgICAgICAgIHJl
dHVybiBpbmRleDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIE5vTm9kZTsKICAgICB9
CkBAIC04OTAsNyArODc3LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgY2FzZSBH
ZXRTY29wZToKKyAgICAgICAgICAgIGNhc2UgR2V0TXlTY29wZToKKyAgICAgICAgICAgIGNhc2Ug
U2tpcFRvcFNjb3BlOgogICAgICAgICAgICAgY2FzZSBHZXRTY29wZVJlZ2lzdGVyczoKICAgICAg
ICAgICAgICAgICBpZiAobV9ncmFwaC51bmNoZWNrZWRBY3RpdmF0aW9uUmVnaXN0ZXJGb3Iobm9k
ZS5jb2RlT3JpZ2luKSA9PSBsb2NhbCkKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heUJl
QWNjZXNzZWQgPSB0cnVlOwpAQCAtMTA3Niw2ICsxMDY0LDkgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBJc0Z1bmN0aW9uOgogICAgICAgICBjYXNlIERvdWJsZUFzSW50MzI6CiAgICAgICAgIGNh
c2UgTG9naWNhbE5vdDoKKyAgICAgICAgY2FzZSBTa2lwVG9wU2NvcGU6CisgICAgICAgIGNhc2Ug
U2tpcFNjb3BlOgorICAgICAgICBjYXNlIEdldFNjb3BlUmVnaXN0ZXJzOgogICAgICAgICAgICAg
c2V0UmVwbGFjZW1lbnQocHVyZUNTRShub2RlKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIApAQCAtMTE4OSwxNCArMTE4MCwxMCBAQCBwcml2YXRlOgogICAgICAgICAgICAgc2V0
UmVwbGFjZW1lbnQoZ2V0QXJyYXlMZW5ndGhFbGltaW5hdGlvbihub2RlLmNoaWxkMSgpLmluZGV4
KCkpKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIGNhc2UgR2V0U2NvcGU6Ci0gICAg
ICAgICAgICBzZXRSZXBsYWNlbWVudChnZXRTY29wZUxvYWRFbGltaW5hdGlvbihub2RlLnNjb3Bl
Q2hhaW5EZXB0aCgpKSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIEdldFNj
b3BlUmVnaXN0ZXJzOgotICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoZ2V0U2NvcGVSZWdpc3Rl
cnNMb2FkRWxpbWluYXRpb24obV9ncmFwaFtub2RlLnNjb3BlKCldLnNjb3BlQ2hhaW5EZXB0aCgp
KSk7CisgICAgICAgIGNhc2UgR2V0TXlTY29wZToKKyAgICAgICAgICAgIHNldFJlcGxhY2VtZW50
KGdldE15U2NvcGVMb2FkRWxpbWluYXRpb24oKSk7CiAgICAgICAgICAgICBicmVhazsKLQorICAg
ICAgICAgICAgCiAgICAgICAgIC8vIEhhbmRsZSBub2RlcyB0aGF0IGFyZSBjb25kaXRpb25hbGx5
IHB1cmU6IHRoZXNlIGFyZSBwdXJlLCBhbmQgY2FuCiAgICAgICAgIC8vIGJlIENTRSdkLCBzbyBs
b25nIGFzIHRoZSBwcmVkaWN0aW9uIGlzIHRoZSBvbmUgd2Ugd2FudC4KICAgICAgICAgY2FzZSBW
YWx1ZUFkZDoKQEAgLTEyMjAsOSArMTIwNyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVh
azsKIAogICAgICAgICBjYXNlIEdldFNjb3BlZFZhcjogewotICAgICAgICAgICAgTm9kZSYgZ2V0
U2NvcGVSZWdpc3RlcnMgPSBtX2dyYXBoW25vZGUuY2hpbGQxKCldOwotICAgICAgICAgICAgTm9k
ZSYgZ2V0U2NvcGUgPSBtX2dyYXBoW2dldFNjb3BlUmVnaXN0ZXJzLmNoaWxkMSgpXTsKLSAgICAg
ICAgICAgIHNldFJlcGxhY2VtZW50KHNjb3BlZFZhckxvYWRFbGltaW5hdGlvbihnZXRTY29wZS5z
Y29wZUNoYWluRGVwdGgoKSwgbm9kZS52YXJOdW1iZXIoKSkpOworICAgICAgICAgICAgc2V0UmVw
bGFjZW1lbnQoc2NvcGVkVmFyTG9hZEVsaW1pbmF0aW9uKG5vZGUuY2hpbGQxKCkuaW5kZXgoKSwg
bm9kZS52YXJOdW1iZXIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAt
MTI0MSw4ICsxMjI2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBQdXRTY29wZWRWYXI6IHsK
ICAgICAgICAgICAgIGlmIChtX2dyYXBoLm1fZml4cG9pbnRTdGF0ZSA9PSBGaXhwb2ludE5vdENv
bnZlcmdlZCkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIE5vZGUmIGdldFNj
b3BlID0gbV9ncmFwaFtub2RlLmNoaWxkMSgpXTsKLSAgICAgICAgICAgIGVsaW1pbmF0ZShzY29w
ZWRWYXJTdG9yZUVsaW1pbmF0aW9uKGdldFNjb3BlLnNjb3BlQ2hhaW5EZXB0aCgpLCBub2RlLnZh
ck51bWJlcigpKSk7CisgICAgICAgICAgICBlbGltaW5hdGUoc2NvcGVkVmFyU3RvcmVFbGltaW5h
dGlvbihub2RlLmNoaWxkMSgpLmluZGV4KCksIG5vZGUuY2hpbGQyKCkuaW5kZXgoKSwgbm9kZS52
YXJOdW1iZXIoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcAkocmV2aXNpb24g
MTM2MjAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgRGlzYXNzZW1ibGVyOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQKIHsKICAgICBtX2dyYXBoLm1fZG9taW5hdG9ycy5jb21wdXRlSWZO
ZWNlc3NhcnkobV9ncmFwaCk7CiAgICAgCi0gICAgb3V0LnByaW50KCJHZW5lcmF0ZWQgSklUIGNv
ZGUgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fZ3JhcGgubV9jb2RlQmxvY2ssIEpJVENv
ZGU6OkRGR0pJVCksICIsIGluc3RydWN0aW9uIGNvdW50ID0gIiwgbV9ncmFwaC5tX2NvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiOlxuIik7CisgICAgb3V0LnByaW50KCJHZW5lcmF0ZWQg
REZHIEpJVCBjb2RlIGZvciAiLCBDb2RlQmxvY2tXaXRoSklUVHlwZShtX2dyYXBoLm1fY29kZUJs
b2NrLCBKSVRDb2RlOjpERkdKSVQpLCAiLCBpbnN0cnVjdGlvbiBjb3VudCA9ICIsIG1fZ3JhcGgu
bV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIjpcbiIpOwogICAgIG91dC5wcmludCgi
ICAgIENvZGUgYXQgWyIsIFJhd1BvaW50ZXIobGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSksICIs
ICIsIFJhd1BvaW50ZXIoc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNz
KCkpICsgbGlua0J1ZmZlci5kZWJ1Z1NpemUoKSksICIpOlxuIik7CiAgICAgCiAgICAgY29uc3Qg
Y2hhciogcHJlZml4ID0gIiAgICAiOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5jcHAJKHJldmlzaW9uIDEzNjIwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwxNCArODgsMTQgQEAgdm9pZCBHcmFw
aDo6ZHVtcENvZGVPcmlnaW4oUHJpbnRTdHJlYW0mIAogICAgIGZvciAodW5zaWduZWQgaSA9IHBy
ZXZpb3VzSW5saW5lU3RhY2suc2l6ZSgpOyBpLS0gPiBpbmRleE9mRGl2ZXJnZW5jZTspIHsKICAg
ICAgICAgb3V0LnByaW50KHByZWZpeCk7CiAgICAgICAgIHByaW50V2hpdGVTcGFjZShvdXQsIGkg
KiAyKTsKLSAgICAgICAgb3V0LnByaW50KCI8LS0gIyIsIHByZXZpb3VzSW5saW5lU3RhY2tbaV0u
aW5saW5lQ2FsbEZyYW1lLT5oYXNoKCksICJcbiIpOworICAgICAgICBvdXQucHJpbnQoIjwtLSAi
LCAqcHJldmlvdXNJbmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUsICJcbiIpOwogICAgIH0K
ICAgICAKICAgICAvLyBQcmludCB0aGUgcHVzaGVzLgogICAgIGZvciAodW5zaWduZWQgaSA9IGlu
ZGV4T2ZEaXZlcmdlbmNlOyBpIDwgY3VycmVudElubGluZVN0YWNrLnNpemUoKTsgKytpKSB7CiAg
ICAgICAgIG91dC5wcmludChwcmVmaXgpOwogICAgICAgICBwcmludFdoaXRlU3BhY2Uob3V0LCBp
ICogMik7Ci0gICAgICAgIG91dC5wcmludCgiLS0+ICMiLCBjdXJyZW50SW5saW5lU3RhY2tbaV0u
aW5saW5lQ2FsbEZyYW1lLT5oYXNoKCksICJcbiIpOworICAgICAgICBvdXQucHJpbnQoIi0tPiAi
LCAqY3VycmVudElubGluZVN0YWNrW2ldLmlubGluZUNhbGxGcmFtZSwgIlxuIik7CiAgICAgfQog
fQogCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBHcmFwaDo6ZHVtcEJsb2NrSGVhZGVyKFByaW50
U3RyZWFtJgogewogICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ibG9ja3NbYmxvY2tJbmRleF0u
Z2V0KCk7CiAKLSAgICBvdXQucHJpbnQocHJlZml4LCAiQmxvY2sgIyIsIGJsb2NrSW5kZXgsICIg
KGJjIyIsIGJsb2NrLT5ieXRlY29kZUJlZ2luLCAiKTogIiwgYmxvY2stPmlzUmVhY2hhYmxlID8g
IiIgOiAiKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdldCkiIDog
IiIsICJcbiIpOworICAgIG91dC5wcmludChwcmVmaXgsICJCbG9jayAjIiwgYmxvY2tJbmRleCwg
IiAoIiwgYXQoYmxvY2stPmF0KDApKS5jb2RlT3JpZ2luLCAiKTogIiwgYmxvY2stPmlzUmVhY2hh
YmxlID8gIiIgOiAiKHNraXBwZWQpIiwgYmxvY2stPmlzT1NSVGFyZ2V0ID8gIiAoT1NSIHRhcmdl
dCkiIDogIiIsICJcbiIpOwogICAgIG91dC5wcmludChwcmVmaXgsICIgIFByZWRlY2Vzc29yczoi
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGJsb2NrLT5tX3ByZWRlY2Vzc29ycy5zaXpl
KCk7ICsraSkKICAgICAgICAgb3V0LnByaW50KCIgIyIsIGJsb2NrLT5tX3ByZWRlY2Vzc29yc1tp
XSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAkocmV2aXNpb24gMTM2MjAx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyMywyMyArNTIzLDYgQEAgc3RydWN0IE5vZGUgewogICAgICAgICByZXR1cm4gYml0d2lz
ZV9jYXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KG1fb3BJbmZvKTsKICAgICB9CiAKLSAgICBi
b29sIGhhc1Njb3BlQ2hhaW5EZXB0aCgpCi0gICAgewotICAgICAgICByZXR1cm4gb3AoKSA9PSBH
ZXRTY29wZTsKLSAgICB9Ci0gICAgCi0gICAgdW5zaWduZWQgc2NvcGVDaGFpbkRlcHRoKCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChoYXNTY29wZUNoYWluRGVwdGgoKSk7Ci0gICAgICAgIHJldHVy
biBtX29wSW5mbzsKLSAgICB9Ci0KLSAgICBFZGdlIHNjb3BlKCkKLSAgICB7Ci0gICAgICAgIEFT
U0VSVChvcCgpID09IEdldFNjb3BlUmVnaXN0ZXJzKTsKLSAgICAgICAgcmV0dXJuIGNoaWxkMSgp
OwotICAgIH0KLQogICAgIGJvb2wgaGFzUmVzdWx0KCkKICAgICB7CiAgICAgICAgIHJldHVybiBt
X2ZsYWdzICYgTm9kZVJlc3VsdE1hc2s7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCShyZXZpc2lvbiAxMzYyMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR05vZGVUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsOSBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oR2V0QnlPZmZzZXQsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKFB1dEJ5T2Zmc2V0LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oR2V0QXJyYXlMZW5ndGgsIE5vZGVSZXN1bHRJbnQzMikgXAotICAgIG1hY3JvKEdl
dFNjb3BlLCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhHZXRNeVNjb3BlLCBOb2RlUmVzdWx0
SlMpIFwKKyAgICBtYWNybyhTa2lwVG9wU2NvcGUsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3Jv
KFNraXBTY29wZSwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oR2V0U2NvcGVSZWdpc3RlcnMs
IE5vZGVSZXN1bHRTdG9yYWdlKSBcCiAgICAgbWFjcm8oR2V0U2NvcGVkVmFyLCBOb2RlUmVzdWx0
SlMpIFwKICAgICBtYWNybyhQdXRTY29wZWRWYXIsIE5vZGVNdXN0R2VuZXJhdGUpIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxMzYyMDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTk0LDcgKzU5NCw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgR2V0U2NvcGU6IHsKKyAgICAgICAg
Y2FzZSBHZXRNeVNjb3BlOgorICAgICAgICBjYXNlIFNraXBUb3BTY29wZToKKyAgICAgICAgY2Fz
ZSBTa2lwU2NvcGU6IHsKICAgICAgICAgICAgIGNoYW5nZWQgfD0gc2V0UHJlZGljdGlvbihTcGVj
Q2VsbE90aGVyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJ
KHJldmlzaW9uIDEzNjIwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NjcsMzIgKzM5NjcsNDQgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogCiAgICAgY2FzZSBHZXRD
YWxsZWU6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAgICAgICAgbV9q
aXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVn
aXN0ZXI+KEpTU3RhY2s6OkNhbGxlZSkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBtX2ppdC5s
b2FkUHRyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rl
cj4oSlNTdGFjazo6Q2FsbGVlKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLQot
ICAgIGNhc2UgR2V0U2NvcGU6IHsKKyAgICAgICAgCisgICAgY2FzZSBHZXRNeVNjb3BlOiB7CiAg
ICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CiAKLSAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
YWRkcmVzc0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KEpTU3RhY2s6OlNjb3BlQ2hh
aW4pKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgYm9vbCBjaGVja1RvcExldmVsID0gbV9qaXQuY29k
ZUJsb2NrKCktPmNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIG1faml0LmNvZGVCbG9jaygp
LT5uZWVkc0Z1bGxTY29wZUNoYWluKCk7Ci0gICAgICAgIGludCBza2lwID0gbm9kZS5zY29wZUNo
YWluRGVwdGgoKTsKLSAgICAgICAgQVNTRVJUKHNraXAgfHwgIWNoZWNrVG9wTGV2ZWwpOwotICAg
ICAgICBpZiAoY2hlY2tUb3BMZXZlbCAmJiBza2lwLS0pIHsKLSAgICAgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGFjdGl2YXRpb25Ob3RDcmVhdGVkOwotICAgICAgICAgICAgaWYgKGNoZWNrVG9w
TGV2ZWwpCi0gICAgICAgICAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQgPSBtX2ppdC5icmFu
Y2hUZXN0UHRyKEpJVENvbXBpbGVyOjpaZXJvLCBKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihzdGF0
aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG1faml0LmNvZGVCbG9jaygpLT5hY3RpdmF0aW9uUmVn
aXN0ZXIoKSkpKTsKLSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OkFkZHJl
c3MocmVzdWx0R1BSLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlc3VsdEdQUik7Ci0gICAg
ICAgICAgICBhY3RpdmF0aW9uTm90Q3JlYXRlZC5saW5rKCZtX2ppdCk7Ci0gICAgICAgIH0KLSAg
ICAgICAgd2hpbGUgKHNraXAtLSkKLSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGls
ZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlc3VsdEdQ
Uik7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3Ioc3RhdGlj
X2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpTY29wZUNoYWluKSksIHJlc3VsdEdQUik7
CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KICAgICAgICAgCisgICAgY2FzZSBTa2lwVG9wU2NvcGU6IHsKKyAgICAg
ICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgc2NvcGUpOworICAgICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBtX2ppdC5tb3ZlKHNjb3BlLmdwcigpLCBy
ZXN1bHRHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRl
ZCA9CisgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0UHRyKAorICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpaZXJvLAorICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpwYXlsb2FkRm9y
KAorICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG1faml0
LmNvZGVCbG9jaygpLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkpKTsKKyAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTU2NvcGU6Om9mZnNldE9mTmV4
dCgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQubGluaygmbV9q
aXQpOwogICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwogICAg
ICAgICBicmVhazsKICAgICB9CisgICAgICAgIAorICAgIGNhc2UgU2tpcFNjb3BlOiB7CisgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNjb3BlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOworICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIHNjb3BlKTsKKyAgICAgICAgbV9qaXQubG9h
ZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhzY29wZS5ncHIoKSwgSlNTY29wZTo6b2Zmc2V0T2ZO
ZXh0KCkpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNh
c2UgR2V0U2NvcGVSZWdpc3RlcnM6IHsKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2Nv
cGUodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEzNjIwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5MjMsMjggKzM5
MjMsNDAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICBjZWxsUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVh
azsKICAgICB9Ci0KLSAgICBjYXNlIEdldFNjb3BlOiB7CisgICAgICAgIAorICAgIGNhc2UgR2V0
TXlTY29wZTogewogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBH
UFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogCiAgICAgICAgIG1faml0LmxvYWRQdHIo
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0
YWNrOjpTY29wZUNoYWluKSksIHJlc3VsdEdQUik7Ci0gICAgICAgIGJvb2wgY2hlY2tUb3BMZXZl
bCA9IG1faml0LmNvZGVCbG9jaygpLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSAmJiBtX2pp
dC5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpOwotICAgICAgICBpbnQgc2tpcCA9
IG5vZGUuc2NvcGVDaGFpbkRlcHRoKCk7Ci0gICAgICAgIEFTU0VSVChza2lwIHx8ICFjaGVja1Rv
cExldmVsKTsKLSAgICAgICAgaWYgKGNoZWNrVG9wTGV2ZWwgJiYgc2tpcC0tKSB7Ci0gICAgICAg
ICAgICBKSVRDb21waWxlcjo6SnVtcCBhY3RpdmF0aW9uTm90Q3JlYXRlZDsKLSAgICAgICAgICAg
IGlmIChjaGVja1RvcExldmVsKQotICAgICAgICAgICAgICAgIGFjdGl2YXRpb25Ob3RDcmVhdGVk
ID0gbV9qaXQuYnJhbmNoVGVzdDY0KEpJVENvbXBpbGVyOjpaZXJvLCBKSVRDb21waWxlcjo6YWRk
cmVzc0ZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KG1faml0LmNvZGVCbG9jaygpLT5h
Y3RpdmF0aW9uUmVnaXN0ZXIoKSkpKTsKLSAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlc3Vs
dEdQUik7Ci0gICAgICAgICAgICBhY3RpdmF0aW9uTm90Q3JlYXRlZC5saW5rKCZtX2ppdCk7Ci0g
ICAgICAgIH0KLSAgICAgICAgd2hpbGUgKHNraXAtLSkKLSAgICAgICAgICAgIG1faml0LmxvYWRQ
dHIoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQo
KSksIHJlc3VsdEdQUik7CisgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJ
bmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCisgICAgY2FzZSBTa2lwVG9w
U2NvcGU6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS5j
aGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgc2NvcGUpOworICAg
ICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICBtX2ppdC5tb3Zl
KHNjb3BlLmdwcigpLCByZXN1bHRHUFIpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBhY3Rp
dmF0aW9uTm90Q3JlYXRlZCA9CisgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0NjQoCisgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Olplcm8sCisgICAgICAgICAgICAgICAgSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IoCisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFZpcnR1YWxS
ZWdpc3Rlcj4obV9qaXQuY29kZUJsb2NrKCktPmFjdGl2YXRpb25SZWdpc3RlcigpKSkpOworICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNTY29w
ZTo6b2Zmc2V0T2ZOZXh0KCkpLCByZXN1bHRHUFIpOworICAgICAgICBhY3RpdmF0aW9uTm90Q3Jl
YXRlZC5saW5rKCZtX2ppdCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBp
bGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICAgICAgCisgICAgY2FzZSBTa2lw
U2NvcGU6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgc2NvcGUodGhpcywgbm9kZS5j
aGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgc2NvcGUpOworICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNzKHNjb3BlLmdwcigpLCBKU1Nj
b3BlOjpvZmZzZXRPZk5leHQoKSksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICAgICAgCiAgICAgY2FzZSBHZXRTY29wZVJlZ2lzdGVyczogewogICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBzY29wZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlz
YXNzZW1ibGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VERpc2Fzc2VtYmxlci5jcHAJKHJldmlzaW9uIDEzNjIwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNyArNDcs
NyBAQCBKSVREaXNhc3NlbWJsZXI6On5KSVREaXNhc3NlbWJsZXIoKQogCiB2b2lkIEpJVERpc2Fz
c2VtYmxlcjo6ZHVtcChQcmludFN0cmVhbSYgb3V0LCBMaW5rQnVmZmVyJiBsaW5rQnVmZmVyKQog
ewotICAgIG91dC5wcmludCgiQmFzZWxpbmUgSklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dpdGhK
SVRUeXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCksICIsIGluc3RydWN0aW9u
IGNvdW50ID0gIiwgbV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIlxuIik7CisgICAg
b3V0LnByaW50KCJHZW5lcmF0ZWQgQmFzZWxpbmUgSklUIGNvZGUgZm9yICIsIENvZGVCbG9ja1dp
dGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpCYXNlbGluZUpJVCksICIsIGluc3RydWN0
aW9uIGNvdW50ID0gIiwgbV9jb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSwgIlxuIik7CiAg
ICAgb3V0LnByaW50KCIgICBDb2RlIGF0IFsiLCBSYXdQb2ludGVyKGxpbmtCdWZmZXIuZGVidWdB
ZGRyZXNzKCkpLCAiLCAiLCBSYXdQb2ludGVyKHN0YXRpY19jYXN0PGNoYXIqPihsaW5rQnVmZmVy
LmRlYnVnQWRkcmVzcygpKSArIGxpbmtCdWZmZXIuZGVidWdTaXplKCkpLCAiKTpcbiIpOwogICAg
IGR1bXBEaXNhc3NlbWJseShvdXQsIGxpbmtCdWZmZXIsIG1fc3RhcnRPZkNvZGUsIG1fbGFiZWxG
b3JCeXRlY29kZUluZGV4SW5NYWluUGF0aFswXSk7CiAgICAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176935</attachid>
            <date>2012-11-30 03:28:07 -0800</date>
            <delta_ts>2012-11-30 12:57:30 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>fixscope.patch</filename>
            <type>text/plain</type>
            <size>29253</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MjA4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgzIEBA
CisyMDEyLTExLTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmF0aW9uYWxpemUgYW5kIGNsZWFuIHVwIERGRyBoYW5kbGluZyBvZiBzY29wZWQgYWNjZXNzZXMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzcxNQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFByZXZpb3Vz
bHksIHdlIGhhZCBhIEdldFNjb3BlIG5vZGUgdGhhdCBzcGVjaWZpZWQgdGhlIGRlcHRoIHRvIHdo
aWNoIHlvdSB3YW50ZWQKKyAgICAgICAgdG8gdHJhdmVsIHRvIGdldCBhIEpTU2NvcGUsIGFuZCB0
aGUgYmFja2VuZCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbm9kZSB3b3VsZAorICAgICAgICBwZXJm
b3JtIGFsbCBvZiB0aGUgbmVjZXNzYXJ5IGZvb3R3b3JrLCBpbmNsdWRpbmcgcG90ZW50aWFsbHkg
c2tpcHBpbmcgdGhlIHRvcAorICAgICAgICBzY29wZSBpZiBuZWNlc3NhcnksIGFuZCBkb2luZyBo
b3dldmVyIG1hbnkgbG9hZHMgd2VyZSBuZWVkZWQuIEJ1dCB0aGVyZSB3ZXJlCisgICAgICAgIHN0
cmFuZ2UgdGhpbmdzLiBGaXJzdCwgaWYgeW91IGhhZCBhY2Nlc3NlcyBhdCBkaWZmZXJlbnQgc2Nv
cGUgZGVwdGhzLCB0aGVuIHRoZQorICAgICAgICBsb2FkcyB0byBnZXQgdG8gdGhlIGNvbW1vbiBk
ZXB0aCBjb3VsZCBub3QgYmUgQ1NFJ2QgLSBDU0Ugd291bGQgbWF0Y2ggb25seQorICAgICAgICBH
ZXRTY29wZSdzIHRoYXQgaGFkIGlkZW50aWNhbCBkZXB0aC4gU2Vjb25kLCBHZXRTY29wZSB3b3Vs
ZCBiZSBlbWl0dGVkIGV2ZW4gaWYKKyAgICAgICAgd2UgYWxyZWFkeSBoYWQgdGhlIHNjb3BlLCBm
b3IgZXhhbXBsZSBpbiBwdXRfdG9fYmFzZS4gQW5kIGZpbmFsbHksIGV2ZW4gdGhvdWdoCisgICAg
ICAgIHRoZSBSZXNvbHZlT3BlcmF0aW9ucyBjb3VsZCB0ZWxsIHVzIHdoZXRoZXIgb3Igbm90IHdl
IGhhZCB0byBza2lwIHRoZSB0b3Agc2NvcGUsCisgICAgICAgIHRoZSBiYWNrZW5kIHdvdWxkIHJl
Y29tcHV0ZSB0aGlzIGluZm9ybWF0aW9uIGl0c2VsZiwgb2Z0ZW4gcGVzc2ltaXN0aWNhbGx5Lgor
ICAgICAgICAKKyAgICAgICAgVGhpcyBlbGltaW5hdGVzIEdldFNjb3BlIGFuZCByZXBsYWNlcyBp
dCB3aXRoIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIAorICAgICAgICBHZXRNeVNjb3BlOiBqdXN0
IGdldCB0aGUgSlNTY29wZSBmcm9tIHRoZSBjYWxsIGZyYW1lIGhlYWRlci4gVGhpcyB3aWxsIGZv
cmV2ZXIKKyAgICAgICAgbWVhbiBnZXR0aW5nIHRoZSBKU1Njb3BlIGFzc29jaWF0ZWQgd2l0aCB0
aGUgbWFjaGluZSBjYWxsIGZyYW1lOyBpdCB3aWxsIG5vdAorICAgICAgICBtZWFuIGdldHRpbmcg
dGhlIHNjb3BlIG9mIGFuIGlubGluZWQgZnVuY3Rpb24uIE9yIGF0IGxlYXN0IHRoYXQncyB0aGUg
aW50ZW50LgorICAgICAgICAKKyAgICAgICAgU2tpcFRvcFNjb3BlOiBjaGVjayBpZiB0aGVyZSBp
cyBhbiBhY3RpdmF0aW9uLCBhbmQgaWYgc28sIHNraXAgYSBzY29wZS4gVGhpcworICAgICAgICB0
YWtlcyBhIHNjb3BlIGFzIGEgY2hpbGQgYW5kIHJldHVybnMgYSBzY29wZS4KKyAgICAgICAgCisg
ICAgICAgIFNraXBTY29wZTogc2tpcCBvbmUgc2NvcGUgbGV2ZWwuCisgICAgICAgIAorICAgICAg
ICBUaGUgYnl0ZWNvZGUgcGFyc2VyIG5vdyBlbWl0cyB0aGUgcmlnaHQgY29tYmluYXRpb24gb2Yg
dGhlIGFib3ZlLCBhbmQKKyAgICAgICAgcG90ZW50aWFsbHkgZW1pdHMgbXVsdGlwbGUgU2tpcFNj
b3BlJ3MsIGJhc2VkIG9uIHRoZSBSZXNvbHZlT3BlcmF0aW9ucy4KKyAgICAgICAgCisgICAgICAg
IFRoaXMgY2hhbmdlIGFsc28gaW5jbHVkZXMgc29tZSBmaXh1cHMgdG8gZGVidWcgbG9nZ2luZy4g
V2Ugbm93IGFsd2F5cyBwcmludAorICAgICAgICB0aGUgRXhlY3V0YWJsZUJhc2UqIGluIGFkZGl0
aW9uIHRvIHRoZSBDb2RlQmxvY2sqIGluIHRoZSBDb2RlQmxvY2sncyBkdW1wLAorICAgICAgICBh
bmQgd2UgYXJlIG5vdyBtb3JlIHZlcmJvc2Ugd2hlbiBkdW1waW5nIENvZGVPcmlnaW5zIGFuZCBJ
bmxpbmVDYWxsRnJhbWVzLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBwZXJmb3JtYW5jZS1u
ZXV0cmFsLiBJdCdzIGp1c3QgbWVhbnQgdG8gYmUgYSBjbGVhbi11cC4KKworICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcEFzc3Vt
aW5nSklUVHlwZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVPcmlnaW46OmlubGluZVN0YWNrKToKKyAgICAgICAgKEpTQzo6Q29kZU9yaWdp
bjo6ZHVtcCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6
OmR1bXApOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVPcmlnaW4uaDoKKyAgICAgICAgKENvZGVP
cmlnaW4pOgorICAgICAgICAoSW5saW5lQ2FsbEZyYW1lKToKKyAgICAgICAgKiBkZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0
ZSk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEJ5dGVD
b2RlUGFyc2VyKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0U2NvcGUp
OgorICAgICAgICAoREZHKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFy
c2VSZXNvbHZlT3BlcmF0aW9ucyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDU0VQaGFzZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Q1NFUGhhc2U6OnNjb3BlZFZhckxvYWRFbGltaW5hdGlvbik6CisgICAgICAgIChK
U0M6OkRGRzo6Q1NFUGhhc2U6OnNjb3BlZFZhclN0b3JlRWxpbWluYXRpb24pOgorICAgICAgICAo
SlNDOjpERkc6OkNTRVBoYXNlOjpnZXRNeVNjb3BlTG9hZEVsaW1pbmF0aW9uKToKKyAgICAgICAg
KEpTQzo6REZHOjpDU0VQaGFzZTo6c2V0TG9jYWxTdG9yZUVsaW1pbmF0aW9uKToKKyAgICAgICAg
KEpTQzo6REZHOjpDU0VQaGFzZTo6cGVyZm9ybU5vZGVDU0UpOgorICAgICAgICAqIGRmZy9ERkdE
aXNhc3NlbWJsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRpc2Fzc2VtYmxlcjo6ZHVtcCk6
CisgICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6
ZHVtcENvZGVPcmlnaW4pOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpkdW1wQmxvY2tIZWFk
ZXIpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChOb2RlKToKKyAgICAgICAg
KiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR1By
ZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0
aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogaml0L0pJVERp
c2Fzc2VtYmxlci5jcHA6CisgICAgICAgIChKU0M6OkpJVERpc2Fzc2VtYmxlcjo6ZHVtcCk6CisK
IDIwMTItMTEtMjkgIFJhZmFlbCBXZWluc3RlaW4gIDxyYWZhZWx3QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBbSFRNTFRlbXBsYXRlRWxlbWVudF0gQWRkIGZlYXR1cmUgZmxhZwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEz
NjIwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIENvZGVCbG9ja0hhc2ggQ29kZUJsb2NrOjpo
YXNoKCkgY29uc3QKIAogdm9pZCBDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUoUHJpbnRT
dHJlYW0mIG91dCwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKSBjb25zdAogewotICAgIG91dC5w
cmludCgiIyIsIGhhc2goKSwgIjpbIiwgUmF3UG9pbnRlcih0aGlzKSwgIiwgIiwgaml0VHlwZSwg
Y29kZVR5cGUoKSk7CisgICAgb3V0LnByaW50KCIjIiwgaGFzaCgpLCAiOlsiLCBSYXdQb2ludGVy
KHRoaXMpLCAiLT4iLCBSYXdQb2ludGVyKG93bmVyRXhlY3V0YWJsZSgpKSwgIiwgIiwgaml0VHlw
ZSwgY29kZVR5cGUoKSk7CiAgICAgaWYgKGNvZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlKQogICAg
ICAgICBvdXQucHJpbnQoc3BlY2lhbGl6YXRpb25LaW5kKCkpOwogICAgIG91dC5wcmludCgiXSIp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNw
cAkocmV2aXNpb24gMTM2MjAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxMyArNTAsMzMgQEAgVmVjdG9yPENv
ZGVPcmlnaW4+IENvZGVPcmlnaW46OmlubGluZVN0YQogICAgIHVuc2lnbmVkIGluZGV4ID0gcmVz
dWx0LnNpemUoKSAtIDI7CiAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGN1cnJlbnQgPSBpbmxp
bmVDYWxsRnJhbWU7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5jYWxsZXIuaW5saW5lQ2Fs
bEZyYW1lKQogICAgICAgICByZXN1bHRbaW5kZXgtLV0gPSBjdXJyZW50LT5jYWxsZXI7CisgICAg
QVNTRVJUKCFyZXN1bHRbMF0uaW5saW5lQ2FsbEZyYW1lKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCit2b2lkIENvZGVPcmlnaW46OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sKKyAg
ICBWZWN0b3I8Q29kZU9yaWdpbj4gc3RhY2sgPSBpbmxpbmVTdGFjaygpOworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBzdGFjay5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoaSkKKyAg
ICAgICAgICAgIG91dC5wcmludCgiIC0tPiAiKTsKKyAgICAgICAgCisgICAgICAgIGlmIChJbmxp
bmVDYWxsRnJhbWUqIGZyYW1lID0gc3RhY2tbaV0uaW5saW5lQ2FsbEZyYW1lKQorICAgICAgICAg
ICAgb3V0LnByaW50KCIjIiwgZnJhbWUtPmhhc2goKSwgIjo8IiwgUmF3UG9pbnRlcihmcmFtZS0+
ZXhlY3V0YWJsZS5nZXQoKSksICI+ICIpOworICAgICAgICAKKyAgICAgICAgb3V0LnByaW50KCJi
YyMiLCBzdGFja1tpXS5ieXRlY29kZUluZGV4KTsKKyAgICB9Cit9CisKIENvZGVCbG9ja0hhc2gg
SW5saW5lQ2FsbEZyYW1lOjpoYXNoKCkgY29uc3QKIHsKICAgICByZXR1cm4gZXhlY3V0YWJsZS0+
aGFzaEZvcihzcGVjaWFsaXphdGlvbktpbmQoKSk7CiB9CiAKK3ZvaWQgSW5saW5lQ2FsbEZyYW1l
OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KCIjIiwgaGFz
aCgpLCAiOjwiLCBSYXdQb2ludGVyKGV4ZWN1dGFibGUuZ2V0KCkpLCAiLCBiYyMiLCBjYWxsZXIu
Ynl0ZWNvZGVJbmRleCwgIiwgIiwgc3BlY2lhbGl6YXRpb25LaW5kKCksICI+Iik7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlT3JpZ2luLmgJKHJldmlzaW9uIDEzNjIwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJWYWx1ZVJlY292ZXJ5LmgiCiAjaW5jbHVkZSAiV3JpdGVCYXJyaWVyLmgiCiAj
aW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgog
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
QEAgLTkwLDYgKzkxLDggQEAgc3RydWN0IENvZGVPcmlnaW4gewogICAgIAogICAgIC8vIEdldCB0
aGUgaW5saW5lIHN0YWNrLiBUaGlzIGlzIHNsb3csIGFuZCBpcyBpbnRlbmRlZCBmb3IgZGVidWdn
aW5nIG9ubHkuCiAgICAgVmVjdG9yPENvZGVPcmlnaW4+IGlubGluZVN0YWNrKCkgY29uc3Q7Cisg
ICAgCisgICAgdm9pZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CiB9OwogCiBzdHJ1Y3QgSW5s
aW5lQ2FsbEZyYW1lIHsKQEAgLTEwNCw2ICsxMDcsOCBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1l
IHsKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCgpIGNvbnN0
IHsgcmV0dXJuIHNwZWNpYWxpemF0aW9uRnJvbUlzQ2FsbChpc0NhbGwpOyB9CiAgICAgCiAgICAg
Q29kZUJsb2NrSGFzaCBoYXNoKCkgY29uc3Q7CisgICAgCisgICAgdm9pZCBkdW1wKFByaW50U3Ry
ZWFtJikgY29uc3Q7CiB9OwogCiBzdHJ1Y3QgQ29kZU9yaWdpbkF0Q2FsbFJldHVybk9mZnNldCB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5j
cHAJKHJldmlzaW9uIDEzNjIwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJz
dHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzODMsNyArMTM4Myw5IEBAIGJvb2wg
QWJzdHJhY3RTdGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICAgICAgZm9yTm9kZShub2Rl
SW5kZXgpLnNldChTcGVjRnVuY3Rpb24pOwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAot
ICAgIGNhc2UgR2V0U2NvcGU6CisgICAgY2FzZSBHZXRNeVNjb3BlOgorICAgIGNhc2UgU2tpcFRv
cFNjb3BlOgorICAgIGNhc2UgU2tpcFNjb3BlOgogICAgICAgICBub2RlLnNldENhbkV4aXQoZmFs
c2UpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkuc2V0KFNwZWNDZWxsT3RoZXIpOwogICAg
ICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMzYyMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc2LDYgKzE3
Niw4IEBAIHByaXZhdGU6CiAgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0
ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAgICAg
ICAgY29uc3QgR2V0QnlJZFN0YXR1cyYpOwogCisgICAgTm9kZUluZGV4IGdldFNjb3BlKGJvb2wg
c2tpcFRvcCwgdW5zaWduZWQgc2tpcENvdW50KTsKKyAgICAKICAgICAvLyBDb252ZXJ0IGEgc2V0
IG9mIFJlc29sdmVPcGVyYXRpb25zIGludG8gZ3JhcGggbm9kZXMKICAgICBib29sIHBhcnNlUmVz
b2x2ZU9wZXJhdGlvbnMoU3BlY3VsYXRlZFR5cGUsIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIs
IHVuc2lnbmVkIG9wZXJhdGlvbnMsIHVuc2lnbmVkIHB1dFRvQmFzZU9wZXJhdGlvbiwgTm9kZUlu
ZGV4KiBiYXNlLCBOb2RlSW5kZXgqIHZhbHVlKTsKIApAQCAtMTg4Miw2ICsxODg0LDE2IEBAIHZv
aWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNlQmxvY2sKICAgICBtX2NlbGxDb25zdGFu
dE5vZGVzLmNsZWFyKCk7CiB9CiAKK05vZGVJbmRleCBCeXRlQ29kZVBhcnNlcjo6Z2V0U2NvcGUo
Ym9vbCBza2lwVG9wLCB1bnNpZ25lZCBza2lwQ291bnQpCit7CisgICAgTm9kZUluZGV4IGxvY2Fs
QmFzZSA9IGFkZFRvR3JhcGgoR2V0TXlTY29wZSk7CisgICAgaWYgKHNraXBUb3ApCisgICAgICAg
IGxvY2FsQmFzZSA9IGFkZFRvR3JhcGgoU2tpcFRvcFNjb3BlLCBsb2NhbEJhc2UpOworICAgIGZv
ciAodW5zaWduZWQgbiA9IHNraXBDb3VudDsgbi0tOykKKyAgICAgICAgbG9jYWxCYXNlID0gYWRk
VG9HcmFwaChTa2lwU2NvcGUsIGxvY2FsQmFzZSk7CisgICAgcmV0dXJuIGxvY2FsQmFzZTsKK30K
KwogYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VSZXNvbHZlT3BlcmF0aW9ucyhTcGVjdWxhdGVk
VHlwZSBwcmVkaWN0aW9uLCB1bnNpZ25lZCBpZGVudGlmaWVyLCB1bnNpZ25lZCBvcGVyYXRpb25z
LCB1bnNpZ25lZCBwdXRUb0Jhc2VPcGVyYXRpb24sIE5vZGVJbmRleCogYmFzZSwgTm9kZUluZGV4
KiB2YWx1ZSkKIHsKICAgICBSZXNvbHZlT3BlcmF0aW9ucyogcmVzb2x2ZU9wZXJhdGlvbnMgPSBt
X2NvZGVCbG9jay0+cmVzb2x2ZU9wZXJhdGlvbnMob3BlcmF0aW9ucyk7CkBAIC0xODkxLDYgKzE5
MDMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZVJlc29sdmVPcGVyYXRpCiAgICAgfQog
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2lubGluZVN0YWNrVG9wLT5tX2Nv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CiAgICAgaW50IHNraXBDb3VudCA9IDA7CisgICAgYm9v
bCBza2lwVG9wID0gZmFsc2U7CiAgICAgYm9vbCBza2lwcGVkU2NvcGVzID0gZmFsc2U7CiAgICAg
Ym9vbCBzZXRCYXNlID0gZmFsc2U7CiAgICAgUmVzb2x2ZU9wZXJhdGlvbiogcGMgPSByZXNvbHZl
T3BlcmF0aW9ucy0+ZGF0YSgpOwpAQCAtMTkxOCw3ICsxOTMxLDcgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VSZXNvbHZlT3BlcmF0aQogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAg
Y2FzZSBSZXNvbHZlT3BlcmF0aW9uOjpTZXRCYXNlVG9TY29wZToKLSAgICAgICAgICAgIGxvY2Fs
QmFzZSA9IGFkZFRvR3JhcGgoR2V0U2NvcGUsIE9wSW5mbyhza2lwQ291bnQpKTsKKyAgICAgICAg
ICAgIGxvY2FsQmFzZSA9IGdldFNjb3BlKHNraXBUb3AsIHNraXBDb3VudCk7CiAgICAgICAgICAg
ICAqYmFzZSA9IGxvY2FsQmFzZTsKICAgICAgICAgICAgIHNldEJhc2UgPSB0cnVlOwogCkBAIC0x
OTI5LDIxICsxOTQyLDE5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlUmVzb2x2ZU9wZXJh
dGkKICAgICAgICAgICAgICsrcGM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBS
ZXNvbHZlT3BlcmF0aW9uOjpSZXR1cm5TY29wZUFzQmFzZToKLSAgICAgICAgICAgICpiYXNlID0g
YWRkVG9HcmFwaChHZXRTY29wZSwgT3BJbmZvKHNraXBDb3VudCkpOworICAgICAgICAgICAgKmJh
c2UgPSBnZXRTY29wZShza2lwVG9wLCBza2lwQ291bnQpOwogICAgICAgICAgICAgQVNTRVJUKCF2
YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgICAgICBjYXNlIFJlc29sdmVP
cGVyYXRpb246OlNraXBUb3BTY29wZU5vZGU6Ci0gICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFj
a1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgc2tpcENvdW50ID0gMTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9pbmxpbmVT
dGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpOworICAgICAgICAgICAgc2tpcFRvcCA9IHRydWU7
CiAgICAgICAgICAgICBza2lwcGVkU2NvcGVzID0gdHJ1ZTsKICAgICAgICAgICAgICsrcGM7CiAg
ICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFJlc29sdmVPcGVyYXRpb246OlNraXBT
Y29wZXM6Ci0gICAgICAgICAgICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJh
bWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgQVNTRVJUKCFt
X2lubGluZVN0YWNrVG9wLT5tX2lubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICBza2lwQ291
bnQgKz0gcGMtPm1fc2NvcGVzVG9Ta2lwOwogICAgICAgICAgICAgc2tpcHBlZFNjb3BlcyA9IHRy
dWU7CiAgICAgICAgICAgICArK3BjOwpAQCAtMTk2MCw3ICsxOTcxLDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VSZXNvbHZlT3BlcmF0aQogICAgICAgICB9CiAgICAgfQogICAgIGlmIChz
a2lwcGVkU2NvcGVzKQotICAgICAgICBsb2NhbEJhc2UgPSBhZGRUb0dyYXBoKEdldFNjb3BlLCBP
cEluZm8oc2tpcENvdW50KSk7CisgICAgICAgIGxvY2FsQmFzZSA9IGdldFNjb3BlKHNraXBUb3As
IHNraXBDb3VudCk7CiAKICAgICBpZiAoYmFzZSAmJiAhc2V0QmFzZSkKICAgICAgICAgKmJhc2Ug
PSBsb2NhbEJhc2U7CkBAIC0zMDUwLDEwICszMDYxLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0KHZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFB1dFRvQmFzZU9w
ZXJhdGlvbjo6VmFyaWFibGVQdXQ6IHsKLSAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFBoYW50
b20sIGdldChiYXNlKSk7Ci0gICAgICAgICAgICAgICAgTm9kZUluZGV4IGdldFNjb3BlID0gYWRk
VG9HcmFwaChHZXRTY29wZSwgT3BJbmZvKHB1dFRvQmFzZS0+bV9zY29wZURlcHRoKSk7Ci0gICAg
ICAgICAgICAgICAgTm9kZUluZGV4IGdldFNjb3BlUmVnaXN0ZXJzID0gYWRkVG9HcmFwaChHZXRT
Y29wZVJlZ2lzdGVycywgZ2V0U2NvcGUpOwotICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0
U2NvcGVkVmFyLCBPcEluZm8ocHV0VG9CYXNlLT5tX29mZnNldCksIGdldFNjb3BlLCBnZXRTY29w
ZVJlZ2lzdGVycywgZ2V0KHZhbHVlKSk7CisgICAgICAgICAgICAgICAgTm9kZUluZGV4IHNjb3Bl
ID0gZ2V0KGJhc2UpOworICAgICAgICAgICAgICAgIE5vZGVJbmRleCBzY29wZVJlZ2lzdGVycyA9
IGFkZFRvR3JhcGgoR2V0U2NvcGVSZWdpc3RlcnMsIHNjb3BlKTsKKyAgICAgICAgICAgICAgICBh
ZGRUb0dyYXBoKFB1dFNjb3BlZFZhciwgT3BJbmZvKHB1dFRvQmFzZS0+bV9vZmZzZXQpLCBzY29w
ZSwgc2NvcGVSZWdpc3RlcnMsIGdldCh2YWx1ZSkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBQdXRUb0Jhc2VPcGVyYXRpb246Okdsb2Jh
bFByb3BlcnR5UHV0OiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NTRVBo
YXNlLmNwcAkocmV2aXNpb24gMTM2MjAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDU0VQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBAQCBwcml2YXRl
OgogICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgIH0KICAgICAKLSAgICBOb2RlSW5kZXggc2Nv
cGVkVmFyTG9hZEVsaW1pbmF0aW9uKHVuc2lnbmVkIHNjb3BlQ2hhaW5EZXB0aCwgdW5zaWduZWQg
dmFyTnVtYmVyKQorICAgIE5vZGVJbmRleCBzY29wZWRWYXJMb2FkRWxpbWluYXRpb24oTm9kZUlu
ZGV4IHJlZ2lzdGVycywgdW5zaWduZWQgdmFyTnVtYmVyKQogICAgIHsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKICAgICAgICAgICAgIE5vZGVJbmRl
eCBpbmRleCA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKQEAgLTIyMiwxNSArMjIyLDEyIEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBzd2l0Y2ggKG5v
ZGUub3AoKSkgewogICAgICAgICAgICAgY2FzZSBHZXRTY29wZWRWYXI6IHsKLSAgICAgICAgICAg
ICAgICBOb2RlJiBnZXRTY29wZVJlZ2lzdGVycyA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV07Ci0g
ICAgICAgICAgICAgICAgTm9kZSYgZ2V0U2NvcGUgPSBtX2dyYXBoW2dldFNjb3BlUmVnaXN0ZXJz
LmNoaWxkMSgpXTsKLSAgICAgICAgICAgICAgICBpZiAoZ2V0U2NvcGUuc2NvcGVDaGFpbkRlcHRo
KCkgPT0gc2NvcGVDaGFpbkRlcHRoICYmIG5vZGUudmFyTnVtYmVyKCkgPT0gdmFyTnVtYmVyKQor
ICAgICAgICAgICAgICAgIGlmIChub2RlLmNoaWxkMSgpID09IHJlZ2lzdGVycyAmJiBub2RlLnZh
ck51bWJlcigpID09IHZhck51bWJlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfSAKICAgICAgICAgICAgIGNh
c2UgUHV0U2NvcGVkVmFyOiB7Ci0gICAgICAgICAgICAgICAgTm9kZSYgZ2V0U2NvcGUgPSBtX2dy
YXBoW25vZGUuY2hpbGQxKCldOwotICAgICAgICAgICAgICAgIGlmIChnZXRTY29wZS5zY29wZUNo
YWluRGVwdGgoKSA9PSBzY29wZUNoYWluRGVwdGggJiYgbm9kZS52YXJOdW1iZXIoKSA9PSB2YXJO
dW1iZXIpCisgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGQyKCkgPT0gcmVnaXN0ZXJzICYm
IG5vZGUudmFyTnVtYmVyKCkgPT0gdmFyTnVtYmVyKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gbm9kZS5jaGlsZDMoKS5pbmRleCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQpAQCAtMjk2LDcgKzI5Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIHJldHVybiBOb05v
ZGU7CiAgICAgfQogICAgIAotICAgIE5vZGVJbmRleCBzY29wZWRWYXJTdG9yZUVsaW1pbmF0aW9u
KHVuc2lnbmVkIHNjb3BlQ2hhaW5EZXB0aCwgdW5zaWduZWQgdmFyTnVtYmVyKQorICAgIE5vZGVJ
bmRleCBzY29wZWRWYXJTdG9yZUVsaW1pbmF0aW9uKE5vZGVJbmRleCBzY29wZSwgTm9kZUluZGV4
IHJlZ2lzdGVycywgdW5zaWduZWQgdmFyTnVtYmVyKQogICAgIHsKICAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKICAgICAgICAgICAgIE5vZGVJbmRleCBp
bmRleCA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKQEAgLTMwNSwxNiArMzAyLDE0IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUu
b3AoKSkgewogICAgICAgICAgICAgY2FzZSBQdXRTY29wZWRWYXI6IHsKLSAgICAgICAgICAgICAg
ICBOb2RlJiBnZXRTY29wZSA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV07Ci0gICAgICAgICAgICAg
ICAgaWYgKGdldFNjb3BlLnNjb3BlQ2hhaW5EZXB0aCgpID09IHNjb3BlQ2hhaW5EZXB0aCAmJiBu
b2RlLnZhck51bWJlcigpID09IHZhck51bWJlcikKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5j
aGlsZDEoKSA9PSBzY29wZSAmJiBub2RlLmNoaWxkMigpID09IHJlZ2lzdGVycyAmJiBub2RlLnZh
ck51bWJlcigpID09IHZhck51bWJlcikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgY2FzZSBHZXRTY29wZWRWYXI6IHsKLSAgICAgICAgICAgICAgICBOb2Rl
JiBnZXRTY29wZVJlZ2lzdGVycyA9IG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV07Ci0gICAgICAgICAg
ICAgICAgTm9kZSYgZ2V0U2NvcGUgPSBtX2dyYXBoW2dldFNjb3BlUmVnaXN0ZXJzLmNoaWxkMSgp
XTsKLSAgICAgICAgICAgICAgICBpZiAoZ2V0U2NvcGUuc2NvcGVDaGFpbkRlcHRoKCkgPT0gc2Nv
cGVDaGFpbkRlcHRoICYmIG5vZGUudmFyTnVtYmVyKCkgPT0gdmFyTnVtYmVyKQorICAgICAgICAg
ICAgICAgIC8vIExldCdzIGJlIGNvbnNlcnZhdGl2ZS4KKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS52YXJOdW1iZXIoKSA9PSB2YXJOdW1iZXIpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBO
b05vZGU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC03NzksMzAg
Kzc3NCwyMiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgIH0KICAgICAK
LSAgICBOb2RlSW5kZXggZ2V0U2NvcGVMb2FkRWxpbWluYXRpb24odW5zaWduZWQgZGVwdGgpCisg
ICAgTm9kZUluZGV4IGdldE15U2NvcGVMb2FkRWxpbWluYXRpb24oKQogICAgIHsKLSAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gZW5kSW5kZXhGb3JQdXJlQ1NFKCk7IGktLTspIHsKLSAgICAgICAg
ICAgIE5vZGVJbmRleCBpbmRleCA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKLSAgICAgICAgICAg
IE5vZGUmIG5vZGUgPSBtX2dyYXBoW2luZGV4XTsKLSAgICAgICAgICAgIGlmICghbm9kZS5zaG91
bGRHZW5lcmF0ZSgpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYg
KG5vZGUub3AoKSA9PSBHZXRTY29wZQotICAgICAgICAgICAgICAgICYmIG5vZGUuc2NvcGVDaGFp
bkRlcHRoKCkgPT0gZGVwdGgpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgICAg
ICB9Ci0gICAgICAgIHJldHVybiBOb05vZGU7Ci0gICAgfQotCi0gICAgTm9kZUluZGV4IGdldFNj
b3BlUmVnaXN0ZXJzTG9hZEVsaW1pbmF0aW9uKHVuc2lnbmVkIGRlcHRoKQotICAgIHsKLSAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gZW5kSW5kZXhGb3JQdXJlQ1NFKCk7IGktLTspIHsKKyAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9pbmRleEluQmxvY2s7IGktLTspIHsKICAgICAgICAgICAg
IE5vZGVJbmRleCBpbmRleCA9IG1fY3VycmVudEJsb2NrLT5hdChpKTsKICAgICAgICAgICAgIE5v
ZGUmIG5vZGUgPSBtX2dyYXBoW2luZGV4XTsKICAgICAgICAgICAgIGlmICghbm9kZS5zaG91bGRH
ZW5lcmF0ZSgpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgaWYgKG5v
ZGUub3AoKSA9PSBHZXRTY29wZVJlZ2lzdGVycwotICAgICAgICAgICAgICAgICYmIG1fZ3JhcGhb
bm9kZS5zY29wZSgpXS5zY29wZUNoYWluRGVwdGgoKSA9PSBkZXB0aCkKKyAgICAgICAgICAgIHN3
aXRjaCAobm9kZS5vcCgpKSB7CisgICAgICAgICAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246Cisg
ICAgICAgICAgICAgICAgLy8gVGhpcyBtYXkgY2F1c2UgdXMgdG8gcmV0dXJuIGEgZGlmZmVyZW50
IHNjb3BlLgorICAgICAgICAgICAgICAgIHJldHVybiBOb05vZGU7CisgICAgICAgICAgICBjYXNl
IEdldE15U2NvcGU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICByZXR1cm4gTm9Ob2RlOwogICAgIH0KQEAgLTg5MCw3ICs4NzcsOCBAQCBwcml2
YXRlOgogICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICBjYXNlIEdldFNjb3BlOgorICAgICAgICAgICAgY2Fz
ZSBHZXRNeVNjb3BlOgorICAgICAgICAgICAgY2FzZSBTa2lwVG9wU2NvcGU6CiAgICAgICAgICAg
ICBjYXNlIEdldFNjb3BlUmVnaXN0ZXJzOgogICAgICAgICAgICAgICAgIGlmIChtX2dyYXBoLnVu
Y2hlY2tlZEFjdGl2YXRpb25SZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pID09IGxvY2FsKQog
ICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF5QmVBY2Nlc3NlZCA9IHRydWU7CkBAIC0xMDc2
LDYgKzEwNjQsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIElzRnVuY3Rpb246CiAgICAgICAg
IGNhc2UgRG91YmxlQXNJbnQzMjoKICAgICAgICAgY2FzZSBMb2dpY2FsTm90OgorICAgICAgICBj
YXNlIFNraXBUb3BTY29wZToKKyAgICAgICAgY2FzZSBTa2lwU2NvcGU6CisgICAgICAgIGNhc2Ug
R2V0U2NvcGVSZWdpc3RlcnM6CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChwdXJlQ1NFKG5v
ZGUpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCkBAIC0xMTg5LDE0ICsxMTgw
LDEwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChnZXRBcnJheUxlbmd0
aEVsaW1pbmF0aW9uKG5vZGUuY2hpbGQxKCkuaW5kZXgoKSkpOwogICAgICAgICAgICAgYnJlYWs7
CiAKLSAgICAgICAgY2FzZSBHZXRTY29wZToKLSAgICAgICAgICAgIHNldFJlcGxhY2VtZW50KGdl
dFNjb3BlTG9hZEVsaW1pbmF0aW9uKG5vZGUuc2NvcGVDaGFpbkRlcHRoKCkpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgR2V0U2NvcGVSZWdpc3RlcnM6Ci0gICAgICAgICAg
ICBzZXRSZXBsYWNlbWVudChnZXRTY29wZVJlZ2lzdGVyc0xvYWRFbGltaW5hdGlvbihtX2dyYXBo
W25vZGUuc2NvcGUoKV0uc2NvcGVDaGFpbkRlcHRoKCkpKTsKKyAgICAgICAgY2FzZSBHZXRNeVNj
b3BlOgorICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoZ2V0TXlTY29wZUxvYWRFbGltaW5hdGlv
bigpKTsKICAgICAgICAgICAgIGJyZWFrOwotCisgICAgICAgICAgICAKICAgICAgICAgLy8gSGFu
ZGxlIG5vZGVzIHRoYXQgYXJlIGNvbmRpdGlvbmFsbHkgcHVyZTogdGhlc2UgYXJlIHB1cmUsIGFu
ZCBjYW4KICAgICAgICAgLy8gYmUgQ1NFJ2QsIHNvIGxvbmcgYXMgdGhlIHByZWRpY3Rpb24gaXMg
dGhlIG9uZSB3ZSB3YW50LgogICAgICAgICBjYXNlIFZhbHVlQWRkOgpAQCAtMTIyMCw5ICsxMjA3
LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgR2V0U2Nv
cGVkVmFyOiB7Ci0gICAgICAgICAgICBOb2RlJiBnZXRTY29wZVJlZ2lzdGVycyA9IG1fZ3JhcGhb
bm9kZS5jaGlsZDEoKV07Ci0gICAgICAgICAgICBOb2RlJiBnZXRTY29wZSA9IG1fZ3JhcGhbZ2V0
U2NvcGVSZWdpc3RlcnMuY2hpbGQxKCldOwotICAgICAgICAgICAgc2V0UmVwbGFjZW1lbnQoc2Nv
cGVkVmFyTG9hZEVsaW1pbmF0aW9uKGdldFNjb3BlLnNjb3BlQ2hhaW5EZXB0aCgpLCBub2RlLnZh
ck51bWJlcigpKSk7CisgICAgICAgICAgICBzZXRSZXBsYWNlbWVudChzY29wZWRWYXJMb2FkRWxp
bWluYXRpb24obm9kZS5jaGlsZDEoKS5pbmRleCgpLCBub2RlLnZhck51bWJlcigpKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0xMjQxLDggKzEyMjYsNyBAQCBwcml2YXRl
OgogICAgICAgICBjYXNlIFB1dFNjb3BlZFZhcjogewogICAgICAgICAgICAgaWYgKG1fZ3JhcGgu
bV9maXhwb2ludFN0YXRlID09IEZpeHBvaW50Tm90Q29udmVyZ2VkKQogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgTm9kZSYgZ2V0U2NvcGUgPSBtX2dyYXBoW25vZGUuY2hpbGQx
KCldOwotICAgICAgICAgICAgZWxpbWluYXRlKHNjb3BlZFZhclN0b3JlRWxpbWluYXRpb24oZ2V0
U2NvcGUuc2NvcGVDaGFpbkRlcHRoKCksIG5vZGUudmFyTnVtYmVyKCkpKTsKKyAgICAgICAgICAg
IGVsaW1pbmF0ZShzY29wZWRWYXJTdG9yZUVsaW1pbmF0aW9uKG5vZGUuY2hpbGQxKCkuaW5kZXgo
KSwgbm9kZS5jaGlsZDIoKS5pbmRleCgpLCBub2RlLnZhck51bWJlcigpKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Rpc2Fzc2VtYmxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEaXNhc3NlbWJsZXIuY3BwCShyZXZpc2lvbiAxMzYyMDEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcg
KzQ0LDcgQEAgdm9pZCBEaXNhc3NlbWJsZXI6OmR1bXAoUHJpbnRTdHJlYW0mIG91dAogewogICAg
IG1fZ3JhcGgubV9kb21pbmF0b3JzLmNvbXB1dGVJZk5lY2Vzc2FyeShtX2dyYXBoKTsKICAgICAK
LSAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJ
VFR5cGUobV9ncmFwaC5tX2NvZGVCbG9jaywgSklUQ29kZTo6REZHSklUKSwgIiwgaW5zdHJ1Y3Rp
b24gY291bnQgPSAiLCBtX2dyYXBoLm1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCksICI6
XG4iKTsKKyAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCBERkcgSklUIGNvZGUgZm9yICIsIENvZGVC
bG9ja1dpdGhKSVRUeXBlKG1fZ3JhcGgubV9jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJVCksICIs
IGluc3RydWN0aW9uIGNvdW50ID0gIiwgbV9ncmFwaC5tX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25D
b3VudCgpLCAiOlxuIik7CiAgICAgb3V0LnByaW50KCIgICAgQ29kZSBhdCBbIiwgUmF3UG9pbnRl
cihsaW5rQnVmZmVyLmRlYnVnQWRkcmVzcygpKSwgIiwgIiwgUmF3UG9pbnRlcihzdGF0aWNfY2Fz
dDxjaGFyKj4obGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSkgKyBsaW5rQnVmZmVyLmRlYnVnU2l6
ZSgpKSwgIik6XG4iKTsKICAgICAKICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNwcAkocmV2aXNpb24gMTM2MjAx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg4LDE0ICs4OCwxNCBAQCB2b2lkIEdyYXBoOjpkdW1wQ29kZU9yaWdpbihQcmludFN0
cmVhbSYgCiAgICAgZm9yICh1bnNpZ25lZCBpID0gcHJldmlvdXNJbmxpbmVTdGFjay5zaXplKCk7
IGktLSA+IGluZGV4T2ZEaXZlcmdlbmNlOykgewogICAgICAgICBvdXQucHJpbnQocHJlZml4KTsK
ICAgICAgICAgcHJpbnRXaGl0ZVNwYWNlKG91dCwgaSAqIDIpOwotICAgICAgICBvdXQucHJpbnQo
IjwtLSAjIiwgcHJldmlvdXNJbmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmhhc2goKSwg
IlxuIik7CisgICAgICAgIG91dC5wcmludCgiPC0tICIsICpwcmV2aW91c0lubGluZVN0YWNrW2ld
LmlubGluZUNhbGxGcmFtZSwgIlxuIik7CiAgICAgfQogICAgIAogICAgIC8vIFByaW50IHRoZSBw
dXNoZXMuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5kZXhPZkRpdmVyZ2VuY2U7IGkgPCBjdXJy
ZW50SW5saW5lU3RhY2suc2l6ZSgpOyArK2kpIHsKICAgICAgICAgb3V0LnByaW50KHByZWZpeCk7
CiAgICAgICAgIHByaW50V2hpdGVTcGFjZShvdXQsIGkgKiAyKTsKLSAgICAgICAgb3V0LnByaW50
KCItLT4gIyIsIGN1cnJlbnRJbmxpbmVTdGFja1tpXS5pbmxpbmVDYWxsRnJhbWUtPmhhc2goKSwg
IlxuIik7CisgICAgICAgIG91dC5wcmludCgiLS0+ICIsICpjdXJyZW50SW5saW5lU3RhY2tbaV0u
aW5saW5lQ2FsbEZyYW1lLCAiXG4iKTsKICAgICB9CiB9CiAKQEAgLTI5NCw3ICsyOTQsNyBAQCB2
b2lkIEdyYXBoOjpkdW1wQmxvY2tIZWFkZXIoUHJpbnRTdHJlYW0mCiB7CiAgICAgQmFzaWNCbG9j
ayogYmxvY2sgPSBtX2Jsb2Nrc1tibG9ja0luZGV4XS5nZXQoKTsKIAotICAgIG91dC5wcmludChw
cmVmaXgsICJCbG9jayAjIiwgYmxvY2tJbmRleCwgIiAoYmMjIiwgYmxvY2stPmJ5dGVjb2RlQmVn
aW4sICIpOiAiLCBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIoc2tpcHBlZCkiLCBibG9jay0+
aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CisgICAgb3V0LnByaW50
KHByZWZpeCwgIkJsb2NrICMiLCBibG9ja0luZGV4LCAiICgiLCBhdChibG9jay0+YXQoMCkpLmNv
ZGVPcmlnaW4sICIpOiAiLCBibG9jay0+aXNSZWFjaGFibGUgPyAiIiA6ICIoc2tpcHBlZCkiLCBi
bG9jay0+aXNPU1JUYXJnZXQgPyAiIChPU1IgdGFyZ2V0KSIgOiAiIiwgIlxuIik7CiAgICAgb3V0
LnByaW50KHByZWZpeCwgIiAgUHJlZGVjZXNzb3JzOiIpOwogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgYmxvY2stPm1fcHJlZGVjZXNzb3JzLnNpemUoKTsgKytpKQogICAgICAgICBvdXQucHJp
bnQoIiAjIiwgYmxvY2stPm1fcHJlZGVjZXNzb3JzW2ldKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCShyZXZpc2lvbiAxMzYyMDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNTIzLDIzICs1MjMsNiBAQCBzdHJ1
Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25v
d24+Kj4obV9vcEluZm8pOwogICAgIH0KIAotICAgIGJvb2wgaGFzU2NvcGVDaGFpbkRlcHRoKCkK
LSAgICB7Ci0gICAgICAgIHJldHVybiBvcCgpID09IEdldFNjb3BlOwotICAgIH0KLSAgICAKLSAg
ICB1bnNpZ25lZCBzY29wZUNoYWluRGVwdGgoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKGhhc1Nj
b3BlQ2hhaW5EZXB0aCgpKTsKLSAgICAgICAgcmV0dXJuIG1fb3BJbmZvOwotICAgIH0KLQotICAg
IEVkZ2Ugc2NvcGUoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG9wKCkgPT0gR2V0U2NvcGVSZWdp
c3RlcnMpOwotICAgICAgICByZXR1cm4gY2hpbGQxKCk7Ci0gICAgfQotCiAgICAgYm9vbCBoYXNS
ZXN1bHQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fZmxhZ3MgJiBOb2RlUmVzdWx0TWFzazsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgJKHJldmlzaW9uIDEz
NjIwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw5IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZH
IHsKICAgICBtYWNybyhHZXRCeU9mZnNldCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oUHV0
QnlPZmZzZXQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhHZXRBcnJheUxlbmd0aCwg
Tm9kZVJlc3VsdEludDMyKSBcCi0gICAgbWFjcm8oR2V0U2NvcGUsIE5vZGVSZXN1bHRKUykgXAor
ICAgIG1hY3JvKEdldE15U2NvcGUsIE5vZGVSZXN1bHRKUykgXAorICAgIG1hY3JvKFNraXBUb3BT
Y29wZSwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oU2tpcFNjb3BlLCBOb2RlUmVzdWx0SlMp
IFwKICAgICBtYWNybyhHZXRTY29wZVJlZ2lzdGVycywgTm9kZVJlc3VsdFN0b3JhZ2UpIFwKICAg
ICBtYWNybyhHZXRTY29wZWRWYXIsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKFB1dFNjb3Bl
ZFZhciwgTm9kZU11c3RHZW5lcmF0ZSkgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJl
dmlzaW9uIDEzNjIwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNyArNTk0LDkgQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBHZXRTY29wZTogeworICAgICAgICBjYXNlIEdldE15U2NvcGU6CisgICAgICAg
IGNhc2UgU2tpcFRvcFNjb3BlOgorICAgICAgICBjYXNlIFNraXBTY29wZTogewogICAgICAgICAg
ICAgY2hhbmdlZCB8PSBzZXRQcmVkaWN0aW9uKFNwZWNDZWxsT3RoZXIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTM2MjAxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzk2NywzMiArMzk2Nyw0NCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAKICAgICBjYXNlIEdldENhbGxlZTogewogICAgICAgICBHUFJUZW1w
b3JhcnkgcmVzdWx0KHRoaXMpOwotICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjph
ZGRyZXNzRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6Q2FsbGVlKSks
IHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OnBheWxv
YWRGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihKU1N0YWNrOjpDYWxsZWUpKSwgcmVz
dWx0LmdwcigpKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUlu
ZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgY2FzZSBHZXRTY29wZTogeworICAg
ICAgICAKKyAgICBjYXNlIEdldE15U2NvcGU6IHsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAg
ICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHN0YXRpY19jYXN0PFZp
cnR1YWxSZWdpc3Rlcj4oSlNTdGFjazo6U2NvcGVDaGFpbikpLCByZXN1bHRHUFIpOwotICAgICAg
ICBib29sIGNoZWNrVG9wTGV2ZWwgPSBtX2ppdC5jb2RlQmxvY2soKS0+Y29kZVR5cGUoKSA9PSBG
dW5jdGlvbkNvZGUgJiYgbV9qaXQuY29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKTsK
LSAgICAgICAgaW50IHNraXAgPSBub2RlLnNjb3BlQ2hhaW5EZXB0aCgpOwotICAgICAgICBBU1NF
UlQoc2tpcCB8fCAhY2hlY2tUb3BMZXZlbCk7Ci0gICAgICAgIGlmIChjaGVja1RvcExldmVsICYm
IHNraXAtLSkgewotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgYWN0aXZhdGlvbk5vdENy
ZWF0ZWQ7Ci0gICAgICAgICAgICBpZiAoY2hlY2tUb3BMZXZlbCkKLSAgICAgICAgICAgICAgICBh
Y3RpdmF0aW9uTm90Q3JlYXRlZCA9IG1faml0LmJyYW5jaFRlc3RQdHIoSklUQ29tcGlsZXI6Olpl
cm8sIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHN0YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4o
bV9qaXQuY29kZUJsb2NrKCktPmFjdGl2YXRpb25SZWdpc3RlcigpKSkpOwotICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTU2NvcGU6Om9m
ZnNldE9mTmV4dCgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgICAgIGFjdGl2YXRpb25Ob3RDcmVh
dGVkLmxpbmsoJm1faml0KTsKLSAgICAgICAgfQotICAgICAgICB3aGlsZSAoc2tpcC0tKQotICAg
ICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpT
U2NvcGU6Om9mZnNldE9mTmV4dCgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgbV9qaXQubG9hZFB0
cihKSVRDb21waWxlcjo6cGF5bG9hZEZvcihzdGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KEpT
U3RhY2s6OlNjb3BlQ2hhaW4pKSwgcmVzdWx0R1BSKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1
bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAK
KyAgICBjYXNlIFNraXBUb3BTY29wZTogeworICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBz
Y29wZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzLCBzY29wZSk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7Cisg
ICAgICAgIG1faml0Lm1vdmUoc2NvcGUuZ3ByKCksIHJlc3VsdEdQUik7CisgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGFjdGl2YXRpb25Ob3RDcmVhdGVkID0KKyAgICAgICAgICAgIG1faml0LmJy
YW5jaFRlc3RQdHIoCisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Olplcm8sCisgICAgICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoCisgICAgICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PFZpcnR1YWxSZWdpc3Rlcj4obV9qaXQuY29kZUJsb2NrKCktPmFjdGl2YXRpb25S
ZWdpc3RlcigpKSkpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KHJlc3VsdEdQUiwgSlNTY29wZTo6b2Zmc2V0T2ZOZXh0KCkpLCByZXN1bHRHUFIpOworICAgICAg
ICBhY3RpdmF0aW9uTm90Q3JlYXRlZC5saW5rKCZtX2ppdCk7CiAgICAgICAgIGNlbGxSZXN1bHQo
cmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICAg
ICAgCisgICAgY2FzZSBTa2lwU2NvcGU6IHsKKyAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQg
c2NvcGUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgc2NvcGUpOworICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjpBZGRyZXNz
KHNjb3BlLmdwcigpLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlc3VsdC5ncHIoKSk7Cisg
ICAgICAgIGNlbGxSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBHZXRTY29wZVJlZ2lzdGVyczogewog
ICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBzY29wZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTM2
MjAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzkyMywyOCArMzkyMyw0MCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0Lmdwcigp
LCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KLQotICAgIGNhc2UgR2V0
U2NvcGU6IHsKKyAgICAgICAgCisgICAgY2FzZSBHZXRNeVNjb3BlOiB7CiAgICAgICAgIEdQUlRl
bXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQu
Z3ByKCk7CiAKICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihz
dGF0aWNfY2FzdDxWaXJ0dWFsUmVnaXN0ZXI+KEpTU3RhY2s6OlNjb3BlQ2hhaW4pKSwgcmVzdWx0
R1BSKTsKLSAgICAgICAgYm9vbCBjaGVja1RvcExldmVsID0gbV9qaXQuY29kZUJsb2NrKCktPmNv
ZGVUeXBlKCkgPT0gRnVuY3Rpb25Db2RlICYmIG1faml0LmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxT
Y29wZUNoYWluKCk7Ci0gICAgICAgIGludCBza2lwID0gbm9kZS5zY29wZUNoYWluRGVwdGgoKTsK
LSAgICAgICAgQVNTRVJUKHNraXAgfHwgIWNoZWNrVG9wTGV2ZWwpOwotICAgICAgICBpZiAoY2hl
Y2tUb3BMZXZlbCAmJiBza2lwLS0pIHsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGFj
dGl2YXRpb25Ob3RDcmVhdGVkOwotICAgICAgICAgICAgaWYgKGNoZWNrVG9wTGV2ZWwpCi0gICAg
ICAgICAgICAgICAgYWN0aXZhdGlvbk5vdENyZWF0ZWQgPSBtX2ppdC5icmFuY2hUZXN0NjQoSklU
Q29tcGlsZXI6Olplcm8sIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHN0YXRpY19jYXN0PFZpcnR1
YWxSZWdpc3Rlcj4obV9qaXQuY29kZUJsb2NrKCktPmFjdGl2YXRpb25SZWdpc3RlcigpKSkpOwot
ICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhyZXN1bHRHUFIs
IEpTU2NvcGU6Om9mZnNldE9mTmV4dCgpKSwgcmVzdWx0R1BSKTsKLSAgICAgICAgICAgIGFjdGl2
YXRpb25Ob3RDcmVhdGVkLmxpbmsoJm1faml0KTsKLSAgICAgICAgfQotICAgICAgICB3aGlsZSAo
c2tpcC0tKQotICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6QWRkcmVzcyhy
ZXN1bHRHUFIsIEpTU2NvcGU6Om9mZnNldE9mTmV4dCgpKSwgcmVzdWx0R1BSKTsKKyAgICAgICAg
Y2VsbFJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQogICAgICAgICAKKyAgICBjYXNlIFNraXBUb3BTY29wZTogeworICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBzY29wZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBzY29wZSk7CisgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSBy
ZXN1bHQuZ3ByKCk7CisgICAgICAgIG1faml0Lm1vdmUoc2NvcGUuZ3ByKCksIHJlc3VsdEdQUik7
CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGFjdGl2YXRpb25Ob3RDcmVhdGVkID0KKyAgICAg
ICAgICAgIG1faml0LmJyYW5jaFRlc3Q2NCgKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6
WmVybywKKyAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6YWRkcmVzc0ZvcigKKyAgICAgICAg
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihtX2ppdC5jb2RlQmxvY2so
KS0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpKSk7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBKU1Njb3BlOjpvZmZzZXRPZk5leHQoKSksIHJlc3Vs
dEdQUik7CisgICAgICAgIGFjdGl2YXRpb25Ob3RDcmVhdGVkLmxpbmsoJm1faml0KTsKICAgICAg
ICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQorICAgICAgICAKKyAgICBjYXNlIFNraXBTY29wZTogeworICAgICAgICBTcGVjdWxh
dGVDZWxsT3BlcmFuZCBzY29wZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBzY29wZSk7CisgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29t
cGlsZXI6OkFkZHJlc3Moc2NvcGUuZ3ByKCksIEpTU2NvcGU6Om9mZnNldE9mTmV4dCgpKSwgcmVz
dWx0LmdwcigpKTsKKyAgICAgICAgY2VsbFJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUlu
ZGV4KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgICAgICAKICAgICBjYXNlIEdldFNjb3Bl
UmVnaXN0ZXJzOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIHNjb3BlKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURGlzYXNzZW1ibGVyLmNwcAkocmV2aXNp
b24gMTM2MjAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREaXNhc3NlbWJsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBAIEpJVERpc2Fzc2VtYmxlcjo6fkpJ
VERpc2Fzc2VtYmxlcigpCiAKIHZvaWQgSklURGlzYXNzZW1ibGVyOjpkdW1wKFByaW50U3RyZWFt
JiBvdXQsIExpbmtCdWZmZXImIGxpbmtCdWZmZXIpCiB7Ci0gICAgb3V0LnByaW50KCJCYXNlbGlu
ZSBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJVENv
ZGU6OkJhc2VsaW5lSklUKSwgIiwgaW5zdHJ1Y3Rpb24gY291bnQgPSAiLCBtX2NvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25Db3VudCgpLCAiXG4iKTsKKyAgICBvdXQucHJpbnQoIkdlbmVyYXRlZCBCYXNl
bGluZSBKSVQgY29kZSBmb3IgIiwgQ29kZUJsb2NrV2l0aEpJVFR5cGUobV9jb2RlQmxvY2ssIEpJ
VENvZGU6OkJhc2VsaW5lSklUKSwgIiwgaW5zdHJ1Y3Rpb24gY291bnQgPSAiLCBtX2NvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25Db3VudCgpLCAiXG4iKTsKICAgICBvdXQucHJpbnQoIiAgIENvZGUgYXQg
WyIsIFJhd1BvaW50ZXIobGlua0J1ZmZlci5kZWJ1Z0FkZHJlc3MoKSksICIsICIsIFJhd1BvaW50
ZXIoc3RhdGljX2Nhc3Q8Y2hhcio+KGxpbmtCdWZmZXIuZGVidWdBZGRyZXNzKCkpICsgbGlua0J1
ZmZlci5kZWJ1Z1NpemUoKSksICIpOlxuIik7CiAgICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgbGlu
a0J1ZmZlciwgbV9zdGFydE9mQ29kZSwgbV9sYWJlbEZvckJ5dGVjb2RlSW5kZXhJbk1haW5QYXRo
WzBdKTsKICAgICAK
</data>
<flag name="review"
          id="192878"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>