<?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>125253</bug_id>
          
          <creation_ts>2013-12-04 14:00:18 -0800</creation_ts>
          <short_desc>Reveal array bounds checks in DFG IR</short_desc>
          <delta_ts>2013-12-09 19:21:43 -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>
          <dependson>125252</dependson>
          <blocked>125433</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>956592</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-04 14:00:18 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957725</commentid>
    <comment_count>1</comment_count>
      <attachid>218718</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-08 15:42:45 -0800</bug_when>
    <thetext>Created attachment 218718
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957732</commentid>
    <comment_count>2</comment_count>
      <attachid>218720</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-08 17:13:23 -0800</bug_when>
    <thetext>Created attachment 218720
it might work</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957738</commentid>
    <comment_count>3</comment_count>
      <attachid>218721</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-08 19:50:37 -0800</bug_when>
    <thetext>Created attachment 218721
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957742</commentid>
    <comment_count>4</comment_count>
      <attachid>218722</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-08 19:59:15 -0800</bug_when>
    <thetext>Created attachment 218722
the patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957743</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-08 20:01:13 -0800</bug_when>
    <thetext>Attachment 218722 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/bytecode/ExitKind.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/ExitKind.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArrayMode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArrayMode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGClobberize.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPlan.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSSALoweringPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSSALoweringPhase.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSafeToExecute.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCapabilities.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.h&apos;, u&apos;Source/JavaScriptCore/tests/stress/float32array-out-of-bounds.js&apos;, u&apos;Source/JavaScriptCore/tests/stress/int32-object-out-of-bounds.js&apos;, u&apos;Source/JavaScriptCore/tests/stress/int32-out-of-bounds.js&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
ERROR: Source/JavaScriptCore/dfg/DFGSSALoweringPhase.cpp:44:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
Total errors found: 1 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957744</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-08 20:03:15 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Attachment 218722 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/bytecode/ExitKind.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/ExitKind.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArrayMode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArrayMode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGClobberize.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPlan.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSSALoweringPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSSALoweringPhase.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSafeToExecute.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCapabilities.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.h&apos;, u&apos;Source/JavaScriptCore/tests/stress/float32array-out-of-bounds.js&apos;, u&apos;Source/JavaScriptCore/tests/stress/int32-object-out-of-bounds.js&apos;, u&apos;Source/JavaScriptCore/tests/stress/int32-out-of-bounds.js&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
&gt; ERROR: Source/JavaScriptCore/dfg/DFGSSALoweringPhase.cpp:44:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]

OMG no!

&gt; Total errors found: 1 in 27 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>957746</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-08 20:05:44 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Attachment 218722 [details] [details] did not pass style-queue:
&gt; &gt; 
&gt; &gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/CMakeLists.txt&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/GNUmakefile.list.am&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj&apos;, u&apos;Source/JavaScriptCore/bytecode/ExitKind.cpp&apos;, u&apos;Source/JavaScriptCore/bytecode/ExitKind.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArrayMode.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGArrayMode.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGClobberize.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGFixupPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGNodeType.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPlan.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSSALoweringPhase.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSSALoweringPhase.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSafeToExecute.h&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp&apos;, u&apos;Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLCapabilities.cpp&apos;, u&apos;Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.cpp&apos;, u&apos;Source/JavaScriptCore/runtime/JSObject.h&apos;, u&apos;Source/JavaScriptCore/tests/stress/float32array-out-of-bounds.js&apos;, u&apos;Source/JavaScriptCore/tests/stress/int32-object-out-of-bounds.js&apos;, u&apos;Source/JavaScriptCore/tests/stress/int32-out-of-bounds.js&apos;, &apos;--commit-queue&apos;]&quot; exit_code: 1
&gt; &gt; ERROR: Source/JavaScriptCore/dfg/DFGSSALoweringPhase.cpp:44:  Comma should be at the beginning of the line in a member initialization list.  [whitespace/init] [4]
&gt; 
&gt; OMG no!
&gt; 
&gt; &gt; Total errors found: 1 in 27 files
&gt; &gt; 
&gt; &gt; 
&gt; &gt; If any of these errors are false positives, please file a bug against check-webkit-style.

https://bugs.webkit.org/show_bug.cgi?id=125434</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>958166</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-12-09 19:21:43 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/160347</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218718</attachid>
            <date>2013-12-08 15:42:45 -0800</date>
            <delta_ts>2013-12-08 17:13:23 -0800</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>7752</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJKHJldmlz
aW9uIDE2MDI5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTQ4LDYgKzU0OCwzNiBAQCBBcnJheTo6VHlwZSB0b0FycmF5
VHlwZShUeXBlZEFycmF5VHlwZSB0CiAgICAgfQogfQogCitib29sIHBlcm1pdHNCb3VuZHNDaGVj
a0xvd2VyaW5nKEFycmF5OjpUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7CisgICAg
Y2FzZSBTdHJpbmc6CisgICAgY2FzZSBJbnQzMjoKKyAgICBjYXNlIERvdWJsZToKKyAgICBjYXNl
IENvbnRpZ3VvdXM6CisgICAgY2FzZSBJbnQ4QXJyYXk6CisgICAgY2FzZSBJbnQxNkFycmF5Ogor
ICAgIGNhc2UgSW50MzJBcnJheToKKyAgICBjYXNlIFVpbnQ4QXJyYXk6CisgICAgY2FzZSBVaW50
OENsYW1wZWRBcnJheToKKyAgICBjYXNlIFVpbnQxNkFycmF5OgorICAgIGNhc2UgVWludDMyQXJy
YXk6CisgICAgY2FzZSBGbG9hdDMyQXJyYXk6CisgICAgY2FzZSBGbG9hdDY0QXJyYXk6CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8vIFRoZXNlIGRvbid0IGFs
bG93IGZvciBib3VuZHMgY2hlY2sgbG93ZXJpbmcgZWl0aGVyIGJlY2F1c2UgdGhlIGJvdW5kcyBj
aGVjaworICAgICAgICAvLyBpbnZvbHZlcyBzb21ldGhpbmcgb3RoZXIgdGhhbiBHZXRBcnJheUxl
bmd0aCAobGlrZSBBcnJheVN0b3JhZ2UpLCBvciBiZWNhdXNlIHRoZQorICAgICAgICAvLyB0eXBl
IGltcGxpZXMgYW4gaW1wdXJlIGFjY2Vzcy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0K
K30KKworYm9vbCBBcnJheU1vZGU6OnBlcm1pdHNCb3VuZHNDaGVja0xvd2VyaW5nKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gcGVybWl0c0JvdW5kc0NoZWNrTG93ZXJpbmcodHlwZSkgJiYgaXNJbkJv
dW5kcygpOworfQorCiB2b2lkIEFycmF5TW9kZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25z
dAogewogICAgIG91dC5wcmludCh0eXBlKCksIGFycmF5Q2xhc3MoKSwgc3BlY3VsYXRpb24oKSwg
Y29udmVyc2lvbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlN
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1v
ZGUuaAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
cnJheU1vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDYgKzExMCw4IEBAIEluZGV4aW5nVHlw
ZSB0b0luZGV4aW5nU2hhcGUoQXJyYXk6OlR5cGUKIFR5cGVkQXJyYXlUeXBlIHRvVHlwZWRBcnJh
eVR5cGUoQXJyYXk6OlR5cGUpOwogQXJyYXk6OlR5cGUgdG9BcnJheVR5cGUoVHlwZWRBcnJheVR5
cGUpOwogCitib29sIHBlcm1pdHNCb3VuZHNDaGVja0xvd2VyaW5nKEFycmF5OjpUeXBlKTsKKwog
Y2xhc3MgQXJyYXlNb2RlIHsKIHB1YmxpYzoKICAgICBBcnJheU1vZGUoKQpAQCAtMzQyLDYgKzM0
NCw4IEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBib29sIHBlcm1pdHNC
b3VuZHNDaGVja0xvd2VyaW5nKCkgY29uc3Q7CisgICAgCiAgICAgYm9vbCBiZW5lZml0c0Zyb21P
cmlnaW5hbEFycmF5KCkgY29uc3QKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSgpKSB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFz
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxv
d2VyaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJERkdTU0FMb3dlcmluZ1BoYXNlLmgiCisKKyNpZiBFTkFCTEUoREZHX0pJ
VCkKKworI2luY2x1ZGUgIkRGR0Jhc2ljQmxvY2tJbmxpbmVzLmgiCisjaW5jbHVkZSAiREZHR3Jh
cGguaCIKKyNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKKyNpbmNsdWRlICJERkdQaGFzZS5o
IgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgeworCitjbGFzcyBTU0FMb3dlcmluZ1BoYXNlIDogcHVibGljIFBoYXNlIHsKKyAgICBzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CisgICAgCitwdWJsaWM6CisgICAgU1NBTG93
ZXJpbmdQaGFzZShHcmFwaCYgZ3JhcGgpCisgICAgICAgIDogUGhhc2UoZ3JhcGgsICJTU0EgbG93
ZXJpbmciKQorICAgICAgICAsIG1faW5zZXJ0aW9uU2V0KGdyYXBoKQorICAgIHsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBydW4oKQorICAgIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9ncmFw
aC5tX2Zvcm0gPT0gU1NBKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9j
a0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykgeworICAgICAgICAg
ICAgbV9ibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CisgICAgICAgICAgICBpZiAo
IW1fYmxvY2spCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBmb3IgKG1f
bm9kZUluZGV4ID0gMDsgbV9ub2RlSW5kZXggPCBtX2Jsb2NrLT5zaXplKCk7ICsrbV9ub2RlSW5k
ZXgpIHsKKyAgICAgICAgICAgICAgICBtX25vZGUgPSBtX2Jsb2NrLT5hdChtX25vZGVJbmRleCk7
CisgICAgICAgICAgICAgICAgaGFuZGxlTm9kZSgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQuZXhlY3V0ZShtX2Jsb2NrKTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIGhhbmRsZU5vZGUoKQor
ICAgIHsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPm9wKCkpIHsKKyAgICAgICAgY2FzZSBHZXRC
eVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVj
dDogeworICAgICAgICAgICAgaWYgKCFtX25vZGUtPmFycmF5TW9kZSgpLnBlcm1pdHNCb3VuZHND
aGVja0xvd2VyaW5nKCkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIEVkZ2UgYmFzZSA9IG1fZ3JhcGguY2hpbGQobV9ub2RlLCAwKTsKKyAgICAgICAg
ICAgIEVkZ2UgaW5kZXggPSBtX2dyYXBoLmNoaWxkKG1fbm9kZSwgMSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisg
ICAgICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMiwgR2V0QXJyYXlMZW5ndGgsIG1f
bm9kZS0+Y29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICBPcEluZm8obV9ub2RlLT5hcnJheU1v
ZGUoKS5hc1dvcmQoKSksIGJhc2UpOworICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0
Tm9kZSgKKyAgICAgICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyLCBDaGVja1Vuc2ln
bmVkTGVzc1RoYW4sIG1fbm9kZS0+Y29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICBpbmRleCwg
RWRnZShsZW5ndGgsIEtub3duSW50MzIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsKKyAg
ICBCYXNpY0Jsb2NrKiBtX2Jsb2NrOworICAgIHVuc2lnbmVkIG1fbm9kZUluZGV4OworICAgIE5v
ZGUqIG1fbm9kZTsKK307CisKK2Jvb2wgcGVyZm9ybVNTQUxvd2VyaW5nKEdyYXBoJiBncmFwaCkK
K3sKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiREZHIFNTQSBMb3dlcmluZyBQ
aGFzZSIpOworICAgIHJldHVybiBydW5QaGFzZTxTU0FMb3dlcmluZ1BoYXNlPihncmFwaCk7Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlmIC8vIEVOQUJMRShERkdfSklU
KQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5n
UGhhc2UuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NB
TG93ZXJpbmdQaGFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBERkdTU0FMb3dl
cmluZ1BoYXNlX2gKKyNkZWZpbmUgREZHU1NBTG93ZXJpbmdQaGFzZV9oCisKKyNpZiBFTkFCTEUo
REZHX0pJVCkKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgeworCitjbGFzcyBHcmFw
aDsKKworLy8gUGVyZm9ybXMgREZHLT5ERkcgbG93ZXJpbmdzIHRoYXQgYXJlIG9ubHkgYXBwcm9w
cmlhdGUgZm9yIFNTQSBmb3JtIGFuZCB0aGUgRlRMCisvLyBiYWNrZW5kLiBUaGlzIGlzIGludGVu
ZGVkIHRvIGJlIHJ1biBhZnRlciBTU0FDb252ZXJzaW9uUGhhc2UuCisKK2Jvb2wgcGVyZm9ybVNT
QUxvd2VyaW5nKEdyYXBoJik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpERkcKKworI2VuZGlm
IC8vIEVOQUJMRShERkdfSklUKQorCisjZW5kaWYgLy8gREZHU1NBTG93ZXJpbmdQaGFzZV9oCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218720</attachid>
            <date>2013-12-08 17:13:23 -0800</date>
            <delta_ts>2013-12-08 19:50:37 -0800</delta_ts>
            <desc>it might work</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>21965</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9FeGl0S2luZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAkocmV2
aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5k
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsOCArNjQsNiBAQCBjb25zdCBjaGFyKiBleGl0S2lu
ZFRvU3RyaW5nKEV4aXRLaW5kIGtpCiAgICAgICAgIHJldHVybiAiTG9hZEZyb21Ib2xlIjsKICAg
ICBjYXNlIE91dE9mQm91bmRzOgogICAgICAgICByZXR1cm4gIk91dE9mQm91bmRzIjsKLSAgICBj
YXNlIFN0b3JlVG9Ib2xlT3JPdXRPZkJvdW5kczoKLSAgICAgICAgcmV0dXJuICJTdG9yZVRvSG9s
ZU9yT3V0T2ZCb3VuZHMiOwogICAgIGNhc2UgSW5hZGVxdWF0ZUNvdmVyYWdlOgogICAgICAgICBy
ZXR1cm4gIkluYWRlcXVhdGVDb3ZlcmFnZSI7CiAgICAgY2FzZSBBcmd1bWVudHNFc2NhcGVkOgpA
QCAtOTYsNyArOTQsNiBAQCBib29sIGV4aXRLaW5kSXNDb3VudGFibGUoRXhpdEtpbmQga2luZCkK
ICAgICBjYXNlIExvYWRGcm9tSG9sZTogLy8gQWxyZWFkeSBjb3VudGVkIGRpcmVjdGx5IGJ5IHRo
ZSBiYXNlbGluZSBKSVQuCiAgICAgY2FzZSBTdG9yZVRvSG9sZTogLy8gQWxyZWFkeSBjb3VudGVk
IGRpcmVjdGx5IGJ5IHRoZSBiYXNlbGluZSBKSVQuCiAgICAgY2FzZSBPdXRPZkJvdW5kczogLy8g
QWxyZWFkeSBjb3VudGVkIGRpcmVjdGx5IGJ5IHRoZSBiYXNlbGluZSBKSVQuCi0gICAgY2FzZSBT
dG9yZVRvSG9sZU9yT3V0T2ZCb3VuZHM6IC8vIEFscmVhZHkgY291bnRlZCBkaXJlY3RseSBieSB0
aGUgYmFzZWxpbmUgSklULgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhpdEtpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
RXhpdEtpbmQuaAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0V4aXRLaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDcgKzQ0LDYgQEAgZW51bSBF
eGl0S2luZCB7CiAgICAgU3RvcmVUb0hvbGUsIC8vIFdlIGhhZCBhIHN0b3JlIHRvIGEgaG9sZS4K
ICAgICBMb2FkRnJvbUhvbGUsIC8vIFdlIGhhZCBhIGxvYWQgZnJvbSBhIGhvbGUuCiAgICAgT3V0
T2ZCb3VuZHMsIC8vIFdlIGhhZCBhbiBvdXQtb2YtYm91bmRzIGFjY2VzcyB0byBhbiBhcnJheS4K
LSAgICBTdG9yZVRvSG9sZU9yT3V0T2ZCb3VuZHMsIC8vIFdlJ3JlIHNpbXVsdGFuZW91c2x5IHNw
ZWN1bGF0aW5nIHRoYXQgd2UncmUgaW4gYm91bmRzIGFuZCBub3QgYWNjZXNzaW5nIGEgaG9sZSwg
YW5kIG9uZSBvZiB0aG9zZSB0aGluZ3MgZGlkbid0IHBhbiBvdXQuCiAgICAgSW5hZGVxdWF0ZUNv
dmVyYWdlLCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBlbmRlZCB1cCBpbiBjb2RlIHRoYXQgZGlk
bid0IGhhdmUgcHJvZmlsaW5nIGNvdmVyYWdlLgogICAgIEFyZ3VtZW50c0VzY2FwZWQsIC8vIFdl
IGV4aXRlZCBiZWNhdXNlIGFyZ3VtZW50cyBlc2NhcGVkIGJ1dCB3ZSBkaWRuJ3QgZXhwZWN0IHRo
ZW0gdG8uCiAgICAgTm90U3RyaW5nT2JqZWN0LCAvLyBXZSBleGl0ZWQgYmVjYXVzZSB3ZSBzaG91
bGRuJ3QgaGF2ZSBhdHRlbXB0ZWQgdG8gb3B0aW1pemUgc3RyaW5nIG9iamVjdCBhY2Nlc3MuCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oCShyZXZpc2lvbiAxNjAyOTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NzIsNiArMTQ3MiwxOSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJh
Y3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCisgICAgY2FzZSBDaGVj
a0luQm91bmRzOiB7CisgICAgICAgIEpTVmFsdWUgbGVmdCA9IGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLnZhbHVlKCk7CisgICAgICAgIEpTVmFsdWUgcmlnaHQgPSBmb3JOb2RlKG5vZGUtPmNoaWxk
MigpKS52YWx1ZSgpOworICAgICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzSW50MzIo
KSAmJiByaWdodC5pc0ludDMyKCkKKyAgICAgICAgICAgICYmIHN0YXRpY19jYXN0PHVpbnQzMl90
PihsZWZ0LmFzSW50MzIoKSkgPCBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmlnaHQuYXNJbnQzMigp
KSkgeworICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBub2RlLT5zZXRDYW5F
eGl0KHRydWUpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgICAgIAogICAgIGNhc2UgUHV0
QnlJZDoKICAgICBjYXNlIFB1dEJ5SWREaXJlY3Q6CiAgICAgICAgIG5vZGUtPnNldENhbkV4aXQo
dHJ1ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuY3Bw
CShyZXZpc2lvbiAxNjAyOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5
TW9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0OCw2ICs1NDgsMzYgQEAgQXJyYXk6OlR5cGUg
dG9BcnJheVR5cGUoVHlwZWRBcnJheVR5cGUgdAogICAgIH0KIH0KIAorYm9vbCBwZXJtaXRzQm91
bmRzQ2hlY2tMb3dlcmluZyhBcnJheTo6VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkg
eworICAgIGNhc2UgQXJyYXk6OkludDMyOgorICAgIGNhc2UgQXJyYXk6OkRvdWJsZToKKyAgICBj
YXNlIEFycmF5OjpDb250aWd1b3VzOgorICAgIGNhc2UgQXJyYXk6OkludDhBcnJheToKKyAgICBj
YXNlIEFycmF5OjpJbnQxNkFycmF5OgorICAgIGNhc2UgQXJyYXk6OkludDMyQXJyYXk6CisgICAg
Y2FzZSBBcnJheTo6VWludDhBcnJheToKKyAgICBjYXNlIEFycmF5OjpVaW50OENsYW1wZWRBcnJh
eToKKyAgICBjYXNlIEFycmF5OjpVaW50MTZBcnJheToKKyAgICBjYXNlIEFycmF5OjpVaW50MzJB
cnJheToKKyAgICBjYXNlIEFycmF5OjpGbG9hdDMyQXJyYXk6CisgICAgY2FzZSBBcnJheTo6Rmxv
YXQ2NEFycmF5OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICAv
LyBUaGVzZSBkb24ndCBhbGxvdyBmb3IgYm91bmRzIGNoZWNrIGxvd2VyaW5nIGVpdGhlciBiZWNh
dXNlIHRoZSBib3VuZHMKKyAgICAgICAgLy8gY2hlY2sgaW52b2x2ZXMgc29tZXRoaW5nIG90aGVy
IHRoYW4gR2V0QXJyYXlMZW5ndGggKGxpa2UgQXJyYXlTdG9yYWdlKSwKKyAgICAgICAgLy8gb3Ig
YmVjYXVzZSB0aGUgYm91bmRzIGNoZWNrIGlzbid0IGEgc3BlY3VsYXRpb24gKGxpa2UgU3RyaW5n
LCBzb3J0IG9mKSwKKyAgICAgICAgLy8gb3IgYmVjYXVzZSB0aGUgdHlwZSBpbXBsaWVzIGFuIGlt
cHVyZSBhY2Nlc3MuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgQXJy
YXlNb2RlOjpwZXJtaXRzQm91bmRzQ2hlY2tMb3dlcmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IERGRzo6cGVybWl0c0JvdW5kc0NoZWNrTG93ZXJpbmcodHlwZSgpKSAmJiBpc0luQm91bmRzKCk7
Cit9CisKIHZvaWQgQXJyYXlNb2RlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAg
ICAgb3V0LnByaW50KHR5cGUoKSwgYXJyYXlDbGFzcygpLCBzcGVjdWxhdGlvbigpLCBjb252ZXJz
aW9uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcnJheU1vZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCShy
ZXZpc2lvbiAxNjAyOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAsNiArMTEwLDggQEAgSW5kZXhpbmdUeXBlIHRvSW5k
ZXhpbmdTaGFwZShBcnJheTo6VHlwZQogVHlwZWRBcnJheVR5cGUgdG9UeXBlZEFycmF5VHlwZShB
cnJheTo6VHlwZSk7CiBBcnJheTo6VHlwZSB0b0FycmF5VHlwZShUeXBlZEFycmF5VHlwZSk7CiAK
K2Jvb2wgcGVybWl0c0JvdW5kc0NoZWNrTG93ZXJpbmcoQXJyYXk6OlR5cGUpOworCiBjbGFzcyBB
cnJheU1vZGUgewogcHVibGljOgogICAgIEFycmF5TW9kZSgpCkBAIC0zNDIsNiArMzQ0LDggQEAg
cHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wgcGVybWl0c0JvdW5kc0No
ZWNrTG93ZXJpbmcoKSBjb25zdDsKKyAgICAKICAgICBib29sIGJlbmVmaXRzRnJvbU9yaWdpbmFs
QXJyYXkoKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAxNjAyOTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2UgSW50NTJU
b0RvdWJsZToKICAgICBjYXNlIEludDUyVG9WYWx1ZToKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBNb3ZIaW50QW5kQ2hlY2s6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Miw2
ICsxNDIsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczogewor
ICAgICAgICAgICAgICAgIEpTVmFsdWUgbGVmdCA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGls
ZDEoKSkudmFsdWUoKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0gbV9zdGF0ZS5m
b3JOb2RlKG5vZGUtPmNoaWxkMigpKS52YWx1ZSgpOworICAgICAgICAgICAgICAgIGlmIChsZWZ0
ICYmIHJpZ2h0ICYmIGxlZnQuaXNJbnQzMigpICYmIHJpZ2h0LmlzSW50MzIoKQorICAgICAgICAg
ICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obGVmdC5hc0ludDMyKCkpIDwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KHJpZ2h0LmFzSW50MzIoKSkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBlbGltaW5h
dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgICAgIGNhc2Ug
R2V0QnlJZEZsdXNoOiB7CiAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0g
bm9kZS0+Y29kZU9yaWdpbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
aXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODc3LDYgKzg3Nyw3IEBA
IHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgICAgICBjYXNlIEludmFs
aWRhdGlvblBvaW50OgogICAgICAgICBjYXNlIENoZWNrQXJyYXk6CisgICAgICAgIGNhc2UgQ2hl
Y2tJbkJvdW5kczoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZVR5cGUuaAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEZ1bmN0aW9uUmVlbnRyeVdhdGNocG9p
bnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVz
dEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50LCBOb2Rl
TXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0
ZSkgXAogICAgIFwKICAgICAvKiBPcHRpbWl6YXRpb25zIGZvciBhcnJheSBtdXRhdGlvbi4gKi9c
CiAgICAgbWFjcm8oQXJyYXlQdXNoLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZUNsb2JiZXJzV29ybGQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lv
biAxNjAyOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9w
YWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTEwLDcgKzUxMCw4IEBAIHByaXZh
dGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBJ
bnZhbGlkYXRpb25Qb2ludDoKICAgICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6Ci0gICAgICAgIGNh
c2UgSW50NTJUb0RvdWJsZTogeworICAgICAgICBjYXNlIEludDUyVG9Eb3VibGU6CisgICAgICAg
IGNhc2UgQ2hlY2tJbkJvdW5kczogewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBu
ZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAg
ICAgICAgICAvLyBpbnNlcnRlZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2Uu
CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiREZHU1NBTG93ZXJpbmdQaGFzZS5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNs
dWRlICJERkdCYXNpY0Jsb2NrSW5saW5lcy5oIgorI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5j
bHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCisjaW5jbHVkZSAiREZHUGhhc2UuaCIKKyNpbmNsdWRl
ICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xh
c3MgU1NBTG93ZXJpbmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOworICAgIAorcHVibGljOgorICAgIFNTQUxvd2VyaW5nUGhhc2Uo
R3JhcGgmIGdyYXBoKQorICAgICAgICA6IFBoYXNlKGdyYXBoLCAiU1NBIGxvd2VyaW5nIikKKyAg
ICAgICAgLCBtX2luc2VydGlvblNldChncmFwaCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJv
b2wgcnVuKCkKKyAgICB7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09
IFNTQSk7CisgICAgICAgIAorICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1f
Z3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5kZXgtLTspIHsKKyAgICAgICAgICAgIG1fYmxvY2sg
PSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOworICAgICAgICAgICAgaWYgKCFtX2Jsb2NrKQor
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZm9yIChtX25vZGVJbmRleCA9
IDA7IG1fbm9kZUluZGV4IDwgbV9ibG9jay0+c2l6ZSgpOyArK21fbm9kZUluZGV4KSB7CisgICAg
ICAgICAgICAgICAgbV9ub2RlID0gbV9ibG9jay0+YXQobV9ub2RlSW5kZXgpOworICAgICAgICAg
ICAgICAgIGhhbmRsZU5vZGUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faW5zZXJ0
aW9uU2V0LmV4ZWN1dGUobV9ibG9jayk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCBoYW5kbGVOb2RlKCkKKyAgICB7CisgICAg
ICAgIHN3aXRjaCAobV9ub2RlLT5vcCgpKSB7CisgICAgICAgIGNhc2UgR2V0QnlWYWw6CisgICAg
ICAgIGNhc2UgUHV0QnlWYWw6CisgICAgICAgIGNhc2UgUHV0QnlWYWxEaXJlY3Q6IHsKKyAgICAg
ICAgICAgIGlmICghbV9ub2RlLT5hcnJheU1vZGUoKS5wZXJtaXRzQm91bmRzQ2hlY2tMb3dlcmlu
ZygpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgICBF
ZGdlIGJhc2UgPSBtX2dyYXBoLmNoaWxkKG1fbm9kZSwgMCk7CisgICAgICAgICAgICBFZGdlIGlu
ZGV4ID0gbV9ncmFwaC5jaGlsZChtX25vZGUsIDEpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBOb2RlKiBsZW5ndGggPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAg
ICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzIsIEdldEFycmF5TGVuZ3RoLCBtX25vZGUtPmNvZGVP
cmlnaW4sCisgICAgICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3Jk
KCkpLCBiYXNlKTsKKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAg
ICAgICAgICAgICAgbV9ub2RlSW5kZXgsIFNwZWNJbnQzMiwgQ2hlY2tJbkJvdW5kcywgbV9ub2Rl
LT5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgIGluZGV4LCBFZGdlKGxlbmd0aCwgS25vd25J
bnQzMikpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAg
CisgICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9uU2V0OworICAgIEJhc2ljQmxvY2sqIG1fYmxv
Y2s7CisgICAgdW5zaWduZWQgbV9ub2RlSW5kZXg7CisgICAgTm9kZSogbV9ub2RlOworfTsKKwor
Ym9vbCBwZXJmb3JtU1NBTG93ZXJpbmcoR3JhcGgmIGdyYXBoKQoreworICAgIFNhbXBsaW5nUmVn
aW9uIHNhbXBsaW5nUmVnaW9uKCJERkcgU1NBIExvd2VyaW5nIFBoYXNlIik7CisgICAgcmV0dXJu
IHJ1blBoYXNlPFNTQUxvd2VyaW5nUGhhc2U+KGdyYXBoKTsKK30KKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQpCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERGR1NTQUxvd2VyaW5nUGhhc2VfaAorI2RlZmlu
ZSBERkdTU0FMb3dlcmluZ1BoYXNlX2gKKworI2lmIEVOQUJMRShERkdfSklUKQorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CisKK2NsYXNzIEdyYXBoOworCisvLyBQZXJmb3JtcyBE
RkctPkRGRyBsb3dlcmluZ3MgdGhhdCBhcmUgb25seSBhcHByb3ByaWF0ZSBmb3IgU1NBIGZvcm0g
YW5kIHRoZSBGVEwKKy8vIGJhY2tlbmQuIFRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgcnVuIGFmdGVy
IFNTQUNvbnZlcnNpb25QaGFzZS4KKworYm9vbCBwZXJmb3JtU1NBTG93ZXJpbmcoR3JhcGgmKTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRworCisjZW5kaWYgLy8gRU5BQkxFKERGR19KSVQp
CisKKyNlbmRpZiAvLyBERkdTU0FMb3dlcmluZ1BoYXNlX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgJKHJldmlzaW9uIDE2MDI5MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDUsNiArMjQ1LDcgQEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVU
eXBlJiBzdAogICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgY2FzZSBGdW5jdGlvblJlZW50cnlX
YXRjaHBvaW50OgogICAgIGNhc2UgVHlwZWRBcnJheVdhdGNocG9pbnQ6CisgICAgY2FzZSBDaGVj
a0luQm91bmRzOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCiAgICAgY2FzZSBHZXRC
eVZhbDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTc2Nyw3ICsxNzY3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUNvbnRpZ3VvdXNQ
dQogCiAgICAgaWYgKGFycmF5TW9kZS5pc0luQm91bmRzKCkpIHsKICAgICAgICAgc3BlY3VsYXRp
b25DaGVjaygKLSAgICAgICAgICAgIFN0b3JlVG9Ib2xlT3JPdXRPZkJvdW5kcywgSlNWYWx1ZVJl
Z3MoKSwgMCwKKyAgICAgICAgICAgIE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAwLAogICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJv
cGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6
b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBpbkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpC
ZWxvdywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1
dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpAQCAtNDc2Miw2ICs0NzYyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgQ2hlY2tU
aWVyVXBBbmRPU1JFbnRlcjoKICAgICBjYXNlIEludDUyVG9Eb3VibGU6CiAgICAgY2FzZSBJbnQ1
MlRvVmFsdWU6CisgICAgY2FzZSBDaGVja0luQm91bmRzOgogICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9u
IDE2MDI5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5NTYsNyArMjk1Niw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KGFycmF5TW9kZS5pc0luQm91bmRzKCkpIHsKICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKAotICAgICAgICAgICAgICAgICAgICBTdG9yZVRvSG9sZU9yT3V0T2ZCb3VuZHMsIEpTVmFs
dWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgICAgIE91dE9mQm91bmRzLCBKU1ZhbHVlUmVn
cygpLCAwLAogICAgICAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Rv
cmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpbkJvdW5k
cyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcHJvcGVydHlSZWcsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJs
aWNMZW5ndGgoKSkpOwpAQCAtNTA1OSw2ICs1MDU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgVXBzaWxvbjoKICAgICBjYXNlIEdldEFyZ3Vt
ZW50OgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CisgICAgY2FzZSBDaGVja0luQm91
bmRzOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVh
azsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NDAsNyArMTc0
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVYKICAgICAKICAg
ICBpZiAoYXJyYXlNb2RlLmlzSW5Cb3VuZHMoKSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KAotICAgICAgICAgICAgU3RvcmVUb0hvbGVPck91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAw
LAorICAgICAgICAgICAgT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIDAsCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJl
ZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRP
ZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGluQm91bmRzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5
OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxNjAyOTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEwOSw2ICsxMDksNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSog
CiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBMb2dp
Y2FsTm90OgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICAgICAgLy8gVGhlc2UgYXJlIE9L
LgogICAgICAgICBicmVhazsKICAgICBjYXNlIEdldEJ5SWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24gMTYwMjkz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1Miw2ICszNTIsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoOgogICAgICAgICAgICAgY29tcGlsZUdldEFycmF5TGVuZ3RoKCk7CiAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDaGVja0luQm91bmRzOgorICAgICAgICAgICAg
Y29tcGlsZUNoZWNrSW5Cb3VuZHMoKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IEdldEJ5VmFsOgogICAgICAgICAgICAgY29tcGlsZUdldEJ5VmFsKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTE0NzQsNiArMTQ3NywxMyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQog
ICAgIAorICAgIHZvaWQgY29tcGlsZUNoZWNrSW5Cb3VuZHMoKQorICAgIHsKKyAgICAgICAgc3Bl
Y3VsYXRlKAorICAgICAgICAgICAgT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgMCwKKyAgICAgICAg
ICAgIG1fb3V0LmFib3ZlT3JFcXVhbChsb3dJbnQzMihtX25vZGUtPmNoaWxkMSgpKSwgbG93SW50
MzIobV9ub2RlLT5jaGlsZDIoKSkpKTsKKyAgICB9CisgICAgCiAgICAgdm9pZCBjb21waWxlR2V0
QnlWYWwoKQogICAgIHsKICAgICAgICAgc3dpdGNoIChtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUo
KSkgewpAQCAtMTQ4NiwxMSArMTQ5Niw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgbV9o
ZWFwcy5pbmRleGVkSW50MzJQcm9wZXJ0aWVzIDogbV9oZWFwcy5pbmRleGVkQ29udGlndW91c1By
b3BlcnRpZXM7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9k
ZSgpLmlzSW5Cb3VuZHMoKSkgewotICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAg
ICAgICAgICAgICAgT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgMCwKLSAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuYWJvdmVPckVxdWFsKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIG1f
b3V0LmxvYWQzMihzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpKSk7Ci0g
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0Lmxv
YWQ2NChiYXNlSW5kZXgoaGVhcCwgc3RvcmFnZSwgaW5kZXgsIG1fbm9kZS0+Y2hpbGQyKCkpKTsK
ICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoTG9hZEZyb21Ib2xlLCBub1ZhbHVlKCksIDAsIG1f
b3V0LmlzWmVybzY0KHJlc3VsdCkpOwogICAgICAgICAgICAgICAgIHNldEpTVmFsdWUocmVzdWx0
KTsKQEAgLTE1MzEsMTEgKzE1MzYsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgSW5kZXhlZEFi
c3RyYWN0SGVhcCYgaGVhcCA9IG1faGVhcHMuaW5kZXhlZERvdWJsZVByb3BlcnRpZXM7CiAgICAg
ICAgICAgICAKICAgICAgICAgICAgIGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMo
KSkgewotICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgT3V0
T2ZCb3VuZHMsIG5vVmFsdWUoKSwgMCwKLSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWJvdmVP
ckVxdWFsKAotICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIG1fb3V0LmxvYWQzMihzdG9y
YWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpKSk7Ci0gICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmxvYWREb3VibGUoCiAgICAg
ICAgICAgICAgICAgICAgIGJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBpbmRleCwgbV9ub2RlLT5j
aGlsZDIoKSkpOwogICAgICAgICAgICAgICAgIApAQCAtMTU5OSwxMSArMTU5OSw2IEBAIHByaXZh
dGU6CiAgICAgICAgICAgICBUeXBlZEFycmF5VHlwZSB0eXBlID0gbV9ub2RlLT5hcnJheU1vZGUo
KS50eXBlZEFycmF5VHlwZSgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAoaXNUeXBl
ZFZpZXcodHlwZSkpIHsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGUoCi0gICAgICAgICAgICAg
ICAgICAgIE91dE9mQm91bmRzLCBub1ZhbHVlKCksIDAsCi0gICAgICAgICAgICAgICAgICAgIG1f
b3V0LmFib3ZlT3JFcXVhbCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LCB0eXBlZEFy
cmF5TGVuZ3RoKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+YXJyYXlNb2RlKCkpKSk7Ci0gICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgVHlwZWRQb2ludGVyIHBvaW50ZXIgPSBUeXBl
ZFBvaW50ZXIoCiAgICAgICAgICAgICAgICAgICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRp
ZXMsCiAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFkZCgKQEAgLTE3OTEsMTQgKzE3ODYsNiBA
QCBwcml2YXRlOgogICAgICAgICAgICAgVHlwZWRBcnJheVR5cGUgdHlwZSA9IG1fbm9kZS0+YXJy
YXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KGlzVHlwZWRWaWV3KHR5cGUpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1fbm9kZS0+b3AoKSAh
PSBQdXRCeVZhbEFsaWFzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAg
ICAgICAgICAgICAgICAgICAgIE91dE9mQm91bmRzLCBub1ZhbHVlKCksIDAsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZWRBcnJheUxlbmd0
aChjaGlsZDEsIG1fbm9kZS0+YXJyYXlNb2RlKCksIGJhc2UpKSk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIFR5cGVkUG9pbnRlciBwb2ludGVy
ID0gVHlwZWRQb2ludGVyKAogICAgICAgICAgICAgICAgICAgICBtX2hlYXBzLnR5cGVkQXJyYXlQ
cm9wZXJ0aWVzLAogICAgICAgICAgICAgICAgICAgICBtX291dC5hZGQoCkBAIC0zMTAwLDE1ICsz
MDg3LDEyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rpb25U
eXBlPgogICAgIHZvaWQgY29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMoCi0gICAgICAgIEZ1
bmN0aW9uVHlwZSBzbG93UGF0aEZ1bmN0aW9uLAotICAgICAgICBMVmFsdWUgYmFzZSwgTFZhbHVl
IHN0b3JhZ2UsIExWYWx1ZSBpbmRleCwgTFZhbHVlIHZhbHVlLAorICAgICAgICBGdW5jdGlvblR5
cGUgc2xvd1BhdGhGdW5jdGlvbiwgTFZhbHVlIGJhc2UsIExWYWx1ZSBzdG9yYWdlLCBMVmFsdWUg
aW5kZXgsIExWYWx1ZSB2YWx1ZSwKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uKQog
ICAgIHsKICAgICAgICAgTFZhbHVlIGlzTm90SW5Cb3VuZHMgPSBtX291dC5hYm92ZU9yRXF1YWwo
CiAgICAgICAgICAgICBpbmRleCwgbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVy
Zmx5X3B1YmxpY0xlbmd0aCkpOwotICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc0lu
Qm91bmRzKCkpCi0gICAgICAgICAgICBzcGVjdWxhdGUoU3RvcmVUb0hvbGVPck91dE9mQm91bmRz
LCBub1ZhbHVlKCksIDAsIGlzTm90SW5Cb3VuZHMpOwotICAgICAgICBlbHNlIHsKKyAgICAgICAg
aWYgKCFtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkgewogICAgICAgICAgICAgTEJh
c2ljQmxvY2sgbm90SW5Cb3VuZHNDYXNlID0KICAgICAgICAgICAgICAgICBGVExfTkVXX0JMT0NL
KG1fb3V0LCAoIlB1dEJ5VmFsIG5vdCBpbiBib3VuZHMiKSk7CiAgICAgICAgICAgICBMQmFzaWNC
bG9jayBwZXJmb3JtU3RvcmUgPQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218721</attachid>
            <date>2013-12-08 19:50:37 -0800</date>
            <delta_ts>2013-12-08 19:59:15 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>40214</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMjk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBA
CisyMDEzLTEyLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2ZWFsIGFycmF5IGJvdW5kcyBjaGVja3MgaW4gREZHIElSCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUyNTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEluIFNTQSBtb2RlLCB0aGlzIHJl
dmVhbHMgYXJyYXkgYm91bmRzIGNoZWNrcyBhbmQgdGhlIGxvYWQgb2YgYXJyYXkgbGVuZ3RoIGlu
IERGRyBJUiwKKyAgICAgICAgbWFraW5nIHRoaXMgYSBjYW5kaWRhdGUgZm9yIExJQ00uCisKKyAg
ICAgICAgVGhpcyBhbHNvIGZpeGVzIGEgbG9uZy1zdGFuZGluZyBwZXJmb3JtYW5jZSBidWcgd2hl
cmUgdGhlIEpTT2JqZWN0IHNsb3cgcGF0aHMgd291bGQKKyAgICAgICAgYWx3YXlzIGNyZWF0ZSBj
b250aWd1b3VzIHN0b3JhZ2UsIHJhdGhlciB0aGFuIHR5cGUtc3BlY2lhbGl6ZWQgc3RvcmFnZSwg
d2hlbiBkb2luZyBhCisgICAgICAgICJzdG9yYWdlIGNyZWF0aW5nIiBzdG9yYWdlLCBsaWtlOgor
ICAgICAgICAKKyAgICAgICAgICAgIHZhciBvID0ge307CisgICAgICAgICAgICBvWzBdID0gNDI7
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRLaW5kLmNwcDoKKyAgICAgICAgKEpTQzo6ZXhpdEtp
bmRUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmV4aXRLaW5kSXNDb3VudGFibGUpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0V4aXRLaW5kLmg6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6OjpleGVjdXRlRWZmZWN0cyk6Cisg
ICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVybWl0
c0JvdW5kc0NoZWNrTG93ZXJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6cGVy
bWl0c0JvdW5kc0NoZWNrTG93ZXJpbmcpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Omxlbmd0aE5lZWRzU3RvcmFnZSk6CisgICAg
ICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXpl
KToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAg
KiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToK
KyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpERkc6OlNTQUxvd2VyaW5nUGhhc2U6OlNTQUxvd2VyaW5nUGhhc2UpOgorICAgICAgICAo
SlNDOjpERkc6OlNTQUxvd2VyaW5nUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6U1NB
TG93ZXJpbmdQaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJp
bmdQaGFzZTo6bG93ZXJCb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVNT
QUxvd2VyaW5nKToKKyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5oOiBBZGRlZC4K
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZhbCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29udGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0luQm91bmRzKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Y29udmVydFVuZGVjaWRlZEZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNy
ZWF0ZUluaXRpYWxGb3JWYWx1ZUFuZFNldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Zsb2F0MzJhcnJheS1vdXQtb2YtYm91bmRzLmpz
OiBBZGRlZC4KKyAgICAgICAgKG1ha2UpOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9pbnQzMi1vYmplY3Qtb3V0LW9mLWJvdW5kcy5qczog
QWRkZWQuCisgICAgICAgIChtYWtlKToKKyAgICAgICAgKGZvbyk6CisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvaW50MzItb3V0LW9mLWJvdW5kcy5qczogQWRkZWQuCisg
ICAgICAgIChmb28pOgorICAgICAgICAodGVzdCk6CisKIDIwMTMtMTItMDggIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGhlIG5vdGlvbiBvZiBDb25zdGFu
dFN0b3JhZ2VQb2ludGVyIHRvIERGRyBJUgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CiAgICAgZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAKICAgICBkZmcv
REZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAorICAgIGRmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNw
cAogICAgIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKICAgICBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKICAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNjAyOTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5
KQpAQCAtMzc3LDYgKzM3Nyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdGFja0xheW91dFBoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdGFja0xheW91dFBoYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNjAyOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC00MTEsNiArNDExLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR1NTQUxvd2VyaW5nUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cZGZnXERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cZGZnXERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1RodW5rcy5jcHAiIC8+CkBAIC05MTgsNiAr
OTE5LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTbG93UGF0aEdlbmVy
YXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1NwZWN1bGF0aXZl
SklULmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU1NBQ29udmVyc2lv
blBoYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU1NBTG93ZXJp
bmdQaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1N0YWNrTGF5
b3V0UGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZH
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE2MDI5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zODEs
NiArMzgxLDggQEAKIAkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3QTAxNDZC
MjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGQzIwQ0I1MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQzIwQ0IzMTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmNwcCAqLzsgfTsKIAkJMEZDMjBDQjYxODUyRTJDNjAwQzlFOTU0IC8qIERGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQzIwQ0I0MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZDMjBDQjkxODU1NkEzNTAwQzlFOTU0IC8qIERGR1NTQUxvd2VyaW5nUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMjBDQjcx
ODU1NkEzNTAwQzlFOTU0IC8qIERGR1NTQUxvd2VyaW5nUGhhc2UuY3BwICovOyB9OworCQkwRkMy
MENCQTE4NTU2QTM1MDBDOUU5NTQgLyogREZHU1NBTG93ZXJpbmdQaGFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMjBDQjgxODU1NkEzNTAwQzlF
OTU0IC8qIERGR1NTQUxvd2VyaW5nUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkMzMTQxMjE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0
ZXJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QzMxNDEwMTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIz
MiAvKiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZDMzE0MTExODE0NTU5MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNl
dC5jcHAgKi87IH07CiAJCTBGQzMxNDE1MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMzMTQx
NDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwICovOyB9OwpAQCAtMTcwNSw2ICsx
NzA3LDggQEAKIAkJMEZDMDk3QTAxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdUaHVua3MuaDsgcGF0aCA9IGRmZy9ERkdU
aHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMjBDQjMxODUyRTJDNjAw
QzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA7IHBhdGgg
PSBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGQzIwQ0I0MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzIwQ0I3MTg1NTZBMzUwMEM5RTk1NCAvKiBE
RkdTU0FMb3dlcmluZ1BoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR1NTQUxvd2VyaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1NTQUxvd2VyaW5nUGhh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMyMENCODE4NTU2QTM1MDBD
OUU5NTQgLyogREZHU1NBTG93ZXJpbmdQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdTU0FMb3dlcmluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZHU1NBTG93ZXJpbmdQ
aGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMzMTQxMDE4MTQ1NTkxMDAw
MzMyMzIgLyogUmVnaXN0ZXJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVnaXN0ZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMzE0MTExODE0
NTU5MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZW1wUmVnaXN0ZXJTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkMzMTQxNDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0ZXJTZXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzk2NCw2ICszOTY4LDggQEAKIAkJCQk4Njg4MEY0
QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi8sCiAJCQkJQTdE
ODlDRjAxN0EwQjhDQzAwNzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAgKi8sCiAJ
CQkJQTdEODlDRjExN0EwQjhDQzAwNzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5oICov
LAorCQkJCTBGQzIwQ0I3MTg1NTZBMzUwMEM5RTk1NCAvKiBERkdTU0FMb3dlcmluZ1BoYXNlLmNw
cCAqLywKKwkJCQkwRkMyMENCODE4NTU2QTM1MDBDOUU5NTQgLyogREZHU1NBTG93ZXJpbmdQaGFz
ZS5oICovLAogCQkJCTBGOUZCNEYyMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBo
YXNlLmNwcCAqLywKIAkJCQkwRjlGQjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlv
dXRQaGFzZS5oICovLAogCQkJCTBGQzIwQ0IzMTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcCAqLywKQEAgLTQzODcsNiArNDM5Myw3IEBACiAJCQkJQTczRTEz
MzExNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMyQzBGN0NFMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNp
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTg1MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBE
RkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzIwQ0JBMTg1NTZB
MzUwMEM5RTk1NCAvKiBERkdTU0FMb3dlcmluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
Mjk4MUZEOTE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMjk4MUZERDE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdy
aXRlQmFycmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzY1MTU5MUExQ0UwMDRDQjlG
RiAvKiBERkdEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNTcyMiw2ICs1NzI5LDcg
QEAKIAkJCQk5NjlBMDc5QTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODUwMTA3RUMwRDcwMDEzRTdCMiAvKiBPcGVyYXRpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGQzIwQ0I5MTg1NTZBMzUwMEM5RTk1NCAvKiBERkdTU0FMb3dl
cmluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEYyMUJDMTA3RUM1NEQwMDQyRUMy
QyAvKiBQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMwNTJDMzQwRkI3OTIxOTAwNDhG
REMzIC8qIFBhcnNlckFyZW5hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUZDOEMzMTRFMUI1
RkUwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZp
c2lvbiAxNjAyOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw4ICs2NCw2IEBAIGNvbnN0IGNoYXIqIGV4aXRLaW5k
VG9TdHJpbmcoRXhpdEtpbmQga2kKICAgICAgICAgcmV0dXJuICJMb2FkRnJvbUhvbGUiOwogICAg
IGNhc2UgT3V0T2ZCb3VuZHM6CiAgICAgICAgIHJldHVybiAiT3V0T2ZCb3VuZHMiOwotICAgIGNh
c2UgU3RvcmVUb0hvbGVPck91dE9mQm91bmRzOgotICAgICAgICByZXR1cm4gIlN0b3JlVG9Ib2xl
T3JPdXRPZkJvdW5kcyI7CiAgICAgY2FzZSBJbmFkZXF1YXRlQ292ZXJhZ2U6CiAgICAgICAgIHJl
dHVybiAiSW5hZGVxdWF0ZUNvdmVyYWdlIjsKICAgICBjYXNlIEFyZ3VtZW50c0VzY2FwZWQ6CkBA
IC05Niw3ICs5NCw2IEBAIGJvb2wgZXhpdEtpbmRJc0NvdW50YWJsZShFeGl0S2luZCBraW5kKQog
ICAgIGNhc2UgTG9hZEZyb21Ib2xlOiAvLyBBbHJlYWR5IGNvdW50ZWQgZGlyZWN0bHkgYnkgdGhl
IGJhc2VsaW5lIEpJVC4KICAgICBjYXNlIFN0b3JlVG9Ib2xlOiAvLyBBbHJlYWR5IGNvdW50ZWQg
ZGlyZWN0bHkgYnkgdGhlIGJhc2VsaW5lIEpJVC4KICAgICBjYXNlIE91dE9mQm91bmRzOiAvLyBB
bHJlYWR5IGNvdW50ZWQgZGlyZWN0bHkgYnkgdGhlIGJhc2VsaW5lIEpJVC4KLSAgICBjYXNlIFN0
b3JlVG9Ib2xlT3JPdXRPZkJvdW5kczogLy8gQWxyZWFkeSBjb3VudGVkIGRpcmVjdGx5IGJ5IHRo
ZSBiYXNlbGluZSBKSVQuCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0S2luZC5oCShyZXZpc2lvbiAxNjAyOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBlbnVtIEV4
aXRLaW5kIHsKICAgICBTdG9yZVRvSG9sZSwgLy8gV2UgaGFkIGEgc3RvcmUgdG8gYSBob2xlLgog
ICAgIExvYWRGcm9tSG9sZSwgLy8gV2UgaGFkIGEgbG9hZCBmcm9tIGEgaG9sZS4KICAgICBPdXRP
ZkJvdW5kcywgLy8gV2UgaGFkIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIHRvIGFuIGFycmF5Lgot
ICAgIFN0b3JlVG9Ib2xlT3JPdXRPZkJvdW5kcywgLy8gV2UncmUgc2ltdWx0YW5lb3VzbHkgc3Bl
Y3VsYXRpbmcgdGhhdCB3ZSdyZSBpbiBib3VuZHMgYW5kIG5vdCBhY2Nlc3NpbmcgYSBob2xlLCBh
bmQgb25lIG9mIHRob3NlIHRoaW5ncyBkaWRuJ3QgcGFuIG91dC4KICAgICBJbmFkZXF1YXRlQ292
ZXJhZ2UsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuZGVkIHVwIGluIGNvZGUgdGhhdCBkaWRu
J3QgaGF2ZSBwcm9maWxpbmcgY292ZXJhZ2UuCiAgICAgQXJndW1lbnRzRXNjYXBlZCwgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2UgYXJndW1lbnRzIGVzY2FwZWQgYnV0IHdlIGRpZG4ndCBleHBlY3QgdGhl
bSB0by4KICAgICBOb3RTdHJpbmdPYmplY3QsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIHNob3Vs
ZG4ndCBoYXZlIGF0dGVtcHRlZCB0byBvcHRpbWl6ZSBzdHJpbmcgb2JqZWN0IGFjY2Vzcy4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE2MDI5MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQ3Miw2ICsxNDcyLDE5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIENoZWNr
SW5Cb3VuZHM6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkudmFsdWUoKTsKKyAgICAgICAgSlNWYWx1ZSByaWdodCA9IGZvck5vZGUobm9kZS0+Y2hpbGQy
KCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNJbnQzMigp
ICYmIHJpZ2h0LmlzSW50MzIoKQorICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGxlZnQuYXNJbnQzMigpKSA8IHN0YXRpY19jYXN0PHVpbnQzMl90PihyaWdodC5hc0ludDMyKCkp
KSB7CisgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5vZGUtPnNldENhbkV4
aXQodHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBQdXRC
eUlkOgogICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0
cnVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJ
KHJldmlzaW9uIDE2MDI5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlN
b2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ4LDYgKzU0OCwzNiBAQCBBcnJheTo6VHlwZSB0
b0FycmF5VHlwZShUeXBlZEFycmF5VHlwZSB0CiAgICAgfQogfQogCitib29sIHBlcm1pdHNCb3Vu
ZHNDaGVja0xvd2VyaW5nKEFycmF5OjpUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgIGNh
c2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgY2FzZSBBcnJheTo6SW50OEFycmF5OgorICAgIGNh
c2UgQXJyYXk6OkludDE2QXJyYXk6CisgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICBj
YXNlIEFycmF5OjpVaW50OEFycmF5OgorICAgIGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5
OgorICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgorICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFy
cmF5OgorICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICBjYXNlIEFycmF5OjpGbG9h
dDY0QXJyYXk6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8v
IFRoZXNlIGRvbid0IGFsbG93IGZvciBib3VuZHMgY2hlY2sgbG93ZXJpbmcgZWl0aGVyIGJlY2F1
c2UgdGhlIGJvdW5kcworICAgICAgICAvLyBjaGVjayBpbnZvbHZlcyBzb21ldGhpbmcgb3RoZXIg
dGhhbiBHZXRBcnJheUxlbmd0aCAobGlrZSBBcnJheVN0b3JhZ2UpLAorICAgICAgICAvLyBvciBi
ZWNhdXNlIHRoZSBib3VuZHMgY2hlY2sgaXNuJ3QgYSBzcGVjdWxhdGlvbiAobGlrZSBTdHJpbmcs
IHNvcnQgb2YpLAorICAgICAgICAvLyBvciBiZWNhdXNlIHRoZSB0eXBlIGltcGxpZXMgYW4gaW1w
dXJlIGFjY2Vzcy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBBcnJh
eU1vZGU6OnBlcm1pdHNCb3VuZHNDaGVja0xvd2VyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
REZHOjpwZXJtaXRzQm91bmRzQ2hlY2tMb3dlcmluZyh0eXBlKCkpICYmIGlzSW5Cb3VuZHMoKTsK
K30KKwogdm9pZCBBcnJheU1vZGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAg
ICBvdXQucHJpbnQodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNp
b24oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHJl
dmlzaW9uIDE2MDI5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsOCBAQCBJbmRleGluZ1R5cGUgdG9JbmRl
eGluZ1NoYXBlKEFycmF5OjpUeXBlCiBUeXBlZEFycmF5VHlwZSB0b1R5cGVkQXJyYXlUeXBlKEFy
cmF5OjpUeXBlKTsKIEFycmF5OjpUeXBlIHRvQXJyYXlUeXBlKFR5cGVkQXJyYXlUeXBlKTsKIAor
Ym9vbCBwZXJtaXRzQm91bmRzQ2hlY2tMb3dlcmluZyhBcnJheTo6VHlwZSk7CisKIGNsYXNzIEFy
cmF5TW9kZSB7CiBwdWJsaWM6CiAgICAgQXJyYXlNb2RlKCkKQEAgLTI5Miw3ICsyOTQsMTcgQEAg
cHVibGljOgogICAgIAogICAgIGJvb2wgbGVuZ3RoTmVlZHNTdG9yYWdlKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBpc0pTQXJyYXkoKTsKKyAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsK
KyAgICAgICAgY2FzZSBBcnJheTo6VW5kZWNpZGVkOgorICAgICAgICBjYXNlIEFycmF5OjpJbnQz
MjoKKyAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgICAgICBjYXNlIEFycmF5OjpDb250
aWd1b3VzOgorICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CisgICAgICAgIGNhc2Ug
QXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAg
IH0KICAgICAKICAgICBBcnJheU1vZGUgbW9kZUZvclB1dCgpIGNvbnN0CkBAIC0zNDIsNiArMzU0
LDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wgcGVybWl0c0Jv
dW5kc0NoZWNrTG93ZXJpbmcoKSBjb25zdDsKKyAgICAKICAgICBib29sIGJlbmVmaXRzRnJvbU9y
aWdpbmFsQXJyYXkoKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAx
NjAyOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2Ug
SW50NTJUb0RvdWJsZToKICAgICBjYXNlIEludDUyVG9WYWx1ZToKKyAgICBjYXNlIENoZWNrSW5C
b3VuZHM6CiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBNb3ZIaW50QW5kQ2hl
Y2s6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9sZGluZ1Bo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0Miw2ICsxNDIsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5k
czogeworICAgICAgICAgICAgICAgIEpTVmFsdWUgbGVmdCA9IG1fc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkudmFsdWUoKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHJpZ2h0ID0gbV9z
dGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS52YWx1ZSgpOworICAgICAgICAgICAgICAgIGlm
IChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNJbnQzMigpICYmIHJpZ2h0LmlzSW50MzIoKQorICAg
ICAgICAgICAgICAgICAgICAmJiBzdGF0aWNfY2FzdDx1aW50MzJfdD4obGVmdC5hc0ludDMyKCkp
IDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJpZ2h0LmFzSW50MzIoKSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZS0+Y29udmVydFRvUGhhbnRvbSgpOworICAgICAgICAgICAgICAgICAgICBl
bGltaW5hdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgfQorICAgICAgICAKICAgICAgICAgICAgIGNhc2UgR2V0QnlJZDoKICAgICAgICAgICAg
IGNhc2UgR2V0QnlJZEZsdXNoOiB7CiAgICAgICAgICAgICAgICAgQ29kZU9yaWdpbiBjb2RlT3Jp
Z2luID0gbm9kZS0+Y29kZU9yaWdpbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODc3LDYgKzg3
Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50NTJUb1ZhbHVlOgogICAgICAgICBjYXNl
IEludmFsaWRhdGlvblBvaW50OgogICAgICAgICBjYXNlIENoZWNrQXJyYXk6CisgICAgICAgIGNh
c2UgQ2hlY2tJbkJvdW5kczoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICBicmVhazsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEsNiArMTkxLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEZ1bmN0aW9uUmVlbnRyeVdh
dGNocG9pbnQsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBO
b2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11c3RH
ZW5lcmF0ZSkgXAogICAgIFwKICAgICAvKiBPcHRpbWl6YXRpb25zIGZvciBhcnJheSBtdXRhdGlv
bi4gKi9cCiAgICAgbWFjcm8oQXJyYXlQdXNoLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVy
YXRlIHwgTm9kZUNsb2JiZXJzV29ybGQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHUGxhbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQbGFuLmNwcAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdQbGFuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUg
IkRGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUmVzdXJyZWN0
aW9uRm9yVmFsaWRhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHU1NBQ29udmVyc2lvblBoYXNl
LmgiCisjaW5jbHVkZSAiREZHU1NBTG93ZXJpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRGR1N0YWNr
TGF5b3V0UGhhc2UuaCIKICNpbmNsdWRlICJERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmgiCiAj
aW5jbHVkZSAiREZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5oIgpAQCAtMjY2LDYgKzI2Nyw3
IEBAIFBsYW46OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgcGVy
Zm9ybUxvb3BQcmVIZWFkZXJDcmVhdGlvbihkZmcpOwogICAgICAgICBwZXJmb3JtQ1BTUmV0aHJl
YWRpbmcoZGZnKTsKICAgICAgICAgcGVyZm9ybVNTQUNvbnZlcnNpb24oZGZnKTsKKyAgICAgICAg
cGVyZm9ybVNTQUxvd2VyaW5nKGRmZyk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lz
KGRmZyk7CiAgICAgICAgIHBlcmZvcm1DRkEoZGZnKTsKICAgICAgICAgcGVyZm9ybUxJQ00oZGZn
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0
aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjAyOTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTEwLDcgKzUxMCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2Ug
Q2hlY2tUaWVyVXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoK
ICAgICAgICAgY2FzZSBJbnQ1MlRvVmFsdWU6Ci0gICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZTog
eworICAgICAgICBjYXNlIEludDUyVG9Eb3VibGU6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5k
czogewogICAgICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0
IHRoaXMgc3RhZ2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAgICAgICAgICAvLyBpbnNlcnRl
ZCBieSBmaXh1cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2UuCiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHU1NBTG93ZXJpbmdQ
aGFzZS5oIgorCisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdCYXNpY0Jsb2Nr
SW5saW5lcy5oIgorI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHSW5zZXJ0aW9u
U2V0LmgiCisjaW5jbHVkZSAiREZHUGhhc2UuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgU1NBTG93ZXJpbmdQaGFz
ZSA6IHB1YmxpYyBQaGFzZSB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNl
OworICAgIAorcHVibGljOgorICAgIFNTQUxvd2VyaW5nUGhhc2UoR3JhcGgmIGdyYXBoKQorICAg
ICAgICA6IFBoYXNlKGdyYXBoLCAiU1NBIGxvd2VyaW5nIikKKyAgICAgICAgLCBtX2luc2VydGlv
blNldChncmFwaCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wgcnVuKCkKKyAgICB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CisgICAgICAgIAor
ICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7
IGJsb2NrSW5kZXgtLTspIHsKKyAgICAgICAgICAgIG1fYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJs
b2NrSW5kZXgpOworICAgICAgICAgICAgaWYgKCFtX2Jsb2NrKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgZm9yIChtX25vZGVJbmRleCA9IDA7IG1fbm9kZUluZGV4IDwg
bV9ibG9jay0+c2l6ZSgpOyArK21fbm9kZUluZGV4KSB7CisgICAgICAgICAgICAgICAgbV9ub2Rl
ID0gbV9ibG9jay0+YXQobV9ub2RlSW5kZXgpOworICAgICAgICAgICAgICAgIGhhbmRsZU5vZGUo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUobV9i
bG9jayk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZh
dGU6CisgICAgdm9pZCBoYW5kbGVOb2RlKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9ub2Rl
LT5vcCgpKSB7CisgICAgICAgIGNhc2UgR2V0QnlWYWw6CisgICAgICAgICAgICBsb3dlckJvdW5k
c0NoZWNrKG1fbm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCksIG1fbm9kZS0+Y2hpbGQz
KCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBQdXRC
eVZhbDoKKyAgICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKKyAgICAgICAgICAgIGxvd2VyQm91
bmRzQ2hlY2soCisgICAgICAgICAgICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDAp
LAorICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSwKKyAgICAg
ICAgICAgICAgICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgbG93ZXJCb3VuZHNDaGVjayhFZGdl
IGJhc2UsIEVkZ2UgaW5kZXgsIEVkZ2Ugc3RvcmFnZSkKKyAgICB7CisgICAgICAgIGlmICghbV9u
b2RlLT5hcnJheU1vZGUoKS5wZXJtaXRzQm91bmRzQ2hlY2tMb3dlcmluZygpKQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaWYgKCFtX25vZGUtPmFycmF5TW9kZSgpLmxl
bmd0aE5lZWRzU3RvcmFnZSgpKQorICAgICAgICAgICAgc3RvcmFnZSA9IEVkZ2UoKTsKKyAgICAg
ICAgCisgICAgICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisg
ICAgICAgICAgICBtX25vZGVJbmRleCwgU3BlY0ludDMyLCBHZXRBcnJheUxlbmd0aCwgbV9ub2Rl
LT5jb2RlT3JpZ2luLAorICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNX
b3JkKCkpLCBiYXNlLCBzdG9yYWdlKTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9k
ZSgKKyAgICAgICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzIsIENoZWNrSW5Cb3VuZHMsIG1f
bm9kZS0+Y29kZU9yaWdpbiwKKyAgICAgICAgICAgIGluZGV4LCBFZGdlKGxlbmd0aCwgS25vd25J
bnQzMlVzZSkpOworICAgIH0KKyAgICAKKyAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7
CisgICAgQmFzaWNCbG9jayogbV9ibG9jazsKKyAgICB1bnNpZ25lZCBtX25vZGVJbmRleDsKKyAg
ICBOb2RlKiBtX25vZGU7Cit9OworCitib29sIHBlcmZvcm1TU0FMb3dlcmluZyhHcmFwaCYgZ3Jh
cGgpCit7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBTU0EgTG93ZXJp
bmcgUGhhc2UiKTsKKyAgICByZXR1cm4gcnVuUGhhc2U8U1NBTG93ZXJpbmdQaGFzZT4oZ3JhcGgp
OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZH
X0pJVCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1Bo
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dl
cmluZ1BoYXNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NTQUxvd2VyaW5nUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHU1NB
TG93ZXJpbmdQaGFzZV9oCisjZGVmaW5lIERGR1NTQUxvd2VyaW5nUGhhc2VfaAorCisjaWYgRU5B
QkxFKERGR19KSVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3Mg
R3JhcGg7CisKKy8vIFBlcmZvcm1zIERGRy0+REZHIGxvd2VyaW5ncyB0aGF0IGFyZSBvbmx5IGFw
cHJvcHJpYXRlIGZvciBTU0EgZm9ybSBhbmQgdGhlIEZUTAorLy8gYmFja2VuZC4gVGhpcyBpcyBp
bnRlbmRlZCB0byBiZSBydW4gYWZ0ZXIgU1NBQ29udmVyc2lvblBoYXNlLgorCitib29sIHBlcmZv
cm1TU0FMb3dlcmluZyhHcmFwaCYpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNl
bmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR1NTQUxvd2VyaW5nUGhhc2Vf
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsNyBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAg
ICBjYXNlIEZ1bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQ6CiAgICAgY2FzZSBUeXBlZEFycmF5V2F0
Y2hwb2ludDoKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAKICAgICBjYXNlIEdldEJ5VmFsOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxNjAy
OTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzY3LDcgKzE3NjcsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQ29udGlndW91c1B1CiAKICAgICBpZiAoYXJyYXlNb2RlLmlzSW5Cb3VuZHMo
KSkgewogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgU3RvcmVUb0hvbGVP
ck91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgT3V0T2ZCb3VuZHMs
IEpTVmFsdWVSZWdzKCksIDAsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGluQm91bmRzID0gbV9qaXQuYnJh
bmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7
CkBAIC00NzYyLDYgKzQ3NjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBDaGVja1RpZXJVcEFuZE9TUkVudGVyOgogICAgIGNhc2UgSW50NTJU
b0RvdWJsZToKICAgICBjYXNlIEludDUyVG9WYWx1ZToKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHM6
CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTYwMjkzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjk1Niw3ICsy
OTU2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBpZiAoYXJyYXlNb2RlLmlzSW5Cb3VuZHMoKSkgewogICAgICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICAgICAgICAgIFN0b3JlVG9I
b2xlT3JPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAg
T3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIDAsCiAgICAgICAgICAgICAgICAgICAgIG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGlj
TGVuZ3RoKCkpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIGluQm91bmRzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkJlbG93LCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywg
QnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBAIC01MDU5LDYgKzUwNTksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2FzZSBVcHNp
bG9uOgogICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2Nh
bDoKKyAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxNjAyOTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTc0MCw3ICsxNzQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZURvdWJsZVB1dEJ5VgogICAgIAogICAgIGlmIChhcnJheU1vZGUuaXNJbkJvdW5kcygpKSB7CiAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBTdG9yZVRvSG9sZU9yT3V0T2ZC
b3VuZHMsIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBPdXRPZkJvdW5kcywgSlNWYWx1
ZVJlZ3MoKSwgMCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdl
UmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaW5Cb3VuZHMgPSBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6QmVsb3csIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlz
aW9uIDE2MDI5MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIGlubGluZSBDYXBhYmlsaXR5
TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiAKICAgICBjYXNlIFZhbHVlVG9JbnQzMjoKICAgICBjYXNl
IEJyYW5jaDoKICAgICBjYXNlIExvZ2ljYWxOb3Q6CisgICAgY2FzZSBDaGVja0luQm91bmRzOgog
ICAgICAgICAvLyBUaGVzZSBhcmUgT0suCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgR2V0QnlJ
ZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xM
Vk0uY3BwCShyZXZpc2lvbiAxNjAyOTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9MTFZNLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUyLDYgKzM1Miw5IEBAIHBy
aXZhdGU6CiAgICAgICAgIGNhc2UgR2V0QXJyYXlMZW5ndGg6CiAgICAgICAgICAgICBjb21waWxl
R2V0QXJyYXlMZW5ndGgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENoZWNr
SW5Cb3VuZHM6CisgICAgICAgICAgICBjb21waWxlQ2hlY2tJbkJvdW5kcygpOworICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgR2V0QnlWYWw6CiAgICAgICAgICAgICBjb21waWxlR2V0
QnlWYWwoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ3NCw2ICsxNDc3LDEzIEBAIHByaXZh
dGU6CiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgdm9pZCBjb21waWxlQ2hlY2tJbkJvdW5k
cygpCisgICAgeworICAgICAgICBzcGVjdWxhdGUoCisgICAgICAgICAgICBPdXRPZkJvdW5kcywg
bm9WYWx1ZSgpLCAwLAorICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKGxvd0ludDMyKG1f
bm9kZS0+Y2hpbGQxKCkpLCBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSkpOworICAgIH0KKyAg
ICAKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbCgpCiAgICAgewogICAgICAgICBzd2l0Y2ggKG1f
bm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpKSB7CkBAIC0xNDg2LDExICsxNDk2LDYgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBtX2hlYXBzLmluZGV4ZWRJbnQzMlByb3BlcnRpZXMgOiBtX2hl
YXBzLmluZGV4ZWRDb250aWd1b3VzUHJvcGVydGllczsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpKSB7Ci0gICAgICAgICAgICAg
ICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgICAgICAgICBPdXRPZkJvdW5kcywgbm9WYWx1ZSgp
LCAwLAotICAgICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleCwgbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVy
Zmx5X3B1YmxpY0xlbmd0aCkpKTsKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gbV9vdXQubG9hZDY0KGJhc2VJbmRleChoZWFwLCBzdG9yYWdlLCBpbmRl
eCwgbV9ub2RlLT5jaGlsZDIoKSkpOwogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShMb2FkRnJv
bUhvbGUsIG5vVmFsdWUoKSwgMCwgbV9vdXQuaXNaZXJvNjQocmVzdWx0KSk7CiAgICAgICAgICAg
ICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwpAQCAtMTUzMSwxMSArMTUzNiw2IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICBJbmRleGVkQWJzdHJhY3RIZWFwJiBoZWFwID0gbV9oZWFwcy5pbmRleGVk
RG91YmxlUHJvcGVydGllczsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1fbm9kZS0+
YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpKSB7Ci0gICAgICAgICAgICAgICAgc3BlY3VsYXRlKAot
ICAgICAgICAgICAgICAgICAgICBPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCAwLAotICAgICAgICAg
ICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoCi0gICAgICAgICAgICAgICAgICAgICAgICBp
bmRleCwgbV9vdXQubG9hZDMyKHN0b3JhZ2UsIG1faGVhcHMuQnV0dGVyZmx5X3B1YmxpY0xlbmd0
aCkpKTsKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0g
bV9vdXQubG9hZERvdWJsZSgKICAgICAgICAgICAgICAgICAgICAgYmFzZUluZGV4KGhlYXAsIHN0
b3JhZ2UsIGluZGV4LCBtX25vZGUtPmNoaWxkMigpKSk7CiAgICAgICAgICAgICAgICAgCkBAIC0x
NTk5LDExICsxNTk5LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFR5cGVkQXJyYXlUeXBlIHR5
cGUgPSBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChpc1R5cGVkVmlldyh0eXBlKSkgewotICAgICAgICAgICAgICAgIHNw
ZWN1bGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgMCwK
LSAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFsKAotICAgICAgICAgICAgICAg
ICAgICAgICAgaW5kZXgsIHR5cGVkQXJyYXlMZW5ndGgobV9ub2RlLT5jaGlsZDEoKSwgbV9ub2Rl
LT5hcnJheU1vZGUoKSkpKTsKLSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBUeXBl
ZFBvaW50ZXIgcG9pbnRlciA9IFR5cGVkUG9pbnRlcigKICAgICAgICAgICAgICAgICAgICAgbV9o
ZWFwcy50eXBlZEFycmF5UHJvcGVydGllcywKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWRk
KApAQCAtMTc5MSwxNCArMTc4Niw2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBUeXBlZEFycmF5
VHlwZSB0eXBlID0gbV9ub2RlLT5hcnJheU1vZGUoKS50eXBlZEFycmF5VHlwZSgpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBpZiAoaXNUeXBlZFZpZXcodHlwZSkpIHsKLSAgICAgICAgICAg
ICAgICBpZiAobV9ub2RlLT5vcCgpICE9IFB1dEJ5VmFsQWxpYXMpIHsKLSAgICAgICAgICAgICAg
ICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgT3V0T2ZCb3VuZHMsIG5v
VmFsdWUoKSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbCgK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0eXBlZEFycmF5TGVuZ3RoKGNoaWxkMSwgbV9ub2RlLT5hcnJheU1vZGUoKSwgYmFz
ZSkpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgVHlwZWRQb2ludGVyIHBvaW50ZXIgPSBUeXBlZFBvaW50ZXIoCiAgICAgICAgICAgICAgICAg
ICAgIG1faGVhcHMudHlwZWRBcnJheVByb3BlcnRpZXMsCiAgICAgICAgICAgICAgICAgICAgIG1f
b3V0LmFkZCgKQEAgLTMxMDAsMTUgKzMwODcsMTIgQEAgcHJpdmF0ZToKICAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdGlvblR5cGU+CiAgICAgdm9pZCBjb250aWd1b3VzUHV0QnlWYWxP
dXRPZkJvdW5kcygKLSAgICAgICAgRnVuY3Rpb25UeXBlIHNsb3dQYXRoRnVuY3Rpb24sCi0gICAg
ICAgIExWYWx1ZSBiYXNlLCBMVmFsdWUgc3RvcmFnZSwgTFZhbHVlIGluZGV4LCBMVmFsdWUgdmFs
dWUsCisgICAgICAgIEZ1bmN0aW9uVHlwZSBzbG93UGF0aEZ1bmN0aW9uLCBMVmFsdWUgYmFzZSwg
TFZhbHVlIHN0b3JhZ2UsIExWYWx1ZSBpbmRleCwgTFZhbHVlIHZhbHVlLAogICAgICAgICBMQmFz
aWNCbG9jayBjb250aW51YXRpb24pCiAgICAgewogICAgICAgICBMVmFsdWUgaXNOb3RJbkJvdW5k
cyA9IG1fb3V0LmFib3ZlT3JFcXVhbCgKICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzIo
c3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGljTGVuZ3RoKSk7Ci0gICAgICAgIGlmICht
X25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkKLSAgICAgICAgICAgIHNwZWN1bGF0ZShT
dG9yZVRvSG9sZU9yT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgMCwgaXNOb3RJbkJvdW5kcyk7Ci0g
ICAgICAgIGVsc2UgeworICAgICAgICBpZiAoIW1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5k
cygpKSB7CiAgICAgICAgICAgICBMQmFzaWNCbG9jayBub3RJbkJvdW5kc0Nhc2UgPQogICAgICAg
ICAgICAgICAgIEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiUHV0QnlWYWwgbm90IGluIGJvdW5kcyIp
KTsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIHBlcmZvcm1TdG9yZSA9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxNjAyOTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTkwNiw3ICs5MDYsNyBAQCB2b2lkIEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkRm9y
VmFsdWUoCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgaWYgKHZhbHVlLmlzRG91
YmxlKCkpIHsKKyAgICBpZiAodmFsdWUuaXNEb3VibGUoKSAmJiB2YWx1ZS5hc051bWJlcigpID09
IHZhbHVlLmFzTnVtYmVyKCkpIHsKICAgICAgICAgY29udmVydFVuZGVjaWRlZFRvRG91YmxlKHZt
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTkxNCw2ICs5MTQsMjQgQEAgdm9pZCBKU09i
amVjdDo6Y29udmVydFVuZGVjaWRlZEZvclZhbHVlKAogICAgIGNvbnZlcnRVbmRlY2lkZWRUb0Nv
bnRpZ3VvdXModm0pOwogfQogCit2b2lkIEpTT2JqZWN0OjpjcmVhdGVJbml0aWFsRm9yVmFsdWVB
bmRTZXQoVk0mIHZtLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBpZiAo
dmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgIGNyZWF0ZUluaXRpYWxJbnQzMih2bSwgaW5kZXgg
KyAxKVtpbmRleF0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgaWYgKHZhbHVlLmlzRG91YmxlKCkpIHsKKyAgICAgICAgZG91YmxlIGRvdWJs
ZVZhbHVlID0gdmFsdWUuYXNOdW1iZXIoKTsKKyAgICAgICAgaWYgKGRvdWJsZVZhbHVlID09IGRv
dWJsZVZhbHVlKSB7CisgICAgICAgICAgICBjcmVhdGVJbml0aWFsRG91YmxlKHZtLCBpbmRleCAr
IDEpW2luZGV4XSA9IGRvdWJsZVZhbHVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIGNyZWF0ZUluaXRpYWxDb250aWd1b3VzKHZtLCBpbmRleCArIDEp
W2luZGV4XS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKK30KKwogdm9pZCBKU09iamVjdDo6Y29udmVy
dEludDMyRm9yVmFsdWUoVk0mIHZtLCBKU1ZhbHVlIHZhbHVlKQogewogICAgIEFTU0VSVCghdmFs
dWUuaXNJbnQzMigpKTsKQEAgLTE5OTMsOCArMjAxMSw4IEBAIHZvaWQgSlNPYmplY3Q6OnB1dEJ5
SW5kZXhCZXlvbmRWZWN0b3JMZW4KICAgICAgICAgICAgIHN0b3JhZ2UtPm1fbnVtVmFsdWVzSW5W
ZWN0b3IrKzsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKLSAg
ICAgICAgY3JlYXRlSW5pdGlhbENvbnRpZ3VvdXModm0sIGkgKyAxKVtpXS5zZXQodm0sIHRoaXMs
IHZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIGNyZWF0ZUluaXRpYWxGb3JWYWx1ZUFuZFNldCh2
bSwgaSwgdmFsdWUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMjE0Miw3
ICsyMTYwLDcgQEAgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW5kZXhCZXlvbmRWZWN0bwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGNyZWF0
ZUluaXRpYWxDb250aWd1b3VzKHZtLCBpICsgMSlbaV0uc2V0KHZtLCB0aGlzLCB2YWx1ZSk7Cisg
ICAgICAgIGNyZWF0ZUluaXRpYWxGb3JWYWx1ZUFuZFNldCh2bSwgaSwgdmFsdWUpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxNjAyOTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03NTcsNiArNzU3
LDcgQEAgcHJvdGVjdGVkOgogICAgIENvbnRpZ3VvdXNKU1ZhbHVlcyBjcmVhdGVJbml0aWFsQ29u
dGlndW91cyhWTSYsIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgICAgIAogICAgIHZvaWQgY29udmVy
dFVuZGVjaWRlZEZvclZhbHVlKFZNJiwgSlNWYWx1ZSk7CisgICAgdm9pZCBjcmVhdGVJbml0aWFs
Rm9yVmFsdWVBbmRTZXQoVk0mLCB1bnNpZ25lZCBpbmRleCwgSlNWYWx1ZSk7CiAgICAgdm9pZCBj
b252ZXJ0SW50MzJGb3JWYWx1ZShWTSYsIEpTVmFsdWUpOwogICAgICAgICAKICAgICBBcnJheVN0
b3JhZ2UqIGNyZWF0ZUFycmF5U3RvcmFnZShWTSYsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQg
dmVjdG9yTGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3Mv
ZmxvYXQzMmFycmF5LW91dC1vZi1ib3VuZHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mbG9hdDMyYXJyYXktb3V0LW9mLWJvdW5kcy5qcwkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZmxvYXQzMmFy
cmF5LW91dC1vZi1ib3VuZHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorZnVu
Y3Rpb24gbWFrZSh2YWx1ZSkgeworICAgIHZhciByZXN1bHQgPSBuZXcgRmxvYXQzMkFycmF5KDEp
OworICAgIHJlc3VsdFswXSA9IHZhbHVlOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0
aW9uIGZvbyhhLCBpKSB7CisgICAgcmV0dXJuIGFbaV07Cit9CisKK25vSW5saW5lKGZvbyk7CisK
K2Z1bmN0aW9uIHRlc3QodmFsdWUpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKG1ha2UodmFsdWUp
LCAwKTsKKyAgICBpZiAocmVzdWx0ICE9IHZhbHVlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJh
ZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyAr
K2kpCisgICAgdGVzdCg0Mik7CisKK3ZhciByZXN1bHQgPSBmb28obWFrZSg0MiksIDEpOworaWYg
KHJlc3VsdCAhPT0gdm9pZCAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJl
c3VsdDsKKworRmxvYXQzMkFycmF5LnByb3RvdHlwZVsxXSA9IDIzOworcmVzdWx0ID0gZm9vKG1h
a2UoNDIpLCAxKTsKK2lmIChyZXN1bHQgIT09IDIzKQorICAgIHRocm93ICJFcnJvcjogYmFkIHJl
c3VsdDogIiArIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJl
c3MvaW50MzItb2JqZWN0LW91dC1vZi1ib3VuZHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbnQzMi1vYmplY3Qtb3V0LW9mLWJvdW5kcy5qcwko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvaW50MzIt
b2JqZWN0LW91dC1vZi1ib3VuZHMuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAor
ZnVuY3Rpb24gbWFrZSh2YWx1ZSkgeworICAgIHZhciByZXN1bHQgPSB7fTsKKyAgICByZXN1bHRb
MF0gPSB2YWx1ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitmdW5jdGlvbiBmb28oYSwgaSkg
eworICAgIHJldHVybiBhW2ldOworfQorCitub0lubGluZShmb28pOworCitmdW5jdGlvbiB0ZXN0
KHZhbHVlKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyhtYWtlKHZhbHVlKSwgMCk7CisgICAgaWYg
KHJlc3VsdCAhPSB2YWx1ZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsg
cmVzdWx0OworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwMDsgKytpKQorICAgIHRlc3Qo
NDIpOworCit2YXIgcmVzdWx0ID0gZm9vKG1ha2UoNDIpLCAxKTsKK2lmIChyZXN1bHQgIT09IHZv
aWQgMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisKK3Jlc3Vs
dCA9IGZvbyhtYWtlKDQyKSwgMTAwKTsKK2lmIChyZXN1bHQgIT09IHZvaWQgMCkKKyAgICB0aHJv
dyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisKK3Jlc3VsdCA9IGZvbyhtYWtlKDQy
KSwgMTAwMDApOworaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQorICAgIHRocm93ICJFcnJvcjogYmFk
IHJlc3VsdDogIiArIHJlc3VsdDsKKworT2JqZWN0LnByb3RvdHlwZVsxMDAwMF0gPSAyMzsKK3Jl
c3VsdCA9IGZvbyhtYWtlKDQyKSwgMTAwMDApOworaWYgKHJlc3VsdCAhPT0gMjMpCisgICAgdGhy
b3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9pbnQzMi1vdXQtb2YtYm91bmRzLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvaW50MzItb3V0LW9mLWJvdW5kcy5q
cwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvaW50
MzItb3V0LW9mLWJvdW5kcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMxIEBACitmdW5j
dGlvbiBmb28oYSwgaSkgeworICAgIHJldHVybiBhW2ldOworfQorCitub0lubGluZShmb28pOwor
CitmdW5jdGlvbiB0ZXN0KHZhbHVlKSB7CisgICAgdmFyIHJlc3VsdCA9IGZvbyhbdmFsdWVdLCAw
KTsKKyAgICBpZiAocmVzdWx0ICE9IHZhbHVlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBy
ZXN1bHQ6ICIgKyByZXN1bHQ7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kp
CisgICAgdGVzdCg0Mik7CisKK3ZhciByZXN1bHQgPSBmb28oWzQyXSwgMSk7CitpZiAocmVzdWx0
ICE9PSB2b2lkIDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owor
CityZXN1bHQgPSBmb28oWzQyXSwgMTAwKTsKK2lmIChyZXN1bHQgIT09IHZvaWQgMCkKKyAgICB0
aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisKK3Jlc3VsdCA9IGZvbyhbNDJd
LCAxMDAwMCk7CitpZiAocmVzdWx0ICE9PSB2b2lkIDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQg
cmVzdWx0OiAiICsgcmVzdWx0OworCitBcnJheS5wcm90b3R5cGVbMTAwMDBdID0gMjM7CityZXN1
bHQgPSBmb28oWzQyXSwgMTAwMDApOworaWYgKHJlc3VsdCAhPT0gMjMpCisgICAgdGhyb3cgIkVy
cm9yOiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>218722</attachid>
            <date>2013-12-08 19:59:15 -0800</date>
            <delta_ts>2013-12-09 09:01:07 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>40390</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTYwMjk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg4IEBA
CisyMDEzLTEyLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2ZWFsIGFycmF5IGJvdW5kcyBjaGVja3MgaW4gREZHIElSCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjUyNTMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEluIFNTQSBtb2RlLCB0aGlzIHJl
dmVhbHMgYXJyYXkgYm91bmRzIGNoZWNrcyBhbmQgdGhlIGxvYWQgb2YgYXJyYXkgbGVuZ3RoIGlu
IERGRyBJUiwKKyAgICAgICAgbWFraW5nIHRoaXMgYSBjYW5kaWRhdGUgZm9yIExJQ00uCisKKyAg
ICAgICAgVGhpcyBhbHNvIGZpeGVzIGEgbG9uZy1zdGFuZGluZyBwZXJmb3JtYW5jZSBidWcgd2hl
cmUgdGhlIEpTT2JqZWN0IHNsb3cgcGF0aHMgd291bGQKKyAgICAgICAgYWx3YXlzIGNyZWF0ZSBj
b250aWd1b3VzIHN0b3JhZ2UsIHJhdGhlciB0aGFuIHR5cGUtc3BlY2lhbGl6ZWQgc3RvcmFnZSwg
d2hlbiBkb2luZyBhCisgICAgICAgICJzdG9yYWdlIGNyZWF0aW5nIiBzdG9yYWdlLCBsaWtlOgor
ICAgICAgICAKKyAgICAgICAgICAgIHZhciBvID0ge307CisgICAgICAgICAgICBvWzBdID0gNDI7
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0
LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4
cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGJ5dGVjb2RlL0V4aXRLaW5kLmNwcDoKKyAgICAgICAgKEpTQzo6ZXhpdEtp
bmRUb1N0cmluZyk6CisgICAgICAgIChKU0M6OmV4aXRLaW5kSXNDb3VudGFibGUpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0V4aXRLaW5kLmg6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJw
cmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6OjpleGVjdXRlRWZmZWN0cyk6Cisg
ICAgICAgICogZGZnL0RGR0FycmF5TW9kZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6cGVybWl0
c0JvdW5kc0NoZWNrTG93ZXJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OkFycmF5TW9kZTo6cGVy
bWl0c0JvdW5kc0NoZWNrTG93ZXJpbmcpOgorICAgICAgICAqIGRmZy9ERkdBcnJheU1vZGUuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcnJheU1vZGU6Omxlbmd0aE5lZWRzU3RvcmFnZSk6CisgICAg
ICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXpl
KToKKyAgICAgICAgKiBkZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkNvbnN0YW50Rm9sZGluZ1BoYXNlOjpmb2xkQ29uc3RhbnRzKToKKyAgICAgICAg
KiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6
Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcv
REZHUGxhbi5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6UGxhbjo6Y29tcGlsZUluVGhyZWFkSW1w
bCk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6cHJvcGFnYXRlKToK
KyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpERkc6OlNTQUxvd2VyaW5nUGhhc2U6OlNTQUxvd2VyaW5nUGhhc2UpOgorICAgICAgICAo
SlNDOjpERkc6OlNTQUxvd2VyaW5nUGhhc2U6OnJ1bik6CisgICAgICAgIChKU0M6OkRGRzo6U1NB
TG93ZXJpbmdQaGFzZTo6aGFuZGxlTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6U1NBTG93ZXJp
bmdQaGFzZTo6bG93ZXJCb3VuZHNDaGVjayk6CisgICAgICAgIChKU0M6OkRGRzo6cGVyZm9ybVNT
QUxvd2VyaW5nKToKKyAgICAgICAgKiBkZmcvREZHU1NBTG93ZXJpbmdQaGFzZS5oOiBBZGRlZC4K
KyAgICAgICAgKiBkZmcvREZHU2FmZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNh
ZmVUb0V4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVEb3VibGVQdXRCeVZhbCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlQ29udGlndW91c1B1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcDoKKyAgICAgICAgKEpT
Qzo6RlRMOjpjYW5Db21waWxlKToKKyAgICAgICAgKiBmdGwvRlRMTG93ZXJERkdUb0xMVk0uY3Bw
OgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVDaGVja0luQm91bmRzKToKKyAg
ICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZUdldEJ5VmFsKToKKyAgICAg
ICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29tcGlsZVB1dEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6RlRMOjpMb3dlckRGR1RvTExWTTo6Y29udGlndW91c1B1dEJ5VmFsT3V0T2ZCb3VuZHMp
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6Y29udmVydFVuZGVjaWRlZEZvclZhbHVlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmNy
ZWF0ZUluaXRpYWxGb3JWYWx1ZUFuZFNldCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXRC
eUluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERp
cmVjdEluZGV4QmV5b25kVmVjdG9yTGVuZ3RoKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgICogdGVzdHMvc3RyZXNzL2Zsb2F0MzJhcnJheS1vdXQtb2YtYm91bmRzLmpz
OiBBZGRlZC4KKyAgICAgICAgKG1ha2UpOgorICAgICAgICAoZm9vKToKKyAgICAgICAgKHRlc3Qp
OgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9pbnQzMi1vYmplY3Qtb3V0LW9mLWJvdW5kcy5qczog
QWRkZWQuCisgICAgICAgIChtYWtlKToKKyAgICAgICAgKGZvbyk6CisgICAgICAgICh0ZXN0KToK
KyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvaW50MzItb3V0LW9mLWJvdW5kcy5qczogQWRkZWQuCisg
ICAgICAgIChmb28pOgorICAgICAgICAodGVzdCk6CisKIDIwMTMtMTItMDggIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgdGhlIG5vdGlvbiBvZiBDb25zdGFu
dFN0b3JhZ2VQb2ludGVyIHRvIERGRyBJUgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMTYwMjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDcgQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3Bw
CiAgICAgZGZnL0RGR1Jlc3VycmVjdGlvbkZvclZhbGlkYXRpb25QaGFzZS5jcHAKICAgICBkZmcv
REZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAorICAgIGRmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNw
cAogICAgIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKICAgICBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHAKICAgICBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxNjAyOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5
KQpAQCAtMzc3LDYgKzM3Nyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NTQUxvd2VyaW5nUGhhc2UuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTdGFja0xheW91dFBoYXNlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTdGFja0xheW91dFBoYXNlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Ry
ZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qCShyZXZpc2lvbiAxNjAyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC00MTEsNiArNDExLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGRmZ1xE
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XGRmZ1xERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXGRmZ1xERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cZGZnXERGR1NTQUxvd2VyaW5nUGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cZGZnXERGR1N0YWNrTGF5b3V0UGhhc2UuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cZGZnXERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIiAvPgogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZGZnXERGR1RodW5rcy5jcHAiIC8+CkBAIC05MTgsNiAr
OTE5LDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTbG93UGF0aEdlbmVy
YXRvci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1NwZWN1bGF0aXZl
SklULmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU1NBQ29udmVyc2lv
blBoYXNlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZHU1NBTG93ZXJp
bmdQaGFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZGZnXERGR1N0YWNrTGF5
b3V0UGhhc2UuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGRmZ1xERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxkZmdcREZH
U3RydWN0dXJlQWJzdHJhY3RWYWx1ZS5oIiAvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDE2MDI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zODEs
NiArMzgxLDggQEAKIAkJMEZDMDk3QTIxNDZCMjhDQzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3QTAxNDZC
MjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGQzIwQ0I1MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJl
bmd0aFJlZHVjdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQzIwQ0IzMTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmNwcCAqLzsgfTsKIAkJMEZDMjBDQjYxODUyRTJDNjAwQzlFOTU0IC8qIERGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGQzIwQ0I0MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVj
dGlvblBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZDMjBDQjkxODU1NkEzNTAwQzlFOTU0IC8qIERGR1NTQUxvd2VyaW5nUGhhc2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMjBDQjcx
ODU1NkEzNTAwQzlFOTU0IC8qIERGR1NTQUxvd2VyaW5nUGhhc2UuY3BwICovOyB9OworCQkwRkMy
MENCQTE4NTU2QTM1MDBDOUU5NTQgLyogREZHU1NBTG93ZXJpbmdQaGFzZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMjBDQjgxODU1NkEzNTAwQzlF
OTU0IC8qIERGR1NTQUxvd2VyaW5nUGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkMzMTQxMjE4MTQ1NTkxMDAwMzMyMzIgLyogUmVnaXN0
ZXJTZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QzMxNDEwMTgxNDU1OTEwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGQzMxNDEzMTgxNDU1OTEwMDAzMzIz
MiAvKiBUZW1wUmVnaXN0ZXJTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEZDMzE0MTExODE0NTU5MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNl
dC5jcHAgKi87IH07CiAJCTBGQzMxNDE1MTgxNDZENzAwMDAzMzIzMiAvKiBSZWdpc3RlclNldC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMzMTQx
NDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwICovOyB9OwpAQCAtMTcwNSw2ICsx
NzA3LDggQEAKIAkJMEZDMDk3QTAxNDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdUaHVua3MuaDsgcGF0aCA9IGRmZy9ERkdU
aHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMjBDQjMxODUyRTJDNjAw
QzlFOTU0IC8qIERGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA7IHBhdGgg
PSBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGQzIwQ0I0MTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0aFJlZHVjdGlv
blBoYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR1N0cmVuZ3RoUmVk
dWN0aW9uUGhhc2UuaDsgcGF0aCA9IGRmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGQzIwQ0I3MTg1NTZBMzUwMEM5RTk1NCAvKiBE
RkdTU0FMb3dlcmluZ1BoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IERGR1NTQUxvd2VyaW5nUGhhc2UuY3BwOyBwYXRoID0gZGZnL0RGR1NTQUxvd2VyaW5nUGhh
c2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRkMyMENCODE4NTU2QTM1MDBD
OUU5NTQgLyogREZHU1NBTG93ZXJpbmdQaGFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBERkdTU0FMb3dlcmluZ1BoYXNlLmg7IHBhdGggPSBkZmcvREZHU1NBTG93ZXJpbmdQ
aGFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMzMTQxMDE4MTQ1NTkxMDAw
MzMyMzIgLyogUmVnaXN0ZXJTZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UmVnaXN0ZXJTZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMzE0MTExODE0
NTU5MTAwMDMzMjMyIC8qIFRlbXBSZWdpc3RlclNldC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBUZW1wUmVnaXN0ZXJTZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRkMzMTQxNDE4MTQ2RDcwMDAwMzMyMzIgLyogUmVnaXN0ZXJTZXQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVnaXN0ZXJTZXQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMzk2NCw2ICszOTY4LDggQEAKIAkJCQk4Njg4MEY0
QzE0MzUzQjIxMDBCMDhENDIgLyogREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgKi8sCiAJCQkJQTdE
ODlDRjAxN0EwQjhDQzAwNzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAgKi8sCiAJ
CQkJQTdEODlDRjExN0EwQjhDQzAwNzczQUQ4IC8qIERGR1NTQUNvbnZlcnNpb25QaGFzZS5oICov
LAorCQkJCTBGQzIwQ0I3MTg1NTZBMzUwMEM5RTk1NCAvKiBERkdTU0FMb3dlcmluZ1BoYXNlLmNw
cCAqLywKKwkJCQkwRkMyMENCODE4NTU2QTM1MDBDOUU5NTQgLyogREZHU1NBTG93ZXJpbmdQaGFz
ZS5oICovLAogCQkJCTBGOUZCNEYyMTdGQ0I5MTcwMENCNjdGOCAvKiBERkdTdGFja0xheW91dFBo
YXNlLmNwcCAqLywKIAkJCQkwRjlGQjRGMzE3RkNCOTE3MDBDQjY3RjggLyogREZHU3RhY2tMYXlv
dXRQaGFzZS5oICovLAogCQkJCTBGQzIwQ0IzMTg1MkUyQzYwMEM5RTk1NCAvKiBERkdTdHJlbmd0
aFJlZHVjdGlvblBoYXNlLmNwcCAqLywKQEAgLTQzODcsNiArNDM5Myw3IEBACiAJCQkJQTczRTEz
MzExNzk2MjRDRDAwRTRERUE4IC8qIERGR0Rlc2lyZWRTdHJ1Y3R1cmVDaGFpbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMyQzBGN0NFMTdCQkZDNUIwMDQ2NEZFNCAvKiBERkdEZXNpcmVkVHJhbnNp
dGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRTg1MzRDMTcyM0NEQTUwMEI2MThGNSAvKiBE
RkdEZXNpcmVkV2F0Y2hwb2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGQzIwQ0JBMTg1NTZB
MzUwMEM5RTk1NCAvKiBERkdTU0FMb3dlcmluZ1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
Mjk4MUZEOTE3QkFFRTRCMDBBM0JDOTggLyogREZHRGVzaXJlZFdlYWtSZWZlcmVuY2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDMjk4MUZERDE3QkFGRjQ0MDBBM0JDOTggLyogREZHRGVzaXJlZFdy
aXRlQmFycmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRjQyNzY1MTU5MUExQ0UwMDRDQjlG
RiAvKiBERkdEaXNhc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLApAQCAtNTcyMiw2ICs1NzI5LDcg
QEAKIAkJCQk5NjlBMDc5QTBFRDFEM0FFMDBGMUY2ODEgLyogT3Bjb2RlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTE0MjgwODUwMTA3RUMwRDcwMDEzRTdCMiAvKiBPcGVyYXRpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGRTIyOEVFMTQzNkFCMkMwMDE5NkM0OCAvKiBPcHRpb25zLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGQzIwQ0I5MTg1NTZBMzUwMEM5RTk1NCAvKiBERkdTU0FMb3dl
cmluZ1BoYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0OEYyMUJDMTA3RUM1NEQwMDQyRUMy
QyAvKiBQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMwNTJDMzQwRkI3OTIxOTAwNDhG
REMzIC8qIFBhcnNlckFyZW5hLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOUZDOEMzMTRFMUI1
RkUwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0V4aXRLaW5kLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQuY3BwCShyZXZp
c2lvbiAxNjAyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXhpdEtpbmQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw4ICs2NCw2IEBAIGNvbnN0IGNoYXIqIGV4aXRLaW5k
VG9TdHJpbmcoRXhpdEtpbmQga2kKICAgICAgICAgcmV0dXJuICJMb2FkRnJvbUhvbGUiOwogICAg
IGNhc2UgT3V0T2ZCb3VuZHM6CiAgICAgICAgIHJldHVybiAiT3V0T2ZCb3VuZHMiOwotICAgIGNh
c2UgU3RvcmVUb0hvbGVPck91dE9mQm91bmRzOgotICAgICAgICByZXR1cm4gIlN0b3JlVG9Ib2xl
T3JPdXRPZkJvdW5kcyI7CiAgICAgY2FzZSBJbmFkZXF1YXRlQ292ZXJhZ2U6CiAgICAgICAgIHJl
dHVybiAiSW5hZGVxdWF0ZUNvdmVyYWdlIjsKICAgICBjYXNlIEFyZ3VtZW50c0VzY2FwZWQ6CkBA
IC05Niw3ICs5NCw2IEBAIGJvb2wgZXhpdEtpbmRJc0NvdW50YWJsZShFeGl0S2luZCBraW5kKQog
ICAgIGNhc2UgTG9hZEZyb21Ib2xlOiAvLyBBbHJlYWR5IGNvdW50ZWQgZGlyZWN0bHkgYnkgdGhl
IGJhc2VsaW5lIEpJVC4KICAgICBjYXNlIFN0b3JlVG9Ib2xlOiAvLyBBbHJlYWR5IGNvdW50ZWQg
ZGlyZWN0bHkgYnkgdGhlIGJhc2VsaW5lIEpJVC4KICAgICBjYXNlIE91dE9mQm91bmRzOiAvLyBB
bHJlYWR5IGNvdW50ZWQgZGlyZWN0bHkgYnkgdGhlIGJhc2VsaW5lIEpJVC4KLSAgICBjYXNlIFN0
b3JlVG9Ib2xlT3JPdXRPZkJvdW5kczogLy8gQWxyZWFkeSBjb3VudGVkIGRpcmVjdGx5IGJ5IHRo
ZSBiYXNlbGluZSBKSVQuCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0S2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9F
eGl0S2luZC5oCShyZXZpc2lvbiAxNjAyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRXhpdEtpbmQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQCBlbnVtIEV4
aXRLaW5kIHsKICAgICBTdG9yZVRvSG9sZSwgLy8gV2UgaGFkIGEgc3RvcmUgdG8gYSBob2xlLgog
ICAgIExvYWRGcm9tSG9sZSwgLy8gV2UgaGFkIGEgbG9hZCBmcm9tIGEgaG9sZS4KICAgICBPdXRP
ZkJvdW5kcywgLy8gV2UgaGFkIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzIHRvIGFuIGFycmF5Lgot
ICAgIFN0b3JlVG9Ib2xlT3JPdXRPZkJvdW5kcywgLy8gV2UncmUgc2ltdWx0YW5lb3VzbHkgc3Bl
Y3VsYXRpbmcgdGhhdCB3ZSdyZSBpbiBib3VuZHMgYW5kIG5vdCBhY2Nlc3NpbmcgYSBob2xlLCBh
bmQgb25lIG9mIHRob3NlIHRoaW5ncyBkaWRuJ3QgcGFuIG91dC4KICAgICBJbmFkZXF1YXRlQ292
ZXJhZ2UsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIGVuZGVkIHVwIGluIGNvZGUgdGhhdCBkaWRu
J3QgaGF2ZSBwcm9maWxpbmcgY292ZXJhZ2UuCiAgICAgQXJndW1lbnRzRXNjYXBlZCwgLy8gV2Ug
ZXhpdGVkIGJlY2F1c2UgYXJndW1lbnRzIGVzY2FwZWQgYnV0IHdlIGRpZG4ndCBleHBlY3QgdGhl
bSB0by4KICAgICBOb3RTdHJpbmdPYmplY3QsIC8vIFdlIGV4aXRlZCBiZWNhdXNlIHdlIHNob3Vs
ZG4ndCBoYXZlIGF0dGVtcHRlZCB0byBvcHRpbWl6ZSBzdHJpbmcgb2JqZWN0IGFjY2Vzcy4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE2MDI5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQ3Myw2ICsxNDczLDE5IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFj
dFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKKyAgICBjYXNlIENoZWNr
SW5Cb3VuZHM6IHsKKyAgICAgICAgSlNWYWx1ZSBsZWZ0ID0gZm9yTm9kZShub2RlLT5jaGlsZDEo
KSkudmFsdWUoKTsKKyAgICAgICAgSlNWYWx1ZSByaWdodCA9IGZvck5vZGUobm9kZS0+Y2hpbGQy
KCkpLnZhbHVlKCk7CisgICAgICAgIGlmIChsZWZ0ICYmIHJpZ2h0ICYmIGxlZnQuaXNJbnQzMigp
ICYmIHJpZ2h0LmlzSW50MzIoKQorICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+
KGxlZnQuYXNJbnQzMigpKSA8IHN0YXRpY19jYXN0PHVpbnQzMl90PihyaWdodC5hc0ludDMyKCkp
KSB7CisgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5vZGUtPnNldENhbkV4
aXQodHJ1ZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAgICAgCiAgICAgY2FzZSBQdXRC
eUlkOgogICAgIGNhc2UgUHV0QnlJZERpcmVjdDoKICAgICAgICAgbm9kZS0+c2V0Q2FuRXhpdCh0
cnVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5jcHAJ
KHJldmlzaW9uIDE2MDI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlN
b2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ4LDYgKzU0OCwzNiBAQCBBcnJheTo6VHlwZSB0
b0FycmF5VHlwZShUeXBlZEFycmF5VHlwZSB0CiAgICAgfQogfQogCitib29sIHBlcm1pdHNCb3Vu
ZHNDaGVja0xvd2VyaW5nKEFycmF5OjpUeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBlKSB7
CisgICAgY2FzZSBBcnJheTo6SW50MzI6CisgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgIGNh
c2UgQXJyYXk6OkNvbnRpZ3VvdXM6CisgICAgY2FzZSBBcnJheTo6SW50OEFycmF5OgorICAgIGNh
c2UgQXJyYXk6OkludDE2QXJyYXk6CisgICAgY2FzZSBBcnJheTo6SW50MzJBcnJheToKKyAgICBj
YXNlIEFycmF5OjpVaW50OEFycmF5OgorICAgIGNhc2UgQXJyYXk6OlVpbnQ4Q2xhbXBlZEFycmF5
OgorICAgIGNhc2UgQXJyYXk6OlVpbnQxNkFycmF5OgorICAgIGNhc2UgQXJyYXk6OlVpbnQzMkFy
cmF5OgorICAgIGNhc2UgQXJyYXk6OkZsb2F0MzJBcnJheToKKyAgICBjYXNlIEFycmF5OjpGbG9h
dDY0QXJyYXk6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIC8v
IFRoZXNlIGRvbid0IGFsbG93IGZvciBib3VuZHMgY2hlY2sgbG93ZXJpbmcgZWl0aGVyIGJlY2F1
c2UgdGhlIGJvdW5kcworICAgICAgICAvLyBjaGVjayBpbnZvbHZlcyBzb21ldGhpbmcgb3RoZXIg
dGhhbiBHZXRBcnJheUxlbmd0aCAobGlrZSBBcnJheVN0b3JhZ2UpLAorICAgICAgICAvLyBvciBi
ZWNhdXNlIHRoZSBib3VuZHMgY2hlY2sgaXNuJ3QgYSBzcGVjdWxhdGlvbiAobGlrZSBTdHJpbmcs
IHNvcnQgb2YpLAorICAgICAgICAvLyBvciBiZWNhdXNlIHRoZSB0eXBlIGltcGxpZXMgYW4gaW1w
dXJlIGFjY2Vzcy4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworYm9vbCBBcnJh
eU1vZGU6OnBlcm1pdHNCb3VuZHNDaGVja0xvd2VyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
REZHOjpwZXJtaXRzQm91bmRzQ2hlY2tMb3dlcmluZyh0eXBlKCkpICYmIGlzSW5Cb3VuZHMoKTsK
K30KKwogdm9pZCBBcnJheU1vZGU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAg
ICBvdXQucHJpbnQodHlwZSgpLCBhcnJheUNsYXNzKCksIHNwZWN1bGF0aW9uKCksIGNvbnZlcnNp
b24oKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5TW9kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2RlLmgJKHJl
dmlzaW9uIDE2MDI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlNb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsOCBAQCBJbmRleGluZ1R5cGUgdG9JbmRl
eGluZ1NoYXBlKEFycmF5OjpUeXBlCiBUeXBlZEFycmF5VHlwZSB0b1R5cGVkQXJyYXlUeXBlKEFy
cmF5OjpUeXBlKTsKIEFycmF5OjpUeXBlIHRvQXJyYXlUeXBlKFR5cGVkQXJyYXlUeXBlKTsKIAor
Ym9vbCBwZXJtaXRzQm91bmRzQ2hlY2tMb3dlcmluZyhBcnJheTo6VHlwZSk7CisKIGNsYXNzIEFy
cmF5TW9kZSB7CiBwdWJsaWM6CiAgICAgQXJyYXlNb2RlKCkKQEAgLTI5Miw3ICsyOTQsMTcgQEAg
cHVibGljOgogICAgIAogICAgIGJvb2wgbGVuZ3RoTmVlZHNTdG9yYWdlKCkgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiBpc0pTQXJyYXkoKTsKKyAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsK
KyAgICAgICAgY2FzZSBBcnJheTo6VW5kZWNpZGVkOgorICAgICAgICBjYXNlIEFycmF5OjpJbnQz
MjoKKyAgICAgICAgY2FzZSBBcnJheTo6RG91YmxlOgorICAgICAgICBjYXNlIEFycmF5OjpDb250
aWd1b3VzOgorICAgICAgICBjYXNlIEFycmF5OjpBcnJheVN0b3JhZ2U6CisgICAgICAgIGNhc2Ug
QXJyYXk6OlNsb3dQdXRBcnJheVN0b3JhZ2U6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAg
IH0KICAgICAKICAgICBBcnJheU1vZGUgbW9kZUZvclB1dCgpIGNvbnN0CkBAIC0zNDIsNiArMzU0
LDggQEAgcHVibGljOgogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGJvb2wgcGVybWl0c0Jv
dW5kc0NoZWNrTG93ZXJpbmcoKSBjb25zdDsKKyAgICAKICAgICBib29sIGJlbmVmaXRzRnJvbU9y
aWdpbmFsQXJyYXkoKSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoICh0eXBlKCkpIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCShyZXZpc2lvbiAx
NjAyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAgIGNhc2Ug
SW50NTJUb0RvdWJsZToKICAgICBjYXNlIEludDUyVG9WYWx1ZToKKyAgICBjYXNlIENoZWNrSW5C
b3VuZHM6CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVyOgogICAgICAgICByZXR1cm47
CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZv
bGRpbmdQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDIsNiArMTQyLDE5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIENoZWNr
SW5Cb3VuZHM6IHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIGxlZnQgPSBtX3N0YXRlLmZvck5v
ZGUobm9kZS0+Y2hpbGQxKCkpLnZhbHVlKCk7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSByaWdo
dCA9IG1fc3RhdGUuZm9yTm9kZShub2RlLT5jaGlsZDIoKSkudmFsdWUoKTsKKyAgICAgICAgICAg
ICAgICBpZiAobGVmdCAmJiByaWdodCAmJiBsZWZ0LmlzSW50MzIoKSAmJiByaWdodC5pc0ludDMy
KCkKKyAgICAgICAgICAgICAgICAgICAgJiYgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxlZnQuYXNJ
bnQzMigpKSA8IHN0YXRpY19jYXN0PHVpbnQzMl90PihyaWdodC5hc0ludDMyKCkpKSB7CisgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb1BoYW50b20oKTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxpbWluYXRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgICAgICBjYXNlIEdldEJ5SWQ6CiAgICAg
ICAgICAgICBjYXNlIEdldEJ5SWRGbHVzaDogewogICAgICAgICAgICAgICAgIENvZGVPcmlnaW4g
Y29kZU9yaWdpbiA9IG5vZGUtPmNvZGVPcmlnaW47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHJldmlzaW9uIDE2MDI5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg3
Nyw2ICs4NzcsNyBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEludDUyVG9WYWx1ZToKICAgICAg
ICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICAgICAgY2FzZSBDaGVja0FycmF5OgorICAg
ICAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgICAgIGNhc2UgQ29uc3RhbnRTdG9yYWdlUG9p
bnRlcjoKICAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBqdXN0IG5vZGVzIHRoYXQgd2UgZG9uJ3Qg
Y3VycmVudGx5IGV4cGVjdCB0byBzZWUgZHVyaW5nIGZpeHVwLgogICAgICAgICAgICAgLy8gSWYg
d2UgZXZlciB3YW50ZWQgdG8gaW5zZXJ0IHRoZW0gcHJpb3IgdG8gZml4dXAsIHRoZW4gd2UganVz
dCBoYXZlIHRvIGNyZWF0ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5
cGUuaAkocmV2aXNpb24gMTYwMjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEZ1bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQs
IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhDaGVja0Z1bmN0aW9uLCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgbWFjcm8oQWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50LCBOb2RlTXVz
dEdlbmVyYXRlKSBcCisgICAgbWFjcm8oQ2hlY2tJbkJvdW5kcywgTm9kZU11c3RHZW5lcmF0ZSkg
XAogICAgIFwKICAgICAvKiBPcHRpbWl6YXRpb25zIGZvciBhcnJheSBtdXRhdGlvbi4gKi9cCiAg
ICAgbWFjcm8oQXJyYXlQdXNoLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZUNsb2JiZXJzV29ybGQpIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUGxh
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFuLmNw
cAkocmV2aXNpb24gMTYwMjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQbGFu
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIkRGR1ByZWRp
Y3Rpb25Qcm9wYWdhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHUmVzdXJyZWN0aW9uRm9yVmFs
aWRhdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAiREZHU1NBQ29udmVyc2lvblBoYXNlLmgiCisjaW5j
bHVkZSAiREZHU1NBTG93ZXJpbmdQaGFzZS5oIgogI2luY2x1ZGUgIkRGR1N0YWNrTGF5b3V0UGhh
c2UuaCIKICNpbmNsdWRlICJERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmgiCiAjaW5jbHVkZSAi
REZHVGllclVwQ2hlY2tJbmplY3Rpb25QaGFzZS5oIgpAQCAtMjY2LDYgKzI2Nyw3IEBAIFBsYW46
OkNvbXBpbGF0aW9uUGF0aCBQbGFuOjpjb21waWxlSW5UaHIKICAgICAgICAgcGVyZm9ybUxvb3BQ
cmVIZWFkZXJDcmVhdGlvbihkZmcpOwogICAgICAgICBwZXJmb3JtQ1BTUmV0aHJlYWRpbmcoZGZn
KTsKICAgICAgICAgcGVyZm9ybVNTQUNvbnZlcnNpb24oZGZnKTsKKyAgICAgICAgcGVyZm9ybVNT
QUxvd2VyaW5nKGRmZyk7CiAgICAgICAgIHBlcmZvcm1MaXZlbmVzc0FuYWx5c2lzKGRmZyk7CiAg
ICAgICAgIHBlcmZvcm1DRkEoZGZnKTsKICAgICAgICAgcGVyZm9ybUxJQ00oZGZnKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlv
blByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAxNjAyOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTEwLDcgKzUxMCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgQ2hlY2tUaWVy
VXBBbmRPU1JFbnRlcjoKICAgICAgICAgY2FzZSBJbnZhbGlkYXRpb25Qb2ludDoKICAgICAgICAg
Y2FzZSBJbnQ1MlRvVmFsdWU6Ci0gICAgICAgIGNhc2UgSW50NTJUb0RvdWJsZTogeworICAgICAg
ICBjYXNlIEludDUyVG9Eb3VibGU6CisgICAgICAgIGNhc2UgQ2hlY2tJbkJvdW5kczogewogICAg
ICAgICAgICAgLy8gVGhpcyBub2RlIHNob3VsZCBuZXZlciBiZSB2aXNpYmxlIGF0IHRoaXMgc3Rh
Z2Ugb2YgY29tcGlsYXRpb24uIEl0IGlzCiAgICAgICAgICAgICAvLyBpbnNlcnRlZCBieSBmaXh1
cCgpLCB3aGljaCBmb2xsb3dzIHRoaXMgcGhhc2UuCiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FM
b3dlcmluZ1BoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NTQUxvd2VyaW5nUGhhc2UuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDExOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiREZHU1NBTG93ZXJpbmdQaGFzZS5oIgor
CisjaWYgRU5BQkxFKERGR19KSVQpCisKKyNpbmNsdWRlICJERkdCYXNpY0Jsb2NrSW5saW5lcy5o
IgorI2luY2x1ZGUgIkRGR0dyYXBoLmgiCisjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCisj
aW5jbHVkZSAiREZHUGhhc2UuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgU1NBTG93ZXJpbmdQaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZSA9IGZhbHNlOworICAgIAor
cHVibGljOgorICAgIFNTQUxvd2VyaW5nUGhhc2UoR3JhcGgmIGdyYXBoKQorICAgICAgICA6IFBo
YXNlKGdyYXBoLCAiU1NBIGxvd2VyaW5nIikKKyAgICAgICAgLCBtX2luc2VydGlvblNldChncmFw
aCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGJvb2wgcnVuKCkKKyAgICB7CisgICAgICAgIFJF
TEVBU0VfQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFNTQSk7CisgICAgICAgIAorICAgICAgICBm
b3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2NrSW5k
ZXgtLTspIHsKKyAgICAgICAgICAgIG1fYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgp
OworICAgICAgICAgICAgaWYgKCFtX2Jsb2NrKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgZm9yIChtX25vZGVJbmRleCA9IDA7IG1fbm9kZUluZGV4IDwgbV9ibG9jay0+
c2l6ZSgpOyArK21fbm9kZUluZGV4KSB7CisgICAgICAgICAgICAgICAgbV9ub2RlID0gbV9ibG9j
ay0+YXQobV9ub2RlSW5kZXgpOworICAgICAgICAgICAgICAgIGhhbmRsZU5vZGUoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0LmV4ZWN1dGUobV9ibG9jayk7Cisg
ICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
dm9pZCBoYW5kbGVOb2RlKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAobV9ub2RlLT5vcCgpKSB7
CisgICAgICAgIGNhc2UgR2V0QnlWYWw6CisgICAgICAgICAgICBsb3dlckJvdW5kc0NoZWNrKG1f
bm9kZS0+Y2hpbGQxKCksIG1fbm9kZS0+Y2hpbGQyKCksIG1fbm9kZS0+Y2hpbGQzKCkpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBQdXRCeVZhbDoKKyAg
ICAgICAgY2FzZSBQdXRCeVZhbERpcmVjdDoKKyAgICAgICAgICAgIGxvd2VyQm91bmRzQ2hlY2so
CisgICAgICAgICAgICAgICAgbV9ncmFwaC52YXJBcmdDaGlsZChtX25vZGUsIDApLAorICAgICAg
ICAgICAgICAgIG1fZ3JhcGgudmFyQXJnQ2hpbGQobV9ub2RlLCAxKSwKKyAgICAgICAgICAgICAg
ICBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMykpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHZvaWQgbG93ZXJCb3VuZHNDaGVjayhFZGdlIGJhc2UsIEVk
Z2UgaW5kZXgsIEVkZ2Ugc3RvcmFnZSkKKyAgICB7CisgICAgICAgIGlmICghbV9ub2RlLT5hcnJh
eU1vZGUoKS5wZXJtaXRzQm91bmRzQ2hlY2tMb3dlcmluZygpKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICAgICAgaWYgKCFtX25vZGUtPmFycmF5TW9kZSgpLmxlbmd0aE5lZWRz
U3RvcmFnZSgpKQorICAgICAgICAgICAgc3RvcmFnZSA9IEVkZ2UoKTsKKyAgICAgICAgCisgICAg
ICAgIE5vZGUqIGxlbmd0aCA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoCisgICAgICAgICAg
ICBtX25vZGVJbmRleCwgU3BlY0ludDMyLCBHZXRBcnJheUxlbmd0aCwgbV9ub2RlLT5jb2RlT3Jp
Z2luLAorICAgICAgICAgICAgT3BJbmZvKG1fbm9kZS0+YXJyYXlNb2RlKCkuYXNXb3JkKCkpLCBi
YXNlLCBzdG9yYWdlKTsKKyAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKKyAgICAg
ICAgICAgIG1fbm9kZUluZGV4LCBTcGVjSW50MzIsIENoZWNrSW5Cb3VuZHMsIG1fbm9kZS0+Y29k
ZU9yaWdpbiwKKyAgICAgICAgICAgIGluZGV4LCBFZGdlKGxlbmd0aCwgS25vd25JbnQzMlVzZSkp
OworICAgIH0KKyAgICAKKyAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7CisgICAgQmFz
aWNCbG9jayogbV9ibG9jazsKKyAgICB1bnNpZ25lZCBtX25vZGVJbmRleDsKKyAgICBOb2RlKiBt
X25vZGU7Cit9OworCitib29sIHBlcmZvcm1TU0FMb3dlcmluZyhHcmFwaCYgZ3JhcGgpCit7Cisg
ICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oIkRGRyBTU0EgTG93ZXJpbmcgUGhhc2Ui
KTsKKyAgICByZXR1cm4gcnVuUGhhc2U8U1NBTG93ZXJpbmdQaGFzZT4oZ3JhcGgpOworfQorCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FMb3dlcmluZ1BoYXNl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUxvd2Vy
aW5nUGhhc2UuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgREZHU1NBTG93ZXJpbmdQ
aGFzZV9oCisjZGVmaW5lIERGR1NTQUxvd2VyaW5nUGhhc2VfaAorCisjaWYgRU5BQkxFKERGR19K
SVQpCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKKworY2xhc3MgR3JhcGg7CisK
Ky8vIFBlcmZvcm1zIERGRy0+REZHIGxvd2VyaW5ncyB0aGF0IGFyZSBvbmx5IGFwcHJvcHJpYXRl
IGZvciBTU0EgZm9ybSBhbmQgdGhlIEZUTAorLy8gYmFja2VuZC4gVGhpcyBpcyBpbnRlbmRlZCB0
byBiZSBydW4gYWZ0ZXIgU1NBQ29udmVyc2lvblBoYXNlLgorCitib29sIHBlcmZvcm1TU0FMb3dl
cmluZyhHcmFwaCYpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBF
TkFCTEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR1NTQUxvd2VyaW5nUGhhc2VfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAkocmV2aXNp
b24gMTYwMjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUo
QWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBOb3RpZnlXcml0ZToKICAgICBjYXNlIEZ1
bmN0aW9uUmVlbnRyeVdhdGNocG9pbnQ6CiAgICAgY2FzZSBUeXBlZEFycmF5V2F0Y2hwb2ludDoK
KyAgICBjYXNlIENoZWNrSW5Cb3VuZHM6CiAgICAgY2FzZSBDb25zdGFudFN0b3JhZ2VQb2ludGVy
OgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9u
IDE2MDI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQz
Ml82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3NjcsNyArMTc2Nyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVDb250aWd1b3VzUHUKIAogICAgIGlmIChhcnJheU1vZGUuaXNJbkJv
dW5kcygpKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBTdG9yZVRv
SG9sZU9yT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBPdXRPZkJv
dW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaW5Cb3VuZHMgPSBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QmVsb3csIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKTsKQEAgLTQ3NjcsNiArNDc2Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICBjYXNlIENoZWNrVGllclVwQW5kT1NSRW50ZXI6CiAgICAgY2FzZSBJ
bnQ1MlRvRG91YmxlOgogICAgIGNhc2UgSW50NTJUb1ZhbHVlOgorICAgIGNhc2UgQ2hlY2tJbkJv
dW5kczoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxNjAyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOTU3
LDcgKzI5NTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChhcnJheU1vZGUuaXNJbkJvdW5kcygpKSB7CiAg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICAgICAgU3Rv
cmVUb0hvbGVPck91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAg
ICAgICBPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwKICAgICAgICAgICAgICAgICAgICAg
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQ
dWJsaWNMZW5ndGgoKSkpKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgaW5Cb3VuZHMgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6QmVsb3csIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdl
UmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKTsKQEAgLTUwNjUsNiArNTA2
NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICBjYXNl
IFVwc2lsb246CiAgICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRy
eUxvY2FsOgorICAgIGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE2MDI5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzQwLDcgKzE3NDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlRG91YmxlUHV0QnlWCiAgICAgCiAgICAgaWYgKGFycmF5TW9kZS5pc0luQm91bmRzKCkp
IHsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgIFN0b3JlVG9Ib2xlT3JP
dXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgIE91dE9mQm91bmRzLCBK
U1ZhbHVlUmVncygpLCAwLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICB9IGVs
c2UgewogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpbkJvdW5kcyA9IG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAko
cmV2aXNpb24gMTYwMjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmls
aXRpZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAgaW5saW5lIENhcGFi
aWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIAogICAgIGNhc2UgVmFsdWVUb0ludDMyOgogICAg
IGNhc2UgQnJhbmNoOgogICAgIGNhc2UgTG9naWNhbE5vdDoKKyAgICBjYXNlIENoZWNrSW5Cb3Vu
ZHM6CiAgICAgICAgIC8vIFRoZXNlIGFyZSBPSy4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBH
ZXRCeUlkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExW
TS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRG
R1RvTExWTS5jcHAJKHJldmlzaW9uIDE2MDI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTUsNiArMzU1LDkg
QEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDoKICAgICAgICAgICAgIGNv
bXBpbGVHZXRBcnJheUxlbmd0aCgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
Q2hlY2tJbkJvdW5kczoKKyAgICAgICAgICAgIGNvbXBpbGVDaGVja0luQm91bmRzKCk7CisgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBHZXRCeVZhbDoKICAgICAgICAgICAgIGNvbXBp
bGVHZXRCeVZhbCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDc1LDYgKzE0NzgsMTMgQEAg
cHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICB2b2lkIGNvbXBpbGVDaGVja0lu
Qm91bmRzKCkKKyAgICB7CisgICAgICAgIHNwZWN1bGF0ZSgKKyAgICAgICAgICAgIE91dE9mQm91
bmRzLCBub1ZhbHVlKCksIDAsCisgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwobG93SW50
MzIobV9ub2RlLT5jaGlsZDEoKSksIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CisgICAg
fQorICAgIAogICAgIHZvaWQgY29tcGlsZUdldEJ5VmFsKCkKICAgICB7CiAgICAgICAgIHN3aXRj
aCAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkpIHsKQEAgLTE0ODcsMTEgKzE0OTcsNiBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIG1faGVhcHMuaW5kZXhlZEludDMyUHJvcGVydGllcyA6
IG1faGVhcHMuaW5kZXhlZENvbnRpZ3VvdXNQcm9wZXJ0aWVzOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkpIHsKLSAgICAgICAg
ICAgICAgICBzcGVjdWxhdGUoCi0gICAgICAgICAgICAgICAgICAgIE91dE9mQm91bmRzLCBub1Zh
bHVlKCksIDAsCi0gICAgICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbCgKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzIoc3RvcmFnZSwgbV9oZWFwcy5C
dXR0ZXJmbHlfcHVibGljTGVuZ3RoKSkpOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIExWYWx1ZSByZXN1bHQgPSBtX291dC5sb2FkNjQoYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2Us
IGluZGV4LCBtX25vZGUtPmNoaWxkMigpKSk7CiAgICAgICAgICAgICAgICAgc3BlY3VsYXRlKExv
YWRGcm9tSG9sZSwgbm9WYWx1ZSgpLCAwLCBtX291dC5pc1plcm82NChyZXN1bHQpKTsKICAgICAg
ICAgICAgICAgICBzZXRKU1ZhbHVlKHJlc3VsdCk7CkBAIC0xNTMyLDExICsxNTM3LDYgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIEluZGV4ZWRBYnN0cmFjdEhlYXAmIGhlYXAgPSBtX2hlYXBzLmlu
ZGV4ZWREb3VibGVQcm9wZXJ0aWVzOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobV9u
b2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkpIHsKLSAgICAgICAgICAgICAgICBzcGVjdWxh
dGUoCi0gICAgICAgICAgICAgICAgICAgIE91dE9mQm91bmRzLCBub1ZhbHVlKCksIDAsCi0gICAg
ICAgICAgICAgICAgICAgIG1fb3V0LmFib3ZlT3JFcXVhbCgKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGluZGV4LCBtX291dC5sb2FkMzIoc3RvcmFnZSwgbV9oZWFwcy5CdXR0ZXJmbHlfcHVibGlj
TGVuZ3RoKSkpOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIExWYWx1ZSByZXN1
bHQgPSBtX291dC5sb2FkRG91YmxlKAogICAgICAgICAgICAgICAgICAgICBiYXNlSW5kZXgoaGVh
cCwgc3RvcmFnZSwgaW5kZXgsIG1fbm9kZS0+Y2hpbGQyKCkpKTsKICAgICAgICAgICAgICAgICAK
QEAgLTE2MDAsMTEgKzE2MDAsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgVHlwZWRBcnJheVR5
cGUgdHlwZSA9IG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZWRBcnJheVR5cGUoKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKGlzVHlwZWRWaWV3KHR5cGUpKSB7Ci0gICAgICAgICAgICAg
ICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgICAgICAgICBPdXRPZkJvdW5kcywgbm9WYWx1ZSgp
LCAwLAotICAgICAgICAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwoCi0gICAgICAgICAg
ICAgICAgICAgICAgICBpbmRleCwgdHlwZWRBcnJheUxlbmd0aChtX25vZGUtPmNoaWxkMSgpLCBt
X25vZGUtPmFycmF5TW9kZSgpKSkpOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg
IFR5cGVkUG9pbnRlciBwb2ludGVyID0gVHlwZWRQb2ludGVyKAogICAgICAgICAgICAgICAgICAg
ICBtX2hlYXBzLnR5cGVkQXJyYXlQcm9wZXJ0aWVzLAogICAgICAgICAgICAgICAgICAgICBtX291
dC5hZGQoCkBAIC0xNzkyLDE0ICsxNzg3LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIFR5cGVk
QXJyYXlUeXBlIHR5cGUgPSBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGVkQXJyYXlUeXBlKCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChpc1R5cGVkVmlldyh0eXBlKSkgewotICAgICAg
ICAgICAgICAgIGlmIChtX25vZGUtPm9wKCkgIT0gUHV0QnlWYWxBbGlhcykgewotICAgICAgICAg
ICAgICAgICAgICBzcGVjdWxhdGUoCi0gICAgICAgICAgICAgICAgICAgICAgICBPdXRPZkJvdW5k
cywgbm9WYWx1ZSgpLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVx
dWFsKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGVkQXJyYXlMZW5ndGgoY2hpbGQxLCBtX25vZGUtPmFycmF5TW9kZSgp
LCBiYXNlKSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBUeXBlZFBvaW50ZXIgcG9pbnRlciA9IFR5cGVkUG9pbnRlcigKICAgICAgICAgICAg
ICAgICAgICAgbV9oZWFwcy50eXBlZEFycmF5UHJvcGVydGllcywKICAgICAgICAgICAgICAgICAg
ICAgbV9vdXQuYWRkKApAQCAtMzA4NSwxNSArMzA3MiwxMiBAQCBwcml2YXRlOgogICAgIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0aW9uVHlwZT4KICAgICB2b2lkIGNvbnRpZ3VvdXNQdXRC
eVZhbE91dE9mQm91bmRzKAotICAgICAgICBGdW5jdGlvblR5cGUgc2xvd1BhdGhGdW5jdGlvbiwK
LSAgICAgICAgTFZhbHVlIGJhc2UsIExWYWx1ZSBzdG9yYWdlLCBMVmFsdWUgaW5kZXgsIExWYWx1
ZSB2YWx1ZSwKKyAgICAgICAgRnVuY3Rpb25UeXBlIHNsb3dQYXRoRnVuY3Rpb24sIExWYWx1ZSBi
YXNlLCBMVmFsdWUgc3RvcmFnZSwgTFZhbHVlIGluZGV4LCBMVmFsdWUgdmFsdWUsCiAgICAgICAg
IExCYXNpY0Jsb2NrIGNvbnRpbnVhdGlvbikKICAgICB7CiAgICAgICAgIExWYWx1ZSBpc05vdElu
Qm91bmRzID0gbV9vdXQuYWJvdmVPckVxdWFsKAogICAgICAgICAgICAgaW5kZXgsIG1fb3V0Lmxv
YWQzMihzdG9yYWdlLCBtX2hlYXBzLkJ1dHRlcmZseV9wdWJsaWNMZW5ndGgpKTsKLSAgICAgICAg
aWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkuaXNJbkJvdW5kcygpKQotICAgICAgICAgICAgc3BlY3Vs
YXRlKFN0b3JlVG9Ib2xlT3JPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCAwLCBpc05vdEluQm91bmRz
KTsKLSAgICAgICAgZWxzZSB7CisgICAgICAgIGlmICghbV9ub2RlLT5hcnJheU1vZGUoKS5pc0lu
Qm91bmRzKCkpIHsKICAgICAgICAgICAgIExCYXNpY0Jsb2NrIG5vdEluQm91bmRzQ2FzZSA9CiAg
ICAgICAgICAgICAgICAgRlRMX05FV19CTE9DSyhtX291dCwgKCJQdXRCeVZhbCBub3QgaW4gYm91
bmRzIikpOwogICAgICAgICAgICAgTEJhc2ljQmxvY2sgcGVyZm9ybVN0b3JlID0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDE2MDI5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTA2LDcgKzkwNiw3IEBAIHZvaWQgSlNPYmplY3Q6OmNvbnZlcnRVbmRlY2lk
ZWRGb3JWYWx1ZSgKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBpZiAodmFsdWUu
aXNEb3VibGUoKSkgeworICAgIGlmICh2YWx1ZS5pc0RvdWJsZSgpICYmIHZhbHVlLmFzTnVtYmVy
KCkgPT0gdmFsdWUuYXNOdW1iZXIoKSkgewogICAgICAgICBjb252ZXJ0VW5kZWNpZGVkVG9Eb3Vi
bGUodm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtOTE0LDYgKzkxNCwyNCBAQCB2b2lk
IEpTT2JqZWN0Ojpjb252ZXJ0VW5kZWNpZGVkRm9yVmFsdWUoCiAgICAgY29udmVydFVuZGVjaWRl
ZFRvQ29udGlndW91cyh2bSk7CiB9CiAKK3ZvaWQgSlNPYmplY3Q6OmNyZWF0ZUluaXRpYWxGb3JW
YWx1ZUFuZFNldChWTSYgdm0sIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlIHZhbHVlKQoreworICAg
IGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgY3JlYXRlSW5pdGlhbEludDMyKHZtLCBp
bmRleCArIDEpW2luZGV4XS5zZXQodm0sIHRoaXMsIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBpZiAodmFsdWUuaXNEb3VibGUoKSkgeworICAgICAgICBkb3VibGUg
ZG91YmxlVmFsdWUgPSB2YWx1ZS5hc051bWJlcigpOworICAgICAgICBpZiAoZG91YmxlVmFsdWUg
PT0gZG91YmxlVmFsdWUpIHsKKyAgICAgICAgICAgIGNyZWF0ZUluaXRpYWxEb3VibGUodm0sIGlu
ZGV4ICsgMSlbaW5kZXhdID0gZG91YmxlVmFsdWU7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgY3JlYXRlSW5pdGlhbENvbnRpZ3VvdXModm0sIGluZGV4
ICsgMSlbaW5kZXhdLnNldCh2bSwgdGhpcywgdmFsdWUpOworfQorCiB2b2lkIEpTT2JqZWN0Ojpj
b252ZXJ0SW50MzJGb3JWYWx1ZShWTSYgdm0sIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJU
KCF2YWx1ZS5pc0ludDMyKCkpOwpAQCAtMTk5Myw4ICsyMDExLDggQEAgdm9pZCBKU09iamVjdDo6
cHV0QnlJbmRleEJleW9uZFZlY3RvckxlbgogICAgICAgICAgICAgc3RvcmFnZS0+bV9udW1WYWx1
ZXNJblZlY3RvcisrOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgICAg
IAotICAgICAgICBjcmVhdGVJbml0aWFsQ29udGlndW91cyh2bSwgaSArIDEpW2ldLnNldCh2bSwg
dGhpcywgdmFsdWUpOworICAgICAgICAKKyAgICAgICAgY3JlYXRlSW5pdGlhbEZvclZhbHVlQW5k
U2V0KHZtLCBpLCB2YWx1ZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCkBAIC0y
MTQyLDcgKzIxNjAsNyBAQCBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbmRleEJleW9uZFZlY3Rv
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
Y3JlYXRlSW5pdGlhbENvbnRpZ3VvdXModm0sIGkgKyAxKVtpXS5zZXQodm0sIHRoaXMsIHZhbHVl
KTsKKyAgICAgICAgY3JlYXRlSW5pdGlhbEZvclZhbHVlQW5kU2V0KHZtLCBpLCB2YWx1ZSk7CiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDE2MDI5NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc1Nyw2
ICs3NTcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgQ29udGlndW91c0pTVmFsdWVzIGNyZWF0ZUluaXRp
YWxDb250aWd1b3VzKFZNJiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICAgICAgCiAgICAgdm9pZCBj
b252ZXJ0VW5kZWNpZGVkRm9yVmFsdWUoVk0mLCBKU1ZhbHVlKTsKKyAgICB2b2lkIGNyZWF0ZUlu
aXRpYWxGb3JWYWx1ZUFuZFNldChWTSYsIHVuc2lnbmVkIGluZGV4LCBKU1ZhbHVlKTsKICAgICB2
b2lkIGNvbnZlcnRJbnQzMkZvclZhbHVlKFZNJiwgSlNWYWx1ZSk7CiAgICAgICAgIAogICAgIEFy
cmF5U3RvcmFnZSogY3JlYXRlQXJyYXlTdG9yYWdlKFZNJiwgdW5zaWduZWQgbGVuZ3RoLCB1bnNp
Z25lZCB2ZWN0b3JMZW5ndGgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0
cmVzcy9mbG9hdDMyYXJyYXktb3V0LW9mLWJvdW5kcy5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Zsb2F0MzJhcnJheS1vdXQtb2YtYm91bmRzLmpz
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9mbG9h
dDMyYXJyYXktb3V0LW9mLWJvdW5kcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBA
CitmdW5jdGlvbiBtYWtlKHZhbHVlKSB7CisgICAgdmFyIHJlc3VsdCA9IG5ldyBGbG9hdDMyQXJy
YXkoMSk7CisgICAgcmVzdWx0WzBdID0gdmFsdWU7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
ZnVuY3Rpb24gZm9vKGEsIGkpIHsKKyAgICByZXR1cm4gYVtpXTsKK30KKworbm9JbmxpbmUoZm9v
KTsKKworZnVuY3Rpb24gdGVzdCh2YWx1ZSkgeworICAgIHZhciByZXN1bHQgPSBmb28obWFrZSh2
YWx1ZSksIDApOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgIHRocm93ICJFcnJv
cjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAw
MDA7ICsraSkKKyAgICB0ZXN0KDQyKTsKKwordmFyIHJlc3VsdCA9IGZvbyhtYWtlKDQyKSwgMSk7
CitpZiAocmVzdWx0ICE9PSB2b2lkIDApCisgICAgdGhyb3cgIkVycm9yOiBiYWQgcmVzdWx0OiAi
ICsgcmVzdWx0OworCitGbG9hdDMyQXJyYXkucHJvdG90eXBlWzFdID0gMjM7CityZXN1bHQgPSBm
b28obWFrZSg0MiksIDEpOworaWYgKHJlc3VsdCAhPT0gMjMpCisgICAgdGhyb3cgIkVycm9yOiBi
YWQgcmVzdWx0OiAiICsgcmVzdWx0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3Rz
L3N0cmVzcy9pbnQzMi1vYmplY3Qtb3V0LW9mLWJvdW5kcy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ludDMyLW9iamVjdC1vdXQtb2YtYm91bmRz
LmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9p
bnQzMi1vYmplY3Qtb3V0LW9mLWJvdW5kcy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3
IEBACitmdW5jdGlvbiBtYWtlKHZhbHVlKSB7CisgICAgdmFyIHJlc3VsdCA9IHt9OworICAgIHJl
c3VsdFswXSA9IHZhbHVlOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2Z1bmN0aW9uIGZvbyhh
LCBpKSB7CisgICAgcmV0dXJuIGFbaV07Cit9CisKK25vSW5saW5lKGZvbyk7CisKK2Z1bmN0aW9u
IHRlc3QodmFsdWUpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKG1ha2UodmFsdWUpLCAwKTsKKyAg
ICBpZiAocmVzdWx0ICE9IHZhbHVlKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6
ICIgKyByZXN1bHQ7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpCisgICAg
dGVzdCg0Mik7CisKK3ZhciByZXN1bHQgPSBmb28obWFrZSg0MiksIDEpOworaWYgKHJlc3VsdCAh
PT0gdm9pZCAwKQorICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKwor
cmVzdWx0ID0gZm9vKG1ha2UoNDIpLCAxMDApOworaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQorICAg
IHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKworcmVzdWx0ID0gZm9vKG1h
a2UoNDIpLCAxMDAwMCk7CitpZiAocmVzdWx0ICE9PSB2b2lkIDApCisgICAgdGhyb3cgIkVycm9y
OiBiYWQgcmVzdWx0OiAiICsgcmVzdWx0OworCitPYmplY3QucHJvdG90eXBlWzEwMDAwXSA9IDIz
OworcmVzdWx0ID0gZm9vKG1ha2UoNDIpLCAxMDAwMCk7CitpZiAocmVzdWx0ICE9PSAyMykKKyAg
ICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2ludDMyLW91dC1vZi1ib3VuZHMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9pbnQzMi1vdXQtb2YtYm91
bmRzLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVz
cy9pbnQzMi1vdXQtb2YtYm91bmRzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzEgQEAK
K2Z1bmN0aW9uIGZvbyhhLCBpKSB7CisgICAgcmV0dXJuIGFbaV07Cit9CisKK25vSW5saW5lKGZv
byk7CisKK2Z1bmN0aW9uIHRlc3QodmFsdWUpIHsKKyAgICB2YXIgcmVzdWx0ID0gZm9vKFt2YWx1
ZV0sIDApOworICAgIGlmIChyZXN1bHQgIT0gdmFsdWUpCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHJlc3VsdDogIiArIHJlc3VsdDsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDA7
ICsraSkKKyAgICB0ZXN0KDQyKTsKKwordmFyIHJlc3VsdCA9IGZvbyhbNDJdLCAxKTsKK2lmIChy
ZXN1bHQgIT09IHZvaWQgMCkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1
bHQ7CisKK3Jlc3VsdCA9IGZvbyhbNDJdLCAxMDApOworaWYgKHJlc3VsdCAhPT0gdm9pZCAwKQor
ICAgIHRocm93ICJFcnJvcjogYmFkIHJlc3VsdDogIiArIHJlc3VsdDsKKworcmVzdWx0ID0gZm9v
KFs0Ml0sIDEwMDAwKTsKK2lmIChyZXN1bHQgIT09IHZvaWQgMCkKKyAgICB0aHJvdyAiRXJyb3I6
IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7CisKK0FycmF5LnByb3RvdHlwZVsxMDAwMF0gPSAyMzsK
K3Jlc3VsdCA9IGZvbyhbNDJdLCAxMDAwMCk7CitpZiAocmVzdWx0ICE9PSAyMykKKyAgICB0aHJv
dyAiRXJyb3I6IGJhZCByZXN1bHQ6ICIgKyByZXN1bHQ7Cg==
</data>
<flag name="review"
          id="242210"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>