<?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>72563</bug_id>
          
          <creation_ts>2011-11-16 16:09:51 -0800</creation_ts>
          <short_desc>JSC::CodeBlock should know which references generated by the DFG are weak</short_desc>
          <delta_ts>2011-11-16 16:50:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>72312</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>504367</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-16 16:09:51 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504374</commentid>
    <comment_count>1</comment_count>
      <attachid>115473</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-16 16:15:57 -0800</bug_when>
    <thetext>Created attachment 115473
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504381</commentid>
    <comment_count>2</comment_count>
      <attachid>115473</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-11-16 16:24:10 -0800</bug_when>
    <thetext>Comment on attachment 115473
the patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504392</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-16 16:39:37 -0800</bug_when>
    <thetext>It&apos;s performance-neutral.



Benchmark report for SunSpider, V8, and Kraken on bigmac.local (MacPro5,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r100522)
&quot;DFGWeak&quot; at /Volumes/Data/pizlo/tertiary/OpenSource/WebKitBuild/Release/jsc (r100522)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample
measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime()
function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in
milliseconds.

                                            TipOfTree                DFGWeak                                     
SunSpider:
   3d-cube                                7.4398+-0.0273          7.4265+-0.0310       
   3d-morph                               8.3947+-0.0303    ?     8.4720+-0.1302       ?
   3d-raytrace                            7.8433+-0.1168          7.7104+-0.0512         might be 1.0172x faster
   access-binary-trees                    1.6054+-0.0134          1.5999+-0.0096       
   access-fannkuch                        7.6610+-0.1248    ^     7.5207+-0.0105       ^ definitely 1.0187x faster
   access-nbody                           4.1811+-0.0077    ?     4.1882+-0.0328       ?
   access-nsieve                          3.1675+-0.0434          3.1550+-0.0475       
   bitops-3bit-bits-in-byte               1.2622+-0.0191          1.2533+-0.0158       
   bitops-bits-in-byte                    4.9339+-0.0287          4.9009+-0.0143       
   bitops-bitwise-and                     3.2972+-0.0169    ?     3.3324+-0.0443       ? might be 1.0107x slower
   bitops-nsieve-bits                     5.6792+-0.0333          5.6682+-0.0405       
   controlflow-recursive                  2.3004+-0.0291    ?     2.3032+-0.0241       ?
   crypto-aes                             7.1191+-0.0418          7.1127+-0.0367       
   crypto-md5                             2.5027+-0.0186    ?     2.5536+-0.0460       ? might be 1.0203x slower
   crypto-sha1                            2.1973+-0.0230          2.1954+-0.0332       
   date-format-tofte                     10.9261+-0.2857         10.7098+-0.0489         might be 1.0202x faster
   date-format-xparb                     11.3367+-0.2987         11.1948+-0.3314         might be 1.0127x faster
   math-cordic                            7.2301+-0.0726    ^     7.1259+-0.0186       ^ definitely 1.0146x faster
   math-partial-sums                     10.5693+-0.1449         10.5256+-0.0354       
   math-spectral-norm                     2.6410+-0.0325    ^     2.5981+-0.0080       ^ definitely 1.0165x faster
   regexp-dna                            13.0281+-0.0726         13.0013+-0.0620       
   string-base64                          3.9365+-0.0144    ?     3.9419+-0.0189       ?
   string-fasta                           7.3809+-0.0333    ?     7.3940+-0.0269       ?
   string-tagcloud                       13.2893+-0.1496         13.1009+-0.0725         might be 1.0144x faster
   string-unpack-code                    22.2383+-0.0946    ?    22.3519+-0.2027       ?
   string-validate-input                  5.6933+-0.1166          5.5768+-0.0504         might be 1.0209x faster

   &lt;arithmetic&gt; *                         6.8406+-0.0350          6.8044+-0.0253         might be 1.0053x faster
   &lt;geometric&gt;                            5.4390+-0.0263          5.4151+-0.0212         might be 1.0044x faster
   &lt;harmonic&gt;                             4.2287+-0.0205          4.2161+-0.0221         might be 1.0030x faster

                                            TipOfTree                DFGWeak                                     
V8:
   crypto                                77.3485+-0.2738    ?    78.1872+-1.1799       ? might be 1.0108x slower
   deltablue                            168.2160+-0.6230    !   171.4753+-2.2625       ! definitely 1.0194x slower
   earley-boyer                         106.4277+-2.1540        105.0603+-1.3109         might be 1.0130x faster
   raytrace                              63.1313+-0.5673    ?    63.3722+-1.1857       ?
   regexp                               126.4038+-0.5045        126.2782+-0.5559       
   richards                             139.0056+-1.9669    ?   140.8099+-1.9653       ? might be 1.0130x slower
   splay                                 89.7563+-0.7820    ?    90.6418+-1.2659       ?

   &lt;arithmetic&gt;                         110.0413+-0.6796    ?   110.8321+-0.4371       ? might be 1.0072x slower
   &lt;geometric&gt; *                        104.6856+-0.6344    ?   105.3143+-0.5341       ? might be 1.0060x slower
   &lt;harmonic&gt;                            99.4776+-0.5807    ?   100.0015+-0.6478       ? might be 1.0053x slower

                                            TipOfTree                DFGWeak                                     
Kraken:
   ai-astar                             819.2897+-10.1898       818.7022+-10.9279      
   audio-beat-detection                 206.4602+-1.0583        204.8580+-0.6615       
   audio-dft                            268.9449+-10.0384       262.9276+-2.6183         might be 1.0229x faster
   audio-fft                            133.3716+-0.2218        133.2630+-0.2694       
   audio-oscillator                     293.6317+-0.2900    ?   294.6799+-1.6204       ?
   imaging-darkroom                     335.0992+-5.0936        333.3226+-4.6104       
   imaging-desaturate                   240.9964+-0.0905        240.9428+-0.2223       
   imaging-gaussian-blur                620.8911+-0.2228    ?   621.7937+-2.1577       ?
   json-parse-financial                  73.4866+-0.2516    ^    72.5241+-0.2918       ^ definitely 1.0133x faster
   json-stringify-tinderbox              85.6875+-0.8347    ?    85.7868+-0.5077       ?
   stanford-crypto-aes                  117.0081+-0.7022        116.6514+-0.6636       
   stanford-crypto-ccm                  115.9199+-0.4262        115.5942+-1.0340       
   stanford-crypto-pbkdf2               232.3294+-0.4827        231.3283+-1.0463       
   stanford-crypto-sha256-iterative      93.3015+-0.1997         93.2156+-0.1988       

   &lt;arithmetic&gt; *                       259.7442+-0.8163        258.9707+-0.9146         might be 1.0030x faster
   &lt;geometric&gt;                          200.1064+-0.6275        199.3300+-0.3560         might be 1.0039x faster
   &lt;harmonic&gt;                           161.0712+-0.5026        160.3877+-0.2369         might be 1.0043x faster

                                            TipOfTree                DFGWeak                                     
All benchmarks:
   &lt;arithmetic&gt;                          97.5439+-0.2197         97.4112+-0.2341         might be 1.0014x faster
   &lt;geometric&gt;                           24.7285+-0.0957         24.6616+-0.0674         might be 1.0027x faster
   &lt;harmonic&gt;                             7.4535+-0.0358          7.4318+-0.0383         might be 1.0029x faster

                                            TipOfTree                DFGWeak                                     
Geomean of preferred means:
   &lt;scaled-result&gt;                       57.0823+-0.1913         57.0386+-0.1300         might be 1.0008x faster</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>504398</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-11-16 16:50:14 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/100527</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115473</attachid>
            <date>2011-11-16 16:15:57 -0800</date>
            <delta_ts>2011-11-16 16:24:09 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>dfgweakref_patch_1.diff</filename>
            <type>text/plain</type>
            <size>23337</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAwNTE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDExLTExLTE2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SlNDOjpDb2RlQmxvY2sgc2hvdWxkIGtub3cgd2hpY2ggcmVmZXJlbmNlcyBnZW5lcmF0ZWQgYnkg
dGhlIERGRyBhcmUgd2VhaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzI1NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGVCbG9jazo6bV9kZmdEYXRhIG5vdyB0cmFja3Mgd2VhayByZWZl
cmVuY2VzIGFuZCB3ZWFrIHJlZmVyZW5jZSB0cmFuc2l0aW9ucworICAgICAgICAobGlrZSBlcGhl
bWVyb25zKSBnZW5lcmF0ZWQgYnkgdGhlIERGRy4gVGhlIERGRyBtYWtlcyBzdXJlIHRvIG5vdGlm
eSB0aGUKKyAgICAgICAgQ29kZUJsb2NrIG9mIGFsbCB1c2VzIG9mIHdlYWsgcmVmZXJlbmNlcyBh
bmQgd2VhayByZWZlcmVuY2UgdHJhbnNpdGlvbnMuCisgICAgICAgIENvZGVCbG9jayBjdXJyZW50
bHkgbWFya3MgdGhlbSBzdHJvbmdseSwgc2luY2UgdGhlIHdlYWsgbWFya2luZyBsb2dpYyBpcyBu
b3QKKyAgICAgICAgaW4gcGxhY2UsIHlldC4KKworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmlzaXRBZ2dyZWdhdGUpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRXZWFrUmVmZXJlbmNlcyk6CisgICAgICAg
ICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5k
V2Vha1JlZmVyZW5jZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rV2Vha1JlZmVy
ZW5jZXNUb0ZpdCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YXBwZW5kV2Vha1JlZmVyZW5j
ZVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnNocmlua1dlYWtSZWZlcmVu
Y2VUcmFuc2l0aW9uc1RvRml0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpXZWFrUmVmZXJl
bmNlVHJhbnNpdGlvbjo6V2Vha1JlZmVyZW5jZVRyYW5zaXRpb24pOgorICAgICAgICAqIGJ5dGVj
b2RlL0NvZGVPcmlnaW4uaDoKKyAgICAgICAgKEpTQzo6Q29kZU9yaWdpbjo6Y29kZU9yaWdpbk93
bmVyKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3Bw
OgorICAgICAgICAoSlNDOjpERkc6OkpJVENvbXBpbGVyOjpsaW5rKToKKyAgICAgICAgKiBkZmcv
REZHSklUQ29tcGlsZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YWRkV2Vh
a1JlZmVyZW5jZSk6CisgICAgICAgIChKU0M6OkRGRzo6SklUQ29tcGlsZXI6OmFkZFdlYWtSZWZl
cmVuY2VUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6YnJhbmNo
V2Vha1B0cik6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxKU1ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisKIDIwMTEtMTEtMTYg
IFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4gQnVpbGQgZml4IGZvciAhRU5BQkxFKEpJVCkgYWZ0ZXIgcjEwMDM2My4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAx
MDA1MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTY1NCw2ICsxNjU0LDI0IEBAIHZvaWQgQ29kZUJsb2NrOjp2aXNp
dEFnZ3JlZ2F0ZShTbG90VmlzaXQKICAgICBpZiAoaGFzSW5zdHJ1Y3Rpb25zKCkgJiYgbV9zaG91
bGREaXNjYXJkQnl0ZWNvZGUpCiAgICAgICAgIHZpc2l0b3IuYWRkVW5jb25kaXRpb25hbEZpbmFs
aXplcih0aGlzKTsKICNlbmRpZgorICAgIAorICAgIHN0cm9uZ2x5VmlzaXRXZWFrUmVmZXJlbmNl
cyh2aXNpdG9yKTsKK30KKwordm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRXZWFrUmVmZXJl
bmNlcyhTbG90VmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBpZiAoIW1fZGZnRGF0YSkKKyAgICAg
ICAgcmV0dXJuOworICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RmZ0RhdGEt
PnRyYW5zaXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICghIW1fZGZnRGF0YS0+dHJh
bnNpdGlvbnNbaV0ubV9jb2RlT3JpZ2luKQorICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1f
ZGZnRGF0YS0+dHJhbnNpdGlvbnNbaV0ubV9jb2RlT3JpZ2luKTsgLy8gQWxtb3N0IGNlcnRhaW5s
eSBub3QgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY29kZSBvcmlnaW4gc2hvdWxkIGFsc28gYmUgYSB3
ZWFrIHJlZmVyZW5jZS4gQmV0dGVyIHRvIGJlIHNhZmUsIHRob3VnaC4KKyAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJm1fZGZnRGF0YS0+dHJhbnNpdGlvbnNbaV0ubV9mcm9tKTsKKyAgICAgICAgdmlz
aXRvci5hcHBlbmQoJm1fZGZnRGF0YS0+dHJhbnNpdGlvbnNbaV0ubV90byk7CisgICAgfQorICAg
IAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RmZ0RhdGEtPndlYWtSZWZlcmVuY2Vz
LnNpemUoKTsgKytpKQorICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9kZmdEYXRhLT53ZWFrUmVm
ZXJlbmNlc1tpXSk7CiB9CiAKIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6OmhhbmRsZXJGb3JCeXRl
Y29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwMDUxNykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAt
MjkyLDYgKzI5MiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBjYW5Qcm9kdWNl
Q29weVdpdGhCeXRlY29kZSgpIHsgcmV0dXJuIGhhc0luc3RydWN0aW9ucygpOyB9CiAKICAgICAg
ICAgdm9pZCB2aXNpdEFnZ3JlZ2F0ZShTbG90VmlzaXRvciYpOworICAgICAgICAKKyAgICAgICAg
Ly8gQ2FsbCB0aGlzIGlmIHlvdSBhcmUgbm90IGpldHRpc29uaW5nIGEgY29kZSBibG9jaywgYW5k
IHRodXMKKyAgICAgICAgLy8gaGF2ZSBubyBldmlkZW5jZSB0byBzdWdnZXN0IHRoYXQgaXQgd2ls
bCBuZXZlciBiZSBjYWxsZWQgaW50byBhZ2Fpbi4KKyAgICAgICAgdm9pZCBzdHJvbmdseVZpc2l0
V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1w
U3RhdGlzdGljcygpOwogCkBAIC00NTEsNiArNDU1LDMzIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRhLT5zcGVjdWxhdGlvblJlY292ZXJ5
W2luZGV4XTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBhcHBlbmRXZWFrUmVm
ZXJlbmNlKEpTQ2VsbCogdGFyZ2V0KQorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVERkdE
YXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIG1fZGZnRGF0YS0+d2Vha1JlZmVyZW5jZXMu
YXBwZW5kKFdyaXRlQmFycmllcjxKU0NlbGw+KCpnbG9iYWxEYXRhKCksIG93bmVyRXhlY3V0YWJs
ZSgpLCB0YXJnZXQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBzaHJpbmtX
ZWFrUmVmZXJlbmNlc1RvRml0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2RmZ0Rh
dGEpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9kZmdEYXRhLT53ZWFr
UmVmZXJlbmNlcy5zaHJpbmtUb0ZpdCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2
b2lkIGFwcGVuZFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKEpTQ2VsbCogY29kZU9yaWdpbiwgSlND
ZWxsKiBmcm9tLCBKU0NlbGwqIHRvKQorICAgICAgICB7CisgICAgICAgICAgICBjcmVhdGVERkdE
YXRhSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgICAgIG1fZGZnRGF0YS0+dHJhbnNpdGlvbnMuYXBw
ZW5kKAorICAgICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCpnbG9iYWxEYXRh
KCksIG93bmVyRXhlY3V0YWJsZSgpLCBjb2RlT3JpZ2luLCBmcm9tLCB0bykpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2b2lkIHNocmlua1dlYWtSZWZlcmVuY2VUcmFuc2l0aW9uc1Rv
Rml0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2RmZ0RhdGEpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9kZmdEYXRhLT50cmFuc2l0aW9ucy5zaHJpbmtU
b0ZpdCgpOworICAgICAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKQEAg
LTExMDQsMTAgKzExMzUsMjggQEAgbmFtZXNwYWNlIEpTQyB7CiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgICAgIE93blB0cjxDb21wYWN0SklUQ29kZU1hcD4gbV9qaXRDb2RlTWFwOwogICAgICAg
ICAKKyAgICAgICAgc3RydWN0IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uIHsKKyAgICAgICAgICAg
IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkgeyB9CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxs
KiBvd25lciwgSlNDZWxsKiBjb2RlT3JpZ2luLCBKU0NlbGwqIGZyb20sIEpTQ2VsbCogdG8pCisg
ICAgICAgICAgICAgICAgOiBtX2Zyb20oZ2xvYmFsRGF0YSwgb3duZXIsIGZyb20pCisgICAgICAg
ICAgICAgICAgLCBtX3RvKGdsb2JhbERhdGEsIG93bmVyLCB0bykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBpZiAoISFjb2RlT3JpZ2luKQorICAgICAgICAgICAgICAgICAgICBtX2Nv
ZGVPcmlnaW4uc2V0KGdsb2JhbERhdGEsIG93bmVyLCBjb2RlT3JpZ2luKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4gbV9jb2RlT3JpZ2luOworICAg
ICAgICAgICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4gbV9mcm9tOworICAgICAgICAgICAgV3JpdGVC
YXJyaWVyPEpTQ2VsbD4gbV90bzsKKyAgICAgICAgfTsKKyAgICAgICAgCiAgICAgICAgIHN0cnVj
dCBERkdEYXRhIHsKLSAgICAgICAgICAgIFZlY3RvcjxERkc6Ok9TUkVudHJ5RGF0YSwgND4gb3Ny
RW50cnk7Ci0gICAgICAgICAgICBTZWdtZW50ZWRWZWN0b3I8REZHOjpPU1JFeGl0LCAxNj4gb3Ny
RXhpdDsKLSAgICAgICAgICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3ZlcnksIDQ+IHNw
ZWN1bGF0aW9uUmVjb3Zlcnk7CisgICAgICAgICAgICBWZWN0b3I8REZHOjpPU1JFbnRyeURhdGE+
IG9zckVudHJ5OworICAgICAgICAgICAgU2VnbWVudGVkVmVjdG9yPERGRzo6T1NSRXhpdCwgOD4g
b3NyRXhpdDsKKyAgICAgICAgICAgIFZlY3RvcjxERkc6OlNwZWN1bGF0aW9uUmVjb3Zlcnk+IHNw
ZWN1bGF0aW9uUmVjb3Zlcnk7CisgICAgICAgICAgICBWZWN0b3I8V2Vha1JlZmVyZW5jZVRyYW5z
aXRpb24+IHRyYW5zaXRpb25zOworICAgICAgICAgICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0Nl
bGw+ID4gd2Vha1JlZmVyZW5jZXM7CiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBPd25Q
dHI8REZHRGF0YT4gbV9kZmdEYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZU9yaWdpbi5oCShyZXZpc2lvbiAxMDA1MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSwx
MCBAQCBzdHJ1Y3QgQ29kZU9yaWdpbiB7CiAgICAgLy8gMiA9IGlubGluZWQgb25lIGRlZXAsIGV0
Yy4KICAgICB1bnNpZ25lZCBpbmxpbmVEZXB0aCgpIGNvbnN0OwogICAgIAorICAgIC8vIElmIHRo
ZSBjb2RlIG9yaWdpbiBjb3JyZXNwb25kcyB0byBpbmxpbmVkIGNvZGUsIGdpdmVzIHlvdSB0aGUg
aGVhcCBvYmplY3QgdGhhdAorICAgIC8vIHdvdWxkIGhhdmUgb3duZWQgdGhlIGNvZGUgaWYgaXQg
aGFkIG5vdCBiZWVuIGlubGluZWQuIE90aGVyd2lzZSByZXR1cm5zIDAuCisgICAgRXhlY3V0YWJs
ZUJhc2UqIGNvZGVPcmlnaW5Pd25lcigpIGNvbnN0OworICAgIAogICAgIHN0YXRpYyB1bnNpZ25l
ZCBpbmxpbmVEZXB0aEZvckNhbGxGcmFtZShJbmxpbmVDYWxsRnJhbWUqKTsKICAgICAKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZU9yaWdpbiYgb3RoZXIpIGNvbnN0OwpAQCAtMTI2LDYg
KzEzMCwxMyBAQCBpbmxpbmUgdW5zaWduZWQgZ2V0Q2FsbFJldHVybk9mZnNldEZvckNvCiAgICAg
cmV0dXJuIGRhdGEtPmNhbGxSZXR1cm5PZmZzZXQ7CiB9CiAKK2lubGluZSBFeGVjdXRhYmxlQmFz
ZSogQ29kZU9yaWdpbjo6Y29kZU9yaWdpbk93bmVyKCkgY29uc3QKK3sKKyAgICBpZiAoIWlubGlu
ZUNhbGxGcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGlubGluZUNhbGxGcmFt
ZS0+ZXhlY3V0YWJsZS5nZXQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAv
LyBDb2RlT3JpZ2luX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDA1MTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTA3LDI4
ICs1MDcsNiBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gZ2V0SlNDb25zdGFudChtX2NvbnN0
YW50TmFOKTsKICAgICB9CiAgICAgCi0gICAgdW5zaWduZWQgZ2V0Q2VsbENvbnN0YW50SW5kZXgo
SlNDZWxsKiBjZWxsKQotICAgIHsKLSAgICAgICAgSGFzaE1hcDxKU0NlbGwqLCB1bnNpZ25lZD46
Oml0ZXJhdG9yIGl0ZXIgPSBtX2NlbGxDb25zdGFudHMuZmluZChjZWxsKTsKLSAgICAgICAgaWYg
KGl0ZXIgIT0gbV9jZWxsQ29uc3RhbnRzLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGl0ZXIt
PnNlY29uZDsKLSAgICAgICAgCi0gICAgICAgIG1fY29kZUJsb2NrLT5hZGRDb25zdGFudChjZWxs
KTsKLSAgICAgICAgbV9jb25zdGFudHMuYXBwZW5kKENvbnN0YW50UmVjb3JkKCkpOwotICAgICAg
ICBBU1NFUlQobV9jb25zdGFudHMuc2l6ZSgpID09IG1fY29kZUJsb2NrLT5udW1iZXJPZkNvbnN0
YW50UmVnaXN0ZXJzKCkpOwotICAgICAgICAKLSAgICAgICAgbV9jZWxsQ29uc3RhbnRzLmFkZChj
ZWxsLCBtX2NvZGVCbG9jay0+bnVtYmVyT2ZDb25zdGFudFJlZ2lzdGVycygpIC0gMSk7Ci0gICAg
ICAgIAotICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm51bWJlck9mQ29uc3RhbnRSZWdpc3Rl
cnMoKSAtIDE7Ci0gICAgfQotICAgIAotICAgIHZvaWQgcGluQ2VsbChKU0NlbGwqIGNlbGwpCi0g
ICAgewotICAgICAgICBpZiAoIWNlbGwpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGdl
dENlbGxDb25zdGFudEluZGV4KGNlbGwpOwotICAgIH0KLSAgICAKICAgICBOb2RlSW5kZXggY2Vs
bENvbnN0YW50KEpTQ2VsbCogY2VsbCkKICAgICB7CiAgICAgICAgIHBhaXI8SGFzaE1hcDxKU0Nl
bGwqLCBOb2RlSW5kZXg+OjppdGVyYXRvciwgYm9vbD4gaXRlciA9IG1fY2VsbENvbnN0YW50Tm9k
ZXMuYWRkKGNlbGwsIE5vTm9kZSk7CkBAIC05MzgsMTAgKzkxNiw4IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUNhbGwoSW50ZXJwcmUKICAgICAgICAgfQogICAgICAgICAgICAgICAgIAog
ICAgICAgICBpZiAoaW50cmluc2ljICE9IE5vSW50cmluc2ljKSB7Ci0gICAgICAgICAgICBpZiAo
IWNlcnRhaW5BYm91dEV4cGVjdGVkRnVuY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBwaW5DZWxs
KGV4cGVjdGVkRnVuY3Rpb24pOworICAgICAgICAgICAgaWYgKCFjZXJ0YWluQWJvdXRFeHBlY3Rl
ZEZ1bmN0aW9uKQogICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoQ2hlY2tGdW5jdGlvbiwgT3BJ
bmZvKGV4cGVjdGVkRnVuY3Rpb24pLCBjYWxsVGFyZ2V0KTsKLSAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKGhhbmRsZUludHJpbnNpYyh1c2VzUmVzdWx0LCByZXN1
bHRPcGVyYW5kLCBpbnRyaW5zaWMsIGZpcnN0QXJnLCBsYXN0QXJnLCBwcmVkaWN0aW9uKSkgewog
ICAgICAgICAgICAgICAgIGlmICghY2VydGFpbkFib3V0RXhwZWN0ZWRGdW5jdGlvbikgewpAQCAt
MTAwOCwxMCArOTg0LDggQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9v
bAogICAgIC8vIE5vdyB3ZSBrbm93IHdpdGhvdXQgYSBkb3VidCB0aGF0IHdlIGFyZSBjb21taXR0
ZWQgdG8gaW5saW5pbmcuIFNvIGJlZ2luIHRoZSBwcm9jZXNzCiAgICAgLy8gYnkgY2hlY2tpbmcg
dGhlIGNhbGxlZSAoaWYgbmVjZXNzYXJ5KSBhbmQgbWFraW5nIHN1cmUgdGhhdCBhcmd1bWVudHMg
YW5kIHRoZSBjYWxsZWUKICAgICAvLyBhcmUgZmx1c2hlZC4KLSAgICBpZiAoIWNlcnRhaW5BYm91
dEV4cGVjdGVkRnVuY3Rpb24pIHsKLSAgICAgICAgcGluQ2VsbChleHBlY3RlZEZ1bmN0aW9uKTsK
KyAgICBpZiAoIWNlcnRhaW5BYm91dEV4cGVjdGVkRnVuY3Rpb24pCiAgICAgICAgIGFkZFRvR3Jh
cGgoQ2hlY2tGdW5jdGlvbiwgT3BJbmZvKGV4cGVjdGVkRnVuY3Rpb24pLCBjYWxsVGFyZ2V0Tm9k
ZUluZGV4KTsKLSAgICB9CiAgICAgCiAgICAgLy8gRklYTUU6IERvbid0IGZsdXNoIGNvbnN0YW50
cyEKICAgICAKQEAgLTE2NzQsMTEgKzE2NDgsNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgLy8gSXQncyBtb25vbW9ycGhpYyBhcyBm
YXIgYXMgd2UgY2FuIHRlbGwsIHNpbmNlIHRoZSBtZXRob2RfY2hlY2sgd2FzIGxpbmtlZAogICAg
ICAgICAgICAgICAgIC8vIGJ1dCB0aGUgc2xvdyBwYXRoIChpLmUuIHRoZSBub3JtYWwgZ2V0X2J5
X2lkKSBuZXZlciBmaXJlZC4KIAotICAgICAgICAgICAgICAgIHBpbkNlbGwobWV0aG9kQ2FsbC5j
YWNoZWRTdHJ1Y3R1cmUuZ2V0KCkpOyAvLyBmaXJzdCBjaGVjawotICAgICAgICAgICAgICAgIHBp
bkNlbGwobWV0aG9kQ2FsbC5jYWNoZWRQcm90b3R5cGUuZ2V0KCkpOyAvLyBzZWNvbmQgY2hlY2sK
LSAgICAgICAgICAgICAgICBwaW5DZWxsKG1ldGhvZENhbGwuY2FjaGVkUHJvdG90eXBlU3RydWN0
dXJlLmdldCgpKTsgLy8gc2Vjb25kIGNoZWNrCi0gICAgICAgICAgICAgICAgcGluQ2VsbChtZXRo
b2RDYWxsLmNhY2hlZEZ1bmN0aW9uLmdldCgpKTsgLy8gcmVzdWx0Ci0gICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3Jh
cGguYWRkU3RydWN0dXJlU2V0KG1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJlLmdldCgpKSksIGJh
c2UpOwogICAgICAgICAgICAgICAgIGlmIChtZXRob2RDYWxsLmNhY2hlZFByb3RvdHlwZS5nZXQo
KSAhPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmdsb2JhbE9iamVjdCgpLT5t
ZXRob2RDYWxsRHVtbXkoKSkKICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0
cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KG1ldGhvZENhbGwuY2FjaGVk
UHJvdG90eXBlU3RydWN0dXJlLmdldCgpKSksIGNlbGxDb25zdGFudChtZXRob2RDYWxsLmNhY2hl
ZFByb3RvdHlwZS5nZXQoKSkpOwpAQCAtMTc4NCw5ICsxNzUzLDYgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIGlmIChwcmVkaWN0aW9u
ID09IFByZWRpY3ROb25lKQogICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NS
RXhpdCk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHN0cnVjdHVyZVNldC5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAg
cGluQ2VsbChzdHJ1Y3R1cmVTZXRbaV0pOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIGFkZFRvR3JhcGgoQ2hlY2tTdHJ1Y3R1cmUsIE9wSW5mbyhtX2dyYXBoLmFkZFN0cnVjdHVy
ZVNldChzdHJ1Y3R1cmVTZXQpKSwgYmFzZSk7CiAgICAgICAgICAgICAgICAgc2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIGFkZFRvR3JhcGgoR2V0QnlPZmZzZXQsIE9wSW5mbyht
X2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLCBh
ZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSkpKTsKICAgICAgICAgICAgICAgICAK
QEAgLTE4MjAsNyArMTc4Niw2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
KCptX2dsb2JhbERhdGEsIGlkZW50aWZpZXIpOwogICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgaWYgKG9mZnNldCAhPSBub3RGb3VuZCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgcGluQ2VsbChzdHJ1Y3R1cmUpOwogICAgICAgICAgICAgICAgICAgICAgICAgYWRk
VG9HcmFwaChDaGVja1N0cnVjdHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHN0
cnVjdHVyZSkpLCBiYXNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgoUHV0
QnlPZmZzZXQsIE9wSW5mbyhtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgYmFz
ZSwgYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpLCB2YWx1ZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAKQEAgLTE4NDcsMjMgKzE4MTIsMTYgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2Zm
c2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKm1fZ2xvYmFsRGF0YSwgaWRlbnRpZmllcik7CiAgICAg
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ICE9IG5vdEZv
dW5kICYmIHN0cnVjdHVyZUNoYWluSXNTdGlsbFZhbGlkKGRpcmVjdCwgcHJldmlvdXNTdHJ1Y3R1
cmUsIHN0cnVjdHVyZUNoYWluKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcGluQ2VsbChw
cmV2aW91c1N0cnVjdHVyZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwaW5DZWxsKG5ld1N0
cnVjdHVyZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKENoZWNrU3RydWN0
dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQocHJldmlvdXNTdHJ1Y3R1cmUpKSwg
YmFzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRpcmVjdCkgewotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlw
ZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbkNlbGwo
cHJldmlvdXNTdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUo
KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpbkNlbGwocHJldmlvdXNTdHJ1
Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIXByZXZpb3VzU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKS5pc051bGwo
KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChDaGVja1N0cnVj
dHVyZSwgT3BJbmZvKG1fZ3JhcGguYWRkU3RydWN0dXJlU2V0KHByZXZpb3VzU3RydWN0dXJlLT5z
dG9yZWRQcm90b3R5cGUoKS5hc0NlbGwoKS0+c3RydWN0dXJlKCkpKSwgY2VsbENvbnN0YW50KHBy
ZXZpb3VzU3RydWN0dXJlLT5zdG9yZWRQcm90b3R5cGUoKS5hc0NlbGwoKSkpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+KiBpdCA9
IHN0cnVjdHVyZUNoYWluLT5oZWFkKCk7ICppdDsgKytpdCkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9ICgqaXQpLT5zdG9yZWRQcm90b3R5cGUo
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb3RvdHlwZS5pc051bGwo
KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQocHJvdG90eXBlLmlzQ2VsbCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGluQ2VsbChwcm90b3R5cGUuYXNDZWxsKCkp
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaW5DZWxsKHByb3RvdHlwZS5hc0Nl
bGwoKS0+c3RydWN0dXJlKCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRU
b0dyYXBoKENoZWNrU3RydWN0dXJlLCBPcEluZm8obV9ncmFwaC5hZGRTdHJ1Y3R1cmVTZXQocHJv
dG90eXBlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKSkpLCBjZWxsQ29uc3RhbnQocHJvdG90eXBlLmFz
Q2VsbCgpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21w
aWxlci5jcHAJKHJldmlzaW9uIDEwMDUxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDkgQEAgdm9p
ZCBKSVRDb21waWxlcjo6bGluayhMaW5rQnVmZmVyJiBsaW5rQgogICAgICAgICBsaW5rQnVmZmVy
LmxpbmsoZXhpdC5tX2NoZWNrLmxhdGVKdW1wKCksIHRhcmdldCk7CiAgICAgICAgIGV4aXQubV9j
aGVjay5jb3JyZWN0TGF0ZUp1bXAobGlua0J1ZmZlcik7CiAgICAgfQorICAgIAorICAgIGNvZGVC
bG9jaygpLT5zaHJpbmtXZWFrUmVmZXJlbmNlc1RvRml0KCk7CisgICAgY29kZUJsb2NrKCktPnNo
cmlua1dlYWtSZWZlcmVuY2VUcmFuc2l0aW9uc1RvRml0KCk7CiB9CiAKIHZvaWQgSklUQ29tcGls
ZXI6OmNvbXBpbGUoSklUQ29kZSYgZW50cnkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiAxMDA1MTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzOCw2ICsy
MzgsMjQgQEAgcHVibGljOgogICAgICAgICBtX2pzQ2FsbHMuYXBwZW5kKEpTQ2FsbFJlY29yZChm
YXN0Q2FsbCwgc2xvd0NhbGwsIHRhcmdldFRvQ2hlY2ssIGNhbGxUeXBlLCBjb2RlT3JpZ2luKSk7
CiAgICAgfQogICAgIAorICAgIHZvaWQgYWRkV2Vha1JlZmVyZW5jZShKU0NlbGwqIHRhcmdldCkK
KyAgICB7CisgICAgICAgIG1fY29kZUJsb2NrLT5hcHBlbmRXZWFrUmVmZXJlbmNlKHRhcmdldCk7
CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkV2Vha1JlZmVyZW5jZVRyYW5zaXRpb24oSlNDZWxs
KiBjb2RlT3JpZ2luLCBKU0NlbGwqIGZyb20sIEpTQ2VsbCogdG8pCisgICAgeworICAgICAgICBt
X2NvZGVCbG9jay0+YXBwZW5kV2Vha1JlZmVyZW5jZVRyYW5zaXRpb24oY29kZU9yaWdpbiwgZnJv
bSwgdG8pOworICAgIH0KKyAgICAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorICAgIEp1bXAg
YnJhbmNoV2Vha1B0cihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFQgbGVmdCwgSlNDZWxsKiB3
ZWFrUHRyKQorICAgIHsKKyAgICAgICAgSnVtcCByZXN1bHQgPSBicmFuY2hQdHIoY29uZCwgbGVm
dCwgVHJ1c3RlZEltbVB0cih3ZWFrUHRyKSk7CisgICAgICAgIGFkZFdlYWtSZWZlcmVuY2Uod2Vh
a1B0cik7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogICAgIHZvaWQgbm90
aWNlT1NSRW50cnkoQmFzaWNCbG9jayYgYmFzaWNCbG9jaywgSklUQ29tcGlsZXI6OkxhYmVsIGJs
b2NrSGVhZCwgTGlua0J1ZmZlciYgbGlua0J1ZmZlcikKICAgICB7CiAjaWYgREZHX0VOQUJMRShP
U1JfRU5UUlkpCkBAIC0zMjEsNyArMzM5LDcgQEAgcHJpdmF0ZToKICAgICAgICAgQ2FsbExpbmtJ
bmZvOjpDYWxsVHlwZSBtX2NhbGxUeXBlOwogICAgICAgICBDb2RlT3JpZ2luIG1fY29kZU9yaWdp
bjsKICAgICB9OwotCisgICAgCiAgICAgVmVjdG9yPFByb3BlcnR5QWNjZXNzUmVjb3JkLCA0PiBt
X3Byb3BlcnR5QWNjZXNzZXM7CiAgICAgVmVjdG9yPE1ldGhvZEdldFJlY29yZCwgND4gbV9tZXRo
b2RHZXRzOwogICAgIFZlY3RvcjxKU0NhbGxSZWNvcmQsIDQ+IG1fanNDYWxsczsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkocmV2aXNpb24gMTAwNTE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA1OCw3ICsyMDU4LDEx
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKIAogICAgIHN3aXRj
aCAob3ApIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGluaXRDb25zdGFudEluZm8o
bV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgV2Vha0pTQ29uc3Rh
bnQ6CisgICAgICAgIG1faml0LmFkZFdlYWtSZWZlcmVuY2Uobm9kZS53ZWFrQ29uc3RhbnQoKSk7
CiAgICAgICAgIGluaXRDb25zdGFudEluZm8obV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVh
azsKIApAQCAtMzUwMSw3ICszNTA1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogCiAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7CiAgICAgICAgIFNwZWN1bGF0
ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKEpJVENv
bXBpbGVyOjpOb3RFcXVhbCwgZnVuY3Rpb24uZ3ByKCksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1t
UHRyKG5vZGUuZnVuY3Rpb24oKSkpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LCBmdW5jdGlvbi5ncHIoKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS5mdW5jdGlv
bigpKSkpOwogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTM1MTcsNyArMzUyMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSYgbm9kZSkKICAgICAgICAgQVNTRVJUKG5vZGUuc3RydWN0dXJlU2V0KCkuc2l6ZSgp
KTsKICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLnN0cnVjdHVyZVNldCgpLnNpemUoKSA9PSAx
KQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjpBZGRyZXNz
KGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBKSVRDb21waWxlcjo6VHJ1
c3RlZEltbVB0cihub2RlLnN0cnVjdHVyZVNldCgpWzBdKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFdlYWtQdHIoSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyhiYXNlLmdwcigpLCBKU0Nl
bGw6OnN0cnVjdHVyZU9mZnNldCgpKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS5z
dHJ1Y3R1cmVTZXQoKVswXSkpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBHUFJUZW1w
b3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogICAgICAgICAgICAgCkBAIC0zNTI2LDkgKzM1MzAsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcExpc3QgZG9uZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBub2RlLnN0cnVjdHVyZVNldCgpLnNpemUoKSAtIDE7ICsraSkK
LSAgICAgICAgICAgICAgICBkb25lLmFwcGVuZChtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6
OkVxdWFsLCBzdHJ1Y3R1cmUuZ3ByKCksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUu
c3RydWN0dXJlU2V0KClbaV0pKSk7CisgICAgICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQu
YnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6RXF1YWwsIHN0cnVjdHVyZS5ncHIoKSwgSklUQ29t
cGlsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS5zdHJ1Y3R1cmVTZXQoKVtpXSkpKTsKICAgICAgICAg
ICAgIAotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaFB0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZS5ncHIoKSwg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKSk7
CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZS5ncHIoKSwg
SklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobm9kZS5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKSk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICB9
CkBAIC0zNTQxLDYgKzM1NDUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hp
bGQxKCkpOwogICAgICAgICBHUFJSZWcgYmFzZUdQUiA9IGJhc2UuZ3ByKCk7CiAgICAgICAgIAor
ICAgICAgICBtX2ppdC5hZGRXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigKKyAgICAgICAgICAgIG5v
ZGUuY29kZU9yaWdpbi5jb2RlT3JpZ2luT3duZXIoKSwKKyAgICAgICAgICAgIG5vZGUuc3RydWN0
dXJlVHJhbnNpdGlvbkRhdGEoKS5wcmV2aW91c1N0cnVjdHVyZSwKKyAgICAgICAgICAgIG5vZGUu
c3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUpOworICAgICAgICAKICNpZiBF
TkFCTEUoR0dDKSB8fCBFTkFCTEUoV1JJVEVfQkFSUklFUl9QUk9GSUxJTkcpCiAgICAgICAgIC8v
IE11c3QgYWx3YXlzIGVtaXQgdGhpcyB3cml0ZSBiYXJyaWVyIGFzIHRoZSBzdHJ1Y3R1cmUgdHJh
bnNpdGlvbiBpdHNlbGYgcmVxdWlyZXMgaXQKICAgICAgICAgd3JpdGVCYXJyaWVyKGJhc2VHUFIs
IG5vZGUuc3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUsIFdyaXRlQmFycmll
ckZvckdlbmVyaWNBY2Nlc3MpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMDA1MTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNjYsNyArMjY2LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsSlNWYWx1ZShO
b2RlSQogICAgIE5vZGUmIG5vZGUgPSBhdChub2RlSW5kZXgpOwogICAgIFZpcnR1YWxSZWdpc3Rl
ciB2aXJ0dWFsUmVnaXN0ZXIgPSBub2RlLnZpcnR1YWxSZWdpc3RlcigpOwogICAgIEdlbmVyYXRp
b25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdOwotCisgICAg
CiAgICAgc3dpdGNoIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkpIHsKICAgICBjYXNlIERhdGFGb3Jt
YXROb25lOiB7CiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwpAQCAtMjA2OSw3ICsy
MDY5LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKIAogICAg
IHN3aXRjaCAob3ApIHsKICAgICBjYXNlIEpTQ29uc3RhbnQ6CisgICAgICAgIGluaXRDb25zdGFu
dEluZm8obV9jb21waWxlSW5kZXgpOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgV2Vha0pT
Q29uc3RhbnQ6CisgICAgICAgIG1faml0LmFkZFdlYWtSZWZlcmVuY2Uobm9kZS53ZWFrQ29uc3Rh
bnQoKSk7CiAgICAgICAgIGluaXRDb25zdGFudEluZm8obV9jb21waWxlSW5kZXgpOwogICAgICAg
ICBicmVhazsKIApAQCAtMzQyMyw3ICszNDI3LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogCiAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7CiAgICAgICAgIFNw
ZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRy
KEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgZnVuY3Rpb24uZ3ByKCksIEpJVENvbXBpbGVyOjpUcnVz
dGVkSW1tUHRyKG5vZGUuZnVuY3Rpb24oKSkpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhK
U1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCBmdW5jdGlvbi5ncHIoKSwgbm9kZS5mdW5jdGlvbigpKSk7CiAgICAgICAgIG5vUmVz
dWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzQzOCw3ICsz
NDQyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICBBU1NFUlQobm9kZS5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkpOwogICAgICAgICAKICAgICAgICAg
aWYgKG5vZGUuc3RydWN0dXJlU2V0KCkuc2l6ZSgpID09IDEpCi0gICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tUHRyKG5vZGUuc3RydWN0
dXJlU2V0KClbMF0pKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRDb21waWxlcjo6Tm90RXF1YWwsIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGJhc2UuZ3ByKCksIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkp
LCBub2RlLnN0cnVjdHVyZVNldCgpWzBdKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
R1BSVGVtcG9yYXJ5IHN0cnVjdHVyZSh0aGlzKTsKICAgICAgICAgICAgIApAQCAtMzQ0Nyw5ICsz
NDUxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IGRvbmU7CiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbm9kZS5zdHJ1Y3R1cmVTZXQoKS5zaXplKCkgLSAx
OyArK2kpCi0gICAgICAgICAgICAgICAgZG9uZS5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKEpJVENv
bXBpbGVyOjpFcXVhbCwgc3RydWN0dXJlLmdwcigpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0
cihub2RlLnN0cnVjdHVyZVNldCgpW2ldKSkpOworICAgICAgICAgICAgICAgIGRvbmUuYXBwZW5k
KG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBzdHJ1Y3R1cmUuZ3ByKCks
IG5vZGUuc3RydWN0dXJlU2V0KClbaV0pKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihKSVRD
b21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZS5ncHIoKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJ
bW1QdHIobm9kZS5zdHJ1Y3R1cmVTZXQoKS5sYXN0KCkpKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoV2Vha1B0cihKSVRD
b21waWxlcjo6Tm90RXF1YWwsIHN0cnVjdHVyZS5ncHIoKSwgbm9kZS5zdHJ1Y3R1cmVTZXQoKS5s
YXN0KCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAg
ICAgICAgIH0KQEAgLTM0NjIsNiArMzQ2NiwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIoKTsKICAg
ICAgICAgCisgICAgICAgIG1faml0LmFkZFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKAorICAgICAg
ICAgICAgbm9kZS5jb2RlT3JpZ2luLmNvZGVPcmlnaW5Pd25lcigpLAorICAgICAgICAgICAgbm9k
ZS5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0dXJlLAorICAgICAgICAg
ICAgbm9kZS5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSk7CisgICAgICAg
IAogI2lmIEVOQUJMRShHR0MpIHx8IEVOQUJMRShXUklURV9CQVJSSUVSX1BST0ZJTElORykKICAg
ICAgICAgLy8gTXVzdCBhbHdheXMgZW1pdCB0aGlzIHdyaXRlIGJhcnJpZXIgYXMgdGhlIHN0cnVj
dHVyZSB0cmFuc2l0aW9uIGl0c2VsZiByZXF1aXJlcyBpdAogICAgICAgICB3cml0ZUJhcnJpZXIo
YmFzZUdQUiwgbm9kZS5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLm5ld1N0cnVjdHVyZSwgV3Jp
dGVCYXJyaWVyRm9yR2VuZXJpY0FjY2Vzcyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxMDA1MTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwMzgsNyArMTAzOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIE5vZGUmIG5vZGUgPSBhdChub2Rl
SW5kZXgpOwogICAgICAgICBtX2dlbmVyYXRpb25JbmZvW25vZGUudmlydHVhbFJlZ2lzdGVyKCld
LmluaXRDb25zdGFudChub2RlSW5kZXgsIG5vZGUucmVmQ291bnQoKSk7CiAgICAgfQotCisgICAg
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyB1c2VkIHRvIHNvcnQgYXJndW1lbnRzIGludG8gdGhlIGNv
cnJlY3QgcmVnaXN0ZXJzLgogICAgIC8vIE9uIFg4NiB3ZSB1c2UgY2RlY2wgY2FsbGluZyBjb252
ZW50aW9ucywgd2hpY2ggcGFzcyBhbGwgYXJndW1lbnRzIG9uIHRoZQogICAgIC8vIHN0YWNrLiBP
biBvdGhlciBhcmNoaXRlY3R1cmVzIHdlIG1heSBuZWVkIHRvIHNvcnQgdmFsdWVzIGludG8gdGhl
CkBAIC0xOTg3LDcgKzE5ODcsNyBAQCBwcml2YXRlOgogICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KGpzVmFsdWVSZWdzLCBub2RlSW5kZXgsIG1faml0Lmp1bXAoKSk7CiAgICAgICAgIG1fY29tcGls
ZU9rYXkgPSBmYWxzZTsKICAgICB9Ci0KKyAgICAKICAgICB0ZW1wbGF0ZTxib29sIHN0cmljdD4K
ICAgICBHUFJSZWcgZmlsbFNwZWN1bGF0ZUludEludGVybmFsKE5vZGVJbmRleCwgRGF0YUZvcm1h
dCYgcmV0dXJuRm9ybWF0KTsKICAgICAK
</data>
<flag name="review"
          id="114399"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>