<?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>141623</bug_id>
          
          <creation_ts>2015-02-15 14:33:23 -0800</creation_ts>
          <short_desc>DFG SSA should use GetLocal for arguments, and the GetArgument node type should be removed</short_desc>
          <delta_ts>2015-02-16 23:33:40 -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>
          
          <blocked>141332</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1069323</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-15 14:33:23 -0800</bug_when>
    <thetext>The GetArgument node type is bizarre: it acts like a GetLocal that also does checks.  We should just use a GetLocal instead and do the checks elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069333</commentid>
    <comment_count>1</comment_count>
      <attachid>246626</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-15 16:07:19 -0800</bug_when>
    <thetext>Created attachment 246626
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069338</commentid>
    <comment_count>2</comment_count>
      <attachid>246627</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-15 17:40:17 -0800</bug_when>
    <thetext>Created attachment 246627
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069518</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-16 11:30:29 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/180160</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069580</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-16 14:03:44 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Landed in http://trac.webkit.org/changeset/180160

It broke 32 bit API tests, see Apple 32 bit JSC testers for details:

JS ERROR 
JS ERROR 
undefined: JS ERROR TypeError: null is not an object
undefined: JS ERROR TypeError: No default value
undefined: JS ERROR TypeError: No default value
undefined: JS ERROR TypeError: No default value
[native code]: JS ERROR 1
undefined:1: JS ERROR SyntaxError: Unexpected token &apos;=&apos;
undefined:1: JS ERROR SyntaxError: Unexpected token &apos;=&apos;
undefined:1: JS ERROR SyntaxError: Unexpected identifier &apos;Array&apos;
undefined:1: JS ERROR SyntaxError: Unexpected identifier &apos;Array&apos;
undefined:2: JS ERROR SyntaxError: Unexpected identifier &apos;Array&apos;
file:///foo/bar.js:1: JS ERROR SyntaxError: Unexpected identifier &apos;Array&apos;
test script:1:21: JS ERROR an exception
test script:1:21: JS ERROR an exception
test script:1:21: JS ERROR an exception
test script:1:21: JS ERROR an exception
test script:1:21: JS ERROR an exception
test script:1:21: JS ERROR an exception
test script:1:21: JS ERROR an exception
testAPI completed with rc=11 (254)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069596</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-02-16 14:35:07 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; Landed in http://trac.webkit.org/changeset/180160
&gt; 
&gt; It broke 32 bit API tests, see Apple 32 bit JSC testers for details:
&gt; 
&gt; JS ERROR 
&gt; JS ERROR 
&gt; undefined: JS ERROR TypeError: null is not an object
&gt; undefined: JS ERROR TypeError: No default value
&gt; undefined: JS ERROR TypeError: No default value
&gt; undefined: JS ERROR TypeError: No default value
&gt; [native code]: JS ERROR 1
&gt; undefined:1: JS ERROR SyntaxError: Unexpected token &apos;=&apos;
&gt; undefined:1: JS ERROR SyntaxError: Unexpected token &apos;=&apos;
&gt; undefined:1: JS ERROR SyntaxError: Unexpected identifier &apos;Array&apos;
&gt; undefined:1: JS ERROR SyntaxError: Unexpected identifier &apos;Array&apos;
&gt; undefined:2: JS ERROR SyntaxError: Unexpected identifier &apos;Array&apos;
&gt; file:///foo/bar.js:1: JS ERROR SyntaxError: Unexpected identifier &apos;Array&apos;
&gt; test script:1:21: JS ERROR an exception
&gt; test script:1:21: JS ERROR an exception
&gt; test script:1:21: JS ERROR an exception
&gt; test script:1:21: JS ERROR an exception
&gt; test script:1:21: JS ERROR an exception
&gt; test script:1:21: JS ERROR an exception
&gt; test script:1:21: JS ERROR an exception
&gt; testAPI completed with rc=11 (254)

Did it just break Apple 32-bit or all 32-bit?  I ask because I&apos;ve seen the JSC Xcode project mess up dependency resolutions pretty regularly in recent revisions. It might just need a clean build. 

If that doesn&apos;t fix it then rollout is best.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069782</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-02-16 23:33:40 -0800</bug_when>
    <thetext>strange, build works again after an unrelated change - https://build.webkit.org/builders/Apple%20Yosemite%2032-bit%20JSC%20%28BuildAndTest%29/builds/2093</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246626</attachid>
            <date>2015-02-15 16:07:19 -0800</date>
            <delta_ts>2015-02-15 17:40:17 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>32726</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgwMTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBA
CisyMDE1LTAyLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIFNTQSBzaG91bGQgdXNlIEdldExvY2FsIGZvciBhcmd1bWVudHMsIGFuZCB0aGUgR2V0QXJn
dW1lbnQgbm9kZSB0eXBlIHNob3VsZCBiZSByZW1vdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIER1cmluZyBkZXZlbG9wbWVudCBvZiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMzMyLCBJIHJlYWxpemVk
IHRoYXQgSQorICAgICAgICBuZWVkZWQgdG8gdXNlIEdldEFyZ3VtZW50IGZvciBsb2FkaW5nIHNv
bWV0aGluZyB0aGF0IGhhcyBtYWdpY2FsbHkgYWxyZWFkeSBhcHBlYXJlZCBvbiB0aGUKKyAgICAg
ICAgc3RhY2ssIHNvIGN1cnJlbnRseSB0cnVuayBzb3J0IG9mIGFsbG93cyB0aGlzLiBCdXQgdGhl
biBJIHJlYWxpemVkIHRocmVlIHRoaW5nczoKKyAgICAgICAgCisgICAgICAgIC0gQSBHZXRBcmd1
bWVudCB3aXRoIGEgbm9uLUpTVmFsdWUgZmx1c2ggZm9ybWF0IG1lYW5zIHNwZWN1bGF0aW5nIHRo
YXQgdGhlIHZhbHVlIG9uIHRoZQorICAgICAgICAgIHN0YWNrIG9iZXlzIHRoYXQgZm9ybWF0LCBy
YXRoZXIgdGhhbiBqdXN0IGFzc3VtaW5nIHRoYXQgdGhhdCBpdCBhbHJlYWR5IGhhcyB0aGF0IGZv
cm1hdC4KKyAgICAgICAgCisgICAgICAgIC0gVGhlIG5vZGUgSSByZWFsbHkgd2FudCBpcyBHZXRM
b2NhbC4KKyAgICAgICAgCisgICAgICAgIC0gTWF5YmUgaXQgd291bGQgYmUgZWFzaWVyIGlmIHdl
IGp1c3QgdXNlZCBHZXRMb2NhbCBmb3IgYWxsIG9mIHRoZSBjYXNlcyB3aGVyZSB3ZSBjdXJyZW50
bHkKKyAgICAgICAgICB1c2UgR2V0QXJndW1lbnQuCisgICAgICAgIAorICAgICAgICBUaGlzIGNo
YW5nZXMgdGhlIEZUTCB0byBkbyBhcmd1bWVudCBzcGVjdWxhdGlvbnMgaW4gdGhlIHByb2xvZ3Vl
IGp1c3QgbGlrZSB0aGUgREZHIGRvZXMuCisgICAgICAgIFRoaXMgYnJpbmdzIHNvbWUgY29uc2lz
dGVuY3kgdG8gb3VyIHN5c3RlbSwgYW5kIGFsbG93cyB1cyB0byBnZXQgcmlkIG9mIHRoZSBHZXRB
cmd1bWVudAorICAgICAgICBub2RlLgorICAgICAgICAKKyAgICAgICAgV29yayBpbiBwcm9ncmVz
cy4gSSBiZWxpZXZlIHRoYXQgdGhpcyBtaWdodCBzdGlsbCBoYXZlIHNvbWUgYnVncyBhbmQgSSBo
YXZlbid0IGV2YWx1YXRlZAorICAgICAgICBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIGRmZy9E
RkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyk6CisgICAg
ICAgICogZGZnL0RGR0Nsb2JiZXJpemUuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyaXpl
KToKKyAgICAgICAgKiBkZmcvREZHRENFUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkRD
RVBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlND
OjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0Zs
dXNoRm9ybWF0Lmg6CisgICAgICAgIChKU0M6OkRGRzo6dHlwZUZpbHRlckZvcik6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6ZHVtcCk6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OnZhbHVl
UHJvZmlsZUZvcik6CisgICAgICAgIChKU0M6OkRGRzo6R3JhcGg6Om1ldGhvZE9mR2V0dGluZ0FW
YWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAqIGRmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6SW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUp
OgorICAgICAgICAqIGRmZy9ERkdOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpo
YXNWYXJpYWJsZUFjY2Vzc0RhdGEpOgorICAgICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAg
ICAgICAqIGRmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlOjpydW4pOgorICAgICAgICAo
SlNDOjpERkc6OkxvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRvcjo6ZXhlY3V0ZU5vZGUpOgor
ICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6UHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2U6OnByb3BhZ2F0ZSk6CisgICAg
ICAgICogZGZnL0RGR1B1dExvY2FsU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
U1NBQ29udmVyc2lvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTU0FDb252ZXJzaW9u
UGhhc2U6OnJ1bik6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUp
OgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZnRsL0ZUTENhcGFiaWxp
dGllcy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6Y2FuQ29tcGlsZSk6CisgICAgICAgICogZnRs
L0ZUTExvd2VyREZHVG9MTFZNLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1RvTExW
TTo6bG93ZXIpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21waWxlTm9k
ZSk6CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRMb2NhbCk6
CisgICAgICAgIChKU0M6OkZUTDo6TG93ZXJERkdUb0xMVk06OmNvbXBpbGVHZXRBcmd1bWVudCk6
IERlbGV0ZWQuCisKIDIwMTUtMDItMDkgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0
b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHJlbW92ZSBzb21lIHVubmVjZXNzYXJ5
IEluc3BlY3RvciBwcmVmaXhlcyBmcm9tIGNsYXNzIG5hbWVzIGluIEluc3BlY3RvciBuYW1lc3Bh
Y2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRl
cklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fi
c3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgJKHJldmlzaW9uIDE4MDEyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxLDE4ICsxNDEsNiBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJz
dHJhY3RTdGF0ZVR5CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCi0gICAgY2FzZSBH
ZXRBcmd1bWVudDogewotICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gU1NBKTsKLSAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOwotICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUudmFyaWFibGVz
KCkub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKS5vZmZzZXQoKSk7Ci0gICAgICAgIEFTU0VSVCh2
YWx1ZS5pc0hlYXBUb3AoKSk7Ci0gICAgICAgIEZpbHRyYXRpb25SZXN1bHQgcmVzdWx0ID0KLSAg
ICAgICAgICAgIHZhbHVlLmZpbHRlcih0eXBlRmlsdGVyRm9yKHVzZUtpbmRGb3IodmFyaWFibGUt
PmZsdXNoRm9ybWF0KCkpKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQg
PT0gRmlsdHJhdGlvbk9LKTsKLSAgICAgICAgZm9yTm9kZShub2RlKSA9IHZhbHVlOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgICAgIAogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6
IHsKICAgICAgICAgaWYgKCEobm9kZS0+dW5saW5rZWRMb2NhbCgpLmlzQXJndW1lbnQoKSkKICAg
ICAgICAgICAgICYmIG1fZ3JhcGgubV9sYXp5VmFycy5nZXQobm9kZS0+dW5saW5rZWRMb2NhbCgp
LnRvTG9jYWwoKSkpIHsKQEAgLTE3MCw2ICsxNTgsOCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0
ZXI8QWJzdHJhY3RTdGF0ZVR5CiAgICAgY2FzZSBHZXRMb2NhbDogewogICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpOwogICAgICAgICBBYnN0cmFjdFZhbHVlIHZhbHVlID0gbV9zdGF0ZS52YXJpYWJsZXMoKS5v
cGVyYW5kKHZhcmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKS5vZmZzZXQoKSk7CisgICAgICAgIC8v
IFRoZSB2YWx1ZSBpbiB0aGUgbG9jYWwgc2hvdWxkIGFscmVhZHkgYmUgY2hlY2tlZC4KKyAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBub2RlLCB2YWx1ZS5pc1R5cGUodHlwZUZpbHRlckZvcih2
YXJpYWJsZUFjY2Vzc0RhdGEtPmZsdXNoRm9ybWF0KCkpKSk7CiAgICAgICAgIGlmICh2YWx1ZS52
YWx1ZSgpKQogICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKICAg
ICAgICAgZm9yTm9kZShub2RlKSA9IHZhbHVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDbG9iYmVyaXplLmgJKHJldmlzaW9uIDE4MDEyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsNyArMzkx
LDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZQogICAgICAgICBy
ZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0TG9jYWw6Ci0gICAgY2FzZSBHZXRBcmd1bWVu
dDoKICAgICAgICAgcmVhZChBYnN0cmFjdEhlYXAoVmFyaWFibGVzLCBub2RlLT5sb2NhbCgpKSk7
CiAgICAgICAgIGRlZihIZWFwTG9jYXRpb24oVmFyaWFibGVMb2MsIEFic3RyYWN0SGVhcChWYXJp
YWJsZXMsIG5vZGUtPmxvY2FsKCkpKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCShyZXZpc2lvbiAxODAxMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RDRVBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTMsMTIgKzUzLDIxIEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fZ3JhcGgubV9m
b3JtID09IFNTQSkgewogICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3Jh
cGguYmxvY2tzSW5QcmVPcmRlcigpKQogICAgICAgICAgICAgICAgIGZpeHVwQmxvY2soYmxvY2sp
OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGlzIGlzIGxpa2UgY2xlYW5WYXJpYWJs
ZXMsIGJ1dCBoYXMgYSBtdWNoIHNpbXBsZXIgYXBwcm9hY2ggdG8gR2V0TG9jYWwuCisgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykg
eworICAgICAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOwor
ICAgICAgICAgICAgICAgIGlmICghbm9kZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gUGhhbnRvbSAmJiBub2RlLT5vcCgp
ICE9IENoZWNrICYmIG5vZGUtPnNob3VsZEdlbmVyYXRlKCkpCisgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudHNbaV0gPSBudWxs
cHRyOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFkZWRDUFMpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBt
X2dyYXBoLm51bUJsb2NrcygpOyArK2Jsb2NrSW5kZXgpCiAgICAgICAgICAgICAgICAgZml4dXBC
bG9jayhtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpKTsKLSAgICAgICAgICAgIAogICAgICAgICAg
ICAgY2xlYW5WYXJpYWJsZXMobV9ncmFwaC5tX2FyZ3VtZW50cyk7CiAgICAgICAgIH0KICAgICAg
ICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwCShyZXZpc2lv
biAxODAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDYgQEAgYm9vbCBkb2VzR0MoR3JhcGgmIGdyYXBoLCBO
b2RlKiBub2RlKQogICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgY2FzZSBNb3ZIaW50OgogICAgIGNh
c2UgWm9tYmllSGludDoKLSAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgIGNhc2UgUGhhbnRvbToK
ICAgICBjYXNlIEhhcmRQaGFudG9tOgogICAgIGNhc2UgVXBzaWxvbjoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTgwMTI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTAzMyw3ICsxMDMzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aDoKICAgICAgICAgY2FzZSBQaGk6CiAgICAgICAgIGNhc2UgVXBzaWxvbjoKLSAgICAg
ICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICAgICAgY2FzZSBHZXRJbmRleGVkUHJvcGVydHlTdG9y
YWdlOgogICAgICAgICBjYXNlIEdldFR5cGVkQXJyYXlCeXRlT2Zmc2V0OgogICAgICAgICBjYXNl
IExhc3ROb2RlVHlwZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRmx1c2hG
b3JtYXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZsdXNo
Rm9ybWF0LmgJKHJldmlzaW9uIDE4MDEyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRmx1c2hGb3JtYXQuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsMTEgQEAgaW5saW5l
IFVzZUtpbmQgdXNlS2luZEZvcihGbHVzaEZvcm1hdCBmbwogICAgIHJldHVybiBVbnR5cGVkVXNl
OwogfQogCitpbmxpbmUgU3BlY3VsYXRlZFR5cGUgdHlwZUZpbHRlckZvcihGbHVzaEZvcm1hdCBm
b3JtYXQpCit7CisgICAgcmV0dXJuIHR5cGVGaWx0ZXJGb3IodXNlS2luZEZvcihmb3JtYXQpKTsK
K30KKwogaW5saW5lIERhdGFGb3JtYXQgZGF0YUZvcm1hdEZvcihGbHVzaEZvcm1hdCBmb3JtYXQp
CiB7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCShyZXZpc2lvbiAxODAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDI1LDYgKzQyNSw3IEBAIHZvaWQg
R3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgRHVtcEMKICAgICBvdXQucHJpbnQoIlxuIik7
CiAgICAgb3V0LnByaW50KCJERkcgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKG1fY29kZUJs
b2NrLCBKSVRDb2RlOjpERkdKSVQpLCAiOlxuIik7CiAgICAgb3V0LnByaW50KCIgIEZpeHBvaW50
IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsgVW5pZmlj
YXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0YXRlOiAi
LCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOworICAgIG91dC5wcmludCgiICBBcmd1bWVudHM6ICIs
IGxpc3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CiAgICAgb3V0LnByaW50KCJcbiIpOwogICAg
IAogICAgIE5vZGUqIGxhc3ROb2RlID0gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmgJKHJldmlzaW9uIDE4MDEyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNDc1LDIxICs0NzUsMTkgQEAgcHVibGljOgog
ICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlRm9yKE5vZGUqIG5vZGUpCiAgICAgewogICAg
ICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICAKICAgICAgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrID0g
YmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAgICAgICAgCi0g
ICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50KQotICAgICAgICAgICAgcmV0dXJu
IHByb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KG5vZGUtPmxvY2FsKCkudG9B
cmd1bWVudCgpKTsKLSAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5oYXNMb2NhbCgqdGhpcykp
IHsKLSAgICAgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NBKQotICAgICAgICAgICAgICAgIHJldHVy
biAwOwogICAgICAgICAgICAgaWYgKCFub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQoKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGludCBhcmd1bWVudCA9IG5vZGUtPmxv
Y2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgaWYgKG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpICE9IG1fYXJndW1lbnRzW2FyZ3VtZW50XS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBOb2RlKiBhcmd1bWVudE5vZGUg
PSBtX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50Tm9kZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGlmIChub2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuIHBy
b2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFyZ3VtZW50KTsKICAgICAgICAg
fQogICAgICAgICAKQEAgLTUwNCwxNiArNTAyLDE5IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFu
b2RlKQogICAgICAgICAgICAgcmV0dXJuIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVByb2ZpbGUoKTsK
ICAgICAgICAgCi0gICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJhc2VsaW5lQ29k
ZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIGlmIChWYWx1ZVByb2Zp
bGUqIHZhbHVlUHJvZmlsZSA9IHZhbHVlUHJvZmlsZUZvcihub2RlKSkKKyAgICAgICAgICAgIHJl
dHVybiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSk7CiAgICAgICAg
IAogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRMb2NhbCkgeworICAgICAgICAgICAgQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2lu
LnNlbWFudGljKTsKKyAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gTWV0aG9kT2ZHZXR0aW5n
QVZhbHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAogICAgICAgICAgICAgICAgIHByb2ZpbGVk
QmxvY2ssCiAgICAgICAgICAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVLZXkoCiAgICAg
ICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUluZGV4LCBub2Rl
LT5sb2NhbCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHJldHVybiBNZXRob2RP
ZkdldHRpbmdBVmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZUZvcihub2RlKSk7CisgICAgICAgIHJl
dHVybiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKCk7CiAgICAgfQogICAgIAogICAgIGJv
b2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0CkBAIC04MTEsNyArODEyLDE0IEBAIHB1YmxpYzoKICAg
ICBCYWc8RnJvemVuVmFsdWU+IG1fZnJvemVuVmFsdWVzOwogICAgIAogICAgIEJhZzxTdG9yYWdl
QWNjZXNzRGF0YT4gbV9zdG9yYWdlQWNjZXNzRGF0YTsKKyAgICAKKyAgICAvLyBJbiBDUFMsIHRo
aXMgaXMgYWxsIG9mIHRoZSBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3VtZW50cyBpbiB0
aGUgbWFjaGluZSBjb2RlIGJsb2NrCisgICAgLy8gdGhhdCBzdXJ2aXZlZCBEQ0UuCisgICAgLy8K
KyAgICAvLyBJbiBTU0EsIHRoaXMgaXMgYWxsIG9mIHRoZSBHZXRMb2NhbCBub2RlcyBmb3IgdGhl
IGFyZ3VtZW50cyBpbiB0aGUgbWFjaGluZSBjb2RlIGJsb2NrIHRoYXQKKyAgICAvLyBtYXkgaGF2
ZSBzb21lIHNwZWN1bGF0aW9uIGluIHRoZSBwcm9sb2d1ZSBhbmQgc3Vydml2ZWQgRENFLgogICAg
IFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHM7CisgICAgCiAgICAgU2VnbWVudGVkVmVjdG9y
PFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNlZ21l
bnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwogICAg
IFNlZ21lbnRlZFZlY3RvcjxTdHJ1Y3R1cmVTZXQsIDE2PiBtX3N0cnVjdHVyZVNldDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0
U3RhdGUuY3BwCShyZXZpc2lvbiAxODAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMjggKzk2
LDM1IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgIHJvb3Qt
PmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mQXJn
dW1lbnRzKCk7ICsraSkgewogICAgICAgICByb290LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQoaSku
Y2xlYXIoKTsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgewotICAgICAgICAg
ICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VIZWFwVG9wKCk7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgTm9kZSogbm9kZSA9
IHJvb3QtPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKTsKLSAgICAgICAgQVNTRVJUKG5vZGUt
Pm9wKCkgPT0gU2V0QXJndW1lbnQpOwotICAgICAgICBpZiAoIW5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpLT5zaG91bGRVbmJveElmUG9zc2libGUoKSkgeworICAgICAgICBOb2RlKiBub2RlID0g
bV9ncmFwaC5tX2FyZ3VtZW50c1tpXTsKKyAgICAgICAgaWYgKCFub2RlKSB7CisgICAgICAgICAg
ICAvLyBDb3VsZCBoYXBwZW4gYWZ0ZXIgRENFLCBvciBmb3IgY2FwdHVyZWQgYXJndW1lbnRzIGlu
IFNTQS4KICAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5tYWtlSGVh
cFRvcCgpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKG1f
Z3JhcGgubV9mb3JtID09IFNTQSkKKyAgICAgICAgICAgIEFTU0VSVChub2RlLT5vcCgpID09IEdl
dExvY2FsKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0g
U2V0QXJndW1lbnQpOwogICAgICAgICAKLSAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
biA9Ci0gICAgICAgICAgICBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+YXJndW1lbnRBd2Fy
ZVByZWRpY3Rpb24oKTsKLSAgICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0aW9u
KSkKKyAgICAgICAgc3dpdGNoIChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hGb3Jt
YXQoKSkgeworICAgICAgICBjYXNlIEZsdXNoZWRJbnQzMjoKICAgICAgICAgICAgIHJvb3QtPnZh
bHVlc0F0SGVhZC5hcmd1bWVudChpKS5zZXRUeXBlKFNwZWNJbnQzMik7Ci0gICAgICAgIGVsc2Ug
aWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRmx1c2hlZEJvb2xlYW46CiAgICAgICAgICAgICByb290LT52YWx1ZXNB
dEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQm9vbGVhbik7Ci0gICAgICAgIGVsc2UgaWYg
KGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3Rpb24pKQorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgRmx1c2hlZENlbGw6CiAgICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJn
dW1lbnQoaSkuc2V0VHlwZShTcGVjQ2VsbCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIEZsdXNoZWRKU1ZhbHVlOgogICAgICAgICAgICAgcm9vdC0+dmFs
dWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VIZWFwVG9wKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBub2RlLCAi
QmFkIGZsdXNoIGZvcm1hdCBmb3IgYXJndW1lbnQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CiAgICAgfQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRI
ZWFkLm51bWJlck9mTG9jYWxzKCk7ICsraSkgewogICAgICAgICBOb2RlKiBub2RlID0gcm9vdC0+
dmFyaWFibGVzQXRIZWFkLmxvY2FsKGkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuY3BwCShyZXZpc2lvbiAxODAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw3ICs3NCw2IEBAIGJvb2wgTm9kZTo6
aGFzVmFyaWFibGVBY2Nlc3NEYXRhKEdyYXBoJiAKICAgICBjYXNlIFBoaToKICAgICAgICAgcmV0
dXJuIGdyYXBoLm1fZm9ybSAhPSBTU0E7CiAgICAgY2FzZSBHZXRMb2NhbDoKLSAgICBjYXNlIEdl
dEFyZ3VtZW50OgogICAgIGNhc2UgU2V0TG9jYWw6CiAgICAgY2FzZSBTZXRBcmd1bWVudDoKICAg
ICBjYXNlIEZsdXNoOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUu
aAkocmV2aXNpb24gMTgwMTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw2IEBAIG5hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhLaWxsTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhNb3ZIaW50LCAwKSBcCiAgICAgbWFjcm8oWm9tYmllSGludCwgMCkgXAotICAg
IG1hY3JvKEdldEFyZ3VtZW50LCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAg
ICAgbWFjcm8oUGhhbnRvbSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEhhcmRQaGFu
dG9tLCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBMaWtlIFBoYW50b20sIGJ1dCB3ZSBuZXZlciByZW1v
dmUgYW55IG9mIGl0cyBjaGlsZHJlbi4gKi8gXAogICAgIG1hY3JvKENoZWNrLCBOb2RlTXVzdEdl
bmVyYXRlKSAvKiBVc2VkIGlmIHdlIHdhbnQganVzdCBhIHR5cGUgY2hlY2sgYnV0IG5vdCBsaXZl
bmVzcy4gTm9uLWNoZWNraW5nIHVzZXMgd2lsbCBiZSByZW1vdmVkLiAqL1wKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxp
dHlBbmFseXNpc1BoYXNlLmNwcAkocmV2aXNpb24gMTgwMTI3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTgsMTAgKzU4LDEzIEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBtX2dyYXBoLmJsb2NrKDApOwogICAgICAgICByb290LT5zc2EtPmF2YWls
YWJpbGl0eUF0SGVhZC5tX2xvY2Fscy5maWxsKEF2YWlsYWJpbGl0eTo6dW5hdmFpbGFibGUoKSk7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSByb290LT5zc2EtPmF2YWlsYWJpbGl0
eUF0SGVhZC5tX2xvY2Fscy5udW1iZXJPZkFyZ3VtZW50cygpOyBhcmd1bWVudC0tOykgewotICAg
ICAgICAgICAgcm9vdC0+c3NhLT5hdmFpbGFiaWxpdHlBdEhlYWQubV9sb2NhbHMuYXJndW1lbnQo
YXJndW1lbnQpID0KLSAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHk6OnVuYXZhaWxhYmxlKCku
d2l0aEZsdXNoKAotICAgICAgICAgICAgICAgICAgICBGbHVzaGVkQXQoRmx1c2hlZEpTVmFsdWUs
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkpOworICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZ3VtZW50ID0gbV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCk7IGFyZ3VtZW50LS07
KSB7CisgICAgICAgICAgICBGbHVzaGVkQXQgZmx1c2hlZEF0OworICAgICAgICAgICAgaWYgKE5v
ZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2FyZ3VtZW50XSkKKyAgICAgICAgICAgICAg
ICBmbHVzaGVkQXQgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+Zmx1c2hlZEF0KCk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZmx1c2hlZEF0ID0gRmx1c2hlZEF0KEZs
dXNoZWRKU1ZhbHVlLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpOworICAg
ICAgICAgICAgcm9vdC0+c3NhLT5hdmFpbGFiaWxpdHlBdEhlYWQubV9sb2NhbHMuYXJndW1lbnQo
YXJndW1lbnQpID0gQXZhaWxhYmlsaXR5KGZsdXNoZWRBdCk7CiAgICAgICAgIH0KIAogICAgICAg
ICAvLyBUaGlzIGNvdWxkIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQgYnkgcHJvY2Vzc2luZyBibG9j
a3MgaW4gcmV2ZXJzZSBwb3N0b3JkZXIuCkBAIC0xMzgsNyArMTQxLDcgQEAgdm9pZCBMb2NhbE9T
UkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6OmV4ZQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAg
ICBjYXNlIEdldEFyZ3VtZW50OiB7CisgICAgY2FzZSBHZXRMb2NhbDogewogICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CiAg
ICAgICAgIG1fYXZhaWxhYmlsaXR5Lm1fbG9jYWxzLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkp
ID0KICAgICAgICAgICAgIEF2YWlsYWJpbGl0eShub2RlLCB2YXJpYWJsZS0+Zmx1c2hlZEF0KCkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRp
b25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQ
cmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4MDEyNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NTIsNyArNTUyLDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgCiAgICAgICAgIGNhc2UgVXBzaWxvbjoKLSAgICAgICAgY2FzZSBH
ZXRBcmd1bWVudDoKICAgICAgICAgICAgIC8vIFRoZXNlIGRvbid0IGdldCBpbnNlcnRlZCB1bnRp
bCB3ZSBnbyBpbnRvIFNTQS4KICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHV0TG9jYWxTaW5raW5nUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHV0TG9jYWxTaW5raW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxODAxMjcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1B1dExvY2FsU2lua2luZ1BoYXNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcxLDcgKzM3MSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgc3NhQ2FsY3VsYXRvci5uZXdEZWYoCiAgICAgICAgICAgICAgICAgICAgICAgICBv
cGVyYW5kVG9WYXJpYWJsZS5vcGVyYW5kKG5vZGUtPmxvY2FsKCkpLCBibG9jaywgbm9kZS0+Y2hp
bGQxKCkubm9kZSgpKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
ICAgY2FzZSBHZXRBcmd1bWVudDoKKyAgICAgICAgICAgICAgICBjYXNlIEdldExvY2FsOgogICAg
ICAgICAgICAgICAgICAgICBzc2FDYWxjdWxhdG9yLm5ld0RlZigKICAgICAgICAgICAgICAgICAg
ICAgICAgIG9wZXJhbmRUb1ZhcmlhYmxlLm9wZXJhbmQobm9kZS0+bG9jYWwoKSksIGJsb2NrLCBu
b2RlKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00NTAsMTMgKzQ1MCw2IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBjYXNlIEdldEFyZ3VtZW50OiB7Ci0g
ICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52
YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVy
IG9wZXJhbmQgPSB2YXJpYWJsZS0+bG9jYWwoKTsKLSAgICAgICAgICAgICAgICAgICAgbWFwcGlu
Zy5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBj
YXNlIEtpbGxMb2NhbDogewogICAgICAgICAgICAgICAgICAgICBkZWZlcnJlZC5vcGVyYW5kKG5v
ZGUtPnVubGlua2VkTG9jYWwoKSkgPSBWYXJpYWJsZURlZmVycmFsKCk7CiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtNDg5LDYgKzQ4MiwxNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAg
ICAgICAgIHByZWNpc2VMb2NhbENsb2JiZXJpemUoCiAgICAgICAgICAgICAgICAgICAgICAgICBt
X2dyYXBoLCBub2RlLCBlc2NhcGVIYW5kbGVyLCBlc2NhcGVIYW5kbGVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgWyZdIChWaXJ0dWFsUmVnaXN0ZXIsIE5vZGUqKSB7IH0pOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgYSBHZXRMb2NhbCwg
dGhlbiB3ZSBhbHNvIGNyZWF0ZSBhIG1hcHBpbmcuCisgICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBqdXN0IGVsaW1pbmF0ZSBzdWNoIEdldExvY2Fscywg
d2hlbiB3ZSBrbm93CisgICAgICAgICAgICAgICAgICAgIC8vIHdoYXQgdGhlaXIgaW5jb21pbmcg
dmFsdWUgd2lsbCBiZS4KKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTYyNAorICAgICAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+b3AoKSA9PSBHZXRMb2NhbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOworICAgICAg
ICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQgPSB2YXJpYWJsZS0+bG9j
YWwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKSA9
IG5vZGU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfSB9CiAgICAgICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTU0FDb252ZXJzaW9uUGhhc2UuY3BwCShyZXZpc2lv
biAxODAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NTQUNvbnZlcnNpb25Q
aGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHVibGljOgogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICAvLyBGaW5kIGFsbCBTZXRMb2NhbHMgYW5kIGNyZWF0ZSBE
ZWZzIGZvciB0aGVtLiBXZSBoYW5kbGUgU2V0QXJndW1lbnQgYnkgY3JlYXRpbmcgYQotICAgICAg
ICAvLyBHZXRBcmd1bWVudC4KKyAgICAgICAgLy8gR2V0TG9jYWwuCiAgICAgICAgIGZvciAoQmxv
Y2tJbmRleCBibG9ja0luZGV4ID0gbV9ncmFwaC5udW1CbG9ja3MoKTsgYmxvY2tJbmRleC0tOykg
ewogICAgICAgICAgICAgQmFzaWNCbG9jayogYmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5k
ZXgpOwogICAgICAgICAgICAgaWYgKCFibG9jaykKQEAgLTk3LDcgKzk3LDkgQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+b3AoKSA9PSBTZXRBcmd1bWVudCk7CiAg
ICAgICAgICAgICAgICAgICAgIGNoaWxkTm9kZSA9IG1faW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUo
CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlSW5kZXgsIG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpLT5wcmVkaWN0aW9uKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBHZXRBcmd1bWVu
dCwgbm9kZS0+b3JpZ2luLCBPcEluZm8obm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEdldExvY2FsLCBub2RlLT5vcmlnaW4sIE9wSW5mbyhub2Rl
LT52YXJpYWJsZUFjY2Vzc0RhdGEoKSkpOworICAgICAgICAgICAgICAgICAgICBtX2FyZ3VtZW50
R2V0dGVycy5hZGQoY2hpbGROb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hcmd1bWVudE1h
cHBpbmcuYWRkKG5vZGUsIGNoaWxkTm9kZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIG1fY2FsY3VsYXRvci5uZXdEZWYoCkBAIC0xOTgsMTQg
KzIwMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIC8vICAgLSBQaGFudG9tTG9jYWwgYmVjb21lcyBQ
aGFudG9tLCBhbmQgaXRzIGNoaWxkIGlzIHdoYXRldmVyIGlzIHNwZWNpZmllZCBieQogICAgICAg
ICAvLyAgICAgdmFsdWVGb3JPcGVyYW5kLgogICAgICAgICAvLwotICAgICAgICAvLyAgIC0gU2V0
QXJndW1lbnQgaXMgcmVtb3ZlZC4gTm90ZSB0aGF0IEdldEFyZ3VtZW50IG5vZGVzIGhhdmUgYWxy
ZWFkeSBiZWVuIGluc2VydGVkLgorICAgICAgICAvLyAgIC0gU2V0QXJndW1lbnQgaXMgcmVtb3Zl
ZC4gTm90ZSB0aGF0IEdldExvY2FsIG5vZGVzIGhhdmUgYWxyZWFkeSBiZWVuIGluc2VydGVkLgog
ICAgICAgICBPcGVyYW5kczxOb2RlKj4gdmFsdWVGb3JPcGVyYW5kKE9wZXJhbmRzTGlrZSwgbV9n
cmFwaC5ibG9jaygwKS0+dmFyaWFibGVzQXRIZWFkKTsKICAgICAgICAgZm9yIChCYXNpY0Jsb2Nr
KiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5QcmVPcmRlcigpKSB7CiAgICAgICAgICAgICB2YWx1
ZUZvck9wZXJhbmQuY2xlYXIoKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgLy8gQ1BTIHdp
bGwgY2xhaW0gdGhhdCB0aGUgcm9vdCBibG9jayBoYXMgYWxsIGFyZ3VtZW50cyBsaXZlLiBCdXQg
d2UgaGF2ZSBhbHJlYWR5IGRvbmUKICAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBzdGVwIG9mIFNT
QSBjb252ZXJzaW9uOiBhcmd1bWVudCBsb2NhbHMgYXJlIG5vIGxvbmdlciBsaXZlIGF0IGhlYWQ7
Ci0gICAgICAgICAgICAvLyBpbnN0ZWFkIHdlIGhhdmUgR2V0QXJndW1lbnQgbm9kZXMgZm9yIGV4
dHJhY3RpbmcgdGhlIHZhbHVlcyBvZiBhcmd1bWVudHMuIFNvLCB3ZQorICAgICAgICAgICAgLy8g
aW5zdGVhZCB3ZSBoYXZlIEdldExvY2FsIG5vZGVzIGZvciBleHRyYWN0aW5nIHRoZSB2YWx1ZXMg
b2YgYXJndW1lbnRzLiBTbywgd2UKICAgICAgICAgICAgIC8vIHNraXAgdGhlIGF0LWhlYWQgYXZh
aWxhYmxlIHZhbHVlIGNhbGN1bGF0aW9uIGZvciB0aGUgcm9vdCBibG9jay4KICAgICAgICAgICAg
IGlmIChibG9jayAhPSBtX2dyYXBoLmJsb2NrKDApKSB7CiAgICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IHZhbHVlRm9yT3BlcmFuZC5zaXplKCk7IGktLTspIHsKQEAgLTI5Myw5ICsyOTUs
MTUgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgY2FzZSBHZXRMb2NhbDogeworICAgICAgICAgICAgICAgICAgICBWYXJp
YWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChtX2FyZ3VtZW50R2V0dGVycy5jb250YWlucyhub2RlKSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YUxvZygiTWFwcGluZzogIiwgdmFyaWFibGUtPmxvY2FsKCksICIgLT4g
Iiwgbm9kZSwgIlxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZUZvck9wZXJhbmQu
b3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPSBub2RlOworICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbm9k
ZS0+Y2hpbGRyZW4ucmVzZXQoKTsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vz
c0RhdGEoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlLT5pc0NhcHR1cmVkKCkp
CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgCkBA
IC0zMzcsMTUgKzM0NSw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBj
YXNlIEdldEFyZ3VtZW50OiB7Ci0gICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0
YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKCF2YXJpYWJsZS0+aXNDYXB0dXJlZCgpKTsKLSAgICAgICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2UpCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJNYXBwaW5n
OiAiLCB2YXJpYWJsZS0+bG9jYWwoKSwgIiAtPiAiLCBub2RlLCAiXG4iKTsKLSAgICAgICAgICAg
ICAgICAgICAgdmFsdWVGb3JPcGVyYW5kLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpID0gbm9k
ZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAg
ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CkBAIC0zOTIsNyArMzkxLDEyIEBAIHB1Ymxp
YzoKICAgICAgICAgICAgIGJsb2NrLT5zc2EgPSBzdGQ6Om1ha2VfdW5pcXVlPEJhc2ljQmxvY2s6
OlNTQURhdGE+KGJsb2NrKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAgbV9ncmFwaC5t
X2FyZ3VtZW50cy5jbGVhcigpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1f
YXJndW1lbnRzLnNpemUoKTsgaS0tOykgeworICAgICAgICAgICAgLy8gbV9hcmd1bWVudE1hcHBp
bmcuZ2V0IGNvdWxkIHJldHVybiBudWxsIGZvciBhIGNhcHR1cmVkIGxvY2FsLiBUaGF0J3MgZmlu
ZS4gV2Ugb25seQorICAgICAgICAgICAgLy8gdHJhY2sgdGhlIGFyZ3VtZW50IGxvYWRzIG9mIHRo
b3NlIGFyZ3VtZW50cyBmb3Igd2hpY2ggd2Ugc3BlY3VsYXRlIHR5cGUuIFdlIGRvbid0CisgICAg
ICAgICAgICAvLyBzcGVjdWxhdGUgdHlwZSBmb3IgY2FwdHVyZWQgYXJndW1lbnRzLgorICAgICAg
ICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG1fYXJndW1lbnRNYXBwaW5nLmdldChtX2dy
YXBoLm1fYXJndW1lbnRzW2ldKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgbV9ncmFw
aC5tX2Zvcm0gPSBTU0E7CiAKQEAgLTQwOCw2ICs0MTIsOCBAQCBwcml2YXRlOgogICAgIFNTQUNh
bGN1bGF0b3IgbV9jYWxjdWxhdG9yOwogICAgIEluc2VydGlvblNldCBtX2luc2VydGlvblNldDsK
ICAgICBIYXNoTWFwPFZhcmlhYmxlQWNjZXNzRGF0YSosIFNTQUNhbGN1bGF0b3I6OlZhcmlhYmxl
Kj4gbV9zc2FWYXJpYWJsZUZvclZhcmlhYmxlOworICAgIEhhc2hNYXA8Tm9kZSosIE5vZGUqPiBt
X2FyZ3VtZW50TWFwcGluZzsKKyAgICBIYXNoU2V0PE5vZGUqPiBtX2FyZ3VtZW50R2V0dGVyczsK
ICAgICBWZWN0b3I8VmFyaWFibGVBY2Nlc3NEYXRhKj4gbV92YXJpYWJsZUZvclNTQUluZGV4Owog
fTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRl
LmgJKHJldmlzaW9uIDE4MDEyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIyLDYgQEAgYm9vbCBzYWZl
VG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdAogICAgIGNhc2UgS2lsbExvY2FsOgogICAg
IGNhc2UgTW92SGludDoKICAgICBjYXNlIFpvbWJpZUhpbnQ6Ci0gICAgY2FzZSBHZXRBcmd1bWVu
dDoKICAgICBjYXNlIFBoYW50b206CiAgICAgY2FzZSBIYXJkUGhhbnRvbToKICAgICBjYXNlIFVw
c2lsb246CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
MzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE4MDEyNykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4OTgsNyArNDg5OCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2ls
b246Ci0gICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2Fs
OgogICAgIGNhc2UgQ2hlY2tUaWVyVXBJbkxvb3A6CiAgICAgY2FzZSBDaGVja1RpZXJVcEF0UmV0
dXJuOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxODAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTkzLDcgKzQ5
OTMsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgY2Fz
ZSBMYXN0Tm9kZVR5cGU6CiAgICAgY2FzZSBQaGk6CiAgICAgY2FzZSBVcHNpbG9uOgotICAgIGNh
c2UgR2V0QXJndW1lbnQ6CiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlMb2NhbDoKICAgICBjYXNl
IENoZWNrSW5Cb3VuZHM6CiAgICAgY2FzZSBBcml0aElNdWw6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCShyZXZpc2lvbiAxODAxMjcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUxLDcgKzUxLDYgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxl
KE5vZGUqIAogICAgIGNhc2UgS2lsbExvY2FsOgogICAgIGNhc2UgTW92SGludDoKICAgICBjYXNl
IFpvbWJpZUhpbnQ6Ci0gICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICBjYXNlIFBoYW50b206CiAg
ICAgY2FzZSBIYXJkUGhhbnRvbToKICAgICBjYXNlIEZsdXNoOgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5jcHAJKHJldmlzaW9uIDE4MDEy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0xMVk0uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzUsNiArMTM1LDggQEAgcHVibGljOgogICAgICAgICBtX3Byb2xv
Z3VlID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJQcm9sb2d1ZSIpKTsKICAgICAgICAgTEJhc2lj
QmxvY2sgc3RhY2tPdmVyZmxvdyA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiU3RhY2sgb3ZlcmZs
b3ciKSk7CiAgICAgICAgIG1faGFuZGxlRXhjZXB0aW9ucyA9IEZUTF9ORVdfQkxPQ0sobV9vdXQs
ICgiSGFuZGxlIEV4Y2VwdGlvbnMiKSk7CisgICAgICAgIAorICAgICAgICBMQmFzaWNCbG9jayBj
aGVja0FyZ3VtZW50cyA9IEZUTF9ORVdfQkxPQ0sobV9vdXQsICgiQ2hlY2sgYXJndW1lbnRzIikp
OwogCiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8
IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkgewogICAgICAgICAgICAgbV9oaWdo
QmxvY2sgPSBtX2dyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwpAQCAtMTkzLDcgKzE5NSw3IEBAIHB1
YmxpYzoKICAgICAgICAgbV9vdXQuc3RvcmVQdHIobV9vdXQuY29uc3RJbnRQdHIoY29kZUJsb2Nr
KCkpLCBhZGRyZXNzRm9yKEpTU3RhY2s6OkNvZGVCbG9jaykpOwogICAgICAgICAKICAgICAgICAg
bV9vdXQuYnJhbmNoKAotICAgICAgICAgICAgZGlkT3ZlcmZsb3dTdGFjaygpLCByYXJlbHkoc3Rh
Y2tPdmVyZmxvdyksIHVzdWFsbHkobG93QmxvY2sobV9ncmFwaC5ibG9jaygwKSkpKTsKKyAgICAg
ICAgICAgIGRpZE92ZXJmbG93U3RhY2soKSwgcmFyZWx5KHN0YWNrT3ZlcmZsb3cpLCB1c3VhbGx5
KGNoZWNrQXJndW1lbnRzKSk7CiAgICAgICAgIAogICAgICAgICBtX291dC5hcHBlbmRUbyhzdGFj
a092ZXJmbG93LCBtX2hhbmRsZUV4Y2VwdGlvbnMpOwogICAgICAgICBtX291dC5jYWxsKG1fb3V0
Lm9wZXJhdGlvbihvcGVyYXRpb25UaHJvd1N0YWNrT3ZlcmZsb3dFcnJvciksIG1fY2FsbEZyYW1l
LCBtX291dC5jb25zdEludFB0cihjb2RlQmxvY2soKSkpOwpAQCAtMjAzLDEzICsyMDUsNTMgQEAg
cHVibGljOgogICAgICAgICAgICAgbV9vdXQuY29uc3RJbnQzMihNYWNyb0Fzc2VtYmxlcjo6bWF4
SnVtcFJlcGxhY2VtZW50U2l6ZSgpKSk7CiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7CiAg
ICAgICAgIAotICAgICAgICBtX291dC5hcHBlbmRUbyhtX2hhbmRsZUV4Y2VwdGlvbnMsIGxvd0Js
b2NrKG1fZ3JhcGguYmxvY2soMCkpKTsKKyAgICAgICAgbV9vdXQuYXBwZW5kVG8obV9oYW5kbGVF
eGNlcHRpb25zLCBjaGVja0FyZ3VtZW50cyk7CiAgICAgICAgIG1fZnRsU3RhdGUuaGFuZGxlRXhj
ZXB0aW9uU3RhY2ttYXBJRCA9IG1fc3RhY2ttYXBJRHMrKzsKICAgICAgICAgbV9vdXQuY2FsbCgK
ICAgICAgICAgICAgIG1fb3V0LnN0YWNrbWFwSW50cmluc2ljKCksIG1fb3V0LmNvbnN0SW50NjQo
bV9mdGxTdGF0ZS5oYW5kbGVFeGNlcHRpb25TdGFja21hcElEKSwKICAgICAgICAgICAgIG1fb3V0
LmNvbnN0SW50MzIoTWFjcm9Bc3NlbWJsZXI6Om1heEp1bXBSZXBsYWNlbWVudFNpemUoKSkpOwog
ICAgICAgICBtX291dC51bnJlYWNoYWJsZSgpOwotCisgICAgICAgIAorICAgICAgICBtX291dC5h
cHBlbmRUbyhjaGVja0FyZ3VtZW50cywgbG93QmxvY2sobV9ncmFwaC5ibG9jaygwKSkpOworICAg
ICAgICBhdmFpbGFiaWxpdHlNYXAoKS5jbGVhcigpOworICAgICAgICBhdmFpbGFiaWxpdHlNYXAo
KS5tX2xvY2FscyA9IE9wZXJhbmRzPEF2YWlsYWJpbGl0eT4oY29kZUJsb2NrKCktPm51bVBhcmFt
ZXRlcnMoKSwgMCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1Q
YXJhbWV0ZXJzKCk7IGktLTspIHsKKyAgICAgICAgICAgIGF2YWlsYWJpbGl0eU1hcCgpLm1fbG9j
YWxzLmFyZ3VtZW50KGkpID0KKyAgICAgICAgICAgICAgICBBdmFpbGFiaWxpdHkoRmx1c2hlZEF0
KEZsdXNoZWRKU1ZhbHVlLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChpKSkpOworICAgICAg
ICB9CisgICAgICAgIG1fY29kZU9yaWdpbkZvckV4aXRUYXJnZXQgPSBDb2RlT3JpZ2luKDApOwor
ICAgICAgICBtX2NvZGVPcmlnaW5Gb3JFeGl0UHJvZmlsZSA9IENvZGVPcmlnaW4oMCk7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IGNvZGVCbG9jaygpLT5udW1QYXJhbWV0ZXJzKCk7IGktLTsp
IHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dyYXBoLm1fYXJndW1lbnRzW2ldOworICAg
ICAgICAgICAgaWYgKCFub2RlKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgRENFJ2QgdGhlIGFy
Z3VtZW50LCBvciBpdCdzIGEgY2FwdHVyZWQgYXJndW1lbnQuIE5vdGhpbmcgdG8gZG8hCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAg
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZhcmlhYmxlLT5tYWNoaW5lTG9jYWwo
KTsKKyAgICAgICAgICAgIEFTU0VSVChvcGVyYW5kID09IHZpcnR1YWxSZWdpc3RlckZvckFyZ3Vt
ZW50KGkpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTFZhbHVlIGpzVmFsdWUgPSBtX291
dC5sb2FkNjQoYWRkcmVzc0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBtX2xvYWRlZEFyZ3Vt
ZW50VmFsdWVzLmFkZChub2RlLCBqc1ZhbHVlKTsKKyAgICAgICAgICAgIHN3aXRjaCAodmFyaWFi
bGUtPmZsdXNoRm9ybWF0KCkpIHsKKyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAg
ICAgICAgICAgICAgIHNwZWN1bGF0ZShCYWRUeXBlLCBqc1ZhbHVlVmFsdWUoanNWYWx1ZSksIG5v
ZGUsIGlzTm90SW50MzIoanNWYWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgY2FzZSBGbHVzaGVkQm9vbGVhbjoKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGUoQmFk
VHlwZSwganNWYWx1ZVZhbHVlKGpzVmFsdWUpLCBub2RlLCBpc05vdEJvb2xlYW4oanNWYWx1ZSkp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoK
KyAgICAgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwganNWYWx1ZVZhbHVlKGpzVmFsdWUp
LCBub2RlLCBpc05vdENlbGwoanNWYWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBGbHVzaGVkSlNWYWx1ZToKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5v
ZGUsICJCYWQgZmx1c2ggZm9ybWF0IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1fb3V0Lmp1bXAobG93Qmxv
Y2sobV9ncmFwaC5ibG9jaygwKSkpOworICAgICAgICAKICAgICAgICAgZm9yIChCYXNpY0Jsb2Nr
KiBibG9jayA6IHByZU9yZGVyKQogICAgICAgICAgICAgY29tcGlsZUJsb2NrKGJsb2NrKTsKICAg
ICAgICAgCkBAIC0zODEsOSArNDIzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb29sZWFu
VG9OdW1iZXI6CiAgICAgICAgICAgICBjb21waWxlQm9vbGVhblRvTnVtYmVyKCk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHZXRBcmd1bWVudDoKLSAgICAgICAgICAgIGNvbXBp
bGVHZXRBcmd1bWVudCgpOwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRXh0cmFj
dE9TUkVudHJ5TG9jYWw6CiAgICAgICAgICAgICBjb21waWxlRXh0cmFjdE9TUkVudHJ5TG9jYWwo
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtOTgxLDM2ICsxMDIwLDYgQEAgcHJpdmF0ZToKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUdldEFyZ3VtZW50KCkKLSAgICB7Ci0g
ICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBtX25vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpOwotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZhcmlhYmxlLT5t
YWNoaW5lTG9jYWwoKTsKLSAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG9wZXJh
bmQuaXNBcmd1bWVudCgpKTsKLQotICAgICAgICBMVmFsdWUganNWYWx1ZSA9IG1fb3V0LmxvYWQ2
NChhZGRyZXNzRm9yKG9wZXJhbmQpKTsKLQotICAgICAgICBzd2l0Y2ggKHVzZUtpbmRGb3IodmFy
aWFibGUtPmZsdXNoRm9ybWF0KCkpKSB7Ci0gICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAg
ICAgICBzcGVjdWxhdGUoQmFkVHlwZSwganNWYWx1ZVZhbHVlKGpzVmFsdWUpLCBtX25vZGUsIGlz
Tm90SW50MzIoanNWYWx1ZSkpOwotICAgICAgICAgICAgc2V0SW50MzIodW5ib3hJbnQzMihqc1Zh
bHVlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDZWxsVXNlOgotICAgICAg
ICAgICAgc3BlY3VsYXRlKEJhZFR5cGUsIGpzVmFsdWVWYWx1ZShqc1ZhbHVlKSwgbV9ub2RlLCBp
c05vdENlbGwoanNWYWx1ZSkpOwotICAgICAgICAgICAgc2V0SlNWYWx1ZShqc1ZhbHVlKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6Ci0gICAgICAgICAgICBz
cGVjdWxhdGUoQmFkVHlwZSwganNWYWx1ZVZhbHVlKGpzVmFsdWUpLCBtX25vZGUsIGlzTm90Qm9v
bGVhbihqc1ZhbHVlKSk7Ci0gICAgICAgICAgICBzZXRCb29sZWFuKHVuYm94Qm9vbGVhbihqc1Zh
bHVlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgotICAg
ICAgICAgICAgc2V0SlNWYWx1ZShqc1ZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1
c2Uga2luZCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCiAg
ICAgdm9pZCBjb21waWxlRXh0cmFjdE9TUkVudHJ5TG9jYWwoKQogICAgIHsKICAgICAgICAgRW5j
b2RlZEpTVmFsdWUqIGJ1ZmZlciA9IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oCkBAIC0x
MDIwLDEzICsxMDI5LDE2IEBAIHByaXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0TG9j
YWwoKQogICAgIHsKLSAgICAgICAgLy8gR2V0TG9jYWxzIGFyaXNlIG9ubHkgZm9yIGNhcHR1cmVk
IHZhcmlhYmxlcy4KKyAgICAgICAgLy8gR2V0TG9jYWxzIGFyaXNlIG9ubHkgZm9yIGNhcHR1cmVk
IHZhcmlhYmxlcyBhbmQgYXJndW1lbnRzLiBGb3IgYXJndW1lbnRzLCB3ZSBtaWdodCBoYXZlCisg
ICAgICAgIC8vIGFscmVhZHkgbG9hZGVkIGl0LgorICAgICAgICBpZiAoTFZhbHVlIHZhbHVlID0g
bV9sb2FkZWRBcmd1bWVudFZhbHVlcy5nZXQobV9ub2RlKSkgeworICAgICAgICAgICAgc2V0SlNW
YWx1ZSh2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBtX25vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpOwogICAgICAgICBBYnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUudmFyaWFi
bGVzKCkub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSk7CiAgICAgICAgIAotICAgICAgICBERkdf
QVNTRVJUKG1fZ3JhcGgsIG1fbm9kZSwgdmFyaWFibGUtPmlzQ2FwdHVyZWQoKSk7Ci0gICAgICAg
IAogICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkpCiAgICAgICAg
ICAgICBzZXRJbnQzMihtX291dC5sb2FkMzIocGF5bG9hZEZvcih2YXJpYWJsZS0+bWFjaGluZUxv
Y2FsKCkpKSk7CiAgICAgICAgIGVsc2UKQEAgLTcwMTQsNiArNzAyNiwxMSBAQCBwcml2YXRlOgog
ICAgIEhhc2hNYXA8Tm9kZSosIExvd2VyZWROb2RlVmFsdWU+IG1fc3RvcmFnZVZhbHVlczsKICAg
ICBIYXNoTWFwPE5vZGUqLCBMb3dlcmVkTm9kZVZhbHVlPiBtX2RvdWJsZVZhbHVlczsKICAgICAK
KyAgICAvLyBUaGlzIGlzIGEgYml0IG9mIGEgaGFjay4gSXQgcHJldmVudHMgTExWTSBmcm9tIGhh
dmluZyB0byBkbyBDU0Ugb24gbG9hZGluZyBvZiBhcmd1bWVudHMuCisgICAgLy8gSXQncyBuaWNl
IHRvIGhhdmUgdGhlc2Ugb3B0aW1pemF0aW9ucyBvbiBvdXIgZW5kIGJlY2F1c2Ugd2UgY2FuIGd1
YXJhbnRlZSB0aGVtIGEgYml0IGJldHRlci4KKyAgICAvLyBQcm9iYWJseSBhbHNvIHNhdmVzIExM
Vk0gY29tcGlsZSB0aW1lLgorICAgIEhhc2hNYXA8Tm9kZSosIExWYWx1ZT4gbV9sb2FkZWRBcmd1
bWVudFZhbHVlczsKKyAgICAKICAgICBIYXNoTWFwPE5vZGUqLCBMVmFsdWU+IG1fcGhpczsKICAg
ICAKICAgICBMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3IgbV9hdmFpbGFiaWxpdHlDYWxj
dWxhdG9yOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246627</attachid>
            <date>2015-02-15 17:40:17 -0800</date>
            <delta_ts>2015-02-16 08:38:55 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>35863</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgwMTI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDgwIEBA
CisyMDE1LTAyLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIFNTQSBzaG91bGQgdXNlIEdldExvY2FsIGZvciBhcmd1bWVudHMsIGFuZCB0aGUgR2V0QXJn
dW1lbnQgbm9kZSB0eXBlIHNob3VsZCBiZSByZW1vdmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIER1cmluZyBkZXZlbG9wbWVudCBvZiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMzMyLCBJIHJlYWxpemVk
IHRoYXQgSQorICAgICAgICBuZWVkZWQgdG8gdXNlIEdldEFyZ3VtZW50IGZvciBsb2FkaW5nIHNv
bWV0aGluZyB0aGF0IGhhcyBtYWdpY2FsbHkgYWxyZWFkeSBhcHBlYXJlZCBvbiB0aGUKKyAgICAg
ICAgc3RhY2ssIHNvIGN1cnJlbnRseSB0cnVuayBzb3J0IG9mIGFsbG93cyB0aGlzLiBCdXQgdGhl
biBJIHJlYWxpemVkIHRocmVlIHRoaW5nczoKKyAgICAgICAgCisgICAgICAgIC0gQSBHZXRBcmd1
bWVudCB3aXRoIGEgbm9uLUpTVmFsdWUgZmx1c2ggZm9ybWF0IG1lYW5zIHNwZWN1bGF0aW5nIHRo
YXQgdGhlIHZhbHVlIG9uIHRoZQorICAgICAgICAgIHN0YWNrIG9iZXlzIHRoYXQgZm9ybWF0LCBy
YXRoZXIgdGhhbiBqdXN0IGFzc3VtaW5nIHRoYXQgdGhhdCBpdCBhbHJlYWR5IGhhcyB0aGF0IGZv
cm1hdC4KKyAgICAgICAgICBJbiBidWcgMTQxMzMyLCBJIHdhbnQgaXQgdG8gYXNzdW1lIHJhdGhl
ciB0aGFuIHNwZWN1bGF0ZS4gVGhhdCBhbHNvIGhhcHBlbnMgdG8gYmUgbW9yZQorICAgICAgICAg
IGludHVpdGl2ZTsgSSBkb24ndCB0aGluayBJIHdhcyB3cm9uZyB0byBleHBlY3QgdGhhdC4KKyAg
ICAgICAgCisgICAgICAgIC0gVGhlIG5vZGUgSSByZWFsbHkgd2FudCBpcyBHZXRMb2NhbC4gSSdt
IGp1c3QgZ2V0dGluZyB0aGUgdmFsdWUgb2YgdGhlIGxvY2FsIGFuZCBJIGRvbid0CisgICAgICAg
ICAgd2FudCB0byBkbyBhbnl0aGluZyBlbHNlLgorICAgICAgICAKKyAgICAgICAgLSBNYXliZSBp
dCB3b3VsZCBiZSBlYXNpZXIgaWYgd2UganVzdCB1c2VkIEdldExvY2FsIGZvciBhbGwgb2YgdGhl
IGNhc2VzIHdoZXJlIHdlIGN1cnJlbnRseQorICAgICAgICAgIHVzZSBHZXRBcmd1bWVudC4KKyAg
ICAgICAgCisgICAgICAgIFRoaXMgY2hhbmdlcyB0aGUgRlRMIHRvIGRvIGFyZ3VtZW50IHNwZWN1
bGF0aW9ucyBpbiB0aGUgcHJvbG9ndWUganVzdCBsaWtlIHRoZSBERkcgZG9lcy4KKyAgICAgICAg
VGhpcyBicmluZ3Mgc29tZSBjb25zaXN0ZW5jeSB0byBvdXIgc3lzdGVtLCBhbmQgYWxsb3dzIHVz
IHRvIGdldCByaWQgb2YgdGhlIEdldEFyZ3VtZW50CisgICAgICAgIG5vZGUuIFRoZSBzcGVjdWxh
dGlvbnMgdGhhdCB0aGUgRlRMIG11c3QgZG8gYXJlIG5vdyBtYWRlIGV4cGxpY2l0IGluIHRoZSBt
X2FyZ3VtZW50Rm9ybWF0cworICAgICAgICB2ZWN0b3IgaW4gREZHOjpHcmFwaC4gVGhpcyBoYXMg
bmF0dXJhbCBEQ0UgYmVoYXZpb3I6IGV2ZW4gaWYgYWxsIHVzZXMgb2YgdGhlIGFyZ3VtZW50IGFy
ZQorICAgICAgICBkZWFkIHdlIHdpbGwgc3RpbGwgc3BlY3VsYXRlLiBXZSBhbHJlYWR5IGhhdmUg
c2FmZWd1YXJkcyB0byBlbnN1cmUgd2Ugb25seSBzcGVjdWxhdGUgaWYKKyAgICAgICAgdGhlcmUg
YXJlIHVzZXMgdGhhdCBiZW5lZml0IGZyb20gc3BlY3VsYXRpb24gKHdoaWNoIGlzIGEgbXVjaCBt
b3JlIGNvbnNlcnZhdGl2ZSBjcml0ZXJpb24KKyAgICAgICAgdGhhbiBEQ0UpLgorICAgICAgICAK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0RDRVBoYXNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpEQ0VQaGFzZTo6cnVuKToKKyAgICAgICAgKiBkZmcvREZHRG9lc0dDLmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpkb2VzR0MpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAg
ICAgICAqIGRmZy9ERkdGbHVzaEZvcm1hdC5oOgorICAgICAgICAoSlNDOjpERkc6OnR5cGVGaWx0
ZXJGb3IpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5oOgorICAgICAgICAoSlNDOjpE
Rkc6OkdyYXBoOjp2YWx1ZVByb2ZpbGVGb3IpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjpt
ZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlRm9yKToKKyAgICAgICAgKiBkZmcvREZHSW5QbGFj
ZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VBYnN0cmFjdFN0
YXRlOjppbml0aWFsaXplKToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5jcHA6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6aGFzVmFyaWFibGVBY2Nlc3NEYXRhKToKKyAgICAgICAgKiBkZmcvREZH
Tm9kZVR5cGUuaDoKKyAgICAgICAgKiBkZmcvREZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFz
ZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6T1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZTo6
cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpMb2NhbE9TUkF2YWlsYWJpbGl0eUNhbGN1bGF0b3I6
OmV4ZWN1dGVOb2RlKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpw
cm9wYWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdQdXRMb2NhbFNpbmtpbmdQaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6U1NBQ29udmVyc2lvblBoYXNlOjpydW4pOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVj
dXRlLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZn
L0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OmNhbkNvbXBpbGUp
OgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvTExWTS5jcHA6CisgICAgICAgIChKU0M6OkZU
TDo6TG93ZXJERkdUb0xMVk06Omxvd2VyKToKKyAgICAgICAgKEpTQzo6RlRMOjpMb3dlckRGR1Rv
TExWTTo6Y29tcGlsZU5vZGUpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpj
b21waWxlR2V0TG9jYWwpOgorICAgICAgICAoSlNDOjpGVEw6Okxvd2VyREZHVG9MTFZNOjpjb21w
aWxlR2V0QXJndW1lbnQpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9kZWFkLXNw
ZWN1bGF0aW5nLWFyZ3VtZW50LXVzZS5qczogQWRkZWQuCisgICAgICAgIChmb28pOgorICAgICAg
ICAoby52YWx1ZU9mKToKKwogMjAxNS0wMi0wOSAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2Fz
aGluZ3Rvbi5lZHU+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogcmVtb3ZlIHNvbWUgdW5uZWNl
c3NhcnkgSW5zcGVjdG9yIHByZWZpeGVzIGZyb20gY2xhc3MgbmFtZXMgaW4gSW5zcGVjdG9yIG5h
bWVzcGFjZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVy
cHJldGVySW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAkocmV2aXNpb24gMTgwMTI3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDEsMTggKzE0MSw2IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgICAgICAKLSAgICBj
YXNlIEdldEFyZ3VtZW50OiB7Ci0gICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBTU0Ep
OwotICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCk7Ci0gICAgICAgIEFic3RyYWN0VmFsdWUmIHZhbHVlID0gbV9zdGF0ZS52YXJp
YWJsZXMoKS5vcGVyYW5kKHZhcmlhYmxlLT5sb2NhbCgpLm9mZnNldCgpKTsKLSAgICAgICAgQVNT
RVJUKHZhbHVlLmlzSGVhcFRvcCgpKTsKLSAgICAgICAgRmlsdHJhdGlvblJlc3VsdCByZXN1bHQg
PQotICAgICAgICAgICAgdmFsdWUuZmlsdGVyKHR5cGVGaWx0ZXJGb3IodXNlS2luZEZvcih2YXJp
YWJsZS0+Zmx1c2hGb3JtYXQoKSkpKTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCA9PSBGaWx0cmF0aW9uT0spOwotICAgICAgICBmb3JOb2RlKG5vZGUpID0gdmFsdWU7Ci0g
ICAgICAgIGJyZWFrOwotICAgIH0KLSAgICAgICAgCiAgICAgY2FzZSBFeHRyYWN0T1NSRW50cnlM
b2NhbDogewogICAgICAgICBpZiAoIShub2RlLT51bmxpbmtlZExvY2FsKCkuaXNBcmd1bWVudCgp
KQogICAgICAgICAgICAgJiYgbV9ncmFwaC5tX2xhenlWYXJzLmdldChub2RlLT51bmxpbmtlZExv
Y2FsKCkudG9Mb2NhbCgpKSkgewpAQCAtMTcwLDYgKzE1OCw4IEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHkKICAgICBjYXNlIEdldExvY2FsOiB7CiAgICAgICAgIFZh
cmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCk7CiAgICAgICAgIEFic3RyYWN0VmFsdWUgdmFsdWUgPSBtX3N0YXRlLnZhcmlhYmxl
cygpLm9wZXJhbmQodmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpLm9mZnNldCgpKTsKKyAgICAg
ICAgLy8gVGhlIHZhbHVlIGluIHRoZSBsb2NhbCBzaG91bGQgYWxyZWFkeSBiZSBjaGVja2VkLgor
ICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIHZhbHVlLmlzVHlwZSh0eXBlRmlsdGVy
Rm9yKHZhcmlhYmxlQWNjZXNzRGF0YS0+Zmx1c2hGb3JtYXQoKSkpKTsKICAgICAgICAgaWYgKHZh
bHVlLnZhbHVlKCkpCiAgICAgICAgICAgICBtX3N0YXRlLnNldEZvdW5kQ29uc3RhbnRzKHRydWUp
OwogICAgICAgICBmb3JOb2RlKG5vZGUpID0gdmFsdWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAkocmV2aXNpb24gMTgwMTI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5MSw3
ICszOTEsNiBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlCiAgICAg
ICAgIHJldHVybjsKICAgICAgICAgCiAgICAgY2FzZSBHZXRMb2NhbDoKLSAgICBjYXNlIEdldEFy
Z3VtZW50OgogICAgICAgICByZWFkKEFic3RyYWN0SGVhcChWYXJpYWJsZXMsIG5vZGUtPmxvY2Fs
KCkpKTsKICAgICAgICAgZGVmKEhlYXBMb2NhdGlvbihWYXJpYWJsZUxvYywgQWJzdHJhY3RIZWFw
KFZhcmlhYmxlcywgbm9kZS0+bG9jYWwoKSkpLCBub2RlKTsKICAgICAgICAgcmV0dXJuOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEQ0VQaGFzZS5jcHAJKHJldmlzaW9uIDE4
MDEyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRENFUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MywxMiArNTMsMjEgQEAgcHVibGljOgogICAgICAgICBpZiAobV9ncmFw
aC5tX2Zvcm0gPT0gU1NBKSB7CiAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDog
bV9ncmFwaC5ibG9ja3NJblByZU9yZGVyKCkpCiAgICAgICAgICAgICAgICAgZml4dXBCbG9jayhi
bG9jayk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgbGlrZSBjbGVhblZh
cmlhYmxlcywgYnV0IGhhcyBhIG11Y2ggc2ltcGxlciBhcHByb2FjaCB0byBHZXRMb2NhbC4KKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG1fZ3JhcGgubV9hcmd1bWVudHMuc2l6ZSgpOyBp
LS07KSB7CisgICAgICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNb
aV07CisgICAgICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBQaGFudG9tICYmIG5vZGUt
Pm9wKCkgIT0gQ2hlY2sgJiYgbm9kZS0+c2hvdWxkR2VuZXJhdGUoKSkKKyAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9
IG51bGxwdHI7CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBS
RUxFQVNFX0FTU0VSVChtX2dyYXBoLm1fZm9ybSA9PSBUaHJlYWRlZENQUyk7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRl
eCA8IG1fZ3JhcGgubnVtQmxvY2tzKCk7ICsrYmxvY2tJbmRleCkKICAgICAgICAgICAgICAgICBm
aXh1cEJsb2NrKG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCkpOwotICAgICAgICAgICAgCiAgICAg
ICAgICAgICBjbGVhblZhcmlhYmxlcyhtX2dyYXBoLm1fYXJndW1lbnRzKTsKICAgICAgICAgfQog
ICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAJKHJl
dmlzaW9uIDE4MDEyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNiBAQCBib29sIGRvZXNHQyhHcmFwaCYgZ3Jh
cGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBTZXRMb2NhbDoKICAgICBjYXNlIE1vdkhpbnQ6CiAg
ICAgY2FzZSBab21iaWVIaW50OgotICAgIGNhc2UgR2V0QXJndW1lbnQ6CiAgICAgY2FzZSBQaGFu
dG9tOgogICAgIGNhc2UgSGFyZFBoYW50b206CiAgICAgY2FzZSBVcHNpbG9uOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZpc2lvbiAxODAx
MjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDMzLDcgKzEwMzMsNiBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdl
dEFycmF5TGVuZ3RoOgogICAgICAgICBjYXNlIFBoaToKICAgICAgICAgY2FzZSBVcHNpbG9uOgot
ICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgICAgICBjYXNlIEdldEluZGV4ZWRQcm9wZXJ0
eVN0b3JhZ2U6CiAgICAgICAgIGNhc2UgR2V0VHlwZWRBcnJheUJ5dGVPZmZzZXQ6CiAgICAgICAg
IGNhc2UgTGFzdE5vZGVUeXBlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
bHVzaEZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rmx1c2hGb3JtYXQuaAkocmV2aXNpb24gMTgwMTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGbHVzaEZvcm1hdC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5MywxMSBAQCBp
bmxpbmUgVXNlS2luZCB1c2VLaW5kRm9yKEZsdXNoRm9ybWF0IGZvCiAgICAgcmV0dXJuIFVudHlw
ZWRVc2U7CiB9CiAKK2lubGluZSBTcGVjdWxhdGVkVHlwZSB0eXBlRmlsdGVyRm9yKEZsdXNoRm9y
bWF0IGZvcm1hdCkKK3sKKyAgICByZXR1cm4gdHlwZUZpbHRlckZvcih1c2VLaW5kRm9yKGZvcm1h
dCkpOworfQorCiBpbmxpbmUgRGF0YUZvcm1hdCBkYXRhRm9ybWF0Rm9yKEZsdXNoRm9ybWF0IGZv
cm1hdCkKIHsKICAgICBzd2l0Y2ggKGZvcm1hdCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdHcmFwaC5jcHAJKHJldmlzaW9uIDE4MDEyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjUsNiArNDI1LDEwIEBA
IHZvaWQgR3JhcGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCwgRHVtcEMKICAgICBvdXQucHJpbnQo
IlxuIik7CiAgICAgb3V0LnByaW50KCJERkcgZm9yICIsIENvZGVCbG9ja1dpdGhKSVRUeXBlKG1f
Y29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpLCAiOlxuIik7CiAgICAgb3V0LnByaW50KCIgIEZp
eHBvaW50IHN0YXRlOiAiLCBtX2ZpeHBvaW50U3RhdGUsICI7IEZvcm06ICIsIG1fZm9ybSwgIjsg
VW5pZmljYXRpb24gc3RhdGU6ICIsIG1fdW5pZmljYXRpb25TdGF0ZSwgIjsgUmVmIGNvdW50IHN0
YXRlOiAiLCBtX3JlZkNvdW50U3RhdGUsICJcbiIpOworICAgIGlmIChtX2Zvcm0gPT0gU1NBKQor
ICAgICAgICBvdXQucHJpbnQoIiAgQXJndW1lbnQgZm9ybWF0czogIiwgbGlzdER1bXAobV9hcmd1
bWVudEZvcm1hdHMpLCAiXG4iKTsKKyAgICBlbHNlCisgICAgICAgIG91dC5wcmludCgiICBBcmd1
bWVudHM6ICIsIGxpc3REdW1wKG1fYXJndW1lbnRzKSwgIlxuIik7CiAgICAgb3V0LnByaW50KCJc
biIpOwogICAgIAogICAgIE5vZGUqIGxhc3ROb2RlID0gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE4MDEyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtNDc1LDIxICs0NzUsMTkgQEAg
cHVibGljOgogICAgIFZhbHVlUHJvZmlsZSogdmFsdWVQcm9maWxlRm9yKE5vZGUqIG5vZGUpCiAg
ICAgewogICAgICAgICBpZiAoIW5vZGUpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAKICAgICAgICAgQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKICAg
ICAgICAgCi0gICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldEFyZ3VtZW50KQotICAgICAgICAg
ICAgcmV0dXJuIHByb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KG5vZGUtPmxv
Y2FsKCkudG9Bcmd1bWVudCgpKTsKLSAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5oYXNMb2Nh
bCgqdGhpcykpIHsKLSAgICAgICAgICAgIGlmIChtX2Zvcm0gPT0gU1NBKQotICAgICAgICAgICAg
ICAgIHJldHVybiAwOwogICAgICAgICAgICAgaWYgKCFub2RlLT5sb2NhbCgpLmlzQXJndW1lbnQo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIGludCBhcmd1bWVudCA9
IG5vZGUtPmxvY2FsKCkudG9Bcmd1bWVudCgpOwotICAgICAgICAgICAgaWYgKG5vZGUtPnZhcmlh
YmxlQWNjZXNzRGF0YSgpICE9IG1fYXJndW1lbnRzW2FyZ3VtZW50XS0+dmFyaWFibGVBY2Nlc3NE
YXRhKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBOb2RlKiBhcmd1
bWVudE5vZGUgPSBtX2FyZ3VtZW50c1thcmd1bWVudF07CisgICAgICAgICAgICBpZiAoIWFyZ3Vt
ZW50Tm9kZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgICAgIGlm
IChub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKSAhPSBhcmd1bWVudE5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAg
cmV0dXJuIHByb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckFyZ3VtZW50KGFyZ3VtZW50KTsK
ICAgICAgICAgfQogICAgICAgICAKQEAgLTUwNCwxNiArNTAyLDE5IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKCFub2RlKQogICAgICAgICAgICAgcmV0dXJuIE1ldGhvZE9mR2V0dGluZ0FWYWx1ZVBy
b2ZpbGUoKTsKICAgICAgICAgCi0gICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jayA9IGJh
c2VsaW5lQ29kZUJsb2NrRm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIGlmIChW
YWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmlsZSA9IHZhbHVlUHJvZmlsZUZvcihub2RlKSkKKyAgICAg
ICAgICAgIHJldHVybiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSk7
CiAgICAgICAgIAogICAgICAgICBpZiAobm9kZS0+b3AoKSA9PSBHZXRMb2NhbCkgeworICAgICAg
ICAgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Iobm9k
ZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gTWV0aG9k
T2ZHZXR0aW5nQVZhbHVlUHJvZmlsZTo6ZnJvbUxhenlPcGVyYW5kKAogICAgICAgICAgICAgICAg
IHByb2ZpbGVkQmxvY2ssCiAgICAgICAgICAgICAgICAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGVL
ZXkoCiAgICAgICAgICAgICAgICAgICAgIG5vZGUtPm9yaWdpbi5zZW1hbnRpYy5ieXRlY29kZUlu
ZGV4LCBub2RlLT5sb2NhbCgpKSk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHJldHVy
biBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZUZvcihub2RlKSk7Cisg
ICAgICAgIHJldHVybiBNZXRob2RPZkdldHRpbmdBVmFsdWVQcm9maWxlKCk7CiAgICAgfQogICAg
IAogICAgIGJvb2wgdXNlc0FyZ3VtZW50cygpIGNvbnN0CkBAIC04MTEsNyArODEyLDM3IEBAIHB1
YmxpYzoKICAgICBCYWc8RnJvemVuVmFsdWU+IG1fZnJvemVuVmFsdWVzOwogICAgIAogICAgIEJh
ZzxTdG9yYWdlQWNjZXNzRGF0YT4gbV9zdG9yYWdlQWNjZXNzRGF0YTsKKyAgICAKKyAgICAvLyBJ
biBDUFMsIHRoaXMgaXMgYWxsIG9mIHRoZSBTZXRBcmd1bWVudCBub2RlcyBmb3IgdGhlIGFyZ3Vt
ZW50cyBpbiB0aGUgbWFjaGluZSBjb2RlIGJsb2NrCisgICAgLy8gdGhhdCBzdXJ2aXZlZCBEQ0Uu
IEFsbCBvZiB0aGVtIGV4Y2VwdCBtYXliZSAidGhpcyIgd2lsbCBzdXJ2aXZlIERDRSwgYmVjYXVz
ZSBvZiB0aGUgRmx1c2gKKyAgICAvLyBub2Rlcy4KKyAgICAvLworICAgIC8vIEluIFNTQSwgdGhp
cyBpcyBhbGwgb2YgdGhlIEdldExvY2FsIG5vZGVzIGZvciB0aGUgYXJndW1lbnRzIGluIHRoZSBt
YWNoaW5lIGNvZGUgYmxvY2sgdGhhdAorICAgIC8vIG1heSBoYXZlIHNvbWUgc3BlY3VsYXRpb24g
aW4gdGhlIHByb2xvZ3VlIGFuZCBzdXJ2aXZlZCBEQ0UuIE5vdGUgdGhhdCB0byBnZXQgdGhlIHNw
ZWN1bGF0aW9uCisgICAgLy8gZm9yIGFuIGFyZ3VtZW50IGluIFNTQSwgeW91IG11c3QgdXNlIG1f
YXJndW1lbnRGb3JtYXRzLCBzaW5jZSB3ZSBzdGlsbCBoYXZlIHRvIHNwZWN1bGF0ZQorICAgIC8v
IGV2ZW4gaWYgdGhlIGFyZ3VtZW50IGdvdCBraWxsZWQuIEZvciBleGFtcGxlOgorICAgIC8vCisg
ICAgLy8gICAgIGZ1bmN0aW9uIGZvbyh4KSB7CisgICAgLy8gICAgICAgIHZhciB0bXAgPSB4ICsg
MTsKKyAgICAvLyAgICAgfQorICAgIC8vCisgICAgLy8gQXNzdW1lIHRoYXQgeCBpcyBhbHdheXMg
aW50IGR1cmluZyBwcm9maWxpbmcuIFRoZSBBcml0aEFkZCBmb3IgInggKyAxIiB3aWxsIGJlIGRl
YWQgYW5kIHdpbGwKKyAgICAvLyBoYXZlIGEgcHJvdmVuIGNoZWNrIGZvciB0aGUgZWRnZSB0byAi
eCIuIFNvLCB3ZSB3aWxsIG5vdCBpbnNlcnQgYSBDaGVjayBub2RlIGFuZCB3ZSB3aWxsCisgICAg
Ly8ga2lsbCB0aGUgR2V0TG9jYWwgZm9yICJ4Ii4gQnV0LCB3ZSBtdXN0IGRvIHRoZSBpbnQgY2hl
Y2sgaW4gdGhlIHByb2dvbHVlLCBiZWNhdXNlIHRoYXQncyB0aGUKKyAgICAvLyB0aGluZyB3ZSB1
c2VkIHRvIGFsbG93IERDRSBvZiBBcml0aEFkZC4gT3RoZXJ3aXNlIHRoZSBhZGQgY291bGQgYmUg
aW1wdXJlOgorICAgIC8vCisgICAgLy8gICAgIHZhciBvID0geworICAgIC8vICAgICAgICAgdmFs
dWVPZjogZnVuY3Rpb24oKSB7IGRvIHNpZGUgZWZmZWN0czsgfQorICAgIC8vICAgICB9OworICAg
IC8vICAgICBmb28obyk7CisgICAgLy8KKyAgICAvLyBJZiB3ZSBEQ0UgdGhlIEFyaXRoQWRkIGFu
ZCB3ZSByZW1vdmUgdGhlIGludCBjaGVjayBvbiB4LCB0aGVuIHRoaXMgd29uJ3QgZG8gdGhlIHNp
ZGUKKyAgICAvLyBlZmZlY3RzLgogICAgIFZlY3RvcjxOb2RlKiwgOD4gbV9hcmd1bWVudHM7Cisg
ICAgCisgICAgLy8gSW4gQ1BTLCB0aGlzIGlzIG1lYW5pbmdsZXNzLiBJbiBTU0EsIHRoaXMgaXMg
dGhlIGFyZ3VtZW50IHNwZWN1bGF0aW9uIHRoYXQgd2UndmUgbG9ja2VkIGluLgorICAgIFZlY3Rv
cjxGbHVzaEZvcm1hdD4gbV9hcmd1bWVudEZvcm1hdHM7CisgICAgCiAgICAgU2VnbWVudGVkVmVj
dG9yPFZhcmlhYmxlQWNjZXNzRGF0YSwgMTY+IG1fdmFyaWFibGVBY2Nlc3NEYXRhOwogICAgIFNl
Z21lbnRlZFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uLCA4PiBtX2FyZ3VtZW50UG9zaXRpb25zOwog
ICAgIFNlZ21lbnRlZFZlY3RvcjxTdHJ1Y3R1cmVTZXQsIDE2PiBtX3N0cnVjdHVyZVNldDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuY3BwCShyZXZpc2lvbiAxODAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0luUGxhY2VBYnN0cmFjdFN0YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTYsMjgg
Kzk2LDM3IEBAIHZvaWQgSW5QbGFjZUFic3RyYWN0U3RhdGU6OmluaXRpYWxpemUoKQogICAgIHJv
b3QtPmNmYVN0cnVjdHVyZUNsb2JiZXJTdGF0ZUF0VGFpbCA9IFN0cnVjdHVyZXNBcmVXYXRjaGVk
OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9m
QXJndW1lbnRzKCk7ICsraSkgewogICAgICAgICByb290LT52YWx1ZXNBdFRhaWwuYXJndW1lbnQo
aSkuY2xlYXIoKTsKLSAgICAgICAgaWYgKG1fZ3JhcGgubV9mb3JtID09IFNTQSkgewotICAgICAg
ICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VIZWFwVG9wKCk7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgTm9kZSogbm9k
ZSA9IHJvb3QtPnZhcmlhYmxlc0F0SGVhZC5hcmd1bWVudChpKTsKLSAgICAgICAgQVNTRVJUKG5v
ZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOwotICAgICAgICBpZiAoIW5vZGUtPnZhcmlhYmxlQWNj
ZXNzRGF0YSgpLT5zaG91bGRVbmJveElmUG9zc2libGUoKSkgewotICAgICAgICAgICAgcm9vdC0+
dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1ha2VIZWFwVG9wKCk7Ci0gICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBGbHVzaEZvcm1hdCBmb3JtYXQ7CisgICAgICAgIGlmIChtX2dyYXBo
Lm1fZm9ybSA9PSBTU0EpCisgICAgICAgICAgICBmb3JtYXQgPSBtX2dyYXBoLm1fYXJndW1lbnRG
b3JtYXRzW2ldOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIE5vZGUqIG5vZGUgPSBtX2dy
YXBoLm1fYXJndW1lbnRzW2ldOworICAgICAgICAgICAgaWYgKCFub2RlKQorICAgICAgICAgICAg
ICAgIGZvcm1hdCA9IEZsdXNoZWRKU1ZhbHVlOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJndW1lbnQpOworICAgICAgICAgICAg
ICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZvcm1hdCgpOwor
ICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBTcGVjdWxhdGVkVHlw
ZSBwcmVkaWN0aW9uID0KLSAgICAgICAgICAgIG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5h
cmd1bWVudEF3YXJlUHJlZGljdGlvbigpOwotICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pKQorICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICBjYXNlIEZs
dXNoZWRJbnQzMjoKICAgICAgICAgICAgIHJvb3QtPnZhbHVlc0F0SGVhZC5hcmd1bWVudChpKS5z
ZXRUeXBlKFNwZWNJbnQzMik7Ci0gICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9u
KHByZWRpY3Rpb24pKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmx1c2hlZEJv
b2xlYW46CiAgICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlw
ZShTcGVjQm9vbGVhbik7Ci0gICAgICAgIGVsc2UgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRp
Y3Rpb24pKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmx1c2hlZENlbGw6CiAg
ICAgICAgICAgICByb290LT52YWx1ZXNBdEhlYWQuYXJndW1lbnQoaSkuc2V0VHlwZShTcGVjQ2Vs
bCk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZsdXNo
ZWRKU1ZhbHVlOgogICAgICAgICAgICAgcm9vdC0+dmFsdWVzQXRIZWFkLmFyZ3VtZW50KGkpLm1h
a2VIZWFwVG9wKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBudWxscHRyLCAiQmFkIGZsdXNoIGZvcm1hdCBmb3Ig
YXJndW1lbnQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgcm9vdC0+dmFsdWVzQXRIZWFkLm51bWJlck9mTG9jYWxzKCk7
ICsraSkgewogICAgICAgICBOb2RlKiBub2RlID0gcm9vdC0+dmFyaWFibGVzQXRIZWFkLmxvY2Fs
KGkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCShyZXZpc2lvbiAx
ODAxMjcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03NCw3ICs3NCw2IEBAIGJvb2wgTm9kZTo6aGFzVmFyaWFibGVBY2Nlc3NEYXRh
KEdyYXBoJiAKICAgICBjYXNlIFBoaToKICAgICAgICAgcmV0dXJuIGdyYXBoLm1fZm9ybSAhPSBT
U0E7CiAgICAgY2FzZSBHZXRMb2NhbDoKLSAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgIGNhc2Ug
U2V0TG9jYWw6CiAgICAgY2FzZSBTZXRBcmd1bWVudDoKICAgICBjYXNlIEZsdXNoOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAkocmV2aXNpb24gMTgwMTI3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MSw3ICs2MSw2IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBt
YWNybyhLaWxsTG9jYWwsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhNb3ZIaW50LCAw
KSBcCiAgICAgbWFjcm8oWm9tYmllSGludCwgMCkgXAotICAgIG1hY3JvKEdldEFyZ3VtZW50LCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oUGhhbnRvbSwgTm9k
ZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEhhcmRQaGFudG9tLCBOb2RlTXVzdEdlbmVyYXRl
KSAvKiBMaWtlIFBoYW50b20sIGJ1dCB3ZSBuZXZlciByZW1vdmUgYW55IG9mIGl0cyBjaGlsZHJl
bi4gKi8gXAogICAgIG1hY3JvKENoZWNrLCBOb2RlTXVzdEdlbmVyYXRlKSAvKiBVc2VkIGlmIHdl
IHdhbnQganVzdCBhIHR5cGUgY2hlY2sgYnV0IG5vdCBsaXZlbmVzcy4gTm9uLWNoZWNraW5nIHVz
ZXMgd2lsbCBiZSByZW1vdmVkLiAqL1wKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSQXZhaWxhYmlsaXR5QW5hbHlzaXNQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFpbGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAko
cmV2aXNpb24gMTgwMTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JBdmFp
bGFiaWxpdHlBbmFseXNpc1BoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsMTAgKzU4LDEx
IEBAIHB1YmxpYzoKICAgICAgICAgCiAgICAgICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBtX2dyYXBo
LmJsb2NrKDApOwogICAgICAgICByb290LT5zc2EtPmF2YWlsYWJpbGl0eUF0SGVhZC5tX2xvY2Fs
cy5maWxsKEF2YWlsYWJpbGl0eTo6dW5hdmFpbGFibGUoKSk7Ci0gICAgICAgIGZvciAodW5zaWdu
ZWQgYXJndW1lbnQgPSByb290LT5zc2EtPmF2YWlsYWJpbGl0eUF0SGVhZC5tX2xvY2Fscy5udW1i
ZXJPZkFyZ3VtZW50cygpOyBhcmd1bWVudC0tOykgewotICAgICAgICAgICAgcm9vdC0+c3NhLT5h
dmFpbGFiaWxpdHlBdEhlYWQubV9sb2NhbHMuYXJndW1lbnQoYXJndW1lbnQpID0KLSAgICAgICAg
ICAgICAgICBBdmFpbGFiaWxpdHk6OnVuYXZhaWxhYmxlKCkud2l0aEZsdXNoKAotICAgICAgICAg
ICAgICAgICAgICBGbHVzaGVkQXQoRmx1c2hlZEpTVmFsdWUsIHZpcnR1YWxSZWdpc3RlckZvckFy
Z3VtZW50KGFyZ3VtZW50KSkpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gbV9n
cmFwaC5tX2FyZ3VtZW50Rm9ybWF0cy5zaXplKCk7IGFyZ3VtZW50LS07KSB7CisgICAgICAgICAg
ICBGbHVzaGVkQXQgZmx1c2hlZEF0ID0gRmx1c2hlZEF0KAorICAgICAgICAgICAgICAgIG1fZ3Jh
cGgubV9hcmd1bWVudEZvcm1hdHNbYXJndW1lbnRdLAorICAgICAgICAgICAgICAgIHZpcnR1YWxS
ZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSk7CisgICAgICAgICAgICByb290LT5zc2EtPmF2
YWlsYWJpbGl0eUF0SGVhZC5tX2xvY2Fscy5hcmd1bWVudChhcmd1bWVudCkgPSBBdmFpbGFiaWxp
dHkoZmx1c2hlZEF0KTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoaXMgY291bGQgYmUgbWFk
ZSBtb3JlIGVmZmljaWVudCBieSBwcm9jZXNzaW5nIGJsb2NrcyBpbiByZXZlcnNlIHBvc3RvcmRl
ci4KQEAgLTEzOCw3ICsxMzksNyBAQCB2b2lkIExvY2FsT1NSQXZhaWxhYmlsaXR5Q2FsY3VsYXRv
cjo6ZXhlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgR2V0QXJndW1lbnQ6IHsK
KyAgICBjYXNlIEdldExvY2FsOiB7CiAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFi
bGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKICAgICAgICAgbV9hdmFpbGFiaWxpdHku
bV9sb2NhbHMub3BlcmFuZCh2YXJpYWJsZS0+bG9jYWwoKSkgPQogICAgICAgICAgICAgQXZhaWxh
YmlsaXR5KG5vZGUsIHZhcmlhYmxlLT5mbHVzaGVkQXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAkocmV2aXNpb24gMTgwMTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Miw3
ICs1NTIsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKICAg
ICAgICAgY2FzZSBVcHNpbG9uOgotICAgICAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgICAgICAg
ICAgLy8gVGhlc2UgZG9uJ3QgZ2V0IGluc2VydGVkIHVudGlsIHdlIGdvIGludG8gU1NBLgogICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFr
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRMb2NhbFNpbmtpbmdQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQdXRMb2Nh
bFNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE4MDEyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHUHV0TG9jYWxTaW5raW5nUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzEsNyArMzcxLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICBzc2FDYWxjdWxhdG9y
Lm5ld0RlZigKICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRUb1ZhcmlhYmxlLm9wZXJh
bmQobm9kZS0+bG9jYWwoKSksIGJsb2NrLCBub2RlLT5jaGlsZDEoKS5ub2RlKCkpOwogICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEdldEFyZ3VtZW50Ogor
ICAgICAgICAgICAgICAgIGNhc2UgR2V0TG9jYWw6CiAgICAgICAgICAgICAgICAgICAgIHNzYUNh
bGN1bGF0b3IubmV3RGVmKAogICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZFRvVmFyaWFi
bGUub3BlcmFuZChub2RlLT5sb2NhbCgpKSwgYmxvY2ssIG5vZGUpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKQEAgLTQ1MCwxMyArNDUwLDYgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgIGNhc2UgR2V0QXJndW1lbnQ6IHsKLSAgICAgICAgICAgICAgICAgICAgVmFy
aWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwot
ICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZhcmlhYmxlLT5s
b2NhbCgpOwotICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm9wZXJhbmQob3BlcmFuZCkgPSBu
b2RlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgS2lsbExvY2FsOiB7CiAgICAg
ICAgICAgICAgICAgICAgIGRlZmVycmVkLm9wZXJhbmQobm9kZS0+dW5saW5rZWRMb2NhbCgpKSA9
IFZhcmlhYmxlRGVmZXJyYWwoKTsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC00ODks
NiArNDgyLDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgcHJlY2lzZUxvY2FsQ2xv
YmJlcml6ZSgKICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgsIG5vZGUsIGVzY2FwZUhh
bmRsZXIsIGVzY2FwZUhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBbJl0gKFZpcnR1
YWxSZWdpc3RlciwgTm9kZSopIHsgfSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICAvLyBJZiB3ZSdyZSBhIEdldExvY2FsLCB0aGVuIHdlIGFsc28gY3JlYXRlIGEg
bWFwcGluZy4KKyAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSBhYmxl
IHRvIGp1c3QgZWxpbWluYXRlIHN1Y2ggR2V0TG9jYWxzLCB3aGVuIHdlIGtub3cKKyAgICAgICAg
ICAgICAgICAgICAgLy8gd2hhdCB0aGVpciBpbmNvbWluZyB2YWx1ZSB3aWxsIGJlLgorICAgICAg
ICAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQxNjI0CisgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5vcCgpID09IEdldExvY2FsKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0g
bm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0
dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZhcmlhYmxlLT5sb2NhbCgpOworICAgICAgICAgICAgICAg
ICAgICAgICAgbWFwcGluZy5vcGVyYW5kKG9wZXJhbmQpID0gbm9kZTsKKyAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9IH0K
ICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29u
dmVyc2lvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NTQUNvbnZlcnNpb25QaGFzZS5jcHAJKHJldmlzaW9uIDE4MDEyNykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU1NBQ29udmVyc2lvblBoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzMsNyArNzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IC8vIEZpbmQgYWxsIFNldExvY2FscyBhbmQgY3JlYXRlIERlZnMgZm9yIHRoZW0uIFdlIGhhbmRs
ZSBTZXRBcmd1bWVudCBieSBjcmVhdGluZyBhCi0gICAgICAgIC8vIEdldEFyZ3VtZW50LgorICAg
ICAgICAvLyBHZXRMb2NhbCwgYW5kIHJlY29yZGluZyB0aGUgZmx1c2ggZm9ybWF0LgogICAgICAg
ICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IG1fZ3JhcGgubnVtQmxvY2tzKCk7IGJsb2Nr
SW5kZXgtLTspIHsKICAgICAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9j
ayhibG9ja0luZGV4KTsKICAgICAgICAgICAgIGlmICghYmxvY2spCkBAIC05Nyw3ICs5Nyw5IEBA
IHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm9wKCkgPT0gU2V0QXJn
dW1lbnQpOwogICAgICAgICAgICAgICAgICAgICBjaGlsZE5vZGUgPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAgbm9kZUluZGV4LCBub2RlLT52YXJp
YWJsZUFjY2Vzc0RhdGEoKS0+cHJlZGljdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAg
R2V0QXJndW1lbnQsIG5vZGUtPm9yaWdpbiwgT3BJbmZvKG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0
YSgpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBHZXRMb2NhbCwgbm9kZS0+b3JpZ2luLCBP
cEluZm8obm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCkpKTsKKyAgICAgICAgICAgICAgICAgICAg
bV9hcmd1bWVudEdldHRlcnMuYWRkKGNoaWxkTm9kZSk7CisgICAgICAgICAgICAgICAgICAgIG1f
YXJndW1lbnRNYXBwaW5nLmFkZChub2RlLCBjaGlsZE5vZGUpOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBtX2NhbGN1bGF0b3IubmV3RGVmKApA
QCAtMTk4LDE0ICsyMDAsMTQgQEAgcHVibGljOgogICAgICAgICAvLyAgIC0gUGhhbnRvbUxvY2Fs
IGJlY29tZXMgUGhhbnRvbSwgYW5kIGl0cyBjaGlsZCBpcyB3aGF0ZXZlciBpcyBzcGVjaWZpZWQg
YnkKICAgICAgICAgLy8gICAgIHZhbHVlRm9yT3BlcmFuZC4KICAgICAgICAgLy8KLSAgICAgICAg
Ly8gICAtIFNldEFyZ3VtZW50IGlzIHJlbW92ZWQuIE5vdGUgdGhhdCBHZXRBcmd1bWVudCBub2Rl
cyBoYXZlIGFscmVhZHkgYmVlbiBpbnNlcnRlZC4KKyAgICAgICAgLy8gICAtIFNldEFyZ3VtZW50
IGlzIHJlbW92ZWQuIE5vdGUgdGhhdCBHZXRMb2NhbCBub2RlcyBoYXZlIGFscmVhZHkgYmVlbiBp
bnNlcnRlZC4KICAgICAgICAgT3BlcmFuZHM8Tm9kZSo+IHZhbHVlRm9yT3BlcmFuZChPcGVyYW5k
c0xpa2UsIG1fZ3JhcGguYmxvY2soMCktPnZhcmlhYmxlc0F0SGVhZCk7CiAgICAgICAgIGZvciAo
QmFzaWNCbG9jayogYmxvY2sgOiBtX2dyYXBoLmJsb2Nrc0luUHJlT3JkZXIoKSkgewogICAgICAg
ICAgICAgdmFsdWVGb3JPcGVyYW5kLmNsZWFyKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IC8vIENQUyB3aWxsIGNsYWltIHRoYXQgdGhlIHJvb3QgYmxvY2sgaGFzIGFsbCBhcmd1bWVudHMg
bGl2ZS4gQnV0IHdlIGhhdmUgYWxyZWFkeSBkb25lCiAgICAgICAgICAgICAvLyB0aGUgZmlyc3Qg
c3RlcCBvZiBTU0EgY29udmVyc2lvbjogYXJndW1lbnQgbG9jYWxzIGFyZSBubyBsb25nZXIgbGl2
ZSBhdCBoZWFkOwotICAgICAgICAgICAgLy8gaW5zdGVhZCB3ZSBoYXZlIEdldEFyZ3VtZW50IG5v
ZGVzIGZvciBleHRyYWN0aW5nIHRoZSB2YWx1ZXMgb2YgYXJndW1lbnRzLiBTbywgd2UKKyAgICAg
ICAgICAgIC8vIGluc3RlYWQgd2UgaGF2ZSBHZXRMb2NhbCBub2RlcyBmb3IgZXh0cmFjdGluZyB0
aGUgdmFsdWVzIG9mIGFyZ3VtZW50cy4gU28sIHdlCiAgICAgICAgICAgICAvLyBza2lwIHRoZSBh
dC1oZWFkIGF2YWlsYWJsZSB2YWx1ZSBjYWxjdWxhdGlvbiBmb3IgdGhlIHJvb3QgYmxvY2suCiAg
ICAgICAgICAgICBpZiAoYmxvY2sgIT0gbV9ncmFwaC5ibG9jaygwKSkgewogICAgICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSB2YWx1ZUZvck9wZXJhbmQuc2l6ZSgpOyBpLS07KSB7CkBAIC0y
OTMsOSArMjk1LDE1IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgR2V0TG9jYWw6IHsKKyAgICAgICAgICAgICAg
ICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNz
RGF0YSgpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9hcmd1bWVudEdldHRlcnMuY29udGFp
bnMobm9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIk1hcHBpbmc6ICIsIHZhcmlhYmxlLT5sb2Nh
bCgpLCAiIC0+ICIsIG5vZGUsICJcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVG
b3JPcGVyYW5kLm9wZXJhbmQodmFyaWFibGUtPmxvY2FsKCkpID0gbm9kZTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAgICAgIG5vZGUtPmNoaWxkcmVuLnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIAotICAg
ICAgICAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFy
aWFibGVBY2Nlc3NEYXRhKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+aXND
YXB0dXJlZCgpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgICAgIApAQCAtMzM3LDE1ICszNDUsNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgY2FzZSBHZXRBcmd1bWVudDogewotICAgICAgICAgICAgICAgICAgICBWYXJpYWJs
ZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7Ci0gICAg
ICAgICAgICAgICAgICAgIEFTU0VSVCghdmFyaWFibGUtPmlzQ2FwdHVyZWQoKSk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUxv
ZygiTWFwcGluZzogIiwgdmFyaWFibGUtPmxvY2FsKCksICIgLT4gIiwgbm9kZSwgIlxuIik7Ci0g
ICAgICAgICAgICAgICAgICAgIHZhbHVlRm9yT3BlcmFuZC5vcGVyYW5kKHZhcmlhYmxlLT5sb2Nh
bCgpKSA9IG5vZGU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQpAQCAtMzkyLDcgKzM5MSwy
MSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBibG9jay0+c3NhID0gc3RkOjptYWtlX3VuaXF1ZTxC
YXNpY0Jsb2NrOjpTU0FEYXRhPihibG9jayk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAg
IG1fZ3JhcGgubV9hcmd1bWVudHMuY2xlYXIoKTsKKyAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50
Rm9ybWF0cy5yZXNpemUobV9ncmFwaC5tX2FyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRzLnNpemUoKTsgaS0tOykgeworICAgICAg
ICAgICAgRmx1c2hGb3JtYXQgZm9ybWF0ID0gRmx1c2hlZEpTVmFsdWU7CisKKyAgICAgICAgICAg
IE5vZGUqIG5vZGUgPSBtX2FyZ3VtZW50TWFwcGluZy5nZXQobV9ncmFwaC5tX2FyZ3VtZW50c1tp
XSk7CisKKyAgICAgICAgICAgIC8vIG1fYXJndW1lbnRNYXBwaW5nLmdldCBjb3VsZCByZXR1cm4g
bnVsbCBmb3IgYSBjYXB0dXJlZCBsb2NhbC4gVGhhdCdzIGZpbmUuIFdlIG9ubHkKKyAgICAgICAg
ICAgIC8vIHRyYWNrIHRoZSBhcmd1bWVudCBsb2FkcyBvZiB0aG9zZSBhcmd1bWVudHMgZm9yIHdo
aWNoIHdlIHNwZWN1bGF0ZSB0eXBlLiBXZSBkb24ndAorICAgICAgICAgICAgLy8gc3BlY3VsYXRl
IHR5cGUgZm9yIGNhcHR1cmVkIGFyZ3VtZW50cy4KKyAgICAgICAgICAgIGlmIChub2RlKQorICAg
ICAgICAgICAgICAgIGZvcm1hdCA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5mbHVzaEZv
cm1hdCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRGb3Jt
YXRzW2ldID0gZm9ybWF0OworICAgICAgICAgICAgbV9ncmFwaC5tX2FyZ3VtZW50c1tpXSA9IG5v
ZGU7IC8vIFJlY29yZCB0aGUgbG9hZCB0aGF0IGxvYWRzIHRoZSBhcmd1bWVudHMgZm9yIHRoZSBi
ZW5lZml0IG9mIGV4aXQgcHJvZmlsaW5nLgorICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBt
X2dyYXBoLm1fZm9ybSA9IFNTQTsKIApAQCAtNDA4LDYgKzQyMSw4IEBAIHByaXZhdGU6CiAgICAg
U1NBQ2FsY3VsYXRvciBtX2NhbGN1bGF0b3I7CiAgICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9u
U2V0OwogICAgIEhhc2hNYXA8VmFyaWFibGVBY2Nlc3NEYXRhKiwgU1NBQ2FsY3VsYXRvcjo6VmFy
aWFibGUqPiBtX3NzYVZhcmlhYmxlRm9yVmFyaWFibGU7CisgICAgSGFzaE1hcDxOb2RlKiwgTm9k
ZSo+IG1fYXJndW1lbnRNYXBwaW5nOworICAgIEhhc2hTZXQ8Tm9kZSo+IG1fYXJndW1lbnRHZXR0
ZXJzOwogICAgIFZlY3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEqPiBtX3ZhcmlhYmxlRm9yU1NBSW5k
ZXg7CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaAkocmV2aXNpb24gMTgwMTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNiBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0CiAgICAgY2FzZSBLaWxsTG9jYWw6
CiAgICAgY2FzZSBNb3ZIaW50OgogICAgIGNhc2UgWm9tYmllSGludDoKLSAgICBjYXNlIEdldEFy
Z3VtZW50OgogICAgIGNhc2UgUGhhbnRvbToKICAgICBjYXNlIEhhcmRQaGFudG9tOgogICAgIGNh
c2UgVXBzaWxvbjoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTgwMTI3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDg5OCw3ICs0ODk4LDYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
KiBub2RlKQogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgIGNhc2UgUGhpOgogICAgIGNhc2Ug
VXBzaWxvbjoKLSAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5
TG9jYWw6CiAgICAgY2FzZSBDaGVja1RpZXJVcEluTG9vcDoKICAgICBjYXNlIENoZWNrVGllclVw
QXRSZXR1cm46CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDE4MDEyNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5OTMs
NyArNDk5Myw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIExhc3ROb2RlVHlwZToKICAgICBjYXNlIFBoaToKICAgICBjYXNlIFVwc2lsb246Ci0g
ICAgY2FzZSBHZXRBcmd1bWVudDoKICAgICBjYXNlIEV4dHJhY3RPU1JFbnRyeUxvY2FsOgogICAg
IGNhc2UgQ2hlY2tJbkJvdW5kczoKICAgICBjYXNlIEFyaXRoSU11bDoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAJKHJldmlzaW9uIDE4MDEy
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNiBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNv
bXBpbGUoTm9kZSogCiAgICAgY2FzZSBLaWxsTG9jYWw6CiAgICAgY2FzZSBNb3ZIaW50OgogICAg
IGNhc2UgWm9tYmllSGludDoKLSAgICBjYXNlIEdldEFyZ3VtZW50OgogICAgIGNhc2UgUGhhbnRv
bToKICAgICBjYXNlIEhhcmRQaGFudG9tOgogICAgIGNhc2UgRmx1c2g6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9MTFZNLmNwcAkocmV2aXNpb24g
MTgwMTI3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvTExWTS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw2ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgICAgIG1f
cHJvbG9ndWUgPSBGVExfTkVXX0JMT0NLKG1fb3V0LCAoIlByb2xvZ3VlIikpOwogICAgICAgICBM
QmFzaWNCbG9jayBzdGFja092ZXJmbG93ID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJTdGFjayBv
dmVyZmxvdyIpKTsKICAgICAgICAgbV9oYW5kbGVFeGNlcHRpb25zID0gRlRMX05FV19CTE9DSyht
X291dCwgKCJIYW5kbGUgRXhjZXB0aW9ucyIpKTsKKyAgICAgICAgCisgICAgICAgIExCYXNpY0Js
b2NrIGNoZWNrQXJndW1lbnRzID0gRlRMX05FV19CTE9DSyhtX291dCwgKCJDaGVjayBhcmd1bWVu
dHMiKSk7CiAKICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0lu
ZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7CiAgICAgICAgICAgICBt
X2hpZ2hCbG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7CkBAIC0xOTMsNyArMTk1LDcg
QEAgcHVibGljOgogICAgICAgICBtX291dC5zdG9yZVB0cihtX291dC5jb25zdEludFB0cihjb2Rl
QmxvY2soKSksIGFkZHJlc3NGb3IoSlNTdGFjazo6Q29kZUJsb2NrKSk7CiAgICAgICAgIAogICAg
ICAgICBtX291dC5icmFuY2goCi0gICAgICAgICAgICBkaWRPdmVyZmxvd1N0YWNrKCksIHJhcmVs
eShzdGFja092ZXJmbG93KSwgdXN1YWxseShsb3dCbG9jayhtX2dyYXBoLmJsb2NrKDApKSkpOwor
ICAgICAgICAgICAgZGlkT3ZlcmZsb3dTdGFjaygpLCByYXJlbHkoc3RhY2tPdmVyZmxvdyksIHVz
dWFsbHkoY2hlY2tBcmd1bWVudHMpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0LmFwcGVuZFRv
KHN0YWNrT3ZlcmZsb3csIG1faGFuZGxlRXhjZXB0aW9ucyk7CiAgICAgICAgIG1fb3V0LmNhbGwo
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvblRocm93U3RhY2tPdmVyZmxvd0Vycm9yKSwgbV9jYWxs
RnJhbWUsIG1fb3V0LmNvbnN0SW50UHRyKGNvZGVCbG9jaygpKSk7CkBAIC0yMDMsMTMgKzIwNSw1
OCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKE1hY3JvQXNzZW1ibGVy
OjptYXhKdW1wUmVwbGFjZW1lbnRTaXplKCkpKTsKICAgICAgICAgbV9vdXQudW5yZWFjaGFibGUo
KTsKICAgICAgICAgCi0gICAgICAgIG1fb3V0LmFwcGVuZFRvKG1faGFuZGxlRXhjZXB0aW9ucywg
bG93QmxvY2sobV9ncmFwaC5ibG9jaygwKSkpOworICAgICAgICBtX291dC5hcHBlbmRUbyhtX2hh
bmRsZUV4Y2VwdGlvbnMsIGNoZWNrQXJndW1lbnRzKTsKICAgICAgICAgbV9mdGxTdGF0ZS5oYW5k
bGVFeGNlcHRpb25TdGFja21hcElEID0gbV9zdGFja21hcElEcysrOwogICAgICAgICBtX291dC5j
YWxsKAogICAgICAgICAgICAgbV9vdXQuc3RhY2ttYXBJbnRyaW5zaWMoKSwgbV9vdXQuY29uc3RJ
bnQ2NChtX2Z0bFN0YXRlLmhhbmRsZUV4Y2VwdGlvblN0YWNrbWFwSUQpLAogICAgICAgICAgICAg
bV9vdXQuY29uc3RJbnQzMihNYWNyb0Fzc2VtYmxlcjo6bWF4SnVtcFJlcGxhY2VtZW50U2l6ZSgp
KSk7CiAgICAgICAgIG1fb3V0LnVucmVhY2hhYmxlKCk7Ci0KKyAgICAgICAgCisgICAgICAgIG1f
b3V0LmFwcGVuZFRvKGNoZWNrQXJndW1lbnRzLCBsb3dCbG9jayhtX2dyYXBoLmJsb2NrKDApKSk7
CisgICAgICAgIGF2YWlsYWJpbGl0eU1hcCgpLmNsZWFyKCk7CisgICAgICAgIGF2YWlsYWJpbGl0
eU1hcCgpLm1fbG9jYWxzID0gT3BlcmFuZHM8QXZhaWxhYmlsaXR5Pihjb2RlQmxvY2soKS0+bnVt
UGFyYW1ldGVycygpLCAwKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29kZUJsb2NrKCkt
Pm51bVBhcmFtZXRlcnMoKTsgaS0tOykgeworICAgICAgICAgICAgYXZhaWxhYmlsaXR5TWFwKCku
bV9sb2NhbHMuYXJndW1lbnQoaSkgPQorICAgICAgICAgICAgICAgIEF2YWlsYWJpbGl0eShGbHVz
aGVkQXQoRmx1c2hlZEpTVmFsdWUsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgbV9jb2RlT3JpZ2luRm9yRXhpdFRhcmdldCA9IENvZGVPcmlnaW4o
MCk7CisgICAgICAgIG1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlID0gQ29kZU9yaWdpbigwKTsK
KyAgICAgICAgbV9ub2RlID0gbnVsbHB0cjsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gY29k
ZUJsb2NrKCktPm51bVBhcmFtZXRlcnMoKTsgaS0tOykgeworICAgICAgICAgICAgTm9kZSogbm9k
ZSA9IG1fZ3JhcGgubV9hcmd1bWVudHNbaV07CisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCA9IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGkpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBMVmFsdWUganNWYWx1ZSA9IG1fb3V0LmxvYWQ2NChhZGRyZXNzRm9yKG9wZXJh
bmQpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG5vZGUpIHsKKyAgICAgICAgICAg
ICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG5vZGUsIG9wZXJhbmQgPT0gbm9kZS0+dmFyaWFibGVB
Y2Nlc3NEYXRhKCktPm1hY2hpbmVMb2NhbCgpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIGEgaGFjaywgYnV0IGl0J3MgYW4gZWZmZWN0aXZlIG9uZS4gSXQg
YWxsb3dzIHVzIHRvIGRvIENTRSBvbiB0aGUKKyAgICAgICAgICAgICAgICAvLyBwcmltb3JkaWFs
IGxvYWQgb2YgYXJndW1lbnRzLiBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgR2V0TG9jYWwgdGhhdCBn
b3QgcHV0IGluCisgICAgICAgICAgICAgICAgLy8gcGxhY2Ugb2YgdGhlIG9yaWdpbmFsIFNldEFy
Z3VtZW50IGRvZXNuJ3QgaGF2ZSBhbnkgZWZmZWN0cyBiZWZvcmUgaXQuIFRoaXMKKyAgICAgICAg
ICAgICAgICAvLyBzaG91bGQgaG9sZCB0cnVlLgorICAgICAgICAgICAgICAgIG1fbG9hZGVkQXJn
dW1lbnRWYWx1ZXMuYWRkKG5vZGUsIGpzVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgCisgICAgICAgICAgICBzd2l0Y2ggKG1fZ3JhcGgubV9hcmd1bWVudEZvcm1hdHNbaV0pIHsK
KyAgICAgICAgICAgIGNhc2UgRmx1c2hlZEludDMyOgorICAgICAgICAgICAgICAgIHNwZWN1bGF0
ZShCYWRUeXBlLCBqc1ZhbHVlVmFsdWUoanNWYWx1ZSksIG5vZGUsIGlzTm90SW50MzIoanNWYWx1
ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQm9v
bGVhbjoKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwganNWYWx1ZVZhbHVlKGpz
VmFsdWUpLCBub2RlLCBpc05vdEJvb2xlYW4oanNWYWx1ZSkpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVkQ2VsbDoKKyAgICAgICAgICAgICAgICBzcGVj
dWxhdGUoQmFkVHlwZSwganNWYWx1ZVZhbHVlKGpzVmFsdWUpLCBub2RlLCBpc05vdENlbGwoanNW
YWx1ZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGbHVzaGVk
SlNWYWx1ZToKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgREZHX0NSQVNIKG1fZ3JhcGgsIG5vZGUsICJCYWQgZmx1c2ggZm9ybWF0
IGZvciBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIG1fb3V0Lmp1bXAobG93QmxvY2sobV9ncmFwaC5ibG9jaygwKSkp
OworICAgICAgICAKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IHByZU9yZGVyKQog
ICAgICAgICAgICAgY29tcGlsZUJsb2NrKGJsb2NrKTsKICAgICAgICAgCkBAIC0zODEsOSArNDI4
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBCb29sZWFuVG9OdW1iZXI6CiAgICAgICAgICAg
ICBjb21waWxlQm9vbGVhblRvTnVtYmVyKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
Y2FzZSBHZXRBcmd1bWVudDoKLSAgICAgICAgICAgIGNvbXBpbGVHZXRBcmd1bWVudCgpOwotICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRXh0cmFjdE9TUkVudHJ5TG9jYWw6CiAgICAg
ICAgICAgICBjb21waWxlRXh0cmFjdE9TUkVudHJ5TG9jYWwoKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtOTgxLDM2ICsxMDI1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0KIAotICAg
IHZvaWQgY29tcGlsZUdldEFyZ3VtZW50KCkKLSAgICB7Ci0gICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGUgPSBtX25vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICBW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCA9IHZhcmlhYmxlLT5tYWNoaW5lTG9jYWwoKTsKLSAgICAg
ICAgREZHX0FTU0VSVChtX2dyYXBoLCBtX25vZGUsIG9wZXJhbmQuaXNBcmd1bWVudCgpKTsKLQot
ICAgICAgICBMVmFsdWUganNWYWx1ZSA9IG1fb3V0LmxvYWQ2NChhZGRyZXNzRm9yKG9wZXJhbmQp
KTsKLQotICAgICAgICBzd2l0Y2ggKHVzZUtpbmRGb3IodmFyaWFibGUtPmZsdXNoRm9ybWF0KCkp
KSB7Ci0gICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlw
ZSwganNWYWx1ZVZhbHVlKGpzVmFsdWUpLCBtX25vZGUsIGlzTm90SW50MzIoanNWYWx1ZSkpOwot
ICAgICAgICAgICAgc2V0SW50MzIodW5ib3hJbnQzMihqc1ZhbHVlKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBDZWxsVXNlOgotICAgICAgICAgICAgc3BlY3VsYXRlKEJhZFR5
cGUsIGpzVmFsdWVWYWx1ZShqc1ZhbHVlKSwgbV9ub2RlLCBpc05vdENlbGwoanNWYWx1ZSkpOwot
ICAgICAgICAgICAgc2V0SlNWYWx1ZShqc1ZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEJvb2xlYW5Vc2U6Ci0gICAgICAgICAgICBzcGVjdWxhdGUoQmFkVHlwZSwganNW
YWx1ZVZhbHVlKGpzVmFsdWUpLCBtX25vZGUsIGlzTm90Qm9vbGVhbihqc1ZhbHVlKSk7Ci0gICAg
ICAgICAgICBzZXRCb29sZWFuKHVuYm94Qm9vbGVhbihqc1ZhbHVlKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBVbnR5cGVkVXNlOgotICAgICAgICAgICAgc2V0SlNWYWx1ZShq
c1ZhbHVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgREZHX0NSQVNIKG1fZ3JhcGgsIG1fbm9kZSwgIkJhZCB1c2Uga2luZCIpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCiAgICAgdm9pZCBjb21waWxlRXh0cmFj
dE9TUkVudHJ5TG9jYWwoKQogICAgIHsKICAgICAgICAgRW5jb2RlZEpTVmFsdWUqIGJ1ZmZlciA9
IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oCkBAIC0xMDIwLDEzICsxMDM0LDE2IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgdm9pZCBjb21waWxlR2V0TG9jYWwoKQogICAgIHsKLSAgICAgICAg
Ly8gR2V0TG9jYWxzIGFyaXNlIG9ubHkgZm9yIGNhcHR1cmVkIHZhcmlhYmxlcy4KKyAgICAgICAg
Ly8gR2V0TG9jYWxzIGFyaXNlIG9ubHkgZm9yIGNhcHR1cmVkIHZhcmlhYmxlcyBhbmQgYXJndW1l
bnRzLiBGb3IgYXJndW1lbnRzLCB3ZSBtaWdodCBoYXZlCisgICAgICAgIC8vIGFscmVhZHkgbG9h
ZGVkIGl0LgorICAgICAgICBpZiAoTFZhbHVlIHZhbHVlID0gbV9sb2FkZWRBcmd1bWVudFZhbHVl
cy5nZXQobV9ub2RlKSkgeworICAgICAgICAgICAgc2V0SlNWYWx1ZSh2YWx1ZSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFZhcmlhYmxlQWNjZXNz
RGF0YSogdmFyaWFibGUgPSBtX25vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpOwogICAgICAgICBB
YnN0cmFjdFZhbHVlJiB2YWx1ZSA9IG1fc3RhdGUudmFyaWFibGVzKCkub3BlcmFuZCh2YXJpYWJs
ZS0+bG9jYWwoKSk7CiAgICAgICAgIAotICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgsIG1fbm9k
ZSwgdmFyaWFibGUtPmlzQ2FwdHVyZWQoKSk7Ci0gICAgICAgIAogICAgICAgICBpZiAoaXNJbnQz
MlNwZWN1bGF0aW9uKHZhbHVlLm1fdHlwZSkpCiAgICAgICAgICAgICBzZXRJbnQzMihtX291dC5s
b2FkMzIocGF5bG9hZEZvcih2YXJpYWJsZS0+bWFjaGluZUxvY2FsKCkpKSk7CiAgICAgICAgIGVs
c2UKQEAgLTcwMTQsNiArNzAzMSwxMSBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8Tm9kZSosIExv
d2VyZWROb2RlVmFsdWU+IG1fc3RvcmFnZVZhbHVlczsKICAgICBIYXNoTWFwPE5vZGUqLCBMb3dl
cmVkTm9kZVZhbHVlPiBtX2RvdWJsZVZhbHVlczsKICAgICAKKyAgICAvLyBUaGlzIGlzIGEgYml0
IG9mIGEgaGFjay4gSXQgcHJldmVudHMgTExWTSBmcm9tIGhhdmluZyB0byBkbyBDU0Ugb24gbG9h
ZGluZyBvZiBhcmd1bWVudHMuCisgICAgLy8gSXQncyBuaWNlIHRvIGhhdmUgdGhlc2Ugb3B0aW1p
emF0aW9ucyBvbiBvdXIgZW5kIGJlY2F1c2Ugd2UgY2FuIGd1YXJhbnRlZSB0aGVtIGEgYml0IGJl
dHRlci4KKyAgICAvLyBQcm9iYWJseSBhbHNvIHNhdmVzIExMVk0gY29tcGlsZSB0aW1lLgorICAg
IEhhc2hNYXA8Tm9kZSosIExWYWx1ZT4gbV9sb2FkZWRBcmd1bWVudFZhbHVlczsKKyAgICAKICAg
ICBIYXNoTWFwPE5vZGUqLCBMVmFsdWU+IG1fcGhpczsKICAgICAKICAgICBMb2NhbE9TUkF2YWls
YWJpbGl0eUNhbGN1bGF0b3IgbV9hdmFpbGFiaWxpdHlDYWxjdWxhdG9yOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9kZWFkLXNwZWN1bGF0aW5nLWFyZ3VtZW50LXVz
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2Rl
YWQtc3BlY3VsYXRpbmctYXJndW1lbnQtdXNlLmpzCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9kZWFkLXNwZWN1bGF0aW5nLWFyZ3VtZW50LXVzZS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE3IEBACitmdW5jdGlvbiBmb28oeCkgeworICAg
IHZhciB0bXAgPSB4ICsgMTsKK30KKworbm9JbmxpbmUoZm9vKTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDAwMDsgKytpKQorICAgIGZvbyhpKTsKKwordmFyIGRpZENhbGwgPSBmYWxzZTsKK3Zh
ciBvID0geworICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyBkaWRDYWxsID0gdHJ1ZTsgfQorfTsK
KworZm9vKG8pOworaWYgKCFkaWRDYWxsKQorICAgIHRocm93ICJFcnJvcjogZGlkbid0IGNhbGwg
dmFsdWVPZiI7Cg==
</data>
<flag name="review"
          id="271567"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>