<?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>162310</bug_id>
          
          <creation_ts>2016-09-20 11:27:41 -0700</creation_ts>
          <short_desc>Rename MarkedSpace::version/MarkedBlock::version to MarkedSpace::markingVersion/MarkedBlock::markingVersion</short_desc>
          <delta_ts>2016-09-20 14:06:42 -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>JavaScriptCore</component>
          <version>WebKit 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>162309</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1231807</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-20 11:27:41 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231841</commentid>
    <comment_count>1</comment_count>
      <attachid>289395</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-20 13:46:18 -0700</bug_when>
    <thetext>Created attachment 289395
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231845</commentid>
    <comment_count>2</comment_count>
      <attachid>289395</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-09-20 13:52:50 -0700</bug_when>
    <thetext>Comment on attachment 289395
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1231854</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-09-20 14:06:42 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/206172</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289395</attachid>
            <date>2016-09-20 13:46:18 -0700</date>
            <delta_ts>2016-09-20 13:52:50 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>36463</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2MTY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyMiBA
QAorMjAxNi0wOS0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IFJlbmFtZSBNYXJrZWRTcGFjZTo6dmVyc2lvbi9NYXJrZWRCbG9jazo6dmVyc2lvbiB0byBNYXJr
ZWRTcGFjZTo6bWFya2luZ1ZlcnNpb24vTWFya2VkQmxvY2s6Om1hcmtpbmdWZXJzaW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjIzMTAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIEluIGJ1
ZyAxNjIzMDksIHdoaWNoIGlzIHBhcnQgb2YgbXkgY29uY3VycmVudCBHQyB3b3JrLCBJJ2xsIG5l
ZWQgdG8gaW50cm9kdWNlIGEgc2Vjb25kCisgICAgICAgIHZlcnNpb24tYmFzZWQgZmxpcC4gVGhp
cyBvbmUgd2lsbCBiZSBmb3IgbmV3bHlBbGxvY2F0ZWQgYml0cy4gVGhpcyB3aWxsIGFsbG93IG1l
IHRvCisgICAgICAgIGNoZWFwbHkgcHJlc2VydmUgcGVyLW9iamVjdCBsaXZlIHN0YXRlIGR1cmlu
ZyBtYXJraW5nLiBNYXJrZWRCbG9jazo6YWJvdXRUb01hcmtTbG93KCkgd2lsbAorICAgICAgICBk
byB0aGlzIGluc3RlYWQgb2YgY2xlYXJNYXJrcygpOgorICAgICAgICAKKyAgICAgICAgICAgIC0g
V2FsayB0aGUgbWFyayBiaXRzLCBzaW11bHRhbmVvdXNseSBjb3VudGluZyB0aGUgbnVtYmVyIG9m
IHNldCBiaXRzIGFuZCBjbGVhcmluZworICAgICAgICAgICAgICB0aGVtLgorICAgICAgICAgICAg
LSBJZiB0aGUgY291bnQgaXMgemVybywgdGhlbiB3ZSdyZSBkb25lLgorICAgICAgICAgICAgLSBJ
ZiB0aGUgY291bnQgaXMgZXF1YWwgdG8gdGhlIG1heCBudW1iZXIgb2YgY2VsbHMgaW4gdGhlIGJs
b2NrLCB0aGVuIHNldCB0aGUKKyAgICAgICAgICAgICAgYWxsb2NhdGVkIGJpdCBmb3IgdGhlIGJs
b2NrLgorICAgICAgICAgICAgLSBJZiB0aGUgY291bnQgaXMgc29tZXRoaW5nIGVsc2UsIGNyZWF0
ZSBhIG5ld2x5QWxsb2NhdGVkIHZlY3Rvci4KKyAgICAgICAgCisgICAgICAgIFRoZSBob3BlIGlz
IHRoYXQgdGhlIGxhc3QgbW9kZSBpcyBnb2luZyB0byBiZSByYXJlLCBzaW5jZSBtb3N0IGJsb2Nr
cyBhcmUgbm90IGZyYWdtZW50ZWQKKyAgICAgICAgYXQgZW5kIG9mIEdDLiBVc3VhbGx5LCB3ZSB3
aWxsIGZpbGwgdGhlbSBpbiB3aXRoIG9iamVjdHMgYnkgYWxsb2NhdGluZyEgQnV0IGlmIHdlIGRv
CisgICAgICAgIGNyZWF0ZSBuZXdseUFsbG9jYXRlZCBiaXRzIHRoZW4gd2UgbmVlZCB0byBoYXZl
IHNvbWUgd2F5IG9mIGJsb3dpbmcgdGhlbSBhd2F5IGxhdGVyLgorICAgICAgICAKKyAgICAgICAg
VGhpcyBpcyB3aGVyZSBhIHNlY29uZCB2ZXJzaW9uIGNvbWVzIGluLiBXZSBjYW4gaGF2ZSBhIHZl
cnNpb24gZm9yIG5ld2x5QWxsb2NhdGVkIGJpdHMsCisgICAgICAgIHdoaWNoIHdlIGluY3JlbWVu
dCBhdCB0aGUgZW5kIG9mIG1hcmtpbmcsIGF0IGFyb3VuZCB0aGUgc2FtZSB0aW1lIHRoYXQgd2Ug
Y2xlYXIgYWxsCisgICAgICAgIGFsbG9jYXRlZCBiaXRzLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBtZWFucyB0aGF0IHRoZSBNYXJrZWRCbG9jayB3aWxsIGhhdmUgdHdvIGRpZmZlcmVudCB2ZXJz
aW9uLWJhc2VkIGZsaXBzLCBzbyB0ZXJtcyBsaWtlCisgICAgICAgICJmbGlwIiBhbmQgInZlcnNp
b24iIGFyZW4ndCBlbm91Z2guCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNoIGdldHMgcmlk
IG9mIHRoZSB0ZXJtICJmbGlwIiBlbnRpcmVseS4gSXQncyBhIHRlcm0gb2YgYXJ0IGluIEdDcyB0
aGF0IHJlZmVycyB0bworICAgICAgICB0aGUgc3RhdGUgY2hhbmdlIGF0IHRoZSBiZWdpbm5pbmcg
b3IgZW5kIG9mIEdDLiBJdCByZWZlcnMgdG8gdGhlIGxvZ2ljYWwgc3RhdGUgY2hhbmdlLCBub3QK
KyAgICAgICAgdGhlIHBoeXNpY2FsIG9uZS4gSXQgZG9lc24ndCBhY3R1YWxseSBtYWtlIHNlbnNl
IHRvIHNwZWFrIG9mIGEgYmxvY2sgYmVpbmcgZmxpcHBlZAorICAgICAgICBpbmRlcGVuZGVudGx5
IG9mIG90aGVyIGJsb2Nrcy4gSXQncyB0cnVlIHRoYXQgb3VyIGltcGxlbWVudGF0aW9uIG9mIHRo
ZSBmbGlwIG1ha2VzIHNvbWUKKyAgICAgICAgc3RhdGUgdXBkYXRlcyBoYXBwZW4gbGF6aWx5LCBi
dXQgdGhlIGJsb2NrIHVwZGF0aW5nIGl0c2VsZiBpbiBzb21lIHdheSAobGlrZSBjbGVhcmluZyBt
YXJrCisgICAgICAgIGJpdHMpIGlzbid0IHRoZSBmbGlwIC0gdGhlIGZsaXAgYWxyZWFkeSBoYXBw
ZW5lZCB3aGVuIHRoZSB2ZXJzaW9uIHdhcyBpbmNyZW1lbnRlZC4KKyAgICAgICAgCisgICAgICAg
IFdlIG5vIGxvbmdlciByZWZlciB0byBhIHZlcnNpb24gd2l0aG91dCBxdWFsaWZ5aW5nIHdoYXQg
a2luZCBvZiB2ZXJzaW9uIGl0IGlzLiBUaGUgdHlwZSBpcworICAgICAgICBIZWFwVmVyc2lvbi4g
QWxsIG9mIHRoZSB2ZXJzaW9uIG1lbWJlcnMgd2VyZSByZW5hbWVkIHRvIG1hcmtpbmdWZXJzaW9u
LCB0byByZWZsZWN0IHRoZQorICAgICAgICBmYWN0IHRoYXQgdGhpcyB2ZXJzaW9uIGlzIGp1c3Qg
dXNlZCBmb3IgZG9pbmcgdGhpbmdzIHRvIG1hcmtpbmcgc3RhdGUuIEluc3RlYWQgb2YgYXNraW5n
CisgICAgICAgIGlmIHRoZSBibG9jayBuZWVkc0ZsaXAoKSwgd2UgYXNrIGlmIGFyZU1hcmtzU3Rh
bGUoKS4KKyAgICAgICAgCisgICAgICAgIFRoaXMgd2lsbCBsZXQgdXMgaW50cm9kdWNlIGEgc2Vj
b25kIHZlcnNpb24gZm9yIG5ld2x5QWxsb2NhdGVkLCBhbmQgd2lsbCBsZXQgdXMgc3BlYWsgb2YK
KyAgICAgICAgdGhlIHR3byB2ZXJzaW9ucyB1bmFtYmlndW91c2x5LgorCisgICAgICAgICogaGVh
cC9DZWxsQ29udGFpbmVyLmg6CisgICAgICAgICogaGVhcC9DZWxsQ29udGFpbmVySW5saW5lcy5o
OgorICAgICAgICAoSlNDOjpDZWxsQ29udGFpbmVyOjppc01hcmtlZCk6CisgICAgICAgIChKU0M6
OkNlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCk6CisgICAgICAgIChKU0M6
OkNlbGxDb250YWluZXI6OmFib3V0VG9NYXJrKToKKyAgICAgICAgKEpTQzo6Q2VsbENvbnRhaW5l
cjo6YXJlTWFya3NTdGFsZSk6CisgICAgICAgIChKU0M6OkNlbGxDb250YWluZXI6Om5lZWRzRmxp
cCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9Db25zZXJ2YXRpdmVSb290cy5jcHA6CisgICAg
ICAgIChKU0M6OkNvbnNlcnZhdGl2ZVJvb3RzOjpnZW5lcmljQWRkUG9pbnRlcik6CisgICAgICAg
IChKU0M6OkNvbnNlcnZhdGl2ZVJvb3RzOjpnZW5lcmljQWRkU3Bhbik6CisgICAgICAgICogaGVh
cC9IZWFwSW5saW5lcy5oOgorICAgICAgICAoSlNDOjpIZWFwOjppc01hcmtlZCk6CisgICAgICAg
IChKU0M6OkhlYXA6OmlzTWFya2VkQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6SGVhcDo6
dGVzdEFuZFNldE1hcmtlZCk6CisgICAgICAgICogaGVhcC9IZWFwVXRpbC5oOgorICAgICAgICAo
SlNDOjpIZWFwVXRpbDo6ZmluZEdDT2JqZWN0UG9pbnRlcnNGb3JNYXJraW5nKToKKyAgICAgICAg
KiBoZWFwL01hcmtlZEFsbG9jYXRvci5jcHA6CisgICAgICAgIChKU0M6Ok1hcmtlZEFsbG9jYXRv
cjo6aXNQYWdlZE91dCk6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAg
IChKU0M6Ok1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJs
b2NrOjpIYW5kbGU6OnNwZWNpYWxpemVkU3dlZXApOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdFN3ZWVwTW9kZSk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0TWFya3NNb2RlKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OmFib3V0VG9NYXJrU2xvdyk6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjpjbGVhck1hcmtzKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFzc2VydE1h
cmtzTm90U3RhbGUpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6YXJlTWFya3NTdGFsZSk6
CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmFyZU1hcmtzU3RhbGUpOgorICAg
ICAgICAoSlNDOjpNYXJrZWRCbG9jazo6aXNNYXJrZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRC
bG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpN
YXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFy
a2VkQmxvY2s6Om1hcmtDb3VudCk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6
OmlzTGl2ZSk6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdEZs
aXBNb2RlKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFzc2VydEZsaXBw
ZWQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6bmVlZHNGbGlwKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6bmVlZHNGbGlwKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtl
ZEJsb2NrOjphcmVNYXJrc1N0YWxlKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFib3V0
VG9NYXJrKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmFzc2VydE1hcmtzTm90U3RhbGUp
OgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFuZGxlOjphc3NlcnRNYXJrc05vdFN0YWxl
KToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OmlzTWFya2VkKToKKyAgICAgICAgKEpTQzo6
TWFya2VkQmxvY2s6OmlzTWFya2VkQ29uY3VycmVudGx5KToKKyAgICAgICAgKEpTQzo6TWFya2Vk
QmxvY2s6OnRlc3RBbmRTZXRNYXJrZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6SGFu
ZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQpOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9j
azo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6
Om5lZWRzRmxpcCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjphc3NlcnRG
bGlwcGVkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6YXNz
ZXJ0RmxpcHBlZCk6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKToKKyAgICAgICAg
KEpTQzo6TWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlQ2VsbCk6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpyZXNldE1hcmtpbmdWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkQmxv
Y2s6OnJlc2V0VmVyc2lvbik6IERlbGV0ZWQuCisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5j
cHA6CisgICAgICAgIChKU0M6Ok1hcmtlZFNwYWNlOjpiZWdpbk1hcmtpbmcpOgorICAgICAgICAq
IGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6Om1hcmtpbmdW
ZXJzaW9uKToKKyAgICAgICAgKEpTQzo6TWFya2VkU3BhY2U6OnZlcnNpb24pOiBEZWxldGVkLgor
ICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuY3BwOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRv
cjo6U2xvdFZpc2l0b3IpOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6ZGlkU3RhcnRNYXJr
aW5nKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmFwcGVuZEpTQ2VsbE9yQXV4aWxpYXJ5
KToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnNldE1hcmtlZEFuZEFwcGVuZFRvTWFya1N0
YWNrKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6Om1hcmtBdXhpbGlhcnkpOgorICAgICAg
ICAqIGhlYXAvU2xvdFZpc2l0b3IuaDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6Om1hcmtp
bmdWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OnZlcnNpb24pOiBEZWxldGVk
LgorICAgICAgICAqIGhlYXAvV2Vha0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha0Jsb2Nr
OjpzcGVjaWFsaXplZFZpc2l0KToKKyAgICAgICAgKEpTQzo6V2Vha0Jsb2NrOjpyZWFwKToKKwog
MjAxNi0wOS0yMCAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZWJhc2VsaW5lIGJ1aWx0aW5zIGdlbmVyYXRvciB0ZXN0cyBhZnRlciByMjA2MTU1LgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXIuaAkocmV2aXNpb24g
MjA2MTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5lci5oCSh3
b3JraW5nIGNvcHkpCkBAIC03OCwxMyArNzgsMTMgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
KmJpdHdpc2VfY2FzdDxMYXJnZUFsbG9jYXRpb24qPihtX2VuY29kZWRQb2ludGVyIC0gaXNMYXJn
ZUFsbG9jYXRpb25CaXQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGFib3V0VG9NYXJrKEhlYXBW
ZXJzaW9uKTsKLSAgICBib29sIG5lZWRzRmxpcCgpIGNvbnN0OworICAgIHZvaWQgYWJvdXRUb01h
cmsoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pOworICAgIGJvb2wgYXJlTWFya3NTdGFsZSgp
IGNvbnN0OwogICAgIAogICAgIGJvb2wgaXNNYXJrZWQoSGVhcENlbGwqKSBjb25zdDsKLSAgICBi
b29sIGlzTWFya2VkKEhlYXBWZXJzaW9uLCBIZWFwQ2VsbCopIGNvbnN0OworICAgIGJvb2wgaXNN
YXJrZWQoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIEhlYXBDZWxsKikgY29uc3Q7CiAgICAg
Ym9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcENlbGwqKSBjb25zdDsKLSAgICBib29s
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiwgSGVhcENlbGwqKSBjb25zdDsK
KyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiBtYXJraW5nVmVy
c2lvbiwgSGVhcENlbGwqKSBjb25zdDsKICAgICAKICAgICB2b2lkIG5vdGVNYXJrZWQoKTsKICAg
ICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NlbGxDb250YWluZXJJbmxpbmVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ2VsbENvbnRhaW5l
cklubGluZXMuaAkocmV2aXNpb24gMjA2MTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ2VsbENvbnRhaW5lcklubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTEgKzUyLDEx
IEBAIGlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkKEhlYXAKICAgICByZXR1cm4g
bWFya2VkQmxvY2soKS5pc01hcmtlZChjZWxsKTsKIH0KIAotaW5saW5lIGJvb2wgQ2VsbENvbnRh
aW5lcjo6aXNNYXJrZWQoSGVhcFZlcnNpb24gdmVyc2lvbiwgSGVhcENlbGwqIGNlbGwpIGNvbnN0
CitpbmxpbmUgYm9vbCBDZWxsQ29udGFpbmVyOjppc01hcmtlZChIZWFwVmVyc2lvbiBtYXJraW5n
VmVyc2lvbiwgSGVhcENlbGwqIGNlbGwpIGNvbnN0CiB7CiAgICAgaWYgKGlzTGFyZ2VBbGxvY2F0
aW9uKCkpCiAgICAgICAgIHJldHVybiBsYXJnZUFsbG9jYXRpb24oKS5pc01hcmtlZCgpOwotICAg
IHJldHVybiBtYXJrZWRCbG9jaygpLmlzTWFya2VkKHZlcnNpb24sIGNlbGwpOworICAgIHJldHVy
biBtYXJrZWRCbG9jaygpLmlzTWFya2VkKG1hcmtpbmdWZXJzaW9uLCBjZWxsKTsKIH0KIAogaW5s
aW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKEhlYXBDZWxs
KiBjZWxsKSBjb25zdApAQCAtNjYsMTEgKzY2LDExIEBAIGlubGluZSBib29sIENlbGxDb250YWlu
ZXI6OmlzTWFya2VkT3JOZXcKICAgICByZXR1cm4gbWFya2VkQmxvY2soKS5pc01hcmtlZE9yTmV3
bHlBbGxvY2F0ZWQoY2VsbCk7CiB9CiAKLWlubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFy
a2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBIZWFwQ2VsbCogY2VsbCkg
Y29uc3QKK2lubGluZSBib29sIENlbGxDb250YWluZXI6OmlzTWFya2VkT3JOZXdseUFsbG9jYXRl
ZChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgSGVhcENlbGwqIGNlbGwpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzTGFyZ2VBbGxvY2F0aW9uKCkpCiAgICAgICAgIHJldHVybiBsYXJnZUFsbG9jYXRp
b24oKS5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoKTsKLSAgICByZXR1cm4gbWFya2VkQmxvY2so
KS5pc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQodmVyc2lvbiwgY2VsbCk7CisgICAgcmV0dXJuIG1h
cmtlZEJsb2NrKCkuaXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKG1hcmtpbmdWZXJzaW9uLCBjZWxs
KTsKIH0KIAogaW5saW5lIHZvaWQgQ2VsbENvbnRhaW5lcjo6bm90ZU1hcmtlZCgpCkBAIC05Mywx
NyArOTMsMTcgQEAgaW5saW5lIFdlYWtTZXQmIENlbGxDb250YWluZXI6OndlYWtTZXQoKQogICAg
IHJldHVybiBtYXJrZWRCbG9jaygpLndlYWtTZXQoKTsKIH0KIAotaW5saW5lIHZvaWQgQ2VsbENv
bnRhaW5lcjo6YWJvdXRUb01hcmsoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCitpbmxpbmUgdm9p
ZCBDZWxsQ29udGFpbmVyOjphYm91dFRvTWFyayhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbikK
IHsKICAgICBpZiAoIWlzTGFyZ2VBbGxvY2F0aW9uKCkpCi0gICAgICAgIG1hcmtlZEJsb2NrKCku
YWJvdXRUb01hcmsoaGVhcFZlcnNpb24pOworICAgICAgICBtYXJrZWRCbG9jaygpLmFib3V0VG9N
YXJrKG1hcmtpbmdWZXJzaW9uKTsKIH0KIAotaW5saW5lIGJvb2wgQ2VsbENvbnRhaW5lcjo6bmVl
ZHNGbGlwKCkgY29uc3QKK2lubGluZSBib29sIENlbGxDb250YWluZXI6OmFyZU1hcmtzU3RhbGUo
KSBjb25zdAogewogICAgIGlmIChpc0xhcmdlQWxsb2NhdGlvbigpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIG1hcmtlZEJsb2NrKCkubmVlZHNGbGlwKCk7CisgICAgcmV0dXJu
IG1hcmtlZEJsb2NrKCkuYXJlTWFya3NTdGFsZSgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvbnNlcnZhdGl2ZVJvb3RzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db25zZXJ2YXRpdmVSb290
cy5jcHAJKHJldmlzaW9uIDIwNjE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Nv
bnNlcnZhdGl2ZVJvb3RzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjYsMTIgKzY2LDEyIEBAIHZv
aWQgQ29uc2VydmF0aXZlUm9vdHM6Omdyb3coKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBNYXJr
SG9vaz4KLWlubGluZSB2b2lkIENvbnNlcnZhdGl2ZVJvb3RzOjpnZW5lcmljQWRkUG9pbnRlcih2
b2lkKiBwLCBIZWFwVmVyc2lvbiB2ZXJzaW9uLCBUaW55Qmxvb21GaWx0ZXIgZmlsdGVyLCBNYXJr
SG9vayYgbWFya0hvb2spCitpbmxpbmUgdm9pZCBDb25zZXJ2YXRpdmVSb290czo6Z2VuZXJpY0Fk
ZFBvaW50ZXIodm9pZCogcCwgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIFRpbnlCbG9vbUZp
bHRlciBmaWx0ZXIsIE1hcmtIb29rJiBtYXJrSG9vaykKIHsKICAgICBtYXJrSG9vay5tYXJrKHAp
OwogCiAgICAgSGVhcFV0aWw6OmZpbmRHQ09iamVjdFBvaW50ZXJzRm9yTWFya2luZygKLSAgICAg
ICAgbV9oZWFwLCB2ZXJzaW9uLCBmaWx0ZXIsIHAsCisgICAgICAgIG1faGVhcCwgbWFya2luZ1Zl
cnNpb24sIGZpbHRlciwgcCwKICAgICAgICAgWyZdICh2b2lkKiBwKSB7CiAgICAgICAgICAgICBp
ZiAobV9zaXplID09IG1fY2FwYWNpdHkpCiAgICAgICAgICAgICAgICAgZ3JvdygpOwpAQCAtOTQs
OSArOTQsOSBAQCB2b2lkIENvbnNlcnZhdGl2ZVJvb3RzOjpnZW5lcmljQWRkU3Bhbih2CiAgICAg
UkVMRUFTRV9BU1NFUlQoaXNQb2ludGVyQWxpZ25lZChlbmQpKTsKIAogICAgIFRpbnlCbG9vbUZp
bHRlciBmaWx0ZXIgPSBtX2hlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5maWx0ZXIoKTsgLy8g
TWFrZSBhIGxvY2FsIGNvcHkgb2YgZmlsdGVyIHRvIHNob3cgdGhlIGNvbXBpbGVyIGl0IHdvbid0
IGFsaWFzLCBhbmQgY2FuIGJlIHJlZ2lzdGVyLWFsbG9jYXRlZC4KLSAgICBIZWFwVmVyc2lvbiB2
ZXJzaW9uID0gbV9oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpOworICAgIEhlYXBWZXJzaW9u
IG1hcmtpbmdWZXJzaW9uID0gbV9oZWFwLm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKTsK
ICAgICBmb3IgKGNoYXIqKiBpdCA9IHN0YXRpY19jYXN0PGNoYXIqKj4oYmVnaW4pOyBpdCAhPSBz
dGF0aWNfY2FzdDxjaGFyKio+KGVuZCk7ICsraXQpCi0gICAgICAgIGdlbmVyaWNBZGRQb2ludGVy
KCppdCwgdmVyc2lvbiwgZmlsdGVyLCBtYXJrSG9vayk7CisgICAgICAgIGdlbmVyaWNBZGRQb2lu
dGVyKCppdCwgbWFya2luZ1ZlcnNpb24sIGZpbHRlciwgbWFya0hvb2spOwogfQogCiBjbGFzcyBE
dW1teU1hcmtIb29rIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBJbmxp
bmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcElubGlu
ZXMuaAkocmV2aXNpb24gMjA2MTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNyBAQCBBTFdBWVNfSU5MSU5F
IGJvb2wgSGVhcDo6aXNNYXJrZWQoY29uc3QgCiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFs
bG9jYXRpb24oKS5pc01hcmtlZCgpOwogICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1h
cmtlZEJsb2NrKCk7CiAgICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkKAotICAgICAgICBibG9jay52
bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKKyAgICAgICAgYmxvY2su
dm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLm1hcmtpbmdWZXJzaW9uKCksIGNlbGwpOwogfQogCiBB
TFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNNYXJrZWRDb25jdXJyZW50bHkoY29uc3Qgdm9pZCog
cmF3Q2VsbCkKQEAgLTkyLDE2ICs5MiwxNiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgSGVhcDo6aXNN
YXJrZWRDb25jdXJyCiAgICAgICAgIHJldHVybiBjZWxsLT5sYXJnZUFsbG9jYXRpb24oKS5pc01h
cmtlZCgpOwogICAgIE1hcmtlZEJsb2NrJiBibG9jayA9IGNlbGwtPm1hcmtlZEJsb2NrKCk7CiAg
ICAgcmV0dXJuIGJsb2NrLmlzTWFya2VkQ29uY3VycmVudGx5KAotICAgICAgICBibG9jay52bSgp
LT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKKyAgICAgICAgYmxvY2sudm0o
KS0+aGVhcC5vYmplY3RTcGFjZSgpLm1hcmtpbmdWZXJzaW9uKCksIGNlbGwpOwogfQogCi1BTFdB
WVNfSU5MSU5FIGJvb2wgSGVhcDo6dGVzdEFuZFNldE1hcmtlZChIZWFwVmVyc2lvbiB2ZXJzaW9u
LCBjb25zdCB2b2lkKiByYXdDZWxsKQorQUxXQVlTX0lOTElORSBib29sIEhlYXA6OnRlc3RBbmRT
ZXRNYXJrZWQoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IHZvaWQqIHJhd0NlbGwp
CiB7CiAgICAgSGVhcENlbGwqIGNlbGwgPSBiaXR3aXNlX2Nhc3Q8SGVhcENlbGwqPihyYXdDZWxs
KTsKICAgICBpZiAoY2VsbC0+aXNMYXJnZUFsbG9jYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGNl
bGwtPmxhcmdlQWxsb2NhdGlvbigpLnRlc3RBbmRTZXRNYXJrZWQoKTsKICAgICBNYXJrZWRCbG9j
ayYgYmxvY2sgPSBjZWxsLT5tYXJrZWRCbG9jaygpOwotICAgIGJsb2NrLmFib3V0VG9NYXJrKHZl
cnNpb24pOworICAgIGJsb2NrLmFib3V0VG9NYXJrKG1hcmtpbmdWZXJzaW9uKTsKICAgICByZXR1
cm4gYmxvY2sudGVzdEFuZFNldE1hcmtlZChjZWxsKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFV0aWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwVXRpbC5oCShyZXZpc2lvbiAyMDYxNTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwVXRpbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3ICs0Niw3IEBA
IHB1YmxpYzoKICAgICAvLyBiZWZvcmUgbGl2ZW5lc3MgZGF0YSBpcyBjbGVhcmVkIHRvIGJlIGFj
Y3VyYXRlLgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+CiAgICAgc3RhdGljIHZvaWQgZmlu
ZEdDT2JqZWN0UG9pbnRlcnNGb3JNYXJraW5nKAotICAgICAgICBIZWFwJiBoZWFwLCBIZWFwVmVy
c2lvbiBoZWFwVmVyc2lvbiwgVGlueUJsb29tRmlsdGVyIGZpbHRlciwgdm9pZCogcGFzc2VkUG9p
bnRlciwKKyAgICAgICAgSGVhcCYgaGVhcCwgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIFRp
bnlCbG9vbUZpbHRlciBmaWx0ZXIsIHZvaWQqIHBhc3NlZFBvaW50ZXIsCiAgICAgICAgIGNvbnN0
IEZ1bmMmIGZ1bmMpCiAgICAgewogICAgICAgICBjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4m
IHNldCA9IGhlYXAub2JqZWN0U3BhY2UoKS5ibG9ja3MoKS5zZXQoKTsKQEAgLTg1LDcgKzg1LDcg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICYmIHNldC5jb250YWlucyhwcmV2aW91c0NhbmRp
ZGF0ZSkKICAgICAgICAgICAgICAgICAmJiBwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCkuY2Vs
bEtpbmQoKSA9PSBIZWFwQ2VsbDo6QXV4aWxpYXJ5KSB7CiAgICAgICAgICAgICAgICAgcHJldmlv
dXNQb2ludGVyID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHByZXZpb3VzQ2FuZGlkYXRlLT5oYW5kbGUo
KS5jZWxsQWxpZ24ocHJldmlvdXNQb2ludGVyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKHByZXZp
b3VzQ2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKGhlYXBWZXJzaW9uLCBwcmV2aW91c1Bv
aW50ZXIpKQorICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c0NhbmRpZGF0ZS0+aGFuZGxlKCku
aXNMaXZlQ2VsbChtYXJraW5nVmVyc2lvbiwgcHJldmlvdXNQb2ludGVyKSkKICAgICAgICAgICAg
ICAgICAgICAgZnVuYyhwcmV2aW91c1BvaW50ZXIpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
CiAgICAgICAgIGF1dG8gdHJ5UG9pbnRlciA9IFsmXSAodm9pZCogcG9pbnRlcikgewotICAgICAg
ICAgICAgaWYgKGNhbmRpZGF0ZS0+aGFuZGxlKCkuaXNMaXZlQ2VsbChoZWFwVmVyc2lvbiwgcG9p
bnRlcikpCisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLT5oYW5kbGUoKS5pc0xpdmVDZWxsKG1h
cmtpbmdWZXJzaW9uLCBwb2ludGVyKSkKICAgICAgICAgICAgICAgICBmdW5jKHBvaW50ZXIpOwog
ICAgICAgICB9OwogICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMDYxNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw4ICs1
NSw4IEBAIGJvb2wgTWFya2VkQWxsb2NhdG9yOjppc1BhZ2VkT3V0KGRvdWJsZSAKICAgICAgICAg
TWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2sgPSBtX2Jsb2Nrc1tpbmRleF07CiAgICAgICAgIGlm
IChibG9jaykgewogICAgICAgICAgICAgLy8gRm9yY2VzIHVzIHRvIHRvdWNoIHRoZSBtZW1vcnkg
b2YgdGhlIGJsb2NrLCBidXQgaGFzIG5vIHNlbWFudGljIGVmZmVjdC4KLSAgICAgICAgICAgIGlm
IChibG9jay0+bmVlZHNGbGlwKCkpCi0gICAgICAgICAgICAgICAgYmxvY2stPmJsb2NrKCkucmVz
ZXRWZXJzaW9uKCk7CisgICAgICAgICAgICBpZiAoYmxvY2stPmFyZU1hcmtzU3RhbGUoKSkKKyAg
ICAgICAgICAgICAgICBibG9jay0+YmxvY2soKS5yZXNldE1hcmtpbmdWZXJzaW9uKCk7CiAgICAg
ICAgIH0KICAgICAgICAgKytpdGVyc1NpbmNlTGFzdFRpbWVDaGVjazsKICAgICAgICAgaWYgKGl0
ZXJzU2luY2VMYXN0VGltZUNoZWNrID49IEhlYXA6OnNfdGltZUNoZWNrUmVzb2x1dGlvbikgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmNwcAkocmV2aXNp
b24gMjA2MTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC03NywxMyArNzcsMTMgQEAgTWFya2VkQmxvY2s6OkhhbmRsZTo6
fkhhbmRsZSgpCiB9CiAKIE1hcmtlZEJsb2NrOjpNYXJrZWRCbG9jayhWTSYgdm0sIEhhbmRsZSYg
aGFuZGxlKQotICAgIDogbV92ZXJzaW9uKE1hcmtlZFNwYWNlOjpudWxsVmVyc2lvbikKKyAgICA6
IG1fbWFya2luZ1ZlcnNpb24oTWFya2VkU3BhY2U6Om51bGxWZXJzaW9uKQogICAgICwgbV9oYW5k
bGUoaGFuZGxlKQogICAgICwgbV92bSgmdm0pCiB7CiB9CiAKLXRlbXBsYXRlPE1hcmtlZEJsb2Nr
OjpIYW5kbGU6OkVtcHR5TW9kZSBlbXB0eU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5kbGU6OlN3ZWVw
TW9kZSBzd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSBkZXN0cnVjdGlvbk1vZGUsIE1hcmtlZEJs
b2NrOjpIYW5kbGU6OlNjcmliYmxlTW9kZSBzY3JpYmJsZU1vZGUsIE1hcmtlZEJsb2NrOjpIYW5k
bGU6Ok5ld2x5QWxsb2NhdGVkTW9kZSBuZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtlZEJsb2NrOjpI
YW5kbGU6OkZsaXBNb2RlIGZsaXBNb2RlPgordGVtcGxhdGU8TWFya2VkQmxvY2s6OkhhbmRsZTo6
RW1wdHlNb2RlIGVtcHR5TW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6U3dlZXBNb2RlIHN3ZWVw
TW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlIGRlc3RydWN0aW9uTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRs
ZTo6U2NyaWJibGVNb2RlIHNjcmliYmxlTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TmV3bHlB
bGxvY2F0ZWRNb2RlIG5ld2x5QWxsb2NhdGVkTW9kZSwgTWFya2VkQmxvY2s6OkhhbmRsZTo6TWFy
a3NNb2RlIG1hcmtzTW9kZT4KIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnNwZWNpYWxp
emVkU3dlZXAoKQogewogICAgIFJFTEVBU0VfQVNTRVJUKCEoZGVzdHJ1Y3Rpb25Nb2RlID09IERv
ZXNOb3ROZWVkRGVzdHJ1Y3Rpb24gJiYgc3dlZXBNb2RlID09IFN3ZWVwT25seSkpOwpAQCAtOTgs
NyArOTgsNyBAQCBGcmVlTGlzdCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzcGVjaWFsaXplCiAgICAg
aWYgKE9wdGlvbnM6OnVzZUJ1bXBBbGxvY2F0b3IoKQogICAgICAgICAmJiBlbXB0eU1vZGUgPT0g
SXNFbXB0eQogICAgICAgICAmJiBuZXdseUFsbG9jYXRlZE1vZGUgPT0gRG9lc05vdEhhdmVOZXds
eUFsbG9jYXRlZCkgewotICAgICAgICBBU1NFUlQoZmxpcE1vZGUgPT0gTmVlZHNGbGlwKTsKKyAg
ICAgICAgQVNTRVJUKG1hcmtzTW9kZSA9PSBNYXJrc1N0YWxlKTsKICAgICAgICAgCiAgICAgICAg
IGNoYXIqIHN0YXJ0T2ZMYXN0Q2VsbCA9IHN0YXRpY19jYXN0PGNoYXIqPihjZWxsQWxpZ24oYmxv
Y2suYXRvbXMoKSArIG1fZW5kQXRvbSAtIDEpKTsKICAgICAgICAgY2hhciogcGF5bG9hZEVuZCA9
IHN0YXJ0T2ZMYXN0Q2VsbCArIGNlbGxTaXplKCk7CkBAIC0xMjQsNyArMTI0LDcgQEAgRnJlZUxp
c3QgTWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZQogICAgIGJvb2wgaXNFbXB0eSA9IHRy
dWU7CiAgICAgZm9yIChzaXplX3QgaSA9IGZpcnN0QXRvbSgpOyBpIDwgbV9lbmRBdG9tOyBpICs9
IG1fYXRvbXNQZXJDZWxsKSB7CiAgICAgICAgIGlmIChlbXB0eU1vZGUgPT0gTm90RW1wdHkKLSAg
ICAgICAgICAgICYmICgoZmxpcE1vZGUgPT0gRG9lc05vdE5lZWRGbGlwICYmIGJsb2NrLm1fbWFy
a3MuZ2V0KGkpKQorICAgICAgICAgICAgJiYgKChtYXJrc01vZGUgPT0gTWFya3NOb3RTdGFsZSAm
JiBibG9jay5tX21hcmtzLmdldChpKSkKICAgICAgICAgICAgICAgICB8fCAobmV3bHlBbGxvY2F0
ZWRNb2RlID09IEhhc05ld2x5QWxsb2NhdGVkICYmIG1fbmV3bHlBbGxvY2F0ZWQtPmdldChpKSkp
KSB7CiAgICAgICAgICAgICBpc0VtcHR5ID0gZmFsc2U7CiAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTIxNiwxNiArMjE2LDE2IEBAIHRlbXBsYXRlPE1hcmtlZEJsb2NrOjpIYW5kbGU6OkVtcHR5
TW9kZSAKIEZyZWVMaXN0IE1hcmtlZEJsb2NrOjpIYW5kbGU6OnN3ZWVwSGVscGVyU2VsZWN0U3dl
ZXBNb2RlKFN3ZWVwTW9kZSBzd2VlcE1vZGUpCiB7CiAgICAgaWYgKHN3ZWVwTW9kZSA9PSBTd2Vl
cFRvRnJlZUxpc3QpCi0gICAgICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEZsaXBNb2RlPGVt
cHR5TW9kZSwgU3dlZXBUb0ZyZWVMaXN0LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwg
bmV3bHlBbGxvY2F0ZWRNb2RlPigpOwotICAgIHJldHVybiBzd2VlcEhlbHBlclNlbGVjdEZsaXBN
b2RlPGVtcHR5TW9kZSwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwg
bmV3bHlBbGxvY2F0ZWRNb2RlPigpOworICAgICAgICByZXR1cm4gc3dlZXBIZWxwZXJTZWxlY3RN
YXJrc01vZGU8ZW1wdHlNb2RlLCBTd2VlcFRvRnJlZUxpc3QsIGRlc3RydWN0aW9uTW9kZSwgc2Ny
aWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGU+KCk7CisgICAgcmV0dXJuIHN3ZWVwSGVscGVy
U2VsZWN0TWFya3NNb2RlPGVtcHR5TW9kZSwgU3dlZXBPbmx5LCBkZXN0cnVjdGlvbk1vZGUsIHNj
cmliYmxlTW9kZSwgbmV3bHlBbGxvY2F0ZWRNb2RlPigpOwogfQogCiB0ZW1wbGF0ZTxNYXJrZWRC
bG9jazo6SGFuZGxlOjpFbXB0eU1vZGUgZW1wdHlNb2RlLCBNYXJrZWRCbG9jazo6SGFuZGxlOjpT
d2VlcE1vZGUgc3dlZXBNb2RlLCBEZXN0cnVjdGlvbk1vZGUgZGVzdHJ1Y3Rpb25Nb2RlLCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpTY3JpYmJsZU1vZGUgc2NyaWJibGVNb2RlLCBNYXJrZWRCbG9jazo6
SGFuZGxlOjpOZXdseUFsbG9jYXRlZE1vZGUgbmV3bHlBbGxvY2F0ZWRNb2RlPgotRnJlZUxpc3Qg
TWFya2VkQmxvY2s6OkhhbmRsZTo6c3dlZXBIZWxwZXJTZWxlY3RGbGlwTW9kZSgpCitGcmVlTGlz
dCBNYXJrZWRCbG9jazo6SGFuZGxlOjpzd2VlcEhlbHBlclNlbGVjdE1hcmtzTW9kZSgpCiB7Ci0g
ICAgaWYgKG5lZWRzRmxpcCgpKQotICAgICAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxlbXB0
eU1vZGUsIHN3ZWVwTW9kZSwgZGVzdHJ1Y3Rpb25Nb2RlLCBzY3JpYmJsZU1vZGUsIG5ld2x5QWxs
b2NhdGVkTW9kZSwgTmVlZHNGbGlwPigpOwotICAgIHJldHVybiBzcGVjaWFsaXplZFN3ZWVwPGVt
cHR5TW9kZSwgc3dlZXBNb2RlLCBkZXN0cnVjdGlvbk1vZGUsIHNjcmliYmxlTW9kZSwgbmV3bHlB
bGxvY2F0ZWRNb2RlLCBEb2VzTm90TmVlZEZsaXA+KCk7CisgICAgaWYgKGFyZU1hcmtzU3RhbGUo
KSkKKyAgICAgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBzd2VlcE1vZGUs
IGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGUsIE1hcmtz
U3RhbGU+KCk7CisgICAgcmV0dXJuIHNwZWNpYWxpemVkU3dlZXA8ZW1wdHlNb2RlLCBzd2VlcE1v
ZGUsIGRlc3RydWN0aW9uTW9kZSwgc2NyaWJibGVNb2RlLCBuZXdseUFsbG9jYXRlZE1vZGUsIE1h
cmtzTm90U3RhbGU+KCk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6dW5zd2VlcFdp
dGhOb05ld2x5QWxsb2NhdGVkKCkKQEAgLTM0MiwxMiArMzQyLDEyIEBAIHZvaWQgTWFya2VkQmxv
Y2s6OkhhbmRsZTo6Zm9yRWFjaEZyZWVDZWwKICAgICB9CiB9CiAKLXZvaWQgTWFya2VkQmxvY2s6
OmFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbiBoZWFwVmVyc2lvbikKK3ZvaWQgTWFya2VkQmxv
Y2s6OmFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbikKIHsKICAgICBB
U1NFUlQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLmlzTWFya2luZygpKTsKICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX2xvY2spOwotICAgIGlmIChuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKSB7Ci0g
ICAgICAgIGNsZWFyTWFya3MoaGVhcFZlcnNpb24pOworICAgIGlmIChhcmVNYXJrc1N0YWxlKG1h
cmtpbmdWZXJzaW9uKSkgeworICAgICAgICBjbGVhck1hcmtzKG1hcmtpbmdWZXJzaW9uKTsKICAg
ICAgICAgLy8gVGhpcyBtZWFucyB3ZSdyZSB0aGUgZmlyc3Qgb25lcyB0byBtYXJrIGFueSBvYmpl
Y3QgaW4gdGhpcyBibG9jay4KICAgICAgICAgaGFuZGxlKCkuYWxsb2NhdG9yKCktPmF0b21pY1Nl
dEFuZENoZWNrSXNNYXJraW5nTm90RW1wdHkoJmhhbmRsZSgpLCB0cnVlKTsKICAgICB9CkBAIC0z
NTUsNDcgKzM1NSw0NyBAQCB2b2lkIE1hcmtlZEJsb2NrOjphYm91dFRvTWFya1Nsb3coSGVhcFZl
CiAKIHZvaWQgTWFya2VkQmxvY2s6OmNsZWFyTWFya3MoKQogewotICAgIGNsZWFyTWFya3Modm0o
KS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSk7CisgICAgY2xlYXJNYXJrcyh2bSgpLT5o
ZWFwLm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNpb24oKSk7CiB9CiAKLXZvaWQgTWFya2VkQmxv
Y2s6OmNsZWFyTWFya3MoSGVhcFZlcnNpb24gaGVhcFZlcnNpb24pCit2b2lkIE1hcmtlZEJsb2Nr
OjpjbGVhck1hcmtzKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQogewogICAgIG1fbWFya3Mu
Y2xlYXJBbGwoKTsKICAgICBjbGVhckhhc0FueU1hcmtlZCgpOwogICAgIFdURjo6c3RvcmVTdG9y
ZUZlbmNlKCk7Ci0gICAgbV92ZXJzaW9uID0gaGVhcFZlcnNpb247CisgICAgbV9tYXJraW5nVmVy
c2lvbiA9IG1hcmtpbmdWZXJzaW9uOwogfQogCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotdm9pZCBN
YXJrZWRCbG9jazo6YXNzZXJ0RmxpcHBlZCgpCit2b2lkIE1hcmtlZEJsb2NrOjphc3NlcnRNYXJr
c05vdFN0YWxlKCkKIHsKLSAgICBBU1NFUlQobV92ZXJzaW9uID09IHZtKCktPmhlYXAub2JqZWN0
U3BhY2UoKS52ZXJzaW9uKCkpOworICAgIEFTU0VSVChtX21hcmtpbmdWZXJzaW9uID09IHZtKCkt
PmhlYXAub2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpKTsKIH0KICNlbmRpZiAvLyAhQVNT
RVJUX0RJU0FCTEVECiAKLWJvb2wgTWFya2VkQmxvY2s6Om5lZWRzRmxpcCgpCitib29sIE1hcmtl
ZEJsb2NrOjphcmVNYXJrc1N0YWxlKCkKIHsKLSAgICByZXR1cm4gbmVlZHNGbGlwKHZtKCktPmhl
YXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCkpOworICAgIHJldHVybiBhcmVNYXJrc1N0YWxlKHZt
KCktPmhlYXAub2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpKTsKIH0KIAotYm9vbCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpuZWVkc0ZsaXAoKQorYm9vbCBNYXJrZWRCbG9jazo6SGFuZGxlOjph
cmVNYXJrc1N0YWxlKCkKIHsKLSAgICByZXR1cm4gbV9ibG9jay0+bmVlZHNGbGlwKCk7CisgICAg
cmV0dXJuIG1fYmxvY2stPmFyZU1hcmtzU3RhbGUoKTsKIH0KIAogYm9vbCBNYXJrZWRCbG9jazo6
aXNNYXJrZWQoY29uc3Qgdm9pZCogcCkKIHsKLSAgICByZXR1cm4gaXNNYXJrZWQodm0oKS0+aGVh
cC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgcCk7CisgICAgcmV0dXJuIGlzTWFya2VkKHZtKCkt
PmhlYXAub2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpLCBwKTsKIH0KIAogYm9vbCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoY29uc3QgSGVhcENlbGwq
IGNlbGwpCiB7Ci0gICAgcmV0dXJuIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh2bSgpLT5oZWFw
Lm9iamVjdFNwYWNlKCkudmVyc2lvbigpLCBjZWxsKTsKKyAgICByZXR1cm4gaXNNYXJrZWRPck5l
d2x5QWxsb2NhdGVkKHZtKCktPmhlYXAub2JqZWN0U3BhY2UoKS5tYXJraW5nVmVyc2lvbigpLCBj
ZWxsKTsKIH0KIAogYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRPck5ld2x5QWxsb2NhdGVkKGNv
bnN0IEhlYXBDZWxsKiBjZWxsKQogewotICAgIHJldHVybiBpc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLnZlcnNpb24oKSwgY2VsbCk7CisgICAgcmV0dXJu
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkubWFya2lu
Z1ZlcnNpb24oKSwgY2VsbCk7CiB9CiAKIHZvaWQgTWFya2VkQmxvY2s6OkhhbmRsZTo6ZGlkQ29u
c3VtZUZyZWVMaXN0KCkKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmRpZENvbnN1bWVGcmVlCiAKIHNpemVfdCBNYXJrZWRCbG9jazo6bWFya0NvdW50KCkKIHsK
LSAgICByZXR1cm4gbmVlZHNGbGlwKCkgPyAwIDogbV9tYXJrcy5jb3VudCgpOworICAgIHJldHVy
biBhcmVNYXJrc1N0YWxlKCkgPyAwIDogbV9tYXJrcy5jb3VudCgpOwogfQogCiBib29sIE1hcmtl
ZEJsb2NrOjpIYW5kbGU6OmlzRW1wdHkoKQpAQCAtNDc2LDEyICs0NzYsMTIgQEAgdm9pZCBNYXJr
ZWRCbG9jazo6SGFuZGxlOjpkaWRSZW1vdmVGcm9tQQogCiBib29sIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTGl2ZShjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsKLSAgICByZXR1cm4gaXNMaXZlKHZt
KCktPmhlYXAub2JqZWN0U3BhY2UoKS52ZXJzaW9uKCksIGNlbGwpOworICAgIHJldHVybiBpc0xp
dmUodm0oKS0+aGVhcC5vYmplY3RTcGFjZSgpLm1hcmtpbmdWZXJzaW9uKCksIGNlbGwpOwogfQog
CiBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoY29uc3Qgdm9pZCogcCkKIHsK
LSAgICByZXR1cm4gaXNMaXZlQ2VsbCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkudmVyc2lvbigp
LCBwKTsKKyAgICByZXR1cm4gaXNMaXZlQ2VsbCh2bSgpLT5oZWFwLm9iamVjdFNwYWNlKCkubWFy
a2luZ1ZlcnNpb24oKSwgcCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCShyZXZpc2lvbiAyMDYxNTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTQsMTQgKzE1NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHNpemVfdCBtYXJrQ291bnQoKTsK
ICAgICAgICAgc2l6ZV90IHNpemUoKTsKICAgICAgICAgICAgIAotICAgICAgICBpbmxpbmUgYm9v
bCBpc0xpdmUoSGVhcFZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7Ci0gICAgICAgIGlubGluZSBi
b29sIGlzTGl2ZUNlbGwoSGVhcFZlcnNpb24sIGNvbnN0IHZvaWQqKTsKKyAgICAgICAgaW5saW5l
IGJvb2wgaXNMaXZlKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCop
OworICAgICAgICBpbmxpbmUgYm9vbCBpc0xpdmVDZWxsKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJz
aW9uLCBjb25zdCB2b2lkKik7CiAKICAgICAgICAgYm9vbCBpc0xpdmUoY29uc3QgSGVhcENlbGwq
KTsKICAgICAgICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsKIAogICAgICAgICBib29s
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChjb25zdCBIZWFwQ2VsbCopOwotICAgICAgICBib29s
IGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsK
KyAgICAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQoSGVhcFZlcnNpb24gbWFya2lu
Z1ZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKik7CiAgICAgICAgICAgICAKICAgICAgICAgYm9vbCBp
c05ld2x5QWxsb2NhdGVkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBzZXROZXdseUFsbG9j
YXRlZChjb25zdCB2b2lkKik7CkBAIC0xNzMsOSArMTczLDkgQEAgcHVibGljOgogICAgICAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNo
TGl2ZUNlbGwoY29uc3QgRnVuY3RvciYpOwogICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVu
Y3Rvcj4gaW5saW5lIEl0ZXJhdGlvblN0YXR1cyBmb3JFYWNoRGVhZENlbGwoY29uc3QgRnVuY3Rv
ciYpOwogICAgICAgICAgICAgCi0gICAgICAgIGJvb2wgbmVlZHNGbGlwKCk7CisgICAgICAgIGJv
b2wgYXJlTWFya3NTdGFsZSgpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBhc3NlcnRGbGlwcGVk
KCk7CisgICAgICAgIHZvaWQgYXNzZXJ0TWFya3NOb3RTdGFsZSgpOwogICAgICAgICAgICAgCiAg
ICAgICAgIGJvb2wgaXNGcmVlTGlzdGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0ZyZWVMaXN0ZWQ7
IH0KICAgICAgICAgCkBAIC0yMDgsMTEgKzIwOCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIEZyZWVM
aXN0IHN3ZWVwSGVscGVyU2VsZWN0U3dlZXBNb2RlKFN3ZWVwTW9kZSA9IFN3ZWVwT25seSk7CiAg
ICAgICAgIAogICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIFN3ZWVwTW9kZSwgRGVzdHJ1Y3Rp
b25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9kZT4KLSAgICAgICAgRnJlZUxp
c3Qgc3dlZXBIZWxwZXJTZWxlY3RGbGlwTW9kZSgpOworICAgICAgICBGcmVlTGlzdCBzd2VlcEhl
bHBlclNlbGVjdE1hcmtzTW9kZSgpOwogICAgICAgICAKLSAgICAgICAgZW51bSBGbGlwTW9kZSB7
IE5lZWRzRmxpcCwgRG9lc05vdE5lZWRGbGlwIH07CisgICAgICAgIGVudW0gTWFya3NNb2RlIHsg
TWFya3NTdGFsZSwgTWFya3NOb3RTdGFsZSB9OwogICAgICAgICAKLSAgICAgICAgdGVtcGxhdGU8
RW1wdHlNb2RlLCBTd2VlcE1vZGUsIERlc3RydWN0aW9uTW9kZSwgU2NyaWJibGVNb2RlLCBOZXds
eUFsbG9jYXRlZE1vZGUsIEZsaXBNb2RlPgorICAgICAgICB0ZW1wbGF0ZTxFbXB0eU1vZGUsIFN3
ZWVwTW9kZSwgRGVzdHJ1Y3Rpb25Nb2RlLCBTY3JpYmJsZU1vZGUsIE5ld2x5QWxsb2NhdGVkTW9k
ZSwgTWFya3NNb2RlPgogICAgICAgICBGcmVlTGlzdCBzcGVjaWFsaXplZFN3ZWVwKCk7CiAgICAg
ICAgICAgICAKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KQEAgLTI1MiwxMiArMjUy
LDEyIEBAIHB1YmxpYzoKICAgICBzaXplX3QgbWFya0NvdW50KCk7CiAKICAgICBib29sIGlzTWFy
a2VkKGNvbnN0IHZvaWQqKTsKLSAgICBib29sIGlzTWFya2VkKEhlYXBWZXJzaW9uLCBjb25zdCB2
b2lkKik7Ci0gICAgYm9vbCBpc01hcmtlZENvbmN1cnJlbnRseShIZWFwVmVyc2lvbiwgY29uc3Qg
dm9pZCopOworICAgIGJvb2wgaXNNYXJrZWQoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNv
bnN0IHZvaWQqKTsKKyAgICBib29sIGlzTWFya2VkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9uIG1h
cmtpbmdWZXJzaW9uLCBjb25zdCB2b2lkKik7CiAgICAgYm9vbCB0ZXN0QW5kU2V0TWFya2VkKGNv
bnN0IHZvaWQqKTsKICAgICAgICAgCiAgICAgYm9vbCBpc01hcmtlZE9yTmV3bHlBbGxvY2F0ZWQo
Y29uc3QgSGVhcENlbGwqKTsKLSAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFw
VmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKKyAgICBib29sIGlzTWFya2VkT3JOZXdseUFsbG9j
YXRlZChIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqKTsKICAgICAK
ICAgICBib29sIGlzQXRvbShjb25zdCB2b2lkKik7CiAgICAgdm9pZCBjbGVhck1hcmtlZChjb25z
dCB2b2lkKik7CkBAIC0yNzAsMTYgKzI3MCwxNiBAQCBwdWJsaWM6CiAgICAgICAgIAogICAgIFdl
YWtTZXQmIHdlYWtTZXQoKTsKICAgICAKLSAgICBib29sIG5lZWRzRmxpcChIZWFwVmVyc2lvbik7
Ci0gICAgYm9vbCBuZWVkc0ZsaXAoKTsKKyAgICBib29sIGFyZU1hcmtzU3RhbGUoSGVhcFZlcnNp
b24gbWFya2luZ1ZlcnNpb24pOworICAgIGJvb2wgYXJlTWFya3NTdGFsZSgpOwogICAgIAotICAg
IHZvaWQgYWJvdXRUb01hcmsoSGVhcFZlcnNpb24pOworICAgIHZvaWQgYWJvdXRUb01hcmsoSGVh
cFZlcnNpb24gbWFya2luZ1ZlcnNpb24pOwogICAgICAgICAKLSAgICB2b2lkIGFzc2VydEZsaXBw
ZWQoKTsKKyAgICB2b2lkIGFzc2VydE1hcmtzTm90U3RhbGUoKTsKICAgICAgICAgCiAgICAgYm9v
bCBuZWVkc0Rlc3RydWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZWVkc0Rlc3RydWN0aW9uOyB9
CiAgICAgCi0gICAgaW5saW5lIHZvaWQgcmVzZXRWZXJzaW9uKCk7CisgICAgaW5saW5lIHZvaWQg
cmVzZXRNYXJraW5nVmVyc2lvbigpOwogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0gYXRvbVNpemUgLSAxOwpAQCAtMjg5LDkgKzI4OSw5
IEBAIHByaXZhdGU6CiAgICAgTWFya2VkQmxvY2soVk0mLCBIYW5kbGUmKTsKICAgICBBdG9tKiBh
dG9tcygpOwogICAgICAgICAKLSAgICB2b2lkIGFib3V0VG9NYXJrU2xvdyhIZWFwVmVyc2lvbik7
CisgICAgdm9pZCBhYm91dFRvTWFya1Nsb3coSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pOwog
ICAgIHZvaWQgY2xlYXJNYXJrcygpOwotICAgIHZvaWQgY2xlYXJNYXJrcyhIZWFwVmVyc2lvbik7
CisgICAgdm9pZCBjbGVhck1hcmtzKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKTsKICAgICB2
b2lkIGNsZWFySGFzQW55TWFya2VkKCk7CiAgICAgCiAgICAgdm9pZCBub3RlTWFya2VkU2xvdygp
OwpAQCAtMzI4LDcgKzMyOCw3IEBAIHByaXZhdGU6CiAgICAgLy8gICAgIG1fYmlhc2VkTWFya0Nv
dW50ICE9IG1fbWFya0NvdW50QmlhcwogICAgIGludDE2X3QgbV9tYXJrQ291bnRCaWFzOwogCi0g
ICAgSGVhcFZlcnNpb24gbV92ZXJzaW9uOworICAgIEhlYXBWZXJzaW9uIG1fbWFya2luZ1ZlcnNp
b247CiAgICAgCiAgICAgSGFuZGxlJiBtX2hhbmRsZTsKICAgICBWTSogbV92bTsKQEAgLTQ2OSwz
NyArNDY5LDM3IEBAIGlubGluZSBzaXplX3QgTWFya2VkQmxvY2s6OmF0b21OdW1iZXIoY28KICAg
ICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8Qml0cz4ocCkgLSByZWludGVycHJldF9jYXN0PEJp
dHM+KHRoaXMpKSAvIGF0b21TaXplOwogfQogCi1pbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6bmVl
ZHNGbGlwKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6
OmFyZU1hcmtzU3RhbGUoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24pCiB7Ci0gICAgcmV0dXJu
IGhlYXBWZXJzaW9uICE9IG1fdmVyc2lvbjsKKyAgICByZXR1cm4gbWFya2luZ1ZlcnNpb24gIT0g
bV9tYXJraW5nVmVyc2lvbjsKIH0KIAotaW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmFib3V0VG9N
YXJrKEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uKQoraW5saW5lIHZvaWQgTWFya2VkQmxvY2s6OmFi
b3V0VG9NYXJrKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKQogewotICAgIGlmIChVTkxJS0VM
WShuZWVkc0ZsaXAoaGVhcFZlcnNpb24pKSkKLSAgICAgICAgYWJvdXRUb01hcmtTbG93KGhlYXBW
ZXJzaW9uKTsKKyAgICBpZiAoVU5MSUtFTFkoYXJlTWFya3NTdGFsZShtYXJraW5nVmVyc2lvbikp
KQorICAgICAgICBhYm91dFRvTWFya1Nsb3cobWFya2luZ1ZlcnNpb24pOwogICAgIFdURjo6bG9h
ZExvYWRGZW5jZSgpOwogfQogCiAjaWYgQVNTRVJUX0RJU0FCTEVECi1pbmxpbmUgdm9pZCBNYXJr
ZWRCbG9jazo6YXNzZXJ0RmxpcHBlZCgpCitpbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6YXNzZXJ0
TWFya3NOb3RTdGFsZSgpCiB7CiB9CiAjZW5kaWYgLy8gQVNTRVJUX0RJU0FCTEVECiAKLWlubGlu
ZSB2b2lkIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmFzc2VydEZsaXBwZWQoKQoraW5saW5lIHZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6YXNzZXJ0TWFya3NOb3RTdGFsZSgpCiB7Ci0gICAgYmxvY2so
KS5hc3NlcnRGbGlwcGVkKCk7CisgICAgYmxvY2soKS5hc3NlcnRNYXJrc05vdFN0YWxlKCk7CiB9
CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChIZWFwVmVyc2lvbiBoZWFwVmVy
c2lvbiwgY29uc3Qgdm9pZCogcCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZChI
ZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKIHsKLSAgICByZXR1cm4g
bmVlZHNGbGlwKGhlYXBWZXJzaW9uKSA/IGZhbHNlIDogbV9tYXJrcy5nZXQoYXRvbU51bWJlcihw
KSk7CisgICAgcmV0dXJuIGFyZU1hcmtzU3RhbGUobWFya2luZ1ZlcnNpb24pID8gZmFsc2UgOiBt
X21hcmtzLmdldChhdG9tTnVtYmVyKHApKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6
OmlzTWFya2VkQ29uY3VycmVudGx5KEhlYXBWZXJzaW9uIGhlYXBWZXJzaW9uLCBjb25zdCB2b2lk
KiBwKQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OmlzTWFya2VkQ29uY3VycmVudGx5KEhlYXBW
ZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBjb25zdCB2b2lkKiBwKQogewotICAgIGlmIChuZWVkc0Zs
aXAoaGVhcFZlcnNpb24pKQorICAgIGlmIChhcmVNYXJrc1N0YWxlKG1hcmtpbmdWZXJzaW9uKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIFdURjo6bG9hZExvYWRGZW5jZSgpOwogICAgIHJl
dHVybiBtX21hcmtzLmdldChhdG9tTnVtYmVyKHApKTsKQEAgLTUwNyw3ICs1MDcsNyBAQCBpbmxp
bmUgYm9vbCBNYXJrZWRCbG9jazo6aXNNYXJrZWRDb25jdXJyCiAKIGlubGluZSBib29sIE1hcmtl
ZEJsb2NrOjp0ZXN0QW5kU2V0TWFya2VkKGNvbnN0IHZvaWQqIHApCiB7Ci0gICAgYXNzZXJ0Rmxp
cHBlZCgpOworICAgIGFzc2VydE1hcmtzTm90U3RhbGUoKTsKICAgICByZXR1cm4gbV9tYXJrcy5j
b25jdXJyZW50VGVzdEFuZFNldChhdG9tTnVtYmVyKHApKTsKIH0KIApAQCAtNTM1LDE0ICs1MzUs
MTQgQEAgaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6Y2xlYXJOZQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRP
ck5ld2x5QWxsb2NhdGVkKEhlYXBWZXJzaW9uIHZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxs
KQoraW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNNYXJrZWRPck5ld2x5QWxsb2Nh
dGVkKEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uLCBjb25zdCBIZWFwQ2VsbCogY2VsbCkKIHsK
LSAgICByZXR1cm4gbV9ibG9jay0+aXNNYXJrZWQodmVyc2lvbiwgY2VsbCkgfHwgKG1fbmV3bHlB
bGxvY2F0ZWQgJiYgaXNOZXdseUFsbG9jYXRlZChjZWxsKSk7CisgICAgcmV0dXJuIG1fYmxvY2st
PmlzTWFya2VkKG1hcmtpbmdWZXJzaW9uLCBjZWxsKSB8fCAobV9uZXdseUFsbG9jYXRlZCAmJiBp
c05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKIH0KIAotaW5saW5lIGJvb2wgTWFya2VkQmxvY2s6Omlz
TWFya2VkT3JOZXdseUFsbG9jYXRlZChIZWFwVmVyc2lvbiB2ZXJzaW9uLCBjb25zdCBIZWFwQ2Vs
bCogY2VsbCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjppc01hcmtlZE9yTmV3bHlBbGxvY2F0
ZWQoSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24sIGNvbnN0IEhlYXBDZWxsKiBjZWxsKQogewot
ICAgIHJldHVybiBpc01hcmtlZCh2ZXJzaW9uLCBjZWxsKSB8fCAobV9oYW5kbGUubV9uZXdseUFs
bG9jYXRlZCAmJiBtX2hhbmRsZS5pc05ld2x5QWxsb2NhdGVkKGNlbGwpKTsKKyAgICByZXR1cm4g
aXNNYXJrZWQobWFya2luZ1ZlcnNpb24sIGNlbGwpIHx8IChtX2hhbmRsZS5tX25ld2x5QWxsb2Nh
dGVkICYmIG1faGFuZGxlLmlzTmV3bHlBbGxvY2F0ZWQoY2VsbCkpOwogfQogCiBpbmxpbmUgYm9v
bCBNYXJrZWRCbG9jazo6aXNBdG9tKGNvbnN0IHZvaWQqIHApCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAkocmV2aXNpb24gMjA2MTU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWlubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZShIZWFwVmVyc2lvbiB2ZXJzaW9uLCBj
b25zdCBIZWFwQ2VsbCogY2VsbCkKK2lubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6Omlz
TGl2ZShIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbiwgY29uc3QgSGVhcENlbGwqIGNlbGwpCiB7
CiAgICAgQVNTRVJUKCFpc0ZyZWVMaXN0ZWQoKSk7CiAgICAgCkBAIC00NCwxNyArNDQsMTcgQEAg
aW5saW5lIGJvb2wgTWFya2VkQmxvY2s6OkhhbmRsZTo6aXNMaXZlKAogICAgIGlmIChhbGxvY2F0
b3IoKS0+aXNBbGxvY2F0ZWQodGhpcykpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAg
IGlmIChibG9jay5uZWVkc0ZsaXAodmVyc2lvbikpCisgICAgaWYgKGJsb2NrLmFyZU1hcmtzU3Rh
bGUobWFya2luZ1ZlcnNpb24pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
YmxvY2suaXNNYXJrZWQoY2VsbCk7CiB9CiAKLWlubGluZSBib29sIE1hcmtlZEJsb2NrOjpIYW5k
bGU6OmlzTGl2ZUNlbGwoSGVhcFZlcnNpb24gdmVyc2lvbiwgY29uc3Qgdm9pZCogcCkKK2lubGlu
ZSBib29sIE1hcmtlZEJsb2NrOjpIYW5kbGU6OmlzTGl2ZUNlbGwoSGVhcFZlcnNpb24gbWFya2lu
Z1ZlcnNpb24sIGNvbnN0IHZvaWQqIHApCiB7CiAgICAgaWYgKCFtX2Jsb2NrLT5pc0F0b20ocCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gaXNMaXZlKHZlcnNpb24sIHN0YXRp
Y19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOworICAgIHJldHVybiBpc0xpdmUobWFya2luZ1Zl
cnNpb24sIHN0YXRpY19jYXN0PGNvbnN0IEhlYXBDZWxsKj4ocCkpOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgRnVuY3Rvcj4KQEAgLTg3LDkgKzg3LDkgQEAgaW5saW5lIEl0ZXJhdGlvblN0YXR1
cyBNYXJrZWRCbG9jazo6SGFuZAogICAgIHJldHVybiBJdGVyYXRpb25TdGF0dXM6OkNvbnRpbnVl
OwogfQogCi1pbmxpbmUgdm9pZCBNYXJrZWRCbG9jazo6cmVzZXRWZXJzaW9uKCkKK2lubGluZSB2
b2lkIE1hcmtlZEJsb2NrOjpyZXNldE1hcmtpbmdWZXJzaW9uKCkKIHsKLSAgICBtX3ZlcnNpb24g
PSBNYXJrZWRTcGFjZTo6bnVsbFZlcnNpb247CisgICAgbV9tYXJraW5nVmVyc2lvbiA9IE1hcmtl
ZFNwYWNlOjpudWxsVmVyc2lvbjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCShyZXZpc2lvbiAyMDYxNTUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1OCwxMyArNDU4LDEzIEBAIHZvaWQgTWFya2VkU3BhY2U6OmJlZ2luTWFya2lu
ZygpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEl0ZXJhdGlvblN0YXR1czo6Q29udGludWU7CiAg
ICAgICAgICAgICB9KTsKIAotICAgICAgICBtX3ZlcnNpb24gPSBuZXh0VmVyc2lvbihtX3ZlcnNp
b24pOworICAgICAgICBtX21hcmtpbmdWZXJzaW9uID0gbmV4dFZlcnNpb24obV9tYXJraW5nVmVy
c2lvbik7CiAgICAgICAgIAotICAgICAgICBpZiAoVU5MSUtFTFkobV92ZXJzaW9uID09IGluaXRp
YWxWZXJzaW9uKSkgeworICAgICAgICBpZiAoVU5MSUtFTFkobV9tYXJraW5nVmVyc2lvbiA9PSBp
bml0aWFsVmVyc2lvbikpIHsKICAgICAgICAgICAgIC8vIE9oIG5vISBWZXJzaW9uIHdyYXAtYXJv
dW5kISBXZSBoYW5kbGUgdGhpcyBieSBzZXR0aW5nIGFsbCBibG9jayB2ZXJzaW9ucyB0byBudWxs
LgogICAgICAgICAgICAgZm9yRWFjaEJsb2NrKAogICAgICAgICAgICAgICAgIFsmXSAoTWFya2Vk
QmxvY2s6OkhhbmRsZSogaGFuZGxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhhbmRsZS0+Ymxv
Y2soKS5yZXNldFZlcnNpb24oKTsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlLT5ibG9jaygp
LnJlc2V0TWFya2luZ1ZlcnNpb24oKTsKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgfQog
ICAgICAgICAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIE1hcmtlZFNwYWNlOjpiZWdpbk1hcmtp
bmcoKQogICAgIGlmICghQVNTRVJUX0RJU0FCTEVEKSB7CiAgICAgICAgIGZvckVhY2hCbG9jaygK
ICAgICAgICAgICAgIFsmXSAoTWFya2VkQmxvY2s6OkhhbmRsZSogYmxvY2spIHsKLSAgICAgICAg
ICAgICAgICBpZiAoYmxvY2stPm5lZWRzRmxpcCgpKQorICAgICAgICAgICAgICAgIGlmIChibG9j
ay0+YXJlTWFya3NTdGFsZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKCFibG9jay0+aXNGcmVlTGlzdGVkKCkpOwogICAgICAgICAgICAgfSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9u
IDIwNjE1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTE2Niw3ICsxNjYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzUGFn
ZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsKICAgICAKLSAgICBIZWFwVmVyc2lvbiB2ZXJzaW9uKCkg
Y29uc3QgeyByZXR1cm4gbV92ZXJzaW9uOyB9CisgICAgSGVhcFZlcnNpb24gbWFya2luZ1ZlcnNp
b24oKSBjb25zdCB7IHJldHVybiBtX21hcmtpbmdWZXJzaW9uOyB9CiAKICAgICBjb25zdCBWZWN0
b3I8TGFyZ2VBbGxvY2F0aW9uKj4mIGxhcmdlQWxsb2NhdGlvbnMoKSBjb25zdCB7IHJldHVybiBt
X2xhcmdlQWxsb2NhdGlvbnM7IH0KICAgICB1bnNpZ25lZCBsYXJnZUFsbG9jYXRpb25zTnVyc2Vy
eU9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0aW9uc051cnNlcnlPZmZzZXQ7
IH0KQEAgLTIxMiw3ICsyMTIsNyBAQCBwcml2YXRlOgogICAgIFN1YnNwYWNlIG1fYXV4aWxpYXJ5
U3BhY2U7CiAKICAgICBIZWFwKiBtX2hlYXA7Ci0gICAgSGVhcFZlcnNpb24gbV92ZXJzaW9uIHsg
aW5pdGlhbFZlcnNpb24gfTsKKyAgICBIZWFwVmVyc2lvbiBtX21hcmtpbmdWZXJzaW9uIHsgaW5p
dGlhbFZlcnNpb24gfTsKICAgICBzaXplX3QgbV9jYXBhY2l0eTsKICAgICBib29sIG1faXNJdGVy
YXRpbmc7CiAgICAgYm9vbCBtX2lzTWFya2luZyB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuY3BwCShyZXZpc2lvbiAyMDYxNTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc4LDcgKzc4LDcgQEAgU2xvdFZpc2l0b3I6OlNsb3RWaXNpdG9yKEhlYXAmIGhlYXApCiAg
ICAgLCBtX2J5dGVzQ29waWVkKDApCiAgICAgLCBtX3Zpc2l0Q291bnQoMCkKICAgICAsIG1faXNJ
blBhcmFsbGVsTW9kZShmYWxzZSkKLSAgICAsIG1fdmVyc2lvbihNYXJrZWRTcGFjZTo6aW5pdGlh
bFZlcnNpb24pCisgICAgLCBtX21hcmtpbmdWZXJzaW9uKE1hcmtlZFNwYWNlOjppbml0aWFsVmVy
c2lvbikKICAgICAsIG1faGVhcChoZWFwKQogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAsIG1f
aXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKGZhbHNlKQpAQCAtMTAyLDcgKzEwMiw3
IEBAIHZvaWQgU2xvdFZpc2l0b3I6OmRpZFN0YXJ0TWFya2luZygpCiAgICAgaWYgKEhlYXBQcm9m
aWxlciogaGVhcFByb2ZpbGVyID0gdm0oKS5oZWFwUHJvZmlsZXIoKSkKICAgICAgICAgbV9oZWFw
U25hcHNob3RCdWlsZGVyID0gaGVhcFByb2ZpbGVyLT5hY3RpdmVTbmFwc2hvdEJ1aWxkZXIoKTsK
ICAgICAKLSAgICBtX3ZlcnNpb24gPSBoZWFwKCktPm9iamVjdFNwYWNlKCkudmVyc2lvbigpOwor
ICAgIG1fbWFya2luZ1ZlcnNpb24gPSBoZWFwKCktPm9iamVjdFNwYWNlKCkubWFya2luZ1ZlcnNp
b24oKTsKIH0KIAogdm9pZCBTbG90VmlzaXRvcjo6cmVzZXQoKQpAQCAtMTM0LDcgKzEzNCw3IEBA
IHZvaWQgU2xvdFZpc2l0b3I6OmFwcGVuZEpTQ2VsbE9yQXV4aWxpYXIKICAgICAKICAgICBBU1NF
UlQoIW1faXNDaGVja2luZ0ZvckRlZmF1bHRNYXJrVmlvbGF0aW9uKTsKICAgICAKLSAgICBpZiAo
SGVhcDo6dGVzdEFuZFNldE1hcmtlZChtX3ZlcnNpb24sIGhlYXBDZWxsKSkKKyAgICBpZiAoSGVh
cDo6dGVzdEFuZFNldE1hcmtlZChtX21hcmtpbmdWZXJzaW9uLCBoZWFwQ2VsbCkpCiAgICAgICAg
IHJldHVybjsKICAgICAKICAgICBzd2l0Y2ggKGhlYXBDZWxsLT5jZWxsS2luZCgpKSB7CkBAIC0y
MDAsNyArMjAwLDcgQEAgdm9pZCBTbG90VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYQog
dGVtcGxhdGU8dHlwZW5hbWUgQ29udGFpbmVyVHlwZT4KIEFMV0FZU19JTkxJTkUgdm9pZCBTbG90
VmlzaXRvcjo6c2V0TWFya2VkQW5kQXBwZW5kVG9NYXJrU3RhY2soQ29udGFpbmVyVHlwZSYgY29u
dGFpbmVyLCBKU0NlbGwqIGNlbGwpCiB7Ci0gICAgY29udGFpbmVyLmFib3V0VG9NYXJrKG1fdmVy
c2lvbik7CisgICAgY29udGFpbmVyLmFib3V0VG9NYXJrKG1fbWFya2luZ1ZlcnNpb24pOwogICAg
IAogICAgIGlmIChjb250YWluZXIudGVzdEFuZFNldE1hcmtlZChjZWxsKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgU2xvdFZpc2l0b3I6Om1hcmtBdXhpbGlhcnko
Y29uc3Qgdm8KICAgICAKICAgICBBU1NFUlQoY2VsbC0+aGVhcCgpID09IGhlYXAoKSk7CiAgICAg
Ci0gICAgaWYgKEhlYXA6OnRlc3RBbmRTZXRNYXJrZWQobV92ZXJzaW9uLCBjZWxsKSkKKyAgICBp
ZiAoSGVhcDo6dGVzdEFuZFNldE1hcmtlZChtX21hcmtpbmdWZXJzaW9uLCBjZWxsKSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAogICAgIG5vdGVMaXZlQXV4aWxpYXJ5Q2VsbChjZWxsKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkocmV2aXNpb24gMjA2MTU1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNCdWlsZGluZ0hl
YXBTbmFwc2hvdCgpIGNvbnN0IHsgcmV0dXJuICEhbV9oZWFwU25hcHNob3RCdWlsZGVyOyB9CiAg
ICAgCi0gICAgSGVhcFZlcnNpb24gdmVyc2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fdmVyc2lvbjsg
fQorICAgIEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYXJr
aW5nVmVyc2lvbjsgfQogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBQYXJhbGxlbE1vZGVF
bmFibGVyOwpAQCAtMTYxLDcgKzE2MSw3IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fdmlzaXRD
b3VudDsKICAgICBib29sIG1faXNJblBhcmFsbGVsTW9kZTsKICAgICAKLSAgICBIZWFwVmVyc2lv
biBtX3ZlcnNpb247CisgICAgSGVhcFZlcnNpb24gbV9tYXJraW5nVmVyc2lvbjsKICAgICAKICAg
ICBIZWFwJiBtX2hlYXA7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0Js
b2NrLmNwcAkocmV2aXNpb24gMjA2MTU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vha0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgV2Vh
a0Jsb2NrOjpzcGVjaWFsaXplZFZpc2l0KENvbnRhaW4KIHsKICAgICBTbG90VmlzaXRvciYgdmlz
aXRvciA9IGhlYXBSb290VmlzaXRvci52aXNpdG9yKCk7CiAgICAgCi0gICAgSGVhcFZlcnNpb24g
dmVyc2lvbiA9IHZpc2l0b3IudmVyc2lvbigpOworICAgIEhlYXBWZXJzaW9uIG1hcmtpbmdWZXJz
aW9uID0gdmlzaXRvci5tYXJraW5nVmVyc2lvbigpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCB3ZWFrSW1wbENvdW50KCk7ICsraSkgewogICAgICAgICBXZWFrSW1wbCogd2Vha0ltcGwg
PSAmd2Vha0ltcGxzKClbaV07CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBXZWFrQmxvY2s6OnNw
ZWNpYWxpemVkVmlzaXQoQ29udGFpbgogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAg
Y29uc3QgSlNWYWx1ZSYganNWYWx1ZSA9IHdlYWtJbXBsLT5qc1ZhbHVlKCk7Ci0gICAgICAgIGlm
IChjb250YWluZXIuaXNNYXJrZWRDb25jdXJyZW50bHkodmVyc2lvbiwganNWYWx1ZS5hc0NlbGwo
KSkpCisgICAgICAgIGlmIChjb250YWluZXIuaXNNYXJrZWRDb25jdXJyZW50bHkobWFya2luZ1Zl
cnNpb24sIGpzVmFsdWUuYXNDZWxsKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IAogICAgICAgICBpZiAoIXdlYWtIYW5kbGVPd25lci0+aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9v
dHMoSGFuZGxlPFVua25vd24+Ojp3cmFwU2xvdCgmY29uc3RfY2FzdDxKU1ZhbHVlJj4oanNWYWx1
ZSkpLCB3ZWFrSW1wbC0+Y29udGV4dCgpLCB2aXNpdG9yKSkKQEAgLTE0NywxNCArMTQ3LDE0IEBA
IHZvaWQgV2Vha0Jsb2NrOjpyZWFwKCkKICAgICAvLyBJZiB0aGlzIFdlYWtCbG9jayBkb2Vzbid0
IGJlbG9uZyB0byBhIENlbGxDb250YWluZXIsIHdlIHdvbid0IGV2ZW4gYmUgaGVyZS4KICAgICBB
U1NFUlQobV9jb250YWluZXIpOwogICAgIAotICAgIEhlYXBWZXJzaW9uIHZlcnNpb24gPSBtX2Nv
bnRhaW5lci5oZWFwKCktPm9iamVjdFNwYWNlKCkudmVyc2lvbigpOworICAgIEhlYXBWZXJzaW9u
IG1hcmtpbmdWZXJzaW9uID0gbV9jb250YWluZXIuaGVhcCgpLT5vYmplY3RTcGFjZSgpLm1hcmtp
bmdWZXJzaW9uKCk7CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYWtJbXBsQ291bnQo
KTsgKytpKSB7CiAgICAgICAgIFdlYWtJbXBsKiB3ZWFrSW1wbCA9ICZ3ZWFrSW1wbHMoKVtpXTsK
ICAgICAgICAgaWYgKHdlYWtJbXBsLT5zdGF0ZSgpID4gV2Vha0ltcGw6OkRlYWQpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAobV9jb250YWluZXIuaXNNYXJrZWQodmVyc2lv
biwgd2Vha0ltcGwtPmpzVmFsdWUoKS5hc0NlbGwoKSkpIHsKKyAgICAgICAgaWYgKG1fY29udGFp
bmVyLmlzTWFya2VkKG1hcmtpbmdWZXJzaW9uLCB3ZWFrSW1wbC0+anNWYWx1ZSgpLmFzQ2VsbCgp
KSkgewogICAgICAgICAgICAgQVNTRVJUKHdlYWtJbXBsLT5zdGF0ZSgpID09IFdlYWtJbXBsOjpM
aXZlKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Cg==
</data>
<flag name="review"
          id="312632"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>