<?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>101390</bug_id>
          
          <creation_ts>2012-11-06 13:43:01 -0800</creation_ts>
          <short_desc>Copying phase should use work lists</short_desc>
          <delta_ts>2012-11-28 17:04:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>ggaren</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>760011</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-06 13:43:01 -0800</bug_when>
    <thetext>Currently we iterate over every cell in the Heap during the copying phase. To improve our performance under paging, we&apos;d like to reduce the number of pages we touch during a collection. One way to avoid having to iterate every cell during copying is to use per-CopiedBlock work lists created during the marking phase to record just the JSCells that need to be revisited during the copying phase. Then, during the copying phase, we iterate over all the CopiedBlocks and use their accumulated work lists to perform the necessary copying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760058</commentid>
    <comment_count>1</comment_count>
      <attachid>172651</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-06 14:35:17 -0800</bug_when>
    <thetext>Created attachment 172651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760122</commentid>
    <comment_count>2</comment_count>
      <attachid>172651</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-11-06 15:36:37 -0800</bug_when>
    <thetext>Comment on attachment 172651
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=172651&amp;action=review

&gt; Source/JavaScriptCore/heap/CopiedBlock.h:83
&gt; +    typedef Vector&lt;JSCell*, blockSize / (sizeof(JSValue) * 4)&gt; WorkList;

Would be better to conserve space for these wordlists somehow!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760852</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-11-07 10:35:30 -0800</bug_when>
    <thetext>Mark, you mentioned reduced paging as a benefit to this strategy. How can we measure that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778170</commentid>
    <comment_count>4</comment_count>
      <attachid>176542</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-28 12:13:08 -0800</bug_when>
    <thetext>Created attachment 176542
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778456</commentid>
    <comment_count>5</comment_count>
      <attachid>176542</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-28 16:14:12 -0800</bug_when>
    <thetext>Comment on attachment 176542
Patch

Rejecting attachment 176542 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
commit-queue/Source/WebKit/chromium/third_party/v8-i18n --revision 159 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
51&gt;At revision 159.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/15027601</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778506</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-11-28 17:04:33 -0800</bug_when>
    <thetext>Committed r136077: &lt;http://trac.webkit.org/changeset/136077&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172651</attachid>
            <date>2012-11-06 14:35:17 -0800</date>
            <delta_ts>2012-11-28 12:13:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101390-20121106143329.patch</filename>
            <type>text/plain</type>
            <size>16825</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzNjcyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBA
CisyMDEyLTExLTA2ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQ29weWluZyBwaGFzZSBzaG91bGQgdXNlIHdvcmsgbGlzdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTM5MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSB3ZSBpdGVyYXRl
IG92ZXIgZXZlcnkgY2VsbCBpbiB0aGUgSGVhcCBkdXJpbmcgdGhlIGNvcHlpbmcgcGhhc2UuIFRv
IGltcHJvdmUgb3VyIHBlcmZvcm1hbmNlIHVuZGVyIHBhZ2luZywgCisgICAgICAgIHdlJ2QgbGlr
ZSB0byByZWR1Y2UgdGhlIG51bWJlciBvZiBwYWdlcyB3ZSB0b3VjaCBkdXJpbmcgYSBjb2xsZWN0
aW9uLiBPbmUgd2F5IHRvIGF2b2lkIGhhdmluZyB0byBpdGVyYXRlIGV2ZXJ5IGNlbGwgCisgICAg
ICAgIGR1cmluZyBjb3B5aW5nIGlzIHRvIHVzZSBwZXItQ29waWVkQmxvY2sgd29yayBsaXN0cyBj
cmVhdGVkIGR1cmluZyB0aGUgbWFya2luZyBwaGFzZSB0byByZWNvcmQganVzdCB0aGUgSlNDZWxs
cyAKKyAgICAgICAgdGhhdCBuZWVkIHRvIGJlIHJldmlzaXRlZCBkdXJpbmcgdGhlIGNvcHlpbmcg
cGhhc2UuIFRoZW4sIGR1cmluZyB0aGUgY29weWluZyBwaGFzZSwgd2UgaXRlcmF0ZSBvdmVyIGFs
bCB0aGUgCisgICAgICAgIENvcGllZEJsb2NrcyBhbmQgdXNlIHRoZWlyIGFjY3VtdWxhdGVkIHdv
cmsgbGlzdHMgdG8gcGVyZm9ybSB0aGUgbmVjZXNzYXJ5IGNvcHlpbmcuIAorCisgICAgICAgIFRo
aXMgY2hhbmdlIGFsc28gaGFzIHRoZSBiZW5lZml0IG9mIG1ha2luZyBvdXIgQ29waWVkQmxvY2sg
cmVjbGFtYXRpb24gZGV0ZXJtaW5pc3RpYyBkdXJpbmcgdGhlIGNvcHlpbmcgcGhhc2Ugc28gd2Ug
CisgICAgICAgIGRvbid0IGdldCBpbnRvIHdlaXJkIHNpdHVhdGlvbnMgd2hlcmUgd2UgYXJlbid0
IGFibGUgdG8gZWFnZXJseSBmcmVlIHNvbWUgQ29waWVkQmxvY2tzIHVudGlsIHRoZSB2ZXJ5IGVu
ZCBvZiAKKyAgICAgICAgY29sbGVjdGlvbiAodGhpcyBpcyBhZG1pdHRlZGx5IG5vdCB2ZXJ5IGNv
bW1vbikuIAorCisgICAgICAgICogaGVhcC9Db3BpZWRCbG9jay5oOgorICAgICAgICAoQ29waWVk
QmxvY2spOgorICAgICAgICAoSlNDOjpDb3BpZWRCbG9jazo6Q29waWVkQmxvY2spOgorICAgICAg
ICAoSlNDOjpDb3BpZWRCbG9jazo6cmVwb3J0TGl2ZUJ5dGVzKTogV2Ugbm93IG5lZWQgdG8ga25v
dyB0aGUgb3duZXIgb2YgdGhlIGxpdmUgYnl0ZXMgYmVpbmcgcmVwb3J0ZWQgc28gdGhhdCB3ZSBj
YW4gCisgICAgICAgIHJlY29yZCB0aGUgb3duZXIgaW4gYSBsaXN0IHRvIGJlIHJldmlzaXRlZCBs
YXRlci4KKyAgICAgICAgKEpTQzo6Q29waWVkQmxvY2s6OmRpZFN1cnZpdmVHQyk6IFdlIG5vdyBj
bGVhciB0aGUgd29ya2xpc3Qgd2hlbiB3ZSBzdXJ2aXZlIGEgR0MgdG8gY3V0IGRvd24gb24gbWVt
b3J5IHVzZS4KKyAgICAgICAgKEpTQzo6Q29waWVkQmxvY2s6OmRpZEV2YWN1YXRlQnl0ZXMpOiBX
ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IGF0b21pY2FsbHkgZGVjcmVtZW50aW5nIHRoZSBs
aXZlIGJ5dGVzIGNvdW50IHNpbmNlIAorICAgICAgICB3ZSBub3cgZXZhY3VhdGUgYSBzaW5nbGUg
YmxvY2sgYXQgYSB0aW1lIG9uIGEgc2luZ2xlIEdDIHRocmVhZC4KKyAgICAgICAgKEpTQzo6Q29w
aWVkQmxvY2s6OnBpbik6IFdlIGFkZCB0aGlzIGZ1bmN0aW9uIHRvIGVuY2Fwc3VsYXRlIHRoZSBh
Y3Qgb2YgcGlubmluZy4gV2UgYWxzbyBjbGVhciB0aGUgd29ya2xpc3Qgc28gdGhhdCAKKyAgICAg
ICAgYW55IG1lbW9yeSB0aGF0IHdhcyB1c2VkIGNhbiBiZSByZS11c2VkIGR1cmluZyB0aGUgbWFy
ayBwaGFzZSBpZiBhIENvcGllZEJsb2NrIGdldHMgZnVsbCBlbm91Z2ggdG8gbm90IG5lZWQgYSB3
b3JrbGlzdC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNvcGllZEJsb2NrOjpoYXNX
b3JrTGlzdCk6CisgICAgICAgIChKU0M6OkNvcGllZEJsb2NrOjp3b3JrTGlzdCk6CisgICAgICAg
ICogaGVhcC9Db3BpZWRTcGFjZS5oOgorICAgICAgICAoQ29waWVkU3BhY2UpOgorICAgICAgICAq
IGhlYXAvQ29waWVkU3BhY2VJbmxpbmVNZXRob2RzLmg6CisgICAgICAgIChKU0M6OkNvcGllZFNw
YWNlOjpwaW4pOiBDYWxscyB0aGUgQ29waWVkQmxvY2s6OnBpbigpIGZ1bmN0aW9uIG5vdy4KKyAg
ICAgICAgKiBoZWFwL0NvcHlWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Q29weVZpc2l0b3I6
OmNvcHlGcm9tU2hhcmVkKTogV2Ugbm93IGl0ZXJhdGUgYSBzZWdtZW50IG9mIENvcGllZEJsb2Nr
cyBpbnN0ZWFkIG9mIE1hcmtlZEJsb2NrcywgYW5kIHRoZW4gCisgICAgICAgIGl0ZXJhdGUgb3Zl
ciB0aGVpciB3b3JrbGlzdHMuCisgICAgICAgICogaGVhcC9Db3B5VmlzaXRvci5oOgorICAgICAg
ICAoQ29weVZpc2l0b3IpOgorICAgICAgICAqIGhlYXAvQ29weVZpc2l0b3JJbmxpbmVNZXRob2Rz
Lmg6CisgICAgICAgIChKU0M6OkNvcHlWaXNpdG9yOjp2aXNpdENlbGwpOiBXZSBjdXJyZW50bHkg
b25seSBoYXZlIGEgc2luZ2xlIGNsYXNzIHRoYXQgaGFzIGEgY29weUJhY2tpbmdTdG9yZSgpIGZ1
bmN0aW9uLCBzbyBpZiAKKyAgICAgICAgdGhlIG9iamVjdCBpcyBpbiB0aGUgd29ya2xpc3QsIHdl
IGtub3cgZXhhY3RseSB3aGljaCBmdW5jdGlvbiB0byBjYWxsLiBJZiB3ZSBhZGQgbW9yZSBjbGFz
c2VzIGxhdGVyIHdpdGggQ29waWVkU3BhY2UKKyAgICAgICAgYmFja2luZyBzdG9yZXMsIHRoZW4g
d2UnbGwgaGF2ZSB0byBkbyBzb21lIGV4dHJhIHN0dWZmLgorICAgICAgICAoSlNDOjpDb3B5Vmlz
aXRvcjo6ZGlkQ29weSk6IFdlIGRvbid0IGRvIHRoZSByZWN5Y2xpbmcgaGVyZSBhbnkgbW9yZS4g
V2UgZG8gaXQgaW4gY29weUZyb21TaGFyZWQsIHNpbmNlIHdoZW4gd2UgZmluaXNoIAorICAgICAg
ICBwcm9jZXNzaW5nIGEgQ29waWVkQmxvY2sncyB3b3JrbGlzdCB3ZSBrbm93IHRoYXQgaXQncyBy
ZWFkeSBmb3IgZXZhY3VhdGlvbi4KKyAgICAgICAgKiBoZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5j
cHA6CisgICAgICAgIChKU0M6OkdDVGhyZWFkU2hhcmVkRGF0YTo6R0NUaHJlYWRTaGFyZWREYXRh
KToKKyAgICAgICAgKEpTQzo6R0NUaHJlYWRTaGFyZWREYXRhOjpkaWRTdGFydENvcHlpbmcpOiBX
ZSBub3cgY29weSB0aGUgYmxvY2tzIGluIENvcGllZFNwYWNlIHRvIGEgcHJpdmF0ZSBWZWN0b3Ig
dGhhdCBpcyBzaGFyZWQgCisgICAgICAgIGFtb25nIGFsbCB0aGUgR0NUaHJlYWRzLiBJZiB3ZSB3
ZXJlIHRvIGp1c3QgdXNlIGEgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBIYXNoU2V0IG9mIENv
cGllZEJsb2NrcyBpbiBDb3BpZWRTcGFjZSwgd2UgCisgICAgICAgIHdvdWxkIGhhdmUgdG8gdXNl
IGl0ZXJhdG9ycyB0byBhY2Nlc3MgdGhlIGRhdGEuIEJ1dCB3ZSBhbHNvIGFkZC9yZW1vdmUgYmxv
Y2tzIHRvL2Zyb20gdGhhdCBIYXNoU2V0IGR1cmluZyB0aGUgY29weWluZyAKKyAgICAgICAgcGhh
c2UsIHdoaWNoIGludmFsaWRhdGVzIGFsbCBpdGVyYXRvcnMuIFRodXMsIHdlIHdvdWxkIGhhdmUg
dG8gbWFrZSBhIGNvcHkgb2YgdGhlIEhhc2hTZXQgYW55d2F5cyB0byBwcmV2ZW50IGFueSBtb2Rp
ZmljYXRpb24gCisgICAgICAgIGR1cmluZyBpdGVyYXRpb24uIFNpbmNlIHdlIGhhdmUgdG8gZG8g
YSBjb3B5IGFueXdheXMsIHdlIG1pZ2h0IGFzIHdlbGwgY29weSBpbnRvIGEgVmVjdG9yIHNpbmNl
IGl0J3MgZWFzaWVyIHRvIGRpdmlkZSB1cCAKKyAgICAgICAgcmVnaW9ucyBvZiB0aGUgVmVjdG9y
IGludG8gc21hbGwgc2VnbWVudHMgb2Ygd29yayBmb3IgdGhlIEdDVGhyZWFkcy4KKyAgICAgICAg
KiBoZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5oOgorICAgICAgICAoR0NUaHJlYWRTaGFyZWREYXRh
KToKKyAgICAgICAgKiBoZWFwL1Nsb3RWaXNpdG9yLmg6CisgICAgICAgICogaGVhcC9TbG90Vmlz
aXRvcklubGluZU1ldGhvZHMuaDoKKyAgICAgICAgKEpTQzo6U2xvdFZpc2l0b3I6OmNvcHlMYXRl
cik6IFdlIG5lZWQgdG8ga25vdyB0aGUgb3duZXIgb2YgdGhlIGJ5dGVzIHdlJ3JlIGdvaW5nIHRv
IGNvcHkgbGF0ZXIgdG8gcGFzcyB0byByZXBvcnRMaXZlQnl0ZXMuCisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp2aXNpdEJ1dHRlcmZseSk6
IFBhc3MgdGhlIG93bmVyIHRvIGNvcHlMYXRlcigpLgorCiAyMDEyLTExLTA2ICBNaWNoYWVsIFNh
Ym9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEpTU3RyaW5nQ3JlYXRlV2l0aENG
U3RyaW5nKCkgU2hvdWxkIGNyZWF0ZSBhbiA4IGJpdCBTdHJpbmcgaWYgcG9zc2libGUKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZEJsb2NrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQmxvY2suaAkocmV2aXNpb24gMTMzNTU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsOSBAQAogI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRob2RzLmgi
CiAjaW5jbHVkZSAiT3B0aW9ucy5oIgogI2luY2x1ZGUgPHd0Zi9BdG9taWNzLmg+CisjaW5jbHVk
ZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDQsMTIgKzQ3LDEzIEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgQ29waWVkQmxvY2sqIGNyZWF0ZShEZWFkQmxvY2sqKTsKICAgICBz
dGF0aWMgQ29waWVkQmxvY2sqIGNyZWF0ZU5vWmVyb0ZpbGwoRGVhZEJsb2NrKik7CiAKKyAgICB2
b2lkIHBpbigpOwogICAgIGJvb2wgaXNQaW5uZWQoKTsKIAogICAgIHVuc2lnbmVkIGxpdmVCeXRl
cygpOwotICAgIHZvaWQgcmVwb3J0TGl2ZUJ5dGVzKHVuc2lnbmVkKTsKKyAgICB2b2lkIHJlcG9y
dExpdmVCeXRlcyhKU0NlbGwqLCB1bnNpZ25lZCk7CiAgICAgdm9pZCBkaWRTdXJ2aXZlR0MoKTsK
LSAgICBib29sIGRpZEV2YWN1YXRlQnl0ZXModW5zaWduZWQpOworICAgIHZvaWQgZGlkRXZhY3Vh
dGVCeXRlcyh1bnNpZ25lZCk7CiAgICAgYm9vbCBzaG91bGRFdmFjdWF0ZSgpOwogICAgIGJvb2wg
Y2FuQmVSZWN5Y2xlZCgpOwogCkBAIC03NCwxMCArNzgsMjIgQEAgcHVibGljOgogCiAgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBibG9ja1NpemUgPSAzMiAqIEtCOwogCisgICAgLy8gVGhlIG1pbmlt
dW0gc2l6ZSBvZiBhIGJhY2tpbmcgc3RvcmUgaXMgZm91ciBKU1ZhbHVlcywgc28gb3VyIG1heGlt
dW0gbnVtYmVyIG9mIAorICAgIC8vIEpTQ2VsbHMgaXMgdGhlIG51bWJlciBvZiBibG9ja3Mgb2Yg
Zm91ciBKU1ZhbHVlcyB3ZSBjYW4gZml0IGluIGEgc2luZ2xlIENvcGllZEJsb2NrLgorICAgIHR5
cGVkZWYgVmVjdG9yPEpTQ2VsbCosIGJsb2NrU2l6ZSAvIChzaXplb2YoSlNWYWx1ZSkgKiA0KT4g
V29ya0xpc3Q7CisKKyAgICBib29sIGhhc1dvcmtMaXN0KCk7CisgICAgV29ya0xpc3QmIHdvcmtM
aXN0KCk7CisKIHByaXZhdGU6CiAgICAgQ29waWVkQmxvY2soUmVnaW9uKik7CiAgICAgdm9pZCB6
ZXJvRmlsbFdpbGRlcm5lc3MoKTsgLy8gQ2FuIGJlIGNhbGxlZCBhdCBhbnkgdGltZSB0byB6ZXJv
LWZpbGwgdG8gdGhlIGVuZCBvZiB0aGUgYmxvY2suCiAKKyNpZiBFTkFCTEUoUEFSQUxMRUxfR0Mp
CisgICAgU3BpbkxvY2sgbV93b3JrTGlzdExvY2s7CisjZW5kaWYKKyAgICBPd25QdHI8V29ya0xp
c3Q+IG1fd29ya0xpc3Q7CisKICAgICBzaXplX3QgbV9yZW1haW5pbmc7CiAgICAgdWludHB0cl90
IG1faXNQaW5uZWQ7CiAgICAgdW5zaWduZWQgbV9saXZlQnl0ZXM7CkBAIC0xMTQsMTAgKzEzMCwx
MyBAQCBpbmxpbmUgQ29waWVkQmxvY2s6OkNvcGllZEJsb2NrKFJlZ2lvbiogCiAgICAgLCBtX2lz
UGlubmVkKGZhbHNlKQogICAgICwgbV9saXZlQnl0ZXMoMCkKIHsKKyNpZiBFTkFCTEUoUEFSQUxM
RUxfR0MpCisgICAgbV93b3JrTGlzdExvY2suSW5pdCgpOworI2VuZGlmCiAgICAgQVNTRVJUKGlz
OEJ5dGVBbGlnbmVkKHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG1fcmVtYWluaW5nKSkpOwogfQog
Ci1pbmxpbmUgdm9pZCBDb3BpZWRCbG9jazo6cmVwb3J0TGl2ZUJ5dGVzKHVuc2lnbmVkIGJ5dGVz
KQoraW5saW5lIHZvaWQgQ29waWVkQmxvY2s6OnJlcG9ydExpdmVCeXRlcyhKU0NlbGwqIG93bmVy
LCB1bnNpZ25lZCBieXRlcykKIHsKICNpZiBFTkFCTEUoUEFSQUxMRUxfR0MpCiAgICAgdW5zaWdu
ZWQgb2xkVmFsdWUgPSAwOwpAQCAtMTI2LDggKzE0NSwyNCBAQCBpbmxpbmUgdm9pZCBDb3BpZWRC
bG9jazo6cmVwb3J0TGl2ZUJ5dGVzCiAgICAgICAgIG9sZFZhbHVlID0gbV9saXZlQnl0ZXM7CiAg
ICAgICAgIG5ld1ZhbHVlID0gb2xkVmFsdWUgKyBieXRlczsKICAgICB9IHdoaWxlICghV1RGOjp3
ZWFrQ29tcGFyZUFuZFN3YXAoJm1fbGl2ZUJ5dGVzLCBvbGRWYWx1ZSwgbmV3VmFsdWUpKTsKKwor
ICAgIC8vIFdlIGhhdmUgdG8gbG9jayBiZWZvcmUgd2UgY2hlY2sgaWYgd2Ugc2hvdWxkIGV2YWN1
YXRlIGJlY2F1c2UgaWYgd2UgZGlkbid0IHRoZW4gCisgICAgLy8gd2UgY291bGQgaGF2ZSBhIHJh
Y2UgY29uZGl0aW9uIHdoZXJlIG9uZSB0aHJlYWQgZ2V0cyBwYXN0IHRoZSBpZiBzdGF0ZW1lbnQs
IHRoZW4gCisgICAgLy8gYSBzZWNvbmQgdGhyZWFkIGNvbWVzIGluLCBjbGVhcnMgdGhlIHdvcmtM
aXN0LCBhbmQgdGhlbiB0aGUgZmlyc3QgdGhyZWFkIHRyaWVzIHRvIAorICAgIC8vIGFwcGVuZCB0
byBhIG5vdy1udWxsIHdvcmtMaXN0LgorICAgIFNwaW5Mb2NrSG9sZGVyIGxvY2tlcigmbV93b3Jr
TGlzdExvY2spOworICAgIGlmICghc2hvdWxkRXZhY3VhdGUoKSkgeworICAgICAgICBwaW4oKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbV93b3JrTGlzdCkKKyAgICAgICAg
bV93b3JrTGlzdCA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8SlNDZWxsKiwgYmxvY2tTaXplIC8gKHNp
emVvZih2b2lkKikgKiA0KT4oKSk7CisKKyAgICBtX3dvcmtMaXN0LT5hcHBlbmQob3duZXIpOwog
I2Vsc2UKICAgICBtX2xpdmVCeXRlcyArPSBieXRlczsKKyAgICBtX3dvcmtMaXN0LT5hcHBlbmQo
b3duZXIpOwogI2VuZGlmCiB9CiAKQEAgLTEzNSwyNCArMTcwLDE0IEBAIGlubGluZSB2b2lkIENv
cGllZEJsb2NrOjpkaWRTdXJ2aXZlR0MoKQogewogICAgIG1fbGl2ZUJ5dGVzID0gMDsKICAgICBt
X2lzUGlubmVkID0gZmFsc2U7CisgICAgaWYgKG1fd29ya0xpc3QpCisgICAgICAgIG1fd29ya0xp
c3QuY2xlYXIoKTsKIH0KIAotaW5saW5lIGJvb2wgQ29waWVkQmxvY2s6OmRpZEV2YWN1YXRlQnl0
ZXModW5zaWduZWQgYnl0ZXMpCitpbmxpbmUgdm9pZCBDb3BpZWRCbG9jazo6ZGlkRXZhY3VhdGVC
eXRlcyh1bnNpZ25lZCBieXRlcykKIHsKICAgICBBU1NFUlQobV9saXZlQnl0ZXMgPj0gYnl0ZXMp
OwotI2lmIEVOQUJMRShQQVJBTExFTF9HQykKLSAgICB1bnNpZ25lZCBvbGRWYWx1ZSA9IDA7Ci0g
ICAgdW5zaWduZWQgbmV3VmFsdWUgPSAwOwotICAgIGRvIHsKLSAgICAgICAgb2xkVmFsdWUgPSBt
X2xpdmVCeXRlczsKLSAgICAgICAgbmV3VmFsdWUgPSBvbGRWYWx1ZSAtIGJ5dGVzOwotICAgIH0g
d2hpbGUgKCFXVEY6OndlYWtDb21wYXJlQW5kU3dhcCgmbV9saXZlQnl0ZXMsIG9sZFZhbHVlLCBu
ZXdWYWx1ZSkpOwotICAgIEFTU0VSVChtX2xpdmVCeXRlcyA8IG9sZFZhbHVlKTsKLSAgICByZXR1
cm4gIW5ld1ZhbHVlOwotI2Vsc2UKICAgICBtX2xpdmVCeXRlcyAtPSBieXRlczsKLSAgICByZXR1
cm4gIW1fbGl2ZUJ5dGVzOwotI2VuZGlmCiB9CiAKIGlubGluZSBib29sIENvcGllZEJsb2NrOjpj
YW5CZVJlY3ljbGVkKCkKQEAgLTE2NSw2ICsxOTAsMTMgQEAgaW5saW5lIGJvb2wgQ29waWVkQmxv
Y2s6OnNob3VsZEV2YWN1YXRlKAogICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KG1fbGl2
ZUJ5dGVzKSAvIHN0YXRpY19jYXN0PGRvdWJsZT4ocGF5bG9hZENhcGFjaXR5KCkpIDw9IE9wdGlv
bnM6Om1pbkNvcGllZEJsb2NrVXRpbGl6YXRpb24oKTsKIH0KIAoraW5saW5lIHZvaWQgQ29waWVk
QmxvY2s6OnBpbigpCit7CisgICAgbV9pc1Bpbm5lZCA9IHRydWU7CisgICAgaWYgKG1fd29ya0xp
c3QpCisgICAgICAgIG1fd29ya0xpc3QuY2xlYXIoKTsKK30KKwogaW5saW5lIGJvb2wgQ29waWVk
QmxvY2s6OmlzUGlubmVkKCkKIHsKICAgICByZXR1cm4gbV9pc1Bpbm5lZDsKQEAgLTIzMCw2ICsy
NjIsMTYgQEAgaW5saW5lIHNpemVfdCBDb3BpZWRCbG9jazo6Y2FwYWNpdHkoKQogICAgIHJldHVy
biByZWdpb24oKS0+YmxvY2tTaXplKCk7CiB9CiAKK2lubGluZSBib29sIENvcGllZEJsb2NrOjpo
YXNXb3JrTGlzdCgpCit7CisgICAgcmV0dXJuICEhbV93b3JrTGlzdDsKK30KKworaW5saW5lIENv
cGllZEJsb2NrOjpXb3JrTGlzdCYgQ29waWVkQmxvY2s6OndvcmtMaXN0KCkKK3sKKyAgICByZXR1
cm4gKm1fd29ya0xpc3Q7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuaAkocmV2aXNpb24gMTMzNTU0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBDb3BpZWRCbG9jazsKIAogY2xhc3MgQ29waWVk
U3BhY2UgewogICAgIGZyaWVuZCBjbGFzcyBDb3B5VmlzaXRvcjsKKyAgICBmcmllbmQgY2xhc3Mg
R0NUaHJlYWRTaGFyZWREYXRhOwogICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKICAgICBm
cmllbmQgY2xhc3MgSklUOwogcHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQ29waWVkU3BhY2VJbmxpbmVNZXRob2RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQ29waWVkU3BhY2VJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDEzMzU1
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5saW5lTWV0aG9k
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGlubGluZSBib29sIENvcGllZFNw
YWNlOjpjb250YWlucyh2b2lkKiAKIAogaW5saW5lIHZvaWQgQ29waWVkU3BhY2U6OnBpbihDb3Bp
ZWRCbG9jayogYmxvY2spCiB7Ci0gICAgYmxvY2stPm1faXNQaW5uZWQgPSB0cnVlOworICAgIGJs
b2NrLT5waW4oKTsKIH0KIAogaW5saW5lIHZvaWQgQ29waWVkU3BhY2U6OnBpbklmTmVjZXNzYXJ5
KHZvaWQqIG9wYXF1ZVBvaW50ZXIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b3B5VmlzaXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29weVZpc2l0b3IuY3BwCShyZXZpc2lvbiAxMzM1NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9Db3B5VmlzaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE3ICs0MSwyNiBA
QCBDb3B5VmlzaXRvcjo6Q29weVZpc2l0b3IoR0NUaHJlYWRTaGFyZWRECiAKIHZvaWQgQ29weVZp
c2l0b3I6OmNvcHlGcm9tU2hhcmVkKCkKIHsKLSAgICBHQ0NvcHlQaGFzZUZ1bmN0b3IgZnVuY3Rv
cigqdGhpcyk7Ci0gICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4mIGJsb2Nrc1RvQ29weSA9IG1fc2hh
cmVkLm1fYmxvY2tzVG9Db3B5OwotICAgIHNpemVfdCBzdGFydEluZGV4LCBlbmRJbmRleDsKKyAg
ICBzaXplX3QgbmV4dCwgZW5kOworICAgIG1fc2hhcmVkLmdldE5leHRCbG9ja3NUb0NvcHkobmV4
dCwgZW5kKTsKKyAgICB3aGlsZSAobmV4dCA8IGVuZCkgeworICAgICAgICBmb3IgKDsgbmV4dCA8
IGVuZDsgKytuZXh0KSB7CisgICAgICAgICAgICBDb3BpZWRCbG9jayogYmxvY2sgPSBtX3NoYXJl
ZC5tX2Jsb2Nrc1RvQ29weVtuZXh0XTsKKyAgICAgICAgICAgIGlmICghYmxvY2stPmhhc1dvcmtM
aXN0KCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICBtX3NoYXJlZC5nZXROZXh0
QmxvY2tzVG9Db3B5KHN0YXJ0SW5kZXgsIGVuZEluZGV4KTsKLSAgICB3aGlsZSAoc3RhcnRJbmRl
eCA8IGVuZEluZGV4KSB7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSBzdGFydEluZGV4OyBpIDwg
ZW5kSW5kZXg7IGkrKykKLSAgICAgICAgICAgIGJsb2Nrc1RvQ29weVtpXS0+Zm9yRWFjaExpdmVD
ZWxsKGZ1bmN0b3IpOwotICAgICAgICBtX3NoYXJlZC5nZXROZXh0QmxvY2tzVG9Db3B5KHN0YXJ0
SW5kZXgsIGVuZEluZGV4KTsKKyAgICAgICAgICAgIENvcGllZEJsb2NrOjpXb3JrTGlzdCYgd29y
a0xpc3QgPSBibG9jay0+d29ya0xpc3QoKTsKKyAgICAgICAgICAgIGZvciAoQ29waWVkQmxvY2s6
OldvcmtMaXN0OjppdGVyYXRvciBpdCA9IHdvcmtMaXN0LmJlZ2luKCk7IGl0ICE9IHdvcmtMaXN0
LmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGl0ICE9IHdvcmtMaXN0LmVu
ZCgpKTsKKyAgICAgICAgICAgICAgICB2aXNpdENlbGwoKml0KTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgQVNTRVJUKCFibG9jay0+bGl2ZUJ5dGVzKCkpOworICAgICAgICAgICAgbV9z
aGFyZWQubV9jb3BpZWRTcGFjZS0+cmVjeWNsZUV2YWN1YXRlZEJsb2NrKGJsb2NrKTsKKyAgICAg
ICAgfQorICAgICAgICBtX3NoYXJlZC5nZXROZXh0QmxvY2tzVG9Db3B5KG5leHQsIGVuZCk7CiAg
ICAgfQotICAgIEFTU0VSVChzdGFydEluZGV4ID09IGVuZEluZGV4KTsKKyAgICBBU1NFUlQobmV4
dCA9PSBlbmQpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvcHlWaXNpdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvQ29weVZpc2l0b3IuaAkocmV2aXNpb24gMTMzNTU0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQ29weVZpc2l0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiAr
NTAsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCogYWxsb2NhdGVOZXdTcGFjZVNs
b3coc2l6ZV90KTsKKyAgICB2b2lkIHZpc2l0Q2VsbChKU0NlbGwqKTsKIAogICAgIEdDVGhyZWFk
U2hhcmVkRGF0YSYgbV9zaGFyZWQ7CiAgICAgQ29waWVkQWxsb2NhdG9yIG1fY29waWVkQWxsb2Nh
dG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVZpc2l0b3JJbmxpbmVN
ZXRob2RzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVZp
c2l0b3JJbmxpbmVNZXRob2RzLmgJKHJldmlzaW9uIDEzMzU1NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvcHlWaXNpdG9ySW5saW5lTWV0aG9kcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNCwyNSArMzQsMTEgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLWNsYXNzIEdDQ29weVBoYXNl
RnVuY3RvciA6IHB1YmxpYyBNYXJrZWRCbG9jazo6Vm9pZEZ1bmN0b3IgewotcHVibGljOgotICAg
IEdDQ29weVBoYXNlRnVuY3RvcihDb3B5VmlzaXRvciYgdmlzaXRvcikKLSAgICAgICAgOiBtX3Zp
c2l0b3IodmlzaXRvcikKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBvcGVyYXRvcigpKEpTQ2Vs
bCogY2VsbCkKLSAgICB7Ci0gICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2VsbC0+c3Ry
dWN0dXJlKCk7Ci0gICAgICAgIGlmICghc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpICYm
ICFoYXNJbmRleGVkUHJvcGVydGllcyhzdHJ1Y3R1cmUtPmluZGV4aW5nVHlwZSgpKSkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCktPm1l
dGhvZFRhYmxlLmNvcHlCYWNraW5nU3RvcmUgPT0gSlNPYmplY3Q6OmNvcHlCYWNraW5nU3RvcmUp
OwotICAgICAgICBKU09iamVjdDo6Y29weUJhY2tpbmdTdG9yZShjZWxsLCBtX3Zpc2l0b3IpOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBDb3B5VmlzaXRvciYgbV92aXNpdG9yOwotfTsKK2lubGlu
ZSB2b2lkIENvcHlWaXNpdG9yOjp2aXNpdENlbGwoSlNDZWxsKiBjZWxsKQoreworICAgIEFTU0VS
VChjZWxsLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCktPm1ldGhvZFRhYmxlLmNvcHlCYWNraW5n
U3RvcmUgPT0gSlNPYmplY3Q6OmNvcHlCYWNraW5nU3RvcmUpOworICAgIEpTT2JqZWN0Ojpjb3B5
QmFja2luZ1N0b3JlKGNlbGwsICp0aGlzKTsKK30KIAogaW5saW5lIGJvb2wgQ29weVZpc2l0b3I6
OmNoZWNrSWZTaG91bGRDb3B5KHZvaWQqIG9sZFB0ciwgc2l6ZV90IGJ5dGVzKQogewpAQCAtMTEw
LDggKzk2LDggQEAgaW5saW5lIHZvaWQgQ29weVZpc2l0b3I6OmRpZENvcHkodm9pZCogcAogICAg
IENvcGllZEJsb2NrKiBibG9jayA9IENvcGllZFNwYWNlOjpibG9ja0ZvcihwdHIpOwogICAgIEFT
U0VSVCghYmxvY2stPmlzUGlubmVkKCkpOwogCi0gICAgaWYgKGJsb2NrLT5kaWRFdmFjdWF0ZUJ5
dGVzKGJ5dGVzKSkKLSAgICAgICAgbV9zaGFyZWQubV9jb3BpZWRTcGFjZS0+cmVjeWNsZUV2YWN1
YXRlZEJsb2NrKGJsb2NrKTsKKyAgICBibG9jay0+ZGlkRXZhY3VhdGVCeXRlcyhieXRlcyk7CisK
IH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9HQ1RocmVhZFNoYXJlZERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHAJKHJldmlzaW9uIDEzMzU1NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTU5LDcgKzU5LDYgQEAgR0NUaHJlYWRTaGFyZWREYXRhOjpHQ1RocmVhZFNoYXJl
ZERhdGEoSgogICAgICwgbV9zaGFyZWRNYXJrU3RhY2sobV9zZWdtZW50QWxsb2NhdG9yKQogICAg
ICwgbV9udW1iZXJPZkFjdGl2ZVBhcmFsbGVsTWFya2VycygwKQogICAgICwgbV9wYXJhbGxlbE1h
cmtlcnNTaG91bGRFeGl0KGZhbHNlKQotICAgICwgbV9ibG9ja3NUb0NvcHkoZ2xvYmFsRGF0YS0+
aGVhcC5tX2Jsb2NrU25hcHNob3QpCiAgICAgLCBtX2NvcHlJbmRleCgwKQogICAgICwgbV9udW1i
ZXJPZkFjdGl2ZUdDVGhyZWFkcygwKQogICAgICwgbV9nY1RocmVhZHNTaG91bGRXYWl0KGZhbHNl
KQpAQCAtMTY3LDcgKzE2Niw3IEBAIHZvaWQgR0NUaHJlYWRTaGFyZWREYXRhOjpkaWRTdGFydENv
cHlpbmcKIHsKICAgICB7CiAgICAgICAgIFNwaW5Mb2NrSG9sZGVyIGxvY2tlcigmbV9jb3B5TG9j
ayk7Ci0gICAgICAgIG1fYmxvY2tzVG9Db3B5ID0gbV9nbG9iYWxEYXRhLT5oZWFwLm1fYmxvY2tT
bmFwc2hvdDsKKyAgICAgICAgV1RGOjpjb3B5VG9WZWN0b3IobV9jb3BpZWRTcGFjZS0+bV9ibG9j
a1NldCwgbV9ibG9ja3NUb0NvcHkpOwogICAgICAgICBtX2NvcHlJbmRleCA9IDA7CiAgICAgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNoYXJlZERh
dGEuaAkocmV2aXNpb24gMTMzNTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NU
aHJlYWRTaGFyZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDcgQEAgcHJpdmF0
ZToKICAgICBIYXNoU2V0PHZvaWQqPiBtX29wYXF1ZVJvb3RzOwogCiAgICAgU3BpbkxvY2sgbV9j
b3B5TG9jazsKLSAgICBWZWN0b3I8TWFya2VkQmxvY2sqPiYgbV9ibG9ja3NUb0NvcHk7CisgICAg
VmVjdG9yPENvcGllZEJsb2NrKj4gbV9ibG9ja3NUb0NvcHk7CiAgICAgc2l6ZV90IG1fY29weUlu
ZGV4OwogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc19ibG9ja0ZyYWdtZW50TGVuZ3RoID0gMzI7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAkocmV2aXNp
b24gMTMzNTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtNzksNyArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBoYXJ2ZXN0
V2Vha1JlZmVyZW5jZXMoKTsKICAgICB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbEZpbmFsaXpl
cnMoKTsKIAotICAgIHZvaWQgY29weUxhdGVyKHZvaWQqLCBzaXplX3QpOworICAgIHZvaWQgY29w
eUxhdGVyKEpTQ2VsbCosIHZvaWQqLCBzaXplX3QpOwogICAgIAogI2lmIEVOQUJMRShTSU1QTEVf
SEVBUF9QUk9GSUxJTkcpCiAgICAgVlRhYmxlU3BlY3RydW0gbV92aXNpdGVkVHlwZUNvdW50czsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lTWV0aG9k
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9y
SW5saW5lTWV0aG9kcy5oCShyZXZpc2lvbiAxMzM1NTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9TbG90VmlzaXRvcklubGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpAQCAtMTUx
LDcgKzE1MSw3IEBAIGlubGluZSB2b2lkIFNsb3RWaXNpdG9yOjpkb25hdGVBbmREcmFpbigKICAg
ICBkcmFpbigpOwogfQogCi1pbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6Y29weUxhdGVyKHZvaWQq
IHB0ciwgc2l6ZV90IGJ5dGVzKQoraW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmNvcHlMYXRlcihK
U0NlbGwqIG93bmVyLCB2b2lkKiBwdHIsIHNpemVfdCBieXRlcykKIHsKICAgICBpZiAoQ29waWVk
U3BhY2U6OmlzT3ZlcnNpemUoYnl0ZXMpKSB7CiAgICAgICAgIG1fc2hhcmVkLm1fY29waWVkU3Bh
Y2UtPnBpbihDb3BpZWRTcGFjZTo6b3ZlcnNpemVCbG9ja0ZvcihwdHIpKTsKQEAgLTE2MiwxMCAr
MTYyLDcgQEAgaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmNvcHlMYXRlcih2b2lkKgogICAgIGlm
IChibG9jay0+aXNQaW5uZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYmxvY2stPnJlcG9y
dExpdmVCeXRlcyhieXRlcyk7Ci0KLSAgICBpZiAoIWJsb2NrLT5zaG91bGRFdmFjdWF0ZSgpKQot
ICAgICAgICBtX3NoYXJlZC5tX2NvcGllZFNwYWNlLT5waW4oYmxvY2spOworICAgIGJsb2NrLT5y
ZXBvcnRMaXZlQnl0ZXMob3duZXIsIGJ5dGVzKTsKIH0KICAgICAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2
aXNpb24gMTMzNTU0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNyArMTgyLDcgQEAgQUxXQVlTX0lOTElORSB2b2lk
IEpTT2JqZWN0Ojp2aXNpdEJ1dHRlcgogCiAgICAgLy8gTWFyayB0aGUgcHJvcGVydGllcy4KICAg
ICB2aXNpdG9yLmFwcGVuZFZhbHVlcyhidXR0ZXJmbHktPnByb3BlcnR5U3RvcmFnZSgpIC0gc3Rv
cmFnZVNpemUsIHN0b3JhZ2VTaXplKTsKLSAgICB2aXNpdG9yLmNvcHlMYXRlcihidXR0ZXJmbHkt
PmJhc2UocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2FwYWNpdHkpLCBjYXBhY2l0eUluQnl0ZXMpOwor
ICAgIHZpc2l0b3IuY29weUxhdGVyKHRoaXMsIGJ1dHRlcmZseS0+YmFzZShwcmVDYXBhY2l0eSwg
cHJvcGVydHlDYXBhY2l0eSksIGNhcGFjaXR5SW5CeXRlcyk7CiAgICAgCiAgICAgLy8gTWFyayB0
aGUgYXJyYXkgaWYgYXBwcm9wcmlhdGUuCiAgICAgc3dpdGNoIChzdHJ1Y3R1cmUtPmluZGV4aW5n
VHlwZSgpKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176542</attachid>
            <date>2012-11-28 12:13:08 -0800</date>
            <delta_ts>2012-11-28 16:14:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101390-20121128121043.patch</filename>
            <type>text/plain</type>
            <size>33287</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTM2MDMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg2IEBA
CisyMDEyLTExLTI4ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgQ29weWluZyBwaGFzZSBzaG91bGQgdXNlIHdvcmsgbGlzdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTM5MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRp
b24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQg
cGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBoZWFwL0Js
b2NrQWxsb2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6QmxvY2tBbGxvY2F0b3I6OkJsb2NrQWxs
b2NhdG9yKToKKyAgICAgICAgKiBoZWFwL0Jsb2NrQWxsb2NhdG9yLmg6IE5ldyBSZWdpb25TZXQg
Zm9yIENvcHlXb3JrTGlzdFNlZ21lbnRzLgorICAgICAgICAoQmxvY2tBbGxvY2F0b3IpOgorICAg
ICAgICAoSlNDOjpDb3B5V29ya0xpc3RTZWdtZW50KToKKyAgICAgICAgKiBoZWFwL0NvcGllZEJs
b2NrLmg6IEFkZGVkIGEgcGVyLWJsb2NrIENvcHlXb3JrTGlzdCB0byBrZWVwIHRyYWNrIG9mIHRo
ZSBKU0NlbGxzIHRoYXQgbmVlZCB0byBiZSByZXZpc2l0ZWQgZHVyaW5nIHRoZSBjb3B5aW5nCisg
ICAgICAgIHBoYXNlIHRvIGNvcHkgdGhlaXIgYmFja2luZyBzdG9yZXMuCisgICAgICAgIChDb3Bp
ZWRCbG9jayk6CisgICAgICAgIChKU0M6OkNvcGllZEJsb2NrOjpDb3BpZWRCbG9jayk6IAorICAg
ICAgICAoSlNDOjpDb3BpZWRCbG9jazo6ZGlkU3Vydml2ZUdDKToKKyAgICAgICAgKEpTQzo6Q29w
aWVkQmxvY2s6OmRpZEV2YWN1YXRlQnl0ZXMpOiBUaGVyZSBpcyBub3cgYSBvbmUtdG8tb25lIHJl
bGF0aW9uc2hpcCBiZXR3ZWVuIEdDVGhyZWFkcyBhbmQgdGhlIENvcGllZEJsb2NrcyB0aGV5J3Jl
IAorICAgICAgICByZXNwb25zaWJsZSBmb3IgZXZhY3VhdGluZywgd2Ugbm8gbG9uZ2VyIG5lZWQg
YW55IG9mIHRoYXQgZmFuY3kgY29tcGFyZSBhbmQgc3dhcCBzdHVmZi4gCisgICAgICAgIChKU0M6
OkNvcGllZEJsb2NrOjpwaW4pOgorICAgICAgICAoSlNDOjpDb3BpZWRCbG9jazo6aGFzV29ya0xp
c3QpOiAKKyAgICAgICAgKEpTQzo6Q29waWVkQmxvY2s6OndvcmtMaXN0KToKKyAgICAgICAgKiBo
ZWFwL0NvcGllZEJsb2NrSW5saW5lcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Q29waWVkQmxv
Y2s6OnJlcG9ydExpdmVCeXRlcyk6IFNpbmNlIHdlIG5vdyBoYXZlIHRvIGdyYWIgYSBTcGluTG9j
ayB0byBwZXJmb3JtIG9wZXJhdGlvbnMgb24gdGhlIENvcHlXb3JrTGlzdCBkdXJpbmcgbWFya2lu
ZywKKyAgICAgICAgd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnkgb2YgdGhhdCBmYW5jeSBjb21wYXJl
IGFuZCBzd2FwIHN0dWZmIHdlIHdlcmUgZG9pbmcgZm9yIHRyYWNraW5nIGxpdmUgYnl0ZXMuCisg
ICAgICAgICogaGVhcC9Db3BpZWRTcGFjZS5oOgorICAgICAgICAoQ29waWVkU3BhY2UpOgorICAg
ICAgICAqIGhlYXAvQ29waWVkU3BhY2VJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkNvcGllZFNw
YWNlOjpwaW4pOgorICAgICAgICAqIGhlYXAvQ29weVZpc2l0b3IuY3BwOgorICAgICAgICAoSlND
OjpDb3B5VmlzaXRvcjo6Y29weUZyb21TaGFyZWQpOiBXZSBub3cgaXRlcmF0ZSBvdmVyIGEgcmFu
Z2Ugb2YgQ29waWVkQmxvY2tzIHJhdGhlciB0aGFuIE1hcmtlZEJsb2NrcyBhbmQgcmV2aXNpdCB0
aGUgY2VsbHMgaW4gdGhvc2UKKyAgICAgICAgYmxvY2tzJyBDb3B5V29ya0xpc3RzLgorICAgICAg
ICAqIGhlYXAvQ29weVZpc2l0b3IuaDoKKyAgICAgICAgKENvcHlWaXNpdG9yKToKKyAgICAgICAg
KiBoZWFwL0NvcHlWaXNpdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpDb3B5VmlzaXRvcjo6
dmlzaXRDZWxsKTogVGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBjYWxsaW5nIHRoZSBjb3Jy
ZWN0IGNvcHlCYWNraW5nU3RvcmUoKSBmdW5jdGlvbiBmb3IgZWFjaCBKU0NlbGwgZnJvbSAKKyAg
ICAgICAgYSBDb3BpZWRCbG9jaydzIENvcHlXb3JrTGlzdC4KKyAgICAgICAgKEpTQzo6Q29weVZp
c2l0b3I6OmRpZENvcHkpOiBXZSBubyBsb25nZXIgbmVlZCB0byBjaGVjayBpZiB0aGUgYmxvY2sg
aXMgZW1wdHkgaGVyZSBiZWNhdXNlIHdlIGtub3cgZXhhY3RseSB3aGVuIHdlJ3JlIGRvbmUgCisg
ICAgICAgIGV2YWN1YXRpbmcgYSBDb3BpZWRCbG9jaywgd2hpY2ggaXMgd2hlbiB3ZSd2ZSBnb25l
IHRocm91Z2ggYWxsIG9mIHRoZSBDb3BpZWRCbG9jaydzIENvcHlXb3JrTGlzdC4KKyAgICAgICAg
KiBoZWFwL0NvcHlXb3JrTGlzdC5oOiBBZGRlZC4KKyAgICAgICAgKENvcHlXb3JrTGlzdFNlZ21l
bnQpOiBJbmRpdmlkdWFsIGNodW5rIG9mIGEgQ29weVdvcmtMaXN0IHRoYXQgaXMgYWxsb2NhdGVk
IGZyb20gdGhlIEJsb2NrQWxsb2NhdG9yLgorICAgICAgICAoSlNDOjpDb3B5V29ya0xpc3RTZWdt
ZW50OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpDb3B5V29ya0xpc3RTZWdtZW50OjpzaXplKToK
KyAgICAgICAgKEpTQzo6Q29weVdvcmtMaXN0U2VnbWVudDo6aXNGdWxsKToKKyAgICAgICAgKEpT
Qzo6Q29weVdvcmtMaXN0U2VnbWVudDo6Z2V0KToKKyAgICAgICAgKEpTQzo6Q29weVdvcmtMaXN0
U2VnbWVudDo6YXBwZW5kKToKKyAgICAgICAgKEpTQzo6Q29weVdvcmtMaXN0U2VnbWVudDo6Q29w
eVdvcmtMaXN0U2VnbWVudCk6CisgICAgICAgIChKU0M6OkNvcHlXb3JrTGlzdFNlZ21lbnQ6OmRh
dGEpOgorICAgICAgICAoSlNDOjpDb3B5V29ya0xpc3RTZWdtZW50OjplbmRPZkJsb2NrKToKKyAg
ICAgICAgKENvcHlXb3JrTGlzdEl0ZXJhdG9yKTogUmVzcG9uc2libGUgZm9yIGdpdmluZyBDb3B5
VmlzaXRvcnMgYSBjb250aWd1b3VzIG5vdGlvbiBvZiBhY2Nlc3MgYWNyb3NzIHRoZSBzZXBhcmF0
ZSBDb3B5V29ya0xpc3RTZWdtZW50cworICAgICAgICB0aGF0IG1ha2UgdXAgZWFjaCBDb3B5V29y
a0xpc3QuCisgICAgICAgIChKU0M6OkNvcHlXb3JrTGlzdEl0ZXJhdG9yOjpnZXQpOgorICAgICAg
ICAoSlNDOjpDb3B5V29ya0xpc3RJdGVyYXRvcjo6b3BlcmF0b3IqKToKKyAgICAgICAgKEpTQzo6
Q29weVdvcmtMaXN0SXRlcmF0b3I6Om9wZXJhdG9yLT4pOgorICAgICAgICAoSlNDOjpDb3B5V29y
a0xpc3RJdGVyYXRvcjo6b3BlcmF0b3IrKyk6CisgICAgICAgIChKU0M6OkNvcHlXb3JrTGlzdEl0
ZXJhdG9yOjpvcGVyYXRvcj09KToKKyAgICAgICAgKEpTQzo6Q29weVdvcmtMaXN0SXRlcmF0b3I6
Om9wZXJhdG9yIT0pOgorICAgICAgICAoSlNDOjpDb3B5V29ya0xpc3RJdGVyYXRvcjo6Q29weVdv
cmtMaXN0SXRlcmF0b3IpOgorICAgICAgICAoQ29weVdvcmtMaXN0KTogRGF0YSBzdHJ1Y3R1cmUg
dGhhdCBrZWVwcyB0cmFjayBvZiB0aGUgSlNDZWxscyB0aGF0IG5lZWQgY29weWluZyBpbiBhIHBh
cnRpY3VsYXIgQ29waWVkQmxvY2suCisgICAgICAgIChKU0M6OkNvcHlXb3JrTGlzdDo6Q29weVdv
cmtMaXN0KToKKyAgICAgICAgKEpTQzo6Q29weVdvcmtMaXN0Ojp+Q29weVdvcmtMaXN0KToKKyAg
ICAgICAgKEpTQzo6Q29weVdvcmtMaXN0OjphcHBlbmQpOgorICAgICAgICAoSlNDOjpDb3B5V29y
a0xpc3Q6OmJlZ2luKToKKyAgICAgICAgKEpTQzo6Q29weVdvcmtMaXN0OjplbmQpOgorICAgICAg
ICAqIGhlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6R0NUaHJlYWRT
aGFyZWREYXRhOjpHQ1RocmVhZFNoYXJlZERhdGEpOiBXZSBubyBsb25nZXIgdXNlIHRoZSBtX2Js
b2NrU25hcHNob3QgZnJvbSB0aGUgSGVhcCBkdXJpbmcgdGhlIGNvcHlpbmcgcGhhc2UuCisgICAg
ICAgIChKU0M6OkdDVGhyZWFkU2hhcmVkRGF0YTo6ZGlkU3RhcnRDb3B5aW5nKTogV2Ugbm93IGNv
cHkgdGhlIHNldCBvZiBhbGwgYmxvY2tzIGluIHRoZSBDb3BpZWRTcGFjZSB0byBhIHNlcGFyYXRl
IHZlY3RvciBmb3IgCisgICAgICAgIGl0ZXJhdGluZyBvdmVyIGR1cmluZyB0aGUgY29weWluZyBw
aGFzZSBzaW5jZSB0aGUgc2V0IHN0b3JlZCBpbiB0aGUgQ29waWVkU3BhY2Ugd2lsbCBjaGFuZ2Ug
YXMgYmxvY2tzIGFyZSBldmFjdWF0ZWQgYW5kIAorICAgICAgICByZWN5Y2xlZCB0aHJvdWdob3V0
IHRoZSBjb3B5aW5nIHBoYXNlLgorICAgICAgICAqIGhlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmg6
CisgICAgICAgIChHQ1RocmVhZFNoYXJlZERhdGEpOiAKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoK
KyAgICAgICAgKEhlYXApOgorICAgICAgICAqIGhlYXAvU2xvdFZpc2l0b3IuaDogV2Ugbm93IG5l
ZWQgdG8ga25vdyB0aGUgb2JqZWN0IHdobyBpcyBiZWluZyBtYXJrZWQgdGhhdCBoYXMgYSBiYWNr
aW5nIHN0b3JlIHNvIHRoYXQgd2UgY2FuIHN0b3JlIGl0IAorICAgICAgICBpbiBhIENvcHlXb3Jr
TGlzdCB0byByZXZpc2l0IGxhdGVyIGR1cmluZyB0aGUgY29weWluZyBwaGFzZS4KKyAgICAgICAg
KiBoZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5oOgorICAgICAgICAoSlNDOjpTbG90VmlzaXRvcjo6
Y29weUxhdGVyKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNPYmplY3Q6OnZpc2l0QnV0dGVyZmx5KToKKwogMjAxMi0xMS0yNyAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIENvbnZlcnQgc29tZSByZW1haW5pbmcgdXNl
cyBvZiBGSUxFKiB0byBQcmludFN0cmVhbSYuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTM2MDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcyMSw2
ICs3MjEsNyBAQAogCQlDMjExMjJFMjE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWRE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjEx
MjJERjE1REQ5QUIzMDA3OTBFM0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzIxMTIyRTMxNUREOUFCMzAw
NzkwRTNBIC8qIE1hcmtTdGFja0lubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMyMTEyMkUwMTVERDlBQjMwMDc5MEUzQSAvKiBNYXJrU3RhY2tJ
bmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQzIxNjBGRTcxNUY3RTk1RTAwOTQyREZDIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDQjQwODUxNUMwQTND
MzAwNDg5MzJCIC8qIFNsb3RWaXNpdG9ySW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMyMThEMTQwMTY1NUNGRDUwMDYyQkI4MSAvKiBD
b3B5V29ya0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEMyMThEMTNGMTY1NUNGRDUwMDYyQkI4MSAvKiBDb3B5V29ya0xpc3QuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjIzOUQxNzE2MjYyQkRE
MDA1QUM1RkQgLyogQ29weVZpc2l0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzIyMzlEMTIxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlWaXNpdG9y
LmNwcCAqLzsgfTsKIAkJQzIyMzlEMTgxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlWaXNpdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjIzOUQxMzE2
MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMjIzOUQxOTE2MjYyQkREMDA1QUM1RkQgLyogQ29w
eVZpc2l0b3JJbmxpbmVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMjIzOUQxNDE2MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3JJbmxpbmVzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc0NCw2
ICs3NDUsNyBAQAogCQlDMkU1MjZCRTE1OTBFRjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkU1MjZCQzE1OTBF
RjAwMDA1NEU0OEQgLyogSGVhcFRpbWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJFQUEzRkExNDlBODM1RTAwRkNFMTEyIC8qIENvcGllZFNw
YWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkVB
QTNGODE0OUE4MzA4MDBGQ0UxMTIgLyogQ29waWVkU3BhY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMkVBRDJGQzE0RjAyNDk4MDBBNEIxNTkg
LyogQ29waWVkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMkVBRDJGQjE0RjAyNDk4MDBBNEIxNTkgLyogQ29waWVkQWxsb2NhdG9yLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzJGQzlC
RDMxNjY0NERGQjAwODEwRDMzIC8qIENvcGllZEJsb2NrSW5saW5lcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJGQzlCRDIxNjY0NERGQjAwODEwRDMz
IC8qIENvcGllZEJsb2NrSW5saW5lcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCURERjdBQkQ0MTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IERERjdBQkQyMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMTI0QThGNzBFNTU1
Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxMjRBOEY1MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVK
U1N0cmluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUUxMjRBOEY4MEU1NTU3NzUwMDMwOTFGMSAvKiBPcGFxdWVKU1N0cmluZy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTI0QThGNjBFNTU1Nzc1
MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuY3BwICovOyB9OwpAQCAtMTUxOCw2ICsxNTIwLDcg
QEAKIAkJQzIxMTIyREUxNUREOUFCMzAwNzkwRTNBIC8qIEdDVGhyZWFkU2hhcmVkRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHQ1RocmVhZFNoYXJlZERhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjExMjJERjE1REQ5QUIzMDA3OTBF
M0EgLyogR0NUaHJlYWRTaGFyZWREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEdDVGhyZWFkU2hhcmVkRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MjExMjJFMDE1REQ5QUIzMDA3OTBFM0EgLyogTWFya1N0YWNrSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNYXJrU3RhY2tJbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUMyMThEMTNGMTY1NUNGRDUwMDYyQkI4MSAvKiBDb3B5V29ya0xpc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29weVdvcmtMaXN0Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMjM5RDEyMTYyNjJCREQwMDVBQzVGRCAvKiBDb3B5
VmlzaXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb3B5Vmlz
aXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyMjM5RDEzMTYyNjJCREQw
MDVBQzVGRCAvKiBDb3B5VmlzaXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb3B5VmlzaXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjIzOUQxNDE2
MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3JJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvcHlWaXNpdG9ySW5saW5lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTU0MCw2ICsxNTQzLDcgQEAKIAkJQzJFNTI2QkMxNTkwRUYwMDAwNTRFNDhE
IC8qIEhlYXBUaW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIZWFwVGlt
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJFQUEzRjgxNDlBODMwODAwRkNF
MTEyIC8qIENvcGllZFNwYWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
cGllZFNwYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyRUFEMkZCMTRGMDI0
OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29waWVkQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMyRkM5QkQyMTY2NDRERkIwMDgxMEQzMyAvKiBDb3BpZWRCbG9ja0lubGluZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29waWVkQmxvY2tJbmxpbmVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUQyMTIwMjI4MEFENDMxMEMwMEVENzlCNiAvKiBEYXRlQ29u
dmVyc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRGF0ZUNv
bnZlcnNpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlEMjEyMDIyOTBBRDQz
MTBDMDBFRDc5QjYgLyogRGF0ZUNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERhdGVDb252ZXJzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CURERjdBQkQyMTFGNjBFRDIwMDEwOEUzNiAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NBY3Rpdml0eUNhbGxiYWNrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTM2LDYgKzE5NDAsOCBAQAogCQkJCTE0MTUwMTMyMTU0
QkIxM0YwMDVEOEM5OCAvKiBXZWFrU2V0SW5saW5lcy5oICovLAogCQkJCTBGQzgxNTA4MTQwNDNC
Q0EwMENGQTYwMyAvKiBXcml0ZUJhcnJpZXJTdXBwb3J0LmNwcCAqLywKIAkJCQkwRkM4MTUwOTE0
MDQzQkQyMDBDRkE2MDMgLyogV3JpdGVCYXJyaWVyU3VwcG9ydC5oICovLAorCQkJCUMyMThEMTNG
MTY1NUNGRDUwMDYyQkI4MSAvKiBDb3B5V29ya0xpc3QuaCAqLywKKwkJCQlDMkZDOUJEMjE2NjQ0
REZCMDA4MTBEMzMgLyogQ29waWVkQmxvY2tJbmxpbmVzLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGhlYXA7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjYzOCw2ICsyNjQ0LDggQEAK
IAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUMyRUFEMkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRB
bGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyMThEMTQwMTY1NUNGRDUwMDYyQkI4MSAv
KiBDb3B5V29ya0xpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyRkM5QkQzMTY2NDRERkIwMDgx
MEQzMyAvKiBDb3BpZWRCbG9ja0lubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEEzMzIw
MTVCRDJFMDcwMDZGNTRGMyAvKiBWTUluc3BlY3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzIy
MzlEMTgxNjI2MkJERDAwNUFDNUZEIC8qIENvcHlWaXNpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlDMjIzOUQxOTE2MjYyQkREMDA1QUM1RkQgLyogQ29weVZpc2l0b3JJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9CbG9ja0FsbG9j
YXRvci5jcHAJKHJldmlzaW9uIDEzNjAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0Jsb2NrQWxsb2NhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIkJsb2NrQWxsb2NhdG9yLmgiCiAKICNpbmNsdWRlICJDb3BpZWRCbG9jay5oIgorI2lu
Y2x1ZGUgIkNvcHlXb3JrTGlzdC5oIgogI2luY2x1ZGUgIk1hcmtlZEJsb2NrLmgiCiAjaW5jbHVk
ZSAiV2Vha0Jsb2NrLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0zNyw2ICsz
OCw3IEBAIEJsb2NrQWxsb2NhdG9yOjpCbG9ja0FsbG9jYXRvcigpCiAgICAgOiBtX2NvcGllZFJl
Z2lvblNldChDb3BpZWRCbG9jazo6YmxvY2tTaXplKQogICAgICwgbV9tYXJrZWRSZWdpb25TZXQo
TWFya2VkQmxvY2s6OmJsb2NrU2l6ZSkKICAgICAsIG1fd2Vha0FuZE1hcmtTdGFja1JlZ2lvblNl
dChXZWFrQmxvY2s6OmJsb2NrU2l6ZSkKKyAgICAsIG1fd29ya0xpc3RSZWdpb25TZXQoQ29weVdv
cmtMaXN0U2VnbWVudDo6YmxvY2tTaXplKQogICAgICwgbV9udW1iZXJPZkVtcHR5UmVnaW9ucygw
KQogICAgICwgbV9pc0N1cnJlbnRseUFsbG9jYXRpbmcoZmFsc2UpCiAgICAgLCBtX2Jsb2NrRnJl
ZWluZ1RocmVhZFNob3VsZFF1aXQoZmFsc2UpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9CbG9ja0FsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmgJKHJldmlzaW9uIDEzNjAyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0Jsb2NrQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEJsb2NrQWxsb2NhdG9yOwogY2xhc3Mg
Q29waWVkQmxvY2s7CitjbGFzcyBDb3B5V29ya0xpc3RTZWdtZW50OwogY2xhc3MgTWFya1N0YWNr
U2VnbWVudDsKIGNsYXNzIE1hcmtlZEJsb2NrOwogY2xhc3MgUmVnaW9uOwpAQCAtMTg4LDYgKzE4
OSw3IEBAIHByaXZhdGU6CiAgICAgUmVnaW9uU2V0IG1fbWFya2VkUmVnaW9uU2V0OwogICAgIC8v
IFdlYWtCbG9ja3MgYW5kIE1hcmtTdGFja1NlZ21lbnRzIHVzZSB0aGUgc2FtZSBSZWdpb25TZXQg
c2luY2UgdGhleSdyZSB0aGUgc2FtZSBzaXplLgogICAgIFJlZ2lvblNldCBtX3dlYWtBbmRNYXJr
U3RhY2tSZWdpb25TZXQ7CisgICAgUmVnaW9uU2V0IG1fd29ya0xpc3RSZWdpb25TZXQ7CiAKICAg
ICBEb3VibHlMaW5rZWRMaXN0PFJlZ2lvbj4gbV9lbXB0eVJlZ2lvbnM7CiAgICAgc2l6ZV90IG1f
bnVtYmVyT2ZFbXB0eVJlZ2lvbnM7CkBAIC0zMjcsNiArMzI5LDEyIEBAIGlubGluZSBCbG9ja0Fs
bG9jYXRvcjo6UmVnaW9uU2V0JiBCbG9ja0EKIH0KIAogdGVtcGxhdGUgPD4KK2lubGluZSBCbG9j
a0FsbG9jYXRvcjo6UmVnaW9uU2V0JiBCbG9ja0FsbG9jYXRvcjo6cmVnaW9uU2V0Rm9yPENvcHlX
b3JrTGlzdFNlZ21lbnQ+KCkKK3sKKyAgICByZXR1cm4gbV93b3JrTGlzdFJlZ2lvblNldDsKK30K
KwordGVtcGxhdGUgPD4KIGlubGluZSBCbG9ja0FsbG9jYXRvcjo6UmVnaW9uU2V0JiBCbG9ja0Fs
bG9jYXRvcjo6cmVnaW9uU2V0Rm9yPEhlYXBCbG9jazxDb3BpZWRCbG9jaz4gPigpCiB7CiAgICAg
cmV0dXJuIG1fY29waWVkUmVnaW9uU2V0OwpAQCAtMzUwLDYgKzM1OCwxMiBAQCBpbmxpbmUgQmxv
Y2tBbGxvY2F0b3I6OlJlZ2lvblNldCYgQmxvY2tBCiAgICAgcmV0dXJuIG1fd2Vha0FuZE1hcmtT
dGFja1JlZ2lvblNldDsKIH0KIAordGVtcGxhdGUgPD4KK2lubGluZSBCbG9ja0FsbG9jYXRvcjo6
UmVnaW9uU2V0JiBCbG9ja0FsbG9jYXRvcjo6cmVnaW9uU2V0Rm9yPEhlYXBCbG9jazxDb3B5V29y
a0xpc3RTZWdtZW50PiA+KCkKK3sKKyAgICByZXR1cm4gbV93b3JrTGlzdFJlZ2lvblNldDsKK30K
KwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBpbmxpbmUgQmxvY2tBbGxvY2F0b3I6OlJlZ2lvblNl
dCYgQmxvY2tBbGxvY2F0b3I6OnJlZ2lvblNldEZvcigpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9Db3BpZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvcGllZEJsb2NrLmgJKHJldmlzaW9uIDEzNjAyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDEx
ICsyNywxNCBAQAogI2RlZmluZSBDb3BpZWRCbG9ja19oCiAKICNpbmNsdWRlICJCbG9ja0FsbG9j
YXRvci5oIgorI2luY2x1ZGUgIkNvcHlXb3JrTGlzdC5oIgogI2luY2x1ZGUgIkhlYXBCbG9jay5o
IgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU1ZhbHVlSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIk9wdGlvbnMuaCIKICNpbmNsdWRlIDx3dGYvQXRvbWljcy5oPgorI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgSlND
IHsKIApAQCAtNDQsMTIgKzQ3LDEzIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgQ29waWVkQmxvY2sq
IGNyZWF0ZShEZWFkQmxvY2sqKTsKICAgICBzdGF0aWMgQ29waWVkQmxvY2sqIGNyZWF0ZU5vWmVy
b0ZpbGwoRGVhZEJsb2NrKik7CiAKKyAgICB2b2lkIHBpbigpOwogICAgIGJvb2wgaXNQaW5uZWQo
KTsKIAogICAgIHVuc2lnbmVkIGxpdmVCeXRlcygpOwotICAgIHZvaWQgcmVwb3J0TGl2ZUJ5dGVz
KHVuc2lnbmVkKTsKKyAgICB2b2lkIHJlcG9ydExpdmVCeXRlcyhKU0NlbGwqLCB1bnNpZ25lZCk7
CiAgICAgdm9pZCBkaWRTdXJ2aXZlR0MoKTsKLSAgICBib29sIGRpZEV2YWN1YXRlQnl0ZXModW5z
aWduZWQpOworICAgIHZvaWQgZGlkRXZhY3VhdGVCeXRlcyh1bnNpZ25lZCk7CiAgICAgYm9vbCBz
aG91bGRFdmFjdWF0ZSgpOwogICAgIGJvb2wgY2FuQmVSZWN5Y2xlZCgpOwogCkBAIC03NCwxMCAr
NzgsMTggQEAgcHVibGljOgogCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBibG9ja1NpemUgPSAz
MiAqIEtCOwogCisgICAgYm9vbCBoYXNXb3JrTGlzdCgpOworICAgIENvcHlXb3JrTGlzdCYgd29y
a0xpc3QoKTsKKwogcHJpdmF0ZToKICAgICBDb3BpZWRCbG9jayhSZWdpb24qKTsKICAgICB2b2lk
IHplcm9GaWxsV2lsZGVybmVzcygpOyAvLyBDYW4gYmUgY2FsbGVkIGF0IGFueSB0aW1lIHRvIHpl
cm8tZmlsbCB0byB0aGUgZW5kIG9mIHRoZSBibG9jay4KIAorI2lmIEVOQUJMRShQQVJBTExFTF9H
QykKKyAgICBTcGluTG9jayBtX3dvcmtMaXN0TG9jazsKKyNlbmRpZgorICAgIE93blB0cjxDb3B5
V29ya0xpc3Q+IG1fd29ya0xpc3Q7CisKICAgICBzaXplX3QgbV9yZW1haW5pbmc7CiAgICAgdWlu
dHB0cl90IG1faXNQaW5uZWQ7CiAgICAgdW5zaWduZWQgbV9saXZlQnl0ZXM7CkBAIC0xMTQsNDUg
KzEyNiwyNCBAQCBpbmxpbmUgQ29waWVkQmxvY2s6OkNvcGllZEJsb2NrKFJlZ2lvbiogCiAgICAg
LCBtX2lzUGlubmVkKGZhbHNlKQogICAgICwgbV9saXZlQnl0ZXMoMCkKIHsKLSAgICBBU1NFUlQo
aXM4Qnl0ZUFsaWduZWQocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4obV9yZW1haW5pbmcpKSk7Ci19
Ci0KLWlubGluZSB2b2lkIENvcGllZEJsb2NrOjpyZXBvcnRMaXZlQnl0ZXModW5zaWduZWQgYnl0
ZXMpCi17CiAjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIHVuc2lnbmVkIG9sZFZhbHVlID0g
MDsKLSAgICB1bnNpZ25lZCBuZXdWYWx1ZSA9IDA7Ci0gICAgZG8gewotICAgICAgICBvbGRWYWx1
ZSA9IG1fbGl2ZUJ5dGVzOwotICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlICsgYnl0ZXM7Ci0g
ICAgfSB3aGlsZSAoIVdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKCZtX2xpdmVCeXRlcywgb2xkVmFs
dWUsIG5ld1ZhbHVlKSk7Ci0jZWxzZQotICAgIG1fbGl2ZUJ5dGVzICs9IGJ5dGVzOworICAgIG1f
d29ya0xpc3RMb2NrLkluaXQoKTsKICNlbmRpZgorICAgIEFTU0VSVChpczhCeXRlQWxpZ25lZChy
ZWludGVycHJldF9jYXN0PHZvaWQqPihtX3JlbWFpbmluZykpKTsKIH0KIAogaW5saW5lIHZvaWQg
Q29waWVkQmxvY2s6OmRpZFN1cnZpdmVHQygpCiB7CiAgICAgbV9saXZlQnl0ZXMgPSAwOwogICAg
IG1faXNQaW5uZWQgPSBmYWxzZTsKKyAgICBpZiAobV93b3JrTGlzdCkKKyAgICAgICAgbV93b3Jr
TGlzdC5jbGVhcigpOwogfQogCi1pbmxpbmUgYm9vbCBDb3BpZWRCbG9jazo6ZGlkRXZhY3VhdGVC
eXRlcyh1bnNpZ25lZCBieXRlcykKK2lubGluZSB2b2lkIENvcGllZEJsb2NrOjpkaWRFdmFjdWF0
ZUJ5dGVzKHVuc2lnbmVkIGJ5dGVzKQogewogICAgIEFTU0VSVChtX2xpdmVCeXRlcyA+PSBieXRl
cyk7Ci0jaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQotICAgIHVuc2lnbmVkIG9sZFZhbHVlID0gMDsK
LSAgICB1bnNpZ25lZCBuZXdWYWx1ZSA9IDA7Ci0gICAgZG8gewotICAgICAgICBvbGRWYWx1ZSA9
IG1fbGl2ZUJ5dGVzOwotICAgICAgICBuZXdWYWx1ZSA9IG9sZFZhbHVlIC0gYnl0ZXM7Ci0gICAg
fSB3aGlsZSAoIVdURjo6d2Vha0NvbXBhcmVBbmRTd2FwKCZtX2xpdmVCeXRlcywgb2xkVmFsdWUs
IG5ld1ZhbHVlKSk7Ci0gICAgQVNTRVJUKG1fbGl2ZUJ5dGVzIDwgb2xkVmFsdWUpOwotICAgIHJl
dHVybiAhbmV3VmFsdWU7Ci0jZWxzZQogICAgIG1fbGl2ZUJ5dGVzIC09IGJ5dGVzOwotICAgIHJl
dHVybiAhbV9saXZlQnl0ZXM7Ci0jZW5kaWYKIH0KIAogaW5saW5lIGJvb2wgQ29waWVkQmxvY2s6
OmNhbkJlUmVjeWNsZWQoKQpAQCAtMTY1LDYgKzE1NiwxMyBAQCBpbmxpbmUgYm9vbCBDb3BpZWRC
bG9jazo6c2hvdWxkRXZhY3VhdGUoCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4obV9s
aXZlQnl0ZXMpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihwYXlsb2FkQ2FwYWNpdHkoKSkgPD0gT3B0
aW9uczo6bWluQ29waWVkQmxvY2tVdGlsaXphdGlvbigpOwogfQogCitpbmxpbmUgdm9pZCBDb3Bp
ZWRCbG9jazo6cGluKCkKK3sKKyAgICBtX2lzUGlubmVkID0gdHJ1ZTsKKyAgICBpZiAobV93b3Jr
TGlzdCkKKyAgICAgICAgbV93b3JrTGlzdC5jbGVhcigpOworfQorCiBpbmxpbmUgYm9vbCBDb3Bp
ZWRCbG9jazo6aXNQaW5uZWQoKQogewogICAgIHJldHVybiBtX2lzUGlubmVkOwpAQCAtMjMwLDYg
KzIyOCwxNiBAQCBpbmxpbmUgc2l6ZV90IENvcGllZEJsb2NrOjpjYXBhY2l0eSgpCiAgICAgcmV0
dXJuIHJlZ2lvbigpLT5ibG9ja1NpemUoKTsKIH0KIAoraW5saW5lIGJvb2wgQ29waWVkQmxvY2s6
Omhhc1dvcmtMaXN0KCkKK3sKKyAgICByZXR1cm4gISFtX3dvcmtMaXN0OworfQorCitpbmxpbmUg
Q29weVdvcmtMaXN0JiBDb3BpZWRCbG9jazo6d29ya0xpc3QoKQoreworICAgIHJldHVybiAqbV93
b3JrTGlzdDsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQmxvY2tJbmxpbmVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29waWVkQmxvY2tJbmxpbmVzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRCbG9ja0lubGluZXMuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ29waWVk
QmxvY2tJbmxpbmVzX2gKKyNkZWZpbmUgQ29waWVkQmxvY2tJbmxpbmVzX2gKKworI2luY2x1ZGUg
IkNvcGllZEJsb2NrLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorCituYW1lc3BhY2UgSlNDIHsKKyAg
ICAKK2lubGluZSB2b2lkIENvcGllZEJsb2NrOjpyZXBvcnRMaXZlQnl0ZXMoSlNDZWxsKiBvd25l
ciwgdW5zaWduZWQgYnl0ZXMpCit7CisjaWYgRU5BQkxFKFBBUkFMTEVMX0dDKQorICAgIFNwaW5M
b2NrSG9sZGVyIGxvY2tlcigmbV93b3JrTGlzdExvY2spOworI2VuZGlmCisgICAgbV9saXZlQnl0
ZXMgKz0gYnl0ZXM7CisKKyAgICBpZiAoIXNob3VsZEV2YWN1YXRlKCkpIHsKKyAgICAgICAgcGlu
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIW1fd29ya0xpc3QpCisgICAg
ICAgIG1fd29ya0xpc3QgPSBhZG9wdFB0cihuZXcgQ29weVdvcmtMaXN0KEhlYXA6OmhlYXAob3du
ZXIpLT5ibG9ja0FsbG9jYXRvcigpKSk7CisKKyAgICBtX3dvcmtMaXN0LT5hcHBlbmQob3duZXIp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENvcGllZEJsb2NrSW5saW5l
c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmgJKHJldmlz
aW9uIDEzNjAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgQ29waWVkQmxvY2s7CiAKIGNs
YXNzIENvcGllZFNwYWNlIHsKICAgICBmcmllbmQgY2xhc3MgQ29weVZpc2l0b3I7CisgICAgZnJp
ZW5kIGNsYXNzIEdDVGhyZWFkU2hhcmVkRGF0YTsKICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0
b3I7CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIHB1YmxpYzoKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvcGllZFNwYWNlSW5saW5lcy5oCShyZXZpc2lvbiAxMzYwMjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3BpZWRTcGFjZUlubGluZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBpbmxpbmUgYm9vbCBDb3BpZWRTcGFjZTo6Y29u
dGFpbnModm9pZCogCiAKIGlubGluZSB2b2lkIENvcGllZFNwYWNlOjpwaW4oQ29waWVkQmxvY2sq
IGJsb2NrKQogewotICAgIGJsb2NrLT5tX2lzUGlubmVkID0gdHJ1ZTsKKyAgICBibG9jay0+cGlu
KCk7CiB9CiAKIGlubGluZSB2b2lkIENvcGllZFNwYWNlOjpwaW5JZk5lY2Vzc2FyeSh2b2lkKiBv
cGFxdWVQb2ludGVyKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVZpc2l0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlWaXNp
dG9yLmNwcAkocmV2aXNpb24gMTM2MDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
Q29weVZpc2l0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVk
ZSAiQ29weVZpc2l0b3IuaCIKIAogI2luY2x1ZGUgIkNvcHlWaXNpdG9ySW5saW5lcy5oIgorI2lu
Y2x1ZGUgIkNvcHlXb3JrTGlzdC5oIgogI2luY2x1ZGUgIkdDVGhyZWFkU2hhcmVkRGF0YS5oIgog
I2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCkBAIC00MSwxNyArNDIs
MjQgQEAgQ29weVZpc2l0b3I6OkNvcHlWaXNpdG9yKEdDVGhyZWFkU2hhcmVkRAogCiB2b2lkIENv
cHlWaXNpdG9yOjpjb3B5RnJvbVNoYXJlZCgpCiB7Ci0gICAgR0NDb3B5UGhhc2VGdW5jdG9yIGZ1
bmN0b3IoKnRoaXMpOwotICAgIFZlY3RvcjxNYXJrZWRCbG9jayo+JiBibG9ja3NUb0NvcHkgPSBt
X3NoYXJlZC5tX2Jsb2Nrc1RvQ29weTsKLSAgICBzaXplX3Qgc3RhcnRJbmRleCwgZW5kSW5kZXg7
Ci0KLSAgICBtX3NoYXJlZC5nZXROZXh0QmxvY2tzVG9Db3B5KHN0YXJ0SW5kZXgsIGVuZEluZGV4
KTsKLSAgICB3aGlsZSAoc3RhcnRJbmRleCA8IGVuZEluZGV4KSB7Ci0gICAgICAgIGZvciAoc2l6
ZV90IGkgPSBzdGFydEluZGV4OyBpIDwgZW5kSW5kZXg7IGkrKykKLSAgICAgICAgICAgIGJsb2Nr
c1RvQ29weVtpXS0+Zm9yRWFjaExpdmVDZWxsKGZ1bmN0b3IpOwotICAgICAgICBtX3NoYXJlZC5n
ZXROZXh0QmxvY2tzVG9Db3B5KHN0YXJ0SW5kZXgsIGVuZEluZGV4KTsKKyAgICBzaXplX3QgbmV4
dCwgZW5kOworICAgIG1fc2hhcmVkLmdldE5leHRCbG9ja3NUb0NvcHkobmV4dCwgZW5kKTsKKyAg
ICB3aGlsZSAobmV4dCA8IGVuZCkgeworICAgICAgICBmb3IgKDsgbmV4dCA8IGVuZDsgKytuZXh0
KSB7CisgICAgICAgICAgICBDb3BpZWRCbG9jayogYmxvY2sgPSBtX3NoYXJlZC5tX2Jsb2Nrc1Rv
Q29weVtuZXh0XTsKKyAgICAgICAgICAgIGlmICghYmxvY2stPmhhc1dvcmtMaXN0KCkpCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIENvcHlXb3JrTGlzdCYgd29ya0xp
c3QgPSBibG9jay0+d29ya0xpc3QoKTsKKyAgICAgICAgICAgIGZvciAoQ29weVdvcmtMaXN0Ojpp
dGVyYXRvciBpdCA9IHdvcmtMaXN0LmJlZ2luKCk7IGl0ICE9IHdvcmtMaXN0LmVuZCgpOyArK2l0
KQorICAgICAgICAgICAgICAgIHZpc2l0Q2VsbCgqaXQpOworCisgICAgICAgICAgICBBU1NFUlQo
IWJsb2NrLT5saXZlQnl0ZXMoKSk7CisgICAgICAgICAgICBtX3NoYXJlZC5tX2NvcGllZFNwYWNl
LT5yZWN5Y2xlRXZhY3VhdGVkQmxvY2soYmxvY2spOworICAgICAgICB9CisgICAgICAgIG1fc2hh
cmVkLmdldE5leHRCbG9ja3NUb0NvcHkobmV4dCwgZW5kKTsKICAgICB9Ci0gICAgQVNTRVJUKHN0
YXJ0SW5kZXggPT0gZW5kSW5kZXgpOworICAgIEFTU0VSVChuZXh0ID09IGVuZCk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVZp
c2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5Vmlz
aXRvci5oCShyZXZpc2lvbiAxMzYwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9D
b3B5VmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgR0NUaHJlYWRTaGFyZWREYXRhOworY2xhc3MgSlNDZWxsOwogCiBjbGFz
cyBDb3B5VmlzaXRvciB7CiBwdWJsaWM6CkBAIC01MCw2ICs1MSw3IEBAIHB1YmxpYzoKIAogcHJp
dmF0ZToKICAgICB2b2lkKiBhbGxvY2F0ZU5ld1NwYWNlU2xvdyhzaXplX3QpOworICAgIHZvaWQg
dmlzaXRDZWxsKEpTQ2VsbCopOwogCiAgICAgR0NUaHJlYWRTaGFyZWREYXRhJiBtX3NoYXJlZDsK
ICAgICBDb3BpZWRBbGxvY2F0b3IgbV9jb3BpZWRBbGxvY2F0b3I7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9Db3B5VmlzaXRvcklubGluZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9Db3B5VmlzaXRvcklubGluZXMuaAkocmV2aXNpb24gMTM2
MDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVZpc2l0b3JJbmxpbmVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDI1ICszNCwxMSBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAot
Y2xhc3MgR0NDb3B5UGhhc2VGdW5jdG9yIDogcHVibGljIE1hcmtlZEJsb2NrOjpWb2lkRnVuY3Rv
ciB7Ci1wdWJsaWM6Ci0gICAgR0NDb3B5UGhhc2VGdW5jdG9yKENvcHlWaXNpdG9yJiB2aXNpdG9y
KQotICAgICAgICA6IG1fdmlzaXRvcih2aXNpdG9yKQotICAgIHsKLSAgICB9Ci0KLSAgICB2b2lk
IG9wZXJhdG9yKCkoSlNDZWxsKiBjZWxsKQotICAgIHsKLSAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBjZWxsLT5zdHJ1Y3R1cmUoKTsKLSAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPm91dE9m
TGluZUNhcGFjaXR5KCkgJiYgIWhhc0luZGV4ZWRQcm9wZXJ0aWVzKHN0cnVjdHVyZS0+aW5kZXhp
bmdUeXBlKCkpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBBU1NFUlQoc3RydWN0dXJl
LT5jbGFzc0luZm8oKS0+bWV0aG9kVGFibGUuY29weUJhY2tpbmdTdG9yZSA9PSBKU09iamVjdDo6
Y29weUJhY2tpbmdTdG9yZSk7Ci0gICAgICAgIEpTT2JqZWN0Ojpjb3B5QmFja2luZ1N0b3JlKGNl
bGwsIG1fdmlzaXRvcik7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIENvcHlWaXNpdG9yJiBtX3Zp
c2l0b3I7Ci19OworaW5saW5lIHZvaWQgQ29weVZpc2l0b3I6OnZpc2l0Q2VsbChKU0NlbGwqIGNl
bGwpCit7CisgICAgQVNTRVJUKGNlbGwtPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8oKS0+bWV0aG9k
VGFibGUuY29weUJhY2tpbmdTdG9yZSA9PSBKU09iamVjdDo6Y29weUJhY2tpbmdTdG9yZSk7Cisg
ICAgSlNPYmplY3Q6OmNvcHlCYWNraW5nU3RvcmUoY2VsbCwgKnRoaXMpOworfQogCiBpbmxpbmUg
Ym9vbCBDb3B5VmlzaXRvcjo6Y2hlY2tJZlNob3VsZENvcHkodm9pZCogb2xkUHRyLCBzaXplX3Qg
Ynl0ZXMpCiB7CkBAIC0xMTAsOCArOTYsOCBAQCBpbmxpbmUgdm9pZCBDb3B5VmlzaXRvcjo6ZGlk
Q29weSh2b2lkKiBwCiAgICAgQ29waWVkQmxvY2sqIGJsb2NrID0gQ29waWVkU3BhY2U6OmJsb2Nr
Rm9yKHB0cik7CiAgICAgQVNTRVJUKCFibG9jay0+aXNQaW5uZWQoKSk7CiAKLSAgICBpZiAoYmxv
Y2stPmRpZEV2YWN1YXRlQnl0ZXMoYnl0ZXMpKQotICAgICAgICBtX3NoYXJlZC5tX2NvcGllZFNw
YWNlLT5yZWN5Y2xlRXZhY3VhdGVkQmxvY2soYmxvY2spOworICAgIGJsb2NrLT5kaWRFdmFjdWF0
ZUJ5dGVzKGJ5dGVzKTsKKwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlXb3JrTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0NvcHlXb3JrTGlzdC5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQ29weVdvcmtMaXN0LmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBDb3B5V29ya0xpc3RfaAorI2RlZmluZSBD
b3B5V29ya0xpc3RfaAorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSlNDZWxsOworCitjbGFzcyBDb3B5V29ya0xpc3RTZWdtZW50IDogcHVibGlj
IEhlYXBCbG9jazxDb3B5V29ya0xpc3RTZWdtZW50PiB7CitwdWJsaWM6CisgICAgc3RhdGljIENv
cHlXb3JrTGlzdFNlZ21lbnQqIGNyZWF0ZShEZWFkQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG5ldyAoTm90TnVsbCwgYmxvY2spIENvcHlXb3JrTGlzdFNlZ21lbnQoYmxvY2st
PnJlZ2lvbigpKTsKKyAgICB9CisKKyAgICBzaXplX3Qgc2l6ZSgpIHsgcmV0dXJuIG1fc2l6ZTsg
fQorICAgIGJvb2wgaXNGdWxsKCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJmRh
dGEoKVtzaXplKCldKSA+PSBlbmRPZkJsb2NrKCk7IH0KKyAgICBKU0NlbGwqIGdldChzaXplX3Qg
aW5kZXgpIHsgcmV0dXJuIGRhdGEoKVtpbmRleF07IH0KKworICAgIHZvaWQgYXBwZW5kKEpTQ2Vs
bCogY2VsbCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghaXNGdWxsKCkpOworICAgICAgICBkYXRh
KClbbV9zaXplXSA9IGNlbGw7CisgICAgICAgIG1fc2l6ZSArPSAxOworICAgIH0KKworICAgIHN0
YXRpYyBjb25zdCBzaXplX3QgYmxvY2tTaXplID0gNTEyOworCitwcml2YXRlOgorICAgIENvcHlX
b3JrTGlzdFNlZ21lbnQoUmVnaW9uKiByZWdpb24pCisgICAgICAgIDogSGVhcEJsb2NrPENvcHlX
b3JrTGlzdFNlZ21lbnQ+KHJlZ2lvbikKKyAgICAgICAgLCBtX3NpemUoMCkKKyAgICB7CisgICAg
fQorCisgICAgSlNDZWxsKiogZGF0YSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxs
Kio+KHRoaXMgKyAxKTsgfQorICAgIGNoYXIqIGVuZE9mQmxvY2soKSB7IHJldHVybiByZWludGVy
cHJldF9jYXN0PGNoYXIqPih0aGlzKSArIGJsb2NrU2l6ZTsgfQorCisgICAgc2l6ZV90IG1fc2l6
ZTsKK307CisKK2NsYXNzIENvcHlXb3JrTGlzdEl0ZXJhdG9yIHsKKyAgICBmcmllbmQgY2xhc3Mg
Q29weVdvcmtMaXN0OworcHVibGljOgorICAgIEpTQ2VsbCogZ2V0KCkgeyByZXR1cm4gbV9jdXJy
ZW50U2VnbWVudC0+Z2V0KG1fY3VycmVudEluZGV4KTsgfQorICAgIEpTQ2VsbCogb3BlcmF0b3Iq
KCkgeyByZXR1cm4gZ2V0KCk7IH0KKyAgICBKU0NlbGwqIG9wZXJhdG9yLT4oKSB7IHJldHVybiBn
ZXQoKTsgfQorCisgICAgQ29weVdvcmtMaXN0SXRlcmF0b3ImIG9wZXJhdG9yKysoKQorICAgIHsK
KyAgICAgICAgbV9jdXJyZW50SW5kZXgrKzsKKworICAgICAgICBpZiAobV9jdXJyZW50SW5kZXgg
Pj0gbV9jdXJyZW50U2VnbWVudC0+c2l6ZSgpKSB7CisgICAgICAgICAgICBtX2N1cnJlbnRJbmRl
eCA9IDA7CisgICAgICAgICAgICBtX2N1cnJlbnRTZWdtZW50ID0gbV9jdXJyZW50U2VnbWVudC0+
bmV4dCgpOworICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVCghbV9jdXJyZW50U2VnbWVudCB8
fCBtX2N1cnJlbnRTZWdtZW50LT5zaXplKCkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDb3B5V29ya0xpc3RJ
dGVyYXRvciYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9jdXJyZW50U2Vn
bWVudCA9PSBvdGhlci5tX2N1cnJlbnRTZWdtZW50ICYmIG1fY3VycmVudEluZGV4ID09IG90aGVy
Lm1fY3VycmVudEluZGV4OworICAgIH0KKyAgICAKKyAgICBib29sIG9wZXJhdG9yIT0oY29uc3Qg
Q29weVdvcmtMaXN0SXRlcmF0b3ImIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KKworICAgIENvcHlXb3JrTGlzdEl0ZXJhdG9yKCkK
KyAgICAgICAgOiBtX2N1cnJlbnRTZWdtZW50KDApCisgICAgICAgICwgbV9jdXJyZW50SW5kZXgo
MCkKKyAgICB7CisgICAgfQorCitwcml2YXRlOgorICAgIENvcHlXb3JrTGlzdEl0ZXJhdG9yKENv
cHlXb3JrTGlzdFNlZ21lbnQqIHN0YXJ0U2VnbWVudCwgc2l6ZV90IHN0YXJ0SW5kZXgpCisgICAg
ICAgIDogbV9jdXJyZW50U2VnbWVudChzdGFydFNlZ21lbnQpCisgICAgICAgICwgbV9jdXJyZW50
SW5kZXgoc3RhcnRJbmRleCkKKyAgICB7CisgICAgfQorICAgIAorICAgIENvcHlXb3JrTGlzdFNl
Z21lbnQqIG1fY3VycmVudFNlZ21lbnQ7CisgICAgc2l6ZV90IG1fY3VycmVudEluZGV4OworfTsK
KworY2xhc3MgQ29weVdvcmtMaXN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIENvcHlXb3JrTGlz
dEl0ZXJhdG9yIGl0ZXJhdG9yOworCisgICAgQ29weVdvcmtMaXN0KEJsb2NrQWxsb2NhdG9yJik7
CisgICAgfkNvcHlXb3JrTGlzdCgpOworCisgICAgdm9pZCBhcHBlbmQoSlNDZWxsKik7CisgICAg
aXRlcmF0b3IgYmVnaW4oKTsKKyAgICBpdGVyYXRvciBlbmQoKTsKKworcHJpdmF0ZToKKyAgICBE
b3VibHlMaW5rZWRMaXN0PENvcHlXb3JrTGlzdFNlZ21lbnQ+IG1fc2VnbWVudHM7CisgICAgQmxv
Y2tBbGxvY2F0b3ImIG1fYmxvY2tBbGxvY2F0b3I7Cit9OworCitpbmxpbmUgQ29weVdvcmtMaXN0
OjpDb3B5V29ya0xpc3QoQmxvY2tBbGxvY2F0b3ImIGJsb2NrQWxsb2NhdG9yKQorICAgIDogbV9i
bG9ja0FsbG9jYXRvcihibG9ja0FsbG9jYXRvcikKK3sKK30KKworaW5saW5lIENvcHlXb3JrTGlz
dDo6fkNvcHlXb3JrTGlzdCgpCit7CisgICAgd2hpbGUgKCFtX3NlZ21lbnRzLmlzRW1wdHkoKSkK
KyAgICAgICAgbV9ibG9ja0FsbG9jYXRvci5kZWFsbG9jYXRlKENvcHlXb3JrTGlzdFNlZ21lbnQ6
OmRlc3Ryb3kobV9zZWdtZW50cy5yZW1vdmVIZWFkKCkpKTsKK30KKworaW5saW5lIHZvaWQgQ29w
eVdvcmtMaXN0OjphcHBlbmQoSlNDZWxsKiBjZWxsKQoreworICAgIGlmIChtX3NlZ21lbnRzLmlz
RW1wdHkoKSB8fCBtX3NlZ21lbnRzLnRhaWwoKS0+aXNGdWxsKCkpCisgICAgICAgIG1fc2VnbWVu
dHMuYXBwZW5kKENvcHlXb3JrTGlzdFNlZ21lbnQ6OmNyZWF0ZShtX2Jsb2NrQWxsb2NhdG9yLmFs
bG9jYXRlPENvcHlXb3JrTGlzdFNlZ21lbnQ+KCkpKTsKKworICAgIEFTU0VSVCghbV9zZWdtZW50
cy50YWlsKCktPmlzRnVsbCgpKTsKKworICAgIG1fc2VnbWVudHMudGFpbCgpLT5hcHBlbmQoY2Vs
bCk7Cit9CisKK2lubGluZSBDb3B5V29ya0xpc3Q6Oml0ZXJhdG9yIENvcHlXb3JrTGlzdDo6YmVn
aW4oKQoreworICAgIHJldHVybiBDb3B5V29ya0xpc3RJdGVyYXRvcihtX3NlZ21lbnRzLmhlYWQo
KSwgMCk7Cit9CisKK2lubGluZSBDb3B5V29ya0xpc3Q6Oml0ZXJhdG9yIENvcHlXb3JrTGlzdDo6
ZW5kKCkKK3sKKyAgICByZXR1cm4gQ29weVdvcmtMaXN0SXRlcmF0b3IoKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb3B5V29ya0xpc3RfaApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNoYXJlZERhdGEuY3BwCShyZXZpc2lv
biAxMzYwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1RocmVhZFNoYXJlZERh
dGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3ICs1OSw2IEBAIEdDVGhyZWFkU2hhcmVkRGF0
YTo6R0NUaHJlYWRTaGFyZWREYXRhKEoKICAgICAsIG1fc2hhcmVkTWFya1N0YWNrKGdsb2JhbERh
dGEtPmhlYXAuYmxvY2tBbGxvY2F0b3IoKSkKICAgICAsIG1fbnVtYmVyT2ZBY3RpdmVQYXJhbGxl
bE1hcmtlcnMoMCkKICAgICAsIG1fcGFyYWxsZWxNYXJrZXJzU2hvdWxkRXhpdChmYWxzZSkKLSAg
ICAsIG1fYmxvY2tzVG9Db3B5KGdsb2JhbERhdGEtPmhlYXAubV9ibG9ja1NuYXBzaG90KQogICAg
ICwgbV9jb3B5SW5kZXgoMCkKICAgICAsIG1fbnVtYmVyT2ZBY3RpdmVHQ1RocmVhZHMoMCkKICAg
ICAsIG1fZ2NUaHJlYWRzU2hvdWxkV2FpdChmYWxzZSkKQEAgLTE2Niw3ICsxNjUsNyBAQCB2b2lk
IEdDVGhyZWFkU2hhcmVkRGF0YTo6ZGlkU3RhcnRDb3B5aW5nCiB7CiAgICAgewogICAgICAgICBT
cGluTG9ja0hvbGRlciBsb2NrZXIoJm1fY29weUxvY2spOwotICAgICAgICBtX2Jsb2Nrc1RvQ29w
eSA9IG1fZ2xvYmFsRGF0YS0+aGVhcC5tX2Jsb2NrU25hcHNob3Q7CisgICAgICAgIFdURjo6Y29w
eVRvVmVjdG9yKG1fY29waWVkU3BhY2UtPm1fYmxvY2tTZXQsIG1fYmxvY2tzVG9Db3B5KTsKICAg
ICAgICAgbV9jb3B5SW5kZXggPSAwOwogICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvR0NUaHJlYWRTaGFyZWREYXRhLmgJKHJldmlzaW9uIDEzNjAyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0dDVGhyZWFkU2hhcmVkRGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDx2b2lkKj4gbV9v
cGFxdWVSb290czsKIAogICAgIFNwaW5Mb2NrIG1fY29weUxvY2s7Ci0gICAgVmVjdG9yPE1hcmtl
ZEJsb2NrKj4mIG1fYmxvY2tzVG9Db3B5OworICAgIFZlY3RvcjxDb3BpZWRCbG9jayo+IG1fYmxv
Y2tzVG9Db3B5OwogICAgIHNpemVfdCBtX2NvcHlJbmRleDsKICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IHNfYmxvY2tGcmFnbWVudExlbmd0aCA9IDMyOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCShyZXZpc2lvbiAxMzYwMjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OSw2ICsxNzksNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBDb3BpZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEdDQXdh
cmVKSVRTdHViUm91dGluZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVFN0dWJSb3V0aW5lOwog
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCShyZXZpc2lvbiAxMzYwMjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Miw3ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGhhcnZlc3RXZWFrUmVmZXJlbmNlcygp
OwogICAgIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsRmluYWxpemVycygpOwogCi0gICAgdm9p
ZCBjb3B5TGF0ZXIodm9pZCosIHNpemVfdCk7CisgICAgdm9pZCBjb3B5TGF0ZXIoSlNDZWxsKiwg
dm9pZCosIHNpemVfdCk7CiAgICAgCiAjaWYgRU5BQkxFKFNJTVBMRV9IRUFQX1BST0ZJTElORykK
ICAgICBWVGFibGVTcGVjdHJ1bSBtX3Zpc2l0ZWRUeXBlQ291bnRzOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvU2xvdFZpc2l0b3JJbmxpbmVzLmgJKHJldmlzaW9uIDEz
NjAyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9ySW5saW5lcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZuZGVmIFNsb3RWaXNpdG9ySW5s
aW5lc19oCiAjZGVmaW5lIFNsb3RWaXNpdG9ySW5saW5lc19oCiAKKyNpbmNsdWRlICJDb3BpZWRC
bG9ja0lubGluZXMuaCIKICNpbmNsdWRlICJDb3BpZWRTcGFjZUlubGluZXMuaCIKICNpbmNsdWRl
ICJPcHRpb25zLmgiCiAjaW5jbHVkZSAiU2xvdFZpc2l0b3IuaCIKQEAgLTE2MCw3ICsxNjEsNyBA
QCBpbmxpbmUgdm9pZCBTbG90VmlzaXRvcjo6ZG9uYXRlQW5kRHJhaW4oCiAgICAgZHJhaW4oKTsK
IH0KIAotaW5saW5lIHZvaWQgU2xvdFZpc2l0b3I6OmNvcHlMYXRlcih2b2lkKiBwdHIsIHNpemVf
dCBieXRlcykKK2lubGluZSB2b2lkIFNsb3RWaXNpdG9yOjpjb3B5TGF0ZXIoSlNDZWxsKiBvd25l
ciwgdm9pZCogcHRyLCBzaXplX3QgYnl0ZXMpCiB7CiAgICAgaWYgKENvcGllZFNwYWNlOjppc092
ZXJzaXplKGJ5dGVzKSkgewogICAgICAgICBtX3NoYXJlZC5tX2NvcGllZFNwYWNlLT5waW4oQ29w
aWVkU3BhY2U6Om92ZXJzaXplQmxvY2tGb3IocHRyKSk7CkBAIC0xNzEsMTAgKzE3Miw3IEBAIGlu
bGluZSB2b2lkIFNsb3RWaXNpdG9yOjpjb3B5TGF0ZXIodm9pZCoKICAgICBpZiAoYmxvY2stPmlz
UGlubmVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJsb2NrLT5yZXBvcnRMaXZlQnl0ZXMo
Ynl0ZXMpOwotCi0gICAgaWYgKCFibG9jay0+c2hvdWxkRXZhY3VhdGUoKSkKLSAgICAgICAgbV9z
aGFyZWQubV9jb3BpZWRTcGFjZS0+cGluKGJsb2NrKTsKKyAgICBibG9jay0+cmVwb3J0TGl2ZUJ5
dGVzKG93bmVyLCBieXRlcyk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEzNjAy
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU09iamVjdDo6
dmlzaXRCdXR0ZXIKIAogICAgIC8vIE1hcmsgdGhlIHByb3BlcnRpZXMuCiAgICAgdmlzaXRvci5h
cHBlbmRWYWx1ZXMoYnV0dGVyZmx5LT5wcm9wZXJ0eVN0b3JhZ2UoKSAtIHN0b3JhZ2VTaXplLCBz
dG9yYWdlU2l6ZSk7Ci0gICAgdmlzaXRvci5jb3B5TGF0ZXIoYnV0dGVyZmx5LT5iYXNlKHByZUNh
cGFjaXR5LCBwcm9wZXJ0eUNhcGFjaXR5KSwgY2FwYWNpdHlJbkJ5dGVzKTsKKyAgICB2aXNpdG9y
LmNvcHlMYXRlcih0aGlzLCBidXR0ZXJmbHktPmJhc2UocHJlQ2FwYWNpdHksIHByb3BlcnR5Q2Fw
YWNpdHkpLCBjYXBhY2l0eUluQnl0ZXMpOwogICAgIAogICAgIC8vIE1hcmsgdGhlIGFycmF5IGlm
IGFwcHJvcHJpYXRlLgogICAgIHN3aXRjaCAoc3RydWN0dXJlLT5pbmRleGluZ1R5cGUoKSkgewo=
</data>
<flag name="review"
          id="192364"
          type_id="1"
          status="+"
          setter="fpizlo"
    />
    <flag name="commit-queue"
          id="192439"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>