<?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>115057</bug_id>
          
          <creation_ts>2013-04-23 14:08:02 -0700</creation_ts>
          <short_desc>Filled out more cases of branch folding in bytecode when emitting expressions into a branching context</short_desc>
          <delta_ts>2013-04-26 23:42:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>880118</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-23 14:08:02 -0700</bug_when>
    <thetext>Filled out more cases of branch folding in bytecode when emitting expressions into a branching context</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880133</commentid>
    <comment_count>1</comment_count>
      <attachid>199328</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-23 14:40:18 -0700</bug_when>
    <thetext>Created attachment 199328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880135</commentid>
    <comment_count>2</comment_count>
      <attachid>199328</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-23 14:42:49 -0700</bug_when>
    <thetext>Comment on attachment 199328
Patch

Cool!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880138</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-23 14:47:39 -0700</bug_when>
    <thetext>Attachment 199328 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/fast/js/regress/branch-fold-expected.txt&apos;, u&apos;LayoutTests/fast/js/regress/branch-fold.html&apos;, u&apos;LayoutTests/fast/js/regress/script-tests/branch-fold.js&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.order&apos;, u&apos;Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp&apos;, u&apos;Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h&apos;, u&apos;Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp&apos;, u&apos;Source/JavaScriptCore/parser/ASTBuilder.h&apos;, u&apos;Source/JavaScriptCore/parser/NodeConstructors.h&apos;, u&apos;Source/JavaScriptCore/parser/Nodes.h&apos;, u&apos;Source/JavaScriptCore/parser/Parser.cpp&apos;, u&apos;Source/JavaScriptCore/parser/ResultType.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCJSValueInlines.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCell.h&apos;, u&apos;Source/JavaScriptCore/runtime/JSCellInlines.h&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/TriState.h&apos;]&quot; exit_code: 1
Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1054:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1056:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1058:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 3 in 18 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>880155</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-23 15:17:05 -0700</bug_when>
    <thetext>Committed r148999: &lt;http://trac.webkit.org/changeset/148999&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881623</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-25 17:23:54 -0700</bug_when>
    <thetext>This broke http://kripken.github.io/ammo.js/examples/new/ammo.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881627</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-25 17:32:59 -0700</bug_when>
    <thetext>Reopening because it broke things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881630</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-04-25 17:39:33 -0700</bug_when>
    <thetext>Rolled out in http://trac.webkit.org/changeset/149158</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>882146</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2013-04-26 23:42:25 -0700</bug_when>
    <thetext>Committed r149236: &lt;http://trac.webkit.org/changeset/149236&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199328</attachid>
            <date>2013-04-23 14:40:18 -0700</date>
            <delta_ts>2013-04-23 14:42:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-115057-20130423143942.patch</filename>
            <type>text/plain</type>
            <size>36903</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ4OTkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNiBA
QAorMjAxMy0wNC0yMyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAg
ICAgIEZpbGxlZCBvdXQgbW9yZSBjYXNlcyBvZiBicmFuY2ggZm9sZGluZyBpbiBieXRlY29kZSB3
aGVuIGVtaXR0aW5nCisgICAgICAgIGV4cHJlc3Npb25zIGludG8gYSBicmFuY2hpbmcgY29udGV4
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE1MDU3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBj
b3ZlcnMgYSBmZXcgY2FzZXMgbGlrZToKKworICAgICAgICAgICAgLSB3aGlsZSAodHJ1ZSkgeyB9
CisgICAgICAgICAgICAtIHdoaWxlICgxKSB7IH0KKyAgICAgICAgICAgIC0gaWYgKHgpIGJyZWFr
OworICAgICAgICAgICAgLSBpZiAoeCkgY29udGludWU7CisgICAgICAgICAgICAtIGlmIChib29s
ZWFuX2V4cHIgPT0gYm9vbGVhbl9jb25zdCkgeyB9CisgICAgICAgICAgICAtIGlmIChib29sZWFu
X2V4cHIgPT0gMV9vcl8wKSB7IH0KKyAgICAgICAgICAgIC0gaWYgKGJpdG9wID09IDFfb3JfMCkg
eyB9CisKKyAgICAgICAgVGhpcyBhbHNvIHdvcmtzLCBidXQgd2lsbCBicmluZyBzaGFtZSBvbiB5
b3VyIGZhbWlseToKKworICAgICAgICAgICAgLSB3aGlsZSAoImhlbGxvIHdvcmxkIikgeyB9CisK
KyAgICAgICAgTm8gY2hhbmdlIG9uIHRoZSBiZW5jaG1hcmtzIHdlIHRyYWNrLCBidXQgYSAyLjVY
IHNwZWVkdXAgb24gYSBtaWNyb2JlbmNobWFyaworICAgICAgICB0aGF0IHVzZXMgdGhlc2UgdGVj
aG5pcXVlcy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLm9yZGVyOiBPcmRlciEKKworICAg
ICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TmV3QXJyYXkpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFRocm93UmVmZXJlbmNlRXJyb3IpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZXB0aW9uSWZOZWVkZWQpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6c2hvdWxkRW1pdERlYnVnSG9va3MpOiBVcGRhdGVkIGFuY2lsbGFyeSBjb2Rl
CisgICAgICAgIGZvciBpbnRlcmZhY2Ugc2ltcGxpZmljYXRpb25zLgorCisgICAgICAgICogYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OkNvbnN0YW50Tm9kZTo6
ZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KTogQ29uc3RhbnRzIGNhbgorICAgICAgICBq
dW1wIHVuY29uZGl0aW9uYWxseSB3aGVuIHdpdGhpbiBhIGNvbmRpdGlvbiBjb250ZXh0LgorCisg
ICAgICAgIChKU0M6OkNvbnN0YW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6
U3RyaW5nTm9kZTo6anNWYWx1ZSk6IEdhdmUgY29uc3RhbnRzIGEgY29tbW9uIGJhc2UgY2xhc3Mg
c28gSQorICAgICAgICBjb3VsZCBpbXBsZW1lbnQgdGhlaXIgY29kZWdlbiBqdXN0IG9uY2UuCisK
KyAgICAgICAgKEpTQzo6QmluYXJ5T3BOb2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRl
eHQpOgorICAgICAgICAoSlNDOjpjYW5Gb2xkVG9CcmFuY2gpOgorICAgICAgICAoSlNDOjpCaW5h
cnlPcE5vZGU6OnRyeUZvbGRUb0JyYW5jaCk6IEZvbGQgKCEvPSk9IGFuZCAoIS89KT09IHdoZXJl
CisgICAgICAgIGFwcHJvcHJpYXRlLiBBIGxvdCBvZiBjYXNlcyBhcmUgbm90IGFwcHJvcHJpYXRl
IGJlY2F1c2Ugb2YgdGhlIHN1cnByaXNpbmcKKyAgICAgICAgdHlwZSBjb252ZXJzaW9uIHNlbWFu
dGljcyBvZiA9PS4gRm9yIGV4YW1wbGUsIGlmIChudW1iZXIgPT0gdHJ1ZSkgeyB9IGlzCisgICAg
ICAgIG5vdCB0aGUgc2FtZSBhcyBpZiAobnVtYmVyKSB7IH0gYmVjYXVzZSB0aGUgZm9ybWVyIHdp
bGwgdXAtY29udmVydCB0cnVlCisgICAgICAgIHRvIG51bWJlciBhbmQgdGhlbiBkbyBudW1lcmlj
IGNvbXBhcmlzb24uCisKKyAgICAgICAgKEpTQzo6c2luZ2xlU3RhdGVtZW50KToKKyAgICAgICAg
KEpTQzo6SWZFbHNlTm9kZTo6dHJ5Rm9sZEJyZWFrQW5kQ29udGludWUpOgorICAgICAgICAoSlND
OjpJZkVsc2VOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpDb250aW51ZU5vZGU6
OnRyaXZpYWxUYXJnZXQpOgorICAgICAgICAoSlNDOjpCcmVha05vZGU6OnRyaXZpYWxUYXJnZXQp
OiBGb2xkICJpZiAoZXhwcmVzc2lvbikgYnJlYWsiIGFuZAorICAgICAgICAiaWYgKGV4cHJlc3Np
b24pIGNvbnRpbnVlIiBpbnRvIGRpcmVjdCBqdW1wcyBmcm9tIGV4cHJlc3Npb24uCisKKyAgICAg
ICAgKiBwYXJzZXIvQVNUQnVpbGRlci5oOgorICAgICAgICAoQVNUQnVpbGRlcik6CisgICAgICAg
IChKU0M6OkFTVEJ1aWxkZXI6OmNyZWF0ZUlmU3RhdGVtZW50KToKKyAgICAgICAgKiBwYXJzZXIv
Tm9kZUNvbnN0cnVjdG9ycy5oOgorICAgICAgICAoSlNDOjpDb25zdGFudE5vZGU6OkNvbnN0YW50
Tm9kZSk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpOdWxsTm9kZTo6TnVsbE5vZGUp
OgorICAgICAgICAoSlNDOjpCb29sZWFuTm9kZTo6Qm9vbGVhbk5vZGUpOgorICAgICAgICAoSlND
OjpOdW1iZXJOb2RlOjpOdW1iZXJOb2RlKToKKyAgICAgICAgKEpTQzo6U3RyaW5nTm9kZTo6U3Ry
aW5nTm9kZSk6CisgICAgICAgIChKU0M6OklmRWxzZU5vZGU6OklmRWxzZU5vZGUpOgorICAgICAg
ICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlNDOjpFeHByZXNzaW9uTm9kZTo6aXNDb25z
dGFudCk6CisgICAgICAgIChKU0M6OkV4cHJlc3Npb25Ob2RlOjppc0Jvb2xlYW4pOgorICAgICAg
ICAoSlNDOjpTdGF0ZW1lbnROb2RlOjppc0JyZWFrKToKKyAgICAgICAgKEpTQzo6U3RhdGVtZW50
Tm9kZTo6aXNDb250aW51ZSk6CisgICAgICAgIChDb25zdGFudE5vZGUpOgorICAgICAgICAoSlND
OjpDb25zdGFudE5vZGU6OmlzUHVyZSk6CisgICAgICAgIChKU0M6OkNvbnN0YW50Tm9kZTo6aXND
b25zdGFudCk6CisgICAgICAgIChOdWxsTm9kZSk6CisgICAgICAgIChKU0M6Ok51bGxOb2RlOjpq
c1ZhbHVlKToKKyAgICAgICAgKEpTQzo6Qm9vbGVhbk5vZGU6OnZhbHVlKToKKyAgICAgICAgKEpT
Qzo6Qm9vbGVhbk5vZGU6OmlzQm9vbGVhbik6CisgICAgICAgIChKU0M6OkJvb2xlYW5Ob2RlOjpq
c1ZhbHVlKToKKyAgICAgICAgKEpTQzo6TnVtYmVyTm9kZTo6dmFsdWUpOgorICAgICAgICAoTnVt
YmVyTm9kZSk6CisgICAgICAgIChKU0M6Ok51bWJlck5vZGU6OmpzVmFsdWUpOgorICAgICAgICAo
U3RyaW5nTm9kZSk6CisgICAgICAgIChCaW5hcnlPcE5vZGUpOgorICAgICAgICAoSWZFbHNlTm9k
ZSk6CisgICAgICAgIChDb250aW51ZU5vZGUpOgorICAgICAgICAoSlNDOjpDb250aW51ZU5vZGU6
OmlzQ29udGludWUpOgorICAgICAgICAoQnJlYWtOb2RlKToKKyAgICAgICAgKEpTQzo6QnJlYWtO
b2RlOjppc0JyZWFrKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6OjpwYXJzZUlmU3RhdGVtZW50KToKKyAgICAgICAgKiBwYXJzZXIvUmVzdWx0VHlwZS5oOgor
ICAgICAgICAoSlNDOjpSZXN1bHRUeXBlOjpkZWZpbml0ZWx5SXNCb29sZWFuKToKKyAgICAgICAg
KFJlc3VsdFR5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAg
ICAgICAgKEpTQzo6SlNWYWx1ZTo6cHVyZVRvQm9vbGVhbik6CisgICAgICAgICogcnVudGltZS9K
U0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbElubGluZXMuaDoKKyAgICAgICAgKEpT
Qzo6SlNDZWxsOjpwdXJlVG9Cb29sZWFuKTogVXBkYXRlZCBmb3IgaW50ZXJmYWNlIGNoYW5nZXMg
YWJvdmUuCisKIDIwMTMtMDQtMjMgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAg
ICAgICAgIFNpbXBsaWZ5IHRoZSBiYXNlbGluZSBKSVQgbG9vcCBoaW50IGNhbGwgc2l0ZS4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUub3JkZXIJKHJldmlzaW9u
IDE0ODk4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5vcmRlcgko
d29ya2luZyBjb3B5KQpAQCAtNzE3LDcgKzcxNyw2IEBAIF9fWk5LM0pTQzE0RXhwcmVzc2lvbk5v
ZGUxM2lzUmVzb2x2ZU5vZGUKIF9fWk5LM0pTQzE0RXhwcmVzc2lvbk5vZGUyMWlzQnJhY2tldEFj
Y2Vzc29yTm9kZUV2CiBfX1pOM0pTQzlDb2RlQmxvY2syNWNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnlFdgogX19aTjNXVEY2VmVjdG9ySU4zSlNDOExpbmVJbmZvRUxtMEVFMTRleHBhbmRDYXBhY2l0
eUVtCi1fX1pOM0pTQzZJZk5vZGUxMmVtaXRCeXRlY29kZUVSTlNfMTdCeXRlY29kZUdlbmVyYXRv
ckVQTlNfMTBSZWdpc3RlcklERQogX19aTjNKU0MxN0J5dGVjb2RlR2VuZXJhdG9yOG5ld0xhYmVs
RXYKIF9fWk5LM0pTQzE0RXhwcmVzc2lvbk5vZGUyNmhhc0NvbmRpdGlvbkNvbnRleHRDb2RlZ2Vu
RXYKIF9fWk4zV1RGNlZlY3RvcklOM0pTQzE5RXhwcmVzc2lvblJhbmdlSW5mb0VMbTBFRTE0ZXhw
YW5kQ2FwYWNpdHlFbQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDE0ODk4NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjI4LDcgKzE2MjgsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdE5ld0FyCiAgICAgYm9vbCBoYWRWYXJpYWJsZUV4cHJlc3Npb24gPSBm
YWxzZTsKICAgICBpZiAobGVuZ3RoKSB7CiAgICAgICAgIGZvciAoRWxlbWVudE5vZGUqIG4gPSBl
bGVtZW50czsgbjsgbiA9IG4tPm5leHQoKSkgewotICAgICAgICAgICAgaWYgKCFuLT52YWx1ZSgp
LT5pc051bWJlcigpICYmICFuLT52YWx1ZSgpLT5pc1N0cmluZygpKSB7CisgICAgICAgICAgICBp
ZiAoIW4tPnZhbHVlKCktPmlzQ29uc3RhbnQoKSkgewogICAgICAgICAgICAgICAgIGhhZFZhcmlh
YmxlRXhwcmVzc2lvbiA9IHRydWU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CkBAIC0xNjQ0LDEyICsxNjQ0LDggQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXROZXdBcgogICAgICAgICAgICAgSlNWYWx1ZSogY29uc3RhbnRCdWZmZXIgPSBtX2NvZGVC
bG9jay0+Y29uc3RhbnRCdWZmZXIoY29uc3RhbnRCdWZmZXJJbmRleCkuZGF0YSgpOwogICAgICAg
ICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgICAgICAgICAgZm9yIChFbGVtZW50Tm9kZSog
biA9IGVsZW1lbnRzOyBpbmRleCA8IGxlbmd0aDsgbiA9IG4tPm5leHQoKSkgewotICAgICAgICAg
ICAgICAgIGlmIChuLT52YWx1ZSgpLT5pc051bWJlcigpKQotICAgICAgICAgICAgICAgICAgICBj
b25zdGFudEJ1ZmZlcltpbmRleCsrXSA9IGpzTnVtYmVyKHN0YXRpY19jYXN0PE51bWJlck5vZGUq
PihuLT52YWx1ZSgpKS0+dmFsdWUoKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChuLT52YWx1ZSgpLT5pc1N0cmluZygpKTsKLSAgICAgICAgICAg
ICAgICAgICAgY29uc3RhbnRCdWZmZXJbaW5kZXgrK10gPSBhZGRTdHJpbmdDb25zdGFudChzdGF0
aWNfY2FzdDxTdHJpbmdOb2RlKj4obi0+dmFsdWUoKSktPnZhbHVlKCkpOwotICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBBU1NFUlQobi0+dmFsdWUoKS0+aXNDb25zdGFudCgpKTsK
KyAgICAgICAgICAgICAgICBjb25zdGFudEJ1ZmZlcltpbmRleCsrXSA9IHN0YXRpY19jYXN0PENv
bnN0YW50Tm9kZSo+KG4tPnZhbHVlKCkpLT5qc1ZhbHVlKCp0aGlzKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGVtaXRPcGNvZGUob3BfbmV3X2FycmF5X2J1ZmZlcik7CiAgICAgICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTIzNjUsNyArMjM2MSw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpwb3BUcnlBbmQKIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKICAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3N0YXRpY19lcnJvcik7Ci0gICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUoanNTdHJpbmcodm0oKSwgbWVzc2FnZSkp
LT5pbmRleCgpKTsKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnRWYWx1ZShh
ZGRTdHJpbmdDb25zdGFudChJZGVudGlmaWVyKG1fdm0sIG1lc3NhZ2UpKSktPmluZGV4KCkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCh0cnVlKTsKIH0KIApAQCAtMjUyMyw3ICsyNTE5LDcg
QEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlYWRPbmx5RXhjZQogICAgIGlmICghaXNT
dHJpY3RNb2RlKCkpCiAgICAgICAgIHJldHVybjsKICAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3N0
YXRpY19lcnJvcik7Ci0gICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50VmFsdWUo
anNTdHJpbmcodm0oKSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSktPmlu
ZGV4KCkpOworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudFZhbHVlKGFkZFN0
cmluZ0NvbnN0YW50KElkZW50aWZpZXIobV92bSwgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlX
cml0ZUVycm9yKSkpLT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZmFsc2Up
OwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiAxNDg5ODUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU1Myw2ICs1NTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQ29kZVR5cGUg
Y29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGVUeXBlOyB9CiAKICAgICAgICAgYm9vbCBz
aG91bGRFbWl0UHJvZmlsZUhvb2tzKCkgeyByZXR1cm4gbV9zaG91bGRFbWl0UHJvZmlsZUhvb2tz
OyB9CisgICAgICAgIGJvb2wgc2hvdWxkRW1pdERlYnVnSG9va3MoKSB7IHJldHVybiBtX3Nob3Vs
ZEVtaXREZWJ1Z0hvb2tzOyB9CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgp
IGNvbnN0IHsgcmV0dXJuIG1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKTsgfQogCkBAIC02NDYs
OCArNjQ3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gVW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZShtX3ZtLCBtX3Njb3BlTm9kZS0+c291cmNlKCksIGJv
ZHkpOwogICAgICAgICB9CiAKLSAgICAgICAgSlNTdHJpbmcqIGFkZFN0cmluZ0NvbnN0YW50KGNv
bnN0IElkZW50aWZpZXImKTsKLQogICAgICAgICB2b2lkIGFkZExpbmVJbmZvKHVuc2lnbmVkIGxp
bmVObykKICAgICAgICAgewogICAgICAgICAgICAgbV9jb2RlQmxvY2stPmFkZExpbmVJbmZvKGlu
c3RydWN0aW9ucygpLnNpemUoKSwgbGluZU5vIC0gbV9zY29wZU5vZGUtPmZpcnN0TGluZSgpKTsK
QEAgLTY1Niw2ICs2NTUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEluaXRMYXp5UmVnaXN0ZXIoUmVnaXN0ZXJJRCopOwogCiAgICAgcHVibGljOgorICAgICAg
ICBKU1N0cmluZyogYWRkU3RyaW5nQ29uc3RhbnQoY29uc3QgSWRlbnRpZmllciYpOworCiAgICAg
ICAgIFZlY3RvcjxVbmxpbmtlZEluc3RydWN0aW9uLCAwLCBVbnNhZmVWZWN0b3JPdmVyZmxvdz4m
IGluc3RydWN0aW9ucygpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25zOyB9CiAKICAgICAgICAgU2hh
cmVkU3ltYm9sVGFibGUmIHN5bWJvbFRhYmxlKCkgeyByZXR1cm4gKm1fc3ltYm9sVGFibGU7IH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVz
Q29kZWdlbi5jcHAJKHJldmlzaW9uIDE0ODk4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIsNDAgKzky
LDMxIEBAIFJlZ2lzdGVySUQqIFRocm93YWJsZUV4cHJlc3Npb25EYXRhOjplbWkKICAgICByZXR1
cm4gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0gTnVsbE5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIENvbnN0YW50Tm9kZSAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVJlZ2lzdGVySUQqIE51bGxOb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQor
dm9pZCBDb25zdGFudE5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBMYWJlbCogdHJ1ZVRhcmdldCwgTGFiZWwqIGZhbHNlVGFy
Z2V0LCBGYWxsVGhyb3VnaE1vZGUgZmFsbFRocm91Z2hNb2RlKQogewotICAgIGlmIChkc3QgPT0g
Z2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJu
IGdlbmVyYXRvci5lbWl0TG9hZChkc3QsIGpzTnVsbCgpKTsKLX0KKyAgICBUcmlTdGF0ZSB2YWx1
ZSA9IGpzVmFsdWUoZ2VuZXJhdG9yKS5wdXJlVG9Cb29sZWFuKCk7CisgICAgaWYgKHZhbHVlID09
IE1peGVkVHJpU3RhdGUpCisgICAgICAgIEV4cHJlc3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGVJbkNv
bmRpdGlvbkNvbnRleHQoZ2VuZXJhdG9yLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwgZmFsbFRo
cm91Z2hNb2RlKTsKKyAgICBlbHNlIGlmICh2YWx1ZSA9PSBUcnVlVHJpU3RhdGUgJiYgZmFsbFRo
cm91Z2hNb2RlID09IEZhbGxUaHJvdWdoTWVhbnNGYWxzZSkKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRKdW1wKHRydWVUYXJnZXQpOworICAgIGVsc2UgaWYgKHZhbHVlID09IEZhbHNlVHJpU3RhdGUg
JiYgZmFsbFRocm91Z2hNb2RlID09IEZhbGxUaHJvdWdoTWVhbnNUcnVlKQorICAgICAgICBnZW5l
cmF0b3IuZW1pdEp1bXAoZmFsc2VUYXJnZXQpOwogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0gQm9vbGVhbk5vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1SZWdpc3RlcklEKiBCb29sZWFuTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKLXsKLSAgICBpZiAoZHN0ID09IGdlbmVyYXRv
ci5pZ25vcmVkUmVzdWx0KCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdExvYWQoZHN0LCBtX3ZhbHVlKTsKKyAgICAvLyBBbGwgb3RoZXIgY2FzZXMgYXJlIHVu
Y29uZGl0aW9uYWwgZmFsbC10aHJvdWdocywgbGlrZSAiaWYgKHRydWUpIi4KIH0KIAotLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE51bWJlck5vZGUgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotUmVnaXN0ZXJJRCogTnVtYmVyTm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKK1JlZ2lzdGVy
SUQqIENvbnN0YW50Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25vcmVk
UmVzdWx0KCkpCiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdExv
YWQoZHN0LCBtX3ZhbHVlKTsKKyAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNW
YWx1ZShnZW5lcmF0b3IpKTsKIH0KIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
IFN0cmluZ05vZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotUmVnaXN0
ZXJJRCogU3RyaW5nTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdCkKK0pTVmFsdWUgU3RyaW5nTm9kZTo6anNWYWx1ZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yKSBjb25zdAogewotICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9y
Lmlnbm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0TG9hZChkc3QsIG1fdmFsdWUpOworICAgIHJldHVybiBnZW5lcmF0b3IuYWRkU3RyaW5n
Q29uc3RhbnQobV92YWx1ZSk7CiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSBSZWdFeHBOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDQy
LDYgKzEwMzMsNjQgQEAgUmVnaXN0ZXJJRCogQmluYXJ5T3BOb2RlOjplbWl0U3RyY2F0KEJ5dAog
ICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdFN0cmNhdChnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlv
bihkc3QsIHRlbXBvcmFyeVJlZ2lzdGVyc1swXS5nZXQoKSksIHRlbXBvcmFyeVJlZ2lzdGVyc1sw
XS5nZXQoKSwgdGVtcG9yYXJ5UmVnaXN0ZXJzLnNpemUoKSk7CiB9CiAKK3ZvaWQgQmluYXJ5T3BO
b2RlOjplbWl0Qnl0ZWNvZGVJbkNvbmRpdGlvbkNvbnRleHQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxzZVRhcmdldCwgRmFsbFRocm91
Z2hNb2RlIGZhbGxUaHJvdWdoTW9kZSkKK3sKKyAgICBUcmlTdGF0ZSBicmFuY2hDb25kaXRpb247
CisgICAgRXhwcmVzc2lvbk5vZGUqIGJyYW5jaEV4cHJlc3Npb247CisgICAgdHJ5Rm9sZFRvQnJh
bmNoKGdlbmVyYXRvciwgYnJhbmNoQ29uZGl0aW9uLCBicmFuY2hFeHByZXNzaW9uKTsKKworICAg
IGlmIChicmFuY2hDb25kaXRpb24gPT0gTWl4ZWRUcmlTdGF0ZSkKKyAgICAgICAgRXhwcmVzc2lv
bk5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChnZW5lcmF0b3IsIHRydWVUYXJn
ZXQsIGZhbHNlVGFyZ2V0LCBmYWxsVGhyb3VnaE1vZGUpOworICAgIGVsc2UgaWYgKGJyYW5jaENv
bmRpdGlvbiA9PSBUcnVlVHJpU3RhdGUpCisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUluQ29u
ZGl0aW9uQ29udGV4dChicmFuY2hFeHByZXNzaW9uLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwg
ZmFsbFRocm91Z2hNb2RlKTsKKyAgICBlbHNlCisgICAgICAgIGdlbmVyYXRvci5lbWl0Tm9kZUlu
Q29uZGl0aW9uQ29udGV4dChicmFuY2hFeHByZXNzaW9uLCBmYWxzZVRhcmdldCwgdHJ1ZVRhcmdl
dCwgaW52ZXJ0KGZhbGxUaHJvdWdoTW9kZSkpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgY2Fu
Rm9sZFRvQnJhbmNoKE9wY29kZUlEIG9wY29kZUlELCBFeHByZXNzaW9uTm9kZSogYnJhbmNoRXhw
cmVzc2lvbiwgSlNWYWx1ZSBjb25zdGFudCkKK3sKKyAgICBSZXN1bHRUeXBlIGV4cHJlc3Npb25U
eXBlID0gYnJhbmNoRXhwcmVzc2lvbi0+cmVzdWx0RGVzY3JpcHRvcigpOworCisgICAgaWYgKGV4
cHJlc3Npb25UeXBlLmRlZmluaXRlbHlJc0Jvb2xlYW4oKSAmJiBjb25zdGFudC5pc0Jvb2xlYW4o
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZWxzZSBpZiAoZXhwcmVzc2lvblR5cGUuaXNJ
bnQzMigpICYmIGNvbnN0YW50LmlzSW50MzIoKSAmJiAoY29uc3RhbnQuYXNJbnQzMigpID09IDAg
fHwgY29uc3RhbnQuYXNJbnQzMigpID09IDEpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBl
bHNlIGlmIChleHByZXNzaW9uVHlwZS5kZWZpbml0ZWx5SXNCb29sZWFuKCkgJiYgY29uc3RhbnQu
aXNJbnQzMigpICYmIChjb25zdGFudC5hc0ludDMyKCkgPT0gMCB8fCBjb25zdGFudC5hc0ludDMy
KCkgPT0gMSkpCisgICAgICAgIHJldHVybiBvcGNvZGVJRCA9PSBvcF9lcSB8fCBvcGNvZGVJRCA9
PSBvcF9uZXE7IC8vIFN0cmljdCBlcXVhbGl0eSBpcyBmYWxzZSBpbiB0aGUgY2FzZSBvZiB0eXBl
IG1pc21hdGNoLCBzbyB3ZSBjYW4ndCBmb2xkIHRvIGEgYnJhbmNoIGJhc2VkIG9uIHRydXRoaW5l
c3MuCisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQmluYXJ5T3BOb2RlOjp0cnlGb2xk
VG9CcmFuY2goQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgVHJpU3RhdGUmIGJyYW5jaENv
bmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqJiBicmFuY2hFeHByZXNzaW9uKQoreworICAgIGJyYW5j
aENvbmRpdGlvbiA9IE1peGVkVHJpU3RhdGU7CisgICAgYnJhbmNoRXhwcmVzc2lvbiA9IDA7CisK
KyAgICBDb25zdGFudE5vZGUqIGNvbnN0YW50ID0gMDsKKyAgICBpZiAobV9leHByMS0+aXNDb25z
dGFudCgpKSB7CisgICAgICAgIGNvbnN0YW50ID0gc3RhdGljX2Nhc3Q8Q29uc3RhbnROb2RlKj4o
bV9leHByMSk7CisgICAgICAgIGJyYW5jaEV4cHJlc3Npb24gPSBtX2V4cHIyOworICAgIH0gZWxz
ZSBpZiAobV9leHByMi0+aXNDb25zdGFudCgpKSB7CisgICAgICAgIGNvbnN0YW50ID0gc3RhdGlj
X2Nhc3Q8Q29uc3RhbnROb2RlKj4obV9leHByMik7CisgICAgICAgIGJyYW5jaEV4cHJlc3Npb24g
PSBtX2V4cHIxOworICAgIH0KKworICAgIGlmICghY29uc3RhbnQpCisgICAgICAgIHJldHVybjsK
KyAgICBBU1NFUlQoYnJhbmNoRXhwcmVzc2lvbik7CisKKyAgICBPcGNvZGVJRCBvcGNvZGVJRCA9
IHRoaXMtPm9wY29kZUlEKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGNvbnN0YW50LT5qc1ZhbHVl
KGdlbmVyYXRvcik7CisgICAgYm9vbCBjYW5Gb2xkVG9CcmFuY2ggPSBKU0M6OmNhbkZvbGRUb0Jy
YW5jaChvcGNvZGVJRCwgYnJhbmNoRXhwcmVzc2lvbiwgdmFsdWUpOworICAgIGlmICghY2FuRm9s
ZFRvQnJhbmNoKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAob3Bjb2RlSUQgPT0gb3BfZXEg
fHwgb3Bjb2RlSUQgPT0gb3Bfc3RyaWN0ZXEpCisgICAgICAgIGJyYW5jaENvbmRpdGlvbiA9IHRy
aVN0YXRlKHZhbHVlLnB1cmVUb0Jvb2xlYW4oKSk7CisgICAgZWxzZSBpZiAob3Bjb2RlSUQgPT0g
b3BfbmVxIHx8IG9wY29kZUlEID09IG9wX25zdHJpY3RlcSkKKyAgICAgICAgYnJhbmNoQ29uZGl0
aW9uID0gdHJpU3RhdGUoIXZhbHVlLnB1cmVUb0Jvb2xlYW4oKSk7Cit9CisKIFJlZ2lzdGVySUQq
IEJpbmFyeU9wTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBPcGNvZGVJRCBvcGNvZGVJRCA9IHRoaXMtPm9wY29k
ZUlEKCk7CkBAIC0xNTA0LDQxICsxNTUzLDcxIEBAIHZvaWQgVmFyU3RhdGVtZW50Tm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGUKICAgICBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsKIH0KIAotLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIElmTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBJ
ZkVsc2VOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi12b2lk
IElmTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lz
dGVySUQqIGRzdCkKK3N0YXRpYyBpbmxpbmUgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50
KFN0YXRlbWVudE5vZGUqIHN0YXRlbWVudE5vZGUpCiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXREZWJ1
Z0hvb2soV2lsbEV4ZWN1dGVTdGF0ZW1lbnQsIGZpcnN0TGluZSgpLCBsYXN0TGluZSgpLCBjaGFy
UG9zaXRpb24oKSk7Ci0gICAgCi0gICAgUmVmUHRyPExhYmVsPiBhZnRlclRoZW4gPSBnZW5lcmF0
b3IubmV3TGFiZWwoKTsKKyAgICBpZiAoc3RhdGVtZW50Tm9kZS0+aXNCbG9jaygpKQorICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8QmxvY2tOb2RlKj4oc3RhdGVtZW50Tm9kZSktPnNpbmdsZVN0
YXRlbWVudCgpOworICAgIHJldHVybiBzdGF0ZW1lbnROb2RlOworfQogCi0gICAgUmVmUHRyPExh
YmVsPiBiZWZvcmVUaGVuID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7Ci0gICAgZ2VuZXJhdG9yLmVt
aXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1fY29uZGl0aW9uLCBiZWZvcmVUaGVuLmdldCgpLCBh
ZnRlclRoZW4uZ2V0KCksIEZhbGxUaHJvdWdoTWVhbnNUcnVlKTsKLSAgICBnZW5lcmF0b3IuZW1p
dExhYmVsKGJlZm9yZVRoZW4uZ2V0KCkpOworYm9vbCBJZkVsc2VOb2RlOjp0cnlGb2xkQnJlYWtB
bmRDb250aW51ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBTdGF0ZW1lbnROb2RlKiBp
ZkJsb2NrLAorICAgIExhYmVsKiYgdHJ1ZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlJiBmYWxsVGhy
b3VnaE1vZGUpCit7CisgICAgU3RhdGVtZW50Tm9kZSogc2luZ2xlU3RhdGVtZW50ID0gSlNDOjpz
aW5nbGVTdGF0ZW1lbnQoaWZCbG9jayk7CisgICAgaWYgKCFzaW5nbGVTdGF0ZW1lbnQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIGdlbmVyYXRvci5lbWl0Tm9kZShkc3QsIG1faWZCbG9j
ayk7Ci0gICAgZ2VuZXJhdG9yLmVtaXRMYWJlbChhZnRlclRoZW4uZ2V0KCkpOwotfQorICAgIGlm
IChzaW5nbGVTdGF0ZW1lbnQtPmlzQnJlYWsoKSkgeworICAgICAgICBCcmVha05vZGUqIGJyZWFr
Tm9kZSA9IHN0YXRpY19jYXN0PEJyZWFrTm9kZSo+KHNpbmdsZVN0YXRlbWVudCk7CisgICAgICAg
IExhYmVsKiB0YXJnZXQgPSBicmVha05vZGUtPnRyaXZpYWxUYXJnZXQoZ2VuZXJhdG9yKTsKKyAg
ICAgICAgaWYgKCF0YXJnZXQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHRy
dWVUYXJnZXQgPSB0YXJnZXQ7CisgICAgICAgIGZhbGxUaHJvdWdoTW9kZSA9IEZhbGxUaHJvdWdo
TWVhbnNGYWxzZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCi0vLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gSWZFbHNlTm9kZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KKyAgICBpZiAoc2luZ2xlU3RhdGVtZW50LT5pc0NvbnRpbnVlKCkpIHsK
KyAgICAgICAgQ29udGludWVOb2RlKiBjb250aW51ZU5vZGUgPSBzdGF0aWNfY2FzdDxDb250aW51
ZU5vZGUqPihzaW5nbGVTdGF0ZW1lbnQpOworICAgICAgICBMYWJlbCogdGFyZ2V0ID0gY29udGlu
dWVOb2RlLT50cml2aWFsVGFyZ2V0KGdlbmVyYXRvcik7CisgICAgICAgIGlmICghdGFyZ2V0KQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB0cnVlVGFyZ2V0ID0gdGFyZ2V0Owor
ICAgICAgICBmYWxsVGhyb3VnaE1vZGUgPSBGYWxsVGhyb3VnaE1lYW5zRmFsc2U7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KIAogdm9pZCBJZkVs
c2VOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0
ZXJJRCogZHN0KQogewogICAgIGdlbmVyYXRvci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3Rh
dGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExpbmUoKSwgY2hhclBvc2l0aW9uKCkpOwogICAgIAor
ICAgIFJlZlB0cjxMYWJlbD4gYmVmb3JlVGhlbiA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAg
IFJlZlB0cjxMYWJlbD4gYmVmb3JlRWxzZSA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgIFJl
ZlB0cjxMYWJlbD4gYWZ0ZXJFbHNlID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAKLSAgICBSZWZQ
dHI8TGFiZWw+IGJlZm9yZVRoZW4gPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKLSAgICBnZW5lcmF0
b3IuZW1pdE5vZGVJbkNvbmRpdGlvbkNvbnRleHQobV9jb25kaXRpb24sIGJlZm9yZVRoZW4uZ2V0
KCksIGJlZm9yZUVsc2UuZ2V0KCksIEZhbGxUaHJvdWdoTWVhbnNUcnVlKTsKKyAgICBMYWJlbCog
dHJ1ZVRhcmdldCA9IGJlZm9yZVRoZW4uZ2V0KCk7CisgICAgTGFiZWwqIGZhbHNlVGFyZ2V0ID0g
YmVmb3JlRWxzZS5nZXQoKTsKKyAgICBGYWxsVGhyb3VnaE1vZGUgZmFsbFRocm91Z2hNb2RlID0g
RmFsbFRocm91Z2hNZWFuc1RydWU7CisgICAgYm9vbCBkaWRGb2xkSWZCbG9jayA9IHRyeUZvbGRC
cmVha0FuZENvbnRpbnVlKGdlbmVyYXRvciwgbV9pZkJsb2NrLCB0cnVlVGFyZ2V0LCBmYWxsVGhy
b3VnaE1vZGUpOworCisgICAgZ2VuZXJhdG9yLmVtaXROb2RlSW5Db25kaXRpb25Db250ZXh0KG1f
Y29uZGl0aW9uLCB0cnVlVGFyZ2V0LCBmYWxzZVRhcmdldCwgZmFsbFRocm91Z2hNb2RlKTsKICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKGJlZm9yZVRoZW4uZ2V0KCkpOwogCi0gICAgZ2VuZXJhdG9y
LmVtaXROb2RlKGRzdCwgbV9pZkJsb2NrKTsKLSAgICBnZW5lcmF0b3IuZW1pdEp1bXAoYWZ0ZXJF
bHNlLmdldCgpKTsKKyAgICBpZiAoIWRpZEZvbGRJZkJsb2NrKSB7CisgICAgICAgIGdlbmVyYXRv
ci5lbWl0Tm9kZShkc3QsIG1faWZCbG9jayk7CisgICAgICAgIGlmIChtX2Vsc2VCbG9jaykKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChhZnRlckVsc2UuZ2V0KCkpOworICAgIH0KIAog
ICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoYmVmb3JlRWxzZS5nZXQoKSk7CiAKLSAgICBnZW5lcmF0
b3IuZW1pdE5vZGUoZHN0LCBtX2Vsc2VCbG9jayk7CisgICAgaWYgKG1fZWxzZUJsb2NrKQorICAg
ICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZHN0LCBtX2Vsc2VCbG9jayk7CiAKICAgICBnZW5lcmF0
b3IuZW1pdExhYmVsKGFmdGVyRWxzZS5nZXQoKSk7CiB9CkBAIC0xNzAwLDYgKzE3NzksMjAgQEAg
dm9pZCBGb3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbgogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29udGludWVOb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCitMYWJlbCogQ29udGludWVOb2RlOjp0cml2aWFsVGFyZ2V0KEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IpCit7CisgICAgaWYgKGdlbmVyYXRvci5zaG91bGRFbWl0RGVi
dWdIb29rcygpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIExhYmVsU2NvcGUqIHNjb3BlID0g
Z2VuZXJhdG9yLmNvbnRpbnVlVGFyZ2V0KG1faWRlbnQpOworICAgIEFTU0VSVChzY29wZSk7CisK
KyAgICBpZiAoZ2VuZXJhdG9yLnNjb3BlRGVwdGgoKSAhPSBzY29wZS0+c2NvcGVEZXB0aCgpKQor
ICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBzY29wZS0+Y29udGludWVUYXJnZXQoKTsK
K30KKwogdm9pZCBDb250aW51ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKikKIHsKICAgICBnZW5lcmF0b3IuZW1pdERlYnVnSG9vayhX
aWxsRXhlY3V0ZVN0YXRlbWVudCwgZmlyc3RMaW5lKCksIGxhc3RMaW5lKCksIGNoYXJQb3NpdGlv
bigpKTsKQEAgLTE3MTMsNiArMTgwNiwyMCBAQCB2b2lkIENvbnRpbnVlTm9kZTo6ZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBCcmVha05v
ZGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKK0xhYmVsKiBCcmVha05v
ZGU6OnRyaXZpYWxUYXJnZXQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcikKK3sKKyAgICBp
ZiAoZ2VuZXJhdG9yLnNob3VsZEVtaXREZWJ1Z0hvb2tzKCkpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgTGFiZWxTY29wZSogc2NvcGUgPSBnZW5lcmF0b3IuYnJlYWtUYXJnZXQobV9pZGVudCk7
CisgICAgQVNTRVJUKHNjb3BlKTsKKworICAgIGlmIChnZW5lcmF0b3Iuc2NvcGVEZXB0aCgpICE9
IHNjb3BlLT5zY29wZURlcHRoKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIHNj
b3BlLT5icmVha1RhcmdldCgpOworfQorCiB2b2lkIEJyZWFrTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogewogICAgIGdlbmVyYXRv
ci5lbWl0RGVidWdIb29rKFdpbGxFeGVjdXRlU3RhdGVtZW50LCBmaXJzdExpbmUoKSwgbGFzdExp
bmUoKSwgY2hhclBvc2l0aW9uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgJKHJldmlzaW9uIDE0ODk4NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvQVNUQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDQsMTYgKzM0NCw5IEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSAgICBTdGF0ZW1lbnRO
b2RlKiBjcmVhdGVJZlN0YXRlbWVudChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBF
eHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIGludCBz
dGFydCwgaW50IGVuZCkKLSAgICB7Ci0gICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3IChtX3Zt
KSBJZk5vZGUobG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrKTsKLSAgICAgICAgcmVzdWx0
LT5zZXRMb2Moc3RhcnQsIGVuZCwgbG9jYXRpb24uY2hhclBvc2l0aW9uKTsKLSAgICAgICAgcmV0
dXJuIHJlc3VsdDsKLSAgICB9Ci0KICAgICBTdGF0ZW1lbnROb2RlKiBjcmVhdGVJZlN0YXRlbWVu
dChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogY29uZGl0
aW9uLCBTdGF0ZW1lbnROb2RlKiB0cnVlQmxvY2ssIFN0YXRlbWVudE5vZGUqIGZhbHNlQmxvY2ss
IGludCBzdGFydCwgaW50IGVuZCkKICAgICB7Ci0gICAgICAgIElmTm9kZSogcmVzdWx0ID0gbmV3
IChtX3ZtKSBJZkVsc2VOb2RlKGxvY2F0aW9uLCBjb25kaXRpb24sIHRydWVCbG9jaywgZmFsc2VC
bG9jayk7CisgICAgICAgIElmRWxzZU5vZGUqIHJlc3VsdCA9IG5ldyAobV92bSkgSWZFbHNlTm9k
ZShsb2NhdGlvbiwgY29uZGl0aW9uLCB0cnVlQmxvY2ssIGZhbHNlQmxvY2spOwogICAgICAgICBy
ZXN1bHQtPnNldExvYyhzdGFydCwgZW5kLCBsb2NhdGlvbi5jaGFyUG9zaXRpb24pOwogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZUNvbnN0cnVjdG9ycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCShyZXZpc2lvbiAxNDg5ODUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtNjAsMjUgKzYwLDMwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHsKICAgICB9CiAKKyAgICBp
bmxpbmUgQ29uc3RhbnROb2RlOjpDb25zdGFudE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBs
b2NhdGlvbiwgUmVzdWx0VHlwZSByZXN1bHRUeXBlKQorICAgICAgICA6IEV4cHJlc3Npb25Ob2Rl
KGxvY2F0aW9uLCByZXN1bHRUeXBlKQorICAgIHsKKyAgICB9CisKICAgICBpbmxpbmUgTnVsbE5v
ZGU6Ok51bGxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24pCi0gICAgICAgIDog
RXhwcmVzc2lvbk5vZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6Om51bGxUeXBlKCkpCisgICAgICAg
IDogQ29uc3RhbnROb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpudWxsVHlwZSgpKQogICAgIHsK
ICAgICB9CiAKICAgICBpbmxpbmUgQm9vbGVhbk5vZGU6OkJvb2xlYW5Ob2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGJvb2wgdmFsdWUpCi0gICAgICAgIDogRXhwcmVzc2lvbk5v
ZGUobG9jYXRpb24sIFJlc3VsdFR5cGU6OmJvb2xlYW5UeXBlKCkpCisgICAgICAgIDogQ29uc3Rh
bnROb2RlKGxvY2F0aW9uLCBSZXN1bHRUeXBlOjpib29sZWFuVHlwZSgpKQogICAgICAgICAsIG1f
dmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAogICAgIGlubGluZSBOdW1iZXJOb2RlOjpOdW1i
ZXJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24sIGRvdWJsZSB2YWx1ZSkKLSAg
ICAgICAgOiBFeHByZXNzaW9uTm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZSgp
KQorICAgICAgICA6IENvbnN0YW50Tm9kZShsb2NhdGlvbiwgUmVzdWx0VHlwZTo6bnVtYmVyVHlw
ZSgpKQogICAgICAgICAsIG1fdmFsdWUodmFsdWUpCiAgICAgewogICAgIH0KIAogICAgIGlubGlu
ZSBTdHJpbmdOb2RlOjpTdHJpbmdOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IGNvbnN0IElkZW50aWZpZXImIHZhbHVlKQotICAgICAgICA6IEV4cHJlc3Npb25Ob2RlKGxvY2F0
aW9uLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCisgICAgICAgIDogQ29uc3RhbnROb2RlKGxv
Y2F0aW9uLCBSZXN1bHRUeXBlOjpzdHJpbmdUeXBlKCkpCiAgICAgICAgICwgbV92YWx1ZSh2YWx1
ZSkKICAgICB7CiAgICAgfQpAQCAtNjMxLDE1ICs2MzYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgewogICAgIH0KICAgICAKLSAgICBpbmxpbmUgSWZOb2RlOjpJZk5vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbiwgRXhwcmVzc2lvbk5vZGUqIGNvbmRpdGlvbiwgU3RhdGVtZW50
Tm9kZSogaWZCbG9jaykKKyAgICBpbmxpbmUgSWZFbHNlTm9kZTo6SWZFbHNlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0
ZW1lbnROb2RlKiBpZkJsb2NrLCBTdGF0ZW1lbnROb2RlKiBlbHNlQmxvY2spCiAgICAgICAgIDog
U3RhdGVtZW50Tm9kZShsb2NhdGlvbikKICAgICAgICAgLCBtX2NvbmRpdGlvbihjb25kaXRpb24p
CiAgICAgICAgICwgbV9pZkJsb2NrKGlmQmxvY2spCi0gICAgewotICAgIH0KLQotICAgIGlubGlu
ZSBJZkVsc2VOb2RlOjpJZkVsc2VOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYgbG9jYXRpb24s
IEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRl
bWVudE5vZGUqIGVsc2VCbG9jaykKLSAgICAgICAgOiBJZk5vZGUobG9jYXRpb24sIGNvbmRpdGlv
biwgaWZCbG9jaykKICAgICAgICAgLCBtX2Vsc2VCbG9jayhlbHNlQmxvY2spCiAgICAgewogICAg
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgJKHJldmlzaW9uIDE0ODk4
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTQ5LDYgKzE0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNTdHJpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29s
IGlzUHVyZShCeXRlY29kZUdlbmVyYXRvciYpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9ICAgICAg
ICAKKyAgICAgICAgdmlydHVhbCBib29sIGlzQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNMb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Jlc29sdmVOb2RlKCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQnJhY2tldEFjY2Vzc29yTm9kZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNTgsNiArMTU5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NpbXBsZUFycmF5KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQWRkKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzU3VidHJhY3QoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCb29sZWFuKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25D
b250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwqLCBMYWJlbCosIEZhbGxUaHJvdWdoTW9k
ZSk7CiAKQEAgLTE4Myw2MyArMTg1LDY3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNFbXB0eVN0YXRlbWVudCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1JldHVybk5vZGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNFeHByU3RhdGVtZW50KCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KLQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzQmxvY2soKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAgaW50IG1fbGFzdExpbmU7CiAgICAgfTsK
IAotICAgIGNsYXNzIE51bGxOb2RlIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKKyAgICBjbGFz
cyBDb25zdGFudE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewogICAgIHB1YmxpYzoKLSAg
ICAgICAgTnVsbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJik7Ci0KKyAgICAgICAgQ29uc3Rh
bnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUpOworICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7
IH0KKyAgICAgICAgdmlydHVhbCBKU1ZhbHVlIGpzVmFsdWUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBj
b25zdCA9IDA7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOworICAgICAgICB2
b2lkIGVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRvciYsIExh
YmVsKiB0cnVlVGFyZ2V0LCBMYWJlbCogZmFsc2VUYXJnZXQsIEZhbGxUaHJvdWdoTW9kZSk7Cisg
ICAgfTsKKworICAgIGNsYXNzIE51bGxOb2RlIDogcHVibGljIENvbnN0YW50Tm9kZSB7CisgICAg
cHVibGljOgorICAgICAgICBOdWxsTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAorICAg
IHByaXZhdGU6CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9y
JikgY29uc3QgeyByZXR1cm4ganNOdWxsKCk7IH0KICAgICB9OwogCi0gICAgY2xhc3MgQm9vbGVh
bk5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgeworICAgIGNsYXNzIEJvb2xlYW5Ob2RlIDog
cHVibGljIENvbnN0YW50Tm9kZSB7CiAgICAgcHVibGljOgogICAgICAgICBCb29sZWFuTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBib29sIHZhbHVlKTsKKyAgICAgICAgYm9vbCB2YWx1ZSgp
IHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KTsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCb29sZWFuKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgICAgICB2aXJ0dWFsIEpTVmFsdWUganNWYWx1ZShCeXRl
Y29kZUdlbmVyYXRvciYpIGNvbnN0IHsgcmV0dXJuIGpzQm9vbGVhbihtX3ZhbHVlKTsgfQogCiAg
ICAgICAgIGJvb2wgbV92YWx1ZTsKICAgICB9OwogCi0gICAgY2xhc3MgTnVtYmVyTm9kZSA6IHB1
YmxpYyBFeHByZXNzaW9uTm9kZSB7CisgICAgY2xhc3MgTnVtYmVyTm9kZSA6IHB1YmxpYyBDb25z
dGFudE5vZGUgewogICAgIHB1YmxpYzoKICAgICAgICAgTnVtYmVyTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBkb3VibGUgdmFsdWUpOwotCi0gICAgICAgIGRvdWJsZSB2YWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fdmFsdWU7IH0KKyAgICAgICAgZG91YmxlIHZhbHVlKCkgeyByZXR1cm4gbV92
YWx1ZTsgfQogICAgICAgICB2b2lkIHNldFZhbHVlKGRvdWJsZSB2YWx1ZSkgeyBtX3ZhbHVlID0g
dmFsdWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsKLQogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNOdW1iZXIoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAg
IHZpcnR1YWwgYm9vbCBpc1B1cmUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBqc1ZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9y
JikgY29uc3QgeyByZXR1cm4ganNOdW1iZXIobV92YWx1ZSk7IH0KIAogICAgICAgICBkb3VibGUg
bV92YWx1ZTsKICAgICB9OwogCi0gICAgY2xhc3MgU3RyaW5nTm9kZSA6IHB1YmxpYyBFeHByZXNz
aW9uTm9kZSB7CisgICAgY2xhc3MgU3RyaW5nTm9kZSA6IHB1YmxpYyBDb25zdGFudE5vZGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgU3RyaW5nTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBj
b25zdCBJZGVudGlmaWVyJik7Ci0KICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgdmFsdWUoKSB7
IHJldHVybiBtX3ZhbHVlOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNQdXJlKEJ5dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAg
ICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKTsKLSAgICAgICAgCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1N0cmlu
ZygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgdmlydHVhbCBKU1ZhbHVlIGpzVmFs
dWUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdDsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBtX3ZhbHVlOwogICAgIH07CkBAIC03NDUsMTEgKzc1MSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgQmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIFJlc3VsdFR5cGUs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBPcGNvZGVJRCwg
Ym9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgICAgICBSZWdpc3RlcklEKiBlbWl0U3Ry
Y2F0KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9u
LCBSZWdpc3RlcklEKiBsaHMgPSAwLCBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUqIGVtaXRFeHByZXNz
aW9uSW5mb0Zvck1lID0gMCk7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25D
b250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwqIHRydWVUYXJnZXQsIExhYmVsKiBmYWxz
ZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlKTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbGhz
KCkgeyByZXR1cm4gbV9leHByMTsgfTsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIHJocygpIHsg
cmV0dXJuIG1fZXhwcjI7IH07CiAKICAgICBwcml2YXRlOgorICAgICAgICB2b2lkIHRyeUZvbGRU
b0JyYW5jaChCeXRlY29kZUdlbmVyYXRvciYsIFRyaVN0YXRlJiBicmFuY2hDb25kaXRpb24sIEV4
cHJlc3Npb25Ob2RlKiYgYnJhbmNoRXhwcmVzc2lvbik7CiAgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
IAogICAgIHByb3RlY3RlZDoKQEAgLTExMjQsMjQgKzExMzIsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKIAotICAgIGNsYXNzIElm
Tm9kZSA6IHB1YmxpYyBTdGF0ZW1lbnROb2RlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIElmTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0
ZW1lbnROb2RlKiBpZkJsb2NrKTsKLQotICAgIHByb3RlY3RlZDoKLSAgICAgICAgdmlydHVhbCB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7Ci0K
LSAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fY29uZGl0aW9uOwotICAgICAgICBTdGF0ZW1lbnRO
b2RlKiBtX2lmQmxvY2s7Ci0gICAgfTsKLQotICAgIGNsYXNzIElmRWxzZU5vZGUgOiBwdWJsaWMg
SWZOb2RlIHsKKyAgICBjbGFzcyBJZkVsc2VOb2RlIDogcHVibGljIFN0YXRlbWVudE5vZGUgewog
ICAgIHB1YmxpYzoKICAgICAgICAgSWZFbHNlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogY29uZGl0aW9uLCBTdGF0ZW1lbnROb2RlKiBpZkJsb2NrLCBTdGF0ZW1l
bnROb2RlKiBlbHNlQmxvY2spOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCk7CisgICAg
ICAgIGJvb2wgdHJ5Rm9sZEJyZWFrQW5kQ29udGludWUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBTdGF0
ZW1lbnROb2RlKiBpZkJsb2NrLAorICAgICAgICAgICAgTGFiZWwqJiB0cnVlVGFyZ2V0LCBGYWxs
VGhyb3VnaE1vZGUmKTsKIAorICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9jb25kaXRpb247Cisg
ICAgICAgIFN0YXRlbWVudE5vZGUqIG1faWZCbG9jazsKICAgICAgICAgU3RhdGVtZW50Tm9kZSog
bV9lbHNlQmxvY2s7CiAgICAgfTsKIApAQCAtMTE5OCw4ICsxMTk5LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHB1YmxpYzoKICAgICAgICAgQ29udGludWVOb2RlKFZNKiwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJik7CiAgICAgICAgIENvbnRpbnVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIExhYmVsKiB0cml2aWFsVGFyZ2V0KEJ5dGVj
b2RlR2VuZXJhdG9yJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0NvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2aXJ0dWFs
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKTsK
IAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwpAQCAtMTIwOSw4ICsxMjEyLDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHB1YmxpYzoKICAgICAgICAgQnJlYWtOb2RlKFZNKiwg
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJik7CiAgICAgICAgIEJyZWFrTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIExhYmVsKiB0cml2aWFsVGFy
Z2V0KEJ5dGVjb2RlR2VuZXJhdG9yJik7CiAgICAgICAgIAogICAgIHByaXZhdGU6CisgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0JyZWFrKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICB2
aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAkocmV2aXNpb24gMTQ4OTg1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NiwxMCArMjYsMTEgQEAKICNpbmNsdWRlICJBU1RCdWlsZGVyLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiRGVidWdnZXIuaCIKLSNpbmNsdWRlICJWTS5oIgorI2luY2x1ZGUg
IkpTQ0pTVmFsdWVJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTGV4ZXIuaCIKICNpbmNsdWRlICJOb2Rl
SW5mby5oIgogI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCisjaW5jbHVkZSAiVk0uaCIKICNp
bmNsdWRlIDx1dGlsaXR5PgogI2luY2x1ZGUgPHd0Zi9IYXNoRnVuY3Rpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgpAQCAtMTAxMSw3ICsxMDEyLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZQogICAgIGZhaWxJZkZhbHNlKHRydWVCbG9jayk7CiAKICAg
ICBpZiAoIW1hdGNoKEVMU0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0YXRl
bWVudChpZkxvY2F0aW9uLCBjb25kaXRpb24sIHRydWVCbG9jaywgc3RhcnQsIGVuZCk7CisgICAg
ICAgIHJldHVybiBjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KGlmTG9jYXRpb24sIGNvbmRpdGlv
biwgdHJ1ZUJsb2NrLCAwLCBzdGFydCwgZW5kKTsKIAogICAgIFZlY3RvcjxUcmVlRXhwcmVzc2lv
bj4gZXhwclN0YWNrOwogICAgIFZlY3RvcjxwYWlyPGludCwgaW50PiA+IHBvc1N0YWNrOwpAQCAt
MTA1Niw3ICsxMDU3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZQogICAgICAgICBwb3NTdGFjay5yZW1vdmVMYXN0KCk7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlv
biBlbHNlTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uU3RhY2subGFzdCgpOwogICAgICAgICB0b2tl
bkxvY2F0aW9uU3RhY2sucmVtb3ZlTGFzdCgpOwotICAgICAgICBzdGF0ZW1lbnRTdGFjay5hcHBl
bmQoY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChlbHNlTG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1
ZUJsb2NrLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpKTsKKyAgICAgICAgc3RhdGVtZW50U3RhY2su
YXBwZW5kKGNvbnRleHQuY3JlYXRlSWZTdGF0ZW1lbnQoZWxzZUxvY2F0aW9uLCBjb25kaXRpb24s
IHRydWVCbG9jaywgMCwgcG9zLmZpcnN0LCBwb3Muc2Vjb25kKSk7CiAgICAgfQogCiAgICAgd2hp
bGUgKCFleHByU3RhY2suaXNFbXB0eSgpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1Jlc3VsdFR5cGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1Jlc3VsdFR5cGUuaAkocmV2aXNpb24gMTQ4OTg1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9SZXN1bHRUeXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIChtX3R5cGUgJiBUeXBlQml0
cykgPT0gVHlwZU1heWJlU3RyaW5nOwogICAgICAgICB9CiAKKyAgICAgICAgYm9vbCBkZWZpbml0
ZWx5SXNCb29sZWFuKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIChtX3R5cGUgJiBU
eXBlQml0cykgPT0gVHlwZU1heWJlQm9vbDsKKyAgICAgICAgfQorCiAgICAgICAgIGJvb2wgbWln
aHRCZU51bWJlcigpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX3R5cGUgJiBUeXBl
TWF5YmVOdW1iZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1Zh
bHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHJldmlzaW9uIDE0ODk4NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTgw
MCw3ICs4MDAsNyBAQCBpbmxpbmUgVHJpU3RhdGUgSlNWYWx1ZTo6cHVyZVRvQm9vbGVhbigpCiAg
ICAgaWYgKGlzRG91YmxlKCkpCiAgICAgICAgIHJldHVybiAoYXNEb3VibGUoKSA+IDAuMCB8fCBh
c0RvdWJsZSgpIDwgMC4wKSA/IFRydWVUcmlTdGF0ZSA6IEZhbHNlVHJpU3RhdGU7IC8vIGZhbHNl
IGZvciBOYU4KICAgICBpZiAoaXNDZWxsKCkpCi0gICAgICAgIHJldHVybiBNaXhlZFRyaVN0YXRl
OworICAgICAgICByZXR1cm4gYXNDZWxsKCktPnB1cmVUb0Jvb2xlYW4oKTsKICAgICByZXR1cm4g
aXNUcnVlKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTQ4OTg1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2
LDYgKzk2LDcgQEAgcHVibGljOgogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgdG9Qcmlt
aXRpdmUoRXhlY1N0YXRlKiwgUHJlZmVycmVkUHJpbWl0aXZlVHlwZSkgY29uc3Q7CiAgICAgYm9v
bCBnZXRQcmltaXRpdmVOdW1iZXIoRXhlY1N0YXRlKiwgZG91YmxlJiBudW1iZXIsIEpTVmFsdWUm
KSBjb25zdDsKICAgICBib29sIHRvQm9vbGVhbihFeGVjU3RhdGUqKSBjb25zdDsKKyAgICBUcmlT
dGF0ZSBwdXJlVG9Cb29sZWFuKCkgY29uc3Q7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgZG91Ymxl
IHRvTnVtYmVyKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTT2Jq
ZWN0KiB0b09iamVjdChFeGVjU3RhdGUqLCBKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxpbmVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCShyZXZp
c2lvbiAxNDg5ODUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxp
bmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw2ICsxOTIsMTMgQEAgaW5saW5lIGJvb2wgSlND
ZWxsOjp0b0Jvb2xlYW4oRXhlY1N0YXRlKgogICAgIHJldHVybiAhc3RydWN0dXJlKCktPm1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKTsKIH0KIAoraW5s
aW5lIFRyaVN0YXRlIEpTQ2VsbDo6cHVyZVRvQm9vbGVhbigpIGNvbnN0Cit7CisgICAgaWYgKGlz
U3RyaW5nKCkpIAorICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0
aGlzKS0+dG9Cb29sZWFuKCkgPyBUcnVlVHJpU3RhdGUgOiBGYWxzZVRyaVN0YXRlOworICAgIHJl
dHVybiBNaXhlZFRyaVN0YXRlOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8v
IEpTQ2VsbElubGluZXNfaApJbmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dURi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODk5MSkKKysrIFNvdXJjZS9XVEYv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDQtMjMgIEdl
b2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBGaWxsZWQgb3V0IG1v
cmUgY2FzZXMgb2YgYnJhbmNoIGZvbGRpbmcgaW4gYnl0ZWNvZGUgd2hlbiBlbWl0dGluZyBleHBy
ZXNzaW9ucyBpbnRvIGEgYnJhbmNoaW5nIGNvbnRleHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNTA1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgaGVscGVyIGNvbnN0cnVjdG9yIGZvciBU
cmlTdGF0ZSBzbyBjbGllbnRzIGNhbiBtYWtlIG9uZSB3aXRob3V0CisgICAgICAgIGJyYW5jaGlu
ZyBvciBtYWtpbmcgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIGludGVnZXIgdmFsdWVzIG9mIFRyaVN0
YXRlcy4KKworICAgICAgICAqIHd0Zi9UcmlTdGF0ZS5oOgorICAgICAgICAoV1RGOjp0cmlTdGF0
ZSk6CisgICAgICAgIChXVEYpOgorCiAyMDEzLTA0LTIzICBSb2dlciBGb25nICA8cm9nZXJfZm9u
Z0BhcHBsZS5jb20+CiAKICAgICAgICAgQXBwbGVXaW4gYnVpbGQgZml4LgpJbmRleDogU291cmNl
L1dURi93dGYvVHJpU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9UcmlTdGF0
ZS5oCShyZXZpc2lvbiAxNDg5ODUpCisrKyBTb3VyY2UvV1RGL3d0Zi9UcmlTdGF0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCwxMSBAQCBlbnVtIFRyaVN0YXRlIHsKICAgICBNaXhlZFRy
aVN0YXRlCiB9OwogCitpbmxpbmUgVHJpU3RhdGUgdHJpU3RhdGUoYm9vbCBib29sZWFuKQorewor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxUcmlTdGF0ZT4oYm9vbGVhbik7Cit9CisKIH0KIAogdXNp
bmcgV1RGOjpUcmlTdGF0ZTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE0ODk5MSkKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEzLTA0LTIz
ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgRmlsbGVkIG91
dCBtb3JlIGNhc2VzIG9mIGJyYW5jaCBmb2xkaW5nIGluIGJ5dGVjb2RlIHdoZW4gZW1pdHRpbmcg
ZXhwcmVzc2lvbnMgaW50byBhIGJyYW5jaGluZyBjb250ZXh0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTUwNTcKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhIHBlcmZvcm1hbmNlIHRlc3QgZm9y
IGludGVyZXN0aW5nIGJyYW5jaCB0eXBlcy4KKworICAgICAgICAqIGZhc3QvanMvcmVncmVzcy9i
cmFuY2gtZm9sZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvcmVncmVz
cy9icmFuY2gtZm9sZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL3JlZ3Jlc3Mvc2Ny
aXB0LXRlc3RzL2JyYW5jaC1mb2xkLmpzOiBBZGRlZC4KKwogMjAxMy0wNC0yMyAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBUaWxlZCBsYXllcnMgY2xp
cHBlZCBpbnNpZGUgbmVzdGVkIHRyYW5zZm9ybS9wcmVzZXJ2ZS0zZCBoaWVyYXJjaGllcwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL2JyYW5jaC1mb2xkLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3JlZ3Jlc3MvYnJhbmNoLWZvbGQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL2Jy
YW5jaC1mb2xkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEwIEBACitK
U1JlZ3Jlc3MvYnJhbmNoLWZvbGQKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BB
U1Mgbm8gZXhjZXB0aW9uIHRocm93bgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9icmFu
Y2gtZm9sZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvcmVncmVzcy9i
cmFuY2gtZm9sZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdy
ZXNzL2JyYW5jaC1mb2xkLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMiBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlZ3Jlc3MtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvYnJhbmNoLWZvbGQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yZWdyZXNzLXBvc3QuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10
ZXN0cy9icmFuY2gtZm9sZC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Jl
Z3Jlc3Mvc2NyaXB0LXRlc3RzL2JyYW5jaC1mb2xkLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9icmFuY2gtZm9sZC5qcwkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACitmdW5jdGlvbiBmKCkKK3sKKwl2YXIgaTsKKwl2YXIg
bGltaXQgPSAxNTAwMDA7CisKKwlmb3IgKGkgPSAwOyAoaSA8IGxpbWl0KSA9PSB0cnVlOyArK2kp
IHsKKwl9CisKKwlpZiAoaSAhPSBsaW1pdCkKKwkJdGhyb3cgImJhZCByZXN1bHQiOworCisJZm9y
IChpID0gMDsgKGkgPCBsaW1pdCkgPT09IHRydWU7ICsraSkgeworCX0KKworCWlmIChpICE9IGxp
bWl0KQorCQl0aHJvdyAiYmFkIHJlc3VsdCI7CisKKwlpID0gMDsKKwlmb3IgKHZhciBkb25lID0g
ZmFsc2U7IGRvbmUgPT0gZmFsc2U7ICkgeworCQlpZiAoISgrK2kgPCBsaW1pdCkpCisJCQlkb25l
ID0gdHJ1ZTsKKwl9CisKKwlpZiAoaSAhPSBsaW1pdCkKKwkJdGhyb3cgImJhZCByZXN1bHQiOwor
CisJaSA9IDA7CisJd2hpbGUgKHRydWUpIHsKKwkJaWYgKCgrK2kgPCBsaW1pdCkgPT0gZmFsc2Up
CisJCQlicmVhazsKKwl9CisKKwlpZiAoaSAhPSBsaW1pdCkKKwkJdGhyb3cgImJhZCByZXN1bHQi
OworCisJaSA9IDA7CisJd2hpbGUgKDEpIHsKKwkJaWYgKCgrK2kgPCBsaW1pdCkgIT0gdHJ1ZSkK
KwkJCWJyZWFrOworCX0KKworCWlmIChpICE9IGxpbWl0KQorCQl0aHJvdyAiYmFkIHJlc3VsdCI7
CisKKwlpID0gbGltaXQ7CisJd2hpbGUgKC0taSkgeworCX0KKworCWlmIChpICE9IDApCisJCXRo
cm93ICJiYWQgcmVzdWx0IjsKKworCWkgPSBsaW1pdDsKKwl3aGlsZSAoLS1pKSB7CisJCWlmICgo
aSAmIDEpID09IDApCisJCQljb250aW51ZTsKKwl9CisKKwlpZiAoaSAhPSAwKQorCQl0aHJvdyAi
YmFkIHJlc3VsdCI7Cit9CisKK2YoKTsK
</data>
<flag name="review"
          id="220924"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>