<?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>63218</bug_id>
          
          <creation_ts>2011-06-22 18:51:19 -0700</creation_ts>
          <short_desc>DFG JIT - remove machine type guarantees from graph</short_desc>
          <delta_ts>2011-06-23 14:04:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>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="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>425862</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-22 18:51:19 -0700</bug_when>
    <thetext>The DFG JIT currently makes assumptions about the types of machine registers that certain nodes will be loaded into.  This will be broken as we generate nodes to produce both integer and double code paths.  Remove int&lt;-&gt;double conversions nodes.  This design decision also gave rise to multiple types of constant nodes, requiring separate handling for each type.  Merge these back into JSConstant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425864</commentid>
    <comment_count>1</comment_count>
      <attachid>98292</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-22 18:53:44 -0700</bug_when>
    <thetext>Created attachment 98292
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426440</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-06-23 14:04:53 -0700</bug_when>
    <thetext>Fixed in r89611</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98292</attachid>
            <date>2011-06-22 18:53:44 -0700</date>
            <delta_ts>2011-06-22 18:57:19 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>63218.patch</filename>
            <type>text/plain</type>
            <size>32066</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gODk1MTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjIgQEAK
KzIwMTEtMDYtMjIgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MzIxOAorICAgICAgICBERkcgSklUIC0g
cmVtb3ZlIG1hY2hpbmUgdHlwZSBndWFyYW50ZWVzIGZyb20gZ3JhcGgKKworICAgICAgICBUaGUg
REZHIEpJVCBjdXJyZW50bHkgbWFrZXMgYXNzdW1wdGlvbnMgYWJvdXQgdGhlIHR5cGVzIG9mIG1h
Y2hpbmUgcmVnaXN0ZXJzCisgICAgICAgIHRoYXQgY2VydGFpbiBub2RlcyB3aWxsIGJlIGxvYWRl
ZCBpbnRvLiBUaGlzIHdpbGwgYmUgYnJva2VuIGFzIHdlIGdlbmVyYXRlCisgICAgICAgIG5vZGVz
IHRvIHByb2R1Y2UgYm90aCBpbnRlZ2VyIGFuZCBkb3VibGUgY29kZSBwYXRocy4gUmVtb3ZlIGlu
dDwtPmRvdWJsZQorICAgICAgICBjb252ZXJzaW9ucyBub2Rlcy4gVGhpcyBkZXNpZ24gZGVjaXNp
b24gYWxzbyBnYXZlIHJpc2UgdG8gbXVsdGlwbGUgdHlwZXMgb2YKKyAgICAgICAgY29uc3RhbnQg
bm9kZXMsIHJlcXVpcmluZyBzZXBhcmF0ZSBoYW5kbGluZyBmb3IgZWFjaCB0eXBlLiBNZXJnZSB0
aGVzZSBiYWNrCisgICAgICAgIGludG8gSlNDb25zdGFudC4KKworICAgICAgICAqIGRmZy9ERkdB
bGlhc1RyYWNrZXIuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBbGlhc1RyYWNrZXI6OmVxdWFsSWdu
b3JpbmdMYXRlck51bWVyaWNDb252ZXJzaW9uKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRUb0ludDMy
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0VG9OdW1iZXIpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjp0b0ludDMyKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6dG9OdW1iZXIpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjppc0ludDMyQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjppc0RvdWJsZUNvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6dmFsdWVPZkludDMyQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjp2YWx1ZU9mRG91YmxlQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpvbmUpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwcmVk
aWN0SW50MzIpOgorICAgICAgICAqIGRmZy9ERkdHcmFwaC5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6R3JhcGg6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdKSVRDb2RlR2VuZXJhdG9yLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6SklUQ29kZUdlbmVyYXRvcjo6c2lsZW50RmlsbEdQUik6CisgICAg
ICAgIChKU0M6OkRGRzo6SklUQ29kZUdlbmVyYXRvcjo6c2lsZW50RmlsbEZQUik6CisgICAgICAg
IChKU0M6OkRGRzo6SklUQ29kZUdlbmVyYXRvcjo6aXNKU0NvbnN0YW50KToKKyAgICAgICAgKEpT
Qzo6REZHOjpKSVRDb2RlR2VuZXJhdG9yOjppc0RvdWJsZUNvbnN0YW50KToKKyAgICAgICAgKEpT
Qzo6REZHOjpKSVRDb2RlR2VuZXJhdG9yOjp2YWx1ZU9mSlNDb25zdGFudEFzSW1tUHRyKToKKyAg
ICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkpJVENv
bXBpbGVyOjpmaWxsTnVtZXJpY1RvRG91YmxlKToKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21w
aWxlcjo6ZmlsbEludDMyVG9JbnRlZ2VyKToKKyAgICAgICAgKiBkZmcvREZHSklUQ29tcGlsZXIu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6aXNKU0NvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6REZHOjpKSVRDb21waWxlcjo6aXNJbnQzMkNvbnN0YW50KToKKyAgICAgICAgKEpT
Qzo6REZHOjpKSVRDb21waWxlcjo6aXNEb3VibGVDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRG
Rzo6SklUQ29tcGlsZXI6OnZhbHVlT2ZKU0NvbnN0YW50KToKKyAgICAgICAgKEpTQzo6REZHOjpK
SVRDb21waWxlcjo6dmFsdWVPZkludDMyQ29uc3RhbnQpOgorICAgICAgICAoSlNDOjpERkc6OkpJ
VENvbXBpbGVyOjp2YWx1ZU9mRG91YmxlQ29uc3RhbnQpOgorICAgICAgICAqIGRmZy9ERkdOb2Rl
Lmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Tm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6
Tm9kZTo6aXNDb25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6bm90VGFrZW5CeXRl
Y29kZU9mZnNldCk6CisgICAgICAgICogZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpOb25TcGVjdWxhdGl2ZUpJVDo6aXNLbm93bkludGVnZXIpOgorICAg
ICAgICAoSlNDOjpERkc6Ok5vblNwZWN1bGF0aXZlSklUOjppc0tub3duTnVtZXJpYyk6CisgICAg
ICAgIChKU0M6OkRGRzo6Tm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVJbnRJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50ZWdlckJyYW5jaCk6CisgICAgICAgIChKU0M6OkRG
Rzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorCiAyMDExLTA2LTIyICBZYWVsIEFoYXJvbiAg
PHlhZWwuYWhhcm9uQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEts
aW5nLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBbGlhc1RyYWNrZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FsaWFzVHJhY2tlci5o
CShyZXZpc2lvbiA4OTQ1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWxpYXNU
cmFja2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsNyBAQCBwcml2YXRlOgogICAg
ICAgICBpZiAob3AxID09IG9wMikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBO
b2RlJiBub2RlMiA9IG1fZ3JhcGhbb3AyXTsKLSAgICAgICAgcmV0dXJuIChub2RlMi5vcCA9PSBW
YWx1ZVRvTnVtYmVyIHx8IG5vZGUyLm9wID09IFZhbHVlVG9JbnQzMiB8fCBub2RlMi5vcCA9PSBO
dW1iZXJUb0ludDMyKSAmJiBvcDEgPT0gbm9kZTIuY2hpbGQxOworICAgICAgICByZXR1cm4gKG5v
ZGUyLm9wID09IFZhbHVlVG9OdW1iZXIgfHwgbm9kZTIub3AgPT0gVmFsdWVUb0ludDMyKSAmJiBv
cDEgPT0gbm9kZTIuY2hpbGQxOwogICAgIH0KIAogICAgIC8vIFRoZSBncmFwaCwgdG8gbG9vayB1
cCBwb3RlbnRpYWxseSBhbGlhc2luZyBub2Rlcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiA4OTQ1MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzUsMjYgKzE3NSwxMCBAQCBwcml2YXRlOgogICAgIC8vIEdldCBhbiBvcGVyYW5k
LCBhbmQgcGVyZm9ybSBhIFRvSW50MzIvVG9OdW1iZXIgY29udmVyc2lvbiBvbiBpdC4KICAgICBO
b2RlSW5kZXggZ2V0VG9JbnQzMihpbnQgb3BlcmFuZCkKICAgICB7Ci0gICAgICAgIC8vIEF2b2lk
IHdhc3RlZnVsbHkgYWRkaW5nIGEgSlNDb25zdGFudCBub2RlIHRvIHRoZSBncmFwaCwgb25seSB0
bwotICAgICAgICAvLyByZXBsYWNlIGl0IHdpdGggYSBJbnQzMkNvbnN0YW50ICh3aGljaCBpcyB3
aGF0IHdvdWxkIGhhcHBlbiBpZgotICAgICAgICAvLyB3ZSBjYWxsZWQgJ3RvSW50MzIoZ2V0KG9w
ZXJhbmQpKScgaW4gdGhpcyBjYXNlKS4KLSAgICAgICAgaWYgKG9wZXJhbmQgPj0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdiA9IG1fY29kZUJsb2Nr
LT5nZXRDb25zdGFudChvcGVyYW5kKTsKLSAgICAgICAgICAgIGlmICh2LmlzSW50MzIoKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZ2V0SW50MzJDb25zdGFudCh2LmFzSW50MzIoKSwgb3BlcmFu
ZCAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KTsKLSAgICAgICAgfQogICAgICAgICByZXR1
cm4gdG9JbnQzMihnZXQob3BlcmFuZCkpOwogICAgIH0KICAgICBOb2RlSW5kZXggZ2V0VG9OdW1i
ZXIoaW50IG9wZXJhbmQpCiAgICAgewotICAgICAgICAvLyBBdm9pZCB3YXN0ZWZ1bGx5IGFkZGlu
ZyBhIEpTQ29uc3RhbnQgbm9kZSB0byB0aGUgZ3JhcGgsIG9ubHkgdG8KLSAgICAgICAgLy8gcmVw
bGFjZSBpdCB3aXRoIGEgRG91YmxlQ29uc3RhbnQgKHdoaWNoIGlzIHdoYXQgd291bGQgaGFwcGVu
IGlmCi0gICAgICAgIC8vIHdlIGNhbGxlZCAndG9OdW1iZXIoZ2V0KG9wZXJhbmQpKScgaW4gdGhp
cyBjYXNlKS4KLSAgICAgICAgaWYgKG9wZXJhbmQgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgpIHsKLSAgICAgICAgICAgIEpTVmFsdWUgdiA9IG1fY29kZUJsb2NrLT5nZXRDb25zdGFudChv
cGVyYW5kKTsKLSAgICAgICAgICAgIGlmICh2LmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGdldERvdWJsZUNvbnN0YW50KHYudW5jaGVja2VkR2V0TnVtYmVyKCksIG9wZXJhbmQg
LSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCk7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJu
IHRvTnVtYmVyKGdldChvcGVyYW5kKSk7CiAgICAgfQogCkBAIC0yMDYsMjkgKzE5MCwxNiBAQCBw
cml2YXRlOgogICAgICAgICBpZiAobm9kZS5oYXNJbnQzMlJlc3VsdCgpKQogICAgICAgICAgICAg
cmV0dXJuIGluZGV4OwogCi0gICAgICAgIGlmIChub2RlLmhhc0RvdWJsZVJlc3VsdCgpKSB7Ci0g
ICAgICAgICAgICBpZiAobm9kZS5vcCA9PSBEb3VibGVDb25zdGFudCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZ2V0SW50MzJDb25zdGFudChKU0M6OnRvSW50MzIodmFsdWVPZkRvdWJsZUNvbnN0
YW50KGluZGV4KSksIG5vZGUuY29uc3RhbnROdW1iZXIoKSk7Ci0gICAgICAgICAgICAvLyAnTnVt
YmVyVG9JbnQzMihJbnQzMlRvTnVtYmVyKFgpKScgPT0gWCwgYW5kICdOdW1iZXJUb0ludDMyKFVJ
bnQzMlRvTnVtYmVyKFgpKSA9PSBYJwotICAgICAgICAgICAgaWYgKG5vZGUub3AgPT0gSW50MzJU
b051bWJlciB8fCBub2RlLm9wID09IFVJbnQzMlRvTnVtYmVyKQotICAgICAgICAgICAgICAgIHJl
dHVybiBub2RlLmNoaWxkMTsKLQotICAgICAgICAgICAgLy8gV2UgdW5pcXVlIE51bWJlclRvSW50
MzIgbm9kZXMgaW4gYSBtYXAgdG8gcHJldmVudCBkdXBsaWNhdGUgY29udmVyc2lvbnMuCi0gICAg
ICAgICAgICBwYWlyPFVuYXJ5T3BNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX251bWJl
clRvSW50MzJOb2Rlcy5hZGQoaW5kZXgsIE5vTm9kZSk7Ci0gICAgICAgICAgICAvLyBFaXRoZXIg
d2UgYWRkZWQgYSBuZXcgdmFsdWUsIG9yIHRoZSBleGlzdGluZyB2YWx1ZSBpbiB0aGUgbWFwIGlz
IG5vbi16ZXJvLgotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5zZWNvbmQgPT0gKHJlc3VsdC5m
aXJzdC0+c2Vjb25kID09IE5vTm9kZSkpOwotICAgICAgICAgICAgaWYgKHJlc3VsdC5zZWNvbmQp
Ci0gICAgICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBhZGRUb0dyYXBoKE51bWJl
clRvSW50MzIsIGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNlY29u
ZDsKLSAgICAgICAgfQorICAgICAgICBpZiAobm9kZS5vcCA9PSBVSW50MzJUb051bWJlcikKKyAg
ICAgICAgICAgIHJldHVybiBub2RlLmNoaWxkMTsKIAogICAgICAgICAvLyBDaGVjayBmb3IgbnVt
ZXJpYyBjb25zdGFudHMgYm94ZWQgYXMgSlNWYWx1ZXMuCiAgICAgICAgIGlmIChub2RlLm9wID09
IEpTQ29uc3RhbnQpIHsKICAgICAgICAgICAgIEpTVmFsdWUgdiA9IHZhbHVlT2ZKU0NvbnN0YW50
KGluZGV4KTsKICAgICAgICAgICAgIGlmICh2LmlzSW50MzIoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2V0SW50MzJDb25zdGFudCh2LmFzSW50MzIoKSwgbm9kZS5jb25zdGFudE51bWJlcigp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0SlNDb25zdGFudChub2RlLmNvbnN0YW50TnVt
YmVyKCkpOwogICAgICAgICAgICAgaWYgKHYuaXNOdW1iZXIoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZ2V0SW50MzJDb25zdGFudChKU0M6OnRvSW50MzIodi51bmNoZWNrZWRHZXROdW1iZXIo
KSksIG5vZGUuY29uc3RhbnROdW1iZXIoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldEpT
Q29uc3RhbnQobm9kZS5jb25zdGFudE51bWJlcigpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJl
dHVybiBhZGRUb0dyYXBoKFZhbHVlVG9JbnQzMiwgaW5kZXgpOwpAQCAtMjM5LDUzICsyMTAsMTgg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIE5vZGUmIG5vZGUgPSBtX2dyYXBoW2luZGV4XTsK
IAotICAgICAgICBpZiAobm9kZS5oYXNEb3VibGVSZXN1bHQoKSkKKyAgICAgICAgaWYgKG5vZGUu
aGFzRG91YmxlUmVzdWx0KCkgfHwgbm9kZS5oYXNJbnQzMlJlc3VsdCgpKQogICAgICAgICAgICAg
cmV0dXJuIGluZGV4OwogCi0gICAgICAgIGlmIChub2RlLmhhc0ludDMyUmVzdWx0KCkpIHsKLSAg
ICAgICAgICAgIGlmIChub2RlLm9wID09IEludDMyQ29uc3RhbnQpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGdldERvdWJsZUNvbnN0YW50KHZhbHVlT2ZJbnQzMkNvbnN0YW50KGluZGV4KSwgbm9k
ZS5jb25zdGFudE51bWJlcigpKTsKLQotICAgICAgICAgICAgLy8gV2UgdW5pcXVlIEludDMyVG9O
dW1iZXIgbm9kZXMgaW4gYSBtYXAgdG8gcHJldmVudCBkdXBsaWNhdGUgY29udmVyc2lvbnMuCi0g
ICAgICAgICAgICBwYWlyPFVuYXJ5T3BNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX2lu
dDMyVG9OdW1iZXJOb2Rlcy5hZGQoaW5kZXgsIE5vTm9kZSk7Ci0gICAgICAgICAgICAvLyBFaXRo
ZXIgd2UgYWRkZWQgYSBuZXcgdmFsdWUsIG9yIHRoZSBleGlzdGluZyB2YWx1ZSBpbiB0aGUgbWFw
IGlzIG5vbi16ZXJvLgotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC5zZWNvbmQgPT0gKHJlc3Vs
dC5maXJzdC0+c2Vjb25kID09IE5vTm9kZSkpOwotICAgICAgICAgICAgaWYgKHJlc3VsdC5zZWNv
bmQpCi0gICAgICAgICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBhZGRUb0dyYXBoKElu
dDMyVG9OdW1iZXIsIGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQuZmlyc3QtPnNl
Y29uZDsKLSAgICAgICAgfQotCiAgICAgICAgIGlmIChub2RlLm9wID09IEpTQ29uc3RhbnQpIHsK
ICAgICAgICAgICAgIEpTVmFsdWUgdiA9IHZhbHVlT2ZKU0NvbnN0YW50KGluZGV4KTsKICAgICAg
ICAgICAgIGlmICh2LmlzTnVtYmVyKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGdldERvdWJs
ZUNvbnN0YW50KHYudW5jaGVja2VkR2V0TnVtYmVyKCksIG5vZGUuY29uc3RhbnROdW1iZXIoKSk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldEpTQ29uc3RhbnQobm9kZS5jb25zdGFudE51bWJl
cigpKTsKICAgICAgICAgfQogCiAgICAgICAgIHJldHVybiBhZGRUb0dyYXBoKFZhbHVlVG9OdW1i
ZXIsIGluZGV4KTsKICAgICB9CiAKLQotICAgIC8vIFVzZWQgaW4gaW1wbGVtZW50aW5nIGdldCwg
YWJvdmUsIHdoZXJlIHRoZSBvcGVyYW5kIGlzIGEgY29uc3RhbnQuCi0gICAgTm9kZUluZGV4IGdl
dEludDMyQ29uc3RhbnQoaW50MzJfdCB2YWx1ZSwgdW5zaWduZWQgY29uc3RhbnQpCi0gICAgewot
ICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2NvbnN0YW50c1tjb25zdGFudF0uYXNJbnQzMjsK
LSAgICAgICAgaWYgKGluZGV4ICE9IE5vTm9kZSkKLSAgICAgICAgICAgIHJldHVybiBpbmRleDsK
LSAgICAgICAgTm9kZUluZGV4IHJlc3VsdEluZGV4ID0gYWRkVG9HcmFwaChJbnQzMkNvbnN0YW50
LCBPcEluZm8oY29uc3RhbnQpKTsKLSAgICAgICAgbV9ncmFwaFtyZXN1bHRJbmRleF0uc2V0SW50
MzJDb25zdGFudCh2YWx1ZSk7Ci0gICAgICAgIG1fY29uc3RhbnRzW2NvbnN0YW50XS5hc0ludDMy
ID0gcmVzdWx0SW5kZXg7Ci0gICAgICAgIHJldHVybiByZXN1bHRJbmRleDsKLSAgICB9Ci0gICAg
Tm9kZUluZGV4IGdldERvdWJsZUNvbnN0YW50KGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgY29uc3Rh
bnQpCi0gICAgewotICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2NvbnN0YW50c1tjb25zdGFu
dF0uYXNOdW1lcmljOwotICAgICAgICBpZiAoaW5kZXggIT0gTm9Ob2RlKQotICAgICAgICAgICAg
cmV0dXJuIGluZGV4OwotICAgICAgICBOb2RlSW5kZXggcmVzdWx0SW5kZXggPSBhZGRUb0dyYXBo
KERvdWJsZUNvbnN0YW50LCBPcEluZm8oY29uc3RhbnQpKTsKLSAgICAgICAgbV9ncmFwaFtyZXN1
bHRJbmRleF0uc2V0RG91YmxlQ29uc3RhbnQodmFsdWUpOwotICAgICAgICBtX2NvbnN0YW50c1tj
b25zdGFudF0uYXNOdW1lcmljID0gcmVzdWx0SW5kZXg7Ci0gICAgICAgIHJldHVybiByZXN1bHRJ
bmRleDsKLSAgICB9CiAgICAgTm9kZUluZGV4IGdldEpTQ29uc3RhbnQodW5zaWduZWQgY29uc3Rh
bnQpCiAgICAgewogICAgICAgICBOb2RlSW5kZXggaW5kZXggPSBtX2NvbnN0YW50c1tjb25zdGFu
dF0uYXNKU1ZhbHVlOwpAQCAtMzA4LDM1ICsyNDQsMzcgQEAgcHJpdmF0ZToKICAgICB9CiAKICAg
ICAvLyBDb252ZW5pZW5jZSBtZXRob2RzIGZvciBjaGVja2luZyBub2RlcyBmb3IgY29uc3RhbnRz
LgotICAgIGJvb2wgaXNJbnQzMkNvbnN0YW50KE5vZGVJbmRleCBpbmRleCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiBtX2dyYXBoW2luZGV4XS5vcCA9PSBJbnQzMkNvbnN0YW50OwotICAgIH0KLSAg
ICBib29sIGlzRG91YmxlQ29uc3RhbnQoTm9kZUluZGV4IGluZGV4KQotICAgIHsKLSAgICAgICAg
cmV0dXJuIG1fZ3JhcGhbaW5kZXhdLm9wID09IERvdWJsZUNvbnN0YW50OwotICAgIH0KICAgICBi
b29sIGlzSlNDb25zdGFudChOb2RlSW5kZXggaW5kZXgpCiAgICAgewogICAgICAgICByZXR1cm4g
bV9ncmFwaFtpbmRleF0ub3AgPT0gSlNDb25zdGFudDsKICAgICB9Ci0KLSAgICAvLyBDb252ZW5p
ZW5jZSBtZXRob2RzIGZvciBnZXR0aW5nIGNvbnN0YW50IHZhbHVlcy4KLSAgICBpbnQzMl90IHZh
bHVlT2ZJbnQzMkNvbnN0YW50KE5vZGVJbmRleCBpbmRleCkKKyAgICBib29sIGlzSW50MzJDb25z
dGFudChOb2RlSW5kZXggbm9kZUluZGV4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzSW50MzJD
b25zdGFudChpbmRleCkpOwotICAgICAgICByZXR1cm4gbV9ncmFwaFtpbmRleF0uaW50MzJDb25z
dGFudCgpOworICAgICAgICByZXR1cm4gaXNKU0NvbnN0YW50KG5vZGVJbmRleCkgJiYgdmFsdWVP
ZkpTQ29uc3RhbnQobm9kZUluZGV4KS5pc0ludDMyKCk7CiAgICAgfQotICAgIGRvdWJsZSB2YWx1
ZU9mRG91YmxlQ29uc3RhbnQoTm9kZUluZGV4IGluZGV4KQorICAgIGJvb2wgaXNEb3VibGVDb25z
dGFudChOb2RlSW5kZXggbm9kZUluZGV4KQogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzRG91Ymxl
Q29uc3RhbnQoaW5kZXgpKTsKLSAgICAgICAgcmV0dXJuIG1fZ3JhcGhbaW5kZXhdLm51bWVyaWND
b25zdGFudCgpOworICAgICAgICByZXR1cm4gaXNKU0NvbnN0YW50KG5vZGVJbmRleCkgJiYgdmFs
dWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KS5pc051bWJlcigpOwogICAgIH0KKyAgICAvLyBDb252
ZW5pZW5jZSBtZXRob2RzIGZvciBnZXR0aW5nIGNvbnN0YW50IHZhbHVlcy4KICAgICBKU1ZhbHVl
IHZhbHVlT2ZKU0NvbnN0YW50KE5vZGVJbmRleCBpbmRleCkKICAgICB7CiAgICAgICAgIEFTU0VS
VChpc0pTQ29uc3RhbnQoaW5kZXgpKTsKICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5nZXRD
b25zdGFudChGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCArIG1fZ3JhcGhbaW5kZXhdLmNvbnN0
YW50TnVtYmVyKCkpOwogICAgIH0KKyAgICBpbnQzMl90IHZhbHVlT2ZJbnQzMkNvbnN0YW50KE5v
ZGVJbmRleCBub2RlSW5kZXgpCisgICAgeworICAgICAgICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50
KG5vZGVJbmRleCkpOworICAgICAgICByZXR1cm4gdmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4
KS5hc0ludDMyKCk7CisgICAgfQorICAgIGRvdWJsZSB2YWx1ZU9mRG91YmxlQ29uc3RhbnQoTm9k
ZUluZGV4IG5vZGVJbmRleCkKKyAgICB7CisgICAgICAgIEFTU0VSVChpc0RvdWJsZUNvbnN0YW50
KG5vZGVJbmRleCkpOworICAgICAgICBkb3VibGUgdmFsdWU7CisgICAgICAgIGJvb2wgb2theSA9
IHZhbHVlT2ZKU0NvbnN0YW50KG5vZGVJbmRleCkuZ2V0TnVtYmVyKHZhbHVlKTsKKyAgICAgICAg
QVNTRVJUX1VOVVNFRChva2F5LCBva2F5KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0K
IAogICAgIC8vIFRoaXMgbWV0aG9kIHJldHVybnMgYSBKU0NvbnN0YW50IHdpdGggdGhlIHZhbHVl
ICd1bmRlZmluZWQnLgogICAgIE5vZGVJbmRleCBjb25zdGFudFVuZGVmaW5lZCgpCkBAIC0zOTgs
NyArMzM2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZvciAobV9jb25zdGFudDEgPSAwOyBt
X2NvbnN0YW50MSA8IG51bWJlck9mQ29uc3RhbnRzOyArK21fY29uc3RhbnQxKSB7CiAgICAgICAg
ICAgICAgICAgSlNWYWx1ZSB0ZXN0TWUgPSBtX2NvZGVCbG9jay0+Z2V0Q29uc3RhbnQoRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXggKyBtX2NvbnN0YW50MSk7CiAgICAgICAgICAgICAgICAgaWYg
KHRlc3RNZS5pc0ludDMyKCkgJiYgdGVzdE1lLmFzSW50MzIoKSA9PSAxKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZ2V0RG91YmxlQ29uc3RhbnQoMSwgbV9jb25zdGFudDEpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZ2V0SlNDb25zdGFudChtX2NvbnN0YW50MSk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIC8vIEFkZCB0aGUgdmFsdWUgMSB0byB0aGUgQ29kZUJsb2Nr
J3MgY29uc3RhbnRzLCBhbmQgYWRkIGEgY29ycmVzcG9uZGluZyBzbG90IGluIG1fY29uc3RhbnRz
LgpAQCAtNDExLDcgKzM0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIG1fY29uc3RhbnQxIG11
c3QgcmVmZXIgdG8gYW4gZW50cnkgaW4gdGhlIENvZGVCbG9jaydzIGNvbnN0YW50IHBvb2wgdGhh
dCBoYXMgdGhlIGludGVnZXIgdmFsdWUgMS4KICAgICAgICAgQVNTRVJUKG1fY29kZUJsb2NrLT5n
ZXRDb25zdGFudChGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCArIG1fY29uc3RhbnQxKS5pc0lu
dDMyKCkpOwogICAgICAgICBBU1NFUlQobV9jb2RlQmxvY2stPmdldENvbnN0YW50KEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4ICsgbV9jb25zdGFudDEpLmFzSW50MzIoKSA9PSAxKTsKLSAgICAg
ICAgcmV0dXJuIGdldERvdWJsZUNvbnN0YW50KDEsIG1fY29uc3RhbnQxKTsKKyAgICAgICAgcmV0
dXJuIGdldEpTQ29uc3RhbnQobV9jb25zdGFudDEpOwogICAgIH0KIAogCkBAIC00NjMsOSArNDAx
LDYgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKG5vZGVQdHItPm9wID09IFZhbHVlVG9JbnQzMikK
ICAgICAgICAgICAgIG5vZGVQdHIgPSAmbV9ncmFwaFtub2RlUHRyLT5jaGlsZDFdOwogCi0gICAg
ICAgIGlmIChub2RlUHRyLT5vcCA9PSBOdW1iZXJUb0ludDMyKQotICAgICAgICAgICAgbm9kZVB0
ciA9ICZtX2dyYXBoW25vZGVQdHItPmNoaWxkMV07Ci0KICAgICAgICAgaWYgKG5vZGVQdHItPm9w
ID09IEdldExvY2FsKQogICAgICAgICAgICAgbV9ncmFwaC5wcmVkaWN0KG5vZGVQdHItPmxvY2Fs
KCksIFByZWRpY3RJbnQzMik7CiAgICAgfQpAQCAtNTMzLDExICs0NjgsNiBAQCBwcml2YXRlOgog
ICAgIH07CiAgICAgVmVjdG9yPFBoaVN0YWNrRW50cnksIDE2PiBtX2FyZ3VtZW50UGhpU3RhY2s7
CiAgICAgVmVjdG9yPFBoaVN0YWNrRW50cnksIDE2PiBtX2xvY2FsUGhpU3RhY2s7Ci0KLSAgICAv
LyBUaGVzZSBtYXBzIGFyZSB1c2VkIHRvIHVuaXF1ZSBUb051bWJlciBhbmQgVG9JbnQzMiBvcGVy
YXRpb25zLgotICAgIHR5cGVkZWYgSGFzaE1hcDxOb2RlSW5kZXgsIE5vZGVJbmRleD4gVW5hcnlP
cE1hcDsKLSAgICBVbmFyeU9wTWFwIG1faW50MzJUb051bWJlck5vZGVzOwotICAgIFVuYXJ5T3BN
YXAgbV9udW1iZXJUb0ludDMyTm9kZXM7CiB9OwogCiAjZGVmaW5lIE5FWFRfT1BDT0RFKG5hbWUp
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiA4
OTQ1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDMsMTQgKzEwMyw2IEBAIHZvaWQgR3JhcGg6OmR1bXAoTm9kZUluZGV4IG5v
ZGVJbmRleCwgQ28KICAgICAgICAgICAgIHByaW50ZigiJXNyJXUiLCBoYXNQcmludGVkID8gIiwg
IiA6ICIiLCBsb2NhbCk7CiAgICAgICAgIGhhc1ByaW50ZWQgPSB0cnVlOwogICAgIH0KLSAgICBp
ZiAob3AgPT0gSW50MzJDb25zdGFudCkgewotICAgICAgICBwcmludGYoIiVzJCV1eyVkfDB4JTA4
eH0iLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBub2RlLmNvbnN0YW50TnVtYmVyKCksIG5vZGUu
aW50MzJDb25zdGFudCgpLCBub2RlLmludDMyQ29uc3RhbnQoKSk7Ci0gICAgICAgIGhhc1ByaW50
ZWQgPSB0cnVlOwotICAgIH0KLSAgICBpZiAob3AgPT0gRG91YmxlQ29uc3RhbnQpIHsKLSAgICAg
ICAgcHJpbnRmKCIlcyQldXslZn0pIiwgaGFzUHJpbnRlZCA/ICIsICIgOiAiIiwgbm9kZS5jb25z
dGFudE51bWJlcigpLCBub2RlLm51bWVyaWNDb25zdGFudCgpKTsKLSAgICAgICAgaGFzUHJpbnRl
ZCA9IHRydWU7Ci0gICAgfQogICAgIGlmIChvcCA9PSBKU0NvbnN0YW50KSB7CiAgICAgICAgIHBy
aW50ZigiJXMkJXUiLCBoYXNQcmludGVkID8gIiwgIiA6ICIiLCBub2RlLmNvbnN0YW50TnVtYmVy
KCkpOwogICAgICAgICBoYXNQcmludGVkID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCShyZXZpc2lvbiA4OTQ1MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDMsMTUgKzIwMywxNSBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgaWYgKHJl
Z2lzdGVyRm9ybWF0ID09IERhdGFGb3JtYXRJbnRlZ2VyKSB7CiAgICAgICAgICAgICBpZiAobm9k
ZS5pc0NvbnN0YW50KCkpIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQoaXNJbnRlZ2VyQ29uc3Rh
bnQobm9kZUluZGV4KSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQubW92ZShJbW0zMih2YWx1ZU9m
SW50ZWdlckNvbnN0YW50KG5vZGVJbmRleCkpLCBpbmZvLmdwcigpKTsKKyAgICAgICAgICAgICAg
ICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50KG5vZGVJbmRleCkpOworICAgICAgICAgICAgICAgIG1f
aml0Lm1vdmUoSW1tMzIodmFsdWVPZkludDMyQ29uc3RhbnQobm9kZUluZGV4KSksIGluZm8uZ3By
KCkpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJ
VENvbXBpbGVyOjphZGRyZXNzRm9yKHNwaWxsTWUpLCBpbmZvLmdwcigpKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChub2RlLmlzQ29uc3RhbnQoKSkKLSAg
ICAgICAgICAgIG1faml0Lm1vdmUoY29uc3RhbnRBc0pTVmFsdWVBc0ltbVB0cihub2RlSW5kZXgp
LCBpbmZvLmdwcigpKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUodmFsdWVPZkpTQ29uc3RhbnRB
c0ltbVB0cihub2RlSW5kZXgpLCBpbmZvLmdwcigpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQocmVnaXN0ZXJGb3JtYXQgJiBEYXRhRm9ybWF0SlMgfHwgcmVnaXN0ZXJGb3Jt
YXQgPT0gRGF0YUZvcm1hdENlbGwpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21w
aWxlcjo6YWRkcmVzc0ZvcihzcGlsbE1lKSwgaW5mby5ncHIoKSk7CkBAIC0yMjgsNyArMjI4LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICBBU1NFUlQoaW5mby5yZWdpc3RlckZvcm1hdCgpID09IERh
dGFGb3JtYXREb3VibGUpOwogCiAgICAgICAgIGlmIChub2RlLmlzQ29uc3RhbnQoKSkKLSAgICAg
ICAgICAgIG1faml0Lm1vdmUoY29uc3RhbnRBc0pTVmFsdWVBc0ltbVB0cihub2RlSW5kZXgpLCBp
bmZvLmdwcigpKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUodmFsdWVPZkpTQ29uc3RhbnRBc0lt
bVB0cihub2RlSW5kZXgpLCBpbmZvLmdwcigpKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHNwaWxsTWUpLCBjYW5UcmFt
cGxlKTsKICAgICAgICAgICAgIHVuYm94RG91YmxlKGNhblRyYW1wbGUsIGluZm8uZnByKCkpOwpA
QCAtMzgxLDYzICszODEsMTMgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gQ2hlY2tzL2FjY2Vzc29y
cyBmb3IgY29uc3RhbnQgdmFsdWVzLgogICAgIGJvb2wgaXNDb25zdGFudChOb2RlSW5kZXggbm9k
ZUluZGV4KSB7IHJldHVybiBtX2ppdC5pc0NvbnN0YW50KG5vZGVJbmRleCk7IH0KKyAgICBib29s
IGlzSlNDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJldHVybiBtX2ppdC5pc0pTQ29u
c3RhbnQobm9kZUluZGV4KTsgfQogICAgIGJvb2wgaXNJbnQzMkNvbnN0YW50KE5vZGVJbmRleCBu
b2RlSW5kZXgpIHsgcmV0dXJuIG1faml0LmlzSW50MzJDb25zdGFudChub2RlSW5kZXgpOyB9CiAg
ICAgYm9vbCBpc0RvdWJsZUNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpIHsgcmV0dXJuIG1f
aml0LmlzRG91YmxlQ29uc3RhbnQobm9kZUluZGV4KTsgfQotICAgIGJvb2wgaXNKU0NvbnN0YW50
KE5vZGVJbmRleCBub2RlSW5kZXgpIHsgcmV0dXJuIG1faml0LmlzSlNDb25zdGFudChub2RlSW5k
ZXgpOyB9CiAgICAgaW50MzJfdCB2YWx1ZU9mSW50MzJDb25zdGFudChOb2RlSW5kZXggbm9kZUlu
ZGV4KSB7IHJldHVybiBtX2ppdC52YWx1ZU9mSW50MzJDb25zdGFudChub2RlSW5kZXgpOyB9CiAg
ICAgZG91YmxlIHZhbHVlT2ZEb3VibGVDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4KSB7IHJl
dHVybiBtX2ppdC52YWx1ZU9mRG91YmxlQ29uc3RhbnQobm9kZUluZGV4KTsgfQogICAgIEpTVmFs
dWUgdmFsdWVPZkpTQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkgeyByZXR1cm4gbV9qaXQu
dmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KTsgfQogCi0gICAgYm9vbCBpc0RvdWJsZUNvbnN0
YW50V2l0aEludDMyVmFsdWUoTm9kZUluZGV4IG5vZGVJbmRleCwgaW50MzJfdCYgb3V0KQotICAg
IHsKLSAgICAgICAgaWYgKCFtX2ppdC5pc0RvdWJsZUNvbnN0YW50KG5vZGVJbmRleCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGRvdWJsZSB2YWx1ZSA9IG1faml0LnZhbHVl
T2ZEb3VibGVDb25zdGFudChub2RlSW5kZXgpOwotCi0gICAgICAgIGludDMyX3QgYXNJbnQzMiA9
IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKLSAgICAgICAgaWYgKHZhbHVlICE9IGFzSW50
MzIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICghYXNJbnQzMiAmJiBz
aWduYml0KHZhbHVlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBvdXQg
PSBhc0ludDMyOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIGlzSlND
b25zdGFudFdpdGhJbnQzMlZhbHVlKE5vZGVJbmRleCBub2RlSW5kZXgsIGludDMyX3QmIG91dCkK
LSAgICB7Ci0gICAgICAgIGlmICghbV9qaXQuaXNKU0NvbnN0YW50KG5vZGVJbmRleCkpCi0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBtX2ppdC52YWx1
ZU9mSlNDb25zdGFudChub2RlSW5kZXgpOwotCi0gICAgICAgIGlmICghdmFsdWUuaXNJbnQzMigp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAKLSAgICAgICAgb3V0ID0gdmFs
dWUuYXNJbnQzMigpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBib29sIGlz
SW50ZWdlckNvbnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpCi0gICAgewotICAgICAgICBpbnQz
Ml90IHVudXNlZDsKLSAgICAgICAgcmV0dXJuIGlzSW50MzJDb25zdGFudChub2RlSW5kZXgpCi0g
ICAgICAgICAgICB8fCBpc0RvdWJsZUNvbnN0YW50V2l0aEludDMyVmFsdWUobm9kZUluZGV4LCB1
bnVzZWQpCi0gICAgICAgICAgICB8fCBpc0pTQ29uc3RhbnRXaXRoSW50MzJWYWx1ZShub2RlSW5k
ZXgsIHVudXNlZCk7Ci0gICAgfQotCi0gICAgaW50MzJfdCB2YWx1ZU9mSW50ZWdlckNvbnN0YW50
KE5vZGVJbmRleCBub2RlSW5kZXgpCi0gICAgewotICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50
KG5vZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4gdmFsdWVPZkludDMyQ29uc3RhbnQobm9k
ZUluZGV4KTsKLSAgICAgICAgaW50MzJfdCByZXN1bHQgPSAwOwotICAgICAgICBib29sIG9rYXkg
PSBpc0RvdWJsZUNvbnN0YW50V2l0aEludDMyVmFsdWUobm9kZUluZGV4LCByZXN1bHQpOwotICAg
ICAgICBpZiAob2theSkKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIG9rYXkg
PSBpc0pTQ29uc3RhbnRXaXRoSW50MzJWYWx1ZShub2RlSW5kZXgsIHJlc3VsdCk7Ci0gICAgICAg
IEFTU0VSVF9VTlVTRUQob2theSwgb2theSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAg
fQotCiAgICAgSWRlbnRpZmllciogaWRlbnRpZmllcih1bnNpZ25lZCBpbmRleCkKICAgICB7CiAg
ICAgICAgIHJldHVybiAmbV9qaXQuY29kZUJsb2NrKCktPmlkZW50aWZpZXIoaW5kZXgpOwpAQCAt
NDc3LDIwICs0MjcsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgfQogI2VuZGlmCiAKLSAgICAvLyBHZXQg
dGhlIEpTVmFsdWUgcmVwcmVzZW50YXRpb24gb2YgYSBjb25zdGFudC4KLSAgICBKU1ZhbHVlIGNv
bnN0YW50QXNKU1ZhbHVlKE5vZGVJbmRleCBub2RlSW5kZXgpCi0gICAgewotICAgICAgICBOb2Rl
JiBub2RlID0gbV9qaXQuZ3JhcGgoKVtub2RlSW5kZXhdOwotICAgICAgICBpZiAoaXNJbnQzMkNv
bnN0YW50KG5vZGVJbmRleCkpCi0gICAgICAgICAgICByZXR1cm4ganNOdW1iZXIobm9kZS5pbnQz
MkNvbnN0YW50KCkpOwotICAgICAgICBpZiAoaXNEb3VibGVDb25zdGFudChub2RlSW5kZXgpKQot
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoSlNWYWx1ZTo6RW5jb2RlQXNEb3VibGUsIG5vZGUu
bnVtZXJpY0NvbnN0YW50KCkpOwotICAgICAgICBBU1NFUlQoaXNKU0NvbnN0YW50KG5vZGVJbmRl
eCkpOwotICAgICAgICByZXR1cm4gdmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KTsKLSAgICB9
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OkltbVB0ciBjb25zdGFudEFzSlNWYWx1ZUFzSW1tUHRyKE5v
ZGVJbmRleCBub2RlSW5kZXgpCisgICAgTWFjcm9Bc3NlbWJsZXI6OkltbVB0ciB2YWx1ZU9mSlND
b25zdGFudEFzSW1tUHRyKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgewotICAgICAgICByZXR1
cm4gTWFjcm9Bc3NlbWJsZXI6OkltbVB0cihKU1ZhbHVlOjplbmNvZGUoY29uc3RhbnRBc0pTVmFs
dWUobm9kZUluZGV4KSkpOworICAgICAgICByZXR1cm4gTWFjcm9Bc3NlbWJsZXI6OkltbVB0cihK
U1ZhbHVlOjplbmNvZGUodmFsdWVPZkpTQ29uc3RhbnQobm9kZUluZGV4KSkpOwogICAgIH0KIAog
ICAgIC8vIEhlbHBlciBmdW5jdGlvbnMgdG8gZW5hYmxlIGNvZGUgc2hhcmluZyBpbiBpbXBsZW1l
bnRhdGlvbnMgb2YgYml0L3NoaWZ0IG9wcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHSklUQ29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCShyZXZpc2lvbiA4OTQ1MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3
ICs0NSw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmZpbGxOdW1lcmljVG9Eb3VibGUoTm8KICAgICBO
b2RlJiBub2RlID0gZ3JhcGgoKVtub2RlSW5kZXhdOwogCiAgICAgaWYgKG5vZGUuaXNDb25zdGFu
dCgpKSB7Ci0gICAgICAgIEFTU0VSVChub2RlLm9wID09IERvdWJsZUNvbnN0YW50KTsKKyAgICAg
ICAgQVNTRVJUKGlzRG91YmxlQ29uc3RhbnQobm9kZUluZGV4KSk7CiAgICAgICAgIG1vdmUoTWFj
cm9Bc3NlbWJsZXI6OkltbVB0cihyZWludGVycHJldF9jYXN0PHZvaWQqPihyZWludGVycHJldERv
dWJsZVRvSW50cHRyKHZhbHVlT2ZEb3VibGVDb25zdGFudChub2RlSW5kZXgpKSkpLCB0ZW1wb3Jh
cnkpOwogICAgICAgICBtb3ZlUHRyVG9Eb3VibGUodGVtcG9yYXJ5LCBmcHIpOwogICAgIH0gZWxz
ZSB7CkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgSklUQ29tcGlsZXI6OmZpbGxJbnQzMlRvSW50ZWdl
cihOb2QKICAgICBOb2RlJiBub2RlID0gZ3JhcGgoKVtub2RlSW5kZXhdOwogCiAgICAgaWYgKG5v
ZGUuaXNDb25zdGFudCgpKSB7Ci0gICAgICAgIEFTU0VSVChub2RlLm9wID09IEludDMyQ29uc3Rh
bnQpOworICAgICAgICBBU1NFUlQoaXNJbnQzMkNvbnN0YW50KG5vZGVJbmRleCkpOwogICAgICAg
ICBtb3ZlKE1hY3JvQXNzZW1ibGVyOjpJbW0zMih2YWx1ZU9mSW50MzJDb25zdGFudChub2RlSW5k
ZXgpKSwgZ3ByKTsKICAgICB9IGVsc2UgewogI2lmIERGR19KSVRfQVNTRVJUCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvbXBpbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb21waWxlci5oCShyZXZpc2lvbiA4OTQ1MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29tcGlsZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTc5LDM1ICsxNzksMzQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJu
IGdyYXBoKClbbm9kZUluZGV4XS5pc0NvbnN0YW50KCk7CiAgICAgfQorICAgIGJvb2wgaXNKU0Nv
bnN0YW50KE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gZ3JhcGgo
KVtub2RlSW5kZXhdLmlzQ29uc3RhbnQoKTsKKyAgICB9CiAgICAgYm9vbCBpc0ludDMyQ29uc3Rh
bnQoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiBncmFwaCgpW25v
ZGVJbmRleF0ub3AgPT0gSW50MzJDb25zdGFudDsKKyAgICAgICAgcmV0dXJuIGlzSlNDb25zdGFu
dChub2RlSW5kZXgpICYmIHZhbHVlT2ZKU0NvbnN0YW50KG5vZGVJbmRleCkuaXNJbnQzMigpOwog
ICAgIH0KICAgICBib29sIGlzRG91YmxlQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBncmFwaCgpW25vZGVJbmRleF0ub3AgPT0gRG91YmxlQ29uc3Rh
bnQ7CisgICAgICAgIHJldHVybiBpc0pTQ29uc3RhbnQobm9kZUluZGV4KSAmJiB2YWx1ZU9mSlND
b25zdGFudChub2RlSW5kZXgpLmlzTnVtYmVyKCk7CiAgICAgfQotICAgIGJvb2wgaXNKU0NvbnN0
YW50KE5vZGVJbmRleCBub2RlSW5kZXgpCisgICAgLy8gSGVscGVyIG1ldGhvZHMgZ2V0IGNvbnN0
YW50IHZhbHVlcyBmcm9tIG5vZGVzLgorICAgIEpTVmFsdWUgdmFsdWVPZkpTQ29uc3RhbnQoTm9k
ZUluZGV4IG5vZGVJbmRleCkKICAgICB7Ci0gICAgICAgIHJldHVybiBncmFwaCgpW25vZGVJbmRl
eF0ub3AgPT0gSlNDb25zdGFudDsKKyAgICAgICAgQVNTRVJUKGlzSlNDb25zdGFudChub2RlSW5k
ZXgpKTsKKyAgICAgICAgdW5zaWduZWQgY29uc3RhbnRJbmRleCA9IGdyYXBoKClbbm9kZUluZGV4
XS5jb25zdGFudE51bWJlcigpOworICAgICAgICByZXR1cm4gY29kZUJsb2NrKCktPmNvbnN0YW50
UmVnaXN0ZXIoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggKyBjb25zdGFudEluZGV4KS5nZXQo
KTsKICAgICB9Ci0KLSAgICAvLyBIZWxwZXIgbWV0aG9kcyBnZXQgY29uc3RhbnQgdmFsdWVzIGZy
b20gbm9kZXMuCiAgICAgaW50MzJfdCB2YWx1ZU9mSW50MzJDb25zdGFudChOb2RlSW5kZXggbm9k
ZUluZGV4KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzSW50MzJDb25zdGFudChub2RlSW5kZXgp
KTsKLSAgICAgICAgcmV0dXJuIGdyYXBoKClbbm9kZUluZGV4XS5pbnQzMkNvbnN0YW50KCk7Cisg
ICAgICAgIHJldHVybiB2YWx1ZU9mSlNDb25zdGFudChub2RlSW5kZXgpLmFzSW50MzIoKTsKICAg
ICB9CiAgICAgZG91YmxlIHZhbHVlT2ZEb3VibGVDb25zdGFudChOb2RlSW5kZXggbm9kZUluZGV4
KQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzRG91YmxlQ29uc3RhbnQobm9kZUluZGV4KSk7Ci0g
ICAgICAgIHJldHVybiBncmFwaCgpW25vZGVJbmRleF0ubnVtZXJpY0NvbnN0YW50KCk7Ci0gICAg
fQotICAgIEpTVmFsdWUgdmFsdWVPZkpTQ29uc3RhbnQoTm9kZUluZGV4IG5vZGVJbmRleCkKLSAg
ICB7Ci0gICAgICAgIEFTU0VSVChpc0pTQ29uc3RhbnQobm9kZUluZGV4KSk7Ci0gICAgICAgIHVu
c2lnbmVkIGNvbnN0YW50SW5kZXggPSBncmFwaCgpW25vZGVJbmRleF0uY29uc3RhbnROdW1iZXIo
KTsKLSAgICAgICAgcmV0dXJuIGNvZGVCbG9jaygpLT5jb25zdGFudFJlZ2lzdGVyKEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4ICsgY29uc3RhbnRJbmRleCkuZ2V0KCk7CisgICAgICAgIHJldHVy
biB2YWx1ZU9mSlNDb25zdGFudChub2RlSW5kZXgpLnVuY2hlY2tlZEdldE51bWJlcigpOwogICAg
IH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgSklUIGdlbmVyYXRlIGR5bmFtaWMsIGRlYnVnLW9u
bHkgY2hlY2tzIC0gYWtpbiB0byBBU1NFUlRzLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHJldmlzaW9uIDg5NDUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDkgKzg1LDcgQEAgdHlwZWRlZiB1aW50MzJf
dCBFeGNlcHRpb25JbmZvOwogLy8gVGhpcyBtYWNybyBkZWZpbmVzIGEgc2V0IG9mIGluZm9ybWF0
aW9uIGFib3V0IGFsbCBrbm93biBub2RlIHR5cGVzLCB1c2VkIHRvIHBvcHVsYXRlIE5vZGVJZCwg
Tm9kZVR5cGUgYmVsb3cuCiAjZGVmaW5lIEZPUl9FQUNIX0RGR19PUChtYWNybykgXAogICAgIC8q
IE5vZGVzIGZvciBjb25zdGFudHMuICovXAotICAgIG1hY3JvKEpTQ29uc3RhbnQsIE5vZGVSZXN1
bHRKUyB8IE5vZGVJc0NvbnN0YW50KSBcCi0gICAgbWFjcm8oSW50MzJDb25zdGFudCwgTm9kZVJl
c3VsdEpTIHwgTm9kZUlzQ29uc3RhbnQpIFwKLSAgICBtYWNybyhEb3VibGVDb25zdGFudCwgTm9k
ZVJlc3VsdEpTIHwgTm9kZUlzQ29uc3RhbnQpIFwKKyAgICBtYWNybyhKU0NvbnN0YW50LCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBtYWNybyhDb252ZXJ0VGhpcywgTm9kZVJlc3VsdEpTKSBcCiAgICAg
XAogICAgIC8qIE5vZGVzIGZvciBsb2NhbCB2YXJpYWJsZSBhY2Nlc3MuICovXApAQCAtMTAzLDcg
KzEwMSw2IEBAIHR5cGVkZWYgdWludDMyX3QgRXhjZXB0aW9uSW5mbzsKICAgICBtYWNybyhCaXRS
U2hpZnQsIE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKEJpdFVSU2hpZnQsIE5vZGVSZXN1
bHRJbnQzMikgXAogICAgIC8qIEJpdHdpc2Ugb3BlcmF0b3JzIGNhbGwgVG9JbnQzMiBvbiB0aGVp
ciBvcGVyYW5kcy4gKi9cCi0gICAgbWFjcm8oTnVtYmVyVG9JbnQzMiwgTm9kZVJlc3VsdEludDMy
KSBcCiAgICAgbWFjcm8oVmFsdWVUb0ludDMyLCBOb2RlUmVzdWx0SW50MzIgfCBOb2RlTXVzdEdl
bmVyYXRlKSBcCiAgICAgLyogVXNlZCB0byBib3ggdGhlIHJlc3VsdCBvZiBVUlNoaWZ0IG5vZGVz
IChyZXN1bHQgaGFzIHJhbmdlIDAuLjJeMzItMSkuICovXAogICAgIG1hY3JvKFVJbnQzMlRvTnVt
YmVyLCBOb2RlUmVzdWx0RG91YmxlKSBcCkBAIC0xMTUsNyArMTEyLDYgQEAgdHlwZWRlZiB1aW50
MzJfdCBFeGNlcHRpb25JbmZvOwogICAgIG1hY3JvKEFyaXRoRGl2LCBOb2RlUmVzdWx0RG91Ymxl
KSBcCiAgICAgbWFjcm8oQXJpdGhNb2QsIE5vZGVSZXN1bHREb3VibGUpIFwKICAgICAvKiBBcml0
aG1ldGljIG9wZXJhdG9ycyBjYWxsIFRvTnVtYmVyIG9uIHRoZWlyIG9wZXJhbmRzLiAqL1wKLSAg
ICBtYWNybyhJbnQzMlRvTnVtYmVyLCBOb2RlUmVzdWx0RG91YmxlKSBcCiAgICAgbWFjcm8oVmFs
dWVUb051bWJlciwgTm9kZVJlc3VsdERvdWJsZSB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBc
CiAgICAgLyogQWRkIG9mIHZhbHVlcyBtYXkgZWl0aGVyIGJlIGFyaXRobWV0aWMsIG9yIHJlc3Vs
dCBpbiBzdHJpbmcgY29uY2F0ZW5hdGlvbi4gKi9cCkBAIC0yMTEsOCArMjA3LDggQEAgc3RydWN0
IE5vZGUgewogICAgICAgICAsIG1fdmlydHVhbFJlZ2lzdGVyKEludmFsaWRWaXJ0dWFsUmVnaXN0
ZXIpCiAgICAgICAgICwgbV9yZWZDb3VudCgwKQogICAgICAgICAsIG1fb3BJbmZvKGltbTEubV92
YWx1ZSkKKyAgICAgICAgLCBtX29wSW5mbzIoaW1tMi5tX3ZhbHVlKQogICAgIHsKLSAgICAgICAg
bV9jb25zdGFudFZhbHVlLm9wSW5mbzIgPSBpbW0yLm1fdmFsdWU7CiAgICAgfQogCiAgICAgYm9v
bCBtdXN0R2VuZXJhdGUoKQpAQCAtMjIyLDcgKzIxOCw3IEBAIHN0cnVjdCBOb2RlIHsKIAogICAg
IGJvb2wgaXNDb25zdGFudCgpCiAgICAgewotICAgICAgICByZXR1cm4gb3AgJiBOb2RlSXNDb25z
dGFudDsKKyAgICAgICAgcmV0dXJuIG9wID09IEpTQ29uc3RhbnQ7CiAgICAgfQogCiAgICAgdW5z
aWduZWQgY29uc3RhbnROdW1iZXIoKQpAQCAtMjkyLDMwICsyODgsNiBAQCBzdHJ1Y3QgTm9kZSB7
CiAgICAgICAgIHJldHVybiAhaGFzSlNSZXN1bHQoKTsKICAgICB9CiAKLSAgICBpbnQzMl90IGlu
dDMyQ29uc3RhbnQoKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG9wID09IEludDMyQ29uc3RhbnQp
OwotICAgICAgICByZXR1cm4gbV9jb25zdGFudFZhbHVlLmFzSW50MzI7Ci0gICAgfQotCi0gICAg
dm9pZCBzZXRJbnQzMkNvbnN0YW50KGludDMyX3QgdmFsdWUpCi0gICAgewotICAgICAgICBBU1NF
UlQob3AgPT0gSW50MzJDb25zdGFudCk7Ci0gICAgICAgIG1fY29uc3RhbnRWYWx1ZS5hc0ludDMy
ID0gdmFsdWU7Ci0gICAgfQotCi0gICAgZG91YmxlIG51bWVyaWNDb25zdGFudCgpCi0gICAgewot
ICAgICAgICBBU1NFUlQob3AgPT0gRG91YmxlQ29uc3RhbnQpOwotICAgICAgICByZXR1cm4gbV9j
b25zdGFudFZhbHVlLmFzRG91YmxlOwotICAgIH0KLQotICAgIHZvaWQgc2V0RG91YmxlQ29uc3Rh
bnQoZG91YmxlIHZhbHVlKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG9wID09IERvdWJsZUNvbnN0
YW50KTsKLSAgICAgICAgbV9jb25zdGFudFZhbHVlLmFzRG91YmxlID0gdmFsdWU7Ci0gICAgfQot
CiAgICAgYm9vbCBpc0p1bXAoKQogICAgIHsKICAgICAgICAgcmV0dXJuIG9wICYgTm9kZUlzSnVt
cDsKQEAgLTM0MCw3ICszMTIsNyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgdW5zaWduZWQgbm90VGFr
ZW5CeXRlY29kZU9mZnNldCgpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNCcmFuY2goKSk7Ci0g
ICAgICAgIHJldHVybiBtX2NvbnN0YW50VmFsdWUub3BJbmZvMjsKKyAgICAgICAgcmV0dXJuIG1f
b3BJbmZvMjsKICAgICB9CiAKICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyKCkK
QEAgLTM5MCwxNCArMzYyLDggQEAgcHJpdmF0ZToKICAgICBWaXJ0dWFsUmVnaXN0ZXIgbV92aXJ0
dWFsUmVnaXN0ZXI7CiAgICAgLy8gVGhlIG51bWJlciBvZiB1c2VzIG9mIHRoZSByZXN1bHQgb2Yg
dGhpcyBvcGVyYXRpb24gKCsxIGZvciAnbXVzdCBnZW5lcmF0ZScgbm9kZXMsIHdoaWNoIGhhdmUg
c2lkZS1lZmZlY3RzKS4KICAgICB1bnNpZ25lZCBtX3JlZkNvdW50OwotICAgIC8vIEFuIGltbWVk
aWF0ZSB2YWx1ZSwgYWNjZXNzZXMgdHlwZS1jaGVja2VkIHZpYSBhY2Nlc3NvcnMgYWJvdmUuCi0g
ICAgdW5zaWduZWQgbV9vcEluZm87Ci0gICAgLy8gVGhlIHZhbHVlIG9mIGFuIGludDMyL2RvdWJs
ZSBjb25zdGFudC4KLSAgICB1bmlvbiB7Ci0gICAgICAgIGludDMyX3QgYXNJbnQzMjsKLSAgICAg
ICAgZG91YmxlIGFzRG91YmxlOwotICAgICAgICB1bnNpZ25lZCBvcEluZm8yOwotICAgIH0gbV9j
b25zdGFudFZhbHVlOworICAgIC8vIEltbWVkaWF0ZSB2YWx1ZXMsIGFjY2Vzc2VzIHR5cGUtY2hl
Y2tlZCB2aWEgYWNjZXNzb3JzIGFib3ZlLgorICAgIHVuc2lnbmVkIG1fb3BJbmZvLCBtX29wSW5m
bzI7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24g
ODk0NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vblNwZWN1bGF0aXZlSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3LDYgKzEyNyw5IEBAIHZvaWQgTm9uU3BlY3VsYXRp
dmVKSVQ6Om51bWJlclRvSW50MzIoRlAKIAogYm9vbCBOb25TcGVjdWxhdGl2ZUpJVDo6aXNLbm93
bkludGVnZXIoTm9kZUluZGV4IG5vZGVJbmRleCkKIHsKKyAgICBpZiAoaXNJbnQzMkNvbnN0YW50
KG5vZGVJbmRleCkpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgR2VuZXJhdGlvbkluZm8m
IGluZm8gPSBtX2dlbmVyYXRpb25JbmZvW21faml0LmdyYXBoKClbbm9kZUluZGV4XS52aXJ0dWFs
UmVnaXN0ZXIoKV07CiAKICAgICBEYXRhRm9ybWF0IHJlZ2lzdGVyRm9ybWF0ID0gaW5mby5yZWdp
c3RlckZvcm1hdCgpOwpAQCAtMTM4LDExICsxNDEsMTQgQEAgYm9vbCBOb25TcGVjdWxhdGl2ZUpJ
VDo6aXNLbm93bkludGVnZXIoTgogICAgICAgICByZXR1cm4gKHNwaWxsRm9ybWF0IHwgRGF0YUZv
cm1hdEpTKSA9PSBEYXRhRm9ybWF0SlNJbnRlZ2VyOwogCiAgICAgQVNTRVJUKGlzQ29uc3RhbnQo
bm9kZUluZGV4KSk7Ci0gICAgcmV0dXJuIGlzSW50MzJDb25zdGFudChub2RlSW5kZXgpOworICAg
IHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBOb25TcGVjdWxhdGl2ZUpJVDo6aXNLbm93bk51bWVy
aWMoTm9kZUluZGV4IG5vZGVJbmRleCkKIHsKKyAgICBpZiAoaXNJbnQzMkNvbnN0YW50KG5vZGVJ
bmRleCkgfHwgaXNEb3VibGVDb25zdGFudChub2RlSW5kZXgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKwogICAgIEdlbmVyYXRpb25JbmZvJiBpbmZvID0gbV9nZW5lcmF0aW9uSW5mb1ttX2ppdC5n
cmFwaCgpW25vZGVJbmRleF0udmlydHVhbFJlZ2lzdGVyKCldOwogCiAgICAgRGF0YUZvcm1hdCBy
ZWdpc3RlckZvcm1hdCA9IGluZm8ucmVnaXN0ZXJGb3JtYXQoKTsKQEAgLTE1Niw3ICsxNjIsNyBA
QCBib29sIE5vblNwZWN1bGF0aXZlSklUOjppc0tub3duTnVtZXJpYyhOCiAgICAgICAgICAgICB8
fCAoc3BpbGxGb3JtYXQgfCBEYXRhRm9ybWF0SlMpID09IERhdGFGb3JtYXRKU0RvdWJsZTsKIAog
ICAgIEFTU0VSVChpc0NvbnN0YW50KG5vZGVJbmRleCkpOwotICAgIHJldHVybiBpc0ludDMyQ29u
c3RhbnQobm9kZUluZGV4KSB8fCBpc0RvdWJsZUNvbnN0YW50KG5vZGVJbmRleCk7CisgICAgcmV0
dXJuIGZhbHNlOwogfQogCiB2b2lkIE5vblNwZWN1bGF0aXZlSklUOjpjb21waWxlKFNwZWN1bGF0
aW9uQ2hlY2tJbmRleEl0ZXJhdG9yJiBjaGVja0l0ZXJhdG9yLCBOb2RlJiBub2RlKQpAQCAtMTg0
LDggKzE5MCw2IEBAIHZvaWQgTm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoU3BlY3VsYXQKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBJbnQzMkNvbnN0YW50OgotICAgIGNhc2Ug
RG91YmxlQ29uc3RhbnQ6CiAgICAgY2FzZSBKU0NvbnN0YW50OgogICAgICAgICBpbml0Q29uc3Rh
bnRJbmZvKG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkBAIC0yNzksMTUgKzI4Myw2
IEBAIHZvaWQgTm9uU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoU3BlY3VsYXQKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgY2FzZSBJbnQzMlRvTnVtYmVyOiB7Ci0gICAgICAgIEludGVnZXJP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSk7Ci0gICAgICAgIEZQUlRlbXBvcmFyeSByZXN1
bHQodGhpcyk7Ci0gICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKG9wMS5ncHIoKSwg
cmVzdWx0LmZwcigpKTsKLSAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbV9jb21w
aWxlSW5kZXgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIE51bWJlclRvSW50
MzI6CiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6IHsKICAgICAgICAgQVNTRVJUKCFpc0ludDMyQ29u
c3RhbnQobm9kZS5jaGlsZDEpKTsKIApAQCAtMzA3LDkgKzMwMiw2IEBAIHZvaWQgTm9uU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoU3BlY3VsYXQKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKLSAgICAgICAgLy8gV2Ugc2hvdWxkIGhhdmUgaGFuZGxlZCB0aGlzIHZpYSBpc0tub3duSW50
ZWdlciwgb3IgaXNLbm93bk51bWVyaWMhCi0gICAgICAgIEFTU0VSVChvcCAhPSBOdW1iZXJUb0lu
dDMyKTsKLQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEpOwog
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CiAgICAgICAgIHZhbHVlVG9J
bnQzMihvcDEsIHJlc3VsdC5ncHIoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gODk0NTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDksNyArNDksNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJ
CiAgICAgICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludGVnZXI7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faml0
Lm1vdmUoY29uc3RhbnRBc0pTVmFsdWVBc0ltbVB0cihub2RlSW5kZXgpLCBncHIpOworICAgICAg
ICAgICAgbV9qaXQubW92ZSh2YWx1ZU9mSlNDb25zdGFudEFzSW1tUHRyKG5vZGVJbmRleCksIGdw
cik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBEYXRhRm9ybWF0IHNwaWxsRm9ybWF0
ID0gaW5mby5zcGlsbEZvcm1hdCgpOwogICAgICAgICAgICAgQVNTRVJUKHNwaWxsRm9ybWF0ICYg
RGF0YUZvcm1hdEpTKTsKQEAgLTE4NSw3ICsxODUsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgICAgIEdQUlJlZyBncHIgPSBhbGxvY2F0ZSgpOwogCiAg
ICAgICAgIGlmIChub2RlLmlzQ29uc3RhbnQoKSkgewotICAgICAgICAgICAgSlNWYWx1ZSBqc1Zh
bHVlID0gY29uc3RhbnRBc0pTVmFsdWUobm9kZUluZGV4KTsKKyAgICAgICAgICAgIEpTVmFsdWUg
anNWYWx1ZSA9IHZhbHVlT2ZKU0NvbnN0YW50KG5vZGVJbmRleCk7CiAgICAgICAgICAgICBpZiAo
anNWYWx1ZS5pc0NlbGwoKSkgewogICAgICAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4oZ3ByLCB2
aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJDb25zdGFudCk7CiAgICAgICAgICAgICAgICAgbV9q
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihqc1ZhbHVlLmFzQ2VsbCgpKSwg
Z3ByKTsKQEAgLTI0OCwxMiArMjQ4LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
ZWVwSG9sZUludGUKICAgICAgICAgbm90VGFrZW4gPSB0bXA7CiAgICAgfQogCi0gICAgaW50MzJf
dCBpbW07Ci0gICAgaWYgKGlzSlNDb25zdGFudFdpdGhJbnQzMlZhbHVlKG5vZGUuY2hpbGQxLCBp
bW0pKSB7CisgICAgaWYgKGlzSW50MzJDb25zdGFudChub2RlLmNoaWxkMSkpIHsKKyAgICAgICAg
aW50MzJfdCBpbW0gPSB2YWx1ZU9mSW50MzJDb25zdGFudChub2RlLmNoaWxkMSk7CiAgICAgICAg
IFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMih0aGlzLCBub2RlLmNoaWxkMik7CiAgICAgICAg
IGFkZEJyYW5jaChtX2ppdC5icmFuY2gzMihjb25kaXRpb24sIEpJVENvbXBpbGVyOjpJbW0zMihp
bW0pLCBvcDIuZ3ByKCkpLCB0YWtlbik7Ci0gICAgfSBlbHNlIGlmIChpc0pTQ29uc3RhbnRXaXRo
SW50MzJWYWx1ZShub2RlLmNoaWxkMiwgaW1tKSkgeworICAgIH0gZWxzZSBpZiAoaXNJbnQzMkNv
bnN0YW50KG5vZGUuY2hpbGQyKSkgewogICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBv
cDEodGhpcywgbm9kZS5jaGlsZDEpOworICAgICAgICBpbnQzMl90IGltbSA9IHZhbHVlT2ZJbnQz
MkNvbnN0YW50KG5vZGUuY2hpbGQyKTsKICAgICAgICAgYWRkQnJhbmNoKG1faml0LmJyYW5jaDMy
KGNvbmRpdGlvbiwgb3AxLmdwcigpLCBKSVRDb21waWxlcjo6SW1tMzIoaW1tKSksIHRha2VuKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywg
bm9kZS5jaGlsZDEpOwpAQCAtMzAyLDggKzMwMyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICBOb2RlVHlwZSBvcCA9IG5vZGUub3A7CiAKICAgICBzd2l0
Y2ggKG9wKSB7Ci0gICAgY2FzZSBJbnQzMkNvbnN0YW50OgotICAgIGNhc2UgRG91YmxlQ29uc3Rh
bnQ6CiAgICAgY2FzZSBKU0NvbnN0YW50OgogICAgICAgICBpbml0Q29uc3RhbnRJbmZvKG1fY29t
cGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkBAIC00MjIsMjIgKzQyMSw2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog
Ci0gICAgY2FzZSBOdW1iZXJUb0ludDMyOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVy
YW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQo
dGhpcywgb3AxKTsKLSAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7
Ci0gICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgb3Ax
LmZvcm1hdCgpKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBJbnQzMlRvTnVt
YmVyOiB7Ci0gICAgICAgIFNwZWN1bGF0ZUludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNo
aWxkMSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKLSAgICAgICAg
bV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIGludGVnZXJSZXN1
bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgb3AxLmZvcm1hdCgpKTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotCiAgICAgY2FzZSBWYWx1ZVRvSW50MzI6IHsKICAgICAgICAgU3BlY3Vs
YXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKTsKICAgICAgICAgR1BSVGVt
cG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwpAQCAtNDU2LDggKzQzOSw4IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKIAogICAgIGNhc2UgVmFsdWVBZGQ6CiAgICAg
Y2FzZSBBcml0aEFkZDogewotICAgICAgICBpbnQzMl90IGltbTE7Ci0gICAgICAgIGlmIChpc0Rv
dWJsZUNvbnN0YW50V2l0aEludDMyVmFsdWUobm9kZS5jaGlsZDEsIGltbTEpKSB7CisgICAgICAg
IGlmIChpc0ludDMyQ29uc3RhbnQobm9kZS5jaGlsZDEpKSB7CisgICAgICAgICAgICBpbnQzMl90
IGltbTEgPSB2YWx1ZU9mSW50MzJDb25zdGFudChub2RlLmNoaWxkMSk7CiAgICAgICAgICAgICBT
cGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIpOwogICAgICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKIApAQCAtNDY3LDkgKzQ1MCw5IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgaW50MzJfdCBpbW0yOwotICAgICAgICBp
ZiAoaXNEb3VibGVDb25zdGFudFdpdGhJbnQzMlZhbHVlKG5vZGUuY2hpbGQyLCBpbW0yKSkgewor
ICAgICAgICBpZiAoaXNJbnQzMkNvbnN0YW50KG5vZGUuY2hpbGQyKSkgewogICAgICAgICAgICAg
U3BlY3VsYXRlSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKTsKKyAgICAgICAg
ICAgIGludDMyX3QgaW1tMiA9IHZhbHVlT2ZJbnQzMkNvbnN0YW50KG5vZGUuY2hpbGQyKTsKICAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAKICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBv
cDEuZ3ByKCksIEltbTMyKGltbTIpLCByZXN1bHQuZ3ByKCkpKTsKQEAgLTQ5OSw5ICs0ODIsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgfQogCiAgICAg
Y2FzZSBBcml0aFN1YjogewotICAgICAgICBpbnQzMl90IGltbTI7Ci0gICAgICAgIGlmIChpc0Rv
dWJsZUNvbnN0YW50V2l0aEludDMyVmFsdWUobm9kZS5jaGlsZDIsIGltbTIpKSB7CisgICAgICAg
IGlmIChpc0ludDMyQ29uc3RhbnQobm9kZS5jaGlsZDIpKSB7CiAgICAgICAgICAgICBTcGVjdWxh
dGVJbnRlZ2VyT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEpOworICAgICAgICAgICAgaW50
MzJfdCBpbW0yID0gdmFsdWVPZkludDMyQ29uc3RhbnQobm9kZS5jaGlsZDIpOwogICAgICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKIAogICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhtX2ppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIo
KSwgSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIoKSkpOwo=
</data>
<flag name="review"
          id="92469"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>