<?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>91144</bug_id>
          
          <creation_ts>2012-07-12 13:46:19 -0700</creation_ts>
          <short_desc>Merge HTMLCollectionWithArrayStorage into HTMLCollection</short_desc>
          <delta_ts>2012-07-16 10:06:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>89919</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>andersca</cc>
    
    <cc>arko</cc>
    
    <cc>darin</cc>
    
    <cc>gustavo</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>vsevik</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>668169</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-12 13:46:19 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/122345 introduced HTMLCollectionWithArrayStorage to share more code between HTMLFormCollection::item and HTMLPropertiesCollection::item. But we can do better by merging it to HTMLCollection::item. In fact, we can also get rid of HTMLCollection::calcLength as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668293</commentid>
    <comment_count>1</comment_count>
      <attachid>152076</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-12 15:19:17 -0700</bug_when>
    <thetext>Created attachment 152076
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668308</commentid>
    <comment_count>2</comment_count>
      <attachid>152076</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-07-12 15:26:30 -0700</bug_when>
    <thetext>Comment on attachment 152076
Patch

Attachment 152076 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13202856</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668311</commentid>
    <comment_count>3</comment_count>
      <attachid>152076</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-12 15:28:52 -0700</bug_when>
    <thetext>Comment on attachment 152076
Patch

(In reply to comment #2)
&gt; (From update of attachment 152076 [details])
&gt; Attachment 152076 [details] did not pass gtk-ews (gtk):
&gt; Output: http://queues.webkit.org/results/13202856

Oh, oops. A bad merge :( Fixing now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668314</commentid>
    <comment_count>4</comment_count>
      <attachid>152080</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-12 15:30:14 -0700</bug_when>
    <thetext>Created attachment 152080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>668329</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-12 15:40:30 -0700</bug_when>
    <thetext>Committed r122518: &lt;http://trac.webkit.org/changeset/122518&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670276</commentid>
    <comment_count>6</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-07-16 05:53:32 -0700</bug_when>
    <thetext>FYI this change causes http://code.google.com/p/chromium/issues/detail?id=137488</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>670424</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-07-16 10:06:36 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; FYI this change causes http://code.google.com/p/chromium/issues/detail?id=137488

Ah, I think I know what&apos;s happening there. Try adding arrayOffset = 0 to
http://trac.webkit.org/browser/trunk/Source/WebCore/html/HTMLCollection.cpp?rev=122518#L323</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152076</attachid>
            <date>2012-07-12 15:19:17 -0700</date>
            <delta_ts>2012-07-12 15:28:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91144-20120712152249.patch</filename>
            <type>text/plain</type>
            <size>19737</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjUwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA3LTEyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1lcmdlIEhUTUxDb2xsZWN0aW9u
V2l0aEFycmF5U3RvcmFnZSBpbnRvIEhUTUxDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE0NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdlZCBIVE1MQ29sbGVjdGlvbldpdGhBcnJh
eVN0b3JhZ2U6Oml0ZW0gaW50byBIVE1MQ29sbGVjdGlvbjo6aXRlbSBhbmQgZ290IHJpZCBvZgor
ICAgICAgICBIVE1MQ29sbGVjdGlvbldpdGhBcnJheVN0b3JhZ2UuIEFsc28gZGUtdmlydHVhbGl6
ZWQgSFRNTENvbGxlY3Rpb246Oml0ZW0gYW5kIEhUTUxDb2xsZWN0aW9uOjpsZW5ndGgKKyAgICAg
ICAgYW5kIG1lcmdlZCBpdGVtSW5BcnJheUFmdGVyIGFuZCBpdGVtQWZ0ZXIuCisKKyAgICAgICAg
SW4gYWRkaXRpb24sIGltcHJvdmVkIHRoZSBhbGdvcml0aG0gaW4gSFRNTENvbGxlY3Rpb246Omxl
bmd0aCB0byB0YWtlIGFkdmFudGFnZSBvZiBpdGVtIGNhY2hlLgorICAgICAgICBJbnN0ZWFkIG9m
IGFsd2F5cyBjb21wdXRpbmcgdGhlIGxlbmd0aCBmcm9tIHRoZSBiZWdpbm5pbmcsIHdlIHN0YXJ0
IHRoZSBzZWFyY2ggZnJvbSB0aGUgY2FjaGVkIGl0ZW0KKyAgICAgICAgc28gdGhhdCBpZiB3ZSdy
ZSBuZWFyIGVuZCBvZiB0aGUgY29sbGVjdGlvbiwgd2UgYXZvaWQgc2lnbmlmaWNhbnQgcG9ydGlv
biBvZiB0aGUgbm9kZSB0cmF2ZXJzYWwuCisKKyAgICAgICAgRnVydGhlcm1vcmUsIG1hZGUgSFRN
TENvbGxlY3Rpb24gYWx3YXlzIGNhbGwgc2V0SXRlbUNhY2hlIHdpdGggYSBub24tbnVsbCBpdGVt
IGFuZCBIVE1MQ29sbGVjdGlvbjo6aXRlbQorICAgICAgICBzZXQgdGhlIGxlbmd0aCBjYWNoZSB3
aGVuIGl0IHJlYWNoZXMgdGhlIGVuZCBvZiB0aGUgY29sbGVjdGlvbiB0byBhdm9pZCByZWR1bmRh
bnQgbGVuZ3RoIGNhbGN1bGF0aW9ucy4KKworICAgICAgICAqIGRvbS9EeW5hbWljTm9kZUxpc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6c2V0SXRlbUNh
Y2hlKTogQWRkIGEgRklYTUUuCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6aXRlbUFmdGVyKTogUmVndWxhciBIVE1M
Q29sbGVjdGlvbiBkb2Vzbid0IGhhdmUgdXNlcyBlbGVtZW50cyBhcnJheSBzbworICAgICAgICBh
c3NlcnQgdGhhdCBvZmZzZXRJbkFycmF5IGlzIGFsd2F5cyAwLgorICAgICAgICAoV2ViQ29yZSk6
IFJlbW92ZWQgY2FsY0xlbmd0aC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjps
ZW5ndGgpOiBSZXdyaXR0ZW4uIFRoZSBhbGdvcml0aG0gaXMgYXMgZm9sbG93czoKKyAgICAgICAg
V2hlbiB0aGVyZSBpcyBubyBpdGVtIGNhY2hlLCB3ZSBsb29rIGZvciB0aGUgZmlyc3QgaXRlbSBi
eSBjYWxsaW5nIGl0ZW0oMCkuIElmIGl0ZW0oMCkgcmV0dXJucyBudWxsLAorICAgICAgICB0aGVu
IGl0IG11c3QgaGF2ZSBzZXQgdGhlIGxlbmd0aCBjYWNoZSBzbyBiYWlsIG91dC4gSWYgdGhlIHBy
ZXZpb3VzIHN0ZXAgZGlkbid0IGJhaWwgb3V0LCB0aGVuCisgICAgICAgIHRoZSBpdGVtIGNhY2hl
IGlzIHZhbGlkIGFuZCBub3QgbnVsbCAoc2VlIGFib3ZlKSwgc28gY291bnQgdGhlIG51bWJlciBv
ZiByZW1haW5pbmcgaXRlbXMgaW4gY29sbGVjdGlvbgorICAgICAgICBzdGFydGluZyBhdCB0aGUg
Y2FjaGVkIGl0ZW0ncyBvZmZzZXQgKyAxLgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rp
b246Oml0ZW0pOiBBdm9pZCBjYWxsaW5nIHNldEl0ZW1DYWNoZSB3aXRoIG51bGwuIFdoZW4gdGhl
IGZpcnN0IGl0ZW0gaXMgbnVsbCwKKyAgICAgICAgc2V0IHRoZSBsZW5ndGggY2FjaGUgaW5zdGVh
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjppdGVtQWZ0ZXJDYWNoZWRJdGVt
KTogRXh0cmFjdGVkIGZyb20gSFRNTENvbGxlY3Rpb25XaXRoQXJyYXlTdG9yYWdlOjppdGVtLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbSk6IFBhc3MgaW4gYXJy
YXlPZmZzZXQgdG8gaXRlbUFmdGVyLiBOb3RlIHRoaXMgdmFyaWFibGUgaXMgbmV2ZXIKKyAgICAg
ICAgdXNlZCBzaW5jZSBvbmx5IEhUTUxGb3JtQ29sbGVjdGlvbiBhbmQgSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uIHVzZSBhcnJheSBvZmZzZXRzIGJ1dCB0aGV5IG92ZXJyaWRlCisgICAgICAgIHRo
aXMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFt
ZUNhY2hlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAg
ICAoSFRNTENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbGxlY3Rpb24uY3BwOiBSZW1vdmVkIGNhbGNMZW5ndGgoKS4gRXZlbiB0aG91Z2gg
dGhpcyBmdW5jdGlvbiBkaWRuJ3QgaXRlcmF0ZSBvdmVyCisgICAgICAgIHRoZSBjb2xsZWN0aW9u
IGRpcmVjdGx5LCBIVE1MRm9ybUVsZW1lbnQ6Omxlbmd0aCBhbmQgSFRNTEZpZWxkU2V0RWxlbWVu
dDo6bGVuZ3RoIGRpZCBzbyB3ZSdyZSBub3QKKyAgICAgICAgcmVncmVzc2luZyBhbnkgcGVyZm9y
bWFuY2UgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29sbGVjdGlvbjo6SFRNTEZv
cm1Db2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29sbGVjdGlvbjo6aXRl
bUFmdGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oOgorICAgICAgICAo
SFRNTEZvcm1Db2xsZWN0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZUNvbGxlY3Rpb246Oml0ZW1BZnRlcik6Cisg
ICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaDoKKyAgICAgICAgKEhUTUxOYW1lQ29s
bGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwOiBS
ZW1vdmVkIGNhbGNMZW5ndGgoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbjo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6aXRlbUFmdGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGh0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmg6CisgICAgICAgIChIVE1M
UHJvcGVydGllc0NvbGxlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb246Oml0
ZW1BZnRlcik6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOgorICAg
ICAgICAoSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24pOgorCiAyMDEyLTA3LTEyICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIExldCBYQ29kZSBoYXZlIGl0cyBvd24g
d2F5LgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuaAkocmV2aXNpb24gMTIy
NTAzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw2ICs2NCw3IEBAIHByb3RlY3RlZDoKICAgICB9CiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldEl0ZW1DYWNoZShOb2RlKiBpdGVtLCB1bnNpZ25lZCBvZmZzZXQpIGNvbnN0CiAg
ICAgeworICAgICAgICAvLyBGSVhNRTogQXNzZXJ0IHRoYXQgaXRlbSBpcyBub3QgbnVsbCBvbmNl
IHdlJ3ZlIHVwZGF0ZWQgRHluYW1pY05vZGVMaXN0LgogICAgICAgICBtX2NhY2hlZEl0ZW0gPSBp
dGVtOwogICAgICAgICBtX2NhY2hlZEl0ZW1PZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIG1faXNJ
dGVtQ2FjaGVWYWxpZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xs
ZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmNwcAkocmV2aXNpb24gMTIyNTAzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29s
bGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw4ICsxODAsOSBAQCBzdGF0aWMgTm9k
ZSogbmV4dE5vZGVPclNpYmxpbmcoTm9kZSogYmFzCiAgICAgcmV0dXJuIGluY2x1ZGVDaGlsZHJl
biA/IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoYmFzZSkgOiBub2RlLT50cmF2ZXJzZU5leHRTaWJs
aW5nKGJhc2UpOwogfQogCi1FbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6aXRlbUFmdGVyKE5vZGUq
IHByZXZpb3VzKSBjb25zdAorRWxlbWVudCogSFRNTENvbGxlY3Rpb246Oml0ZW1BZnRlcih1bnNp
Z25lZCYgb2Zmc2V0SW5BcnJheSwgRWxlbWVudCogcHJldmlvdXMpIGNvbnN0CiB7CisgICAgQVNT
RVJUX1VOVVNFRChvZmZzZXRJbkFycmF5LCAhb2Zmc2V0SW5BcnJheSk7CiAgICAgTm9kZSogY3Vy
cmVudDsKICAgICBpZiAoIXByZXZpb3VzKQogICAgICAgICBjdXJyZW50ID0gbV9iYXNlLT5maXJz
dENoaWxkKCk7CkBAIC0xOTksNDQgKzIwMCwyOSBAQCBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6
aXRlbUFmdGVyKE5vZGUqCiAgICAgcmV0dXJuIDA7CiB9CiAKLXVuc2lnbmVkIEhUTUxDb2xsZWN0
aW9uOjpjYWxjTGVuZ3RoKCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBsZW4gPSAwOwotICAgIGZv
ciAoRWxlbWVudCogY3VycmVudCA9IGl0ZW1BZnRlcigwKTsgY3VycmVudDsgY3VycmVudCA9IGl0
ZW1BZnRlcihjdXJyZW50KSkKLSAgICAgICAgKytsZW47Ci0gICAgcmV0dXJuIGxlbjsKLX0KLQot
Ly8gc2luY2UgdGhlIGNvbGxlY3Rpb25zIGFyZSB0byBiZSAibGl2ZSIsIHdlIGhhdmUgdG8gZG8g
dGhlCi0vLyBjYWxjdWxhdGlvbiBldmVyeSB0aW1lIGlmIGFueXRoaW5nIGhhcyBjaGFuZ2VkCiB1
bnNpZ25lZCBIVE1MQ29sbGVjdGlvbjo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICBpbnZhbGlkYXRl
Q2FjaGVJZk5lZWRlZCgpOwotICAgIGlmICghaXNMZW5ndGhDYWNoZVZhbGlkKCkpCi0gICAgICAg
IHNldExlbmd0aENhY2hlKGNhbGNMZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGNhY2hlZExlbmd0aCgp
OwotfQorICAgIGlmIChpc0xlbmd0aENhY2hlVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGNhY2hl
ZExlbmd0aCgpOwogCi1Ob2RlKiBIVE1MQ29sbGVjdGlvbjo6aXRlbSh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKLXsKLSAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOwotICAgIGlmIChpc0l0ZW1D
YWNoZVZhbGlkKCkgJiYgY2FjaGVkSXRlbU9mZnNldCgpID09IGluZGV4KQotICAgICAgICByZXR1
cm4gY2FjaGVkSXRlbSgpOwotICAgIGlmIChpc0xlbmd0aENhY2hlVmFsaWQoKSAmJiBjYWNoZWRM
ZW5ndGgoKSA8PSBpbmRleCkKKyAgICBpZiAoIWlzSXRlbUNhY2hlVmFsaWQoKSAmJiAhaXRlbSgw
KSkgeworICAgICAgICBBU1NFUlQoaXNMZW5ndGhDYWNoZVZhbGlkKCkpOwogICAgICAgICByZXR1
cm4gMDsKLSAgICBpZiAoIWlzSXRlbUNhY2hlVmFsaWQoKSB8fCBjYWNoZWRJdGVtT2Zmc2V0KCkg
PiBpbmRleCkgewotICAgICAgICBzZXRJdGVtQ2FjaGUoaXRlbUFmdGVyKDApLCAwKTsKLSAgICAg
ICAgaWYgKCFjYWNoZWRJdGVtKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAg
Tm9kZSogZSA9IGNhY2hlZEl0ZW0oKTsKLSAgICBmb3IgKHVuc2lnbmVkIHBvcyA9IGNhY2hlZEl0
ZW1PZmZzZXQoKTsgZSAmJiBwb3MgPCBpbmRleDsgcG9zKyspCi0gICAgICAgIGUgPSBpdGVtQWZ0
ZXIoZSk7Ci0gICAgc2V0SXRlbUNhY2hlKGUsIGluZGV4KTsKLSAgICByZXR1cm4gY2FjaGVkSXRl
bSgpOworCisgICAgQVNTRVJUKGlzSXRlbUNhY2hlVmFsaWQoKSk7CisgICAgQVNTRVJUKGNhY2hl
ZEl0ZW0oKSk7CisgICAgdW5zaWduZWQgb2Zmc2V0ID0gY2FjaGVkSXRlbU9mZnNldCgpOworICAg
IGRvIHsKKyAgICAgICAgb2Zmc2V0Kys7CisgICAgfSB3aGlsZSAoaXRlbUFmdGVyQ2FjaGVkSXRl
bShvZmZzZXQpKTsKKworICAgIHNldExlbmd0aENhY2hlKG9mZnNldCk7CisgICAgcmV0dXJuIG9m
ZnNldDsKIH0KIAotTm9kZSogSFRNTENvbGxlY3Rpb25XaXRoQXJyYXlTdG9yYWdlOjppdGVtKHVu
c2lnbmVkIGluZGV4KSBjb25zdAorTm9kZSogSFRNTENvbGxlY3Rpb246Oml0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0CiB7CiAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKICAgICBpZiAo
aXNJdGVtQ2FjaGVWYWxpZCgpICYmIGNhY2hlZEl0ZW1PZmZzZXQoKSA9PSBpbmRleCkKQEAgLTI1
MiwyMyArMjM4LDMzIEBAIE5vZGUqIEhUTUxDb2xsZWN0aW9uV2l0aEFycmF5U3RvcmFnZTo6aXQK
IAogICAgIGlmICghaXNJdGVtQ2FjaGVWYWxpZCgpIHx8IGNhY2hlZEl0ZW1PZmZzZXQoKSA+IGlu
ZGV4KSB7CiAgICAgICAgIHVuc2lnbmVkIG9mZnNldEluQXJyYXkgPSAwOwotICAgICAgICBzZXRJ
dGVtQ2FjaGUoaXRlbUluQXJyYXlBZnRlcihvZmZzZXRJbkFycmF5LCAwKSwgMCwgMCk7Ci0gICAg
ICAgIEFTU0VSVChpc0l0ZW1DYWNoZVZhbGlkKCkpOwotICAgICAgICBpZiAoIWNhY2hlZEl0ZW0o
KSB8fCBjYWNoZWRJdGVtT2Zmc2V0KCkgPT0gaW5kZXgpCisgICAgICAgIE5vZGUqIGZpcnN0SXRl
bSA9IGl0ZW1BZnRlcihvZmZzZXRJbkFycmF5LCAwKTsKKyAgICAgICAgaWYgKCFmaXJzdEl0ZW0p
IHsKKyAgICAgICAgICAgIHNldExlbmd0aENhY2hlKDApOworICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIH0KKyAgICAgICAgc2V0SXRlbUNhY2hlKGZpcnN0SXRlbSwgMCwgb2Zmc2V0SW5B
cnJheSk7CisgICAgICAgIEFTU0VSVCghY2FjaGVkSXRlbU9mZnNldCgpKTsKKyAgICAgICAgaWYg
KCFpbmRleCkKICAgICAgICAgICAgIHJldHVybiBjYWNoZWRJdGVtKCk7CiAgICAgfQogCisgICAg
cmV0dXJuIGl0ZW1BZnRlckNhY2hlZEl0ZW0oaW5kZXgpOworfQorCitFbGVtZW50KiBIVE1MQ29s
bGVjdGlvbjo6aXRlbUFmdGVyQ2FjaGVkSXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKICAg
ICB1bnNpZ25lZCBjdXJyZW50SW5kZXggPSBjYWNoZWRJdGVtT2Zmc2V0KCk7Ci0gICAgQVNTRVJU
KGNhY2hlZEl0ZW0oKS0+aXNIVE1MRWxlbWVudCgpKTsKLSAgICBIVE1MRWxlbWVudCogY3VycmVu
dEl0ZW0gPSB0b0hUTUxFbGVtZW50KGNhY2hlZEl0ZW0oKSk7CisgICAgQVNTRVJUKGNhY2hlZEl0
ZW0oKS0+aXNFbGVtZW50Tm9kZSgpKTsKKyAgICBFbGVtZW50KiBjdXJyZW50SXRlbSA9IHRvRWxl
bWVudChjYWNoZWRJdGVtKCkpOwogICAgIEFTU0VSVChjdXJyZW50SW5kZXggPCBpbmRleCk7CiAK
ICAgICB1bnNpZ25lZCBvZmZzZXRJbkFycmF5ID0gY2FjaGVkRWxlbWVudHNBcnJheU9mZnNldCgp
OwotICAgIHdoaWxlICgoY3VycmVudEl0ZW0gPSBpdGVtSW5BcnJheUFmdGVyKG9mZnNldEluQXJy
YXksIGN1cnJlbnRJdGVtKSkpIHsKKyAgICB3aGlsZSAoKGN1cnJlbnRJdGVtID0gaXRlbUFmdGVy
KG9mZnNldEluQXJyYXksIGN1cnJlbnRJdGVtKSkpIHsKICAgICAgICAgY3VycmVudEluZGV4Kys7
CiAgICAgICAgIGlmIChjdXJyZW50SW5kZXggPT0gaW5kZXgpIHsKICAgICAgICAgICAgIHNldEl0
ZW1DYWNoZShjdXJyZW50SXRlbSwgY3VycmVudEluZGV4LCBvZmZzZXRJbkFycmF5KTsKLSAgICAg
ICAgICAgIHJldHVybiBjYWNoZWRJdGVtKCk7CisgICAgICAgICAgICByZXR1cm4gY3VycmVudEl0
ZW07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMxNCw4ICszMTAsOSBAQCBOb2RlKiBIVE1MQ29s
bGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0CiAgICAgLy8gdGhhdCBhcmUgYWxsb3dlZCBhIG5h
bWUgYXR0cmlidXRlLgogICAgIGludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7CiAKKyAgICB1bnNp
Z25lZCBhcnJheU9mZnNldCA9IDA7CiAgICAgdW5zaWduZWQgaSA9IDA7Ci0gICAgZm9yIChFbGVt
ZW50KiBlID0gaXRlbUFmdGVyKDApOyBlOyBlID0gaXRlbUFmdGVyKGUpKSB7CisgICAgZm9yIChF
bGVtZW50KiBlID0gaXRlbUFmdGVyKGFycmF5T2Zmc2V0LCAwKTsgZTsgZSA9IGl0ZW1BZnRlcihh
cnJheU9mZnNldCwgZSkpIHsKICAgICAgICAgaWYgKGNoZWNrRm9yTmFtZU1hdGNoKGUsIC8qIGNo
ZWNrTmFtZSAqLyBmYWxzZSwgbmFtZSkpIHsKICAgICAgICAgICAgIHNldEl0ZW1DYWNoZShlLCBp
KTsKICAgICAgICAgICAgIHJldHVybiBlOwpAQCAtMzI0LDcgKzMyMSw3IEBAIE5vZGUqIEhUTUxD
b2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXQKICAgICB9CiAKICAgICBpID0gMDsKLSAgICBm
b3IgKEVsZW1lbnQqIGUgPSBpdGVtQWZ0ZXIoMCk7IGU7IGUgPSBpdGVtQWZ0ZXIoZSkpIHsKKyAg
ICBmb3IgKEVsZW1lbnQqIGUgPSBpdGVtQWZ0ZXIoYXJyYXlPZmZzZXQsIDApOyBlOyBlID0gaXRl
bUFmdGVyKGFycmF5T2Zmc2V0LCBlKSkgewogICAgICAgICBpZiAoY2hlY2tGb3JOYW1lTWF0Y2go
ZSwgLyogY2hlY2tOYW1lICovIHRydWUsIG5hbWUpKSB7CiAgICAgICAgICAgICBzZXRJdGVtQ2Fj
aGUoZSwgaSk7CiAgICAgICAgICAgICByZXR1cm4gZTsKQEAgLTM0MSw3ICszMzgsOCBAQCB2b2lk
IEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lQ2FjaGUoKSBjCiAgICAgaWYgKGhhc05hbWVDYWNo
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVt
QWZ0ZXIoMCk7IGVsZW1lbnQ7IGVsZW1lbnQgPSBpdGVtQWZ0ZXIoZWxlbWVudCkpIHsKKyAgICB1
bnNpZ25lZCBhcnJheU9mZnNldCA9IDA7CisgICAgZm9yIChFbGVtZW50KiBlbGVtZW50ID0gaXRl
bUFmdGVyKGFycmF5T2Zmc2V0LCAwKTsgZWxlbWVudDsgZWxlbWVudCA9IGl0ZW1BZnRlcihhcnJh
eU9mZnNldCwgZWxlbWVudCkpIHsKICAgICAgICAgaWYgKCFlbGVtZW50LT5pc0hUTUxFbGVtZW50
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgSFRNTEVsZW1lbnQqIGUgPSB0b0hU
TUxFbGVtZW50KGVsZW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24u
aAkocmV2aXNpb24gMTIyNTAzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC02Myw3ICs2Myw2IEBAIHByb3RlY3RlZDoKICAgICAgICAg
bV9oYXNOYW1lQ2FjaGUgPSBmYWxzZTsKICAgICB9CiAKLSAgICB1c2luZyBEeW5hbWljTm9kZUxp
c3RDYWNoZUJhc2U6OnNldEl0ZW1DYWNoZTsKICAgICB2b2lkIHNldEl0ZW1DYWNoZShOb2RlKiBp
dGVtLCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGVsZW1lbnRzQXJyYXlPZmZzZXQpIGNvbnN0
CiAgICAgewogICAgICAgICBzZXRJdGVtQ2FjaGUoaXRlbSwgb2Zmc2V0KTsKQEAgLTg5LDYgKzg4
LDcgQEAgcHJpdmF0ZToKICAgICB1c2luZyBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6OmlzUm9v
dGVkQXREb2N1bWVudDsKICAgICB1c2luZyBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6OnNob3Vs
ZEludmFsaWRhdGVPbkF0dHJpYnV0ZUNoYW5nZTsKICAgICB1c2luZyBEeW5hbWljTm9kZUxpc3RD
YWNoZUJhc2U6OmNsZWFyQ2FjaGU7CisgICAgdXNpbmcgRHluYW1pY05vZGVMaXN0Q2FjaGVCYXNl
OjpzZXRJdGVtQ2FjaGU7CiAKICAgICBtdXRhYmxlIE5vZGVDYWNoZU1hcCBtX2lkQ2FjaGU7CiAg
ICAgbXV0YWJsZSBOb2RlQ2FjaGVNYXAgbV9uYW1lQ2FjaGU7CkBAIC0xMDgsNyArMTA4LDcgQEAg
cHVibGljOgogCiAgICAgLy8gRE9NIEFQSQogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0Owot
ICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgTm9kZSog
aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgdmlydHVhbCBOb2RlKiBuYW1lZEl0ZW0o
Y29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPE5vZGVMaXN0
PiB0YWdzKGNvbnN0IFN0cmluZyYpOwogCkBAIC0xNDMsMzAgKzE0MywxNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgSFRNTENvbGxlY3Rpb24oTm9kZSogYmFzZSwgQ29sbGVjdGlvblR5cGUpOwogCiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVDYWNoZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgRWxlbWVu
dCogaXRlbUFmdGVyKE5vZGUqKSBjb25zdDsKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW1BZnRl
cih1bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwgRWxlbWVudCopIGNvbnN0OwogCiBwcml2YXRlOgog
ICAgIGJvb2wgY2hlY2tGb3JOYW1lTWF0Y2goRWxlbWVudCosIGJvb2wgY2hlY2tOYW1lLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogCi0gICAgdmlydHVhbCB1bnNpZ25lZCBjYWxj
TGVuZ3RoKCkgY29uc3Q7Ci0KKyAgICBFbGVtZW50KiBpdGVtQWZ0ZXJDYWNoZWRJdGVtKHVuc2ln
bmVkKSBjb25zdDsKICAgICBib29sIGlzQWNjZXB0YWJsZUVsZW1lbnQoRWxlbWVudCopIGNvbnN0
OwogCiAgICAgUmVmUHRyPE5vZGU+IG1fYmFzZTsKIH07CiAKLWNsYXNzIEhUTUxDb2xsZWN0aW9u
V2l0aEFycmF5U3RvcmFnZSA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7Ci1wdWJsaWM6Ci0gICAg
SFRNTENvbGxlY3Rpb25XaXRoQXJyYXlTdG9yYWdlKE5vZGUqIGJhc2UsIENvbGxlY3Rpb25UeXBl
IHR5cGUpCi0gICAgICAgIDogSFRNTENvbGxlY3Rpb24oYmFzZSwgdHlwZSkKLSAgICB7IH0KLQot
ICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QgT1ZFUlJJREU7Ci0K
LXByaXZhdGU6Ci0gICAgdmlydHVhbCBIVE1MRWxlbWVudCogaXRlbUluQXJyYXlBZnRlcih1bnNp
Z25lZCYgb2Zmc2V0SW5BcnJheSwgSFRNTEVsZW1lbnQqIHByZXZpb3VzSXRlbSkgY29uc3QgPSAw
OwotfTsKLQogfSAvLyBuYW1lc3BhY2UKIAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMjI1MDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDcgKzM3LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIC8vIGNhbGN1bGF0aW9uIGV2
ZXJ5IHRpbWUgaWYgYW55dGhpbmcgaGFzIGNoYW5nZWQuCiAKIEhUTUxGb3JtQ29sbGVjdGlvbjo6
SFRNTEZvcm1Db2xsZWN0aW9uKEVsZW1lbnQqIGJhc2UpCi0gICAgOiBIVE1MQ29sbGVjdGlvbldp
dGhBcnJheVN0b3JhZ2UoYmFzZSwgRm9ybUNvbnRyb2xzKQorICAgIDogSFRNTENvbGxlY3Rpb24o
YmFzZSwgRm9ybUNvbnRyb2xzKQogewogICAgIEFTU0VSVChiYXNlLT5oYXNUYWdOYW1lKGZvcm1U
YWcpIHx8IGJhc2UtPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKIH0KQEAgLTY3LDE1ICs2Nyw3
IEBAIGNvbnN0IFZlY3RvcjxIVE1MSW1hZ2VFbGVtZW50Kj4mIEhUTUxGb3IKICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8SFRNTEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+aW1hZ2VFbGVtZW50cygpOwog
fQogCi11bnNpZ25lZCBIVE1MRm9ybUNvbGxlY3Rpb246OmNhbGNMZW5ndGgoKSBjb25zdAotewot
ICAgIEFTU0VSVChiYXNlKCktPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZSgpLT5oYXNUYWdO
YW1lKGZpZWxkc2V0VGFnKSk7Ci0gICAgaWYgKGJhc2UoKS0+aGFzVGFnTmFtZShmb3JtVGFnKSkK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtRWxlbWVudCo+KGJhc2UoKSktPmxl
bmd0aCgpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRmllbGRTZXRFbGVtZW50Kj4oYmFz
ZSgpKS0+bGVuZ3RoKCk7Ci19Ci0KLUhUTUxFbGVtZW50KiBIVE1MRm9ybUNvbGxlY3Rpb246Oml0
ZW1JbkFycmF5QWZ0ZXIodW5zaWduZWQmIG9mZnNldCwgSFRNTEVsZW1lbnQqIHByZXZpb3VzSXRl
bSkgY29uc3QKK0VsZW1lbnQqIEhUTUxGb3JtQ29sbGVjdGlvbjo6aXRlbUFmdGVyKHVuc2lnbmVk
JiBvZmZzZXQsIEVsZW1lbnQqIHByZXZpb3VzSXRlbSkgY29uc3QKIHsKICAgICBjb25zdCBWZWN0
b3I8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Kj4mIGVsZW1lbnRzQXJyYXkgPSBmb3JtQ29udHJvbEVs
ZW1lbnRzKCk7CiAgICAgaWYgKHByZXZpb3VzSXRlbSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRm9ybUNvbGxlY3Rpb24uaAkocmV2aXNpb24gMTIyNTAzKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQs
NyBAQCBjbGFzcyBRdWFsaWZpZWROYW1lOwogLy8gVGhpcyBjbGFzcyBpcyBqdXN0IGEgYmlnIGhh
Y2sgdG8gZmluZCBmb3JtIGVsZW1lbnRzIGV2ZW4gaW4gbWFsZm9ybWVkIEhUTUwgZWxlbWVudHMu
CiAvLyBUaGUgZmFtb3VzIDx0YWJsZT48dHI+PGZvcm0+PHRkPiBwcm9ibGVtLgogCi1jbGFzcyBI
VE1MRm9ybUNvbGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb25XaXRoQXJyYXlTdG9yYWdl
IHsKK2NsYXNzIEhUTUxGb3JtQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTEZvcm1Db2xsZWN0aW9uPiBjcmVhdGUo
RWxlbWVudCopOwogCkBAIC00NiwxMSArNDYsMTAgQEAgcHJpdmF0ZToKICAgICBIVE1MRm9ybUNv
bGxlY3Rpb24oRWxlbWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZU5hbWVDYWNoZSgp
IGNvbnN0OwotICAgIHZpcnR1YWwgdW5zaWduZWQgY2FsY0xlbmd0aCgpIGNvbnN0OwogCiAgICAg
Y29uc3QgVmVjdG9yPEZvcm1Bc3NvY2lhdGVkRWxlbWVudCo+JiBmb3JtQ29udHJvbEVsZW1lbnRz
KCkgY29uc3Q7CiAgICAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1lbnQqPiYgZm9ybUltYWdl
RWxlbWVudHMoKSBjb25zdDsKLSAgICBIVE1MRWxlbWVudCogaXRlbUluQXJyYXlBZnRlcih1bnNp
Z25lZCYgb2Zmc2V0LCBIVE1MRWxlbWVudCogcHJldmlvdXNJdGVtKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwg
RWxlbWVudCopIGNvbnN0IE9WRVJSSURFOwogfTsKIAogfSAvL25hbWVzcGFjZQpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xsZWN0aW9uLmNwcAkocmV2aXNpb24gMTIyNTAz
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw4ICs0OSw5IEBAIEhUTUxOYW1lQ29sbGVjdGlvbjo6fkhUTUxOYW1lQ29s
bGVjdGlvbigKICAgICAgICAgc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihiYXNlKCkpLT5yZW1vdmVE
b2N1bWVudE5hbWVkSXRlbUNhY2hlKHRoaXMsIG1fbmFtZSk7CiB9CiAKLUVsZW1lbnQqIEhUTUxO
YW1lQ29sbGVjdGlvbjo6aXRlbUFmdGVyKE5vZGUqIHByZXZpb3VzKSBjb25zdAorRWxlbWVudCog
SFRNTE5hbWVDb2xsZWN0aW9uOjppdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldEluQXJyYXksIEVs
ZW1lbnQqIHByZXZpb3VzKSBjb25zdAogeworICAgIEFTU0VSVF9VTlVTRUQob2Zmc2V0SW5BcnJh
eSwgIW9mZnNldEluQXJyYXkpOwogICAgIEFTU0VSVChwcmV2aW91cyAhPSBiYXNlKCkpOwogCiAg
ICAgTm9kZSogY3VycmVudDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE5hbWVDb2xs
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxl
Y3Rpb24uaAkocmV2aXNpb24gMTIyNTAzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFt
ZUNvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIEhUTUxOYW1lQ29sbGVjdGlvbihEb2N1bWVudCosIENvbGxlY3Rpb25UeXBl
LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwogCi0gICAgdmlydHVhbCBFbGVtZW50KiBpdGVt
QWZ0ZXIoTm9kZSopIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRWxlbWVudCogaXRlbUFm
dGVyKHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5LCBFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7CiAK
ICAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5jcHAJKHJldmlzaW9uIDEyMjUwMykKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCBQYXNzUmVmUHRyPEhUTUxQcm9wZXJ0aWVzQ29sbGVj
dGlvbj4gSFRNCiB9CiAKIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6SFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uKE5vZGUqIGl0ZW1Ob2RlKQotICAgIDogSFRNTENvbGxlY3Rpb25XaXRoQXJyYXlT
dG9yYWdlKGl0ZW1Ob2RlLCBJdGVtUHJvcGVydGllcykKKyAgICA6IEhUTUxDb2xsZWN0aW9uKGl0
ZW1Ob2RlLCBJdGVtUHJvcGVydGllcykKICAgICAsIG1faGFzUHJvcGVydHlOYW1lQ2FjaGUoZmFs
c2UpCiAgICAgLCBtX2hhc0l0ZW1SZWZFbGVtZW50cyhmYWxzZSkKIHsKQEAgLTExMiwxMCArMTEy
LDEwIEBAIHN0YXRpYyBOb2RlKiBuZXh0Tm9kZVdpdGhQcm9wZXJ0eShOb2RlKiAKICAgICAgICAg
ICAgID8gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShiYXNlKSA6IG5vZGUtPnRyYXZlcnNlTmV4dFNp
YmxpbmcoYmFzZSk7CiB9CiAKLUhUTUxFbGVtZW50KiBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246
Oml0ZW1JbkFycmF5QWZ0ZXIodW5zaWduZWQmIG9mZnNldEluQXJyYXksIEhUTUxFbGVtZW50KiBw
cmV2aW91c0l0ZW0pIGNvbnN0CitFbGVtZW50KiBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246Oml0
ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwgRWxlbWVudCogcHJldmlvdXNJdGVtKSBj
b25zdAogewogICAgIHdoaWxlIChvZmZzZXRJbkFycmF5IDwgbV9pdGVtUmVmRWxlbWVudHMuc2l6
ZSgpKSB7Ci0gICAgICAgIGlmIChIVE1MRWxlbWVudCogbmV4dCA9IGl0ZW1BZnRlcihtX2l0ZW1S
ZWZFbGVtZW50c1tvZmZzZXRJbkFycmF5XSwgcHJldmlvdXNJdGVtKSkKKyAgICAgICAgaWYgKEVs
ZW1lbnQqIG5leHQgPSBpdGVtQWZ0ZXIobV9pdGVtUmVmRWxlbWVudHNbb2Zmc2V0SW5BcnJheV0s
IHByZXZpb3VzSXRlbSkpCiAgICAgICAgICAgICByZXR1cm4gbmV4dDsKICAgICAgICAgb2Zmc2V0
SW5BcnJheSsrOwogICAgICAgICBwcmV2aW91c0l0ZW0gPSAwOwpAQCAtMTIzLDcgKzEyMyw3IEBA
IEhUTUxFbGVtZW50KiBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246OmkKICAgICByZXR1cm4gMDsK
IH0KIAotSFRNTEVsZW1lbnQqIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6aXRlbUFmdGVyKEhU
TUxFbGVtZW50KiBiYXNlLCBIVE1MRWxlbWVudCogcHJldmlvdXMpIGNvbnN0CitIVE1MRWxlbWVu
dCogSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjppdGVtQWZ0ZXIoSFRNTEVsZW1lbnQqIGJhc2Us
IEVsZW1lbnQqIHByZXZpb3VzKSBjb25zdAogewogICAgIE5vZGUqIGN1cnJlbnQ7CiAgICAgY3Vy
cmVudCA9IHByZXZpb3VzID8gbmV4dE5vZGVXaXRoUHJvcGVydHkoYmFzZSwgcHJldmlvdXMpIDog
YmFzZTsKQEAgLTE0MCwxOSArMTQwLDYgQEAgSFRNTEVsZW1lbnQqIEhUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbjo6aQogICAgIHJldHVybiAwOwogfQogCi11bnNpZ25lZCBIVE1MUHJvcGVydGllc0Nv
bGxlY3Rpb246OmNhbGNMZW5ndGgoKSBjb25zdAotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IDA7
Ci0gICAgdXBkYXRlUmVmRWxlbWVudHMoKTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2l0ZW1SZWZFbGVtZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBmb3IgKEhUTUxFbGVt
ZW50KiBlbGVtZW50ID0gaXRlbUFmdGVyKG1faXRlbVJlZkVsZW1lbnRzW2ldLCAwKTsgZWxlbWVu
dDsgZWxlbWVudCA9IGl0ZW1BZnRlcihtX2l0ZW1SZWZFbGVtZW50c1tpXSwgZWxlbWVudCkpCi0g
ICAgICAgICAgICArK2xlbmd0aDsKLSAgICB9Ci0KLSAgICByZXR1cm4gbGVuZ3RoOwotfQotCiB2
b2lkIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6dXBkYXRlTmFtZUNhY2hlKCkgY29uc3QKIHsK
ICAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMjI1MDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MCw3ICs0MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRE9NU3Ry
aW5nTGlzdDsKIAotY2xhc3MgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uIDogcHVibGljIEhUTUxD
b2xsZWN0aW9uV2l0aEFycmF5U3RvcmFnZSB7CitjbGFzcyBIVE1MUHJvcGVydGllc0NvbGxlY3Rp
b24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb24gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbj4gY3JlYXRlKE5vZGUqKTsKICAgICB2aXJ0dWFs
IH5IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24oKTsKQEAgLTYzLDEzICs2MywxMCBAQCBwdWJsaWM6
CiBwcml2YXRlOgogICAgIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbihOb2RlKik7CiAKLSAgICB2
aXJ0dWFsIHVuc2lnbmVkIGNhbGNMZW5ndGgoKSBjb25zdCBPVkVSUklERTsKLQogICAgIE5vZGUq
IGZpbmRSZWZFbGVtZW50cyhOb2RlKiBwcmV2aW91cykgY29uc3Q7CiAKLSAgICB2b2lkIGNhY2hl
Rmlyc3RJdGVtKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBIVE1MRWxlbWVudCogaXRlbUluQXJyYXlB
ZnRlcih1bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwgSFRNTEVsZW1lbnQqIHByZXZpb3VzSXRlbUlu
U2FtZUFycmF5RWxlbWVudCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgSFRNTEVsZW1lbnQqIGl0ZW1B
ZnRlcihIVE1MRWxlbWVudCogYmFzZSwgSFRNTEVsZW1lbnQqIHByZXZpb3VzKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW1BZnRlcih1bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwgRWxl
bWVudCopIGNvbnN0IE9WRVJSSURFOworICAgIEhUTUxFbGVtZW50KiBpdGVtQWZ0ZXIoSFRNTEVs
ZW1lbnQqIGJhc2UsIEVsZW1lbnQqIHByZXZpb3VzKSBjb25zdDsKIAogICAgIHZvaWQgdXBkYXRl
TmFtZUNhY2hlKCkgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxl
Um93c0NvbGxlY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhYmxlUm93c0NvbGxlY3Rpb24uY3BwCShyZXZpc2lvbiAxMjI1MDMpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTYyLDggKzE2Miw5IEBAIFBhc3NSZWZQdHI8SFRNTFRhYmxlUm93c0NvbGxlY3Rpb24+IEhUTUwK
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uKHRhYmxlKSk7
CiB9CiAKLUVsZW1lbnQqIEhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uOjppdGVtQWZ0ZXIoTm9kZSog
cHJldmlvdXMpIGNvbnN0CitFbGVtZW50KiBIVE1MVGFibGVSb3dzQ29sbGVjdGlvbjo6aXRlbUFm
dGVyKHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5LCBFbGVtZW50KiBwcmV2aW91cykgY29uc3QKIHsK
KyAgICBBU1NFUlRfVU5VU0VEKG9mZnNldEluQXJyYXksICFvZmZzZXRJbkFycmF5KTsKICAgICBB
U1NFUlQoIXByZXZpb3VzIHx8IChwcmV2aW91cy0+aXNIVE1MRWxlbWVudCgpICYmIHRvSFRNTEVs
ZW1lbnQocHJldmlvdXMpLT5oYXNMb2NhbE5hbWUodHJUYWcpKSk7CiAgICAgcmV0dXJuIHJvd0Fm
dGVyKHN0YXRpY19jYXN0PEhUTUxUYWJsZUVsZW1lbnQqPihiYXNlKCkpLCBzdGF0aWNfY2FzdDxI
VE1MVGFibGVSb3dFbGVtZW50Kj4ocHJldmlvdXMpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgJKHJldmlzaW9uIDEyMjUwMykKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEhUTUxUYWJsZVJv
d3NDb2xsZWN0aW9uKEVsZW1lbnQqKTsKIAotICAgIHZpcnR1YWwgRWxlbWVudCogaXRlbUFmdGVy
KE5vZGUqKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW1BZnRlcih1
bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwgRWxlbWVudCopIGNvbnN0IE9WRVJSSURFOwogfTsKIAog
fSAvLyBuYW1lc3BhY2UK
</data>
<flag name="commit-queue"
          id="160680"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>152080</attachid>
            <date>2012-07-12 15:30:14 -0700</date>
            <delta_ts>2012-07-12 15:36:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-91144-20120712153345.patch</filename>
            <type>text/plain</type>
            <size>19820</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEyMjUwNSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBACisyMDEyLTA3LTEyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIE1lcmdlIEhUTUxDb2xsZWN0aW9u
V2l0aEFycmF5U3RvcmFnZSBpbnRvIEhUTUxDb2xsZWN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MTE0NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdlZCBIVE1MQ29sbGVjdGlvbldpdGhBcnJh
eVN0b3JhZ2U6Oml0ZW0gaW50byBIVE1MQ29sbGVjdGlvbjo6aXRlbSBhbmQgZ290IHJpZCBvZgor
ICAgICAgICBIVE1MQ29sbGVjdGlvbldpdGhBcnJheVN0b3JhZ2UuIEFsc28gZGUtdmlydHVhbGl6
ZWQgSFRNTENvbGxlY3Rpb246Oml0ZW0gYW5kIEhUTUxDb2xsZWN0aW9uOjpsZW5ndGgKKyAgICAg
ICAgYW5kIG1lcmdlZCBpdGVtSW5BcnJheUFmdGVyIGFuZCBpdGVtQWZ0ZXIuCisKKyAgICAgICAg
SW4gYWRkaXRpb24sIGltcHJvdmVkIHRoZSBhbGdvcml0aG0gaW4gSFRNTENvbGxlY3Rpb246Omxl
bmd0aCB0byB0YWtlIGFkdmFudGFnZSBvZiBpdGVtIGNhY2hlLgorICAgICAgICBJbnN0ZWFkIG9m
IGFsd2F5cyBjb21wdXRpbmcgdGhlIGxlbmd0aCBmcm9tIHRoZSBiZWdpbm5pbmcsIHdlIHN0YXJ0
IHRoZSBzZWFyY2ggZnJvbSB0aGUgY2FjaGVkIGl0ZW0KKyAgICAgICAgc28gdGhhdCBpZiB3ZSdy
ZSBuZWFyIGVuZCBvZiB0aGUgY29sbGVjdGlvbiwgd2UgYXZvaWQgc2lnbmlmaWNhbnQgcG9ydGlv
biBvZiB0aGUgbm9kZSB0cmF2ZXJzYWwuCisKKyAgICAgICAgRnVydGhlcm1vcmUsIG1hZGUgSFRN
TENvbGxlY3Rpb24gYWx3YXlzIGNhbGwgc2V0SXRlbUNhY2hlIHdpdGggYSBub24tbnVsbCBpdGVt
IGFuZCBIVE1MQ29sbGVjdGlvbjo6aXRlbQorICAgICAgICBzZXQgdGhlIGxlbmd0aCBjYWNoZSB3
aGVuIGl0IHJlYWNoZXMgdGhlIGVuZCBvZiB0aGUgY29sbGVjdGlvbiB0byBhdm9pZCByZWR1bmRh
bnQgbGVuZ3RoIGNhbGN1bGF0aW9ucy4KKworICAgICAgICAqIGRvbS9EeW5hbWljTm9kZUxpc3Qu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkR5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6c2V0SXRlbUNh
Y2hlKTogQWRkIGEgRklYTUUuCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6aXRlbUFmdGVyKTogUmVndWxhciBIVE1M
Q29sbGVjdGlvbiBkb2Vzbid0IGhhdmUgdXNlcyBlbGVtZW50cyBhcnJheSBzbworICAgICAgICBh
c3NlcnQgdGhhdCBvZmZzZXRJbkFycmF5IGlzIGFsd2F5cyAwLgorICAgICAgICAoV2ViQ29yZSk6
IFJlbW92ZWQgY2FsY0xlbmd0aC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjps
ZW5ndGgpOiBSZXdyaXR0ZW4uIFRoZSBhbGdvcml0aG0gaXMgYXMgZm9sbG93czoKKyAgICAgICAg
V2hlbiB0aGVyZSBpcyBubyBpdGVtIGNhY2hlLCB3ZSBsb29rIGZvciB0aGUgZmlyc3QgaXRlbSBi
eSBjYWxsaW5nIGl0ZW0oMCkuIElmIGl0ZW0oMCkgcmV0dXJucyBudWxsLAorICAgICAgICB0aGVu
IGl0IG11c3QgaGF2ZSBzZXQgdGhlIGxlbmd0aCBjYWNoZSBzbyBiYWlsIG91dC4gSWYgdGhlIHBy
ZXZpb3VzIHN0ZXAgZGlkbid0IGJhaWwgb3V0LCB0aGVuCisgICAgICAgIHRoZSBpdGVtIGNhY2hl
IGlzIHZhbGlkIGFuZCBub3QgbnVsbCAoc2VlIGFib3ZlKSwgc28gY291bnQgdGhlIG51bWJlciBv
ZiByZW1haW5pbmcgaXRlbXMgaW4gY29sbGVjdGlvbgorICAgICAgICBzdGFydGluZyBhdCB0aGUg
Y2FjaGVkIGl0ZW0ncyBvZmZzZXQgKyAxLgorICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rp
b246Oml0ZW0pOiBBdm9pZCBjYWxsaW5nIHNldEl0ZW1DYWNoZSB3aXRoIG51bGwuIFdoZW4gdGhl
IGZpcnN0IGl0ZW0gaXMgbnVsbCwKKyAgICAgICAgc2V0IHRoZSBsZW5ndGggY2FjaGUgaW5zdGVh
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uOjppdGVtQWZ0ZXJDYWNoZWRJdGVt
KTogRXh0cmFjdGVkIGZyb20gSFRNTENvbGxlY3Rpb25XaXRoQXJyYXlTdG9yYWdlOjppdGVtLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbSk6IFBhc3MgaW4gYXJy
YXlPZmZzZXQgdG8gaXRlbUFmdGVyLiBOb3RlIHRoaXMgdmFyaWFibGUgaXMgbmV2ZXIKKyAgICAg
ICAgdXNlZCBzaW5jZSBvbmx5IEhUTUxGb3JtQ29sbGVjdGlvbiBhbmQgSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uIHVzZSBhcnJheSBvZmZzZXRzIGJ1dCB0aGV5IG92ZXJyaWRlCisgICAgICAgIHRo
aXMgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6dXBkYXRlTmFt
ZUNhY2hlKTogRGl0dG8uCisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5oOgorICAgICAg
ICAoSFRNTENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaHRtbC9I
VE1MRm9ybUNvbGxlY3Rpb24uY3BwOiBSZW1vdmVkIGNhbGNMZW5ndGgoKS4gRXZlbiB0aG91Z2gg
dGhpcyBmdW5jdGlvbiBkaWRuJ3QgaXRlcmF0ZSBvdmVyCisgICAgICAgIHRoZSBjb2xsZWN0aW9u
IGRpcmVjdGx5LCBIVE1MRm9ybUVsZW1lbnQ6Omxlbmd0aCBhbmQgSFRNTEZpZWxkU2V0RWxlbWVu
dDo6bGVuZ3RoIGRpZCBzbyB3ZSdyZSBub3QKKyAgICAgICAgcmVncmVzc2luZyBhbnkgcGVyZm9y
bWFuY2UgaGVyZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29sbGVjdGlvbjo6SFRNTEZv
cm1Db2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGb3JtQ29sbGVjdGlvbjo6aXRl
bUFmdGVyKToKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oOgorICAgICAgICAo
SFRNTEZvcm1Db2xsZWN0aW9uKToKKyAgICAgICAgKiBodG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTmFtZUNvbGxlY3Rpb246Oml0ZW1BZnRlcik6Cisg
ICAgICAgICogaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaDoKKyAgICAgICAgKEhUTUxOYW1lQ29s
bGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwOiBS
ZW1vdmVkIGNhbGNMZW5ndGgoKS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbjo6SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6aXRlbUFmdGVyKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGh0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uLmg6CisgICAgICAgIChIVE1M
UHJvcGVydGllc0NvbGxlY3Rpb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRhYmxlUm93c0NvbGxl
Y3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRhYmxlUm93c0NvbGxlY3Rpb246Oml0
ZW1BZnRlcik6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oOgorICAg
ICAgICAoSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24pOgorCiAyMDEyLTA3LTEyICBSeW9zdWtlIE5p
d2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIExldCBYQ29kZSBoYXZlIGl0cyBvd24g
d2F5LgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9EeW5hbWljTm9kZUxpc3QuaAkocmV2aXNpb24gMTIy
NTAzKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0R5bmFtaWNOb2RlTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw2ICs2NCw3IEBAIHByb3RlY3RlZDoKICAgICB9CiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldEl0ZW1DYWNoZShOb2RlKiBpdGVtLCB1bnNpZ25lZCBvZmZzZXQpIGNvbnN0CiAg
ICAgeworICAgICAgICAvLyBGSVhNRTogQXNzZXJ0IHRoYXQgaXRlbSBpcyBub3QgbnVsbCBvbmNl
IHdlJ3ZlIHVwZGF0ZWQgRHluYW1pY05vZGVMaXN0LgogICAgICAgICBtX2NhY2hlZEl0ZW0gPSBp
dGVtOwogICAgICAgICBtX2NhY2hlZEl0ZW1PZmZzZXQgPSBvZmZzZXQ7CiAgICAgICAgIG1faXNJ
dGVtQ2FjaGVWYWxpZCA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xs
ZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0
aW9uLmNwcAkocmV2aXNpb24gMTIyNTAzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29s
bGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MCw4ICsxODAsOSBAQCBzdGF0aWMgTm9k
ZSogbmV4dE5vZGVPclNpYmxpbmcoTm9kZSogYmFzCiAgICAgcmV0dXJuIGluY2x1ZGVDaGlsZHJl
biA/IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoYmFzZSkgOiBub2RlLT50cmF2ZXJzZU5leHRTaWJs
aW5nKGJhc2UpOwogfQogCi1FbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6aXRlbUFmdGVyKE5vZGUq
IHByZXZpb3VzKSBjb25zdAorRWxlbWVudCogSFRNTENvbGxlY3Rpb246Oml0ZW1BZnRlcih1bnNp
Z25lZCYgb2Zmc2V0SW5BcnJheSwgRWxlbWVudCogcHJldmlvdXMpIGNvbnN0CiB7CisgICAgQVNT
RVJUX1VOVVNFRChvZmZzZXRJbkFycmF5LCAhb2Zmc2V0SW5BcnJheSk7CiAgICAgTm9kZSogY3Vy
cmVudDsKICAgICBpZiAoIXByZXZpb3VzKQogICAgICAgICBjdXJyZW50ID0gbV9iYXNlLT5maXJz
dENoaWxkKCk7CkBAIC0xOTksNDQgKzIwMCwyOSBAQCBFbGVtZW50KiBIVE1MQ29sbGVjdGlvbjo6
aXRlbUFmdGVyKE5vZGUqCiAgICAgcmV0dXJuIDA7CiB9CiAKLXVuc2lnbmVkIEhUTUxDb2xsZWN0
aW9uOjpjYWxjTGVuZ3RoKCkgY29uc3QKLXsKLSAgICB1bnNpZ25lZCBsZW4gPSAwOwotICAgIGZv
ciAoRWxlbWVudCogY3VycmVudCA9IGl0ZW1BZnRlcigwKTsgY3VycmVudDsgY3VycmVudCA9IGl0
ZW1BZnRlcihjdXJyZW50KSkKLSAgICAgICAgKytsZW47Ci0gICAgcmV0dXJuIGxlbjsKLX0KLQot
Ly8gc2luY2UgdGhlIGNvbGxlY3Rpb25zIGFyZSB0byBiZSAibGl2ZSIsIHdlIGhhdmUgdG8gZG8g
dGhlCi0vLyBjYWxjdWxhdGlvbiBldmVyeSB0aW1lIGlmIGFueXRoaW5nIGhhcyBjaGFuZ2VkCiB1
bnNpZ25lZCBIVE1MQ29sbGVjdGlvbjo6bGVuZ3RoKCkgY29uc3QKIHsKICAgICBpbnZhbGlkYXRl
Q2FjaGVJZk5lZWRlZCgpOwotICAgIGlmICghaXNMZW5ndGhDYWNoZVZhbGlkKCkpCi0gICAgICAg
IHNldExlbmd0aENhY2hlKGNhbGNMZW5ndGgoKSk7Ci0gICAgcmV0dXJuIGNhY2hlZExlbmd0aCgp
OwotfQorICAgIGlmIChpc0xlbmd0aENhY2hlVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIGNhY2hl
ZExlbmd0aCgpOwogCi1Ob2RlKiBIVE1MQ29sbGVjdGlvbjo6aXRlbSh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKLXsKLSAgICBpbnZhbGlkYXRlQ2FjaGVJZk5lZWRlZCgpOwotICAgIGlmIChpc0l0ZW1D
YWNoZVZhbGlkKCkgJiYgY2FjaGVkSXRlbU9mZnNldCgpID09IGluZGV4KQotICAgICAgICByZXR1
cm4gY2FjaGVkSXRlbSgpOwotICAgIGlmIChpc0xlbmd0aENhY2hlVmFsaWQoKSAmJiBjYWNoZWRM
ZW5ndGgoKSA8PSBpbmRleCkKKyAgICBpZiAoIWlzSXRlbUNhY2hlVmFsaWQoKSAmJiAhaXRlbSgw
KSkgeworICAgICAgICBBU1NFUlQoaXNMZW5ndGhDYWNoZVZhbGlkKCkpOwogICAgICAgICByZXR1
cm4gMDsKLSAgICBpZiAoIWlzSXRlbUNhY2hlVmFsaWQoKSB8fCBjYWNoZWRJdGVtT2Zmc2V0KCkg
PiBpbmRleCkgewotICAgICAgICBzZXRJdGVtQ2FjaGUoaXRlbUFmdGVyKDApLCAwKTsKLSAgICAg
ICAgaWYgKCFjYWNoZWRJdGVtKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAg
Tm9kZSogZSA9IGNhY2hlZEl0ZW0oKTsKLSAgICBmb3IgKHVuc2lnbmVkIHBvcyA9IGNhY2hlZEl0
ZW1PZmZzZXQoKTsgZSAmJiBwb3MgPCBpbmRleDsgcG9zKyspCi0gICAgICAgIGUgPSBpdGVtQWZ0
ZXIoZSk7Ci0gICAgc2V0SXRlbUNhY2hlKGUsIGluZGV4KTsKLSAgICByZXR1cm4gY2FjaGVkSXRl
bSgpOworCisgICAgQVNTRVJUKGlzSXRlbUNhY2hlVmFsaWQoKSk7CisgICAgQVNTRVJUKGNhY2hl
ZEl0ZW0oKSk7CisgICAgdW5zaWduZWQgb2Zmc2V0ID0gY2FjaGVkSXRlbU9mZnNldCgpOworICAg
IGRvIHsKKyAgICAgICAgb2Zmc2V0Kys7CisgICAgfSB3aGlsZSAoaXRlbUFmdGVyQ2FjaGVkSXRl
bShvZmZzZXQpKTsKKworICAgIHNldExlbmd0aENhY2hlKG9mZnNldCk7CisgICAgcmV0dXJuIG9m
ZnNldDsKIH0KIAotTm9kZSogSFRNTENvbGxlY3Rpb25XaXRoQXJyYXlTdG9yYWdlOjppdGVtKHVu
c2lnbmVkIGluZGV4KSBjb25zdAorTm9kZSogSFRNTENvbGxlY3Rpb246Oml0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0CiB7CiAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKICAgICBpZiAo
aXNJdGVtQ2FjaGVWYWxpZCgpICYmIGNhY2hlZEl0ZW1PZmZzZXQoKSA9PSBpbmRleCkKQEAgLTI1
MiwyMyArMjM4LDMzIEBAIE5vZGUqIEhUTUxDb2xsZWN0aW9uV2l0aEFycmF5U3RvcmFnZTo6aXQK
IAogICAgIGlmICghaXNJdGVtQ2FjaGVWYWxpZCgpIHx8IGNhY2hlZEl0ZW1PZmZzZXQoKSA+IGlu
ZGV4KSB7CiAgICAgICAgIHVuc2lnbmVkIG9mZnNldEluQXJyYXkgPSAwOwotICAgICAgICBzZXRJ
dGVtQ2FjaGUoaXRlbUluQXJyYXlBZnRlcihvZmZzZXRJbkFycmF5LCAwKSwgMCwgMCk7Ci0gICAg
ICAgIEFTU0VSVChpc0l0ZW1DYWNoZVZhbGlkKCkpOwotICAgICAgICBpZiAoIWNhY2hlZEl0ZW0o
KSB8fCBjYWNoZWRJdGVtT2Zmc2V0KCkgPT0gaW5kZXgpCisgICAgICAgIE5vZGUqIGZpcnN0SXRl
bSA9IGl0ZW1BZnRlcihvZmZzZXRJbkFycmF5LCAwKTsKKyAgICAgICAgaWYgKCFmaXJzdEl0ZW0p
IHsKKyAgICAgICAgICAgIHNldExlbmd0aENhY2hlKDApOworICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIH0KKyAgICAgICAgc2V0SXRlbUNhY2hlKGZpcnN0SXRlbSwgMCwgb2Zmc2V0SW5B
cnJheSk7CisgICAgICAgIEFTU0VSVCghY2FjaGVkSXRlbU9mZnNldCgpKTsKKyAgICAgICAgaWYg
KCFpbmRleCkKICAgICAgICAgICAgIHJldHVybiBjYWNoZWRJdGVtKCk7CiAgICAgfQogCisgICAg
cmV0dXJuIGl0ZW1BZnRlckNhY2hlZEl0ZW0oaW5kZXgpOworfQorCitFbGVtZW50KiBIVE1MQ29s
bGVjdGlvbjo6aXRlbUFmdGVyQ2FjaGVkSXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKICAg
ICB1bnNpZ25lZCBjdXJyZW50SW5kZXggPSBjYWNoZWRJdGVtT2Zmc2V0KCk7Ci0gICAgQVNTRVJU
KGNhY2hlZEl0ZW0oKS0+aXNIVE1MRWxlbWVudCgpKTsKLSAgICBIVE1MRWxlbWVudCogY3VycmVu
dEl0ZW0gPSB0b0hUTUxFbGVtZW50KGNhY2hlZEl0ZW0oKSk7CisgICAgQVNTRVJUKGNhY2hlZEl0
ZW0oKS0+aXNFbGVtZW50Tm9kZSgpKTsKKyAgICBFbGVtZW50KiBjdXJyZW50SXRlbSA9IHRvRWxl
bWVudChjYWNoZWRJdGVtKCkpOwogICAgIEFTU0VSVChjdXJyZW50SW5kZXggPCBpbmRleCk7CiAK
ICAgICB1bnNpZ25lZCBvZmZzZXRJbkFycmF5ID0gY2FjaGVkRWxlbWVudHNBcnJheU9mZnNldCgp
OwotICAgIHdoaWxlICgoY3VycmVudEl0ZW0gPSBpdGVtSW5BcnJheUFmdGVyKG9mZnNldEluQXJy
YXksIGN1cnJlbnRJdGVtKSkpIHsKKyAgICB3aGlsZSAoKGN1cnJlbnRJdGVtID0gaXRlbUFmdGVy
KG9mZnNldEluQXJyYXksIGN1cnJlbnRJdGVtKSkpIHsKICAgICAgICAgY3VycmVudEluZGV4Kys7
CiAgICAgICAgIGlmIChjdXJyZW50SW5kZXggPT0gaW5kZXgpIHsKICAgICAgICAgICAgIHNldEl0
ZW1DYWNoZShjdXJyZW50SXRlbSwgY3VycmVudEluZGV4LCBvZmZzZXRJbkFycmF5KTsKLSAgICAg
ICAgICAgIHJldHVybiBjYWNoZWRJdGVtKCk7CisgICAgICAgICAgICByZXR1cm4gY3VycmVudEl0
ZW07CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTMxNCwxOSArMzEwLDIwIEBAIE5vZGUqIEhUTUxD
b2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXQKICAgICAvLyB0aGF0IGFyZSBhbGxvd2VkIGEg
bmFtZSBhdHRyaWJ1dGUuCiAgICAgaW52YWxpZGF0ZUNhY2hlSWZOZWVkZWQoKTsKIAorICAgIHVu
c2lnbmVkIGFycmF5T2Zmc2V0ID0gMDsKICAgICB1bnNpZ25lZCBpID0gMDsKLSAgICBmb3IgKEVs
ZW1lbnQqIGUgPSBpdGVtQWZ0ZXIoMCk7IGU7IGUgPSBpdGVtQWZ0ZXIoZSkpIHsKKyAgICBmb3Ig
KEVsZW1lbnQqIGUgPSBpdGVtQWZ0ZXIoYXJyYXlPZmZzZXQsIDApOyBlOyBlID0gaXRlbUFmdGVy
KGFycmF5T2Zmc2V0LCBlKSkgewogICAgICAgICBpZiAoY2hlY2tGb3JOYW1lTWF0Y2goZSwgLyog
Y2hlY2tOYW1lICovIGZhbHNlLCBuYW1lKSkgewotICAgICAgICAgICAgc2V0SXRlbUNhY2hlKGUs
IGkpOworICAgICAgICAgICAgc2V0SXRlbUNhY2hlKGUsIGksIGFycmF5T2Zmc2V0KTsKICAgICAg
ICAgICAgIHJldHVybiBlOwogICAgICAgICB9CiAgICAgICAgIGkrKzsKICAgICB9CiAKICAgICBp
ID0gMDsKLSAgICBmb3IgKEVsZW1lbnQqIGUgPSBpdGVtQWZ0ZXIoMCk7IGU7IGUgPSBpdGVtQWZ0
ZXIoZSkpIHsKKyAgICBmb3IgKEVsZW1lbnQqIGUgPSBpdGVtQWZ0ZXIoYXJyYXlPZmZzZXQsIDAp
OyBlOyBlID0gaXRlbUFmdGVyKGFycmF5T2Zmc2V0LCBlKSkgewogICAgICAgICBpZiAoY2hlY2tG
b3JOYW1lTWF0Y2goZSwgLyogY2hlY2tOYW1lICovIHRydWUsIG5hbWUpKSB7Ci0gICAgICAgICAg
ICBzZXRJdGVtQ2FjaGUoZSwgaSk7CisgICAgICAgICAgICBzZXRJdGVtQ2FjaGUoZSwgaSwgYXJy
YXlPZmZzZXQpOwogICAgICAgICAgICAgcmV0dXJuIGU7CiAgICAgICAgIH0KICAgICAgICAgaSsr
OwpAQCAtMzQxLDcgKzMzOCw4IEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OnVwZGF0ZU5hbWVDYWNo
ZSgpIGMKICAgICBpZiAoaGFzTmFtZUNhY2hlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZv
ciAoRWxlbWVudCogZWxlbWVudCA9IGl0ZW1BZnRlcigwKTsgZWxlbWVudDsgZWxlbWVudCA9IGl0
ZW1BZnRlcihlbGVtZW50KSkgeworICAgIHVuc2lnbmVkIGFycmF5T2Zmc2V0ID0gMDsKKyAgICBm
b3IgKEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtQWZ0ZXIoYXJyYXlPZmZzZXQsIDApOyBlbGVtZW50
OyBlbGVtZW50ID0gaXRlbUFmdGVyKGFycmF5T2Zmc2V0LCBlbGVtZW50KSkgewogICAgICAgICBp
ZiAoIWVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBIVE1MRWxlbWVudCogZSA9IHRvSFRNTEVsZW1lbnQoZWxlbWVudCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMjI1MDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDcgKzYz
LDYgQEAgcHJvdGVjdGVkOgogICAgICAgICBtX2hhc05hbWVDYWNoZSA9IGZhbHNlOwogICAgIH0K
IAotICAgIHVzaW5nIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6c2V0SXRlbUNhY2hlOwogICAg
IHZvaWQgc2V0SXRlbUNhY2hlKE5vZGUqIGl0ZW0sIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQg
ZWxlbWVudHNBcnJheU9mZnNldCkgY29uc3QKICAgICB7CiAgICAgICAgIHNldEl0ZW1DYWNoZShp
dGVtLCBvZmZzZXQpOwpAQCAtODksNiArODgsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIER5bmFt
aWNOb2RlTGlzdENhY2hlQmFzZTo6aXNSb290ZWRBdERvY3VtZW50OwogICAgIHVzaW5nIER5bmFt
aWNOb2RlTGlzdENhY2hlQmFzZTo6c2hvdWxkSW52YWxpZGF0ZU9uQXR0cmlidXRlQ2hhbmdlOwog
ICAgIHVzaW5nIER5bmFtaWNOb2RlTGlzdENhY2hlQmFzZTo6Y2xlYXJDYWNoZTsKKyAgICB1c2lu
ZyBEeW5hbWljTm9kZUxpc3RDYWNoZUJhc2U6OnNldEl0ZW1DYWNoZTsKIAogICAgIG11dGFibGUg
Tm9kZUNhY2hlTWFwIG1faWRDYWNoZTsKICAgICBtdXRhYmxlIE5vZGVDYWNoZU1hcCBtX25hbWVD
YWNoZTsKQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBET00gQVBJCiAgICAg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdDsKKyAgICBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAg
ICB2aXJ0dWFsIE5vZGUqIG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
OwogICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHRhZ3MoY29uc3QgU3RyaW5nJik7CiAKQEAgLTE0
MywzMCArMTQzLDE3IEBAIHByb3RlY3RlZDoKICAgICBIVE1MQ29sbGVjdGlvbihOb2RlKiBiYXNl
LCBDb2xsZWN0aW9uVHlwZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlTmFtZUNhY2hlKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBFbGVtZW50KiBpdGVtQWZ0ZXIoTm9kZSopIGNvbnN0OworICAg
IHZpcnR1YWwgRWxlbWVudCogaXRlbUFmdGVyKHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5LCBFbGVt
ZW50KikgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBjaGVja0Zvck5hbWVNYXRjaChFbGVt
ZW50KiwgYm9vbCBjaGVja05hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CiAK
LSAgICB2aXJ0dWFsIHVuc2lnbmVkIGNhbGNMZW5ndGgoKSBjb25zdDsKLQorICAgIEVsZW1lbnQq
IGl0ZW1BZnRlckNhY2hlZEl0ZW0odW5zaWduZWQpIGNvbnN0OwogICAgIGJvb2wgaXNBY2NlcHRh
YmxlRWxlbWVudChFbGVtZW50KikgY29uc3Q7CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9iYXNlOwog
fTsKIAotY2xhc3MgSFRNTENvbGxlY3Rpb25XaXRoQXJyYXlTdG9yYWdlIDogcHVibGljIEhUTUxD
b2xsZWN0aW9uIHsKLXB1YmxpYzoKLSAgICBIVE1MQ29sbGVjdGlvbldpdGhBcnJheVN0b3JhZ2Uo
Tm9kZSogYmFzZSwgQ29sbGVjdGlvblR5cGUgdHlwZSkKLSAgICAgICAgOiBIVE1MQ29sbGVjdGlv
bihiYXNlLCB0eXBlKQotICAgIHsgfQotCi0gICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdCBPVkVSUklERTsKLQotcHJpdmF0ZToKLSAgICB2aXJ0dWFsIEhUTUxFbGVt
ZW50KiBpdGVtSW5BcnJheUFmdGVyKHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5LCBIVE1MRWxlbWVu
dCogcHJldmlvdXNJdGVtKSBjb25zdCA9IDA7Ci19OwotCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5jcHAJKHJl
dmlzaW9uIDEyMjUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db2xsZWN0aW9u
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogLy8gY2FsY3VsYXRpb24gZXZlcnkgdGltZSBpZiBhbnl0aGluZyBoYXMgY2hhbmdl
ZC4KIAogSFRNTEZvcm1Db2xsZWN0aW9uOjpIVE1MRm9ybUNvbGxlY3Rpb24oRWxlbWVudCogYmFz
ZSkKLSAgICA6IEhUTUxDb2xsZWN0aW9uV2l0aEFycmF5U3RvcmFnZShiYXNlLCBGb3JtQ29udHJv
bHMpCisgICAgOiBIVE1MQ29sbGVjdGlvbihiYXNlLCBGb3JtQ29udHJvbHMpCiB7CiAgICAgQVNT
RVJUKGJhc2UtPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwgYmFzZS0+aGFzVGFnTmFtZShmaWVsZHNl
dFRhZykpOwogfQpAQCAtNjcsMTUgKzY3LDcgQEAgY29uc3QgVmVjdG9yPEhUTUxJbWFnZUVsZW1l
bnQqPiYgSFRNTEZvcgogICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUVsZW1lbnQqPihi
YXNlKCkpLT5pbWFnZUVsZW1lbnRzKCk7CiB9CiAKLXVuc2lnbmVkIEhUTUxGb3JtQ29sbGVjdGlv
bjo6Y2FsY0xlbmd0aCgpIGNvbnN0Ci17Ci0gICAgQVNTRVJUKGJhc2UoKS0+aGFzVGFnTmFtZShm
b3JtVGFnKSB8fCBiYXNlKCktPmhhc1RhZ05hbWUoZmllbGRzZXRUYWcpKTsKLSAgICBpZiAoYmFz
ZSgpLT5oYXNUYWdOYW1lKGZvcm1UYWcpKQotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRN
TEZvcm1FbGVtZW50Kj4oYmFzZSgpKS0+bGVuZ3RoKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0
PEhUTUxGaWVsZFNldEVsZW1lbnQqPihiYXNlKCkpLT5sZW5ndGgoKTsKLX0KLQotSFRNTEVsZW1l
bnQqIEhUTUxGb3JtQ29sbGVjdGlvbjo6aXRlbUluQXJyYXlBZnRlcih1bnNpZ25lZCYgb2Zmc2V0
LCBIVE1MRWxlbWVudCogcHJldmlvdXNJdGVtKSBjb25zdAorRWxlbWVudCogSFRNTEZvcm1Db2xs
ZWN0aW9uOjppdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldCwgRWxlbWVudCogcHJldmlvdXNJdGVt
KSBjb25zdAogewogICAgIGNvbnN0IFZlY3RvcjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQqPiYgZWxl
bWVudHNBcnJheSA9IGZvcm1Db250cm9sRWxlbWVudHMoKTsKICAgICBpZiAocHJldmlvdXNJdGVt
KQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbGxlY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oCShyZXZpc2lv
biAxMjI1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29sbGVjdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFF1YWxpZmllZE5hbWU7CiAvLyBU
aGlzIGNsYXNzIGlzIGp1c3QgYSBiaWcgaGFjayB0byBmaW5kIGZvcm0gZWxlbWVudHMgZXZlbiBp
biBtYWxmb3JtZWQgSFRNTCBlbGVtZW50cy4KIC8vIFRoZSBmYW1vdXMgPHRhYmxlPjx0cj48Zm9y
bT48dGQ+IHByb2JsZW0uCiAKLWNsYXNzIEhUTUxGb3JtQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1M
Q29sbGVjdGlvbldpdGhBcnJheVN0b3JhZ2UgeworY2xhc3MgSFRNTEZvcm1Db2xsZWN0aW9uIDog
cHVibGljIEhUTUxDb2xsZWN0aW9uIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxI
VE1MRm9ybUNvbGxlY3Rpb24+IGNyZWF0ZShFbGVtZW50Kik7CiAKQEAgLTQ2LDExICs0NiwxMCBA
QCBwcml2YXRlOgogICAgIEhUTUxGb3JtQ29sbGVjdGlvbihFbGVtZW50Kik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlTmFtZUNhY2hlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBj
YWxjTGVuZ3RoKCkgY29uc3Q7CiAKICAgICBjb25zdCBWZWN0b3I8Rm9ybUFzc29jaWF0ZWRFbGVt
ZW50Kj4mIGZvcm1Db250cm9sRWxlbWVudHMoKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8SFRN
TEltYWdlRWxlbWVudCo+JiBmb3JtSW1hZ2VFbGVtZW50cygpIGNvbnN0OwotICAgIEhUTUxFbGVt
ZW50KiBpdGVtSW5BcnJheUFmdGVyKHVuc2lnbmVkJiBvZmZzZXQsIEhUTUxFbGVtZW50KiBwcmV2
aW91c0l0ZW0pIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgRWxlbWVudCogaXRlbUFmdGVy
KHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5LCBFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7CiB9Owog
CiB9IC8vbmFtZXNwYWNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVj
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxl
Y3Rpb24uY3BwCShyZXZpc2lvbiAxMjI1MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxO
YW1lQ29sbGVjdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDggKzQ5LDkgQEAgSFRNTE5h
bWVDb2xsZWN0aW9uOjp+SFRNTE5hbWVDb2xsZWN0aW9uKAogICAgICAgICBzdGF0aWNfY2FzdDxE
b2N1bWVudCo+KGJhc2UoKSktPnJlbW92ZURvY3VtZW50TmFtZWRJdGVtQ2FjaGUodGhpcywgbV9u
YW1lKTsKIH0KIAotRWxlbWVudCogSFRNTE5hbWVDb2xsZWN0aW9uOjppdGVtQWZ0ZXIoTm9kZSog
cHJldmlvdXMpIGNvbnN0CitFbGVtZW50KiBIVE1MTmFtZUNvbGxlY3Rpb246Oml0ZW1BZnRlcih1
bnNpZ25lZCYgb2Zmc2V0SW5BcnJheSwgRWxlbWVudCogcHJldmlvdXMpIGNvbnN0CiB7CisgICAg
QVNTRVJUX1VOVVNFRChvZmZzZXRJbkFycmF5LCAhb2Zmc2V0SW5BcnJheSk7CiAgICAgQVNTRVJU
KHByZXZpb3VzICE9IGJhc2UoKSk7CiAKICAgICBOb2RlKiBjdXJyZW50OwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTmFtZUNvbGxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCShyZXZpc2lvbiAxMjI1MDMpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxOYW1lQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTE5hbWVDb2xsZWN0aW9u
KERvY3VtZW50KiwgQ29sbGVjdGlvblR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSk7CiAK
LSAgICB2aXJ0dWFsIEVsZW1lbnQqIGl0ZW1BZnRlcihOb2RlKikgY29uc3QgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBFbGVtZW50KiBpdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldEluQXJyYXksIEVs
ZW1lbnQqKSBjb25zdCBPVkVSUklERTsKIAogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CiB9OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVydGllc0NvbGxlY3Rpb24uY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
LmNwcAkocmV2aXNpb24gMTIyNTAzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvcGVy
dGllc0NvbGxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIFBhc3NS
ZWZQdHI8SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uPiBIVE0KIH0KIAogSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uOjpIVE1MUHJvcGVydGllc0NvbGxlY3Rpb24oTm9kZSogaXRlbU5vZGUpCi0gICAg
OiBIVE1MQ29sbGVjdGlvbldpdGhBcnJheVN0b3JhZ2UoaXRlbU5vZGUsIEl0ZW1Qcm9wZXJ0aWVz
KQorICAgIDogSFRNTENvbGxlY3Rpb24oaXRlbU5vZGUsIEl0ZW1Qcm9wZXJ0aWVzKQogICAgICwg
bV9oYXNQcm9wZXJ0eU5hbWVDYWNoZShmYWxzZSkKICAgICAsIG1faGFzSXRlbVJlZkVsZW1lbnRz
KGZhbHNlKQogewpAQCAtMTEyLDEwICsxMTIsMTAgQEAgc3RhdGljIE5vZGUqIG5leHROb2RlV2l0
aFByb3BlcnR5KE5vZGUqIAogICAgICAgICAgICAgPyBub2RlLT50cmF2ZXJzZU5leHROb2RlKGJh
c2UpIDogbm9kZS0+dHJhdmVyc2VOZXh0U2libGluZyhiYXNlKTsKIH0KIAotSFRNTEVsZW1lbnQq
IEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6aXRlbUluQXJyYXlBZnRlcih1bnNpZ25lZCYgb2Zm
c2V0SW5BcnJheSwgSFRNTEVsZW1lbnQqIHByZXZpb3VzSXRlbSkgY29uc3QKK0VsZW1lbnQqIEhU
TUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6aXRlbUFmdGVyKHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5
LCBFbGVtZW50KiBwcmV2aW91c0l0ZW0pIGNvbnN0CiB7CiAgICAgd2hpbGUgKG9mZnNldEluQXJy
YXkgPCBtX2l0ZW1SZWZFbGVtZW50cy5zaXplKCkpIHsKLSAgICAgICAgaWYgKEhUTUxFbGVtZW50
KiBuZXh0ID0gaXRlbUFmdGVyKG1faXRlbVJlZkVsZW1lbnRzW29mZnNldEluQXJyYXldLCBwcmV2
aW91c0l0ZW0pKQorICAgICAgICBpZiAoRWxlbWVudCogbmV4dCA9IGl0ZW1BZnRlcihtX2l0ZW1S
ZWZFbGVtZW50c1tvZmZzZXRJbkFycmF5XSwgcHJldmlvdXNJdGVtKSkKICAgICAgICAgICAgIHJl
dHVybiBuZXh0OwogICAgICAgICBvZmZzZXRJbkFycmF5Kys7CiAgICAgICAgIHByZXZpb3VzSXRl
bSA9IDA7CkBAIC0xMjMsNyArMTIzLDcgQEAgSFRNTEVsZW1lbnQqIEhUTUxQcm9wZXJ0aWVzQ29s
bGVjdGlvbjo6aQogICAgIHJldHVybiAwOwogfQogCi1IVE1MRWxlbWVudCogSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uOjppdGVtQWZ0ZXIoSFRNTEVsZW1lbnQqIGJhc2UsIEhUTUxFbGVtZW50KiBw
cmV2aW91cykgY29uc3QKK0hUTUxFbGVtZW50KiBIVE1MUHJvcGVydGllc0NvbGxlY3Rpb246Oml0
ZW1BZnRlcihIVE1MRWxlbWVudCogYmFzZSwgRWxlbWVudCogcHJldmlvdXMpIGNvbnN0CiB7CiAg
ICAgTm9kZSogY3VycmVudDsKICAgICBjdXJyZW50ID0gcHJldmlvdXMgPyBuZXh0Tm9kZVdpdGhQ
cm9wZXJ0eShiYXNlLCBwcmV2aW91cykgOiBiYXNlOwpAQCAtMTQwLDE5ICsxNDAsNiBAQCBIVE1M
RWxlbWVudCogSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjppCiAgICAgcmV0dXJuIDA7CiB9CiAK
LXVuc2lnbmVkIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbjo6Y2FsY0xlbmd0aCgpIGNvbnN0Ci17
Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gMDsKLSAgICB1cGRhdGVSZWZFbGVtZW50cygpOwotCi0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faXRlbVJlZkVsZW1lbnRzLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgIGZvciAoSFRNTEVsZW1lbnQqIGVsZW1lbnQgPSBpdGVtQWZ0ZXIobV9pdGVt
UmVmRWxlbWVudHNbaV0sIDApOyBlbGVtZW50OyBlbGVtZW50ID0gaXRlbUFmdGVyKG1faXRlbVJl
ZkVsZW1lbnRzW2ldLCBlbGVtZW50KSkKLSAgICAgICAgICAgICsrbGVuZ3RoOwotICAgIH0KLQot
ICAgIHJldHVybiBsZW5ndGg7Ci19Ci0KIHZvaWQgSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uOjp1
cGRhdGVOYW1lQ2FjaGUoKSBjb25zdAogewogICAgIGludmFsaWRhdGVDYWNoZUlmTmVlZGVkKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRpZXNDb2xsZWN0aW9u
LmgJKHJldmlzaW9uIDEyMjUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb3BlcnRp
ZXNDb2xsZWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBET01TdHJpbmdMaXN0OwogCi1jbGFzcyBIVE1MUHJvcGVydGll
c0NvbGxlY3Rpb24gOiBwdWJsaWMgSFRNTENvbGxlY3Rpb25XaXRoQXJyYXlTdG9yYWdlIHsKK2Ns
YXNzIEhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbiA6IHB1YmxpYyBIVE1MQ29sbGVjdGlvbiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTFByb3BlcnRpZXNDb2xsZWN0aW9uPiBj
cmVhdGUoTm9kZSopOwogICAgIHZpcnR1YWwgfkhUTUxQcm9wZXJ0aWVzQ29sbGVjdGlvbigpOwpA
QCAtNjMsMTMgKzYzLDEwIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTFByb3BlcnRpZXND
b2xsZWN0aW9uKE5vZGUqKTsKIAotICAgIHZpcnR1YWwgdW5zaWduZWQgY2FsY0xlbmd0aCgpIGNv
bnN0IE9WRVJSSURFOwotCiAgICAgTm9kZSogZmluZFJlZkVsZW1lbnRzKE5vZGUqIHByZXZpb3Vz
KSBjb25zdDsKIAotICAgIHZvaWQgY2FjaGVGaXJzdEl0ZW0oKSBjb25zdDsKLSAgICB2aXJ0dWFs
IEhUTUxFbGVtZW50KiBpdGVtSW5BcnJheUFmdGVyKHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5LCBI
VE1MRWxlbWVudCogcHJldmlvdXNJdGVtSW5TYW1lQXJyYXlFbGVtZW50KSBjb25zdCBPVkVSUklE
RTsKLSAgICBIVE1MRWxlbWVudCogaXRlbUFmdGVyKEhUTUxFbGVtZW50KiBiYXNlLCBIVE1MRWxl
bWVudCogcHJldmlvdXMpIGNvbnN0OworICAgIHZpcnR1YWwgRWxlbWVudCogaXRlbUFmdGVyKHVu
c2lnbmVkJiBvZmZzZXRJbkFycmF5LCBFbGVtZW50KikgY29uc3QgT1ZFUlJJREU7CisgICAgSFRN
TEVsZW1lbnQqIGl0ZW1BZnRlcihIVE1MRWxlbWVudCogYmFzZSwgRWxlbWVudCogcHJldmlvdXMp
IGNvbnN0OwogCiAgICAgdm9pZCB1cGRhdGVOYW1lQ2FjaGUoKSBjb25zdDsKIApJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5jcHAJKHJldmlz
aW9uIDEyMjUwMykKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rp
b24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsOCArMTYyLDkgQEAgUGFzc1JlZlB0cjxIVE1M
VGFibGVSb3dzQ29sbGVjdGlvbj4gSFRNTAogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFRh
YmxlUm93c0NvbGxlY3Rpb24odGFibGUpKTsKIH0KIAotRWxlbWVudCogSFRNTFRhYmxlUm93c0Nv
bGxlY3Rpb246Oml0ZW1BZnRlcihOb2RlKiBwcmV2aW91cykgY29uc3QKK0VsZW1lbnQqIEhUTUxU
YWJsZVJvd3NDb2xsZWN0aW9uOjppdGVtQWZ0ZXIodW5zaWduZWQmIG9mZnNldEluQXJyYXksIEVs
ZW1lbnQqIHByZXZpb3VzKSBjb25zdAogeworICAgIEFTU0VSVF9VTlVTRUQob2Zmc2V0SW5BcnJh
eSwgIW9mZnNldEluQXJyYXkpOwogICAgIEFTU0VSVCghcHJldmlvdXMgfHwgKHByZXZpb3VzLT5p
c0hUTUxFbGVtZW50KCkgJiYgdG9IVE1MRWxlbWVudChwcmV2aW91cyktPmhhc0xvY2FsTmFtZSh0
clRhZykpKTsKICAgICByZXR1cm4gcm93QWZ0ZXIoc3RhdGljX2Nhc3Q8SFRNTFRhYmxlRWxlbWVu
dCo+KGJhc2UoKSksIHN0YXRpY19jYXN0PEhUTUxUYWJsZVJvd0VsZW1lbnQqPihwcmV2aW91cykp
OwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93c0NvbGxlY3Rp
b24uaAkocmV2aXNpb24gMTIyNTAzKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVS
b3dzQ29sbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgSFRNTFRhYmxlUm93c0NvbGxlY3Rpb24oRWxlbWVudCopOwogCi0gICAg
dmlydHVhbCBFbGVtZW50KiBpdGVtQWZ0ZXIoTm9kZSopIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgRWxlbWVudCogaXRlbUFmdGVyKHVuc2lnbmVkJiBvZmZzZXRJbkFycmF5LCBFbGVtZW50
KikgY29uc3QgT1ZFUlJJREU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQo=
</data>
<flag name="review"
          id="160681"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>