<?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>75160</bug_id>
          
          <creation_ts>2011-12-22 20:07:26 -0800</creation_ts>
          <short_desc>DFG should not speculate array even when predictions say that the base is not an array</short_desc>
          <delta_ts>2011-12-22 22:02:10 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <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>526708</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-22 20:07:26 -0800</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526709</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-22 20:07:34 -0800</bug_when>
    <thetext>The performance looks good.



Benchmark report for SunSpider, V8, and Kraken on nitroflex (MacBookPro8,2).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r103599)
&quot;FixArraySpec&quot; at /Volumes/Data/pizlo/septenary/OpenSource/WebKitBuild/Release/jsc (r103599)

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              FixArraySpec                                  
SunSpider:
   3d-cube                                5.4322+-0.1349    ?     5.6316+-0.1825       ? might be 1.0367x slower
   3d-morph                               7.6241+-0.1336    ?     7.8998+-0.1427       ? might be 1.0362x slower
   3d-raytrace                            7.2338+-0.2181          6.9108+-0.1660         might be 1.0467x faster
   access-binary-trees                    1.4657+-0.0475    ?     1.5028+-0.0440       ? might be 1.0253x slower
   access-fannkuch                        5.9223+-0.1049          5.8462+-0.1305         might be 1.0130x faster
   access-nbody                           3.1700+-0.0650    ?     3.2309+-0.0952       ? might be 1.0192x slower
   access-nsieve                          2.5472+-0.0812          2.5276+-0.0834       
   bitops-3bit-bits-in-byte               1.2227+-0.0263    ?     1.2359+-0.0251       ? might be 1.0107x slower
   bitops-bits-in-byte                    2.3323+-0.0647    ?     2.3852+-0.0631       ? might be 1.0227x slower
   bitops-bitwise-and                     3.2318+-0.0509          3.1611+-0.0591         might be 1.0224x faster
   bitops-nsieve-bits                     5.5611+-0.1517    ?     5.6240+-0.1805       ? might be 1.0113x slower
   controlflow-recursive                  2.0085+-0.0354          2.0031+-0.0451       
   crypto-aes                             7.2740+-0.1930          7.2613+-0.1684       
   crypto-md5                             2.4196+-0.0830          2.2977+-0.0561         might be 1.0531x faster
   crypto-sha1                            2.1611+-0.0569    ^     2.0626+-0.0211       ^ definitely 1.0477x faster
   date-format-tofte                      9.6833+-0.1646    ?     9.8702+-0.2443       ? might be 1.0193x slower
   date-format-xparb                      9.3604+-0.2243          9.0744+-0.2438         might be 1.0315x faster
   math-cordic                            6.7665+-0.1802    ^     6.4100+-0.0995       ^ definitely 1.0556x faster
   math-partial-sums                      7.4987+-0.1460          7.3974+-0.1758         might be 1.0137x faster
   math-spectral-norm                     2.4264+-0.0600    ^     2.2969+-0.0403       ^ definitely 1.0564x faster
   regexp-dna                             7.8045+-0.1498    ?     7.8713+-0.1829       ?
   string-base64                          4.3162+-0.0961    ?     4.3197+-0.0836       ?
   string-fasta                           6.5668+-0.1685    ?     6.6606+-0.1461       ? might be 1.0143x slower
   string-tagcloud                       11.2059+-0.3212         11.1837+-0.3368       
   string-unpack-code                    18.6572+-0.2556    !    19.4146+-0.4259       ! definitely 1.0406x slower
   string-validate-input                  5.2159+-0.1394    ?     5.3330+-0.1395       ? might be 1.0225x slower

   &lt;arithmetic&gt; *                         5.7349+-0.0228    ?     5.7466+-0.0250       ? might be 1.0020x slower
   &lt;geometric&gt;                            4.6434+-0.0244          4.6287+-0.0174         might be 1.0032x faster
   &lt;harmonic&gt;                             3.7042+-0.0305          3.6860+-0.0222         might be 1.0049x faster

                                            TipOfTree              FixArraySpec                                  
V8:
   crypto                                71.8487+-1.1093    ?    72.5179+-1.3046       ?
   deltablue                            148.8421+-1.8166    ?   150.0586+-2.0018       ?
   earley-boyer                          81.0571+-1.3352         80.1978+-1.2853         might be 1.0107x faster
   raytrace                              48.6882+-0.6206         48.2623+-0.5122       
   regexp                               103.5850+-1.2806        103.2427+-1.3837       
   richards                             119.6485+-2.2200    ?   119.9926+-1.6852       ?
   splay                                 72.9114+-1.1946         71.6281+-1.0240         might be 1.0179x faster

   &lt;arithmetic&gt;                          92.3687+-0.5766         92.2714+-0.4434         might be 1.0011x faster
   &lt;geometric&gt; *                         87.1162+-0.4927         86.8652+-0.3687         might be 1.0029x faster
   &lt;harmonic&gt;                            82.0861+-0.4613         81.7185+-0.3335         might be 1.0045x faster

                                            TipOfTree              FixArraySpec                                  
Kraken:
   ai-astar                             487.4671+-9.1501    ?   490.8994+-8.8718       ?
   audio-beat-detection                 173.1296+-2.4283    ?   174.0663+-2.0968       ?
   audio-dft                            274.2012+-6.0389    ?   289.0841+-13.0264      ? might be 1.0543x slower
   audio-fft                            105.7167+-1.3699    ?   106.2648+-2.2146       ?
   audio-oscillator                     251.0460+-3.1180    ?   253.5859+-2.6535       ? might be 1.0101x slower
   imaging-darkroom                     274.2502+-7.4916        270.1415+-4.3273         might be 1.0152x faster
   imaging-desaturate                   213.0163+-2.7294    ^   207.4625+-2.3983       ^ definitely 1.0268x faster
   imaging-gaussian-blur                490.7493+-6.7053    ?   491.2765+-4.1039       ?
   json-parse-financial                  57.8758+-0.9378         57.7195+-0.6103       
   json-stringify-tinderbox              71.9223+-0.8206    !    75.0309+-1.1276       ! definitely 1.0432x slower
   stanford-crypto-aes                   97.7883+-1.6026    ?    98.5023+-1.1097       ?
   stanford-crypto-ccm                  101.6361+-1.4094         98.6146+-1.8832         might be 1.0306x faster
   stanford-crypto-pbkdf2               187.9598+-2.5805    !   196.0925+-4.6267       ! definitely 1.0433x slower
   stanford-crypto-sha256-iterative      83.2351+-0.8420    ?    84.1820+-1.4587       ? might be 1.0114x slower

   &lt;arithmetic&gt; *                       204.9996+-0.8833    ?   206.6373+-1.2806       ? might be 1.0080x slower
   &lt;geometric&gt;                          165.2800+-0.5767    ?   166.5716+-0.9356       ? might be 1.0078x slower
   &lt;harmonic&gt;                           134.7099+-0.4094    ?   135.7406+-0.8223       ? might be 1.0077x slower

                                            TipOfTree              FixArraySpec                                  
All benchmarks:
   &lt;arithmetic&gt;                          77.9933+-0.2958    ?    78.4731+-0.3703       ? might be 1.0062x slower
   &lt;geometric&gt;                           20.8247+-0.0618    ?    20.8276+-0.0601       ? might be 1.0001x slower
   &lt;harmonic&gt;                             6.5202+-0.0522          6.4894+-0.0382         might be 1.0048x faster

                                            TipOfTree              FixArraySpec                                  
Geomean of preferred means:
   &lt;scaled-result&gt;                       46.7865+-0.1434    ?    46.8973+-0.1285       ? might be 1.0024x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526710</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-22 20:08:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/10622646&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526713</commentid>
    <comment_count>3</comment_count>
      <attachid>120429</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-22 20:15:04 -0800</bug_when>
    <thetext>Created attachment 120429
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526735</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-22 22:02:10 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/103604</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120429</attachid>
            <date>2011-12-22 20:15:04 -0800</date>
            <delta_ts>2011-12-22 20:57:13 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>fixarrayspec_patch_1.diff</filename>
            <type>text/plain</type>
            <size>15859</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAzNjAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDExLTEyLTIyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBub3Qgc3BlY3VsYXRlIGFycmF5IGV2ZW4gd2hlbiBwcmVkaWN0aW9ucyBzYXkg
dGhhdCB0aGUgYmFzZSBpcyBub3QgYW4gYXJyYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MTYwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDYy
MjY0Nj4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNjIyNjQ5PgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkZWQgdGhlIGFiaWxp
dHkgdG8gY2FsbCBzbG93IHBhdGggd2hlbiB0aGUgYmFzZSBpcyBrbm93biB0byBub3QgYmUgYW4g
YXJyYXkuCisgICAgICAgIEFsc28gcmF0aW9uYWxpemVkIHRoZSBsb2dpYyBmb3IgZGVjaWRpbmcg
d2hlbiB0aGUgaW5kZXggaXMgbm90IGFuIGludCwgYW5kCisgICAgICAgIGNsZWFuZWQgdXAgdGhl
IGxvZ2ljIGZvciBkZWNpZGluZyB3aGVuIHRvIHNwZWN1bGF0ZSB0eXBlZCBhcnJheS4KKyAgICAg
ICAgCisgICAgICAgIE5ldXRyYWwgZm9yIHRoZSBtb3N0IHBhcnQsIHdpdGggb2RkIHNwZWVkLXVw
cyBhbmQgc2xvdy1kb3ducy4gVGhlIHNsb3ctZG93bnMgY2FuCisgICAgICAgIGxpa2VseSBiZSBt
aXRpZ2F0ZWQgYnkgaGF2aW5nIHRoZSBub3Rpb24gb2YgYSBwb2x5bW9ycGhpYyBhcnJheSBhY2Nl
c3MsIHdoZXJlIHdlCisgICAgICAgIHRyeSwgYnV0IGRvbid0IHNwZWN1bGF0ZSwgdG8gYWNjZXNz
IHRoZSBhcnJheSBvbmUgd2F5IGJlZm9yZSBlaXRoZXIgdHJ5aW5nIHNvbWUKKyAgICAgICAgb3Ro
ZXIgd2F5cyBvciBjYWxsaW5nIHNsb3cgcGF0aC4KKworICAgICAgICAqIGJ5dGVjb2RlL1ByZWRp
Y3RlZFR5cGUuaDoKKyAgICAgICAgKEpTQzo6aXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGlj
dGlvbik6CisgICAgICAgIChKU0M6OmlzQWN0aW9uYWJsZUFycmF5UHJlZGljdGlvbik6CisgICAg
ICAgICogZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkFic3Ry
YWN0U3RhdGU6OmV4ZWN1dGUpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAgIChK
U0M6OkRGRzo6Tm9kZTo6c2hvdWxkU3BlY3VsYXRlSW50OEFycmF5KToKKyAgICAgICAgKEpTQzo6
REZHOjpOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnQxNkFycmF5KToKKyAgICAgICAgKEpTQzo6REZH
OjpOb2RlOjpzaG91bGRTcGVjdWxhdGVJbnQzMkFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpO
b2RlOjpzaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2Rl
OjpzaG91bGRTcGVjdWxhdGVVaW50MTZBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6
c2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OnNo
b3VsZFNwZWN1bGF0ZUZsb2F0MzJBcnJheSk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6c2hv
dWxkU3BlY3VsYXRlRmxvYXQ2NEFycmF5KToKKyAgICAgICAgKiBkZmcvREZHUHJvcGFnYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6YnlWYWxJc1B1cmUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKiBk
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisKIDIwMTEt
MTItMjIgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgLSBmaXggc3R5bGVib3QgaXNzdWVzIGZyb20gbGFzdCBwYXRjaC4KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRpY3RlZFR5cGUuaAko
cmV2aXNpb24gMTAzNTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ByZWRp
Y3RlZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTUxLDYgKzE1MSwyOCBAQCBpbmxpbmUgYm9v
bCBpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24oUHJlCiAgICAgcmV0dXJuIHZhbHVlID09IFByZWRp
Y3RGbG9hdDY0QXJyYXk7CiB9CiAKK2lubGluZSBib29sIGlzQWN0aW9uYWJsZU11dGFibGVBcnJh
eVByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKK3sKKyAgICByZXR1cm4gaXNBcnJheVBy
ZWRpY3Rpb24odmFsdWUpCisgICAgICAgIHx8IGlzQnl0ZUFycmF5UHJlZGljdGlvbih2YWx1ZSkK
KyAgICAgICAgfHwgaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0lu
dDE2QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAgICAgICB8fCBpc0ludDMyQXJyYXlQcmVkaWN0
aW9uKHZhbHVlKQorICAgICAgICB8fCBpc1VpbnQ4QXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorICAg
ICAgICB8fCBpc1VpbnQxNkFycmF5UHJlZGljdGlvbih2YWx1ZSkKKyAgICAgICAgfHwgaXNVaW50
MzJBcnJheVByZWRpY3Rpb24odmFsdWUpCisjaWYgQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkKKyAg
ICAgICAgfHwgaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKHZhbHVlKQorI2VuZGlmCisgICAgICAg
IHx8IGlzRmxvYXQ2NEFycmF5UHJlZGljdGlvbih2YWx1ZSk7Cit9CisKK2lubGluZSBib29sIGlz
QWN0aW9uYWJsZUFycmF5UHJlZGljdGlvbihQcmVkaWN0ZWRUeXBlIHZhbHVlKQoreworICAgIHJl
dHVybiBpc1N0cmluZ1ByZWRpY3Rpb24odmFsdWUpCisgICAgICAgIHx8IGlzQWN0aW9uYWJsZU11
dGFibGVBcnJheVByZWRpY3Rpb24odmFsdWUpOworfQorCiBpbmxpbmUgYm9vbCBpc0FycmF5T3JP
dGhlclByZWRpY3Rpb24oUHJlZGljdGVkVHlwZSB2YWx1ZSkKIHsKICAgICByZXR1cm4gISEodmFs
dWUgJiAoUHJlZGljdEFycmF5IHwgUHJlZGljdE90aGVyKSkgJiYgISh2YWx1ZSAmIH4oUHJlZGlj
dEFycmF5IHwgUHJlZGljdE90aGVyKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlzaW9uIDEwMzU5OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwMiw4ICs0MDIsMTEgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKE5vZGVJbmRleCBu
bwogICAgICAgICBicmVhazsKICAgICAgICAgICAgIAogICAgIGNhc2UgR2V0QnlWYWw6IHsKLSAg
ICAgICAgUHJlZGljdGVkVHlwZSBpbmRleFByZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQy
KCldLnByZWRpY3Rpb24oKTsKLSAgICAgICAgaWYgKCEoaW5kZXhQcmVkaWN0aW9uICYgUHJlZGlj
dEludDMyKSAmJiBpbmRleFByZWRpY3Rpb24pIHsKKyAgICAgICAgaWYgKCFub2RlLnByZWRpY3Rp
b24oKSB8fCAhbV9ncmFwaFtub2RlLmNoaWxkMSgpXS5wcmVkaWN0aW9uKCkgfHwgIW1fZ3JhcGhb
bm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpKSB7CisgICAgICAgICAgICBtX2lzVmFsaWQgPSBm
YWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICghaXNBY3Rp
b25hYmxlQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigp
KSB8fCAhbV9ncmFwaFtub2RlLmNoaWxkMigpXS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpIHsK
ICAgICAgICAgICAgIGNsb2JiZXJTdHJ1Y3R1cmVzKG5vZGVJbmRleCk7CiAgICAgICAgICAgICBm
b3JOb2RlKG5vZGVJbmRleCkubWFrZVRvcCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00Njks
NiArNDcyLDcgQEAgYm9vbCBBYnN0cmFjdFN0YXRlOjpleGVjdXRlKE5vZGVJbmRleCBubwogICAg
ICAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChQcmVkaWN0RG91YmxlKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIEFTU0VSVChtX2dyYXBoW25vZGUuY2hpbGQx
KCldLnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpOwogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLmZpbHRlcihQcmVkaWN0QXJyYXkpOwogICAgICAgICBmb3JOb2RlKG5vZGUuY2hpbGQyKCkp
LmZpbHRlcihQcmVkaWN0SW50MzIpOwogICAgICAgICBmb3JOb2RlKG5vZGVJbmRleCkubWFrZVRv
cCgpOwpAQCAtNDc3LDggKzQ4MSwxMiBAQCBib29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUoTm9k
ZUluZGV4IG5vCiAgICAgICAgICAgICAKICAgICBjYXNlIFB1dEJ5VmFsOgogICAgIGNhc2UgUHV0
QnlWYWxBbGlhczogewotICAgICAgICBQcmVkaWN0ZWRUeXBlIGluZGV4UHJlZGljdGlvbiA9IG1f
Z3JhcGhbbm9kZS5jaGlsZDIoKV0ucHJlZGljdGlvbigpOwotICAgICAgICBpZiAoIShpbmRleFBy
ZWRpY3Rpb24gJiBQcmVkaWN0SW50MzIpICYmIGluZGV4UHJlZGljdGlvbikgeworICAgICAgICBp
ZiAoIW1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpIHx8ICFtX2dyYXBoW25vZGUu
Y2hpbGQyKCldLnByZWRpY3Rpb24oKSkgeworICAgICAgICAgICAgbV9pc1ZhbGlkID0gZmFsc2U7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW1fZ3JhcGhbbm9k
ZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3VsYXRlSW50ZWdlcigpIHx8ICFpc0FjdGlvbmFibGVNdXRh
YmxlQXJyYXlQcmVkaWN0aW9uKG1fZ3JhcGhbbm9kZS5jaGlsZDEoKV0ucHJlZGljdGlvbigpKSkg
eworICAgICAgICAgICAgQVNTRVJUKG5vZGUub3AgPT0gUHV0QnlWYWwpOwogICAgICAgICAgICAg
Y2xvYmJlclN0cnVjdHVyZXMobm9kZUluZGV4KTsKICAgICAgICAgICAgIGZvck5vZGUobm9kZUlu
ZGV4KS5tYWtlVG9wKCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTUzOCw3ICs1NDYsNyBAQCBi
b29sIEFic3RyYWN0U3RhdGU6OmV4ZWN1dGUoTm9kZUluZGV4IG5vCiAgICAgICAgICAgICBmb3JO
b2RlKG5vZGUuY2hpbGQzKCkpLmZpbHRlcihQcmVkaWN0TnVtYmVyKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9Ci0gICAgICAgICAgICAKKyAgICAgICAgQVNTRVJUKG1fZ3JhcGhbbm9k
ZS5jaGlsZDEoKV0uc2hvdWxkU3BlY3VsYXRlQXJyYXkoKSk7CiAgICAgICAgIGZvck5vZGUobm9k
ZS5jaGlsZDEoKSkuZmlsdGVyKFByZWRpY3RBcnJheSk7CiAgICAgICAgIGZvck5vZGUobm9kZS5j
aGlsZDIoKSkuZmlsdGVyKFByZWRpY3RJbnQzMik7CiAgICAgICAgIGJyZWFrOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJKHJldmlzaW9uIDEwMzU5OSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MzEsMzggKzkz
MSwzOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVJbnQ4
QXJyYXkoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHByZWRpY3Rpb24oKSA9PSBQcmVkaWN0SW50
OEFycmF5OworICAgICAgICByZXR1cm4gaXNJbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24o
KSk7CiAgICAgfQogICAgIAogICAgIGJvb2wgc2hvdWxkU3BlY3VsYXRlSW50MTZBcnJheSgpCiAg
ICAgewotICAgICAgICByZXR1cm4gcHJlZGljdGlvbigpID09IFByZWRpY3RJbnQxNkFycmF5Owor
ICAgICAgICByZXR1cm4gaXNJbnQxNkFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKCkpOwogICAg
IH0KICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUludDMyQXJyYXkoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHByZWRpY3Rpb24oKSA9PSBQcmVkaWN0SW50MzJBcnJheTsKKyAgICAgICAg
cmV0dXJuIGlzSW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAg
CiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVVaW50OEFycmF5KCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiBwcmVkaWN0aW9uKCkgPT0gUHJlZGljdFVpbnQ4QXJyYXk7CisgICAgICAgIHJldHVybiBp
c1VpbnQ4QXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24oKSk7CiAgICAgfQogICAgIAogICAgIGJv
b2wgc2hvdWxkU3BlY3VsYXRlVWludDE2QXJyYXkoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHBy
ZWRpY3Rpb24oKSA9PSBQcmVkaWN0VWludDE2QXJyYXk7CisgICAgICAgIHJldHVybiBpc1VpbnQx
NkFycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKCkpOwogICAgIH0KICAgICAKICAgICBib29sIHNo
b3VsZFNwZWN1bGF0ZVVpbnQzMkFycmF5KCkKICAgICB7Ci0gICAgICAgIHJldHVybiBwcmVkaWN0
aW9uKCkgPT0gUHJlZGljdFVpbnQzMkFycmF5OworICAgICAgICByZXR1cm4gaXNVaW50MzJBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGlvbigpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRT
cGVjdWxhdGVGbG9hdDMyQXJyYXkoKQogICAgIHsKICNpZiBDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KQotICAgICAgICByZXR1cm4gISEocHJlZGljdGlvbigpICYgUHJlZGljdEZsb2F0MzJBcnJheSk7
CisgICAgICAgIHJldHVybiBpc0Zsb2F0MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbigpKTsK
ICNlbHNlCiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgpAQCAtOTcwLDcgKzk3MCw3IEBA
IHN0cnVjdCBOb2RlIHsKICAgICAKICAgICBib29sIHNob3VsZFNwZWN1bGF0ZUZsb2F0NjRBcnJh
eSgpCiAgICAgewotICAgICAgICByZXR1cm4gcHJlZGljdGlvbigpID09IFByZWRpY3RGbG9hdDY0
QXJyYXk7CisgICAgICAgIHJldHVybiBpc0Zsb2F0NjRBcnJheVByZWRpY3Rpb24ocHJlZGljdGlv
bigpKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBzaG91bGRTcGVjdWxhdGVBcnJheU9yT3RoZXIo
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCShy
ZXZpc2lvbiAxMDM1OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDg3LDggKzEwODcsMTAgQEAgcHJpdmF0ZToKICAg
ICAKICAgICBib29sIGJ5VmFsSXNQdXJlKE5vZGUmIG5vZGUpCiAgICAgewotICAgICAgICBQcmVk
aWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2dyYXBoW25vZGUuY2hpbGQyKCldLnByZWRpY3Rpb24o
KTsKLSAgICAgICAgcmV0dXJuIChwcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSB8fCAhcHJlZGlj
dGlvbjsKKyAgICAgICAgcmV0dXJuIG1fZ3JhcGhbbm9kZS5jaGlsZDIoKV0uc2hvdWxkU3BlY3Vs
YXRlSW50ZWdlcigpCisgICAgICAgICAgICAmJiAoKG5vZGUub3AgPT0gUHV0QnlWYWwgfHwgbm9k
ZS5vcCA9PSBQdXRCeVZhbEFsaWFzKQorICAgICAgICAgICAgICAgID8gaXNBY3Rpb25hYmxlTXV0
YWJsZUFycmF5UHJlZGljdGlvbihtX2dyYXBoW25vZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkK
KyAgICAgICAgICAgICAgICA6IGlzQWN0aW9uYWJsZUFycmF5UHJlZGljdGlvbihtX2dyYXBoW25v
ZGUuY2hpbGQxKCldLnByZWRpY3Rpb24oKSkpOwogICAgIH0KICAgICAKICAgICBib29sIGNsb2Ji
ZXJzV29ybGQoTm9kZUluZGV4IG5vZGVJbmRleCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTAz
NTk5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIwNSw4ICsyMjA1LDEyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBjYXNlIEdldEJ5VmFsOiB7
Ci0gICAgICAgIFByZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBhdChub2RlLmNoaWxkMigp
KS5wcmVkaWN0aW9uKCk7Ci0gICAgICAgIGlmICghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdElu
dDMyKSAmJiBiYXNlUHJlZGljdGlvbikgeworICAgICAgICBpZiAoIW5vZGUucHJlZGljdGlvbigp
IHx8ICFhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgfHwgIWF0KG5vZGUuY2hpbGQyKCkp
LnByZWRpY3Rpb24oKSkgeworICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRp
b24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCFhdChub2RlLmNoaWxkMigpKS5z
aG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgIWlzQWN0aW9uYWJsZUFycmF5UHJlZGljdGlvbihh
dChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVD
ZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOyAvLyBTYXZlIGEgcmVnaXN0ZXIs
IHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBwcm9iYWJseSBiZSByaWdodC4KICAgICAgICAgICAgIEpT
VmFsdWVPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAgICAg
R1BSUmVnIGJhc2VHUFIgPSBiYXNlLmdwcigpOwpAQCAtMjI5MSw2ICsyMjk1LDggQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBBU1NFUlQoYXQobm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlQXJyYXkoKSk7
CiAKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHByb3BlcnR5KHRoaXMsIG5v
ZGUuY2hpbGQyKCkpOwogICAgICAgICBTdG9yYWdlT3BlcmFuZCBzdG9yYWdlKHRoaXMsIG5vZGUu
Y2hpbGQzKCkpOwpAQCAtMjMyNSw4ICsyMzMxLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICB9CiAKICAgICBjYXNlIFB1dEJ5VmFsOiB7Ci0gICAgICAg
IFByZWRpY3RlZFR5cGUgYmFzZVByZWRpY3Rpb24gPSBhdChub2RlLmNoaWxkMigpKS5wcmVkaWN0
aW9uKCk7Ci0gICAgICAgIGlmICghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAmJiBi
YXNlUHJlZGljdGlvbikgeworICAgICAgICBpZiAoIWF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rp
b24oKSB8fCAhYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpKSB7CisgICAgICAgICAgICB0
ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBpZiAoIWF0KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUludGVnZXIoKSB8fCAhaXNB
Y3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbihhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0
aW9uKCkpKSB7CiAgICAgICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOyAvLyBTYXZlIGEgcmVnaXN0ZXIsIHNwZWN1bGF0ZSBjZWxsLiBXZSdsbCBw
cm9iYWJseSBiZSByaWdodC4KICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHByb3BlcnR5KHRo
aXMsIG5vZGUuY2hpbGQyKCkpOwogICAgICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS5jaGlsZDMoKSk7CkBAIC0yNDA5LDYgKzI0MTksOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgYnJlYWs7ICAgICAgICAgICAgCiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFT
U0VSVChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVBcnJheSgpKTsKIAogICAgICAg
ICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsKICAgICAgICAgR1BS
VGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CkBAIC0yNDcyLDYgKzI0ODQsMTQgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgUHV0QnlW
YWxBbGlhczogeworICAgICAgICBpZiAoIWF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSB8
fCAhYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpKSB7CisgICAgICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBU1NF
UlQoaXNBY3Rpb25hYmxlTXV0YWJsZUFycmF5UHJlZGljdGlvbihhdChub2RlLmNoaWxkMSgpKS5w
cmVkaWN0aW9uKCkpKTsKKyAgICAgICAgQVNTRVJUKGF0KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNw
ZWN1bGF0ZUludGVnZXIoKSk7CisKICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5k
IHByb3BlcnR5KHRoaXMsIG5vZGUuY2hpbGQyKCkpOwogCkBAIC0yNTM2LDYgKzI1NTYsOCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBicmVh
azsgICAgICAgICAgICAKICAgICAgICAgfQogCisgICAgICAgIEFTU0VSVChhdChub2RlLmNoaWxk
MSgpKS5zaG91bGRTcGVjdWxhdGVBcnJheSgpKTsKKwogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2
YWx1ZSh0aGlzLCBub2RlLmNoaWxkMygpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2go
dGhpcywgYmFzZSk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxMDM1OTkpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjg2LDggKzIyODYsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgR2V0QnlWYWw6IHsKLSAgICAgICAgUHJlZGlj
dGVkVHlwZSBiYXNlUHJlZGljdGlvbiA9IGF0KG5vZGUuY2hpbGQyKCkpLnByZWRpY3Rpb24oKTsK
LSAgICAgICAgaWYgKCEoYmFzZVByZWRpY3Rpb24gJiBQcmVkaWN0SW50MzIpICYmIGJhc2VQcmVk
aWN0aW9uKSB7CisgICAgICAgIGlmICghbm9kZS5wcmVkaWN0aW9uKCkgfHwgIWF0KG5vZGUuY2hp
bGQxKCkpLnByZWRpY3Rpb24oKSB8fCAhYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpKSB7
CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBpZiAoIWF0KG5vZGUuY2hpbGQyKCkpLnNob3VsZFNwZWN1bGF0ZUlu
dGVnZXIoKSB8fCAhaXNBY3Rpb25hYmxlQXJyYXlQcmVkaWN0aW9uKGF0KG5vZGUuY2hpbGQxKCkp
LnByZWRpY3Rpb24oKSkpIHsKICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGJhc2UodGhpcywg
bm9kZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBwcm9wZXJ0eSh0aGlz
LCBub2RlLmNoaWxkMigpKTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlR1BSID0gYmFzZS5ncHIo
KTsKQEAgLTIzNzAsNiArMjM3NCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSYgbm9kZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAg
ICAgICAgICAKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQVNTRVJUKGF0KG5vZGUuY2hp
bGQxKCkpLnNob3VsZFNwZWN1bGF0ZUFycmF5KCkpOwogCiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0cmlj
dEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKQEAgLTIzOTgsOCAr
MjQwNCwxMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAg
fQogCiAgICAgY2FzZSBQdXRCeVZhbDogewotICAgICAgICBQcmVkaWN0ZWRUeXBlIGJhc2VQcmVk
aWN0aW9uID0gYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigpOwotICAgICAgICBpZiAoIShi
YXNlUHJlZGljdGlvbiAmIFByZWRpY3RJbnQzMikgJiYgYmFzZVByZWRpY3Rpb24pIHsKKyAgICAg
ICAgaWYgKCFhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkgfHwgIWF0KG5vZGUuY2hpbGQy
KCkpLnByZWRpY3Rpb24oKSkgeworICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVj
dXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCFhdChub2RlLmNoaWxkMigp
KS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkgfHwgIWlzQWN0aW9uYWJsZU11dGFibGVBcnJheVBy
ZWRpY3Rpb24oYXQobm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSkgewogICAgICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgYXJnMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEpT
VmFsdWVPcGVyYW5kIGFyZzIodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgICAgICBKU1Zh
bHVlT3BlcmFuZCBhcmczKHRoaXMsIG5vZGUuY2hpbGQzKCkpOwpAQCAtMjQ3Niw2ICsyNDg2LDgg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAogICAgICAgICB9Cisg
ICAgICAgICAgICAKKyAgICAgICAgQVNTRVJUKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1
bGF0ZUFycmF5KCkpOwogCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUu
Y2hpbGQzKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKQEAgLTI1Mzcs
OCArMjU0OSwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgfQogCiAgICAgY2FzZSBQdXRCeVZhbEFsaWFzOiB7Ci0gICAgICAgIFByZWRpY3RlZFR5cGUg
YmFzZVByZWRpY3Rpb24gPSBhdChub2RlLmNoaWxkMigpKS5wcmVkaWN0aW9uKCk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQoYmFzZVByZWRpY3Rpb24sIChiYXNlUHJlZGljdGlvbiAmIFByZWRpY3RJ
bnQzMikgfHwgIWJhc2VQcmVkaWN0aW9uKTsKKyAgICAgICAgaWYgKCFhdChub2RlLmNoaWxkMSgp
KS5wcmVkaWN0aW9uKCkgfHwgIWF0KG5vZGUuY2hpbGQyKCkpLnByZWRpY3Rpb24oKSkgeworICAg
ICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgQVNTRVJUKGlzQWN0aW9uYWJsZU11dGFibGVBcnJheVByZWRpY3Rpb24oYXQo
bm9kZS5jaGlsZDEoKSkucHJlZGljdGlvbigpKSk7CisgICAgICAgIEFTU0VSVChhdChub2RlLmNo
aWxkMigpKS5zaG91bGRTcGVjdWxhdGVJbnRlZ2VyKCkpOwogCiAgICAgICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIGJhc2UodGhpcywgbm9kZS5jaGlsZDEoKSk7CiAgICAgICAgIFNwZWN1bGF0ZVN0
cmljdEludDMyT3BlcmFuZCBwcm9wZXJ0eSh0aGlzLCBub2RlLmNoaWxkMigpKTsKQEAgLTI2MDIs
NiArMjYxOSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBicmVhazsgICAgICAgICAgICAKICAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgQVNTRVJUKGF0KG5vZGUuY2hpbGQxKCkpLnNob3Vs
ZFNwZWN1bGF0ZUFycmF5KCkpOwogCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMs
IG5vZGUuY2hpbGQzKCkpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CShyZXZpc2lvbiAxMDM1OTkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3Niw2ICsyMzc2LDExIEBAIGJvb2wg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVTdHJpY3RFcShOb2QKIAogdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSYgbm9kZSkKIHsKKyAgICBp
ZiAoIW5vZGUucHJlZGljdGlvbigpIHx8ICFhdChub2RlLmNoaWxkMSgpKS5wcmVkaWN0aW9uKCkg
fHwgIWF0KG5vZGUuY2hpbGQyKCkpLnByZWRpY3Rpb24oKSkgeworICAgICAgICB0ZXJtaW5hdGVT
cGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAgICAgCiAgICAgU3BlY3VsYXRlQ2VsbE9wZXJh
bmQgYmFzZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICBHUFJSZWcgYmFzZVJlZyA9IGJhc2Uu
Z3ByKCk7CiAgICAgCg==
</data>
<flag name="review"
          id="120693"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>