<?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>104647</bug_id>
          
          <creation_ts>2012-12-11 01:08:52 -0800</creation_ts>
          <short_desc>Profiler should show bytecode dumps as they would have been visible to the JITs, including the profiling data that the JITs would see</short_desc>
          <delta_ts>2012-12-11 16:22:55 -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>788149</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-11 01:08:52 -0800</bug_when>
    <thetext>The profiler currently records the bytecode at the time that it is first generated.  But bytecode changes over time to incorporate profiling and inline caches.  Currently the bytecode dumps already tell us:

- the state of inline caches of heap accesses
- the state of inline caches of calls

And the bytecode dumps could easily also tell us:

- slow path profiling data
- value profiles

One way to make this all useful is to enable the profiler to see the bytecode dumps at the time that the JITs were invoked.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788151</commentid>
    <comment_count>1</comment_count>
      <attachid>178744</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-11 01:11:58 -0800</bug_when>
    <thetext>Created attachment 178744
WRONG PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788152</commentid>
    <comment_count>2</comment_count>
      <attachid>178745</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-11 01:12:50 -0800</bug_when>
    <thetext>Created attachment 178745
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788798</commentid>
    <comment_count>3</comment_count>
      <attachid>178876</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-11 14:23:43 -0800</bug_when>
    <thetext>Created attachment 178876
sample profiling session

This shows some of the changes that this patch makes.

- You now see the instruction count in the full summary.
- The full summary is now the default thing displayed when you run the tool (if you want the summary that just includes function names, source counts, and source, then use &quot;s&quot; or &quot;summary&quot;)
- New command, &quot;profiling&quot; or &quot;p&quot;, which shows all of the profiling views that the JITs saw for each compilation that involved that code block.  In this example I&apos;m looking at a code block that gets inlined *a lot*.  It&apos;s fun to see how the profiling &quot;evolves&quot; over time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788811</commentid>
    <comment_count>4</comment_count>
      <attachid>178879</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-11 14:34:08 -0800</bug_when>
    <thetext>Created attachment 178879
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>788943</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-12-11 16:22:55 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/137379</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178744</attachid>
            <date>2012-12-11 01:11:58 -0800</date>
            <delta_ts>2012-12-11 01:12:50 -0800</delta_ts>
            <desc>WRONG PATCH</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>1637</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDEzNjgwNCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE2IEBACisyMDEyLTEyLTA1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgREZHIHByb2ZpbGVyIHNob3VsZCBiZSBoZWxwZnVsIGFib3V0IGdlbSBpbnN0YWxs
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEw
NDIxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgJ2pzb24nIGFuZCAnaGlnaGxpbmUnIGFyZSBub3QgaW5zdGFsbGVkIGJ5IGRlZmF1bHQg
b24gdGhlIHJ1YnkgZGlzdHJpYnV0aW9ucyB3aXRoCisgICAgICAgIHdoaWNoIEkgYW0gZmFtaWxp
YXIsIGFuZCB0aGUgZGVmYXVsdCBlcnJvciBtZXNzYWdlcyBkb24ndCBtYWtlIG1lIGhhcHB5LiBU
aGlzIG1ha2VzCisgICAgICAgIGRpc3BsYXktcHJvZmlsZXItb3V0cHV0IHByaW50IGEgaGVscGZ1
bCBtZXNzYWdlIGlmIHRob3NlIGdlbXMgYXJlIG5vdCBmb3VuZC4KKworICAgICAgICAqIFNjcmlw
dHMvZGlzcGxheS1wcm9maWxlci1vdXRwdXQ6CisKIDIwMTItMTItMDUgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBERkcgcHJvZmlsZXIgc2hvdWxkIGJlIGFibGUg
dG8gZGlzcGxheSB3aGVyZSBhIGNvZGUgYmxvY2sgd2FzIGlubGluZWQgaW50bywgYW5kIHdoYXQg
aXQgaW5saW5lZApJbmRleDogVG9vbHMvU2NyaXB0cy9kaXNwbGF5LXByb2ZpbGVyLW91dHB1dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL2Rpc3BsYXktcHJvZmlsZXItb3V0cHV0CShyZXZp
c2lvbiAxMzY4MDQpCisrKyBUb29scy9TY3JpcHRzL2Rpc3BsYXktcHJvZmlsZXItb3V0cHV0CSh3
b3JraW5nIGNvcHkpCkBAIC0yNSw5ICsyNSwyMCBAQAogCiByZXF1aXJlICdydWJ5Z2VtcycKIAot
cmVxdWlyZSAnanNvbicKIHJlcXVpcmUgJ3JlYWRsaW5lJwotcmVxdWlyZSAnaGlnaGxpbmUnCisK
K2JlZ2luCisgICAgcmVxdWlyZSAnanNvbicKKyAgICByZXF1aXJlICdoaWdobGluZScKK3Jlc2N1
ZSBMb2FkRXJyb3IKKyAgICAkc3RkZXJyLnB1dHMgIkVycm9yOiBzb21lIHJlcXVpcmVkIGdlbXMg
YXJlIG5vdCBpbnN0YWxsZWQhIgorICAgICRzdGRlcnIucHV0cworICAgICRzdGRlcnIucHV0cyAi
VHJ5IHJ1bm5pbmc6IgorICAgICRzdGRlcnIucHV0cworICAgICRzdGRlcnIucHV0cyAic3VkbyBn
ZW0gaW5zdGFsbCBqc29uIgorICAgICRzdGRlcnIucHV0cyAic3VkbyBnZW0gaW5zdGFsbCBoaWdo
bGluZSIKKyAgICBleGl0IDEKK2VuZAogCiBjbGFzcyBCeXRlY29kZQogICAgIGF0dHJfYWNjZXNz
b3IgOmJ5dGVjb2RlcywgOmJ5dGVjb2RlSW5kZXgsIDpvcGNvZGUsIDpkZXNjcmlwdGlvbiwgOnRv
cENvdW50cywgOmJvdHRvbUNvdW50cywgOm1hY2hpbmVJbmxpbmVlcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178745</attachid>
            <date>2012-12-11 01:12:50 -0800</date>
            <delta_ts>2012-12-11 14:34:08 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>36510</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMzcyMjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtNzMsNiArNzMsMTAgQEAKIAkJMEYwQ0Q0QzIxNUYxQTYw
NzAwMzJGMUMwIC8qIFB1dERpcmVjdEluZGV4TW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQ0Q0QzAxNUYxQTYwNDAwMzJGMUMwIC8qIFB1dERp
cmVjdEluZGV4TW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMENENEM0MTVGNkI2QkIwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVlTWFw
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMENE
NEMzMTVGNkI2QjUwMDMyRjFDMCAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCAqLzsgfTsKIAkJ
MEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBC
ODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjEzOTEyOTE2NzcxQzMzMDA5Q0NCMDcgLyogUHJvZmls
ZXJCeXRlY29kZVNlcXVlbmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMTM5MTI0MTY3NzFDMzAwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2Rl
U2VxdWVuY2UuY3BwICovOyB9OworCQkwRjEzOTEyQTE2NzcxQzM2MDA5Q0NCMDcgLyogUHJvZmls
ZXJCeXRlY29kZVNlcXVlbmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjEzOTEyNTE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJCeXRlY29kZVNl
cXVlbmNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEYxMzkxMkIxNjc3MUMzQTAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxMzkx
MjYxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwICovOyB9
OworCQkwRjEzOTEyQzE2NzcxQzNEMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rl
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxMzkx
MjcxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjEzRTA0RTE2MTY0
QTFGMDBEQzhERTcgLyogSW5kZXhpbmdUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTNFMDRDMTYxNjRBMUIwMERDOERFNyAvKiBJbmRleGlu
Z1R5cGUuY3BwICovOyB9OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xv
d1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNjAxNUQxNTYxOThDOTAw
QzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNjAxNUExNTYxOThCRjAwQzI1
ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwICovOyB9OwpAQCAtOTAy
LDYgKzkwNiwxMCBAQAogCQkwRjBDRDRDMDE1RjFBNjA0MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5k
ZXhNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFB1dERpcmVjdEluZGV4
TW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBDRDRDMzE1RjZCNkI1MDAz
MkYxQzAgLyogU3BhcnNlQXJyYXlWYWx1ZU1hcC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMTM5MTI0MTY3NzFDMzAwMDlDQ0IwNyAv
KiBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcDsgcGF0aCA9IHByb2ZpbGVy
L1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMTM5MTI1MTY3NzFDMzAwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJCeXRlY29kZVNlcXVl
bmNlLmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxMzkxMjYxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2Zp
bGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHA7IHBhdGggPSBwcm9maWxlci9Qcm9m
aWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYxMzkxMjcxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rl
cy5oOyBwYXRoID0gcHJvZmlsZXIvUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjEzRTA0QzE2MTY0QTFCMDBEQzhERTcgLyogSW5kZXhp
bmdUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluZGV4aW5n
VHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3M0Ew
MDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MTYwMTVBMTU2MTk4QkYwMEMyNTg3QyAvKiBERkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0FyZ3VtZW50c1Np
bXBsaWZpY2F0aW9uUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR0FyZ3VtZW50c1NpbXBsaWZpY2F0
aW9uUGhhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjU3OCw2ICsyNTg2
LDggQEAKIAkJCQkwRkY3Mjk5MzE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZS5o
ICovLAogCQkJCTBGRjcyOTk0MTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2Rlcy5j
cHAgKi8sCiAJCQkJMEZGNzI5OTUxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGVz
LmggKi8sCisJCQkJMEYxMzkxMjQxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyQnl0ZWNvZGVT
ZXF1ZW5jZS5jcHAgKi8sCisJCQkJMEYxMzkxMjUxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVy
Qnl0ZWNvZGVTZXF1ZW5jZS5oICovLAogCQkJCTBGRjcyOTk2MTY2QUQzNDcwMDBGNUJBMyAvKiBQ
cm9maWxlckNvbXBpbGF0aW9uLmNwcCAqLywKIAkJCQkwRkY3Mjk5NzE2NkFEMzQ3MDAwRjVCQTMg
LyogUHJvZmlsZXJDb21waWxhdGlvbi5oICovLAogCQkJCTBGRjcyOTk4MTY2QUQzNDcwMDBGNUJB
MyAvKiBQcm9maWxlckNvbXBpbGF0aW9uS2luZC5jcHAgKi8sCkBAIC0yNTk1LDYgKzI2MDUsOCBA
QAogCQkJCTBGQjEwNTg4MTY3NTQ4MkUwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXQuaCAqLywK
IAkJCQkwRkIxMDU4OTE2NzU0ODJFMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHAg
Ki8sCiAJCQkJMEZCMTA1OEExNjc1NDgyRTAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdFNpdGUu
aCAqLywKKwkJCQkwRjEzOTEyNjE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5
dGVjb2Rlcy5jcHAgKi8sCisJCQkJMEYxMzkxMjcxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVy
UHJvZmlsZWRCeXRlY29kZXMuaCAqLywKIAkJCSk7CiAJCQluYW1lID0gcHJvZmlsZXI7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMzE2NSw2ICszMTc3LDggQEAKIAkJCQkwRkIxMDU4
QzE2NzU0ODMzMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRkIxMDU4RTE2NzU0ODNBMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0U2l0ZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEZGNjBBQzIxNjc0MEY4MzAwMDI5Nzc5IC8qIFJlZHVjZVdoaXRlc3Bh
Y2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMTM5MTJBMTY3NzFDMzYwMDlDQ0IwNyAvKiBQcm9m
aWxlckJ5dGVjb2RlU2VxdWVuY2UuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMTM5MTJDMTY3NzFD
M0QwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTM3NjUsNiArMzc3OSw4IEBACiAJCQkJMEZCMTA1OEIxNjc1NDgzMTAwRjhBQjZFIC8qIFBy
b2ZpbGVyT1NSRXhpdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkIxMDU4RDE2NzU0ODM3MDBG
OEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkY2
MEFDMzE2NzQwRjg4MDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFjZS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRjEzOTEyOTE2NzcxQzMzMDA5Q0NCMDcgLyogUHJvZmlsZXJCeXRlY29kZVNlcXVl
bmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMTM5MTJCMTY3NzFDM0EwMDlDQ0IwNyAvKiBQ
cm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9u
IDEzNzIyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjY2LDYgKzM2NjYsMTcgQEAgdm9pZCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VDb2RlQmxvY2soKQogewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9jb2RlQmxvY2s7CiAgICAgCisgICAgaWYgKG1fZ3JhcGgubV9jb21w
aWxhdGlvbikgeworICAgICAgICBQcm9maWxlcjo6T3JpZ2luU3RhY2sgb3JpZ2luOworICAgICAg
ICBpZiAobV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAgICAg
IG9yaWdpbiA9IFByb2ZpbGVyOjpPcmlnaW5TdGFjaygKKyAgICAgICAgICAgICAgICAqbV9nbG9i
YWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIsIG1fY29kZUJsb2NrLAorICAgICAgICAgICAg
ICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpOworICAgICAg
ICB9CisgICAgICAgIG1fZ3JhcGgubV9jb21waWxhdGlvbi0+YWRkUHJvZmlsZWRCeXRlY29kZXMo
CisgICAgICAgICAgICAqbV9nbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIsIG9yaWdp
biwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrKTsKKyAgICB9CisgICAgCiAjaWYg
REZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgIGRhdGFMb2coCiAgICAgICAgICJQYXJzaW5n
ICIsICpjb2RlQmxvY2ssCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lv
biAxMzcyMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0Miw4ICs2NDIsMTAgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENv
ZGVQdHIqIGZ1bgogICAgIAogICAgIGlmIChPcHRpb25zOjpzaG93RGlzYXNzZW1ibHkoKSB8fCBt
X2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKICAgICAgICAgbV9kaXNhc3NlbWJs
ZXIgPSBhZG9wdFB0cihuZXcgSklURGlzYXNzZW1ibGVyKG1fY29kZUJsb2NrKSk7Ci0gICAgaWYg
KG1fZ2xvYmFsRGF0YS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyKQorICAgIGlmIChtX2dsb2JhbERh
dGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlcikgewogICAgICAgICBtX2NvbXBpbGF0aW9uID0gbV9n
bG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXItPm5ld0NvbXBpbGF0aW9uKG1fY29kZUJs
b2NrLCBQcm9maWxlcjo6QmFzZWxpbmUpOworICAgICAgICBtX2NvbXBpbGF0aW9uLT5hZGRQcm9m
aWxlZEJ5dGVjb2RlcygqbV9nbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIsIFByb2Zp
bGVyOjpPcmlnaW5TdGFjaygpLCBtX2NvZGVCbG9jayk7CisgICAgfQogICAgIAogICAgIGlmICht
X2Rpc2Fzc2VtYmxlcikKICAgICAgICAgbV9kaXNhc3NlbWJsZXItPnNldFN0YXJ0T2ZDb2RlKGxh
YmVsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0
ZWNvZGVTZXF1ZW5jZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJvZmls
ZXJCeXRlY29kZVNlcXVlbmNlLmgiCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKKworQnl0ZWNvZGVTZXF1ZW5j
ZTo6Qnl0ZWNvZGVTZXF1ZW5jZShDb2RlQmxvY2sqIGNvZGVCbG9jaykKK3sKKyAgICBTdHJpbmdQ
cmludFN0cmVhbSBvdXQ7CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZUluZGV4ID0g
MDsgYnl0ZWNvZGVJbmRleCA8IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOykgewor
ICAgICAgICBvdXQucmVzZXQoKTsKKyAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0
LCBieXRlY29kZUluZGV4KTsKKyAgICAgICAgbV9zZXF1ZW5jZS5hcHBlbmQoQnl0ZWNvZGUoYnl0
ZWNvZGVJbmRleCwgY29kZUJsb2NrLT5nbG9iYWxEYXRhKCktPmludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChjb2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVjb2RlSW5kZXhdLnUub3Bjb2RlKSwg
b3V0LnRvQ1N0cmluZygpKSk7CisgICAgICAgIGJ5dGVjb2RlSW5kZXggKz0gb3Bjb2RlTGVuZ3Ro
KAorICAgICAgICAgICAgY29kZUJsb2NrLT5nbG9iYWxEYXRhKCktPmludGVycHJldGVyLT5nZXRP
cGNvZGVJRCgKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVj
b2RlSW5kZXhdLnUub3Bjb2RlKSk7CisgICAgfQorfQorCitCeXRlY29kZVNlcXVlbmNlOjp+Qnl0
ZWNvZGVTZXF1ZW5jZSgpCit7Cit9CisKK3Vuc2lnbmVkIEJ5dGVjb2RlU2VxdWVuY2U6OmluZGV4
Rm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdAoreworICAgIHJl
dHVybiBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGUsIHVuc2lnbmVkLCBnZXRCeXRlY29kZUluZGV4Rm9y
Qnl0ZWNvZGU+KGNvbnN0X2Nhc3Q8Qnl0ZWNvZGUqPihtX3NlcXVlbmNlLmJlZ2luKCkpLCBtX3Nl
cXVlbmNlLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkgLSBtX3NlcXVlbmNlLmJlZ2luKCk7Cit9CisK
K2NvbnN0IEJ5dGVjb2RlJiBCeXRlY29kZVNlcXVlbmNlOjpmb3JCeXRlY29kZUluZGV4KHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGF0KGluZGV4Rm9yQnl0ZWNv
ZGVJbmRleChieXRlY29kZUluZGV4KSk7Cit9CisKK0pTVmFsdWUgQnl0ZWNvZGVTZXF1ZW5jZTo6
dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSlNBcnJheSogc2VxdWVuY2UgPSBj
b25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3NlcXVlbmNlLnNpemUoKTsgKytpKQorICAgICAgICBzZXF1ZW5jZS0+cHV0RGlyZWN0SW5k
ZXgoZXhlYywgaSwgbV9zZXF1ZW5jZVtpXS50b0pTKGV4ZWMpKTsKKyAgICByZXR1cm4gc2VxdWVu
Y2U7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxlcgorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVT
ZXF1ZW5jZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
UHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlX2gKKyNkZWZpbmUgUHJvZmlsZXJCeXRlY29kZVNlcXVl
bmNlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQcm9maWxlckJ5dGVjb2Rl
LmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgQ29kZUJsb2NrOworCituYW1lc3BhY2UgUHJvZmlsZXIgeworCitjbGFzcyBCeXRlY29k
ZVNlcXVlbmNlIHsKK3B1YmxpYzoKKyAgICBCeXRlY29kZVNlcXVlbmNlKENvZGVCbG9jayopOwor
ICAgIH5CeXRlY29kZVNlcXVlbmNlKCk7CisgICAgCisgICAgLy8gTm90ZSB0aGF0IHRoaXMgZGF0
YSBzdHJ1Y3R1cmUgaXMgbm90IGluZGV4ZWQgYnkgYnl0ZWNvZGUgaW5kZXguCisgICAgdW5zaWdu
ZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VxdWVuY2Uuc2l6ZSgpOyB9CisgICAgY29uc3Qg
Qnl0ZWNvZGUmIGF0KHVuc2lnbmVkIGkpIGNvbnN0IHsgcmV0dXJuIG1fc2VxdWVuY2VbaV07IH0K
KworICAgIHVuc2lnbmVkIGluZGV4Rm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUlu
ZGV4KSBjb25zdDsKKyAgICBjb25zdCBCeXRlY29kZSYgZm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25l
ZCBieXRlY29kZUluZGV4KSBjb25zdDsKKworICAgIEpTVmFsdWUgdG9KUyhFeGVjU3RhdGUqKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBWZWN0b3I8Qnl0ZWNvZGU+IG1fc2VxdWVuY2U7Cit9Owor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6UHJvZmlsZXIKKworI2VuZGlmIC8vIFByb2ZpbGVyQnl0
ZWNvZGVTZXF1ZW5jZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlckJ5dGVjb2Rlcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmNwcAkocmV2aXNpb24gMTM3MjI2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsMzIgKzI2LDI0IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiUHJvZmlsZXJCeXRlY29kZXMuaCIKIAorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+
CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgewogCi1CeXRlY29kZXM6OkJ5
dGVjb2RlcygKLSAgICBzaXplX3QgaWQsIGNvbnN0IFN0cmluZyYgaW5mZXJyZWROYW1lLCBjb25z
dCBTdHJpbmcmIHNvdXJjZUNvZGUsIENvZGVCbG9ja0hhc2ggaGFzaCkKLSAgICA6IG1faWQoaWQp
Ci0gICAgLCBtX2luZmVycmVkTmFtZShpbmZlcnJlZE5hbWUpCi0gICAgLCBtX3NvdXJjZUNvZGUo
c291cmNlQ29kZSkKLSAgICAsIG1faGFzaChoYXNoKQorQnl0ZWNvZGVzOjpCeXRlY29kZXMoc2l6
ZV90IGlkLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKKyAgICA6IEJ5dGVjb2RlU2VxdWVuY2UoY29k
ZUJsb2NrKQorICAgICwgbV9pZChpZCkKKyAgICAsIG1faW5mZXJyZWROYW1lKGNvZGVCbG9jay0+
aW5mZXJyZWROYW1lKCkpCisgICAgLCBtX3NvdXJjZUNvZGUoY29kZUJsb2NrLT5zb3VyY2VDb2Rl
Rm9yVG9vbHMoKSkKKyAgICAsIG1faGFzaChjb2RlQmxvY2stPmhhc2goKSkKKyAgICAsIG1faW5z
dHJ1Y3Rpb25Db3VudChjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSkKIHsKIH0KIAogQnl0
ZWNvZGVzOjp+Qnl0ZWNvZGVzKCkgeyB9CiAKLXVuc2lnbmVkIEJ5dGVjb2Rlczo6aW5kZXhGb3JC
eXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGJpbmFyeVNlYXJjaDxCeXRlY29kZSwgdW5zaWduZWQsIGdldEJ5dGVjb2RlSW5kZXhGb3JCeXRl
Y29kZT4oY29uc3RfY2FzdDxCeXRlY29kZSo+KG1fYnl0ZWNvZGUuYmVnaW4oKSksIG1fYnl0ZWNv
ZGUuc2l6ZSgpLCBieXRlY29kZUluZGV4KSAtIG1fYnl0ZWNvZGUuYmVnaW4oKTsKLX0KLQotY29u
c3QgQnl0ZWNvZGUmIEJ5dGVjb2Rlczo6Zm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29k
ZUluZGV4KSBjb25zdAotewotICAgIHJldHVybiBhdChpbmRleEZvckJ5dGVjb2RlSW5kZXgoYnl0
ZWNvZGVJbmRleCkpOwotfQotCiB2b2lkIEJ5dGVjb2Rlczo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogewogICAgIG91dC5wcmludCgiIyIsIG1faGFzaCwgIigiLCBtX2lkLCAiKSIpOwpA
QCAtNjUsMTEgKzU3LDggQEAgSlNWYWx1ZSBCeXRlY29kZXM6OnRvSlMoRXhlY1N0YXRlKiBleGVj
KQogICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLmluZmVycmVkTmFtZSwganNTdHJpbmcoZXhlYywgbV9pbmZlcnJlZE5hbWUpKTsK
ICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS5zb3VyY2VDb2RlLCBqc1N0cmluZyhleGVjLCBtX3NvdXJjZUNvZGUpKTsKICAgICBy
ZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5oYXNoLCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KHRvQ1N0cmluZyhtX2hhc2gp
KSkpOwotICAgIAotICAgIEpTQXJyYXkqIHN0cmVhbSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhl
YywgMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fYnl0ZWNvZGUuc2l6ZSgpOyAr
K2kpCi0gICAgICAgIHN0cmVhbS0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgbV9ieXRlY29kZVtp
XS50b0pTKGV4ZWMpKTsKLSAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29kZSwgc3RyZWFtKTsKKyAgICByZXN1bHQtPnB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pbnN0cnVj
dGlvbkNvdW50LCBqc051bWJlcihtX2luc3RydWN0aW9uQ291bnQpKTsKKyAgICByZXN1bHQtPnB1
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ieXRlY29k
ZSwgQnl0ZWNvZGVTZXF1ZW5jZTo6dG9KUyhleGVjKSk7CiAgICAgCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVj
b2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9m
aWxlckJ5dGVjb2Rlcy5oCShyZXZpc2lvbiAxMzcyMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMzEg
KzI4LDIzIEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCiAjaW5jbHVkZSAiSlNWYWx1
ZS5oIgotI2luY2x1ZGUgIlByb2ZpbGVyQnl0ZWNvZGUuaCIKKyNpbmNsdWRlICJQcm9maWxlckJ5
dGVjb2RlU2VxdWVuY2UuaCIKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9m
aWxlciB7CiAKLWNsYXNzIEJ5dGVjb2RlcyB7CitjbGFzcyBCeXRlY29kZXMgOiBwdWJsaWMgQnl0
ZWNvZGVTZXF1ZW5jZSB7CiBwdWJsaWM6Ci0gICAgQnl0ZWNvZGVzKHNpemVfdCBpZCwgY29uc3Qg
U3RyaW5nJiBpbmZlcnJlZE5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgQ29kZUJsb2Nr
SGFzaCk7CisgICAgQnl0ZWNvZGVzKHNpemVfdCBpZCwgQ29kZUJsb2NrKik7CiAgICAgfkJ5dGVj
b2RlcygpOwogICAgIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSkg
eyBtX2J5dGVjb2RlLmFwcGVuZChieXRlY29kZSk7IH0KLSAgICAKICAgICBzaXplX3QgaWQoKSBj
b25zdCB7IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgU3RyaW5nJiBpbmZlcnJlZE5hbWUoKSBj
b25zdCB7IHJldHVybiBtX2luZmVycmVkTmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgc291cmNl
Q29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZTsgfQorICAgIHVuc2lnbmVkIGluc3Ry
dWN0aW9uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0KICAgICBD
b2RlQmxvY2tIYXNoIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KLSAgICAKLSAgICAv
LyBOb3RlIHRoYXQgdGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBub3QgaW5kZXhlZCBieSBieXRlY29k
ZSBpbmRleC4KLSAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZS5z
aXplKCk7IH0KLSAgICBjb25zdCBCeXRlY29kZSYgYXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1
cm4gbV9ieXRlY29kZVtpXTsgfQotICAgIAotICAgIHVuc2lnbmVkIGluZGV4Rm9yQnl0ZWNvZGVJ
bmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdDsKLSAgICBjb25zdCBCeXRlY29kZSYg
Zm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdDsKLSAgICAKKwog
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogICAgIEpTVmFsdWUgdG9K
UyhFeGVjU3RhdGUqKSBjb25zdDsKQEAgLTYyLDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBTdHJp
bmcgbV9pbmZlcnJlZE5hbWU7CiAgICAgU3RyaW5nIG1fc291cmNlQ29kZTsKICAgICBDb2RlQmxv
Y2tIYXNoIG1faGFzaDsKLSAgICBWZWN0b3I8Qnl0ZWNvZGU+IG1fYnl0ZWNvZGU7CisgICAgdW5z
aWduZWQgbV9pbnN0cnVjdGlvbkNvdW50OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlBy
b2ZpbGVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21w
aWxhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVy
L1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCShyZXZpc2lvbiAxMzcyMjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCiAK
ICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2Uu
aCIKICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBQcm9maWxlciB7CkBAIC0zOSw2ICs0MCwxMyBAQCBDb21waWxhdGlvbjo6Q29t
cGlsYXRpb24oQnl0ZWNvZGVzKiBieXRlCiAKIENvbXBpbGF0aW9uOjp+Q29tcGlsYXRpb24oKSB7
IH0KIAordm9pZCBDb21waWxhdGlvbjo6YWRkUHJvZmlsZWRCeXRlY29kZXMoCisgICAgRGF0YWJh
c2UmIGRhdGFiYXNlLCBjb25zdCBPcmlnaW5TdGFjayYgb3JpZ2luLCBDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2spCit7CisgICAgbV9wcm9maWxlZEJ5dGVjb2Rlcy5hcHBlbmQoUHJvZmlsZWRCeXRl
Y29kZXMoCisgICAgICAgIG9yaWdpbiwgZGF0YWJhc2UuZW5zdXJlQnl0ZWNvZGVzRm9yKHByb2Zp
bGVkQmxvY2spLCBwcm9maWxlZEJsb2NrKSk7Cit9CisKIHZvaWQgQ29tcGlsYXRpb246OmFkZERl
c2NyaXB0aW9uKGNvbnN0IENvbXBpbGVkQnl0ZWNvZGUmIGNvbXBpbGVkQnl0ZWNvZGUpCiB7CiAg
ICAgbV9kZXNjcmlwdGlvbnMuYXBwZW5kKGNvbXBpbGVkQnl0ZWNvZGUpOwpAQCAtNzQsNiArODIs
MTEgQEAgSlNWYWx1ZSBDb21waWxhdGlvbjo6dG9KUyhFeGVjU3RhdGUqIGV4ZQogICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5
dGVjb2Rlc0lELCBqc051bWJlcihtX2J5dGVjb2Rlcy0+aWQoKSkpOwogICAgIHJlc3VsdC0+cHV0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbXBpbGF0
aW9uS2luZCwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOCh0b0NTdHJpbmcobV9raW5k
KSkpKTsKICAgICAKKyAgICBKU0FycmF5KiBwcm9maWxlZEJ5dGVjb2RlcyA9IGNvbnN0cnVjdEVt
cHR5QXJyYXkoZXhlYywgMCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvZmls
ZWRCeXRlY29kZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIHByb2ZpbGVkQnl0ZWNvZGVzLT5wdXRE
aXJlY3RJbmRleChleGVjLCBpLCBtX3Byb2ZpbGVkQnl0ZWNvZGVzW2ldLnRvSlMoZXhlYykpOwor
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb2ZpbGVkQnl0ZWNvZGVzLCBwcm9maWxlZEJ5dGVjb2Rlcyk7CisgICAgCiAgICAg
SlNBcnJheSogZGVzY3JpcHRpb25zID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kZXNjcmlwdGlvbnMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIGRlc2NyaXB0aW9ucy0+cHV0RGlyZWN0SW5kZXgoZXhlYywgaSwgbV9kZXNjcmlwdGlv
bnNbaV0udG9KUyhleGVjKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJDb21waWxhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmgJKHJldmlzaW9uIDEzNzIyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDEyICszNCwxNCBAQAogI2luY2x1ZGUgIlByb2ZpbGVyT1NSRXhpdC5o
IgogI2luY2x1ZGUgIlByb2ZpbGVyT1NSRXhpdFNpdGUuaCIKICNpbmNsdWRlICJQcm9maWxlck9y
aWdpblN0YWNrLmgiCisjaW5jbHVkZSAiUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oIgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1NlZ21lbnRlZFZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKIAogY2xhc3MgQnl0ZWNv
ZGVzOworY2xhc3MgRGF0YWJhc2U7CiAKIC8vIFJlcHJlc2VudHMgdGhlIGFjdCBvZiBleGVjdXRp
bmcgc29tZSBieXRlY29kZXMgaW4gc29tZSBlbmdpbmUsIGFuZCBkb2VzCiAvLyBhbGwgb2YgdGhl
IGNvdW50aW5nIGZvciB0aG9zZSBleGVjdXRpb25zLgpAQCAtNDksNiArNTEsMTAgQEAgcHVibGlj
OgogICAgIENvbXBpbGF0aW9uKEJ5dGVjb2RlcyosIENvbXBpbGF0aW9uS2luZCk7CiAgICAgfkNv
bXBpbGF0aW9uKCk7CiAgICAgCisgICAgdm9pZCBhZGRQcm9maWxlZEJ5dGVjb2RlcyhEYXRhYmFz
ZSYsIGNvbnN0IE9yaWdpblN0YWNrJiwgQ29kZUJsb2NrKik7CisgICAgdW5zaWduZWQgcHJvZmls
ZWRCeXRlY29kZXNTaXplKCkgY29uc3QgeyByZXR1cm4gbV9wcm9maWxlZEJ5dGVjb2Rlcy5zaXpl
KCk7IH0KKyAgICBjb25zdCBQcm9maWxlZEJ5dGVjb2RlcyYgcHJvZmlsZWRCeXRlY29kZXNBdCh1
bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3Byb2ZpbGVkQnl0ZWNvZGVzW2ldOyB9CisgICAg
CiAgICAgQnl0ZWNvZGVzKiBieXRlY29kZXMoKSBjb25zdCB7IHJldHVybiBtX2J5dGVjb2Rlczsg
fQogICAgIENvbXBpbGF0aW9uS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4gbV9raW5kOyB9CiAg
ICAgCkBAIC02Miw2ICs2OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgQnl0ZWNvZGVzKiBt
X2J5dGVjb2RlczsKICAgICBDb21waWxhdGlvbktpbmQgbV9raW5kOworICAgIFZlY3RvcjxQcm9m
aWxlZEJ5dGVjb2Rlcz4gbV9wcm9maWxlZEJ5dGVjb2RlczsKICAgICBWZWN0b3I8Q29tcGlsZWRC
eXRlY29kZT4gbV9kZXNjcmlwdGlvbnM7CiAgICAgSGFzaE1hcDxPcmlnaW5TdGFjaywgT3duUHRy
PEV4ZWN1dGlvbkNvdW50ZXI+ID4gbV9jb3VudGVyczsKICAgICBWZWN0b3I8T1NSRXhpdFNpdGU+
IG1fb3NyRXhpdFNpdGVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3MjI2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJKU09OT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50U3RyZWFtLmg+CiAKIG5h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgewogCkBAIC00MSwzNSArNDAsMTYgQEAg
RGF0YWJhc2U6On5EYXRhYmFzZSgpCiB7CiB9CiAKLUJ5dGVjb2RlcyogRGF0YWJhc2U6OmFkZEJ5
dGVjb2RlcygKLSAgICBDb2RlQmxvY2tIYXNoIGhhc2gsIGNvbnN0IFN0cmluZyYgaW5mZXJyZWRO
YW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCi17Ci0gICAgbV9ieXRlY29kZXMuYXBwZW5k
KEJ5dGVjb2RlcyhtX2J5dGVjb2Rlcy5zaXplKCksIGluZmVycmVkTmFtZSwgc291cmNlQ29kZSwg
aGFzaCkpOwotICAgIHJldHVybiAmbV9ieXRlY29kZXMubGFzdCgpOwotfQotCiBCeXRlY29kZXMq
IERhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0g
ICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwotICAgIAogICAgIGNvZGVCbG9jayA9IGNvZGVCbG9j
ay0+YmFzZWxpbmVWZXJzaW9uKCk7CiAgICAgCiAgICAgSGFzaE1hcDxDb2RlQmxvY2sqLCBCeXRl
Y29kZXMqPjo6aXRlcmF0b3IgaXRlciA9IG1fYnl0ZWNvZGVzTWFwLmZpbmQoY29kZUJsb2NrKTsK
ICAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2Rlc01hcC5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0
ZXItPnZhbHVlOwogICAgIAotICAgIEJ5dGVjb2RlcyogcmVzdWx0ID0gYWRkQnl0ZWNvZGVzKAot
ICAgICAgICBjb2RlQmxvY2stPmhhc2goKSwgY29kZUJsb2NrLT5pbmZlcnJlZE5hbWUoKSwgY29k
ZUJsb2NrLT5zb3VyY2VDb2RlRm9yVG9vbHMoKSk7Ci0gICAgCi0gICAgZm9yICh1bnNpZ25lZCBi
eXRlY29kZUluZGV4ID0gMDsgYnl0ZWNvZGVJbmRleCA8IGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpOykgewotICAgICAgICBvdXQucmVzZXQoKTsKLSAgICAgICAgY29kZUJsb2NrLT5k
dW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4KTsKLSAgICAgICAgcmVzdWx0LT5hcHBlbmQo
Qnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCwgbV9nbG9iYWxEYXRhLmludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChjb2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVjb2RlSW5kZXhdLnUub3Bjb2RlKSwg
b3V0LnRvQ1N0cmluZygpKSk7Ci0gICAgICAgIAotICAgICAgICBieXRlY29kZUluZGV4ICs9IG9w
Y29kZUxlbmd0aCgKLSAgICAgICAgICAgIG1fZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKVtieXRlY29k
ZUluZGV4XS51Lm9wY29kZSkpOwotICAgIH0KKyAgICBtX2J5dGVjb2Rlcy5hcHBlbmQoQnl0ZWNv
ZGVzKG1fYnl0ZWNvZGVzLnNpemUoKSwgY29kZUJsb2NrKSk7CisgICAgQnl0ZWNvZGVzKiByZXN1
bHQgPSAmbV9ieXRlY29kZXMubGFzdCgpOwogICAgIAogICAgIG1fYnl0ZWNvZGVzTWFwLmFkZChj
b2RlQmxvY2ssIHJlc3VsdCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgJKHJldmlzaW9uIDEzNzIyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTY2LDggKzY2LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgc2F2ZShjb25zdCBjaGFyKiBmaWxlbmFtZSkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgQnl0
ZWNvZGVzKiBhZGRCeXRlY29kZXMoQ29kZUJsb2NrSGFzaCwgY29uc3QgU3RyaW5nJiBpbmZlcnJl
ZE5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSk7Ci0gICAgCisKICAgICBKU0dsb2JhbERh
dGEmIG1fZ2xvYmFsRGF0YTsKICAgICBTZWdtZW50ZWRWZWN0b3I8Qnl0ZWNvZGVzPiBtX2J5dGVj
b2RlczsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIEJ5dGVjb2Rlcyo+IG1fYnl0ZWNvZGVzTWFw
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyUHJvZmlsZWRC
eXRlY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUHJvZmlsZXJQ
cm9maWxlZEJ5dGVjb2Rlcy5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7CisKK1Byb2ZpbGVkQnl0ZWNvZGVzOjpQ
cm9maWxlZEJ5dGVjb2Rlcyhjb25zdCBPcmlnaW5TdGFjayYgb3JpZ2luLCBCeXRlY29kZXMqIGJ5
dGVjb2RlcywgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrKQorICAgIDogQnl0ZWNvZGVTZXF1ZW5j
ZShwcm9maWxlZEJsb2NrKQorICAgICwgbV9vcmlnaW4ob3JpZ2luKQorICAgICwgbV9ieXRlY29k
ZXMoYnl0ZWNvZGVzKQoreworfQorCitQcm9maWxlZEJ5dGVjb2Rlczo6flByb2ZpbGVkQnl0ZWNv
ZGVzKCkKK3sKK30KKworSlNWYWx1ZSBQcm9maWxlZEJ5dGVjb2Rlczo6dG9KUyhFeGVjU3RhdGUq
IGV4ZWMpIGNvbnN0Cit7CisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGV4ZWMpOworICAgIAorICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVjb2Rlc0lELCBqc051bWJlcihtX2J5dGVjb2Rl
cy0+aWQoKSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLm9yaWdpbiwgbV9vcmlnaW4udG9KUyhleGVjKSk7CisgICAgcmVz
dWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Ynl0ZWNvZGUsIEJ5dGVjb2RlU2VxdWVuY2U6OnRvSlMoZXhlYykpOworICAgIAorICAgIHJldHVy
biByZXN1bHQ7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxlcgorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclBy
b2ZpbGVkQnl0ZWNvZGVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlc19oCisjZGVmaW5lIFByb2ZpbGVyUHJv
ZmlsZWRCeXRlY29kZXNfaAorCisjaW5jbHVkZSAiUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmgi
CisjaW5jbHVkZSAiUHJvZmlsZXJCeXRlY29kZXMuaCIKKyNpbmNsdWRlICJQcm9maWxlck9yaWdp
blN0YWNrLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgeworCitjbGFz
cyBQcm9maWxlZEJ5dGVjb2RlcyA6IHB1YmxpYyBCeXRlY29kZVNlcXVlbmNlIHsKK3B1YmxpYzoK
KyAgICBQcm9maWxlZEJ5dGVjb2Rlcyhjb25zdCBPcmlnaW5TdGFjayYsIEJ5dGVjb2RlcyosIENv
ZGVCbG9jayopOworICAgIH5Qcm9maWxlZEJ5dGVjb2RlcygpOworICAgIAorICAgIGNvbnN0IE9y
aWdpblN0YWNrJiBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBtX29yaWdpbjsgfQorICAgIGNvbnN0
IEJ5dGVjb2RlcyogYnl0ZWNvZGVzKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZXM7IH0KKyAg
ICAKKyAgICBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
T3JpZ2luU3RhY2sgbV9vcmlnaW47CisgICAgQnl0ZWNvZGVzKiBtX2J5dGVjb2RlczsKK307CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxlcgorCisjZW5kaWYgLy8gUHJvZmlsZXJQcm9m
aWxlZEJ5dGVjb2Rlc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkocmV2aXNpb24gMTM3MjI2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjIsNiArNjIsNyBAQAogICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8oaW5mZXJyZWRO
YW1lKSBcCiAgICAgbWFjcm8oaW5wdXQpIFwKKyAgICBtYWNybyhpbnN0cnVjdGlvbkNvdW50KSBc
CiAgICAgbWFjcm8oaXNBcnJheSkgXAogICAgIG1hY3JvKGlzUHJvdG90eXBlT2YpIFwKICAgICBt
YWNybyhpc1dhdGNocG9pbnQpIFwKQEAgLTc3LDYgKzc4LDcgQEAKICAgICBtYWNybyhvc3JFeGl0
U2l0ZXMpIFwKICAgICBtYWNybyhvc3JFeGl0cykgXAogICAgIG1hY3JvKHBhcnNlKSBcCisgICAg
bWFjcm8ocHJvZmlsZWRCeXRlY29kZXMpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51bWVyYWJs
ZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAogICAgIG1hY3JvKHNldCkgXApJbmRleDogVG9v
bHMvU2NyaXB0cy9kaXNwbGF5LXByb2ZpbGVyLW91dHB1dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9T
Y3JpcHRzL2Rpc3BsYXktcHJvZmlsZXItb3V0cHV0CShyZXZpc2lvbiAxMzcyMjYpCisrKyBUb29s
cy9TY3JpcHRzL2Rpc3BsYXktcHJvZmlsZXItb3V0cHV0CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMs
MTIgKzEzMywxMyBAQCBjbGFzcyBCeXRlY29kZQogZW5kCiAKIGNsYXNzIEJ5dGVjb2RlcwotICAg
IGF0dHJfYWNjZXNzb3IgOmNvZGVIYXNoLCA6aW5mZXJyZWROYW1lLCA6c291cmNlLCA6bWFjaGlu
ZUlubGluZVNpdGVzLCA6Y29tcGlsYXRpb25zCisgICAgYXR0cl9hY2Nlc3NvciA6Y29kZUhhc2gs
IDppbmZlcnJlZE5hbWUsIDpzb3VyY2UsIDppbnN0cnVjdGlvbkNvdW50LCA6bWFjaGluZUlubGlu
ZVNpdGVzLCA6Y29tcGlsYXRpb25zCiAgICAgCiAgICAgZGVmIGluaXRpYWxpemUoanNvbikKICAg
ICAgICAgQGNvZGVIYXNoID0ganNvblsiaGFzaCJdLnRvX3MKICAgICAgICAgQGluZmVycmVkTmFt
ZSA9IGpzb25bImluZmVycmVkTmFtZSJdLnRvX3MKICAgICAgICAgQHNvdXJjZSA9IGpzb25bInNv
dXJjZUNvZGUiXS50b19zCisgICAgICAgIEBpbnN0cnVjdGlvbkNvdW50ID0ganNvblsiaW5zdHJ1
Y3Rpb25Db3VudCJdLnRvX2kKICAgICAgICAgQGJ5dGVjb2RlID0ge30KICAgICAgICAganNvblsi
Ynl0ZWNvZGUiXS5lYWNoIHsKICAgICAgICAgICAgIHwgc3ViSnNvbiB8CkBAIC0yNTEsNiArMjUy
LDI2IEBAIGNsYXNzIEJ5dGVjb2RlcwogICAgIGVuZAogZW5kCiAKK2NsYXNzIFByb2ZpbGVkQnl0
ZWNvZGVzCisgICAgYXR0cl9yZWFkZXIgOm9yaWdpbiwgOmJ5dGVjb2RlcworICAgIAorICAgIGRl
ZiBpbml0aWFsaXplKGpzb24pCisgICAgICAgIEBvcmlnaW4gPSBvcmlnaW5TdGFja0Zyb21KU09O
KGpzb25bIm9yaWdpbiJdKQorICAgICAgICBAYnl0ZWNvZGVzID0gJGJ5dGVjb2Rlc1tqc29uWyJi
eXRlY29kZXNJRCJdLnRvX2ldCisgICAgICAgIEBzZXF1ZW5jZSA9IGpzb25bImJ5dGVjb2RlIl0u
bWFwIHsKKyAgICAgICAgICAgIHwgc3ViSnNvbiB8CisgICAgICAgICAgICBzdWJKc29uWyJkZXNj
cmlwdGlvbiJdLnRvX3MKKyAgICAgICAgfQorICAgIGVuZAorICAgIAorICAgIGRlZiBlYWNoCisg
ICAgICAgIEBzZXF1ZW5jZS5lYWNoIHsKKyAgICAgICAgICAgIHwgZGVzY3JpcHRpb24gfAorICAg
ICAgICAgICAgeWllbGQgZGVzY3JpcHRpb24KKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKIGRl
ZiBvcmlnaW5TdGFja0Zyb21KU09OKGpzb24pCiAgICAganNvbi5tYXAgewogICAgICAgICB8IHN1
Ykpzb24gfApAQCAtMjk1LDcgKzMxNiw3IEBAIGNsYXNzIE9TUkV4aXQKIGVuZAogCiBjbGFzcyBD
b21waWxhdGlvbgotICAgIGF0dHJfYWNjZXNzb3IgOmJ5dGVjb2RlLCA6ZW5naW5lLCA6ZGVzY3Jp
cHRpb25zLCA6Y291bnRlcnMsIDpjb21waWxhdGlvbkluZGV4LCA6b3NyRXhpdHMKKyAgICBhdHRy
X2FjY2Vzc29yIDpieXRlY29kZSwgOmVuZ2luZSwgOmRlc2NyaXB0aW9ucywgOmNvdW50ZXJzLCA6
Y29tcGlsYXRpb25JbmRleCwgOm9zckV4aXRzLCA6cHJvZmlsZWRCeXRlY29kZXMKICAgICAKICAg
ICBkZWYgaW5pdGlhbGl6ZShqc29uKQogICAgICAgICBAYnl0ZWNvZGUgPSAkYnl0ZWNvZGVzW2pz
b25bImJ5dGVjb2Rlc0lEIl0udG9faV0KQEAgLTMzNCw2ICszNTUsMTEgQEAgY2xhc3MgQ29tcGls
YXRpb24KICAgICAgICAgICAgIG9zckV4aXRzW29zckV4aXQuY29kZUFkZHJlc3NdIDw8IG9zckV4
aXQKICAgICAgICAgICAgIG9zckV4aXQub3JpZ2luWy0xXS5vc3JFeGl0cyA8PCBvc3JFeGl0CiAg
ICAgICAgIH0KKyAgICAgICAgQHByb2ZpbGVkQnl0ZWNvZGVzID0gW10KKyAgICAgICAganNvblsi
cHJvZmlsZWRCeXRlY29kZXMiXS5lYWNoIHsKKyAgICAgICAgICAgIHwgc3ViSnNvbiB8CisgICAg
ICAgICAgICBAcHJvZmlsZWRCeXRlY29kZXMgPDwgUHJvZmlsZWRCeXRlY29kZXMubmV3KHN1Ykpz
b24pCisgICAgICAgIH0KICAgICBlbmQKICAgICAKICAgICBkZWYgY291bnRlcihvcmlnaW4pCkBA
IC00MjUsMTQgKzQ1MSwzMyBAQCBlbmQKIGRlZiBzdW1tYXJ5KG1vZGUpCiAgICAgcmVtYWluaW5n
ID0gc2NyZWVuV2lkdGgKICAgICAKLSAgICBoYXNoQ29scyA9IDIwCisgICAgIyBGaWd1cmUgb3V0
IGhvdyBtYW55IGNvbHVtbnMgd2UgbmVlZCBmb3IgdGhlIGNvZGUgYmxvY2sgbmFtZXMsIGFuZCBm
b3IgY291bnRzCisgICAgbWF4Q291bnQgPSAwCisgICAgbWF4TmFtZSA9IDAKKyAgICAkYnl0ZWNv
ZGVzLmVhY2ggeworICAgICAgICB8IGJ5dGVjb2RlcyB8CisgICAgICAgIG1heENvdW50ID0gKFtt
YXhDb3VudF0gKyAkZW5naW5lcy5tYXAgeworICAgICAgICAgICAgICAgICAgICAgICAgfCBlbmdp
bmUgfAorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVzLm1heFRvcEV4ZWN1dGlvbkNv
dW50KGVuZ2luZSkKKyAgICAgICAgICAgICAgICAgICAgfSArICRlbmdpbmVzLm1hcCB7CisgICAg
ICAgICAgICAgICAgICAgICAgICB8IGVuZ2luZSB8CisgICAgICAgICAgICAgICAgICAgICAgICBi
eXRlY29kZXMubWF4Qm90dG9tRXhlY3V0aW9uQ291bnQoZW5naW5lKQorICAgICAgICAgICAgICAg
ICAgICB9KS5tYXgKKyAgICAgICAgbWF4TmFtZSA9IFtieXRlY29kZXMudG9fcy5zaXplLCBtYXhO
YW1lXS5tYXgKKyAgICB9CisgICAgbWF4Q291bnREaWdpdHMgPSBtYXhDb3VudC50b19zLnNpemUK
KyAgICAKKyAgICBoYXNoQ29scyA9IFtbbWF4TmFtZSwgMzBdLm1pbiwgIkNvZGVCbG9jayIuc2l6
ZV0ubWF4CiAgICAgcmVtYWluaW5nIC09IGhhc2hDb2xzICsgMQogICAgIAotICAgIGNvdW50Q29s
cyA9IDkgKiAkZW5naW5lcy5zaXplCisgICAgY291bnRDb2xzID0gW21heENvdW50RGlnaXRzICog
JGVuZ2luZXMuc2l6ZSwgIlNvdXJjZSBDb3VudHMiLnNpemVdLm1heAogICAgIHJlbWFpbmluZyAt
PSBjb3VudENvbHMgKyAxCiAgICAgCiAgICAgaWYgbW9kZSA9PSA6ZnVsbAotICAgICAgICBtYWNo
aW5lQ291bnRDb2xzID0gOSAqICRlbmdpbmVzLnNpemUKKyAgICAgICAgaW5zdHJ1Y3Rpb25Db3Vu
dENvbHMgPSA2CisgICAgICAgIHJlbWFpbmluZyAtPSBpbnN0cnVjdGlvbkNvdW50Q29scyArIDEK
KyAgICAgICAgCisgICAgICAgIG1hY2hpbmVDb3VudENvbHMgPSBbbWF4Q291bnREaWdpdHMgKiAk
ZW5naW5lcy5zaXplLCAiTWFjaGluZSBDb3VudHMiLnNpemVdLm1heAogICAgICAgICByZW1haW5p
bmcgLT0gbWFjaGluZUNvdW50Q29scyArIDEKICAgICAgICAgCiAgICAgICAgIGNvbXBpbGF0aW9u
c0NvbHMgPSA3CkBAIC00NTEsNyArNDk2LDExIEBAIGRlZiBzdW1tYXJ5KG1vZGUpCiAgICAgICAg
IHNvdXJjZUNvbHMgPSBuaWwKICAgICBlbmQKICAgICAKLSAgICBwcmludChjZW50ZXIoIkNvZGVC
bG9jayIsIGhhc2hDb2xzKSArICIgIiArIGNlbnRlcigiU291cmNlIENvdW50cyIsIGNvdW50Q29s
cykpCisgICAgcHJpbnQoY2VudGVyKCJDb2RlQmxvY2siLCBoYXNoQ29scykpCisgICAgaWYgbW9k
ZSA9PSA6ZnVsbAorICAgICAgICBwcmludCgiICIgKyBjZW50ZXIoIiNJbnN0ciIsIGluc3RydWN0
aW9uQ291bnRDb2xzKSkKKyAgICBlbmQKKyAgICBwcmludCgiICIgKyBjZW50ZXIoIlNvdXJjZSBD
b3VudHMiLCBjb3VudENvbHMpKQogICAgIGlmIG1vZGUgPT0gOmZ1bGwKICAgICAgICAgcHJpbnQo
IiAiICsgY2VudGVyKCJNYWNoaW5lIENvdW50cyIsIG1hY2hpbmVDb3VudENvbHMpKQogICAgICAg
ICBwcmludCgiICIgKyBjZW50ZXIoIiNDb21waWwiLCBjb21waWxhdGlvbnNDb2xzKSkKQEAgLTQ2
Myw3ICs1MTIsMTEgQEAgZGVmIHN1bW1hcnkobW9kZSkKICAgICBlbmQKICAgICBwdXRzCiAgICAg
Ci0gICAgcHJpbnQoY2VudGVyKCIiLCBoYXNoQ29scykgKyAiICIgKyBjZW50ZXIoIkJhc2UvREZH
IiwgY291bnRDb2xzKSkKKyAgICBwcmludChjZW50ZXIoIiIsIGhhc2hDb2xzKSkKKyAgICBpZiBt
b2RlID09IDpmdWxsCisgICAgICAgIHByaW50KCIgIiArICgiICIgKiBpbnN0cnVjdGlvbkNvdW50
Q29scykpCisgICAgZW5kCisgICAgcHJpbnQoIiAiICsgY2VudGVyKCJCYXNlL0RGRyIsIGNvdW50
Q29scykpCiAgICAgaWYgbW9kZSA9PSA6ZnVsbAogICAgICAgICBwcmludCgiICIgKyBjZW50ZXIo
IkJhc2UvREZHIiwgbWFjaGluZUNvdW50Q29scykpCiAgICAgICAgIHByaW50KCIgIiArICgiICIg
KiBjb21waWxhdGlvbnNDb2xzKSkKQEAgLTQ3NSw3ICs1MjgsMTEgQEAgZGVmIHN1bW1hcnkobW9k
ZSkKICAgICAgICAgYi50b3RhbE1heFRvcEV4ZWN1dGlvbkNvdW50IDw9PiBhLnRvdGFsTWF4VG9w
RXhlY3V0aW9uQ291bnQKICAgICB9LmVhY2ggewogICAgICAgICB8IGJ5dGVjb2RlIHwKLSAgICAg
ICAgcHJpbnQoY2VudGVyKGJ5dGVjb2RlLm5hbWUoaGFzaENvbHMpLCBoYXNoQ29scykgKyAiICIg
KworICAgICAgICBwcmludChjZW50ZXIoYnl0ZWNvZGUubmFtZShoYXNoQ29scyksIGhhc2hDb2xz
KSkKKyAgICAgICAgaWYgbW9kZSA9PSA6ZnVsbAorICAgICAgICAgICAgcHJpbnQoIiAiICsgY2Vu
dGVyKGJ5dGVjb2RlLmluc3RydWN0aW9uQ291bnQudG9fcywgaW5zdHJ1Y3Rpb25Db3VudENvbHMp
KQorICAgICAgICBlbmQKKyAgICAgICAgcHJpbnQoIiAiICsKICAgICAgICAgICAgICAgY2VudGVy
KCRlbmdpbmVzLm1hcCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlbmdpbmUgfAogICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlLm1heFRvcEV4ZWN1dGlvbkNvdW50KGVuZ2lu
ZSkudG9fcwpAQCAtNTA1LDYgKzU2Miw3IEBAIGRlZiBleGVjdXRlQ29tbWFuZCgqY29tbWFuZEFy
cmF5KQogICAgICAgICBwdXRzICJmdWxsIChmKSAgICAgICAgU2FtZSBhcyBzdW1tYXJ5LCBidXQg
cHJpbnRzIG1vcmUgaW5mb3JtYXRpb24uIgogICAgICAgICBwdXRzICJzb3VyY2UgICAgICAgICAg
U2hvdyB0aGUgc291cmNlIGZvciBhIGNvZGUgYmxvY2suIgogICAgICAgICBwdXRzICJieXRlY29k
ZSAoYikgICAgU2hvdyB0aGUgYnl0ZWNvZGUgZm9yIGEgY29kZSBibG9jaywgd2l0aCBjb3VudHMu
IgorICAgICAgICBwdXRzICJwcm9maWxpbmcgKHApICAgU2hvdyB0aGUgKGludGVybmFsKSBwcm9m
aWxpbmcgZGF0YSBmb3IgYSBjb2RlIGJsb2NrLiIKICAgICAgICAgcHV0cyAiZGlzcGxheSAoZCkg
ICAgIERpc3BsYXkgZGV0YWlscyBmb3IgYSBjb2RlIGJsb2NrLiIKICAgICAgICAgcHV0cyAiaW5s
aW5lcyAgICAgICAgIFNob3cgYWxsIGlubGluaW5nIHN0YWNrcyB0aGF0IHRoZSBjb2RlIGJsb2Nr
IHdhcyBvbi4iCiAgICAgICAgIHB1dHMgImhlbHAgKGgpICAgICAgICBQcmludCB0aGlzIG1lc3Nh
Z2UuIgpAQCAtNTcwLDYgKzYyOCw0OCBAQCBkZWYgZXhlY3V0ZUNvbW1hbmQoKmNvbW1hbmRBcnJh
eSkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICB3aGVu
ICJwcm9maWxpbmciLCAicCIKKyAgICAgICAgaWYgYXJncy5sZW5ndGggIT0gMQorICAgICAgICAg
ICAgcHV0cyAiVXNhZ2U6IHByb2ZpbGluZyA8Y29kZSBibG9jayBoYXNoPiIKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICBlbmQKKyAgICAgICAgCisgICAgICAgIGhhc2ggPSBhcmdzWzBdCisg
ICAgICAgIAorICAgICAgICBmaXJzdCA9IHRydWUKKyAgICAgICAgJGNvbXBpbGF0aW9ucy5lYWNo
IHsKKyAgICAgICAgICAgIHwgY29tcGlsYXRpb24gfAorICAgICAgICAgICAgCisgICAgICAgICAg
ICBjb21waWxhdGlvbi5wcm9maWxlZEJ5dGVjb2Rlcy5lYWNoIHsKKyAgICAgICAgICAgICAgICB8
IHByb2ZpbGVkQnl0ZWNvZGVzIHwKKyAgICAgICAgICAgICAgICBpZiBwcm9maWxlZEJ5dGVjb2Rl
cy5ieXRlY29kZXMubWF0Y2hlcyhoYXNoKQorICAgICAgICAgICAgICAgICAgICBpZiBmaXJzdAor
ICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZQorICAgICAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwdXRzCisgICAgICAgICAgICAgICAgICAg
IGVuZAorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiN7
Y29tcGlsYXRpb259IgorICAgICAgICAgICAgICAgICAgICBpZiBwcm9maWxlZEJ5dGVjb2Rlcy5v
cmlnaW4uZW1wdHk/CisgICAgICAgICAgICAgICAgICAgICAgICBwdXRzICI6IgorICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9maWxlZEJ5dGVjb2Rl
cy5vcmlnaW4uZWFjaF93aXRoX2luZGV4IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IG9yaWdpbiwgaW5kZXggfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGluZGV4ICE9
IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIiN7b3JpZ2luLmJ5dGVj
b2Rlc30iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHJpbnQgIiBiY1wjI3tvcmlnaW4uYnl0ZWNvZGVJbmRleH0gLT4gIgorICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcHV0cyAiI3tw
cm9maWxlZEJ5dGVjb2Rlcy5ieXRlY29kZXN9OiIKKyAgICAgICAgICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBwcm9maWxlZEJ5dGVjb2Rl
cy5lYWNoIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgZGVzY3JpcHRpb24gfAorICAgICAg
ICAgICAgICAgICAgICAgICAgcHV0cygiXHQiICsgZGVzY3JpcHRpb24pCisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQog
ICAgIHdoZW4gImlubGluZXMiCiAgICAgICAgIGlmIGFyZ3MubGVuZ3RoICE9IDEKICAgICAgICAg
ICAgIHB1dHMgIlVzYWdlOiBpbmxpbmVzIDxjb2RlIGJsb2NrIGhhc2g+IgpAQCAtNzg3LDcgKzg4
Nyw3IEBAIGRlZiBleGVjdXRlQ29tbWFuZCgqY29tbWFuZEFycmF5KQogICAgIGVuZAogZW5kCiAK
LWV4ZWN1dGVDb21tYW5kKCJzdW1tYXJ5IikKK2V4ZWN1dGVDb21tYW5kKCJmdWxsIikKIAogd2hp
bGUgY29tbWFuZExpbmUgPSBSZWFkbGluZS5yZWFkbGluZSgiPiAiLCB0cnVlKQogICAgIGV4ZWN1
dGVDb21tYW5kKCpjb21tYW5kTGluZS5zcGxpdCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>178876</attachid>
            <date>2012-12-11 14:23:43 -0800</date>
            <delta_ts>2012-12-11 14:23:43 -0800</delta_ts>
            <desc>sample profiling session</desc>
            <filename>sample.txt</filename>
            <type>text/plain</type>
            <size>28208</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">W3BpemxvQHdhcnRvb3RoIE9wZW5Tb3VyY2VdIFRvb2xzL1NjcmlwdHMvZGlzcGxheS1wcm9maWxl
ci1vdXRwdXQgY3J5cHRvLnByb2ZpbGUgCiAgICAgIENvZGVCbG9jayAgICAgICAgI0luc3RyIFNv
dXJjZSBDb3VudHMgIE1hY2hpbmUgQ291bnRzICNDb21waWwgIElubGluZXMgICNFeGl0cyAgICAg
ICAgICAgICAgICAgICAgU291cmNlICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEJhc2UvREZHICAgICAgIEJhc2UvREZHICAgICAgICAgICAgU3JjL1Rv
dGFsCiAgICAgIGFtMyNCRzhsQkEgICAgICAgIDE2MiAgICA2NTA0LzU5NDc5OTMgICA2NTA0LzE1
NzcxMSAgICAgIDMgICAgICAgMS80ICAgICAgMjUzICAgZnVuY3Rpb24gYW0zKGkseCx3LGosYyxu
KSB7IHZhciB0aGlzX2FycmF5CiAgYm5wU3F1YXJlVG8jQjVRRmJVICAgIDQ3NCAgICAyODI5LzMx
NDQ0OCAgICAyODI5LzE0NDgzNDYgICAgIDIgICAgICAgMC8wICAgICAgNDkgICAgZnVuY3Rpb24g
Ym5wU3F1YXJlVG8ocikgeyB2YXIgeCA9IHRoaXMuYWJzCiAgbW9udFJlZHVjZSNCVTBjZ0QgICAg
IDU0MiAgICAxMTczLzE4ODc2MiAgICAxMTczLzM2NzAzOTQgICAgIDIgICAgICAgMC8wICAgICAg
IDAgICAgZnVuY3Rpb24gbW9udFJlZHVjZSh4KSB7IHZhciB4X2FycmF5ID0geC5hCiBibnBEUlNo
aWZ0VG8jQUc3YkR6ICAgIDE0OCAgICAxMDA2LzE4ODg4NyAgICAgIDEwMDYvMTU3ICAgICAgIDIg
ICAgICAgMS8xICAgICAgIDAgICAgZnVuY3Rpb24gYm5wRFJTaGlmdFRvKG4scikgeyB2YXIgdGhp
c19hcnJhCiBibnBNdWx0aXBseVRvI0VrSUx6ciAgIDMxNyAgICAgNDA5Ni8yNjg3OSAgICA0MDk2
LzUxNDQ4OCAgICAgIDMgICAgICAgMC8wICAgICAgMTE1ICAgZnVuY3Rpb24gYm5wTXVsdGlwbHlU
byhhLHIpIHsgdmFyIHRoaXNfYXJyCiBibnBGcm9tU3RyaW5nI0FyejI5WiAgIDYxOCAgICAxMjMz
OS8xMzE3MiAgICAxMjMzOS8xMzE3MiAgICAgIDIgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rp
b24gYm5wRnJvbVN0cmluZyhzLGIpIHsgdmFyIHRoaXNfYXJyCiAgICAgaW50QXQjQ0cxb2ZaICAg
ICAgICA1MiAgICAgMzQ0LzI0MzM0ICAgICAgMzQ0LzExNjc0ICAgICAgIDMgICAgICAgMS8xICAg
ICAgMTA5ICAgZnVuY3Rpb24gaW50QXQocyxpKSB7IHZhciBjID0gQklfUkNbcy5jaGFyCiAgIGJu
cENsYW1wI0JmVkdqayAgICAgIDEzNSAgICAgMTE5LzE5OTk5ICAgICAgIDExOS80OTggICAgICAg
IDIgICAgICAgMS82ICAgICAgMjAgICAgZnVuY3Rpb24gYm5wQ2xhbXAoKSB7IHZhciB0aGlzX2Fy
cmF5ID0gdGhpCiAgICAgYm5BYnMjQndONWN5ICAgICAgICA0NSAgICAgMzg3LzExMjMwICAgICAg
ICAzODcvMCAgICAgICAgIDEgICAgICAgMS8zICAgICAgIDAgICAgZnVuY3Rpb24gYm5BYnMoKSB7
IHJldHVybiAodGhpcy5zPDApP3RoaXMuCiAgYm5Db21wYXJlVG8jQVBNQ1hTICAgIDEyNyAgICAg
IDk2Lzk4MjMgICAgICAgICAgOTYvNyAgICAgICAgIDIgICAgICAgMS8xICAgICAgIDAgICAgZnVu
Y3Rpb24gYm5Db21wYXJlVG8oYSkgeyB2YXIgdGhpc19hcnJheSA9CiAgIG1vbnRTcXJUbyNDREZl
UW0gICAgICA0OCAgICAgIDY3LzgxNTkgICAgICAgIDY3Lzc5MTIgICAgICAgIDIgICAgICAgMS8x
ICAgICAgIDAgICAgZnVuY3Rpb24gbW9udFNxclRvKHgscikgeyB4LnNxdWFyZVRvKHIpOyB0CiAg
Ym5wTFNoaWZ0VG8jRFMzbHI3ICAgIDI3NyAgICAgMTI2Ny8xNzk4ICAgICAgMTI2Ny8xNzk4ICAg
ICAgIDIgICAgICAgMC8wICAgICAgMTQgICAgZnVuY3Rpb24gYm5wTFNoaWZ0VG8obixyKSB7IHZh
ciB0aGlzX2FycmF5CiBibnBETFNoaWZ0VG8jQlR5TjlNICAgIDEzNiAgICAgIDY3OC8xOTk3ICAg
ICAgIDY3OC8xOTk3ICAgICAgIDIgICAgICAgMC8wICAgICAgNTMgICAgZnVuY3Rpb24gYm5wRExT
aGlmdFRvKG4scikgeyB2YXIgdGhpc19hcnJhCiAgIGJuTW9kUG93I0FuOENGayAgICAgIDkwOSAg
ICAgIDI1MDcvMTUwICAgICAgIDI1MDcvMTkwICAgICAgIDIgICAgICAgMC8wICAgICAgIDAgICAg
ZnVuY3Rpb24gYm5Nb2RQb3coZSxtKSB7IHZhciBlX2FycmF5ID0gZS5hCiAgIGludDJjaGFyI0Jn
MEgySyAgICAgICAyOSAgICAgIDY3LzE5NzQgICAgICAgIDY3LzE5NzQgICAgICAgIDIgICAgICAg
MC8wICAgICAgIDAgICAgZnVuY3Rpb24gaW50MmNoYXIobikgeyByZXR1cm4gQklfUk0uY2hhckF0
CiAgYm5Ub1N0cmluZyNBZUMzMEYgICAgIDQ0NSAgICAgICAxOTc4LzAgICAgICAgICAxOTc4LzAg
ICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gYm5Ub1N0cmluZyhiKSB7IHZh
ciB0aGlzX2FycmF5ID0gCiAgIG1vbnRNdWxUbyNCaG5zV04gICAgICA1MSAgICAgIDY3LzE1MzUg
ICAgICAgIDY3LzEzNDUgICAgICAgIDIgICAgICAgMS8xICAgICAgIDAgICAgZnVuY3Rpb24gbW9u
dE11bFRvKHgseSxyKSB7IHgubXVsdGlwbHlUbyh5CiAgIGJucFN1YlRvI0RsNnZPcCAgICAgIDUx
MCAgICAgICAxMTQ2LzAgICAgICAgICAxMTQ2LzAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAg
ICAgZnVuY3Rpb24gYm5wU3ViVG8oYSxyKSB7IHZhciB0aGlzX2FycmF5ID0gCiAgIGJucENvcHlU
byNDcXJ3SE8gICAgIDEwOCAgICAgIDYyNS81MDIgICAgICAgIDYyNS8yOTMgICAgICAgIDIgICAg
ICAgMi8yICAgICAgMTAgICAgZnVuY3Rpb24gYm5wQ29weVRvKHIpIHsgdmFyIHRoaXNfYXJyYXkg
PSB0CiAgYm5wRGl2UmVtVG8jRVl5bjUxICAgIDExNTkgICAgICA5OTIvMCAgICAgICAgICA5OTIv
MCAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gYm5wRGl2UmVtVG8obSxx
LHIpIHsgdmFyIHBtID0gbS5hCiAgYm5wUlNoaWZ0VG8jQ3hsUmE1ICAgIDM1NiAgICAgICA5NDQv
MCAgICAgICAgICA5NDQvMCAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24g
Ym5wUlNoaWZ0VG8obixyKSB7IHZhciB0aGlzX2FycmF5CiBiblRvQnl0ZUFycmF5I0NTV0g4TCAg
IDQwNyAgICAgICA5MzgvMCAgICAgICAgICA5MzgvMCAgICAgICAgIDEgICAgICAgMC8wICAgICAg
IDAgICAgZnVuY3Rpb24gYm5Ub0J5dGVBcnJheSgpIHsgdmFyIHRoaXNfYXJyYXkgCiAgcGtjczF1
bnBhZDIjQW03cWFoICAgIDI0MyAgICAgICA4MDgvMCAgICAgICAgICA4MDgvMCAgICAgICAgIDEg
ICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gcGtjczF1bnBhZDIoZCxuKSB7IHZhciBiID0g
ZC50b0J5CiAgIHBrY3MxcGFkMiNFYXd2OHkgICAgIDI5OCAgICAgICA3OTQvMCAgICAgICAgICA3
OTQvMCAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gcGtjczFwYWQyKHMs
bikgeyBpZihuIDwgcy5sZW5ndGggCiAgQmlnSW50ZWdlciNCOTRSNk8gICAgIDE0OSAgICAgICA2
MzYvMTEgICAgICAgICA2MzYvMTEgICAgICAgIDIgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rp
b24gQmlnSW50ZWdlcihhLGIsYykgeyB0aGlzLmFycmF5ID0gCiAgICAgIG5iaSNEVkt1RHQgICAg
ICAgICAyMCAgICAgICA2Ny80MzcgICAgICAgICA2Ny8yNTYgICAgICAgIDIgICAgICAgMy8zICAg
ICAgIDAgICAgZnVuY3Rpb24gbmJpKCkgeyByZXR1cm4gbmV3IEJpZ0ludGVnZXIobnVsCiAgIEFS
QzRpbml0I0MyQlhnRyAgICAgIDE3OSAgICAgICAyNTYvMCAgICAgICAgICAyNTYvMCAgICAgICAg
IDEgICAgICAgMS8xICAgICAgIDAgICAgZnVuY3Rpb24gQVJDNGluaXQoa2V5KSB7IHZhciBpLCBq
LCB0OyBmb3IoCiAgIGJucEFkZFRvI0FjMWRINSAgICAgIDUxMCAgICAgICAxODIvMCAgICAgICAg
ICAxODIvMCAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gYm5wQWRkVG8o
YSxyKSB7IHZhciB0aGlzX2FycmF5ID0gCiBybmdfZ2V0X2J5dGUjQkthWkxKICAgIDE5OCAgICAg
ICAxNjIvOSAgICAgICAgICAxNjIvOSAgICAgICAgIDIgICAgICAgMC8wICAgICAgIDAgICAgZnVu
Y3Rpb24gcm5nX2dldF9ieXRlKCkgeyBpZihybmdfc3RhdGUgPT0gCiAgcGFyc2VCaWdJbnQjQUVL
alA2ICAgICAyMyAgICAgICA2Ny82MyAgICAgICAgICA2Ny82MyAgICAgICAgIDIgICAgICAgMC8w
ICAgICAgIDAgICAgZnVuY3Rpb24gcGFyc2VCaWdJbnQoc3RyLHIpIHsgcmV0dXJuIG5ldyBCCiBy
bmdfZ2V0X2J5dGVzI0NSRHBkbCAgICA2MSAgICAgICA2My80NCAgICAgICAgICA2My80NCAgICAg
ICAgIDIgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gcm5nX2dldF9ieXRlcyhiYSkgeyB2
YXIgaTsgZm9yKGkgCiAgIEFSQzRuZXh0I0FpOU5uZCAgICAgIDIzNSAgICAgICAxMDUvMCAgICAg
ICAgICAxMDUvMCAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gQVJDNG5l
eHQoKSB7IHZhciB0OyB0aGlzLmkgPSAodGhpCiAgICAgbmJpdHMjRGlVYTdhICAgICAgIDEwMSAg
ICAgICA2Ny8zMSAgICAgICAgICA2Ny8xMSAgICAgICAgIDIgICAgICAgMi8yICAgICAgIDAgICAg
ZnVuY3Rpb24gbmJpdHMoeCkgeyB2YXIgciA9IDEsIHQ7IGlmKCh0PXg+CiAgIDxnbG9iYWw+I0FQ
UXNjOSAgICAgIDM4MTcgICAgICAgOTYvMCAgICAgICAgICAgOTYvMCAgICAgICAgIDEgICAgICAg
MC8wICAgICAgIDAgICAgLyogKiBDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNSBUb20gV3UgKiBBbGwg
CiAgICBibnBFeHAjQlRHYzF1ICAgICAgIDI0MCAgICAgICAgNzkvMCAgICAgICAgICAgNzkvMCAg
ICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gYm5wRXhwKGUseikgeyBpZihl
ID4gMHhmZmZmZmZmZiB8CiAgYm5CaXRMZW5ndGgjQlBoSEs4ICAgIDExOCAgICAgICAxNS8xMCAg
ICAgICAgICAgMTUvMCAgICAgICAgIDEgICAgICAgMS8xICAgICAgIDAgICAgZnVuY3Rpb24gYm5C
aXRMZW5ndGgoKSB7IHZhciB0aGlzX2FycmF5ID0gCiAgIGJucElzRXZlbiNCRjVtS0ogICAgICA1
NCAgICAgICAgNy8xMCAgICAgICAgICAgNy8wICAgICAgICAgIDEgICAgICAgMS8xICAgICAgIDAg
ICAgZnVuY3Rpb24gYm5wSXNFdmVuKCkgeyB2YXIgdGhpc19hcnJheSA9IHRoCiAgTW9udGdvbWVy
eSNEME96Y2cgICAgIDE1OSAgICAgICAgMTcvMCAgICAgICAgICAgMTcvMCAgICAgICAgIDEgICAg
ICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gTW9udGdvbWVyeShtKSB7IHRoaXMubSA9IG07IHRo
aXMuCiAgICAgYm5Nb2QjRU9OZ3ZhICAgICAgIDE0MiAgICAgICAgMTcvMCAgICAgICAgICAgMTcv
MCAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gYm5Nb2QoYSkgeyB2YXIg
ciA9IG5iaSgpOyB0aGlzLmFiCiAgbW9udFJldmVydCNDZFYwYWsgICAgICA2MyAgICAgICAgMTYv
MSAgICAgICAgICAgMTYvMCAgICAgICAgIDEgICAgICAgMS8xICAgICAgIDAgICAgZnVuY3Rpb24g
bW9udFJldmVydCh4KSB7IHZhciByID0gbmJpKCk7IHguCiAgbW9udENvbnZlcnQjQ1Y1b2VnICAg
IDE5MyAgICAgICAgMTcvMCAgICAgICAgICAgMTcvMCAgICAgICAgIDEgICAgICAgMC8wICAgICAg
IDAgICAgZnVuY3Rpb24gbW9udENvbnZlcnQoeCkgeyB2YXIgciA9IG5iaSgpOyB4CiAgYm5wSW52
RGlnaXQjQk5qbDZvICAgIDE4NyAgICAgICAgMTcvMCAgICAgICAgICAgMTcvMCAgICAgICAgIDEg
ICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gYm5wSW52RGlnaXQoKSB7IHZhciB0aGlzX2Fy
cmF5ID0gCiAgICAgIG5idiNDTVVFQUwgICAgICAgICAzOSAgICAgICAgMS8xMCAgICAgICAgICAg
MS8wICAgICAgICAgIDEgICAgICAgMS8xICAgICAgIDAgICAgZnVuY3Rpb24gbmJ2KGkpIHsgdmFy
IHIgPSBuYmkoKTsgci5mcm9tSW50CiAgYm5wRnJvbUludCNES1VjQXcgICAgICA5NSAgICAgICAg
MTEvMCAgICAgICAgICAgMTEvMCAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rp
b24gYm5wRnJvbUludCh4KSB7IHZhciB0aGlzX2FycmF5ID0gClJTQVNldFByaXZhdGVFeCNDbGlC
dGEgIDMyNSAgICAgICAgOS8wICAgICAgICAgICAgOS8wICAgICAgICAgIDEgICAgICAgMC8wICAg
ICAgIDAgICAgZnVuY3Rpb24gUlNBU2V0UHJpdmF0ZUV4KE4sRSxELFAsUSxEUCxEUSxDCiAgYm5N
dWx0aXBseSNFY1RKRlMgICAgICA0NSAgICAgICAgOS8wICAgICAgICAgICAgOS8wICAgICAgICAg
IDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gYm5NdWx0aXBseShhKSB7IHZhciByID0g
bmJpKCk7IHRoCiBSU0FTZXRQdWJsaWMjQmlPVER4ICAgIDEyNyAgICAgICAgOS8wICAgICAgICAg
ICAgOS8wICAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gUlNBU2V0UHVi
bGljKE4sRSkgeyBpZihOICE9IG51bGwgCiAgICBSU0FLZXkjQ1czN2M2ICAgICAgIDEwMiAgICAg
ICAgOS8wICAgICAgICAgICAgOS8wICAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVu
Y3Rpb24gUlNBS2V5KCkgeyB0aGlzLm4gPSBudWxsOyB0aGlzLmUgCiAgICAgYm5BZGQjRUxCZXFH
ICAgICAgICA0NSAgICAgICAgNS8wICAgICAgICAgICAgNS8wICAgICAgICAgIDEgICAgICAgMC8w
ICAgICAgIDAgICAgZnVuY3Rpb24gYm5BZGQoYSkgeyB2YXIgciA9IG5iaSgpOyB0aGlzLmFkCiAg
UlNBRG9QdWJsaWMjRGU1bnpNICAgICA0NSAgICAgICAgMS8wICAgICAgICAgICAgMS8wICAgICAg
ICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gUlNBRG9QdWJsaWMoeCkgeyByZXR1
cm4geC5tb2RQb3dJCiAgUlNBRW5jcnlwdCNFZXd6UVUgICAgIDE1NiAgICAgICAgMS8wICAgICAg
ICAgICAgMS8wICAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gUlNBRW5j
cnlwdCh0ZXh0KSB7IHZhciBtID0gcGtjczFwCiAgICBlbmNyeXB0I0JIVE1WOSAgICAgIDE0MSAg
ICAgICAgMS8wICAgICAgICAgICAgMS8wICAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAg
ZnVuY3Rpb24gZW5jcnlwdCgpIHsgdmFyIFJTQSA9IG5ldyBSU0FLZXkoCiAgYm5TdWJ0cmFjdCNE
U0ZBYk0gICAgICA0NSAgICAgICAgMS8wICAgICAgICAgICAgMS8wICAgICAgICAgIDEgICAgICAg
MC8wICAgICAgIDAgICAgZnVuY3Rpb24gYm5TdWJ0cmFjdChhKSB7IHZhciByID0gbmJpKCk7IHRo
CiAgUlNBRGVjcnlwdCNFSnV4bWggICAgIDExMyAgICAgICAgMS8wICAgICAgICAgICAgMS8wICAg
ICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gUlNBRGVjcnlwdChjdGV4dCkg
eyB2YXIgYyA9IHBhcnNlCiBSU0FEb1ByaXZhdGUjRGhkNXlWICAgIDQxNiAgICAgICAgMS8wICAg
ICAgICAgICAgMS8wICAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gUlNB
RG9Qcml2YXRlKHgpIHsgaWYodGhpcy5wID09IG51CiAgYm5Nb2RQb3dJbnQjQ0tIeXJYICAgICA5
NyAgICAgICAgMS8wICAgICAgICAgICAgMS8wICAgICAgICAgIDEgICAgICAgMC8wICAgICAgIDAg
ICAgZnVuY3Rpb24gYm5Nb2RQb3dJbnQoZSxtKSB7IHZhciB6OyBpZihlIDwgCiBTZWN1cmVSYW5k
b20jRVFLUU5vICAgICA5ICAgICAgICAgMS8wICAgICAgICAgICAgMS8wICAgICAgICAgIDEgICAg
ICAgMC8wICAgICAgIDAgICAgZnVuY3Rpb24gU2VjdXJlUmFuZG9tKCkge30KICAgIGRlY3J5cHQj
Q2VVc29aICAgICAgMTYwICAgICAgICAxLzAgICAgICAgICAgICAxLzAgICAgICAgICAgMSAgICAg
ICAwLzAgICAgICAgMCAgICBmdW5jdGlvbiBkZWNyeXB0KCkgeyB2YXIgUlNBID0gbmV3IFJTQUtl
eSgKIHJuZ19zZWVkX3RpbWUjRENvOHdxICAgIDE4ICAgICAgICAwLzAgICAgICAgICAgICAwLzAg
ICAgICAgICAgMCAgICAgICAxLzEgICAgICAgMCAgICBmdW5jdGlvbiBybmdfc2VlZF90aW1lKCkg
eyAvLyBVc2UgcHJlLWNvbXAKIHJuZ19zZWVkX2ludCNDODROVlcgICAgMjE1ICAgICAgICAwLzAg
ICAgICAgICAgICAwLzAgICAgICAgICAgMCAgICAgICAwLzAgICAgICAgMCAgICBmdW5jdGlvbiBy
bmdfc2VlZF9pbnQoeCkgeyBybmdfcG9vbFtybmdfcHAKICBzZXR1cEVuZ2luZSNDNWlkV0sgICAg
MjE2ICAgICAgICAwLzAgICAgICAgICAgICAwLzAgICAgICAgICAgMCAgICAgICAwLzAgICAgICAg
MCAgICBmdW5jdGlvbiAoZm4sIGJpdHMpIHsgQmlnSW50ZWdlci5wcm90b3R5cGUKICAgIEFyY2Zv
dXIjQ0M5bDRWICAgICAgIDY0ICAgICAgICAwLzAgICAgICAgICAgICAwLzAgICAgICAgICAgMCAg
ICAgICAxLzEgICAgICAgMCAgICBmdW5jdGlvbiBBcmNmb3VyKCkgeyB0aGlzLmkgPSAwOyB0aGlz
LmogPSAKIHBybmdfbmV3c3RhdGUjQW5zeUtNICAgIDE3ICAgICAgICAwLzAgICAgICAgICAgICAw
LzAgICAgICAgICAgMCAgICAgICAxLzEgICAgICAgMCAgICBmdW5jdGlvbiBwcm5nX25ld3N0YXRl
KCkgeyByZXR1cm4gbmV3IEFyY2YKPiBiIGFtMwogICBTb3VyY2UgQ291bnRzICAgICAgICBNYWNo
aW5lIENvdW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZWNvZGUg
Zm9yIGFtMyNCRzhsQkEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICBCYXNlL0RG
RyAgICAgICAgICAgICBCYXNlL0RGRyAgICAgIAogICAgIDIyNS81MzA5NTYgICAgICAgICAgICAy
MjUvOTM3NCAgICAgICAgICAgICBbICAgMF0gZW50ZXIKICAgICAgICEhISEhICAgICAgICAgICAg
ICAgICEhISEhICAgICAgICAgICAgICAgICAgICAgICAgIEVYSVQ6IGluIGFtMyNCRzhsQkEtMi1E
RkcgZHVlIHRvIEJhZENhY2hlLCAxMDEgdGltZXMKICAgICAzNzYvNTMwOTU2ICAgICAgICAgICAg
Mzc2LzkzNzQgICAgICAgICAgICAgWyAgIDFdIGNvbnZlcnRfdGhpcwkgci03CiAgICAgICAhISEh
ISAgICAgICAgICAgICAgICAhISEhISAgICAgICAgICAgICAgICAgICAgICAgICBFWElUOiBpbiBh
bTMjQkc4bEJBLTMtREZHIGR1ZSB0byBCYWRDYWNoZSwgMTUyIHRpbWVzCiAgICAgMzc2LzUzMDgw
NCAgICAgICAgICAgIDM3Ni85MjIyICAgICAgICAgICAgIFsgICA0XSBnZXRfYnlfaWQJIHIwLCBy
LTcsIGFycmF5KEBpZDApCiAgICAgMzc2LzUzMDgwNCAgICAgICAgICAgIDM3Ni85MjIyICAgICAg
ICAgICAgIFsgIDEzXSBnZXRfYnlfaWQJIHIxLCByLTEwLCBhcnJheShAaWQwKQogICAgIDM3Ni81
MzA4MDQgICAgICAgICAgICAzNzYvOTIyMiAgICAgICAgICAgICBbICAyMl0gYml0YW5kCQkgcjIs
IHItOSwgSW50MzI6IDE2MzgzKEBrMCkKICAgICAzNzYvNTMwODA0ICAgICAgICAgICAgMzc2Lzky
MjIgICAgICAgICAgICAgWyAgMjddIHJzaGlmdAkJIHIzLCByLTksIEludDMyOiAxNChAazEpCiAg
ICAgMzc2LzUzMDgwNCAgICAgICAgICAgIDM3Ni85MjIyICAgICAgICAgICAgIFsgIDMxXSBwcmVf
ZGVjCQkgci0xMwogICAgIDM3Ni81MzA4MDQgICAgICAgICAgICAzNzYvOTIyMiAgICAgICAgICAg
ICBbICAzM10gam5ncmVhdGVyZXEJCSByLTEzLCBJbnQzMjogMChAazIpLCAxMjcoLT4xNjApCiAg
ICA2NTA0LzU5NDc5OTMgICAgICAgICA2NTA0LzE1NzcxMSAgICAgICAgICAgIFsgIDM3XSBsb29w
X2hpbnQKICAgIDY1MDMvNTk0Nzk5MyAgICAgICAgIDY1MDMvMTU3NzExICAgICAgICAgICAgWyAg
MzhdIGdldF9ieV92YWwJIHI3LCByMCwgci04ICAgIE9yaWdpbmFsCiAgICA2NTAzLzU5NDc5OTMg
ICAgICAgICA2NTAzLzE1NzcxMSAgICAgICAgICAgIFsgIDQ0XSBiaXRhbmQJCSByNCwgcjcsIElu
dDMyOiAxNjM4MyhAazApCiAgICA2NTAzLzU5NDc5OTMgICAgICAgICA2NTAzLzE1NzcxMSAgICAg
ICAgICAgIFsgIDQ5XSBtb3YJCSByNywgcjAKICAgIDY1MDMvNTk0Nzk5MyAgICAgICAgIDY1MDMv
MTU3NzExICAgICAgICAgICAgWyAgNTJdIHBvc3RfaW5jCQkgcjgsIHItOAogICAgNjUwMy81OTQ3
OTkzICAgICAgICAgNjUwMy8xNTc3MTEgICAgICAgICAgICBbICA1NV0gZ2V0X2J5X3ZhbAkgcjgs
IHI3LCByOCAgICBPcmlnaW5hbAogICAgNjUwMy81OTQ3OTkzICAgICAgICAgNjUwMy8xNTc3MTEg
ICAgICAgICAgICBbICA2MV0gcnNoaWZ0CQkgcjUsIHI4LCBJbnQzMjogMTQoQGsxKQogICAgNjUw
My81OTQ3OTkzICAgICAgICAgNjUwMy8xNTc3MTEgICAgICAgICAgICBbICA2NV0gbXVsCQkgcjcs
IHIzLCByNAogICAgNjUwMy81OTQ3OTkzICAgICAgICAgNjUwMy8xNTc3MTEgICAgICAgICAgICBb
ICA3MF0gbXVsCQkgcjgsIHI1LCByMgogICAgNjUwMy81OTQ3OTkzICAgICAgICAgNjUwMy8xNTc3
MTEgICAgICAgICAgICBbICA3NV0gYWRkCQkgcjYsIHI3LCByOAogICAgNjUwMy81OTQ3OTkzICAg
ICAgICAgNjUwMy8xNTc3MTEgICAgICAgICAgICBbICA4MF0gbXVsCQkgcjcsIHIyLCByNAogICAg
NjUwMy81OTQ3OTkzICAgICAgICAgNjUwMy8xNTc3MTEgICAgICAgICAgICBbICA4NV0gYml0YW5k
CQkgcjgsIHI2LCBJbnQzMjogMTYzODMoQGswKQogICAgNjUwMy81OTQ3OTkzICAgICAgICAgNjUw
My8xNTc3MTEgICAgICAgICAgICBbICA5MF0gbHNoaWZ0CQkgcjgsIHI4LCBJbnQzMjogMTQoQGsx
KQogICAgNjUwMy81OTQ3OTkzICAgICAgICAgNjUwMy8xNTc3MTEgICAgICAgICAgICBbICA5NF0g
YWRkCQkgcjcsIHI3LCByOAogICAgNjUwMy81OTQ3OTkzICAgICAgICAgNjUwMy8xNTc3MTEgICAg
ICAgICAgICBbICA5OV0gZ2V0X2J5X3ZhbAkgcjgsIHIxLCByLTExICAgIE9yaWdpbmFsCiAgICA2
NTAzLzU5NDc5OTMgICAgICAgICA2NTAzLzE1NzcxMSAgICAgICAgICAgIFsgMTA1XSBhZGQJCSBy
NywgcjcsIHI4CiAgICA2NTAzLzU5NDc5OTMgICAgICAgICA2NTAzLzE1NzcxMSAgICAgICAgICAg
IFsgMTEwXSBhZGQJCSByNCwgcjcsIHItMTIKICAgIDY1MDMvNTk0Nzk5MyAgICAgICAgIDY1MDMv
MTU3NzExICAgICAgICAgICAgWyAxMTVdIHJzaGlmdAkJIHI3LCByNCwgSW50MzI6IDI4KEBrMykK
ICAgIDY1MDMvNTk0Nzk5MyAgICAgICAgIDY1MDMvMTU3NzExICAgICAgICAgICAgWyAxMTldIHJz
aGlmdAkJIHI4LCByNiwgSW50MzI6IDE0KEBrMSkKICAgIDY1MDMvNTk0Nzk5MyAgICAgICAgIDY1
MDMvMTU3NzExICAgICAgICAgICAgWyAxMjNdIGFkZAkJIHI3LCByNywgcjgKICAgIDY1MDMvNTk0
Nzk5MyAgICAgICAgIDY1MDMvMTU3NzExICAgICAgICAgICAgWyAxMjhdIG11bAkJIHI4LCByMywg
cjUKICAgIDY1MDMvNTk0Nzk5MyAgICAgICAgIDY1MDMvMTU3NzExICAgICAgICAgICAgWyAxMzNd
IGFkZAkJIHItMTIsIHI3LCByOAogICAgNjUwMy81OTQ3OTkzICAgICAgICAgNjUwMy8xNTc3MTEg
ICAgICAgICAgICBbIDEzOF0gbW92CQkgcjcsIHIxCiAgICA2NTAzLzU5NDc5OTMgICAgICAgICA2
NTAzLzE1NzcxMSAgICAgICAgICAgIFsgMTQxXSBwb3N0X2luYwkJIHI4LCByLTExCiAgICA2NTAz
LzU5NDc5OTMgICAgICAgICA2NTAzLzE1NzcxMSAgICAgICAgICAgIFsgMTQ0XSBiaXRhbmQJCSBy
OSwgcjQsIEludDMyOiAyNjg0MzU0NTUoQGs0KQogICAgNjUwMy81OTQ3OTkzICAgICAgICAgNjUw
My8xNTc3MTEgICAgICAgICAgICBbIDE0OV0gcHV0X2J5X3ZhbAkgcjcsIHI4LCByOSAgICBPcmln
aW5hbAogICAgNjUwMy81OTQ3OTkzICAgICAgICAgNjUwMy8xNTc3MTEgICAgICAgICAgICBbIDE1
NF0gcHJlX2RlYwkJIHItMTMKICAgIDY1MDMvNTk0Nzk5MyAgICAgICAgIDY1MDMvMTU3NzExICAg
ICAgICAgICAgWyAxNTZdIGxvb3BfaWZfZ3JlYXRlcmVxCSByLTEzLCBJbnQzMjogMChAazIpLCAt
MTE5KC0+MzcpCiAgICAgMzc1LzUzMDgwNSAgICAgICAgICAgIDM3NS85MjIzICAgICAgICAgICAg
IFsgMTYwXSByZXQJCSByLTEyCj4gcCBhbTMKQ29tcGlsYXRpb24gYW0zI0JHOGxCQS0xLUJhc2Vs
aW5lOgogICAgICBhcmcwIChyLTcpOiBwcmVkaWN0aW5nIENlbGw6IDB4MTRiNDhmOTAwIC0+IDB4
MCAoMHgxNGI0MDQxNDA6IE9iamVjdCwgTm9uQXJyYXkpCiAgICAgIGFyZzEgKHItOCk6IHByZWRp
Y3RpbmcgSW50MzI6IDAKICAgICAgYXJnMiAoci05KTogcHJlZGljdGluZyBJbnQzMjogOTYxOTQ3
NDQKICAgICAgYXJnMyAoci0xMCk6IHByZWRpY3RpbmcgQ2VsbDogMHgxNGI0OGY5NDAgLT4gMHgw
ICgweDE0YjQwNDE0MDogT2JqZWN0LCBOb25BcnJheSkKICAgICAgYXJnNCAoci0xMSk6IHByZWRp
Y3RpbmcgSW50MzI6IDM1CiAgICAgIGFyZzUgKHItMTIpOiBwcmVkaWN0aW5nIEludDMyOiAwCiAg
ICAgIGFyZzYgKHItMTMpOiBwcmVkaWN0aW5nIEludDMyOiAzNwogICAgICAgIFsgICAwXSBlbnRl
cgogICAgICAgIFsgICAxXSBjb252ZXJ0X3RoaXMJIHItNwogICAgICAgIFsgICA0XSBnZXRfYnlf
aWQJIHIwLCByLTcsIGFycmF5KEBpZDApIGxsaW50KHN0cnVjdCA9IDB4MTRiNDA0MTQwIChvZmZz
ZXQgPSAwKSkgICAgcHJlZGljdGluZyBDZWxsOiAweDE0YjQ3ZmJjMCAtPiAweDE0YWRlNGY4OCAo
MHgxNGI0MGUxNDA6IEFycmF5LCBBcnJheVdpdGhJbnQzMikKICAgICAgICBbICAxM10gZ2V0X2J5
X2lkCSByMSwgci0xMCwgYXJyYXkoQGlkMCkgbGxpbnQoc3RydWN0ID0gMHgxNGI0MDQxNDAgKG9m
ZnNldCA9IDApKSAgICBwcmVkaWN0aW5nIENlbGw6IDB4MTRiNDdmYmUwIC0+IDB4MTRhZGU0YWUw
ICgweDE0YjQwZTE0MDogQXJyYXksIEFycmF5V2l0aEludDMyKQogICAgICAgIFsgIDIyXSBiaXRh
bmQJCSByMiwgci05LCBJbnQzMjogMTYzODMoQGswKQogICAgICAgIFsgIDI3XSByc2hpZnQJCSBy
Mywgci05LCBJbnQzMjogMTQoQGsxKQogICAgICAgIFsgIDMxXSBwcmVfZGVjCQkgci0xMwogICAg
ICAgIFsgIDMzXSBqbmdyZWF0ZXJlcQkJIHItMTMsIEludDMyOiAwKEBrMiksIDEyNygtPjE2MCkK
ICAgICAgICBbICAzN10gbG9vcF9oaW50CiAgICAgICAgWyAgMzhdIGdldF9ieV92YWwJIHI3LCBy
MCwgci04ICAgIDIwOTcxNTI6QXJyYXlXaXRoSW50MzIsIHN0cnVjdCA9IDB4MTRiNDBlMTQwLCBP
cmlnaW5hbCAgICBwcmVkaWN0aW5nIEludDMyOiA5NTI2NDM2NAogICAgICAgIFsgIDQ0XSBiaXRh
bmQJCSByNCwgcjcsIEludDMyOiAxNjM4MyhAazApCiAgICAgICAgWyAgNDldIG1vdgkJIHI3LCBy
MAogICAgICAgIFsgIDUyXSBwb3N0X2luYwkJIHI4LCByLTgKICAgICAgICBbICA1NV0gZ2V0X2J5
X3ZhbAkgcjgsIHI3LCByOCAgICAyMDk3MTUyOkFycmF5V2l0aEludDMyLCBzdHJ1Y3QgPSAweDE0
YjQwZTE0MCwgT3JpZ2luYWwgICAgcHJlZGljdGluZyBJbnQzMjogOTUyNjQzNjQKICAgICAgICBb
ICA2MV0gcnNoaWZ0CQkgcjUsIHI4LCBJbnQzMjogMTQoQGsxKQogICAgICAgIFsgIDY1XSBtdWwJ
CSByNywgcjMsIHI0CiAgICAgICAgWyAgNzBdIG11bAkJIHI4LCByNSwgcjIKICAgICAgICBbICA3
NV0gYWRkCQkgcjYsIHI3LCByOAogICAgICAgIFsgIDgwXSBtdWwJCSByNywgcjIsIHI0CiAgICAg
ICAgWyAgODVdIGJpdGFuZAkJIHI4LCByNiwgSW50MzI6IDE2MzgzKEBrMCkKICAgICAgICBbICA5
MF0gbHNoaWZ0CQkgcjgsIHI4LCBJbnQzMjogMTQoQGsxKQogICAgICAgIFsgIDk0XSBhZGQJCSBy
NywgcjcsIHI4CiAgICAgICAgWyAgOTldIGdldF9ieV92YWwJIHI4LCByMSwgci0xMSAgICAyMDk3
MTUyOkFycmF5V2l0aEludDMyLCBzdHJ1Y3QgPSAweDE0YjQwZTE0MCwgT3JpZ2luYWwgICAgcHJl
ZGljdGluZyBJbnQzMjogMTQ2MzMxNjIxCiAgICAgICAgWyAxMDVdIGFkZAkJIHI3LCByNywgcjgK
ICAgICAgICBbIDExMF0gYWRkCQkgcjQsIHI3LCByLTEyCiAgICAgICAgWyAxMTVdIHJzaGlmdAkJ
IHI3LCByNCwgSW50MzI6IDI4KEBrMykKICAgICAgICBbIDExOV0gcnNoaWZ0CQkgcjgsIHI2LCBJ
bnQzMjogMTQoQGsxKQogICAgICAgIFsgMTIzXSBhZGQJCSByNywgcjcsIHI4CiAgICAgICAgWyAx
MjhdIG11bAkJIHI4LCByMywgcjUKICAgICAgICBbIDEzM10gYWRkCQkgci0xMiwgcjcsIHI4CiAg
ICAgICAgWyAxMzhdIG1vdgkJIHI3LCByMQogICAgICAgIFsgMTQxXSBwb3N0X2luYwkJIHI4LCBy
LTExCiAgICAgICAgWyAxNDRdIGJpdGFuZAkJIHI5LCByNCwgSW50MzI6IDI2ODQzNTQ1NShAazQp
CiAgICAgICAgWyAxNDldIHB1dF9ieV92YWwJIHI3LCByOCwgcjkgICAgMjA5NzE1MjpBcnJheVdp
dGhJbnQzMiwgc3RydWN0ID0gMHgxNGI0MGUxNDAsIE9yaWdpbmFsCiAgICAgICAgWyAxNTRdIHBy
ZV9kZWMJCSByLTEzCiAgICAgICAgWyAxNTZdIGxvb3BfaWZfZ3JlYXRlcmVxCSByLTEzLCBJbnQz
MjogMChAazIpLCAtMTE5KC0+MzcpCiAgICAgICAgWyAxNjBdIHJldAkJIHItMTIKCkNvbXBpbGF0
aW9uIGFtMyNCRzhsQkEtMi1ERkc6CiAgICAgIGFyZzAgKHItNyk6IHByZWRpY3RpbmcgQ2VsbDog
MHgxNGI0OGY5MDAgLT4gMHgwICgweDE0YjQwNDE0MDogT2JqZWN0LCBOb25BcnJheSkKICAgICAg
YXJnMSAoci04KTogcHJlZGljdGluZyBJbnQzMjogMAogICAgICBhcmcyIChyLTkpOiBwcmVkaWN0
aW5nIEludAogICAgICBhcmczIChyLTEwKTogcHJlZGljdGluZyBDZWxsOiAweDE0YjQ4Zjk0MCAt
PiAweDAgKDB4MTRiNDA0MTQwOiBPYmplY3QsIE5vbkFycmF5KQogICAgICBhcmc0IChyLTExKTog
cHJlZGljdGluZyBJbnQKICAgICAgYXJnNSAoci0xMik6IHByZWRpY3RpbmcgSW50MzI6IDAKICAg
ICAgYXJnNiAoci0xMyk6IHByZWRpY3RpbmcgSW50MzI6IDM3CiAgICAgICAgWyAgIDBdIGVudGVy
CiAhISEhISAgICAgICAgICAgRVhJVDogZHVlIHRvIEJhZENhY2hlLCAxMDEgdGltZXMKICAgICAg
ICBbICAgMV0gY29udmVydF90aGlzCSByLTcKICAgICAgICBbICAgNF0gZ2V0X2J5X2lkCSByMCwg
ci03LCBhcnJheShAaWQwKSBsbGludChzdHJ1Y3QgPSAweDE0YjQwNDE0MCAob2Zmc2V0ID0gMCkp
IGppdChzZWxmLCBzdHJ1Y3QgPSAweDE0YjQwNDE0MCAob2Zmc2V0ID0gMCkpICAgIHByZWRpY3Rp
bmcgQ2VsbDogMHgxNGI0N2ZiYzAgLT4gMHgxNGFkZTRmODggKDB4MTRiNDBlMTQwOiBBcnJheSwg
QXJyYXlXaXRoSW50MzIpCiAgICAgICAgWyAgMTNdIGdldF9ieV9pZAkgcjEsIHItMTAsIGFycmF5
KEBpZDApIGxsaW50KHN0cnVjdCA9IDB4MTRiNDA0MTQwIChvZmZzZXQgPSAwKSkgaml0KHNlbGYs
IHN0cnVjdCA9IDB4MTRiNDA0MTQwIChvZmZzZXQgPSAwKSkgICAgcHJlZGljdGluZyBDZWxsOiAw
eDE0YjQ3ZmJlMCAtPiAweDE0YWRlNGFlMCAoMHgxNGI0MGUxNDA6IEFycmF5LCBBcnJheVdpdGhJ
bnQzMikKICAgICAgICBbICAyMl0gYml0YW5kCQkgcjIsIHItOSwgSW50MzI6IDE2MzgzKEBrMCkK
ICAgICAgICBbICAyN10gcnNoaWZ0CQkgcjMsIHItOSwgSW50MzI6IDE0KEBrMSkKICAgICAgICBb
ICAzMV0gcHJlX2RlYwkJIHItMTMKICAgICAgICBbICAzM10gam5ncmVhdGVyZXEJCSByLTEzLCBJ
bnQzMjogMChAazIpLCAxMjcoLT4xNjApCiAgICAgICAgWyAgMzddIGxvb3BfaGludAogICAgICAg
IFsgIDM4XSBnZXRfYnlfdmFsCSByNywgcjAsIHItOCAgICAyMDk3MTUyOkFycmF5V2l0aEludDMy
LCBzdHJ1Y3QgPSAweDE0YjQwZTE0MCwgT3JpZ2luYWwgICAgcHJlZGljdGluZyBJbnQKICAgICAg
ICBbICA0NF0gYml0YW5kCQkgcjQsIHI3LCBJbnQzMjogMTYzODMoQGswKQogICAgICAgIFsgIDQ5
XSBtb3YJCSByNywgcjAKICAgICAgICBbICA1Ml0gcG9zdF9pbmMJCSByOCwgci04CiAgICAgICAg
WyAgNTVdIGdldF9ieV92YWwJIHI4LCByNywgcjggICAgMjA5NzE1MjpBcnJheVdpdGhJbnQzMiwg
c3RydWN0ID0gMHgxNGI0MGUxNDAsIE9yaWdpbmFsICAgIHByZWRpY3RpbmcgSW50CiAgICAgICAg
WyAgNjFdIHJzaGlmdAkJIHI1LCByOCwgSW50MzI6IDE0KEBrMSkKICAgICAgICBbICA2NV0gbXVs
CQkgcjcsIHIzLCByNAogICAgICAgIFsgIDcwXSBtdWwJCSByOCwgcjUsIHIyCiAgICAgICAgWyAg
NzVdIGFkZAkJIHI2LCByNywgcjgKICAgICAgICBbICA4MF0gbXVsCQkgcjcsIHIyLCByNAogICAg
ICAgIFsgIDg1XSBiaXRhbmQJCSByOCwgcjYsIEludDMyOiAxNjM4MyhAazApCiAgICAgICAgWyAg
OTBdIGxzaGlmdAkJIHI4LCByOCwgSW50MzI6IDE0KEBrMSkKICAgICAgICBbICA5NF0gYWRkCQkg
cjcsIHI3LCByOAogICAgICAgIFsgIDk5XSBnZXRfYnlfdmFsCSByOCwgcjEsIHItMTEgICAgMjA5
NzE1MjpBcnJheVdpdGhJbnQzMiwgc3RydWN0ID0gMHgxNGI0MGUxNDAsIE9yaWdpbmFsICAgIHBy
ZWRpY3RpbmcgSW50CiAgICAgICAgWyAxMDVdIGFkZAkJIHI3LCByNywgcjgKICAgICAgICBbIDEx
MF0gYWRkCQkgcjQsIHI3LCByLTEyCiAgICAgICAgWyAxMTVdIHJzaGlmdAkJIHI3LCByNCwgSW50
MzI6IDI4KEBrMykKICAgICAgICBbIDExOV0gcnNoaWZ0CQkgcjgsIHI2LCBJbnQzMjogMTQoQGsx
KQogICAgICAgIFsgMTIzXSBhZGQJCSByNywgcjcsIHI4CiAgICAgICAgWyAxMjhdIG11bAkJIHI4
LCByMywgcjUKICAgICAgICBbIDEzM10gYWRkCQkgci0xMiwgcjcsIHI4CiAgICAgICAgWyAxMzhd
IG1vdgkJIHI3LCByMQogICAgICAgIFsgMTQxXSBwb3N0X2luYwkJIHI4LCByLTExCiAgICAgICAg
WyAxNDRdIGJpdGFuZAkJIHI5LCByNCwgSW50MzI6IDI2ODQzNTQ1NShAazQpCiAgICAgICAgWyAx
NDldIHB1dF9ieV92YWwJIHI3LCByOCwgcjkgICAgMjA5NzE1MjpBcnJheVdpdGhJbnQzMiwgc3Ry
dWN0ID0gMHgxNGI0MGUxNDAsIE9yaWdpbmFsCiAgICAgICAgWyAxNTRdIHByZV9kZWMJCSByLTEz
CiAgICAgICAgWyAxNTZdIGxvb3BfaWZfZ3JlYXRlcmVxCSByLTEzLCBJbnQzMjogMChAazIpLCAt
MTE5KC0+MzcpCiAgICAgICAgWyAxNjBdIHJldAkJIHItMTIKCkNvbXBpbGF0aW9uIGFtMyNCRzhs
QkEtMy1ERkc6CiAgICAgIGFyZzAgKHItNyk6IHByZWRpY3RpbmcgRmluYWwKICAgICAgYXJnMSAo
ci04KTogcHJlZGljdGluZyBJbnQzMjogMAogICAgICBhcmcyIChyLTkpOiBwcmVkaWN0aW5nIElu
dAogICAgICBhcmczIChyLTEwKTogcHJlZGljdGluZyBGaW5hbAogICAgICBhcmc0IChyLTExKTog
cHJlZGljdGluZyBJbnQKICAgICAgYXJnNSAoci0xMik6IHByZWRpY3RpbmcgSW50MzI6IDAKICAg
ICAgYXJnNiAoci0xMyk6IHByZWRpY3RpbmcgSW50CiAgICAgICAgWyAgIDBdIGVudGVyCiAgICAg
ICAgWyAgIDFdIGNvbnZlcnRfdGhpcwkgci03CiAhISEhISAgICAgICAgICAgRVhJVDogZHVlIHRv
IEJhZENhY2hlLCAxNTIgdGltZXMKICAgICAgICBbICAgNF0gZ2V0X2J5X2lkCSByMCwgci03LCBh
cnJheShAaWQwKSBsbGludChzdHJ1Y3QgPSAweDE0YjQwNDE0MCAob2Zmc2V0ID0gMCkpIGppdChz
ZWxmLCBzdHJ1Y3QgPSAweDE0YjQwNDE0MCAob2Zmc2V0ID0gMCkpICAgIHByZWRpY3RpbmcgQXJy
YXkKICAgICAgICBbICAxM10gZ2V0X2J5X2lkCSByMSwgci0xMCwgYXJyYXkoQGlkMCkgbGxpbnQo
c3RydWN0ID0gMHgxNGI0MDQxNDAgKG9mZnNldCA9IDApKSBqaXQoc2VsZl9saXN0LCBsaXN0ID0g
MHg3ZmE5YmFkYTZiZjA6IFsoYmFzZSA9IDB4MTRiNDA0MTQwIChvZmZzZXQgPSAwKSksIChiYXNl
ID0gMHgxNGI0MDQxZTAgKG9mZnNldCA9IDApKV0pICAgIHByZWRpY3RpbmcgQXJyYXkKICAgICAg
ICBbICAyMl0gYml0YW5kCQkgcjIsIHItOSwgSW50MzI6IDE2MzgzKEBrMCkKICAgICAgICBbICAy
N10gcnNoaWZ0CQkgcjMsIHItOSwgSW50MzI6IDE0KEBrMSkKICAgICAgICBbICAzMV0gcHJlX2Rl
YwkJIHItMTMKICAgICAgICBbICAzM10gam5ncmVhdGVyZXEJCSByLTEzLCBJbnQzMjogMChAazIp
LCAxMjcoLT4xNjApCiAgICAgICAgWyAgMzddIGxvb3BfaGludAogICAgICAgIFsgIDM4XSBnZXRf
YnlfdmFsCSByNywgcjAsIHItOCAgICAyMDk3MTUyOkFycmF5V2l0aEludDMyLCBzdHJ1Y3QgPSAw
eDE0YjQwZTE0MCwgT3JpZ2luYWwgICAgcHJlZGljdGluZyBJbnQKICAgICAgICBbICA0NF0gYml0
YW5kCQkgcjQsIHI3LCBJbnQzMjogMTYzODMoQGswKQogICAgICAgIFsgIDQ5XSBtb3YJCSByNywg
cjAKICAgICAgICBbICA1Ml0gcG9zdF9pbmMJCSByOCwgci04CiAgICAgICAgWyAgNTVdIGdldF9i
eV92YWwJIHI4LCByNywgcjggICAgMjA5NzE1MjpBcnJheVdpdGhJbnQzMiwgc3RydWN0ID0gMHgx
NGI0MGUxNDAsIE9yaWdpbmFsICAgIHByZWRpY3RpbmcgSW50CiAgICAgICAgWyAgNjFdIHJzaGlm
dAkJIHI1LCByOCwgSW50MzI6IDE0KEBrMSkKICAgICAgICBbICA2NV0gbXVsCQkgcjcsIHIzLCBy
NAogICAgICAgIFsgIDcwXSBtdWwJCSByOCwgcjUsIHIyCiAgICAgICAgWyAgNzVdIGFkZAkJIHI2
LCByNywgcjgKICAgICAgICBbICA4MF0gbXVsCQkgcjcsIHIyLCByNAogICAgICAgIFsgIDg1XSBi
aXRhbmQJCSByOCwgcjYsIEludDMyOiAxNjM4MyhAazApCiAgICAgICAgWyAgOTBdIGxzaGlmdAkJ
IHI4LCByOCwgSW50MzI6IDE0KEBrMSkKICAgICAgICBbICA5NF0gYWRkCQkgcjcsIHI3LCByOAog
ICAgICAgIFsgIDk5XSBnZXRfYnlfdmFsCSByOCwgcjEsIHItMTEgICAgMjA5NzE1MjpBcnJheVdp
dGhJbnQzMiwgc3RydWN0ID0gMHgxNGI0MGUxNDAsIE9yaWdpbmFsICAgIHByZWRpY3RpbmcgSW50
CiAgICAgICAgWyAxMDVdIGFkZAkJIHI3LCByNywgcjgKICAgICAgICBbIDExMF0gYWRkCQkgcjQs
IHI3LCByLTEyCiAgICAgICAgWyAxMTVdIHJzaGlmdAkJIHI3LCByNCwgSW50MzI6IDI4KEBrMykK
ICAgICAgICBbIDExOV0gcnNoaWZ0CQkgcjgsIHI2LCBJbnQzMjogMTQoQGsxKQogICAgICAgIFsg
MTIzXSBhZGQJCSByNywgcjcsIHI4CiAgICAgICAgWyAxMjhdIG11bAkJIHI4LCByMywgcjUKICAg
ICAgICBbIDEzM10gYWRkCQkgci0xMiwgcjcsIHI4CiAgICAgICAgWyAxMzhdIG1vdgkJIHI3LCBy
MQogICAgICAgIFsgMTQxXSBwb3N0X2luYwkJIHI4LCByLTExCiAgICAgICAgWyAxNDRdIGJpdGFu
ZAkJIHI5LCByNCwgSW50MzI6IDI2ODQzNTQ1NShAazQpCiAgICAgICAgWyAxNDldIHB1dF9ieV92
YWwJIHI3LCByOCwgcjkgICAgMjA5NzE1MjpBcnJheVdpdGhJbnQzMiwgc3RydWN0ID0gMHgxNGI0
MGUxNDAsIE9yaWdpbmFsCiAgICAgICAgWyAxNTRdIHByZV9kZWMJCSByLTEzCiAgICAgICAgWyAx
NTZdIGxvb3BfaWZfZ3JlYXRlcmVxCSByLTEzLCBJbnQzMjogMChAazIpLCAtMTE5KC0+MzcpCiAg
ICAgICAgWyAxNjBdIHJldAkJIHItMTIKCkNvbXBpbGF0aW9uIGJucFNxdWFyZVRvI0I1UUZiVS0y
LURGRzoKICAgICAgYXJnMCAoci03KTogcHJlZGljdGluZyBGaW5hbAogICAgICBhcmcxIChyLTgp
OiBwcmVkaWN0aW5nIEludDMyOiAwCiAgICAgIGFyZzIgKHItOSk6IHByZWRpY3RpbmcgSW50CiAg
ICAgIGFyZzMgKHItMTApOiBwcmVkaWN0aW5nIEZpbmFsCiAgICAgIGFyZzQgKHItMTEpOiBwcmVk
aWN0aW5nIEludAogICAgICBhcmc1IChyLTEyKTogcHJlZGljdGluZyBJbnQzMjogMAogICAgICBh
cmc2IChyLTEzKTogcHJlZGljdGluZyBJbnQKICAgICAgICBbICAgMF0gZW50ZXIKICAgICAgICBb
ICAgMV0gY29udmVydF90aGlzCSByLTcKICAgICAgICBbICAgNF0gZ2V0X2J5X2lkCSByMCwgci03
LCBhcnJheShAaWQwKSBsbGludChzdHJ1Y3QgPSAweDE0YjQwNDE0MCAob2Zmc2V0ID0gMCkpIGpp
dChzZWxmLCBzdHJ1Y3QgPSAweDE0YjQwNDE0MCAob2Zmc2V0ID0gMCkpICAgIHByZWRpY3Rpbmcg
QXJyYXkKICAgICAgICBbICAxM10gZ2V0X2J5X2lkCSByMSwgci0xMCwgYXJyYXkoQGlkMCkgbGxp
bnQoc3RydWN0ID0gMHgxNGI0MDQxNDAgKG9mZnNldCA9IDApKSBqaXQoc2VsZl9saXN0LCBsaXN0
ID0gMHg3ZmE5YmFkYTZiZjA6IFsoYmFzZSA9IDB4MTRiNDA0MTQwIChvZmZzZXQgPSAwKSksIChi
YXNlID0gMHgxNGI0MDQxZTAgKG9mZnNldCA9IDApKV0pICAgIHByZWRpY3RpbmcgQXJyYXkKICAg
ICAgICBbICAyMl0gYml0YW5kCQkgcjIsIHItOSwgSW50MzI6IDE2MzgzKEBrMCkKICAgICAgICBb
ICAyN10gcnNoaWZ0CQkgcjMsIHItOSwgSW50MzI6IDE0KEBrMSkKICAgICAgICBbICAzMV0gcHJl
X2RlYwkJIHItMTMKICAgICAgICBbICAzM10gam5ncmVhdGVyZXEJCSByLTEzLCBJbnQzMjogMChA
azIpLCAxMjcoLT4xNjApCiAgICAgICAgWyAgMzddIGxvb3BfaGludAogICAgICAgIFsgIDM4XSBn
ZXRfYnlfdmFsCSByNywgcjAsIHItOCAgICAyMDk3MTUyOkFycmF5V2l0aEludDMyLCBzdHJ1Y3Qg
PSAweDE0YjQwZTE0MCwgT3JpZ2luYWwgICAgcHJlZGljdGluZyBJbnQKICAgICAgICBbICA0NF0g
Yml0YW5kCQkgcjQsIHI3LCBJbnQzMjogMTYzODMoQGswKQogICAgICAgIFsgIDQ5XSBtb3YJCSBy
NywgcjAKICAgICAgICBbICA1Ml0gcG9zdF9pbmMJCSByOCwgci04CiAgICAgICAgWyAgNTVdIGdl
dF9ieV92YWwJIHI4LCByNywgcjggICAgMjA5NzE1MjpBcnJheVdpdGhJbnQzMiwgc3RydWN0ID0g
MHgxNGI0MGUxNDAsIE9yaWdpbmFsICAgIHByZWRpY3RpbmcgSW50CiAgICAgICAgWyAgNjFdIHJz
aGlmdAkJIHI1LCByOCwgSW50MzI6IDE0KEBrMSkKICAgICAgICBbICA2NV0gbXVsCQkgcjcsIHIz
LCByNAogICAgICAgIFsgIDcwXSBtdWwJCSByOCwgcjUsIHIyCiAgICAgICAgWyAgNzVdIGFkZAkJ
IHI2LCByNywgcjgKICAgICAgICBbICA4MF0gbXVsCQkgcjcsIHIyLCByNAogICAgICAgIFsgIDg1
XSBiaXRhbmQJCSByOCwgcjYsIEludDMyOiAxNjM4MyhAazApCiAgICAgICAgWyAgOTBdIGxzaGlm
dAkJIHI4LCByOCwgSW50MzI6IDE0KEBrMSkKICAgICAgICBbICA5NF0gYWRkCQkgcjcsIHI3LCBy
OAogICAgICAgIFsgIDk5XSBnZXRfYnlfdmFsCSByOCwgcjEsIHItMTEgICAgMjA5NzE1MjpBcnJh
eVdpdGhJbnQzMiwgc3RydWN0ID0gMHgxNGI0MGUxNDAsIE9yaWdpbmFsICAgIHByZWRpY3Rpbmcg
SW50CiAgICAgICAgWyAxMDVdIGFkZAkJIHI3LCByNywgcjgKICAgICAgICBbIDExMF0gYWRkCQkg
cjQsIHI3LCByLTEyCiAgICAgICAgWyAxMTVdIHJzaGlmdAkJIHI3LCByNCwgSW50MzI6IDI4KEBr
MykKICAgICAgICBbIDExOV0gcnNoaWZ0CQkgcjgsIHI2LCBJbnQzMjogMTQoQGsxKQogICAgICAg
IFsgMTIzXSBhZGQJCSByNywgcjcsIHI4CiAgICAgICAgWyAxMjhdIG11bAkJIHI4LCByMywgcjUK
ICAgICAgICBbIDEzM10gYWRkCQkgci0xMiwgcjcsIHI4CiAgICAgICAgWyAxMzhdIG1vdgkJIHI3
LCByMQogICAgICAgIFsgMTQxXSBwb3N0X2luYwkJIHI4LCByLTExCiAgICAgICAgWyAxNDRdIGJp
dGFuZAkJIHI5LCByNCwgSW50MzI6IDI2ODQzNTQ1NShAazQpCiAgICAgICAgWyAxNDldIHB1dF9i
eV92YWwJIHI3LCByOCwgcjkgICAgMjA5NzE1MjpBcnJheVdpdGhJbnQzMiwgc3RydWN0ID0gMHgx
NGI0MGUxNDAsIE9yaWdpbmFsCiAgICAgICAgWyAxNTRdIHByZV9kZWMJCSByLTEzCiAgICAgICAg
WyAxNTZdIGxvb3BfaWZfZ3JlYXRlcmVxCSByLTEzLCBJbnQzMjogMChAazIpLCAtMTE5KC0+Mzcp
CiAgICAgICAgWyAxNjBdIHJldAkJIHItMTIKCkNvbXBpbGF0aW9uIG1vbnRSZWR1Y2UjQlUwY2dE
LTItREZHOgogICAgICBhcmcwIChyLTcpOiBwcmVkaWN0aW5nIEZpbmFsCiAgICAgIGFyZzEgKHIt
OCk6IHByZWRpY3RpbmcgSW50MzI6IDAKICAgICAgYXJnMiAoci05KTogcHJlZGljdGluZyBJbnQK
ICAgICAgYXJnMyAoci0xMCk6IHByZWRpY3RpbmcgRmluYWwKICAgICAgYXJnNCAoci0xMSk6IHBy
ZWRpY3RpbmcgSW50CiAgICAgIGFyZzUgKHItMTIpOiBwcmVkaWN0aW5nIEludDMyOiAwCiAgICAg
IGFyZzYgKHItMTMpOiBwcmVkaWN0aW5nIEludAogICAgICAgIFsgICAwXSBlbnRlcgogICAgICAg
IFsgICAxXSBjb252ZXJ0X3RoaXMJIHItNwogICAgICAgIFsgICA0XSBnZXRfYnlfaWQJIHIwLCBy
LTcsIGFycmF5KEBpZDApIGxsaW50KHN0cnVjdCA9IDB4MTRiNDA0MTQwIChvZmZzZXQgPSAwKSkg
aml0KHNlbGYsIHN0cnVjdCA9IDB4MTRiNDA0MTQwIChvZmZzZXQgPSAwKSkgICAgcHJlZGljdGlu
ZyBBcnJheQogICAgICAgIFsgIDEzXSBnZXRfYnlfaWQJIHIxLCByLTEwLCBhcnJheShAaWQwKSBs
bGludChzdHJ1Y3QgPSAweDE0YjQwNDE0MCAob2Zmc2V0ID0gMCkpIGppdChzZWxmX2xpc3QsIGxp
c3QgPSAweDdmYTliYWRhNmJmMDogWyhiYXNlID0gMHgxNGI0MDQxNDAgKG9mZnNldCA9IDApKSwg
KGJhc2UgPSAweDE0YjQwNDFlMCAob2Zmc2V0ID0gMCkpXSkgICAgcHJlZGljdGluZyBBcnJheQog
ICAgICAgIFsgIDIyXSBiaXRhbmQJCSByMiwgci05LCBJbnQzMjogMTYzODMoQGswKQogICAgICAg
IFsgIDI3XSByc2hpZnQJCSByMywgci05LCBJbnQzMjogMTQoQGsxKQogICAgICAgIFsgIDMxXSBw
cmVfZGVjCQkgci0xMwogICAgICAgIFsgIDMzXSBqbmdyZWF0ZXJlcQkJIHItMTMsIEludDMyOiAw
KEBrMiksIDEyNygtPjE2MCkKICAgICAgICBbICAzN10gbG9vcF9oaW50CiAgICAgICAgWyAgMzhd
IGdldF9ieV92YWwJIHI3LCByMCwgci04ICAgIDIwOTcxNTI6QXJyYXlXaXRoSW50MzIsIHN0cnVj
dCA9IDB4MTRiNDBlMTQwLCBPcmlnaW5hbCAgICBwcmVkaWN0aW5nIEludAogICAgICAgIFsgIDQ0
XSBiaXRhbmQJCSByNCwgcjcsIEludDMyOiAxNjM4MyhAazApCiAgICAgICAgWyAgNDldIG1vdgkJ
IHI3LCByMAogICAgICAgIFsgIDUyXSBwb3N0X2luYwkJIHI4LCByLTgKICAgICAgICBbICA1NV0g
Z2V0X2J5X3ZhbAkgcjgsIHI3LCByOCAgICAyMDk3MTUyOkFycmF5V2l0aEludDMyLCBzdHJ1Y3Qg
PSAweDE0YjQwZTE0MCwgT3JpZ2luYWwgICAgcHJlZGljdGluZyBJbnQKICAgICAgICBbICA2MV0g
cnNoaWZ0CQkgcjUsIHI4LCBJbnQzMjogMTQoQGsxKQogICAgICAgIFsgIDY1XSBtdWwJCSByNywg
cjMsIHI0CiAgICAgICAgWyAgNzBdIG11bAkJIHI4LCByNSwgcjIKICAgICAgICBbICA3NV0gYWRk
CQkgcjYsIHI3LCByOAogICAgICAgIFsgIDgwXSBtdWwJCSByNywgcjIsIHI0CiAgICAgICAgWyAg
ODVdIGJpdGFuZAkJIHI4LCByNiwgSW50MzI6IDE2MzgzKEBrMCkKICAgICAgICBbICA5MF0gbHNo
aWZ0CQkgcjgsIHI4LCBJbnQzMjogMTQoQGsxKQogICAgICAgIFsgIDk0XSBhZGQJCSByNywgcjcs
IHI4CiAgICAgICAgWyAgOTldIGdldF9ieV92YWwJIHI4LCByMSwgci0xMSAgICAyMDk3MTUyOkFy
cmF5V2l0aEludDMyLCBzdHJ1Y3QgPSAweDE0YjQwZTE0MCwgT3JpZ2luYWwgICAgcHJlZGljdGlu
ZyBJbnQKICAgICAgICBbIDEwNV0gYWRkCQkgcjcsIHI3LCByOAogICAgICAgIFsgMTEwXSBhZGQJ
CSByNCwgcjcsIHItMTIKICAgICAgICBbIDExNV0gcnNoaWZ0CQkgcjcsIHI0LCBJbnQzMjogMjgo
QGszKQogICAgICAgIFsgMTE5XSByc2hpZnQJCSByOCwgcjYsIEludDMyOiAxNChAazEpCiAgICAg
ICAgWyAxMjNdIGFkZAkJIHI3LCByNywgcjgKICAgICAgICBbIDEyOF0gbXVsCQkgcjgsIHIzLCBy
NQogICAgICAgIFsgMTMzXSBhZGQJCSByLTEyLCByNywgcjgKICAgICAgICBbIDEzOF0gbW92CQkg
cjcsIHIxCiAgICAgICAgWyAxNDFdIHBvc3RfaW5jCQkgcjgsIHItMTEKICAgICAgICBbIDE0NF0g
Yml0YW5kCQkgcjksIHI0LCBJbnQzMjogMjY4NDM1NDU1KEBrNCkKICAgICAgICBbIDE0OV0gcHV0
X2J5X3ZhbAkgcjcsIHI4LCByOSAgICAyMDk3MTUyOkFycmF5V2l0aEludDMyLCBzdHJ1Y3QgPSAw
eDE0YjQwZTE0MCwgT3JpZ2luYWwKICAgICAgICBbIDE1NF0gcHJlX2RlYwkJIHItMTMKICAgICAg
ICBbIDE1Nl0gbG9vcF9pZl9ncmVhdGVyZXEJIHItMTMsIEludDMyOiAwKEBrMiksIC0xMTkoLT4z
NykKICAgICAgICBbIDE2MF0gcmV0CQkgci0xMgoKQ29tcGlsYXRpb24gYm5wTXVsdGlwbHlUbyNF
a0lMenItMi1ERkc6CiAgICAgIGFyZzAgKHItNyk6IHByZWRpY3RpbmcgRmluYWwKICAgICAgYXJn
MSAoci04KTogcHJlZGljdGluZyBJbnQzMjogMAogICAgICBhcmcyIChyLTkpOiBwcmVkaWN0aW5n
IEludAogICAgICBhcmczIChyLTEwKTogcHJlZGljdGluZyBGaW5hbAogICAgICBhcmc0IChyLTEx
KTogcHJlZGljdGluZyBJbnQKICAgICAgYXJnNSAoci0xMik6IHByZWRpY3RpbmcgSW50MzI6IDAK
ICAgICAgYXJnNiAoci0xMyk6IHByZWRpY3RpbmcgSW50CiAgICAgICAgWyAgIDBdIGVudGVyCiAg
ICAgICAgWyAgIDFdIGNvbnZlcnRfdGhpcwkgci03CiAgICAgICAgWyAgIDRdIGdldF9ieV9pZAkg
cjAsIHItNywgYXJyYXkoQGlkMCkgbGxpbnQoc3RydWN0ID0gMHgxNGI0MDQxNDAgKG9mZnNldCA9
IDApKSBqaXQoc2VsZiwgc3RydWN0ID0gMHgxNGI0MDQxNDAgKG9mZnNldCA9IDApKSAgICBwcmVk
aWN0aW5nIEFycmF5CiAgICAgICAgWyAgMTNdIGdldF9ieV9pZAkgcjEsIHItMTAsIGFycmF5KEBp
ZDApIGxsaW50KHN0cnVjdCA9IDB4MTRiNDA0MTQwIChvZmZzZXQgPSAwKSkgaml0KHNlbGZfbGlz
dCwgbGlzdCA9IDB4N2ZhOWJhZGE2YmYwOiBbKGJhc2UgPSAweDE0YjQwNDE0MCAob2Zmc2V0ID0g
MCkpLCAoYmFzZSA9IDB4MTRiNDA0MWUwIChvZmZzZXQgPSAwKSldKSAgICBwcmVkaWN0aW5nIEFy
cmF5CiAgICAgICAgWyAgMjJdIGJpdGFuZAkJIHIyLCByLTksIEludDMyOiAxNjM4MyhAazApCiAg
ICAgICAgWyAgMjddIHJzaGlmdAkJIHIzLCByLTksIEludDMyOiAxNChAazEpCiAgICAgICAgWyAg
MzFdIHByZV9kZWMJCSByLTEzCiAgICAgICAgWyAgMzNdIGpuZ3JlYXRlcmVxCQkgci0xMywgSW50
MzI6IDAoQGsyKSwgMTI3KC0+MTYwKQogICAgICAgIFsgIDM3XSBsb29wX2hpbnQKICAgICAgICBb
ICAzOF0gZ2V0X2J5X3ZhbAkgcjcsIHIwLCByLTggICAgMjA5NzE1MjpBcnJheVdpdGhJbnQzMiwg
c3RydWN0ID0gMHgxNGI0MGUxNDAsIE9yaWdpbmFsICAgIHByZWRpY3RpbmcgSW50CiAgICAgICAg
WyAgNDRdIGJpdGFuZAkJIHI0LCByNywgSW50MzI6IDE2MzgzKEBrMCkKICAgICAgICBbICA0OV0g
bW92CQkgcjcsIHIwCiAgICAgICAgWyAgNTJdIHBvc3RfaW5jCQkgcjgsIHItOAogICAgICAgIFsg
IDU1XSBnZXRfYnlfdmFsCSByOCwgcjcsIHI4ICAgIDIwOTcxNTI6QXJyYXlXaXRoSW50MzIsIHN0
cnVjdCA9IDB4MTRiNDBlMTQwLCBPcmlnaW5hbCAgICBwcmVkaWN0aW5nIEludAogICAgICAgIFsg
IDYxXSByc2hpZnQJCSByNSwgcjgsIEludDMyOiAxNChAazEpCiAgICAgICAgWyAgNjVdIG11bAkJ
IHI3LCByMywgcjQKICAgICAgICBbICA3MF0gbXVsCQkgcjgsIHI1LCByMgogICAgICAgIFsgIDc1
XSBhZGQJCSByNiwgcjcsIHI4CiAgICAgICAgWyAgODBdIG11bAkJIHI3LCByMiwgcjQKICAgICAg
ICBbICA4NV0gYml0YW5kCQkgcjgsIHI2LCBJbnQzMjogMTYzODMoQGswKQogICAgICAgIFsgIDkw
XSBsc2hpZnQJCSByOCwgcjgsIEludDMyOiAxNChAazEpCiAgICAgICAgWyAgOTRdIGFkZAkJIHI3
LCByNywgcjgKICAgICAgICBbICA5OV0gZ2V0X2J5X3ZhbAkgcjgsIHIxLCByLTExICAgIDIwOTcx
NTI6QXJyYXlXaXRoSW50MzIsIHN0cnVjdCA9IDB4MTRiNDBlMTQwLCBPcmlnaW5hbCAgICBwcmVk
aWN0aW5nIEludAogICAgICAgIFsgMTA1XSBhZGQJCSByNywgcjcsIHI4CiAgICAgICAgWyAxMTBd
IGFkZAkJIHI0LCByNywgci0xMgogICAgICAgIFsgMTE1XSByc2hpZnQJCSByNywgcjQsIEludDMy
OiAyOChAazMpCiAgICAgICAgWyAxMTldIHJzaGlmdAkJIHI4LCByNiwgSW50MzI6IDE0KEBrMSkK
ICAgICAgICBbIDEyM10gYWRkCQkgcjcsIHI3LCByOAogICAgICAgIFsgMTI4XSBtdWwJCSByOCwg
cjMsIHI1CiAgICAgICAgWyAxMzNdIGFkZAkJIHItMTIsIHI3LCByOAogICAgICAgIFsgMTM4XSBt
b3YJCSByNywgcjEKICAgICAgICBbIDE0MV0gcG9zdF9pbmMJCSByOCwgci0xMQogICAgICAgIFsg
MTQ0XSBiaXRhbmQJCSByOSwgcjQsIEludDMyOiAyNjg0MzU0NTUoQGs0KQogICAgICAgIFsgMTQ5
XSBwdXRfYnlfdmFsCSByNywgcjgsIHI5ICAgIDIwOTcxNTI6QXJyYXlXaXRoSW50MzIsIHN0cnVj
dCA9IDB4MTRiNDBlMTQwLCBPcmlnaW5hbAogICAgICAgIFsgMTU0XSBwcmVfZGVjCQkgci0xMwog
ICAgICAgIFsgMTU2XSBsb29wX2lmX2dyZWF0ZXJlcQkgci0xMywgSW50MzI6IDAoQGsyKSwgLTEx
OSgtPjM3KQogICAgICAgIFsgMTYwXSByZXQJCSByLTEyCgpDb21waWxhdGlvbiBibnBNdWx0aXBs
eVRvI0VrSUx6ci0zLURGRzoKICAgICAgYXJnMCAoci03KTogcHJlZGljdGluZyBGaW5hbAogICAg
ICBhcmcxIChyLTgpOiBwcmVkaWN0aW5nIEludDMyOiAwCiAgICAgIGFyZzIgKHItOSk6IHByZWRp
Y3RpbmcgSW50CiAgICAgIGFyZzMgKHItMTApOiBwcmVkaWN0aW5nIEZpbmFsCiAgICAgIGFyZzQg
KHItMTEpOiBwcmVkaWN0aW5nIEludAogICAgICBhcmc1IChyLTEyKTogcHJlZGljdGluZyBJbnQz
MjogMAogICAgICBhcmc2IChyLTEzKTogcHJlZGljdGluZyBJbnQKICAgICAgICBbICAgMF0gZW50
ZXIKICAgICAgICBbICAgMV0gY29udmVydF90aGlzCSByLTcKICAgICAgICBbICAgNF0gZ2V0X2J5
X2lkCSByMCwgci03LCBhcnJheShAaWQwKSBsbGludChzdHJ1Y3QgPSAweDE0YjQwNDE0MCAob2Zm
c2V0ID0gMCkpIGppdChzZWxmX2xpc3QsIGxpc3QgPSAweDdmYTliOWNkYmY2MDogWyhiYXNlID0g
MHgxNGI0MDQxNDAgKG9mZnNldCA9IDApKSwgKGJhc2UgPSAweDE0YjQwMGMyMCAob2Zmc2V0ID0g
MCkpXSkgICAgcHJlZGljdGluZyBBcnJheQogICAgICAgIFsgIDEzXSBnZXRfYnlfaWQJIHIxLCBy
LTEwLCBhcnJheShAaWQwKSBsbGludChzdHJ1Y3QgPSAweDE0YjQwNDE0MCAob2Zmc2V0ID0gMCkp
IGppdChzZWxmX2xpc3QsIGxpc3QgPSAweDdmYTliYWRhNmJmMDogWyhiYXNlID0gMHgxNGI0MDQx
NDAgKG9mZnNldCA9IDApKSwgKGJhc2UgPSAweDE0YjQwNDFlMCAob2Zmc2V0ID0gMCkpXSkgICAg
cHJlZGljdGluZyBBcnJheQogICAgICAgIFsgIDIyXSBiaXRhbmQJCSByMiwgci05LCBJbnQzMjog
MTYzODMoQGswKQogICAgICAgIFsgIDI3XSByc2hpZnQJCSByMywgci05LCBJbnQzMjogMTQoQGsx
KQogICAgICAgIFsgIDMxXSBwcmVfZGVjCQkgci0xMwogICAgICAgIFsgIDMzXSBqbmdyZWF0ZXJl
cQkJIHItMTMsIEludDMyOiAwKEBrMiksIDEyNygtPjE2MCkKICAgICAgICBbICAzN10gbG9vcF9o
aW50CiAgICAgICAgWyAgMzhdIGdldF9ieV92YWwJIHI3LCByMCwgci04ICAgIDIwOTcxNTI6QXJy
YXlXaXRoSW50MzIsIHN0cnVjdCA9IDB4MTRiNDBlMTQwLCBPcmlnaW5hbCAgICBwcmVkaWN0aW5n
IEludAogICAgICAgIFsgIDQ0XSBiaXRhbmQJCSByNCwgcjcsIEludDMyOiAxNjM4MyhAazApCiAg
ICAgICAgWyAgNDldIG1vdgkJIHI3LCByMAogICAgICAgIFsgIDUyXSBwb3N0X2luYwkJIHI4LCBy
LTgKICAgICAgICBbICA1NV0gZ2V0X2J5X3ZhbAkgcjgsIHI3LCByOCAgICAyMDk3MTUyOkFycmF5
V2l0aEludDMyLCBzdHJ1Y3QgPSAweDE0YjQwZTE0MCwgT3JpZ2luYWwgICAgcHJlZGljdGluZyBJ
bnQKICAgICAgICBbICA2MV0gcnNoaWZ0CQkgcjUsIHI4LCBJbnQzMjogMTQoQGsxKQogICAgICAg
IFsgIDY1XSBtdWwJCSByNywgcjMsIHI0CiAgICAgICAgWyAgNzBdIG11bAkJIHI4LCByNSwgcjIK
ICAgICAgICBbICA3NV0gYWRkCQkgcjYsIHI3LCByOAogICAgICAgIFsgIDgwXSBtdWwJCSByNywg
cjIsIHI0CiAgICAgICAgWyAgODVdIGJpdGFuZAkJIHI4LCByNiwgSW50MzI6IDE2MzgzKEBrMCkK
ICAgICAgICBbICA5MF0gbHNoaWZ0CQkgcjgsIHI4LCBJbnQzMjogMTQoQGsxKQogICAgICAgIFsg
IDk0XSBhZGQJCSByNywgcjcsIHI4CiAgICAgICAgWyAgOTldIGdldF9ieV92YWwJIHI4LCByMSwg
ci0xMSAgICAyMDk3MTUyOkFycmF5V2l0aEludDMyLCBzdHJ1Y3QgPSAweDE0YjQwZTE0MCwgT3Jp
Z2luYWwgICAgcHJlZGljdGluZyBJbnQKICAgICAgICBbIDEwNV0gYWRkCQkgcjcsIHI3LCByOAog
ICAgICAgIFsgMTEwXSBhZGQJCSByNCwgcjcsIHItMTIKICAgICAgICBbIDExNV0gcnNoaWZ0CQkg
cjcsIHI0LCBJbnQzMjogMjgoQGszKQogICAgICAgIFsgMTE5XSByc2hpZnQJCSByOCwgcjYsIElu
dDMyOiAxNChAazEpCiAgICAgICAgWyAxMjNdIGFkZAkJIHI3LCByNywgcjgKICAgICAgICBbIDEy
OF0gbXVsCQkgcjgsIHIzLCByNQogICAgICAgIFsgMTMzXSBhZGQJCSByLTEyLCByNywgcjgKICAg
ICAgICBbIDEzOF0gbW92CQkgcjcsIHIxCiAgICAgICAgWyAxNDFdIHBvc3RfaW5jCQkgcjgsIHIt
MTEKICAgICAgICBbIDE0NF0gYml0YW5kCQkgcjksIHI0LCBJbnQzMjogMjY4NDM1NDU1KEBrNCkK
ICAgICAgICBbIDE0OV0gcHV0X2J5X3ZhbAkgcjcsIHI4LCByOSAgICAyMDk3MTUyOkFycmF5V2l0
aEludDMyLCBzdHJ1Y3QgPSAweDE0YjQwZTE0MCwgT3JpZ2luYWwKICAgICAgICBbIDE1NF0gcHJl
X2RlYwkJIHItMTMKICAgICAgICBbIDE1Nl0gbG9vcF9pZl9ncmVhdGVyZXEJIHItMTMsIEludDMy
OiAwKEBrMiksIC0xMTkoLT4zNykKICAgICAgICBbIDE2MF0gcmV0CQkgci0xMgo+IAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178879</attachid>
            <date>2012-12-11 14:34:08 -0800</date>
            <delta_ts>2012-12-11 14:44:50 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>pbp.patch</filename>
            <type>text/plain</type>
            <size>62183</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3MzYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDEyLTEyLTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UHJvZmlsZXIgc2hvdWxkIHNob3cgYnl0ZWNvZGUgZHVtcHMgYXMgdGhleSB3b3VsZCBoYXZlIGJl
ZW4gdmlzaWJsZSB0byB0aGUgSklUcywgaW5jbHVkaW5nIHRoZSBwcm9maWxpbmcgZGF0YSB0aGF0
IHRoZSBKSVRzIHdvdWxkIHNlZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTA0NjQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkcyBtb3JlIHByb2ZpbGluZyBkYXRhIHRvIGJ5dGVjb2RlIGR1bXBzLCBh
bmQgYWRkcyB0aGUgYWJpbGl0eSB0byBkbyBhIHNlY29uZGFyeQorICAgICAgICBieXRlY29kZSBk
dW1wIGZvciBlYWNoIEpJVCBjb21waWxhdGlvbiBvZiBhIGNvZGUgYmxvY2suIFRoaXMgaXMgcmVs
ZXZhbnQgYmVjYXVzZSBib3RoCisgICAgICAgIHRoZSBieXRlY29kZXMsIGFuZCB0aGUgcHJvZmls
aW5nIGRhdGEsIG1heSBjaGFuZ2UgYWZ0ZXIgc29tZSBudW1iZXIgb2YgZXhlY3V0aW9ucy4KKyAg
ICAgICAgCisgICAgICAgIEFsc28gZml4ZXMgc29tZSByYW5kb20gZHVtcGluZyBjb2RlIHRvIHVz
ZSBQcmludFN0cmVhbSYgcmF0aGVyIHRoYW4KKyAgICAgICAgc3RhdGljIGNvbnN0IGNoYXJbdGhp
bmd5XS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogYnl0
ZWNvZGUvQXJyYXlQcm9maWxlLmNwcDoKKyAgICAgICAgKEpTQzo6ZHVtcEFycmF5TW9kZXMpOgor
ICAgICAgICAoSlNDOjpBcnJheVByb2ZpbGU6OmJyaWVmRGVzY3JpcHRpb24pOgorICAgICAgICAq
IGJ5dGVjb2RlL0FycmF5UHJvZmlsZS5oOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5j
cHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6cHJpbnRHZXRCeUlkT3ApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpwcmludENhbGxPcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcFZh
bHVlUHJvZmlsaW5nKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wQXJyYXlQcm9maWxp
bmcpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXBCeXRlY29kZSk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmg6
CisgICAgICAgIChKU0M6OlZhbHVlUHJvZmlsZUJhc2U6OmJyaWVmRGVzY3JpcHRpb24pOgorICAg
ICAgICAqIGRmZy9ERkdBYnN0cmFjdFZhbHVlLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJh
Y3RWYWx1ZTo6ZHVtcCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VDb2RlQmxvY2spOgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAg
ICAgICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6UHJvZmlsZXI6OkJ5dGVjb2RlU2VxdWVuY2U6OkJ5dGVjb2RlU2VxdWVuY2Up
OgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Qnl0ZWNvZGVTZXF1ZW5jZTo6fkJ5dGVjb2RlU2Vx
dWVuY2UpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Qnl0ZWNvZGVTZXF1ZW5jZTo6aW5kZXhG
b3JCeXRlY29kZUluZGV4KToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkJ5dGVjb2RlU2VxdWVu
Y2U6OmZvckJ5dGVjb2RlSW5kZXgpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Qnl0ZWNvZGVT
ZXF1ZW5jZTo6YWRkU2VxdWVuY2VQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9m
aWxlckJ5dGVjb2RlU2VxdWVuY2UuaDogQWRkZWQuCisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpC
eXRlY29kZVNlcXVlbmNlOjpzaXplKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkJ5dGVjb2Rl
U2VxdWVuY2U6OmF0KToKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5jcHA6
CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpCeXRlY29kZXM6OkJ5dGVjb2Rlcyk6CisgICAgICAg
IChKU0M6OlByb2ZpbGVyOjpCeXRlY29kZXM6OnRvSlMpOgorICAgICAgICAqIHByb2ZpbGVyL1By
b2ZpbGVyQnl0ZWNvZGVzLmg6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpCeXRlY29kZXM6Omlu
c3RydWN0aW9uQ291bnQpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24u
Y3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6Q29tcGlsYXRpb246OmFkZFByb2ZpbGVkQnl0
ZWNvZGVzKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OkNvbXBpbGF0aW9uOjp0b0pTKToKKyAg
ICAgICAgKiBwcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmg6CisgICAgICAgIChKU0M6OlBy
b2ZpbGVyOjpDb21waWxhdGlvbjo6cHJvZmlsZWRCeXRlY29kZXNTaXplKToKKyAgICAgICAgKEpT
Qzo6UHJvZmlsZXI6OkNvbXBpbGF0aW9uOjpwcm9maWxlZEJ5dGVjb2Rlc0F0KToKKyAgICAgICAg
KiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6
OkRhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IpOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2Zp
bGVyRGF0YWJhc2UuaDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNv
ZGVzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpQcm9maWxlZEJ5dGVjb2Rl
czo6UHJvZmlsZWRCeXRlY29kZXMpOgorICAgICAgICAoSlNDOjpQcm9maWxlcjo6UHJvZmlsZWRC
eXRlY29kZXM6On5Qcm9maWxlZEJ5dGVjb2Rlcyk6CisgICAgICAgIChKU0M6OlByb2ZpbGVyOjpQ
cm9maWxlZEJ5dGVjb2Rlczo6dG9KUyk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJQcm9m
aWxlZEJ5dGVjb2Rlcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6UHJvZmlsZXI6OlByb2ZpbGVk
Qnl0ZWNvZGVzOjpieXRlY29kZXMpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaDoKKwogMjAxMi0xMi0xMSAgT3N3YWxkIEJ1ZGRlbmhhZ2VuICA8b3N3YWxkLmJ1ZGRlbmhh
Z2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIGRlbGV0ZSBkZWFkIGluY2x1ZGUgcGF0aHMK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEzNzIyNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTc2LDYgKzE3Niw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAKICAgICBwcm9m
aWxlci9Qcm9maWxlckJ5dGVjb2RlLmNwcAogICAgIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUu
aAorICAgIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAKICAgICBwcm9maWxl
ci9Qcm9maWxlckJ5dGVjb2Rlcy5jcHAKICAgICBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5o
CiAgICAgcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKQEAgLTE5Myw2ICsxOTQsNyBA
QCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIHByb2ZpbGVyL1Byb2ZpbGVyT3JpZ2lu
U3RhY2suaAogICAgIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5jcHAKICAgICBwcm9maWxlci9Q
cm9maWxlck9TUkV4aXRTaXRlLmNwcAorICAgIHByb2ZpbGVyL1Byb2ZpbGVyUHJvZmlsZWRCeXRl
Y29kZXMuY3BwCiAgICAgcHJvZmlsZXIvUHJvZmlsZS5jcHAKICAgICBwcm9maWxlci9Qcm9maWxl
R2VuZXJhdG9yLmNwcAogICAgIHByb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEzNzIyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkp
CkBAIC00NzksNiArNDc5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL0NhbGxJZGVudGlmaWVyLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGUuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAgXAorCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVzLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcCBcCkBAIC00
OTgsNiArNTAwLDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmggXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlR2VuZXJhdG9yLmggXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEzNzIyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xODYsNiArMTg2LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgcGFyc2VyL1NvdXJjZVByb3ZpZGVyQ2FjaGUuY3BwIFwKICAgICBwcm9maWxlci9Q
cm9maWxlckJ5dGVjb2RlLmNwcCBcCiAgICAgcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZS5oIFwK
KyAgICBwcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwIFwKICAgICBwcm9maWxl
ci9Qcm9maWxlckJ5dGVjb2Rlcy5jcHAgXAogICAgIHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVz
LmggXAogICAgIHByb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwIFwKQEAgLTIwMyw2ICsy
MDQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwcm9maWxlci9Qcm9maWxlck9yaWdpblN0YWNrLmgg
XAogICAgIHByb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdC5jcHAgXAogICAgIHByb2ZpbGVyL1Byb2Zp
bGVyT1NSRXhpdFNpdGUuY3BwIFwKKyAgICBwcm9maWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNv
ZGVzLmNwcCBcCiAgICAgcHJvZmlsZXIvUHJvZmlsZS5jcHAgXAogICAgIHByb2ZpbGVyL1Byb2Zp
bGVHZW5lcmF0b3IuY3BwIFwKICAgICBwcm9maWxlci9Qcm9maWxlTm9kZS5jcHAgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2oJKHJldmlzaW9uIDEzNzIyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTM0LDYgKzE1MzQsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8
RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUHJvZmlsZXJCeXRlY29kZVNl
cXVlbmNlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cLi5ccHJvZmlsZXJcUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmgiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFByb2Zp
bGVyQnl0ZWNvZGVzLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xNjEwLDYgKzE2MTgsMTQg
QEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
cHJvZmlsZXJcUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXHByb2ZpbGVyXFByb2ZpbGVyUHJv
ZmlsZWRCeXRlY29kZXMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5ccHJvZmlsZXJcUHJvZmlsZS5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEzNzIyNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3MywxMCBAQAogCQkwRjBDRDRDMjE1RjFBNjA3
MDAzMkYxQzAgLyogUHV0RGlyZWN0SW5kZXhNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBDRDRDMDE1RjFBNjA0MDAzMkYxQzAgLyogUHV0RGly
ZWN0SW5kZXhNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEYwQ0Q0QzQxNUY2QjZCQjAwMzJGMUMwIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQ0Q0
QzMxNUY2QjZCNTAwMzJGMUMwIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwICovOyB9OwogCQkw
RjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEwMEI4
MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMTM5MTI5MTY3NzFDMzMwMDlDQ0IwNyAvKiBQcm9maWxl
ckJ5dGVjb2RlU2VxdWVuY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYxMzkxMjQxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyQnl0ZWNvZGVT
ZXF1ZW5jZS5jcHAgKi87IH07CisJCTBGMTM5MTJBMTY3NzFDMzYwMDlDQ0IwNyAvKiBQcm9maWxl
ckJ5dGVjb2RlU2VxdWVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMTM5MTI1MTY3NzFDMzAwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2Vx
dWVuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjEzOTEyQjE2NzcxQzNBMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzOTEy
NjE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAgKi87IH07
CisJCTBGMTM5MTJDMTY3NzFDM0QwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjEzOTEy
NzE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTNFMDRFMTYxNjRB
MUYwMERDOERFNyAvKiBJbmRleGluZ1R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxM0UwNEMxNjE2NEExQjAwREM4REU3IC8qIEluZGV4aW5n
VHlwZS5jcHAgKi87IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93
UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2MDE1RDE1NjE5OEM5MDBD
MjU4N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE2MDE1QTE1NjE5OEJGMDBDMjU4
N0MgLyogREZHQXJndW1lbnRzU2ltcGxpZmljYXRpb25QaGFzZS5jcHAgKi87IH07CkBAIC05MDIs
NiArOTA2LDEwIEBACiAJCTBGMENENEMwMTVGMUE2MDQwMDMyRjFDMCAvKiBQdXREaXJlY3RJbmRl
eE1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUHV0RGlyZWN0SW5kZXhN
b2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMENENEMzMTVGNkI2QjUwMDMy
RjFDMCAvKiBTcGFyc2VBcnJheVZhbHVlTWFwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNwYXJzZUFycmF5VmFsdWVNYXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYxMzkxMjQxNjc3MUMzMDAwOUNDQjA3IC8q
IFByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwOyBwYXRoID0gcHJvZmlsZXIv
UHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYxMzkxMjUxNjc3MUMzMDAwOUNDQjA3IC8qIFByb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlckJ5dGVjb2RlU2VxdWVu
Y2UuaDsgcGF0aCA9IHByb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjEzOTEyNjE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmls
ZXJQcm9maWxlZEJ5dGVjb2Rlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcDsgcGF0aCA9IHByb2ZpbGVyL1Byb2Zp
bGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjEzOTEyNzE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVz
Lmg7IHBhdGggPSBwcm9maWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTNFMDRDMTYxNjRBMUIwMERDOERFNyAvKiBJbmRleGlu
Z1R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5kZXhpbmdU
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAw
NURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb21tb25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYx
NjAxNUExNTYxOThCRjAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2Uu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQXJndW1lbnRzU2lt
cGxpZmljYXRpb25QaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHQXJndW1lbnRzU2ltcGxpZmljYXRp
b25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTc4LDYgKzI1ODYs
OCBAQAogCQkJCTBGRjcyOTkzMTY2QUQzNDcwMDBGNUJBMyAvKiBQcm9maWxlckJ5dGVjb2RlLmgg
Ki8sCiAJCQkJMEZGNzI5OTQxNjZBRDM0NzAwMEY1QkEzIC8qIFByb2ZpbGVyQnl0ZWNvZGVzLmNw
cCAqLywKIAkJCQkwRkY3Mjk5NTE2NkFEMzQ3MDAwRjVCQTMgLyogUHJvZmlsZXJCeXRlY29kZXMu
aCAqLywKKwkJCQkwRjEzOTEyNDE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJCeXRlY29kZVNl
cXVlbmNlLmNwcCAqLywKKwkJCQkwRjEzOTEyNTE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJC
eXRlY29kZVNlcXVlbmNlLmggKi8sCiAJCQkJMEZGNzI5OTYxNjZBRDM0NzAwMEY1QkEzIC8qIFBy
b2ZpbGVyQ29tcGlsYXRpb24uY3BwICovLAogCQkJCTBGRjcyOTk3MTY2QUQzNDcwMDBGNUJBMyAv
KiBQcm9maWxlckNvbXBpbGF0aW9uLmggKi8sCiAJCQkJMEZGNzI5OTgxNjZBRDM0NzAwMEY1QkEz
IC8qIFByb2ZpbGVyQ29tcGlsYXRpb25LaW5kLmNwcCAqLywKQEAgLTI1OTUsNiArMjYwNSw4IEBA
CiAJCQkJMEZCMTA1ODgxNjc1NDgyRTAwRjhBQjZFIC8qIFByb2ZpbGVyT1NSRXhpdC5oICovLAog
CQkJCTBGQjEwNTg5MTY3NTQ4MkUwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmNwcCAq
LywKIAkJCQkwRkIxMDU4QTE2NzU0ODJFMDBGOEFCNkUgLyogUHJvZmlsZXJPU1JFeGl0U2l0ZS5o
ICovLAorCQkJCTBGMTM5MTI2MTY3NzFDMzAwMDlDQ0IwNyAvKiBQcm9maWxlclByb2ZpbGVkQnl0
ZWNvZGVzLmNwcCAqLywKKwkJCQkwRjEzOTEyNzE2NzcxQzMwMDA5Q0NCMDcgLyogUHJvZmlsZXJQ
cm9maWxlZEJ5dGVjb2Rlcy5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBwcm9maWxlcjsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0zMTY1LDYgKzMxNzcsOCBAQAogCQkJCTBGQjEwNThD
MTY3NTQ4MzMwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGQjEwNThFMTY3NTQ4M0EwMEY4QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRkY2MEFDMjE2NzQwRjgzMDAwMjk3NzkgLyogUmVkdWNlV2hpdGVzcGFj
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxMzkxMkExNjc3MUMzNjAwOUNDQjA3IC8qIFByb2Zp
bGVyQnl0ZWNvZGVTZXF1ZW5jZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYxMzkxMkMxNjc3MUMz
RDAwOUNDQjA3IC8qIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMzc2NSw2ICszNzc5LDggQEAKIAkJCQkwRkIxMDU4QjE2NzU0ODMxMDBGOEFCNkUgLyogUHJv
ZmlsZXJPU1JFeGl0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGQjEwNThEMTY3NTQ4MzcwMEY4
QUI2RSAvKiBQcm9maWxlck9TUkV4aXRTaXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRjYw
QUMzMTY3NDBGODgwMDAyOTc3OSAvKiBSZWR1Y2VXaGl0ZXNwYWNlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGMTM5MTI5MTY3NzFDMzMwMDlDQ0IwNyAvKiBQcm9maWxlckJ5dGVjb2RlU2VxdWVu
Y2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYxMzkxMkIxNjc3MUMzQTAwOUNDQjA3IC8qIFBy
b2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmNwcAkocmV2aXNpb24g
MTM3MjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDQxICsyOCw1MCBAQAogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi9TdHJp
bmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotY29uc3QgY2hhciogYXJyYXlN
b2Rlc1RvU3RyaW5nKEFycmF5TW9kZXMgYXJyYXlNb2RlcykKK3ZvaWQgZHVtcEFycmF5TW9kZXMo
UHJpbnRTdHJlYW0mIG91dCwgQXJyYXlNb2RlcyBhcnJheU1vZGVzKQogewotICAgIGlmICghYXJy
YXlNb2RlcykKLSAgICAgICAgcmV0dXJuICIwOjxlbXB0eT4iOworICAgIGlmICghYXJyYXlNb2Rl
cykgeworICAgICAgICBvdXQucHJpbnQoIjA6PGVtcHR5PiIpOworICAgICAgICByZXR1cm47Cisg
ICAgfQogICAgIAotICAgIGlmIChhcnJheU1vZGVzID09IEFMTF9BUlJBWV9NT0RFUykKLSAgICAg
ICAgcmV0dXJuICJUT1AiOwotCi0gICAgYm9vbCBpc05vbkFycmF5ID0gISEoYXJyYXlNb2RlcyAm
IGFzQXJyYXlNb2RlcyhOb25BcnJheSkpOwotICAgIGJvb2wgaXNOb25BcnJheVdpdGhDb250aWd1
b3VzID0gISEoYXJyYXlNb2RlcyAmIGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhDb250aWd1b3Vz
KSk7Ci0gICAgYm9vbCBpc05vbkFycmF5V2l0aEFycmF5U3RvcmFnZSA9ICEhKGFycmF5TW9kZXMg
JiBhc0FycmF5TW9kZXMoTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlKSk7Ci0gICAgYm9vbCBpc05v
bkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UgPSAhIShhcnJheU1vZGVzICYgYXNBcnJheU1v
ZGVzKE5vbkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpKTsKLSAgICBib29sIGlzQXJyYXkg
PSAhIShhcnJheU1vZGVzICYgYXNBcnJheU1vZGVzKEFycmF5Q2xhc3MpKTsKLSAgICBib29sIGlz
QXJyYXlXaXRoQ29udGlndW91cyA9ICEhKGFycmF5TW9kZXMgJiBhc0FycmF5TW9kZXMoQXJyYXlX
aXRoQ29udGlndW91cykpOwotICAgIGJvb2wgaXNBcnJheVdpdGhBcnJheVN0b3JhZ2UgPSAhIShh
cnJheU1vZGVzICYgYXNBcnJheU1vZGVzKEFycmF5V2l0aEFycmF5U3RvcmFnZSkpOwotICAgIGJv
b2wgaXNBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlID0gISEoYXJyYXlNb2RlcyAmIGFzQXJy
YXlNb2RlcyhBcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlKSk7Ci0gICAgCi0gICAgc3RhdGlj
IGNoYXIgcmVzdWx0WzI1Nl07Ci0gICAgc25wcmludGYoCi0gICAgICAgIHJlc3VsdCwgc2l6ZW9m
KHJlc3VsdCksCi0gICAgICAgICIldTolcyVzJXMlcyVzJXMlcyVzIiwKLSAgICAgICAgYXJyYXlN
b2RlcywKLSAgICAgICAgaXNOb25BcnJheSA/ICJOb25BcnJheSIgOiAiIiwKLSAgICAgICAgaXNO
b25BcnJheVdpdGhDb250aWd1b3VzID8gIk5vbkFycmF5V2l0aENvbnRpZ3VvdXMiIDogIiIsCi0g
ICAgICAgIGlzTm9uQXJyYXlXaXRoQXJyYXlTdG9yYWdlID8gIiBOb25BcnJheVdpdGhBcnJheVN0
b3JhZ2UiIDogIiIsCi0gICAgICAgIGlzTm9uQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSA/
ICJOb25BcnJheVdpdGhTbG93UHV0QXJyYXlTdG9yYWdlIiA6ICIiLAotICAgICAgICBpc0FycmF5
ID8gIkFycmF5Q2xhc3MiIDogIiIsCi0gICAgICAgIGlzQXJyYXlXaXRoQ29udGlndW91cyA/ICJB
cnJheVdpdGhDb250aWd1b3VzIiA6ICIiLAotICAgICAgICBpc0FycmF5V2l0aEFycmF5U3RvcmFn
ZSA/ICIgQXJyYXlXaXRoQXJyYXlTdG9yYWdlIiA6ICIiLAotICAgICAgICBpc0FycmF5V2l0aFNs
b3dQdXRBcnJheVN0b3JhZ2UgPyAiQXJyYXlXaXRoU2xvd1B1dEFycmF5U3RvcmFnZSIgOiAiIik7
CisgICAgaWYgKGFycmF5TW9kZXMgPT0gQUxMX0FSUkFZX01PREVTKSB7CisgICAgICAgIG91dC5w
cmludCgiVE9QIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgCi0gICAgcmV0dXJuIHJl
c3VsdDsKKyAgICBvdXQucHJpbnQoYXJyYXlNb2RlcywgIjoiKTsKKyAgICAKKyAgICBpZiAoYXJy
YXlNb2RlcyAmIGFzQXJyYXlNb2RlcyhOb25BcnJheSkpCisgICAgICAgIG91dC5wcmludCgiTm9u
QXJyYXkiKTsKKyAgICBpZiAoYXJyYXlNb2RlcyAmIGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhJ
bnQzMikpCisgICAgICAgIG91dC5wcmludCgiTm9uQXJyYXlXaXRoSW50MzIiKTsKKyAgICBpZiAo
YXJyYXlNb2RlcyAmIGFzQXJyYXlNb2RlcyhOb25BcnJheVdpdGhEb3VibGUpKQorICAgICAgICBv
dXQucHJpbnQoIk5vbkFycmF5V2l0aERvdWJsZSIpOworICAgIGlmIChhcnJheU1vZGVzICYgYXNB
cnJheU1vZGVzKE5vbkFycmF5V2l0aENvbnRpZ3VvdXMpKQorICAgICAgICBvdXQucHJpbnQoIk5v
bkFycmF5V2l0aENvbnRpZ3VvdXMiKTsKKyAgICBpZiAoYXJyYXlNb2RlcyAmIGFzQXJyYXlNb2Rl
cyhOb25BcnJheVdpdGhBcnJheVN0b3JhZ2UpKQorICAgICAgICBvdXQucHJpbnQoIk5vbkFycmF5
V2l0aEFycmF5U3RvcmFnZSIpOworICAgIGlmIChhcnJheU1vZGVzICYgYXNBcnJheU1vZGVzKE5v
bkFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpKQorICAgICAgICBvdXQucHJpbnQoIk5vbkFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UiKTsKKyAgICBpZiAoYXJyYXlNb2RlcyAmIGFzQXJy
YXlNb2RlcyhBcnJheUNsYXNzKSkKKyAgICAgICAgb3V0LnByaW50KCJBcnJheUNsYXNzIik7Cisg
ICAgaWYgKGFycmF5TW9kZXMgJiBhc0FycmF5TW9kZXMoQXJyYXlXaXRoVW5kZWNpZGVkKSkKKyAg
ICAgICAgb3V0LnByaW50KCJBcnJheVdpdGhVbmRlY2lkZWQiKTsKKyAgICBpZiAoYXJyYXlNb2Rl
cyAmIGFzQXJyYXlNb2RlcyhBcnJheVdpdGhJbnQzMikpCisgICAgICAgIG91dC5wcmludCgiQXJy
YXlXaXRoSW50MzIiKTsKKyAgICBpZiAoYXJyYXlNb2RlcyAmIGFzQXJyYXlNb2RlcyhBcnJheVdp
dGhEb3VibGUpKQorICAgICAgICBvdXQucHJpbnQoIkFycmF5V2l0aERvdWJsZSIpOworICAgIGlm
IChhcnJheU1vZGVzICYgYXNBcnJheU1vZGVzKEFycmF5V2l0aENvbnRpZ3VvdXMpKQorICAgICAg
ICBvdXQucHJpbnQoIkFycmF5V2l0aENvbnRpZ3VvdXMiKTsKKyAgICBpZiAoYXJyYXlNb2RlcyAm
IGFzQXJyYXlNb2RlcyhBcnJheVdpdGhBcnJheVN0b3JhZ2UpKQorICAgICAgICBvdXQucHJpbnQo
IkFycmF5V2l0aEFycmF5U3RvcmFnZSIpOworICAgIGlmIChhcnJheU1vZGVzICYgYXNBcnJheU1v
ZGVzKEFycmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UpKQorICAgICAgICBvdXQucHJpbnQoIkFy
cmF5V2l0aFNsb3dQdXRBcnJheVN0b3JhZ2UiKTsKIH0KIAogQXJyYXlNb2RlcyBBcnJheVByb2Zp
bGU6OnVwZGF0ZWRPYnNlcnZlZEFycmF5TW9kZXMoKSBjb25zdApAQCAtMTA0LDUgKzExMyw1OCBA
QCB2b2lkIEFycmF5UHJvZmlsZTo6Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0CiAgICAgfQogfQogCitD
U3RyaW5nIEFycmF5UHJvZmlsZTo6YnJpZWZEZXNjcmlwdGlvbihDb2RlQmxvY2sqIGNvZGVCbG9j
aykKK3sKKyAgICBjb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oY29kZUJsb2NrKTsKKyAgICAKKyAg
ICBTdHJpbmdQcmludFN0cmVhbSBvdXQ7CisgICAgCisgICAgYm9vbCBoYXNQcmludGVkID0gZmFs
c2U7CisgICAgCisgICAgaWYgKG1fb2JzZXJ2ZWRBcnJheU1vZGVzKSB7CisgICAgICAgIGlmICho
YXNQcmludGVkKQorICAgICAgICAgICAgb3V0LnByaW50KCIsICIpOworICAgICAgICBvdXQucHJp
bnQoQXJyYXlNb2Rlc0R1bXAobV9vYnNlcnZlZEFycmF5TW9kZXMpKTsKKyAgICAgICAgaGFzUHJp
bnRlZCA9IHRydWU7CisgICAgfQorICAgIAorICAgIGlmIChtX3N0cnVjdHVyZUlzUG9seW1vcnBo
aWMpIHsKKyAgICAgICAgaWYgKGhhc1ByaW50ZWQpCisgICAgICAgICAgICBvdXQucHJpbnQoIiwg
Iik7CisgICAgICAgIG91dC5wcmludCgic3RydWN0ID0gVE9QIik7CisgICAgICAgIGhhc1ByaW50
ZWQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAobV9leHBlY3RlZFN0cnVjdHVyZSkgeworICAgICAg
ICBpZiAoaGFzUHJpbnRlZCkKKyAgICAgICAgICAgIG91dC5wcmludCgiLCAiKTsKKyAgICAgICAg
b3V0LnByaW50KCJzdHJ1Y3QgPSAiLCBSYXdQb2ludGVyKG1fZXhwZWN0ZWRTdHJ1Y3R1cmUpKTsK
KyAgICAgICAgaGFzUHJpbnRlZCA9IHRydWU7CisgICAgfQorICAgIAorICAgIGlmIChtX21heVN0
b3JlVG9Ib2xlKSB7CisgICAgICAgIGlmIChoYXNQcmludGVkKQorICAgICAgICAgICAgb3V0LnBy
aW50KCIsICIpOworICAgICAgICBvdXQucHJpbnQoIkhvbGUiKTsKKyAgICAgICAgaGFzUHJpbnRl
ZCA9IHRydWU7CisgICAgfQorICAgIAorICAgIGlmIChtX21heUludGVyY2VwdEluZGV4ZWRBY2Nl
c3NlcykgeworICAgICAgICBpZiAoaGFzUHJpbnRlZCkKKyAgICAgICAgICAgIG91dC5wcmludCgi
LCAiKTsKKyAgICAgICAgb3V0LnByaW50KCJJbnRlcmNlcHQiKTsKKyAgICAgICAgaGFzUHJpbnRl
ZCA9IHRydWU7CisgICAgfQorICAgIAorICAgIGlmIChtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0
dXJlcykgeworICAgICAgICBpZiAoaGFzUHJpbnRlZCkKKyAgICAgICAgICAgIG91dC5wcmludCgi
LCAiKTsKKyAgICAgICAgb3V0LnByaW50KCJPcmlnaW5hbCIpOworICAgICAgICBoYXNQcmludGVk
ID0gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgVU5VU0VEX1BBUkFNKGhhc1ByaW50ZWQpOworICAg
IAorICAgIHJldHVybiBvdXQudG9DU3RyaW5nKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJyYXlQcm9maWxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0FycmF5UHJvZmlsZS5o
CShyZXZpc2lvbiAxMzcyMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQXJy
YXlQcm9maWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDggQEAgaW5saW5lIEFycmF5
TW9kZXMgYXJyYXlNb2RlRnJvbVN0cnVjdHVyZQogICAgIHJldHVybiBhc0FycmF5TW9kZXMoc3Ry
dWN0dXJlLT5pbmRleGluZ1R5cGUoKSk7CiB9CiAKLWNvbnN0IGNoYXIqIGFycmF5TW9kZXNUb1N0
cmluZyhBcnJheU1vZGVzKTsKK3ZvaWQgZHVtcEFycmF5TW9kZXMoUHJpbnRTdHJlYW0mLCBBcnJh
eU1vZGVzKTsKK01BS0VfUFJJTlRfQURBUFRPUihBcnJheU1vZGVzRHVtcCwgQXJyYXlNb2Rlcywg
ZHVtcEFycmF5TW9kZXMpOwogCiBpbmxpbmUgYm9vbCBtZXJnZUFycmF5TW9kZXMoQXJyYXlNb2Rl
cyYgbGVmdCwgQXJyYXlNb2RlcyByaWdodCkKIHsKQEAgLTE3MCw2ICsxNzEsOCBAQCBwdWJsaWM6
CiAgICAgCiAgICAgYm9vbCB1c2VzT3JpZ2luYWxBcnJheVN0cnVjdHVyZXMoKSBjb25zdCB7IHJl
dHVybiBtX3VzZXNPcmlnaW5hbEFycmF5U3RydWN0dXJlczsgfQogICAgIAorICAgIENTdHJpbmcg
YnJpZWZEZXNjcmlwdGlvbihDb2RlQmxvY2sqKTsKKyAgICAKIHByaXZhdGU6CiAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMzcyMjYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRPcChQcmlu
dFN0cmUKICAgICBpbnQgcjEgPSAoKytpdCktPnUub3BlcmFuZDsKICAgICBpbnQgaWQwID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgb3V0LnByaW50ZigiWyU0ZF0gJXNcdCAlcywgJXMsICVzIiwg
bG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwgcmVnaXN0ZXJOYW1l
KGV4ZWMsIHIxKS5kYXRhKCksIGlkTmFtZShpZDAsIG1faWRlbnRpZmllcnNbaWQwXSkuZGF0YSgp
KTsKLSAgICBpdCArPSA1OworICAgIGl0ICs9IDQ7IC8vIEluY3JlbWVudCB1cCB0byB0aGUgdmFs
dWUgcHJvZmlsZXIuCiB9CiAKICNpZiBFTkFCTEUoSklUKSB8fCBFTkFCTEUoTExJTlQpIC8vIHVu
dXNlZCBpbiBzb21lIGNvbmZpZ3VyYXRpb25zCkBAIC0zNDksOCArMzQ5LDcgQEAgdm9pZCBDb2Rl
QmxvY2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKAogI2lmIEVOQUJMRShMTElOVCkKICAgICBp
ZiAoZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNv
ZGUpID09IG9wX2dldF9hcnJheV9sZW5ndGgpCiAgICAgICAgIG91dC5wcmludGYoIiBsbGludChh
cnJheV9sZW5ndGgpIik7Ci0gICAgZWxzZSB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgZWxzZSBpZiAoU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkgewogICAg
ICAgICBvdXQucHJpbnRmKCIgbGxpbnQoIik7CiAgICAgICAgIGR1bXBTdHJ1Y3R1cmUob3V0LCAi
c3RydWN0IiwgZXhlYywgc3RydWN0dXJlLCBpZGVudCk7CiAgICAgICAgIG91dC5wcmludGYoIiki
KTsKQEAgLTM1OSwxMSArMzU4LDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNo
ZVN0YXR1cygKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgaWYgKG51bWJlck9mU3RydWN0dXJlU3R1
YkluZm9zKCkpIHsKLSAgICAgICAgb3V0LnByaW50ZigiIGppdCgiKTsKICAgICAgICAgU3RydWN0
dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gZ2V0U3R1YkluZm8obG9jYXRpb24pOwotICAgICAgICBp
ZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgICAgICBvdXQucHJpbnRmKCJub3Qgc2VlbiIpOwot
ICAgICAgICBlbHNlIHsKKyAgICAgICAgaWYgKHN0dWJJbmZvLnNlZW4pIHsKKyAgICAgICAgICAg
IG91dC5wcmludGYoIiBqaXQoIik7CisgICAgICAgICAgICAKICAgICAgICAgICAgIFN0cnVjdHVy
ZSogYmFzZVN0cnVjdHVyZSA9IDA7CiAgICAgICAgICAgICBTdHJ1Y3R1cmUqIHByb3RvdHlwZVN0
cnVjdHVyZSA9IDA7CiAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSAwOwpAQCAt
NDQ5LDggKzQ0Nyw4IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludEdldEJ5SWRDYWNoZVN0YXR1cygK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgb3V0LnByaW50ZigiXSIpOwogICAg
ICAgICAgICAgfQorICAgICAgICAgICAgb3V0LnByaW50ZigiKSIpOwogICAgICAgICB9Ci0gICAg
ICAgIG91dC5wcmludGYoIikiKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTQ2OSwxNiArNDY3LDEz
IEBAIHZvaWQgQ29kZUJsb2NrOjpwcmludENhbGxPcChQcmludFN0cmVhbSYKICAgICAgICAgICAg
ICAgICAiIGxsaW50KCVwLCBleGVjICVwKSIsCiAgICAgICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxh
c3RTZWVuQ2FsbGVlLT5leGVjdXRhYmxlKCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IG91dC5wcmludGYoIiBsbGludChub3Qgc2V0KSIpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICBpZiAobnVtYmVyT2ZDYWxsTGlua0luZm9zKCkpIHsKICAgICAg
ICAgICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IGdldENhbGxMaW5rSW5mbyhsb2NhdGlvbikubGFz
dFNlZW5DYWxsZWUuZ2V0KCk7CiAgICAgICAgICAgICBpZiAodGFyZ2V0KQogICAgICAgICAgICAg
ICAgIG91dC5wcmludGYoIiBqaXQoJXAsIGV4ZWMgJXApIiwgdGFyZ2V0LCB0YXJnZXQtPmV4ZWN1
dGFibGUoKSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb3V0LnByaW50Zigi
IGppdChub3Qgc2V0KSIpOwogICAgICAgICB9CiAjZW5kaWYKICAgICB9CkBAIC02NjcsNiArNjYy
LDMyIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAgICBvdXQu
cHJpbnRmKCJcbiIpOwogfQogCit2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsaW5nKFBy
aW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0aW9uKiYgaXQpCit7CisgICAgKytpdDsKKyNp
ZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGl0LT51
LnByb2ZpbGUtPmJyaWVmRGVzY3JpcHRpb24oKTsKKyAgICBpZiAoIWRlc2NyaXB0aW9uLmxlbmd0
aCgpKQorICAgICAgICByZXR1cm47CisgICAgb3V0LnByaW50KCIgICAgIiwgZGVzY3JpcHRpb24p
OworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0ob3V0KTsKKyNlbmRpZgorfQorCit2b2lkIENvZGVC
bG9jazo6ZHVtcEFycmF5UHJvZmlsaW5nKFByaW50U3RyZWFtJiBvdXQsIGNvbnN0IEluc3RydWN0
aW9uKiYgaXQpCit7CisgICAgKytpdDsKKyNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAg
Q1N0cmluZyBkZXNjcmlwdGlvbiA9IGl0LT51LmFycmF5UHJvZmlsZS0+YnJpZWZEZXNjcmlwdGlv
bih0aGlzKTsKKyAgICBpZiAoIWRlc2NyaXB0aW9uLmxlbmd0aCgpKQorICAgICAgICByZXR1cm47
CisgICAgb3V0LnByaW50KCIgICAgIiwgZGVzY3JpcHRpb24pOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ob3V0KTsKKyNlbmRpZgorfQorCiB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFBy
aW50U3RyZWFtJiBvdXQsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSW5zdHJ1Y3Rpb24qIGJlZ2lu
LCBjb25zdCBJbnN0cnVjdGlvbiomIGl0KQogewogICAgIGludCBsb2NhdGlvbiA9IGl0IC0gYmVn
aW47CkBAIC05NTYsOCArOTc3LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmlu
dFN0cmVhbQogICAgICAgICAgICAgaW50IGlkMCA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAg
ICAgICAgaW50IHJlc29sdmVJbmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBv
dXQucHJpbnRmKCJbJTRkXSByZXNvbHZlXHRcdCAlcywgJXMsICVkIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50aWZpZXJzW2lkMF0p
LmRhdGEoKSwgcmVzb2x2ZUluZm8pOworICAgICAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91
dCwgaXQpOwogICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBs
b2NhdGlvbik7Ci0gICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9pbml0X2dsb2JhbF9jb25zdF9ub3A6IHsKQEAgLTk5OCw4ICsx
MDE5LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbQogICAgICAg
ICAgICAgaW50IHJlc29sdmVJbmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBp
bnQgcHV0VG9CYXNlSW5mbyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgb3V0LnBy
aW50ZigiWyU0ZF0gcmVzb2x2ZV9iYXNlJXNcdCAlcywgJXMsICVkLCAlZCIsIGxvY2F0aW9uLCBp
c1N0cmljdCA/ICJfc3RyaWN0IiA6ICIiLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
aWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlc29sdmVJbmZvLCBwdXRU
b0Jhc2VJbmZvKTsKKyAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0KTsKICAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwot
ICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0czogewpAQCAtMTAxNiw4ICsxMDM3LDggQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbQogICAgICAgICAgICAgaW50
IHJlc29sdmVJbmZvID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcHV0VG9C
YXNlSW5mbyA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0
ZF0gcmVzb2x2ZV93aXRoX2Jhc2UgJXMsICVzLCAlcywgJWQsICVkIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwg
aWROYW1lKGlkMCwgbV9pZGVudGlmaWVyc1tpZDBdKS5kYXRhKCksIHJlc29sdmVJbmZvLCBwdXRU
b0Jhc2VJbmZvKTsKKyAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0KTsKICAg
ICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwot
ICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IGNhc2Ugb3BfcmVzb2x2ZV93aXRoX3RoaXM6IHsKQEAgLTEwMjYsOCArMTA0Nyw4IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAgICAgICAgICAgIGludCBpZDAg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIGludCByZXNvbHZlSW5mbyA9ICgrK2l0
KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgb3V0LnByaW50ZigiWyU0ZF0gcmVzb2x2ZV93aXRo
X3RoaXMgJXMsICVzLCAlcywgJWQiLCBsb2NhdGlvbiwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIwKS5k
YXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMSkuZGF0YSgpLCBpZE5hbWUoaWQwLCBtX2lkZW50
aWZpZXJzW2lkMF0pLmRhdGEoKSwgcmVzb2x2ZUluZm8pOworICAgICAgICAgICAgZHVtcFZhbHVl
UHJvZmlsaW5nKG91dCwgaXQpOwogICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5l
d0xpbmUob3V0LCBsb2NhdGlvbik7Ci0gICAgICAgICAgICBpdCsrOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CkBAIC0xMDQ2LDYgKzEw
NjcsNyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcEJ5dGVjb2RlKFByaW50U3RyZWFtCiAgICAgICAg
IGNhc2Ugb3BfZ2V0X3N0cmluZ19sZW5ndGg6IHsKICAgICAgICAgICAgIHByaW50R2V0QnlJZE9w
KG91dCwgZXhlYywgbG9jYXRpb24sIGl0KTsKICAgICAgICAgICAgIHByaW50R2V0QnlJZENhY2hl
U3RhdHVzKG91dCwgZXhlYywgbG9jYXRpb24pOworICAgICAgICAgICAgZHVtcFZhbHVlUHJvZmls
aW5nKG91dCwgaXQpOwogICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUo
b3V0LCBsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTExMiw5
ICsxMTM0LDkgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbQogICAg
ICAgICAgICAgaW50IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIg
PSAoKytpdCktPnUub3BlcmFuZDsKICAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGdldF9i
eV92YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0
YSgpLCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIy
KS5kYXRhKCkpOworICAgICAgICAgICAgZHVtcEFycmF5UHJvZmlsaW5nKG91dCwgaXQpOworICAg
ICAgICAgICAgZHVtcFZhbHVlUHJvZmlsaW5nKG91dCwgaXQpOwogICAgICAgICAgICAgZHVtcEJ5
dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBsb2NhdGlvbik7Ci0gICAgICAgICAgICBpdCsr
OwotICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDogewpAQCAtMTEyMiw5ICsxMTQ0LDkgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBCeXRlY29kZShQcmludFN0cmVhbQogICAgICAgICAgICAgaW50
IHIxID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBpbnQgcjIgPSAoKytpdCktPnUu
b3BlcmFuZDsKICAgICAgICAgICAgIG91dC5wcmludGYoIlslNGRdIGdldF9hcmd1bWVudF9ieV92
YWxcdCAlcywgJXMsICVzIiwgbG9jYXRpb24sIHJlZ2lzdGVyTmFtZShleGVjLCByMCkuZGF0YSgp
LCByZWdpc3Rlck5hbWUoZXhlYywgcjEpLmRhdGEoKSwgcmVnaXN0ZXJOYW1lKGV4ZWMsIHIyKS5k
YXRhKCkpOwotICAgICAgICAgICAgZHVtcEJ5dGVjb2RlQ29tbWVudEFuZE5ld0xpbmUob3V0LCBs
b2NhdGlvbik7Ci0gICAgICAgICAgICArK2l0OwogICAgICAgICAgICAgKytpdDsKKyAgICAgICAg
ICAgIGR1bXBWYWx1ZVByb2ZpbGluZyhvdXQsIGl0KTsKKyAgICAgICAgICAgIGR1bXBCeXRlY29k
ZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9nZXRfYnlfcG5hbWU6IHsKQEAgLTExNDMsOCArMTE2
NSw4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wQnl0ZWNvZGUoUHJpbnRTdHJlYW0KICAgICAgICAg
ICAgIGludCByMSA9ICgrK2l0KS0+dS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHIyID0gKCsr
aXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBvdXQucHJpbnRmKCJbJTRkXSBwdXRfYnlfdmFs
XHQgJXMsICVzLCAlcyIsIGxvY2F0aW9uLCByZWdpc3Rlck5hbWUoZXhlYywgcjApLmRhdGEoKSwg
cmVnaXN0ZXJOYW1lKGV4ZWMsIHIxKS5kYXRhKCksIHJlZ2lzdGVyTmFtZShleGVjLCByMikuZGF0
YSgpKTsKKyAgICAgICAgICAgIGR1bXBBcnJheVByb2ZpbGluZyhvdXQsIGl0KTsKICAgICAgICAg
ICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91dCwgbG9jYXRpb24pOwotICAgICAg
ICAgICAgKytpdDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfZGVsX2J5X3ZhbDogewpAQCAtMTM4Niw4ICsxNDA4LDggQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXBCeXRlY29kZShQcmludFN0cmVhbQogICAgICAgICBjYXNlIG9wX2NhbGxfcHV0X3Jlc3VsdDog
ewogICAgICAgICAgICAgaW50IHIwID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBv
dXQucHJpbnRmKCJbJTRkXSBjYWxsX3B1dF9yZXN1bHRcdFx0ICVzIiwgbG9jYXRpb24sIHJlZ2lz
dGVyTmFtZShleGVjLCByMCkuZGF0YSgpKTsKKyAgICAgICAgICAgIGR1bXBWYWx1ZVByb2ZpbGlu
ZyhvdXQsIGl0KTsKICAgICAgICAgICAgIGR1bXBCeXRlY29kZUNvbW1lbnRBbmROZXdMaW5lKG91
dCwgbG9jYXRpb24pOwotICAgICAgICAgICAgaXQrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcmV0X29iamVjdF9vcl90aGlzOiB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMzcyMjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExODcsNiArMTE4Nyw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBlbnVt
IENhY2hlRHVtcE1vZGUgeyBEdW1wQ2FjaGVzLCBEb250RHVtcENhY2hlcyB9OwogICAgICAgICB2
b2lkIHByaW50Q2FsbE9wKFByaW50U3RyZWFtJiwgRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBj
b25zdCBJbnN0cnVjdGlvbiomLCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVEdW1wTW9kZSk7CiAgICAg
ICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoUHJpbnRTdHJlYW0mLCBFeGVjU3RhdGUqLCBpbnQgbG9j
YXRpb24sIGNvbnN0IEluc3RydWN0aW9uKiYsIGNvbnN0IGNoYXIqIG9wKTsKKyAgICAgICAgdm9p
ZCBkdW1wVmFsdWVQcm9maWxpbmcoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0cnVjdGlvbiomKTsK
KyAgICAgICAgdm9pZCBkdW1wQXJyYXlQcm9maWxpbmcoUHJpbnRTdHJlYW0mLCBjb25zdCBJbnN0
cnVjdGlvbiomKTsKKwogICAgICAgICB2b2lkIHZpc2l0U3RydWN0dXJlcyhTbG90VmlzaXRvciYs
IEluc3RydWN0aW9uKiB2UEMpOwogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgJKHJldmlz
aW9uIDEzNzIyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2Zp
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgIlN0cnVjdHVy
ZS5oIgogI2luY2x1ZGUgIldyaXRlQmFycmllci5oIgogI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVh
bS5oPgorI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVhbS5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtMTEwLDYgKzExMSwyMCBAQCBzdHJ1Y3QgVmFsdWVQcm9maWxlQmFzZSB7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCisgICAgQ1N0cmluZyBicmllZkRlc2NyaXB0
aW9uKCkKKyAgICB7CisgICAgICAgIGNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgICAg
ICAKKyAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OworICAgICAgICAKKyAgICAgICAgaWYg
KG1fc2luZ2xldG9uVmFsdWVJc1RvcCkKKyAgICAgICAgICAgIG91dC5wcmludCgicHJlZGljdGlu
ZyAiLCBTcGVjdWxhdGlvbkR1bXAobV9wcmVkaWN0aW9uKSk7CisgICAgICAgIGVsc2UgaWYgKG1f
c2luZ2xldG9uVmFsdWUpCisgICAgICAgICAgICBvdXQucHJpbnQoInByZWRpY3RpbmcgIiwgbV9z
aW5nbGV0b25WYWx1ZSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gb3V0LnRvQ1N0cmluZygp
OworICAgIH0KKyAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkKICAgICB7CiAg
ICAgICAgIG91dC5wcmludCgic2FtcGxlcyA9ICIsIHRvdGFsTnVtYmVyT2ZTYW1wbGVzKCksICIg
cHJlZGljdGlvbiA9ICIsIFNwZWN1bGF0aW9uRHVtcChtX3ByZWRpY3Rpb24pKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCShyZXZpc2lvbiAx
MzcyMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzc0LDcgKzM3NCw3IEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsK
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICB7CiAgICAgICAgIG91
dC5wcmludCgKLSAgICAgICAgICAgICIoIiwgU3BlY3VsYXRpb25EdW1wKG1fdHlwZSksICIsICIs
IGFycmF5TW9kZXNUb1N0cmluZyhtX2FycmF5TW9kZXMpLCAiLCAiLAorICAgICAgICAgICAgIigi
LCBTcGVjdWxhdGlvbkR1bXAobV90eXBlKSwgIiwgIiwgQXJyYXlNb2Rlc0R1bXAobV9hcnJheU1v
ZGVzKSwgIiwgIiwKICAgICAgICAgICAgIG1fY3VycmVudEtub3duU3RydWN0dXJlLCAiLCAiLCBt
X2Z1dHVyZVBvc3NpYmxlU3RydWN0dXJlKTsKICAgICAgICAgaWYgKCEhbV92YWx1ZSkKICAgICAg
ICAgICAgIG91dC5wcmludCgiLCAiLCBtX3ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMzcyMjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzY2Niw2ICszNjY2LDExIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
Q29kZUJsb2NrKCkKIHsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1faW5saW5lU3RhY2tU
b3AtPm1fY29kZUJsb2NrOwogICAgIAorICAgIGlmIChtX2dyYXBoLm1fY29tcGlsYXRpb24pIHsK
KyAgICAgICAgbV9ncmFwaC5tX2NvbXBpbGF0aW9uLT5hZGRQcm9maWxlZEJ5dGVjb2RlcygKKyAg
ICAgICAgICAgICptX2dsb2JhbERhdGEtPm1fcGVyQnl0ZWNvZGVQcm9maWxlciwgbV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrKTsKKyAgICB9CisgICAgCiAjaWYgREZHX0VOQUJMRShE
RUJVR19WRVJCT1NFKQogICAgIGRhdGFMb2coCiAgICAgICAgICJQYXJzaW5nICIsICpjb2RlQmxv
Y2ssCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMzcyMjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
Miw4ICs2NDIsMTAgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgog
ICAgIAogICAgIGlmIChPcHRpb25zOjpzaG93RGlzYXNzZW1ibHkoKSB8fCBtX2dsb2JhbERhdGEt
Pm1fcGVyQnl0ZWNvZGVQcm9maWxlcikKICAgICAgICAgbV9kaXNhc3NlbWJsZXIgPSBhZG9wdFB0
cihuZXcgSklURGlzYXNzZW1ibGVyKG1fY29kZUJsb2NrKSk7Ci0gICAgaWYgKG1fZ2xvYmFsRGF0
YS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyKQorICAgIGlmIChtX2dsb2JhbERhdGEtPm1fcGVyQnl0
ZWNvZGVQcm9maWxlcikgewogICAgICAgICBtX2NvbXBpbGF0aW9uID0gbV9nbG9iYWxEYXRhLT5t
X3BlckJ5dGVjb2RlUHJvZmlsZXItPm5ld0NvbXBpbGF0aW9uKG1fY29kZUJsb2NrLCBQcm9maWxl
cjo6QmFzZWxpbmUpOworICAgICAgICBtX2NvbXBpbGF0aW9uLT5hZGRQcm9maWxlZEJ5dGVjb2Rl
cygqbV9nbG9iYWxEYXRhLT5tX3BlckJ5dGVjb2RlUHJvZmlsZXIsIG1fY29kZUJsb2NrKTsKKyAg
ICB9CiAgICAgCiAgICAgaWYgKG1fZGlzYXNzZW1ibGVyKQogICAgICAgICBtX2Rpc2Fzc2VtYmxl
ci0+c2V0U3RhcnRPZkNvZGUobGFiZWwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5
dGVjb2RlU2VxdWVuY2UuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJQcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuaCIKKworI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiT3BlcmFu
ZHMuaCIKKyNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBQcm9maWxlciB7CisKK0J5dGVjb2RlU2VxdWVuY2U6OkJ5dGVjb2RlU2Vx
dWVuY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2spCit7CisgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0
OworICAgIAorI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgY29kZUJsb2NrLT5udW1iZXJPZkFyZ3VtZW50VmFsdWVQcm9maWxlcygpOyArK2kp
IHsKKyAgICAgICAgQ1N0cmluZyBkZXNjcmlwdGlvbiA9IGNvZGVCbG9jay0+dmFsdWVQcm9maWxl
Rm9yQXJndW1lbnQoaSktPmJyaWVmRGVzY3JpcHRpb24oKTsKKyAgICAgICAgaWYgKCFkZXNjcmlw
dGlvbi5sZW5ndGgoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBvdXQucmVzZXQo
KTsKKyAgICAgICAgb3V0LnByaW50KCJhcmciLCBpLCAiIChyIiwgYXJndW1lbnRUb09wZXJhbmQo
aSksICIpOiAiLCBkZXNjcmlwdGlvbik7CisgICAgICAgIG1faGVhZGVyLmFwcGVuZChvdXQudG9D
U3RyaW5nKCkpOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAg
CisgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gMDsgYnl0ZWNvZGVJbmRleCA8IGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOykgeworICAgICAgICBvdXQucmVzZXQoKTsK
KyAgICAgICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4KTsKKyAg
ICAgICAgbV9zZXF1ZW5jZS5hcHBlbmQoQnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCwgY29kZUJsb2Nr
LT5nbG9iYWxEYXRhKCktPmludGVycHJldGVyLT5nZXRPcGNvZGVJRChjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpW2J5dGVjb2RlSW5kZXhdLnUub3Bjb2RlKSwgb3V0LnRvQ1N0cmluZygpKSk7Cisg
ICAgICAgIGJ5dGVjb2RlSW5kZXggKz0gb3Bjb2RlTGVuZ3RoKAorICAgICAgICAgICAgY29kZUJs
b2NrLT5nbG9iYWxEYXRhKCktPmludGVycHJldGVyLT5nZXRPcGNvZGVJRCgKKyAgICAgICAgICAg
ICAgICBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVjb2RlSW5kZXhdLnUub3Bjb2RlKSk7
CisgICAgfQorfQorCitCeXRlY29kZVNlcXVlbmNlOjp+Qnl0ZWNvZGVTZXF1ZW5jZSgpCit7Cit9
CisKK3Vuc2lnbmVkIEJ5dGVjb2RlU2VxdWVuY2U6OmluZGV4Rm9yQnl0ZWNvZGVJbmRleCh1bnNp
Z25lZCBieXRlY29kZUluZGV4KSBjb25zdAoreworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Qnl0
ZWNvZGUsIHVuc2lnbmVkLCBnZXRCeXRlY29kZUluZGV4Rm9yQnl0ZWNvZGU+KGNvbnN0X2Nhc3Q8
Qnl0ZWNvZGUqPihtX3NlcXVlbmNlLmJlZ2luKCkpLCBtX3NlcXVlbmNlLnNpemUoKSwgYnl0ZWNv
ZGVJbmRleCkgLSBtX3NlcXVlbmNlLmJlZ2luKCk7Cit9CisKK2NvbnN0IEJ5dGVjb2RlJiBCeXRl
Y29kZVNlcXVlbmNlOjpmb3JCeXRlY29kZUluZGV4KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGF0KGluZGV4Rm9yQnl0ZWNvZGVJbmRleChieXRlY29kZUluZGV4
KSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVTZXF1ZW5jZTo6YWRkU2VxdWVuY2VQcm9wZXJ0aWVzKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHJlc3VsdCkgY29uc3QKK3sKKyAgICBKU0FycmF5KiBo
ZWFkZXIgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2hlYWRlci5zaXplKCk7ICsraSkKKyAgICAgICAgaGVhZGVyLT5wdXREaXJl
Y3RJbmRleChleGVjLCBpLCBqc1N0cmluZyhleGVjLCBTdHJpbmc6OmZyb21VVEY4KG1faGVhZGVy
W2ldKSkpOworICAgIHJlc3VsdC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+
cHJvcGVydHlOYW1lcygpLmhlYWRlciwgaGVhZGVyKTsKKyAgICAKKyAgICBKU0FycmF5KiBzZXF1
ZW5jZSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgMCk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fc2VxdWVuY2Uuc2l6ZSgpOyArK2kpCisgICAgICAgIHNlcXVlbmNlLT5wdXRE
aXJlY3RJbmRleChleGVjLCBpLCBtX3NlcXVlbmNlW2ldLnRvSlMoZXhlYykpOworICAgIHJlc3Vs
dC0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5
dGVjb2RlLCBzZXF1ZW5jZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpQcm9maWxlcgor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNl
cXVlbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1ZW5jZS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlX2gKKyNkZWZpbmUgUHJvZmls
ZXJCeXRlY29kZVNlcXVlbmNlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJQ
cm9maWxlckJ5dGVjb2RlLmgiCisjaW5jbHVkZSA8d3RmL1ByaW50U3RyZWFtLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIENvZGVC
bG9jazsKKworbmFtZXNwYWNlIFByb2ZpbGVyIHsKKworY2xhc3MgQnl0ZWNvZGVTZXF1ZW5jZSB7
CitwdWJsaWM6CisgICAgQnl0ZWNvZGVTZXF1ZW5jZShDb2RlQmxvY2sqKTsKKyAgICB+Qnl0ZWNv
ZGVTZXF1ZW5jZSgpOworICAgIAorICAgIC8vIE5vdGUgdGhhdCB0aGlzIGRhdGEgc3RydWN0dXJl
IGlzIG5vdCBpbmRleGVkIGJ5IGJ5dGVjb2RlIGluZGV4LgorICAgIHVuc2lnbmVkIHNpemUoKSBj
b25zdCB7IHJldHVybiBtX3NlcXVlbmNlLnNpemUoKTsgfQorICAgIGNvbnN0IEJ5dGVjb2RlJiBh
dCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3NlcXVlbmNlW2ldOyB9CisKKyAgICB1bnNp
Z25lZCBpbmRleEZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJbmRleCkgY29uc3Q7
CisgICAgY29uc3QgQnl0ZWNvZGUmIGZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICB2b2lkIGFkZFNlcXVlbmNlUHJvcGVydGll
cyhFeGVjU3RhdGUqLCBKU09iamVjdCopIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBWZWN0
b3I8Q1N0cmluZz4gbV9oZWFkZXI7CisgICAgVmVjdG9yPEJ5dGVjb2RlPiBtX3NlcXVlbmNlOwor
fTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlByb2ZpbGVyCisKKyNlbmRpZiAvLyBQcm9maWxl
ckJ5dGVjb2RlU2VxdWVuY2VfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZXJCeXRlY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5jcHAJKHJldmlzaW9uIDEzNzIyNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rlcy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2LDMyICsyNiwyNCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlByb2ZpbGVyQnl0ZWNvZGVzLmgiCiAKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmludFN0cmVh
bS5oPgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFByb2ZpbGVyIHsKIAotQnl0ZWNvZGVz
OjpCeXRlY29kZXMoCi0gICAgc2l6ZV90IGlkLCBjb25zdCBTdHJpbmcmIGluZmVycmVkTmFtZSwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VDb2RlLCBDb2RlQmxvY2tIYXNoIGhhc2gpCi0gICAgOiBtX2lk
KGlkKQotICAgICwgbV9pbmZlcnJlZE5hbWUoaW5mZXJyZWROYW1lKQotICAgICwgbV9zb3VyY2VD
b2RlKHNvdXJjZUNvZGUpCi0gICAgLCBtX2hhc2goaGFzaCkKK0J5dGVjb2Rlczo6Qnl0ZWNvZGVz
KHNpemVfdCBpZCwgQ29kZUJsb2NrKiBjb2RlQmxvY2spCisgICAgOiBCeXRlY29kZVNlcXVlbmNl
KGNvZGVCbG9jaykKKyAgICAsIG1faWQoaWQpCisgICAgLCBtX2luZmVycmVkTmFtZShjb2RlQmxv
Y2stPmluZmVycmVkTmFtZSgpKQorICAgICwgbV9zb3VyY2VDb2RlKGNvZGVCbG9jay0+c291cmNl
Q29kZUZvclRvb2xzKCkpCisgICAgLCBtX2hhc2goY29kZUJsb2NrLT5oYXNoKCkpCisgICAgLCBt
X2luc3RydWN0aW9uQ291bnQoY29kZUJsb2NrLT5pbnN0cnVjdGlvbkNvdW50KCkpCiB7CiB9CiAK
IEJ5dGVjb2Rlczo6fkJ5dGVjb2RlcygpIHsgfQogCi11bnNpZ25lZCBCeXRlY29kZXM6OmluZGV4
Rm9yQnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdAotewotICAgIHJl
dHVybiBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGUsIHVuc2lnbmVkLCBnZXRCeXRlY29kZUluZGV4Rm9y
Qnl0ZWNvZGU+KGNvbnN0X2Nhc3Q8Qnl0ZWNvZGUqPihtX2J5dGVjb2RlLmJlZ2luKCkpLCBtX2J5
dGVjb2RlLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkgLSBtX2J5dGVjb2RlLmJlZ2luKCk7Ci19Ci0K
LWNvbnN0IEJ5dGVjb2RlJiBCeXRlY29kZXM6OmZvckJ5dGVjb2RlSW5kZXgodW5zaWduZWQgYnl0
ZWNvZGVJbmRleCkgY29uc3QKLXsKLSAgICByZXR1cm4gYXQoaW5kZXhGb3JCeXRlY29kZUluZGV4
KGJ5dGVjb2RlSW5kZXgpKTsKLX0KLQogdm9pZCBCeXRlY29kZXM6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQoIiMiLCBtX2hhc2gsICIoIiwgbV9pZCwgIiki
KTsKQEAgLTY1LDExICs1Nyw4IEBAIEpTVmFsdWUgQnl0ZWNvZGVzOjp0b0pTKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICByZXN1bHQtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnBy
b3BlcnR5TmFtZXMoKS5pbmZlcnJlZE5hbWUsIGpzU3RyaW5nKGV4ZWMsIG1faW5mZXJyZWROYW1l
KSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkuc291cmNlQ29kZSwganNTdHJpbmcoZXhlYywgbV9zb3VyY2VDb2RlKSk7CiAg
ICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuaGFzaCwganNTdHJpbmcoZXhlYywgU3RyaW5nOjpmcm9tVVRGOCh0b0NTdHJpbmcobV9o
YXNoKSkpKTsKLSAgICAKLSAgICBKU0FycmF5KiBzdHJlYW0gPSBjb25zdHJ1Y3RFbXB0eUFycmF5
KGV4ZWMsIDApOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2J5dGVjb2RlLnNpemUo
KTsgKytpKQotICAgICAgICBzdHJlYW0tPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIG1fYnl0ZWNv
ZGVbaV0udG9KUyhleGVjKSk7Ci0gICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGUsIHN0cmVhbSk7CisgICAgcmVzdWx0
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaW5z
dHJ1Y3Rpb25Db3VudCwganNOdW1iZXIobV9pbnN0cnVjdGlvbkNvdW50KSk7CisgICAgYWRkU2Vx
dWVuY2VQcm9wZXJ0aWVzKGV4ZWMsIHJlc3VsdCk7CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckJ5dGVjb2Rlcy5oCShyZXZpc2lvbiAxMzcyMjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMzEgKzI4
LDIzIEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNoLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5o
IgotI2luY2x1ZGUgIlByb2ZpbGVyQnl0ZWNvZGUuaCIKKyNpbmNsdWRlICJQcm9maWxlckJ5dGVj
b2RlU2VxdWVuY2UuaCIKICNpbmNsdWRlIDx3dGYvUHJpbnRTdHJlYW0uaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxl
ciB7CiAKLWNsYXNzIEJ5dGVjb2RlcyB7CitjbGFzcyBCeXRlY29kZXMgOiBwdWJsaWMgQnl0ZWNv
ZGVTZXF1ZW5jZSB7CiBwdWJsaWM6Ci0gICAgQnl0ZWNvZGVzKHNpemVfdCBpZCwgY29uc3QgU3Ry
aW5nJiBpbmZlcnJlZE5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSwgQ29kZUJsb2NrSGFz
aCk7CisgICAgQnl0ZWNvZGVzKHNpemVfdCBpZCwgQ29kZUJsb2NrKik7CiAgICAgfkJ5dGVjb2Rl
cygpOwogICAgIAotICAgIHZvaWQgYXBwZW5kKGNvbnN0IEJ5dGVjb2RlJiBieXRlY29kZSkgeyBt
X2J5dGVjb2RlLmFwcGVuZChieXRlY29kZSk7IH0KLSAgICAKICAgICBzaXplX3QgaWQoKSBjb25z
dCB7IHJldHVybiBtX2lkOyB9CiAgICAgY29uc3QgU3RyaW5nJiBpbmZlcnJlZE5hbWUoKSBjb25z
dCB7IHJldHVybiBtX2luZmVycmVkTmFtZTsgfQogICAgIGNvbnN0IFN0cmluZyYgc291cmNlQ29k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQ29kZTsgfQorICAgIHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0KICAgICBDb2Rl
QmxvY2tIYXNoIGhhc2goKSBjb25zdCB7IHJldHVybiBtX2hhc2g7IH0KLSAgICAKLSAgICAvLyBO
b3RlIHRoYXQgdGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBub3QgaW5kZXhlZCBieSBieXRlY29kZSBp
bmRleC4KLSAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9ieXRlY29kZS5zaXpl
KCk7IH0KLSAgICBjb25zdCBCeXRlY29kZSYgYXQodW5zaWduZWQgaSkgY29uc3QgeyByZXR1cm4g
bV9ieXRlY29kZVtpXTsgfQotICAgIAotICAgIHVuc2lnbmVkIGluZGV4Rm9yQnl0ZWNvZGVJbmRl
eCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdDsKLSAgICBjb25zdCBCeXRlY29kZSYgZm9y
Qnl0ZWNvZGVJbmRleCh1bnNpZ25lZCBieXRlY29kZUluZGV4KSBjb25zdDsKLSAgICAKKwogICAg
IHZvaWQgZHVtcChQcmludFN0cmVhbSYpIGNvbnN0OwogICAgIAogICAgIEpTVmFsdWUgdG9KUyhF
eGVjU3RhdGUqKSBjb25zdDsKQEAgLTYyLDcgKzU0LDcgQEAgcHJpdmF0ZToKICAgICBTdHJpbmcg
bV9pbmZlcnJlZE5hbWU7CiAgICAgU3RyaW5nIG1fc291cmNlQ29kZTsKICAgICBDb2RlQmxvY2tI
YXNoIG1faGFzaDsKLSAgICBWZWN0b3I8Qnl0ZWNvZGU+IG1fYnl0ZWNvZGU7CisgICAgdW5zaWdu
ZWQgbV9pbnN0cnVjdGlvbkNvdW50OwogfTsKIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OlByb2Zp
bGVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyQ29tcGlsYXRpb24uY3BwCShyZXZpc2lvbiAxMzcyMjYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJQcm9maWxlckNvbXBpbGF0aW9uLmgiCiAKICNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlByb2ZpbGVyRGF0YWJhc2UuaCIK
ICNpbmNsdWRlIDx3dGYvU3RyaW5nUHJpbnRTdHJlYW0uaD4KIAogbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBQcm9maWxlciB7CkBAIC0zOSw2ICs0MCwyMyBAQCBDb21waWxhdGlvbjo6Q29tcGls
YXRpb24oQnl0ZWNvZGVzKiBieXRlCiAKIENvbXBpbGF0aW9uOjp+Q29tcGlsYXRpb24oKSB7IH0K
IAordm9pZCBDb21waWxhdGlvbjo6YWRkUHJvZmlsZWRCeXRlY29kZXMoRGF0YWJhc2UmIGRhdGFi
YXNlLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2spCit7CisgICAgQnl0ZWNvZGVzKiBieXRlY29k
ZXMgPSBkYXRhYmFzZS5lbnN1cmVCeXRlY29kZXNGb3IocHJvZmlsZWRCbG9jayk7CisgICAgCisg
ICAgLy8gRmlyc3QgbWFrZSBzdXJlIHRoYXQgd2UgaGF2ZW4ndCBhbHJlYWR5IGFkZGVkIHByb2Zp
bGVkIGJ5dGVjb2RlcyBmb3IgdGhpcyBjb2RlCisgICAgLy8gYmxvY2suIFdlIGRvIHRoaXMgdXNp
bmcgYW4gTyhOKSBzZWFyY2ggYmVjYXVzZSBJIHN1c3BlY3QgdGhhdCB0aGlzIGxpc3Qgd2lsbAor
ICAgIC8vIHRlbmQgdG8gYmUgZmFpcmx5IHNtYWxsLCBhbmQgdGhlIGFkZGl0aW9uYWwgc3BhY2Ug
Y29zdHMgb2YgaGF2aW5nIGEgSGFzaE1hcC9TZXQKKyAgICAvLyB3b3VsZCBiZSBncmVhdGVyIHRo
YW4gdGhlIHRpbWUgY29zdCBvZiBvY2Nhc2lvbmFsbHkgZG9pbmcgdGhpcyBzZWFyY2guCisgICAg
CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcm9maWxlZEJ5dGVjb2Rlcy5zaXplKCk7IGktLTsp
IHsKKyAgICAgICAgaWYgKG1fcHJvZmlsZWRCeXRlY29kZXNbaV0uYnl0ZWNvZGVzKCkgPT0gYnl0
ZWNvZGVzKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX3Byb2ZpbGVk
Qnl0ZWNvZGVzLmFwcGVuZChQcm9maWxlZEJ5dGVjb2RlcyhieXRlY29kZXMsIHByb2ZpbGVkQmxv
Y2spKTsKK30KKwogdm9pZCBDb21waWxhdGlvbjo6YWRkRGVzY3JpcHRpb24oY29uc3QgQ29tcGls
ZWRCeXRlY29kZSYgY29tcGlsZWRCeXRlY29kZSkKIHsKICAgICBtX2Rlc2NyaXB0aW9ucy5hcHBl
bmQoY29tcGlsZWRCeXRlY29kZSk7CkBAIC03NCw2ICs5MiwxMSBAQCBKU1ZhbHVlIENvbXBpbGF0
aW9uOjp0b0pTKEV4ZWNTdGF0ZSogZXhlCiAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYnl0ZWNvZGVzSUQsIGpzTnVtYmVyKG1f
Ynl0ZWNvZGVzLT5pZCgpKSk7CiAgICAgcmVzdWx0LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY29tcGlsYXRpb25LaW5kLCBqc1N0cmluZyhleGVj
LCBTdHJpbmc6OmZyb21VVEY4KHRvQ1N0cmluZyhtX2tpbmQpKSkpOwogICAgIAorICAgIEpTQXJy
YXkqIHByb2ZpbGVkQnl0ZWNvZGVzID0gY29uc3RydWN0RW1wdHlBcnJheShleGVjLCAwKTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9wcm9maWxlZEJ5dGVjb2Rlcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgcHJvZmlsZWRCeXRlY29kZXMtPnB1dERpcmVjdEluZGV4KGV4ZWMsIGksIG1f
cHJvZmlsZWRCeXRlY29kZXNbaV0udG9KUyhleGVjKSk7CisgICAgcmVzdWx0LT5wdXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvZmlsZWRCeXRlY29k
ZXMsIHByb2ZpbGVkQnl0ZWNvZGVzKTsKKyAgICAKICAgICBKU0FycmF5KiBkZXNjcmlwdGlvbnMg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGV4ZWMsIDApOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2Rlc2NyaXB0aW9ucy5zaXplKCk7ICsraSkKICAgICAgICAgZGVzY3JpcHRpb25zLT5w
dXREaXJlY3RJbmRleChleGVjLCBpLCBtX2Rlc2NyaXB0aW9uc1tpXS50b0pTKGV4ZWMpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29t
cGlsYXRpb24uaAkocmV2aXNpb24gMTM3MjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3By
b2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTIgKzM0
LDE0IEBACiAjaW5jbHVkZSAiUHJvZmlsZXJPU1JFeGl0LmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJP
U1JFeGl0U2l0ZS5oIgogI2luY2x1ZGUgIlByb2ZpbGVyT3JpZ2luU3RhY2suaCIKKyNpbmNsdWRl
ICJQcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmgiCiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KICNpbmNsdWRlIDx3dGYvU2VnbWVudGVkVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgUHJvZmlsZXIgewogCiBjbGFzcyBCeXRlY29kZXM7CitjbGFzcyBEYXRhYmFzZTsK
IAogLy8gUmVwcmVzZW50cyB0aGUgYWN0IG9mIGV4ZWN1dGluZyBzb21lIGJ5dGVjb2RlcyBpbiBz
b21lIGVuZ2luZSwgYW5kIGRvZXMKIC8vIGFsbCBvZiB0aGUgY291bnRpbmcgZm9yIHRob3NlIGV4
ZWN1dGlvbnMuCkBAIC00OSw2ICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgQ29tcGlsYXRpb24oQnl0
ZWNvZGVzKiwgQ29tcGlsYXRpb25LaW5kKTsKICAgICB+Q29tcGlsYXRpb24oKTsKICAgICAKKyAg
ICB2b2lkIGFkZFByb2ZpbGVkQnl0ZWNvZGVzKERhdGFiYXNlJiwgQ29kZUJsb2NrKik7CisgICAg
dW5zaWduZWQgcHJvZmlsZWRCeXRlY29kZXNTaXplKCkgY29uc3QgeyByZXR1cm4gbV9wcm9maWxl
ZEJ5dGVjb2Rlcy5zaXplKCk7IH0KKyAgICBjb25zdCBQcm9maWxlZEJ5dGVjb2RlcyYgcHJvZmls
ZWRCeXRlY29kZXNBdCh1bnNpZ25lZCBpKSBjb25zdCB7IHJldHVybiBtX3Byb2ZpbGVkQnl0ZWNv
ZGVzW2ldOyB9CisgICAgCiAgICAgQnl0ZWNvZGVzKiBieXRlY29kZXMoKSBjb25zdCB7IHJldHVy
biBtX2J5dGVjb2RlczsgfQogICAgIENvbXBpbGF0aW9uS2luZCBraW5kKCkgY29uc3QgeyByZXR1
cm4gbV9raW5kOyB9CiAgICAgCkBAIC02Miw2ICs2OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAg
ICAgQnl0ZWNvZGVzKiBtX2J5dGVjb2RlczsKICAgICBDb21waWxhdGlvbktpbmQgbV9raW5kOwor
ICAgIFZlY3RvcjxQcm9maWxlZEJ5dGVjb2Rlcz4gbV9wcm9maWxlZEJ5dGVjb2RlczsKICAgICBW
ZWN0b3I8Q29tcGlsZWRCeXRlY29kZT4gbV9kZXNjcmlwdGlvbnM7CiAgICAgSGFzaE1hcDxPcmln
aW5TdGFjaywgT3duUHRyPEV4ZWN1dGlvbkNvdW50ZXI+ID4gbV9jb3VudGVyczsKICAgICBWZWN0
b3I8T1NSRXhpdFNpdGU+IG1fb3NyRXhpdFNpdGVzOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAkocmV2aXNpb24gMTM3
MjI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCi0jaW5jbHVkZSA8d3RmL1N0cmluZ1ByaW50
U3RyZWFtLmg+CiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgewogCkBAIC00
MSwzNSArNDAsMTYgQEAgRGF0YWJhc2U6On5EYXRhYmFzZSgpCiB7CiB9CiAKLUJ5dGVjb2Rlcyog
RGF0YWJhc2U6OmFkZEJ5dGVjb2RlcygKLSAgICBDb2RlQmxvY2tIYXNoIGhhc2gsIGNvbnN0IFN0
cmluZyYgaW5mZXJyZWROYW1lLCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCi17Ci0gICAgbV9i
eXRlY29kZXMuYXBwZW5kKEJ5dGVjb2RlcyhtX2J5dGVjb2Rlcy5zaXplKCksIGluZmVycmVkTmFt
ZSwgc291cmNlQ29kZSwgaGFzaCkpOwotICAgIHJldHVybiAmbV9ieXRlY29kZXMubGFzdCgpOwot
fQotCiBCeXRlY29kZXMqIERhdGFiYXNlOjplbnN1cmVCeXRlY29kZXNGb3IoQ29kZUJsb2NrKiBj
b2RlQmxvY2spCiB7Ci0gICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwotICAgIAogICAgIGNvZGVC
bG9jayA9IGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCk7CiAgICAgCiAgICAgSGFzaE1hcDxD
b2RlQmxvY2sqLCBCeXRlY29kZXMqPjo6aXRlcmF0b3IgaXRlciA9IG1fYnl0ZWNvZGVzTWFwLmZp
bmQoY29kZUJsb2NrKTsKICAgICBpZiAoaXRlciAhPSBtX2J5dGVjb2Rlc01hcC5lbmQoKSkKICAg
ICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwogICAgIAotICAgIEJ5dGVjb2RlcyogcmVzdWx0ID0g
YWRkQnl0ZWNvZGVzKAotICAgICAgICBjb2RlQmxvY2stPmhhc2goKSwgY29kZUJsb2NrLT5pbmZl
cnJlZE5hbWUoKSwgY29kZUJsb2NrLT5zb3VyY2VDb2RlRm9yVG9vbHMoKSk7Ci0gICAgCi0gICAg
Zm9yICh1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gMDsgYnl0ZWNvZGVJbmRleCA8IGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOykgewotICAgICAgICBvdXQucmVzZXQoKTsKLSAgICAg
ICAgY29kZUJsb2NrLT5kdW1wQnl0ZWNvZGUob3V0LCBieXRlY29kZUluZGV4KTsKLSAgICAgICAg
cmVzdWx0LT5hcHBlbmQoQnl0ZWNvZGUoYnl0ZWNvZGVJbmRleCwgbV9nbG9iYWxEYXRhLmludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjb2RlQmxvY2stPmluc3RydWN0aW9ucygpW2J5dGVjb2RlSW5k
ZXhdLnUub3Bjb2RlKSwgb3V0LnRvQ1N0cmluZygpKSk7Ci0gICAgICAgIAotICAgICAgICBieXRl
Y29kZUluZGV4ICs9IG9wY29kZUxlbmd0aCgKLSAgICAgICAgICAgIG1fZ2xvYmFsRGF0YS5pbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQoCi0gICAgICAgICAgICAgICAgY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKVtieXRlY29kZUluZGV4XS51Lm9wY29kZSkpOwotICAgIH0KKyAgICBtX2J5dGVjb2Rl
cy5hcHBlbmQoQnl0ZWNvZGVzKG1fYnl0ZWNvZGVzLnNpemUoKSwgY29kZUJsb2NrKSk7CisgICAg
Qnl0ZWNvZGVzKiByZXN1bHQgPSAmbV9ieXRlY29kZXMubGFzdCgpOwogICAgIAogICAgIG1fYnl0
ZWNvZGVzTWFwLmFkZChjb2RlQmxvY2ssIHJlc3VsdCk7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmgJKHJldmlzaW9u
IDEzNzIyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFi
YXNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY2LDggKzY2LDcgQEAgcHVibGljOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIGJvb2wgc2F2ZShjb25zdCBjaGFyKiBmaWxlbmFtZSkgY29uc3Q7CiAKIHBy
aXZhdGU6Ci0gICAgQnl0ZWNvZGVzKiBhZGRCeXRlY29kZXMoQ29kZUJsb2NrSGFzaCwgY29uc3Qg
U3RyaW5nJiBpbmZlcnJlZE5hbWUsIGNvbnN0IFN0cmluZyYgc291cmNlQ29kZSk7Ci0gICAgCisK
ICAgICBKU0dsb2JhbERhdGEmIG1fZ2xvYmFsRGF0YTsKICAgICBTZWdtZW50ZWRWZWN0b3I8Qnl0
ZWNvZGVzPiBtX2J5dGVjb2RlczsKICAgICBIYXNoTWFwPENvZGVCbG9jayosIEJ5dGVjb2Rlcyo+
IG1fYnl0ZWNvZGVzTWFwOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGVyUHJvZmlsZWRCeXRlY29kZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclByb2ZpbGVkQnl0
ZWNvZGVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oIgorCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBQcm9maWxlciB7CisKK1Byb2Zp
bGVkQnl0ZWNvZGVzOjpQcm9maWxlZEJ5dGVjb2RlcyhCeXRlY29kZXMqIGJ5dGVjb2RlcywgQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrKQorICAgIDogQnl0ZWNvZGVTZXF1ZW5jZShwcm9maWxlZEJs
b2NrKQorICAgICwgbV9ieXRlY29kZXMoYnl0ZWNvZGVzKQoreworfQorCitQcm9maWxlZEJ5dGVj
b2Rlczo6flByb2ZpbGVkQnl0ZWNvZGVzKCkKK3sKK30KKworSlNWYWx1ZSBQcm9maWxlZEJ5dGVj
b2Rlczo6dG9KUyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgSlNPYmplY3QqIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpOworICAgIAorICAgIHJlc3VsdC0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmJ5dGVjb2Rlc0lE
LCBqc051bWJlcihtX2J5dGVjb2Rlcy0+aWQoKSkpOworICAgIGFkZFNlcXVlbmNlUHJvcGVydGll
cyhleGVjLCByZXN1bHQpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpQcm9maWxlcgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZXJQcm9maWxlZEJ5dGVjb2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlclByb2ZpbGVkQnl0ZWNvZGVzLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJQcm9maWxl
ZEJ5dGVjb2Rlcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUHJvZmlsZXJQcm9maWxl
ZEJ5dGVjb2Rlc19oCisjZGVmaW5lIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXNfaAorCisjaW5j
bHVkZSAiUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmgiCisjaW5jbHVkZSAiUHJvZmlsZXJCeXRl
Y29kZXMuaCIKKyNpbmNsdWRlICJQcm9maWxlck9yaWdpblN0YWNrLmgiCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgUHJvZmlsZXIgeworCitjbGFzcyBQcm9maWxlZEJ5dGVjb2RlcyA6IHB1
YmxpYyBCeXRlY29kZVNlcXVlbmNlIHsKK3B1YmxpYzoKKyAgICBQcm9maWxlZEJ5dGVjb2RlcyhC
eXRlY29kZXMqLCBDb2RlQmxvY2sqKTsKKyAgICB+UHJvZmlsZWRCeXRlY29kZXMoKTsKKyAgICAK
KyAgICBjb25zdCBCeXRlY29kZXMqIGJ5dGVjb2RlcygpIGNvbnN0IHsgcmV0dXJuIG1fYnl0ZWNv
ZGVzOyB9CisgICAgCisgICAgSlNWYWx1ZSB0b0pTKEV4ZWNTdGF0ZSopIGNvbnN0OworCitwcml2
YXRlOgorICAgIEJ5dGVjb2RlcyogbV9ieXRlY29kZXM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6UHJvZmlsZXIKKworI2VuZGlmIC8vIFByb2ZpbGVyUHJvZmlsZWRCeXRlY29kZXNfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgJKHJldmlzaW9uIDEzNzIyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDExICs1NywxMyBA
QAogICAgIG1hY3JvKGdldCkgXAogICAgIG1hY3JvKGhhc093blByb3BlcnR5KSBcCiAgICAgbWFj
cm8oaGFzaCkgXAorICAgIG1hY3JvKGhlYWRlcikgXAogICAgIG1hY3JvKGlkKSBcCiAgICAgbWFj
cm8oaWdub3JlQ2FzZSkgXAogICAgIG1hY3JvKGluZGV4KSBcCiAgICAgbWFjcm8oaW5mZXJyZWRO
YW1lKSBcCiAgICAgbWFjcm8oaW5wdXQpIFwKKyAgICBtYWNybyhpbnN0cnVjdGlvbkNvdW50KSBc
CiAgICAgbWFjcm8oaXNBcnJheSkgXAogICAgIG1hY3JvKGlzUHJvdG90eXBlT2YpIFwKICAgICBt
YWNybyhpc1dhdGNocG9pbnQpIFwKQEAgLTc3LDYgKzc5LDcgQEAKICAgICBtYWNybyhvc3JFeGl0
U2l0ZXMpIFwKICAgICBtYWNybyhvc3JFeGl0cykgXAogICAgIG1hY3JvKHBhcnNlKSBcCisgICAg
bWFjcm8ocHJvZmlsZWRCeXRlY29kZXMpIFwKICAgICBtYWNybyhwcm9wZXJ0eUlzRW51bWVyYWJs
ZSkgXAogICAgIG1hY3JvKHByb3RvdHlwZSkgXAogICAgIG1hY3JvKHNldCkgXApJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTM3
MzYwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTItMTItMTEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBQ
cm9maWxlciBzaG91bGQgc2hvdyBieXRlY29kZSBkdW1wcyBhcyB0aGV5IHdvdWxkIGhhdmUgYmVl
biB2aXNpYmxlIHRvIHRoZSBKSVRzLCBpbmNsdWRpbmcgdGhlIHByb2ZpbGluZyBkYXRhIHRoYXQg
dGhlIEpJVHMgd291bGQgc2VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDQ2NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBhICJwcm9maWxpbmciIChvciAicCIpIGNvbW1hbmQgdG8gc2hvdyB0
aGUgcHJvZmlsaW5nIGRhdGEgdGhhdCB0aGUgSklUcyBzYXcKKyAgICAgICAgZm9yIGVhY2ggSklU
IGNvbXBpbGF0aW9uIG9mIGEgY29kZSBibG9jay4KKyAgICAgICAgCisgICAgICAgIEFsc28gYWRk
ZWQgaW5zdHJ1Y3Rpb24gY291bnRzIGluIHRoZSAiZnVsbCIgZGlzcGxheSBhbmQgbWFkZSB0aGUg
ImZ1bGwiIGRpc3BsYXkgdGhlCisgICAgICAgIGRlZmF1bHQgdGhpbmcgeW91IHNlZS4KKworICAg
ICAgICAqIFNjcmlwdHMvZGlzcGxheS1wcm9maWxlci1vdXRwdXQ6CisKIDIwMTItMTItMTEgIERp
cmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgbnJ3dDogcmVjb3Jk
IHRoZSBvcmRlciBhbmQgcnVuIHRpbWVzIG9mIGFsbCBvZiB0aGUgdGVzdHMgaW4gYSBzaW5nbGUg
ZmlsZQpJbmRleDogVG9vbHMvU2NyaXB0cy9kaXNwbGF5LXByb2ZpbGVyLW91dHB1dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL2Rpc3BsYXktcHJvZmlsZXItb3V0cHV0CShyZXZpc2lvbiAx
MzcyMjYpCisrKyBUb29scy9TY3JpcHRzL2Rpc3BsYXktcHJvZmlsZXItb3V0cHV0CSh3b3JraW5n
IGNvcHkpCkBAIC0xMzMsMTIgKzEzMywxMyBAQCBjbGFzcyBCeXRlY29kZQogZW5kCiAKIGNsYXNz
IEJ5dGVjb2RlcwotICAgIGF0dHJfYWNjZXNzb3IgOmNvZGVIYXNoLCA6aW5mZXJyZWROYW1lLCA6
c291cmNlLCA6bWFjaGluZUlubGluZVNpdGVzLCA6Y29tcGlsYXRpb25zCisgICAgYXR0cl9hY2Nl
c3NvciA6Y29kZUhhc2gsIDppbmZlcnJlZE5hbWUsIDpzb3VyY2UsIDppbnN0cnVjdGlvbkNvdW50
LCA6bWFjaGluZUlubGluZVNpdGVzLCA6Y29tcGlsYXRpb25zCiAgICAgCiAgICAgZGVmIGluaXRp
YWxpemUoanNvbikKICAgICAgICAgQGNvZGVIYXNoID0ganNvblsiaGFzaCJdLnRvX3MKICAgICAg
ICAgQGluZmVycmVkTmFtZSA9IGpzb25bImluZmVycmVkTmFtZSJdLnRvX3MKICAgICAgICAgQHNv
dXJjZSA9IGpzb25bInNvdXJjZUNvZGUiXS50b19zCisgICAgICAgIEBpbnN0cnVjdGlvbkNvdW50
ID0ganNvblsiaW5zdHJ1Y3Rpb25Db3VudCJdLnRvX2kKICAgICAgICAgQGJ5dGVjb2RlID0ge30K
ICAgICAgICAganNvblsiYnl0ZWNvZGUiXS5lYWNoIHsKICAgICAgICAgICAgIHwgc3ViSnNvbiB8
CkBAIC0yNTEsNiArMjUyLDM1IEBAIGNsYXNzIEJ5dGVjb2RlcwogICAgIGVuZAogZW5kCiAKK2Ns
YXNzIFByb2ZpbGVkQnl0ZWNvZGUKKyAgICBhdHRyX3JlYWRlciA6Ynl0ZWNvZGVJbmRleCwgOmRl
c2NyaXB0aW9uCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoanNvbikKKyAgICAgICAgQGJ5dGVj
b2RlSW5kZXggPSBqc29uWyJieXRlY29kZUluZGV4Il0udG9faQorICAgICAgICBAZGVzY3JpcHRp
b24gPSBqc29uWyJkZXNjcmlwdGlvbiJdLnRvX3MKKyAgICBlbmQKK2VuZAorCitjbGFzcyBQcm9m
aWxlZEJ5dGVjb2RlcworICAgIGF0dHJfcmVhZGVyIDpoZWFkZXIsIDpieXRlY29kZXMKKyAgICAK
KyAgICBkZWYgaW5pdGlhbGl6ZShqc29uKQorICAgICAgICBAaGVhZGVyID0ganNvblsiaGVhZGVy
Il0KKyAgICAgICAgQGJ5dGVjb2RlcyA9ICRieXRlY29kZXNbanNvblsiYnl0ZWNvZGVzSUQiXS50
b19pXQorICAgICAgICBAc2VxdWVuY2UgPSBqc29uWyJieXRlY29kZSJdLm1hcCB7CisgICAgICAg
ICAgICB8IHN1Ykpzb24gfAorICAgICAgICAgICAgUHJvZmlsZWRCeXRlY29kZS5uZXcoc3ViSnNv
bikKKyAgICAgICAgfQorICAgIGVuZAorICAgIAorICAgIGRlZiBlYWNoCisgICAgICAgIEBzZXF1
ZW5jZS5lYWNoIHsKKyAgICAgICAgICAgIHwgZGVzY3JpcHRpb24gfAorICAgICAgICAgICAgeWll
bGQgZGVzY3JpcHRpb24KKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKIGRlZiBvcmlnaW5TdGFj
a0Zyb21KU09OKGpzb24pCiAgICAganNvbi5tYXAgewogICAgICAgICB8IHN1Ykpzb24gfApAQCAt
Mjk1LDcgKzMyNSw3IEBAIGNsYXNzIE9TUkV4aXQKIGVuZAogCiBjbGFzcyBDb21waWxhdGlvbgot
ICAgIGF0dHJfYWNjZXNzb3IgOmJ5dGVjb2RlLCA6ZW5naW5lLCA6ZGVzY3JpcHRpb25zLCA6Y291
bnRlcnMsIDpjb21waWxhdGlvbkluZGV4LCA6b3NyRXhpdHMKKyAgICBhdHRyX2FjY2Vzc29yIDpi
eXRlY29kZSwgOmVuZ2luZSwgOmRlc2NyaXB0aW9ucywgOmNvdW50ZXJzLCA6Y29tcGlsYXRpb25J
bmRleCwgOm9zckV4aXRzLCA6cHJvZmlsZWRCeXRlY29kZXMKICAgICAKICAgICBkZWYgaW5pdGlh
bGl6ZShqc29uKQogICAgICAgICBAYnl0ZWNvZGUgPSAkYnl0ZWNvZGVzW2pzb25bImJ5dGVjb2Rl
c0lEIl0udG9faV0KQEAgLTMzNCw2ICszNjQsMTEgQEAgY2xhc3MgQ29tcGlsYXRpb24KICAgICAg
ICAgICAgIG9zckV4aXRzW29zckV4aXQuY29kZUFkZHJlc3NdIDw8IG9zckV4aXQKICAgICAgICAg
ICAgIG9zckV4aXQub3JpZ2luWy0xXS5vc3JFeGl0cyA8PCBvc3JFeGl0CiAgICAgICAgIH0KKyAg
ICAgICAgQHByb2ZpbGVkQnl0ZWNvZGVzID0gW10KKyAgICAgICAganNvblsicHJvZmlsZWRCeXRl
Y29kZXMiXS5lYWNoIHsKKyAgICAgICAgICAgIHwgc3ViSnNvbiB8CisgICAgICAgICAgICBAcHJv
ZmlsZWRCeXRlY29kZXMgPDwgUHJvZmlsZWRCeXRlY29kZXMubmV3KHN1Ykpzb24pCisgICAgICAg
IH0KICAgICBlbmQKICAgICAKICAgICBkZWYgY291bnRlcihvcmlnaW4pCkBAIC00MjUsMTQgKzQ2
MCwzMyBAQCBlbmQKIGRlZiBzdW1tYXJ5KG1vZGUpCiAgICAgcmVtYWluaW5nID0gc2NyZWVuV2lk
dGgKICAgICAKLSAgICBoYXNoQ29scyA9IDIwCisgICAgIyBGaWd1cmUgb3V0IGhvdyBtYW55IGNv
bHVtbnMgd2UgbmVlZCBmb3IgdGhlIGNvZGUgYmxvY2sgbmFtZXMsIGFuZCBmb3IgY291bnRzCisg
ICAgbWF4Q291bnQgPSAwCisgICAgbWF4TmFtZSA9IDAKKyAgICAkYnl0ZWNvZGVzLmVhY2ggewor
ICAgICAgICB8IGJ5dGVjb2RlcyB8CisgICAgICAgIG1heENvdW50ID0gKFttYXhDb3VudF0gKyAk
ZW5naW5lcy5tYXAgeworICAgICAgICAgICAgICAgICAgICAgICAgfCBlbmdpbmUgfAorICAgICAg
ICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVzLm1heFRvcEV4ZWN1dGlvbkNvdW50KGVuZ2luZSkK
KyAgICAgICAgICAgICAgICAgICAgfSArICRlbmdpbmVzLm1hcCB7CisgICAgICAgICAgICAgICAg
ICAgICAgICB8IGVuZ2luZSB8CisgICAgICAgICAgICAgICAgICAgICAgICBieXRlY29kZXMubWF4
Qm90dG9tRXhlY3V0aW9uQ291bnQoZW5naW5lKQorICAgICAgICAgICAgICAgICAgICB9KS5tYXgK
KyAgICAgICAgbWF4TmFtZSA9IFtieXRlY29kZXMudG9fcy5zaXplLCBtYXhOYW1lXS5tYXgKKyAg
ICB9CisgICAgbWF4Q291bnREaWdpdHMgPSBtYXhDb3VudC50b19zLnNpemUKKyAgICAKKyAgICBo
YXNoQ29scyA9IFtbbWF4TmFtZSwgMzBdLm1pbiwgIkNvZGVCbG9jayIuc2l6ZV0ubWF4CiAgICAg
cmVtYWluaW5nIC09IGhhc2hDb2xzICsgMQogICAgIAotICAgIGNvdW50Q29scyA9IDkgKiAkZW5n
aW5lcy5zaXplCisgICAgY291bnRDb2xzID0gW21heENvdW50RGlnaXRzICogJGVuZ2luZXMuc2l6
ZSwgIlNvdXJjZSBDb3VudHMiLnNpemVdLm1heAogICAgIHJlbWFpbmluZyAtPSBjb3VudENvbHMg
KyAxCiAgICAgCiAgICAgaWYgbW9kZSA9PSA6ZnVsbAotICAgICAgICBtYWNoaW5lQ291bnRDb2xz
ID0gOSAqICRlbmdpbmVzLnNpemUKKyAgICAgICAgaW5zdHJ1Y3Rpb25Db3VudENvbHMgPSA2Cisg
ICAgICAgIHJlbWFpbmluZyAtPSBpbnN0cnVjdGlvbkNvdW50Q29scyArIDEKKyAgICAgICAgCisg
ICAgICAgIG1hY2hpbmVDb3VudENvbHMgPSBbbWF4Q291bnREaWdpdHMgKiAkZW5naW5lcy5zaXpl
LCAiTWFjaGluZSBDb3VudHMiLnNpemVdLm1heAogICAgICAgICByZW1haW5pbmcgLT0gbWFjaGlu
ZUNvdW50Q29scyArIDEKICAgICAgICAgCiAgICAgICAgIGNvbXBpbGF0aW9uc0NvbHMgPSA3CkBA
IC00NTEsNyArNTA1LDExIEBAIGRlZiBzdW1tYXJ5KG1vZGUpCiAgICAgICAgIHNvdXJjZUNvbHMg
PSBuaWwKICAgICBlbmQKICAgICAKLSAgICBwcmludChjZW50ZXIoIkNvZGVCbG9jayIsIGhhc2hD
b2xzKSArICIgIiArIGNlbnRlcigiU291cmNlIENvdW50cyIsIGNvdW50Q29scykpCisgICAgcHJp
bnQoY2VudGVyKCJDb2RlQmxvY2siLCBoYXNoQ29scykpCisgICAgaWYgbW9kZSA9PSA6ZnVsbAor
ICAgICAgICBwcmludCgiICIgKyBjZW50ZXIoIiNJbnN0ciIsIGluc3RydWN0aW9uQ291bnRDb2xz
KSkKKyAgICBlbmQKKyAgICBwcmludCgiICIgKyBjZW50ZXIoIlNvdXJjZSBDb3VudHMiLCBjb3Vu
dENvbHMpKQogICAgIGlmIG1vZGUgPT0gOmZ1bGwKICAgICAgICAgcHJpbnQoIiAiICsgY2VudGVy
KCJNYWNoaW5lIENvdW50cyIsIG1hY2hpbmVDb3VudENvbHMpKQogICAgICAgICBwcmludCgiICIg
KyBjZW50ZXIoIiNDb21waWwiLCBjb21waWxhdGlvbnNDb2xzKSkKQEAgLTQ2Myw3ICs1MjEsMTEg
QEAgZGVmIHN1bW1hcnkobW9kZSkKICAgICBlbmQKICAgICBwdXRzCiAgICAgCi0gICAgcHJpbnQo
Y2VudGVyKCIiLCBoYXNoQ29scykgKyAiICIgKyBjZW50ZXIoIkJhc2UvREZHIiwgY291bnRDb2xz
KSkKKyAgICBwcmludChjZW50ZXIoIiIsIGhhc2hDb2xzKSkKKyAgICBpZiBtb2RlID09IDpmdWxs
CisgICAgICAgIHByaW50KCIgIiArICgiICIgKiBpbnN0cnVjdGlvbkNvdW50Q29scykpCisgICAg
ZW5kCisgICAgcHJpbnQoIiAiICsgY2VudGVyKCJCYXNlL0RGRyIsIGNvdW50Q29scykpCiAgICAg
aWYgbW9kZSA9PSA6ZnVsbAogICAgICAgICBwcmludCgiICIgKyBjZW50ZXIoIkJhc2UvREZHIiwg
bWFjaGluZUNvdW50Q29scykpCiAgICAgICAgIHByaW50KCIgIiArICgiICIgKiBjb21waWxhdGlv
bnNDb2xzKSkKQEAgLTQ3NSw3ICs1MzcsMTEgQEAgZGVmIHN1bW1hcnkobW9kZSkKICAgICAgICAg
Yi50b3RhbE1heFRvcEV4ZWN1dGlvbkNvdW50IDw9PiBhLnRvdGFsTWF4VG9wRXhlY3V0aW9uQ291
bnQKICAgICB9LmVhY2ggewogICAgICAgICB8IGJ5dGVjb2RlIHwKLSAgICAgICAgcHJpbnQoY2Vu
dGVyKGJ5dGVjb2RlLm5hbWUoaGFzaENvbHMpLCBoYXNoQ29scykgKyAiICIgKworICAgICAgICBw
cmludChjZW50ZXIoYnl0ZWNvZGUubmFtZShoYXNoQ29scyksIGhhc2hDb2xzKSkKKyAgICAgICAg
aWYgbW9kZSA9PSA6ZnVsbAorICAgICAgICAgICAgcHJpbnQoIiAiICsgY2VudGVyKGJ5dGVjb2Rl
Lmluc3RydWN0aW9uQ291bnQudG9fcywgaW5zdHJ1Y3Rpb25Db3VudENvbHMpKQorICAgICAgICBl
bmQKKyAgICAgICAgcHJpbnQoIiAiICsKICAgICAgICAgICAgICAgY2VudGVyKCRlbmdpbmVzLm1h
cCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlbmdpbmUgfAogICAgICAgICAgICAgICAg
ICAgICAgICAgIGJ5dGVjb2RlLm1heFRvcEV4ZWN1dGlvbkNvdW50KGVuZ2luZSkudG9fcwpAQCAt
NTA1LDYgKzU3MSw3IEBAIGRlZiBleGVjdXRlQ29tbWFuZCgqY29tbWFuZEFycmF5KQogICAgICAg
ICBwdXRzICJmdWxsIChmKSAgICAgICAgU2FtZSBhcyBzdW1tYXJ5LCBidXQgcHJpbnRzIG1vcmUg
aW5mb3JtYXRpb24uIgogICAgICAgICBwdXRzICJzb3VyY2UgICAgICAgICAgU2hvdyB0aGUgc291
cmNlIGZvciBhIGNvZGUgYmxvY2suIgogICAgICAgICBwdXRzICJieXRlY29kZSAoYikgICAgU2hv
dyB0aGUgYnl0ZWNvZGUgZm9yIGEgY29kZSBibG9jaywgd2l0aCBjb3VudHMuIgorICAgICAgICBw
dXRzICJwcm9maWxpbmcgKHApICAgU2hvdyB0aGUgKGludGVybmFsKSBwcm9maWxpbmcgZGF0YSBm
b3IgYSBjb2RlIGJsb2NrLiIKICAgICAgICAgcHV0cyAiZGlzcGxheSAoZCkgICAgIERpc3BsYXkg
ZGV0YWlscyBmb3IgYSBjb2RlIGJsb2NrLiIKICAgICAgICAgcHV0cyAiaW5saW5lcyAgICAgICAg
IFNob3cgYWxsIGlubGluaW5nIHN0YWNrcyB0aGF0IHRoZSBjb2RlIGJsb2NrIHdhcyBvbi4iCiAg
ICAgICAgIHB1dHMgImhlbHAgKGgpICAgICAgICBQcmludCB0aGlzIG1lc3NhZ2UuIgpAQCAtNTcw
LDYgKzYzNyw0NSBAQCBkZWYgZXhlY3V0ZUNvbW1hbmQoKmNvbW1hbmRBcnJheSkKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICB3aGVuICJwcm9maWxpbmci
LCAicCIKKyAgICAgICAgaWYgYXJncy5sZW5ndGggIT0gMQorICAgICAgICAgICAgcHV0cyAiVXNh
Z2U6IHByb2ZpbGluZyA8Y29kZSBibG9jayBoYXNoPiIKKyAgICAgICAgICAgIHJldHVybgorICAg
ICAgICBlbmQKKyAgICAgICAgCisgICAgICAgIGhhc2ggPSBhcmdzWzBdCisgICAgICAgIAorICAg
ICAgICBmaXJzdCA9IHRydWUKKyAgICAgICAgJGNvbXBpbGF0aW9ucy5lYWNoIHsKKyAgICAgICAg
ICAgIHwgY29tcGlsYXRpb24gfAorICAgICAgICAgICAgCisgICAgICAgICAgICBjb21waWxhdGlv
bi5wcm9maWxlZEJ5dGVjb2Rlcy5lYWNoIHsKKyAgICAgICAgICAgICAgICB8IHByb2ZpbGVkQnl0
ZWNvZGVzIHwKKyAgICAgICAgICAgICAgICBpZiBwcm9maWxlZEJ5dGVjb2Rlcy5ieXRlY29kZXMu
bWF0Y2hlcyhoYXNoKQorICAgICAgICAgICAgICAgICAgICBpZiBmaXJzdAorICAgICAgICAgICAg
ICAgICAgICAgICAgZmlyc3QgPSBmYWxzZQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBwdXRzCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcHV0cyAiQ29tcGlsYXRpb24gI3tj
b21waWxhdGlvbn06IgorICAgICAgICAgICAgICAgICAgICBwcm9maWxlZEJ5dGVjb2Rlcy5oZWFk
ZXIuZWFjaCB7CisgICAgICAgICAgICAgICAgICAgICAgICB8IGhlYWRlciB8CisgICAgICAgICAg
ICAgICAgICAgICAgICBwdXRzKCIgIiAqIDYgKyBoZWFkZXIpCisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgcHJvZmlsZWRCeXRlY29kZXMuZWFjaCB7CisgICAgICAg
ICAgICAgICAgICAgICAgICB8IGJ5dGVjb2RlIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1
dHMoIiAiICogOCArIGJ5dGVjb2RlLmRlc2NyaXB0aW9uKQorICAgICAgICAgICAgICAgICAgICAg
ICAgcHJvZmlsZWRCeXRlY29kZXMuYnl0ZWNvZGVzLmJ5dGVjb2RlKGJ5dGVjb2RlLmJ5dGVjb2Rl
SW5kZXgpLm9zckV4aXRzLmVhY2ggeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXhp
dCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZXhpdC5jb21waWxhdGlvbiA9PSBj
b21waWxhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRzKCIgISEhISEg
ICAgICAgICAgIEVYSVQ6IGR1ZSB0byAje2V4aXQuZXhpdEtpbmR9LCAje2V4aXQuY291bnR9IHRp
bWVzIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgfQorICAgICAgICB9CiAgICAgd2hlbiAiaW5saW5lcyIKICAgICAgICAgaWYgYXJn
cy5sZW5ndGggIT0gMQogICAgICAgICAgICAgcHV0cyAiVXNhZ2U6IGlubGluZXMgPGNvZGUgYmxv
Y2sgaGFzaD4iCkBAIC03ODcsNyArODkzLDcgQEAgZGVmIGV4ZWN1dGVDb21tYW5kKCpjb21tYW5k
QXJyYXkpCiAgICAgZW5kCiBlbmQKIAotZXhlY3V0ZUNvbW1hbmQoInN1bW1hcnkiKQorZXhlY3V0
ZUNvbW1hbmQoImZ1bGwiKQogCiB3aGlsZSBjb21tYW5kTGluZSA9IFJlYWRsaW5lLnJlYWRsaW5l
KCI+ICIsIHRydWUpCiAgICAgZXhlY3V0ZUNvbW1hbmQoKmNvbW1hbmRMaW5lLnNwbGl0KQo=
</data>
<flag name="review"
          id="195549"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>