<?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>69164</bug_id>
          
          <creation_ts>2011-09-30 12:49:58 -0700</creation_ts>
          <short_desc>Merge some more of DFGSpeculativeJIT 32_64/64</short_desc>
          <delta_ts>2011-09-30 13:01:04 -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="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>476260</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-30 12:49:58 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476262</commentid>
    <comment_count>1</comment_count>
      <attachid>109330</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-30 12:52:30 -0700</bug_when>
    <thetext>Created attachment 109330
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>476268</commentid>
    <comment_count>2</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-09-30 13:01:04 -0700</bug_when>
    <thetext>Fixed in r96415.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>109330</attachid>
            <date>2011-09-30 12:52:30 -0700</date>
            <delta_ts>2011-09-30 12:55:43 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>69164.patch</filename>
            <type>text/plain</type>
            <size>29972</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTY0MTQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTEtMDktMzAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIE1lcmdlIHNvbWUgbW9yZSBvZiBERkdTcGVjdWxhdGl2ZUpJVCAzMl82NC82NAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjkxNjQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGRmZy9ERkdK
SVRDb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IzMl82
NC5jcHA6CisgICAgICAgICogZGZnL0RGR0pJVENvZGVHZW5lcmF0b3I2NC5jcHA6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlQnJhbmNoKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJbnRlcm5h
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdCk6CisgICAgICAgIChK
U0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGFyZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFk
ZCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVMb2dpY2FsTm90
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisKIDIwMTEt
MDktMzAgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBZGQgZ2V0Q2FsbERhdGEgdG8gTWV0aG9kVGFibGUgaW4gQ2xhc3NJbmZvCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IzMl82NC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yMzJf
NjQuY3BwCShyZXZpc2lvbiA5NjQxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SklUQ29kZUdlbmVyYXRvcjMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU1NCwzOCArMTU1
NCw2IEBAIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6ZW1pdEJyYW5jaChOb2RlJiAKICAgICBub1Jl
c3VsdChtX2NvbXBpbGVJbmRleCwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKIH0KIAot
dm9pZCBKSVRDb2RlR2VuZXJhdG9yOjpub25TcGVjdWxhdGl2ZUxvZ2ljYWxOb3QoTm9kZSYgbm9k
ZSkKLXsKLSAgICBKU1ZhbHVlT3BlcmFuZCBhcmcxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAg
IEdQUlRlbXBvcmFyeSByZXN1bHRUYWcodGhpcywgYXJnMSk7Ci0gICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdFBheWxvYWQodGhpcywgYXJnMSwgZmFsc2UpOwotICAgIEdQUlJlZyBhcmcxVGFnR1BSID0g
YXJnMS50YWdHUFIoKTsKLSAgICBHUFJSZWcgYXJnMVBheWxvYWRHUFIgPSBhcmcxLnBheWxvYWRH
UFIoKTsKLSAgICBHUFJSZWcgcmVzdWx0VGFnR1BSID0gcmVzdWx0VGFnLmdwcigpOwotICAgIEdQ
UlJlZyByZXN1bHRQYXlsb2FkR1BSID0gcmVzdWx0UGF5bG9hZC5ncHIoKTsKLSAgICAgICAgCi0g
ICAgYXJnMS51c2UoKTsKLQotICAgIEpJVENvbXBpbGVyOjpKdW1wIGZhc3RDYXNlID0gbV9qaXQu
YnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBhcmcxVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6Qm9vbGVhblRhZykpOwotICAgICAgICAKLSAgICBzaWxlbnRTcGlsbEFsbFJlZ2lzdGVy
cyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwotICAgIG1faml0LnB1c2goYXJnMVRh
Z0dQUik7Ci0gICAgbV9qaXQucHVzaChhcmcxUGF5bG9hZEdQUik7Ci0gICAgbV9qaXQucHVzaChH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rlcik7Ci0gICAgYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhkZmdDb252ZXJ0SlNWYWx1ZVRvQm9vbGVhbik7Ci0gICAgbV9qaXQubW92ZShHUFJJbmZv
OjpyZXR1cm5WYWx1ZUdQUiwgcmVzdWx0UGF5bG9hZEdQUik7Ci0gICAgc2lsZW50RmlsbEFsbFJl
Z2lzdGVycyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpOwotICAgIEpJVENvbXBpbGVy
OjpKdW1wIGRvTm90ID0gbV9qaXQuanVtcCgpOwotICAgICAgICAKLSAgICBmYXN0Q2FzZS5saW5r
KCZtX2ppdCk7Ci0gICAgbV9qaXQubW92ZShhcmcxUGF5bG9hZEdQUiwgcmVzdWx0UGF5bG9hZEdQ
Uik7Ci0KLSAgICBkb05vdC5saW5rKCZtX2ppdCk7Ci0gICAgbV9qaXQueG9yMzIoVHJ1c3RlZElt
bTMyKDEpLCByZXN1bHRQYXlsb2FkR1BSKTsKLSAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpCb29sZWFuVGFnKSwgcmVzdWx0VGFnR1BSKTsKLSAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRK
U0Jvb2xlYW4sIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Ci19Ci0KIHZvaWQgSklUQ29k
ZUdlbmVyYXRvcjo6ZW1pdENhbGwoTm9kZSYgbm9kZSkKIHsKICAgICBQX0RGR09wZXJhdGlvbl9F
IHNsb3dDYWxsRnVuY3Rpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGVHZW5lcmF0b3I2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdKSVRDb2RlR2VuZXJhdG9yNjQuY3BwCShyZXZpc2lvbiA5NjQxNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHSklUQ29kZUdlbmVyYXRvcjY0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUyNSwzMyArMTUyNSw2IEBAIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6ZW1pdEJy
YW5jaChOb2RlJiAKICAgICB9CiB9CiAKLXZvaWQgSklUQ29kZUdlbmVyYXRvcjo6bm9uU3BlY3Vs
YXRpdmVMb2dpY2FsTm90KE5vZGUmIG5vZGUpCi17Ci0gICAgSlNWYWx1ZU9wZXJhbmQgYXJnMSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKLSAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwotICAg
IAotICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKLSAgICBHUFJSZWcgcmVzdWx0R1BS
ID0gcmVzdWx0LmdwcigpOwotICAgIAotICAgIGFyZzEudXNlKCk7Ci0gICAgCi0gICAgbV9qaXQu
bW92ZShhcmcxR1BSLCByZXN1bHRHUFIpOwotICAgIG1faml0LnhvclB0cihUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZXN1bHRHUFIpOwotICAgIEpJVENv
bXBpbGVyOjpKdW1wIGZhc3RDYXNlID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6
WmVybywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSk7
Ci0gICAgCi0gICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICBtX2pp
dC5tb3ZlKGFyZzFHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7Ci0gICAgbV9qaXQubW92ZShH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKLSAgICBh
cHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGRmZ0NvbnZlcnRKU1ZhbHVlVG9Cb29sZWFuKTsK
LSAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHRHUFIpOwotICAg
IHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKLSAgICAKLSAgICBmYXN0Q2FzZS5s
aW5rKCZtX2ppdCk7Ci0gICAgCi0gICAgbV9qaXQueG9yUHRyKFRydXN0ZWRJbW0zMihzdGF0aWNf
Y2FzdDxpbnQzMl90PihWYWx1ZVRydWUpKSwgcmVzdWx0R1BSKTsKLSAgICBqc1ZhbHVlUmVzdWx0
KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jvb2xlYW4sIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7Ci19Ci0KIHZvaWQgSklUQ29kZUdlbmVyYXRvcjo6ZW1pdENh
bGwoTm9kZSYgbm9kZSkKIHsKICAgICBQX0RGR09wZXJhdGlvbl9FIHNsb3dDYWxsRnVuY3Rpb247
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJVENvZGVHZW5lcmF0
b3IuaAkocmV2aXNpb24gOTY0MTQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0pJ
VENvZGVHZW5lcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtNzc5LDggKzc3OSw2IEBAIHByb3Rl
Y3RlZDoKICAgICAKICAgICB2b2lkIGVtaXRCcmFuY2goTm9kZSYpOwogICAgIAotICAgIHZvaWQg
bm9uU3BlY3VsYXRpdmVMb2dpY2FsTm90KE5vZGUmKTsKLSAgICAKICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyBhZGRyZXNzT2ZDYWxsRGF0YShpbnQgaWR4KQogICAgIHsKICAgICAgICAgcmV0
dXJuIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCAo
bV9qaXQuY29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzICsgaWR4KSAqIHN0YXRpY19j
YXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiA5NjQx
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVJbnRJCiAgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKICAgICBjYXNl
IERhdGFGb3JtYXRCb29sZWFuOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTRG91YmxlOgotICAgIGNh
c2UgRGF0YUZvcm1hdEpTQ2VsbDogCisgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAgIGNh
c2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogewogICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4
ZWN1dGlvbigpOwogICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50ZWdlcjsKQEAg
LTM3MywzNSArMzczLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFs
aQogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBjb21wYXJlIGlzIGZ1c2VkIHdpdGggYSBzdWJzZXF1
ZW50IGJyYW5jaC4KIGJvb2wgU3BlY3VsYXRpdmVKSVQ6OmNvbXBhcmUoTm9kZSYgbm9kZSwgTWFj
cm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxl
cjo6RG91YmxlQ29uZGl0aW9uIGRvdWJsZUNvbmRpdGlvbiwgWl9ERkdPcGVyYXRpb25fRUpKIG9w
ZXJhdGlvbikKIHsKLSAgICAvLyBGdXNlZCBjb21wYXJlICYgYnJhbmNoLgotICAgIE5vZGVJbmRl
eCBicmFuY2hOb2RlSW5kZXggPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOwotICAgIGlmIChicmFu
Y2hOb2RlSW5kZXggIT0gTm9Ob2RlKSB7Ci0gICAgICAgIC8vIGRldGVjdFBlZXBIb2xlQnJhbmNo
IGN1cnJlbnRseSBvbmx5IHBlcm1pdHMgdGhlIGJyYW5jaCB0byBiZSB0aGUgdmVyeSBuZXh0IG5v
ZGUsCi0gICAgICAgIC8vIHNvIGNhbiBiZSBubyBpbnRlcnZlbmluZyBub2RlcyB0byBhbHNvIHJl
ZmVyZW5jZSB0aGUgY29tcGFyZS4gCi0gICAgICAgIEFTU0VSVChub2RlLmFkanVzdGVkUmVmQ291
bnQoKSA9PSAxKTsKLQotICAgICAgICBpZiAoc2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLmNo
aWxkMSgpLCBub2RlLmNoaWxkMigpKSkgewotICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50
ZWdlckJyYW5jaChub2RlLCBicmFuY2hOb2RlSW5kZXgsIGNvbmRpdGlvbik7Ci0gICAgICAgICAg
ICB1c2Uobm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDIoKSk7Ci0g
ICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUuY2hpbGQxKCksIG5v
ZGUuY2hpbGQyKCkpKSB7Ci0gICAgICAgICAgICBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2go
bm9kZSwgYnJhbmNoTm9kZUluZGV4LCBkb3VibGVDb25kaXRpb24pOwotICAgICAgICAgICAgdXNl
KG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwotICAgICAg
ICB9IGVsc2UgaWYgKG5vZGUub3AgPT0gQ29tcGFyZUVxICYmIHNob3VsZFNwZWN1bGF0ZUZpbmFs
T2JqZWN0KG5vZGUuY2hpbGQxKCksIG5vZGUuY2hpbGQyKCkpKSB7Ci0gICAgICAgICAgICBjb21w
aWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsIG1faml0Lmds
b2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIpOwotICAgICAgICAgICAgdXNlKG5vZGUuY2hp
bGQxKCkpOwotICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwotICAgICAgICB9IGVsc2Ug
aWYgKG5vZGUub3AgPT0gQ29tcGFyZUVxICYmIHNob3VsZFNwZWN1bGF0ZUFycmF5KG5vZGUuY2hp
bGQxKCksIG5vZGUuY2hpbGQyKCkpKSB7Ci0gICAgICAgICAgICBjb21waWxlUGVlcEhvbGVPYmpl
Y3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsIG1faml0Lmdsb2JhbERhdGEoKS0+anNB
cnJheVZQdHIpOwotICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAg
dXNlKG5vZGUuY2hpbGQyKCkpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG5vblNwZWN1
bGF0aXZlUGVlcGhvbGVCcmFuY2gobm9kZSwgYnJhbmNoTm9kZUluZGV4LCBjb25kaXRpb24sIG9w
ZXJhdGlvbik7Ci0KLSAgICAgICAgbV9jb21waWxlSW5kZXggPSBicmFuY2hOb2RlSW5kZXg7Cisg
ICAgaWYgKGNvbXBpbGVQZWVwSG9sZUJyYW5jaChub2RlLCBjb25kaXRpb24sIGRvdWJsZUNvbmRp
dGlvbiwgb3BlcmF0aW9uKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQogCiAgICAgaWYg
KHNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KG5vZGUuY2hpbGQxKCksIG5vZGUuY2hpbGQyKCkp
KQogICAgICAgICBjb21waWxlT2JqZWN0RXF1YWxpdHkobm9kZSwgbV9qaXQuZ2xvYmFsRGF0YSgp
LT5qc0ZpbmFsT2JqZWN0VlB0cik7CkBAIC00NDAsNiArNDEzLDc1IEBAIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBhcmUoTm9kZSYgbm9kZSwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFkZChOb2RlJiBub2RlKQoreworICAgIEpTVmFs
dWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBKU1ZhbHVlT3BlcmFuZCBv
cDIodGhpcywgbm9kZS5jaGlsZDIoKSk7CisKKyAgICBHUFJSZWcgb3AxVGFnR1BSID0gb3AxLnRh
Z0dQUigpOworICAgIEdQUlJlZyBvcDFQYXlsb2FkR1BSID0gb3AxLnBheWxvYWRHUFIoKTsKKyAg
ICBHUFJSZWcgb3AyVGFnR1BSID0gb3AyLnRhZ0dQUigpOworICAgIEdQUlJlZyBvcDJQYXlsb2Fk
R1BSID0gb3AyLnBheWxvYWRHUFIoKTsKKworICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgCisg
ICAgR1BSUmVzdWx0MiByZXN1bHRUYWcodGhpcyk7CisgICAgR1BSUmVzdWx0IHJlc3VsdFBheWxv
YWQodGhpcyk7CisgICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobm9kZS5jaGlsZDEoKSkgfHwgaXNL
bm93bk5vdE51bWJlcihub2RlLmNoaWxkMigpKSkKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb25WYWx1ZUFkZE5vdE51bWJlciwgcmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdw
cigpLCBvcDFUYWdHUFIsIG9wMVBheWxvYWRHUFIsIG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUik7
CisgICAgZWxzZQorICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkLCByZXN1
bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG9wMVRhZ0dQUiwgb3AxUGF5bG9hZEdQ
Uiwgb3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKTsKKyAgICAKKyAgICBqc1ZhbHVlUmVzdWx0KHJl
c3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOworfQor
Cit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChOb2RlJiBub2RlKQorewor
ICAgIC8vIEZJWE1FOiBOZWVkIHRvIGFkZCBmYXN0IHBhdGhzIGZvciBrbm93biBib29sZWFucy4K
KyAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0VGFnKHRoaXMsIHZhbHVlKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
UGF5bG9hZCh0aGlzLCB2YWx1ZSwgZmFsc2UpOworICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQu
YnJhbmNoMzIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCB2YWx1ZS50YWdHUFIoKSwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKSk7CisgICAgbV9qaXQubW92ZSh2YWx1ZS5wYXlsb2Fk
R1BSKCksIHJlc3VsdFBheWxvYWQuZ3ByKCkpOworICAgIG1faml0LnhvcjMyKFRydXN0ZWRJbW0z
MigxKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSk7CisgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6Qm9vbGVhblRhZyksIHJlc3VsdFRhZy5ncHIoKSk7CisKKyAgICAvLyBJZiB3ZSBh
ZGQgYSBEYXRhRm9ybWF0Qm9vbCwgd2Ugc2hvdWxkIHVzZSBpdCBoZXJlLgorICAgIGpzVmFsdWVS
ZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBtX2NvbXBpbGVJbmRl
eCwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CisKKyAgICAvLyBUaGlzIGNvZGUgaXMgbW92ZWQgZnJv
bSBub25TcGVjdWxhdGl2ZUxvZ2ljYWxOb3QsIGN1cnJlbnRseSB1bnVzZWQhCisjaWYgMAorICAg
IEpTVmFsdWVPcGVyYW5kIGFyZzEodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgR1BSVGVtcG9y
YXJ5IHJlc3VsdFRhZyh0aGlzLCBhcmcxKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0UGF5bG9h
ZCh0aGlzLCBhcmcxLCBmYWxzZSk7CisgICAgR1BSUmVnIGFyZzFUYWdHUFIgPSBhcmcxLnRhZ0dQ
UigpOworICAgIEdQUlJlZyBhcmcxUGF5bG9hZEdQUiA9IGFyZzEucGF5bG9hZEdQUigpOworICAg
IEdQUlJlZyByZXN1bHRUYWdHUFIgPSByZXN1bHRUYWcuZ3ByKCk7CisgICAgR1BSUmVnIHJlc3Vs
dFBheWxvYWRHUFIgPSByZXN1bHRQYXlsb2FkLmdwcigpOworICAgICAgICAKKyAgICBhcmcxLnVz
ZSgpOworCisgICAgSklUQ29tcGlsZXI6Okp1bXAgZmFzdENhc2UgPSBtX2ppdC5icmFuY2gzMihK
SVRDb21waWxlcjo6RXF1YWwsIGFyZzFUYWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29s
ZWFuVGFnKSk7CisgICAgICAgIAorICAgIHNpbGVudFNwaWxsQWxsUmVnaXN0ZXJzKHJlc3VsdFRh
Z0dQUiwgcmVzdWx0UGF5bG9hZEdQUik7CisgICAgbV9qaXQucHVzaChhcmcxVGFnR1BSKTsKKyAg
ICBtX2ppdC5wdXNoKGFyZzFQYXlsb2FkR1BSKTsKKyAgICBtX2ppdC5wdXNoKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyKTsKKyAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGRmZ0Nv
bnZlcnRKU1ZhbHVlVG9Cb29sZWFuKTsKKyAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZh
bHVlR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICBzaWxlbnRGaWxsQWxsUmVnaXN0ZXJzKHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUik7CisgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9O
b3QgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgIAorICAgIGZhc3RDYXNlLmxpbmsoJm1faml0KTsK
KyAgICBtX2ppdC5tb3ZlKGFyZzFQYXlsb2FkR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKKworICAg
IGRvTm90LmxpbmsoJm1faml0KTsKKyAgICBtX2ppdC54b3IzMihUcnVzdGVkSW1tMzIoMSksIHJl
c3VsdFBheWxvYWRHUFIpOworICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJv
b2xlYW5UYWcpLCByZXN1bHRUYWdHUFIpOworICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BS
LCByZXN1bHRQYXlsb2FkR1BSLCBtX2NvbXBpbGVJbmRleCwgRGF0YUZvcm1hdEpTQm9vbGVhbiwg
VXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyNlbmRpZgorfQorCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiB7CiAgICAgTm9kZVR5cGUgb3AgPSBub2RlLm9w
OwpAQCAtNDU5LDMxICs1MDEsMzYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0
KHRoaXMpOwotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52
aXJ0dWFsUmVnaXN0ZXIoKTsKLSAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXls
b2FkRm9yKG5vZGUubG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGlmIChpc0ludDMy
UHJlZGljdGlvbihwcmVkaWN0aW9uKSkgeworICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENv
bXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUubG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7CisKICAgICAg
ICAgICAgIC8vIExpa2UgaW50ZWdlclJlc3VsdCwgYnV0IGRvbid0IHVzZUNoaWxkcmVuIC0gb3Vy
IGNoaWxkcmVuIGFyZSBwaGkgbm9kZXMsCiAgICAgICAgICAgICAvLyBhbmQgZG9uJ3QgcmVwcmVz
ZW50IHZhbHVlcyB3aXRoaW4gdGhpcyBkYXRhZmxvdyB3aXRoIHZpcnR1YWwgcmVnaXN0ZXJzLgor
ICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUudmlydHVh
bFJlZ2lzdGVyKCk7CiAgICAgICAgICAgICBtX2dwcnMucmV0YWluKHJlc3VsdC5ncHIoKSwgdmly
dHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVySW50ZWdlcik7CiAgICAgICAgICAgICBtX2dlbmVyYXRp
b25JbmZvW3ZpcnR1YWxSZWdpc3Rlcl0uaW5pdEludGVnZXIobV9jb21waWxlSW5kZXgsIG5vZGUu
cmVmQ291bnQoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg
IC8vIExpa2UganNWYWx1ZVJlc3VsdCwgYnV0IGRvbid0IHVzZUNoaWxkcmVuIC0gb3VyIGNoaWxk
cmVuIGFyZSBwaGkgbm9kZXMsCi0gICAgICAgICAgICAvLyBhbmQgZG9uJ3QgcmVwcmVzZW50IHZh
bHVlcyB3aXRoaW4gdGhpcyBkYXRhZmxvdyB3aXRoIHZpcnR1YWwgcmVnaXN0ZXJzLgotICAgICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHRhZyh0aGlzKTsKLSAgICAgICAgICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6dGFnRm9yKG5vZGUubG9jYWwoKSksIHRhZy5ncHIoKSk7Ci0gICAgICAgICAg
ICBtX2dwcnMucmV0YWluKHJlc3VsdC5ncHIoKSwgdmlydHVhbFJlZ2lzdGVyLCBTcGlsbE9yZGVy
SlMpOwotICAgICAgICAgICAgbV9ncHJzLnJldGFpbih0YWcuZ3ByKCksIHZpcnR1YWxSZWdpc3Rl
ciwgU3BpbGxPcmRlckpTKTsKLQotICAgICAgICAgICAgRGF0YUZvcm1hdCBmb3JtYXQ7Ci0gICAg
ICAgICAgICBpZiAoaXNBcnJheVByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgICAgICAg
ICAgZm9ybWF0ID0gRGF0YUZvcm1hdEpTQ2VsbDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzQm9v
bGVhblByZWRpY3Rpb24ocHJlZGljdGlvbikpCi0gICAgICAgICAgICAgICAgZm9ybWF0ID0gRGF0
YUZvcm1hdEpTQm9vbGVhbjsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmb3Jt
YXQgPSBEYXRhRm9ybWF0SlM7Ci0KLSAgICAgICAgICAgIG1fZ2VuZXJhdGlvbkluZm9bdmlydHVh
bFJlZ2lzdGVyXS5pbml0SlNWYWx1ZShtX2NvbXBpbGVJbmRleCwgbm9kZS5yZWZDb3VudCgpLCB0
YWcuZ3ByKCksIHJlc3VsdC5ncHIoKSwgZm9ybWF0KTsKKyAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHRhZyh0aGlzKTsKKyAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKG5vZGUubG9jYWwoKSksIHJlc3VsdC5ncHIo
KSk7CisgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKG5vZGUubG9jYWwo
KSksIHRhZy5ncHIoKSk7CisKKyAgICAgICAgLy8gTGlrZSBqc1ZhbHVlUmVzdWx0LCBidXQgZG9u
J3QgdXNlQ2hpbGRyZW4gLSBvdXIgY2hpbGRyZW4gYXJlIHBoaSBub2RlcywKKyAgICAgICAgLy8g
YW5kIGRvbid0IHJlcHJlc2VudCB2YWx1ZXMgd2l0aGluIHRoaXMgZGF0YWZsb3cgd2l0aCB2aXJ0
dWFsIHJlZ2lzdGVycy4KKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9
IG5vZGUudmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgIG1fZ3Bycy5yZXRhaW4ocmVzdWx0Lmdw
cigpLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisgICAgICAgIG1fZ3Bycy5yZXRh
aW4odGFnLmdwcigpLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisKKyAgICAgICAg
RGF0YUZvcm1hdCBmb3JtYXQ7CisgICAgICAgIGlmIChpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0
aW9uKSkKKyAgICAgICAgICAgIGZvcm1hdCA9IERhdGFGb3JtYXRKU0NlbGw7CisgICAgICAgIGVs
c2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBmb3Jt
YXQgPSBEYXRhRm9ybWF0SlNCb29sZWFuOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmb3Jt
YXQgPSBEYXRhRm9ybWF0SlM7CisKKyAgICAgICAgbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVn
aXN0ZXJdLmluaXRKU1ZhbHVlKG1fY29tcGlsZUluZGV4LCBub2RlLnJlZkNvdW50KCksIHRhZy5n
cHIoKSwgcmVzdWx0LmdwcigpLCBmb3JtYXQpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAg
LTYxNiwxNyArNjYzLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOwogICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKLSAg
ICAgICAgICAgIEdQUlRlbXBvcmFyeSBhZGRyZXNzKHRoaXMsIG9wMSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIEdQUlJlZyBpbnB1dEdQUiA9IG9wMS5ncHIoKTsKICAgICAgICAgICAgIEZQ
UlJlZyBvdXRwdXRGUFIgPSByZXN1bHQuZnByKCk7Ci0gICAgICAgICAgICBHUFJSZWcgYWRkcmVz
c0dQUiA9IGFkZHJlc3MuZ3ByKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1faml0LmNv
bnZlcnRJbnQzMlRvRG91YmxlKGlucHV0R1BSLCBvdXRwdXRGUFIpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBwb3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIGlucHV0R1BSLCBUcnVzdGVkSW1tMzIo
MCkpOwotICAgICAgICAgICAgbV9qaXQubW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigm
dHdvVG9UaGUzMiksIGFkZHJlc3NHUFIpOwotICAgICAgICAgICAgbV9qaXQuYWRkRG91YmxlKEpJ
VENvbXBpbGVyOjpBZGRyZXNzKGFkZHJlc3NHUFIsIDApLCBvdXRwdXRGUFIpOworICAgICAgICAg
ICAgbV9qaXQuYWRkRG91YmxlKEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3MoJnR3b1RvVGhl
MzIpLCBvdXRwdXRGUFIpOwogICAgICAgICAgICAgcG9zaXRpdmUubGluaygmbV9qaXQpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBkb3VibGVSZXN1bHQob3V0cHV0RlBSLCBtX2NvbXBpbGVJ
bmRleCk7CkBAIC03NjQsMjUgKzgwOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSYgbm9kZSkKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVChvcCA9PSBWYWx1ZUFkZCk7
Ci0KLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAg
ICAgICBKU1ZhbHVlT3BlcmFuZCBvcDIodGhpcywgbm9kZS5jaGlsZDIoKSk7Ci0KLSAgICAgICAg
R1BSUmVnIG9wMVRhZ0dQUiA9IG9wMS50YWdHUFIoKTsKLSAgICAgICAgR1BSUmVnIG9wMVBheWxv
YWRHUFIgPSBvcDEucGF5bG9hZEdQUigpOwotICAgICAgICBHUFJSZWcgb3AyVGFnR1BSID0gb3Ay
LnRhZ0dQUigpOwotICAgICAgICBHUFJSZWcgb3AyUGF5bG9hZEdQUiA9IG9wMi5wYXlsb2FkR1BS
KCk7Ci0KLSAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgCi0gICAgICAgIEdQUlJl
c3VsdDIgcmVzdWx0VGFnKHRoaXMpOwotICAgICAgICBHUFJSZXN1bHQgcmVzdWx0UGF5bG9hZCh0
aGlzKTsKLSAgICAgICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobm9kZS5jaGlsZDEoKSkgfHwgaXNL
bm93bk5vdE51bWJlcihub2RlLmNoaWxkMigpKSkKLSAgICAgICAgICAgIGNhbGxPcGVyYXRpb24o
b3BlcmF0aW9uVmFsdWVBZGROb3ROdW1iZXIsIHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9h
ZC5ncHIoKSwgb3AxVGFnR1BSLCBvcDFQYXlsb2FkR1BSLCBvcDJUYWdHUFIsIG9wMlBheWxvYWRH
UFIpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZh
bHVlQWRkLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG9wMVRhZ0dQUiwg
b3AxUGF5bG9hZEdQUiwgb3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKTsKLSAgICAgICAgCi0gICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnLmdwcigpLCByZXN1bHRQYXlsb2FkLmdwcigpLCBt
X2NvbXBpbGVJbmRleCk7CisgICAgICAgIGNvbXBpbGVWYWx1ZUFkZChub2RlKTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCkBAIC0xMDYyLDIwICsxMDg4LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBjYXNl
IExvZ2ljYWxOb3Q6IHsKLSAgICAgICAgLy8gRklYTUU6IE5lZWQgdG8gYWRkIGZhc3QgcGF0aHMg
Zm9yIGtub3duIGJvb2xlYW5zLgotICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdFRhZyh0aGlzLCB2YWx1
ZSk7Ci0gICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHRQYXlsb2FkKHRoaXMsIHZhbHVlLCBmYWxz
ZSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2sobV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLCB2YWx1ZS50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5U
YWcpKSk7Ci0gICAgICAgIG1faml0Lm1vdmUodmFsdWUucGF5bG9hZEdQUigpLCByZXN1bHRQYXls
b2FkLmdwcigpKTsKLSAgICAgICAgbV9qaXQueG9yMzIoVHJ1c3RlZEltbTMyKDEpLCByZXN1bHRQ
YXlsb2FkLmdwcigpKTsKLSAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Qm9vbGVhblRhZyksIHJlc3VsdFRhZy5ncHIoKSk7Ci0KLSAgICAgICAgLy8gSWYgd2UgYWRkIGEg
RGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KLSAgICAgICAganNWYWx1ZVJl
c3VsdChyZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCksIG1fY29tcGlsZUluZGV4
LCBEYXRhRm9ybWF0SlNCb29sZWFuKTsKKyAgICBjYXNlIExvZ2ljYWxOb3Q6CisgICAgICAgIGNv
bXBpbGVMb2dpY2FsTm90KG5vZGUpOwogICAgICAgICBicmVhazsKLSAgICB9CiAKICAgICBjYXNl
IENvbXBhcmVMZXNzOgogICAgICAgICBpZiAoY29tcGFyZShub2RlLCBKSVRDb21waWxlcjo6TGVz
c1RoYW4sIEpJVENvbXBpbGVyOjpEb3VibGVMZXNzVGhhbiwgb3BlcmF0aW9uQ29tcGFyZUxlc3Mp
KQpAQCAtMTE1Niw3ICsxMTcxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUuY2hp
bGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcHJvcGVydHkodGhp
cywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUuY2hpbGQzKCkpOwotICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzLCBiYXNlKTsK
KyAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgLy8gTWFwIGJh
c2UsIHByb3BlcnR5ICYgdmFsdWUgaW50byByZWdpc3RlcnMsIGFsbG9jYXRlIGEgc2NyYXRjaCBy
ZWdpc3Rlci4KICAgICAgICAgR1BSUmVnIGJhc2VSZWcgPSBiYXNlLmdwcigpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCShy
ZXZpc2lvbiA5NjQxNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3NiwzNSArNDc2LDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaQogLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBj
b21wYXJlIGlzIGZ1c2VkIHdpdGggYSBzdWJzZXF1ZW50IGJyYW5jaC4KIGJvb2wgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBhcmUoTm9kZSYgbm9kZSwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25k
aXRpb24gY29uZGl0aW9uLCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uIGRvdWJsZUNv
bmRpdGlvbiwgWl9ERkdPcGVyYXRpb25fRUpKIG9wZXJhdGlvbikKIHsKLSAgICAvLyBGdXNlZCBj
b21wYXJlICYgYnJhbmNoLgotICAgIE5vZGVJbmRleCBicmFuY2hOb2RlSW5kZXggPSBkZXRlY3RQ
ZWVwSG9sZUJyYW5jaCgpOwotICAgIGlmIChicmFuY2hOb2RlSW5kZXggIT0gTm9Ob2RlKSB7Ci0g
ICAgICAgIC8vIGRldGVjdFBlZXBIb2xlQnJhbmNoIGN1cnJlbnRseSBvbmx5IHBlcm1pdHMgdGhl
IGJyYW5jaCB0byBiZSB0aGUgdmVyeSBuZXh0IG5vZGUsCi0gICAgICAgIC8vIHNvIGNhbiBiZSBu
byBpbnRlcnZlbmluZyBub2RlcyB0byBhbHNvIHJlZmVyZW5jZSB0aGUgY29tcGFyZS4gCi0gICAg
ICAgIEFTU0VSVChub2RlLmFkanVzdGVkUmVmQ291bnQoKSA9PSAxKTsKLQotICAgICAgICBpZiAo
c2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2RlLmNoaWxkMSgpLCBub2RlLmNoaWxkMigpKSkgewot
ICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xlSW50ZWdlckJyYW5jaChub2RlLCBicmFuY2hOb2Rl
SW5kZXgsIGNvbmRpdGlvbik7Ci0gICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDEoKSk7Ci0gICAg
ICAgICAgICB1c2Uobm9kZS5jaGlsZDIoKSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkU3Bl
Y3VsYXRlTnVtYmVyKG5vZGUuY2hpbGQxKCksIG5vZGUuY2hpbGQyKCkpKSB7Ci0gICAgICAgICAg
ICBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFuY2gobm9kZSwgYnJhbmNoTm9kZUluZGV4LCBkb3Vi
bGVDb25kaXRpb24pOwotICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAg
ICAgdXNlKG5vZGUuY2hpbGQyKCkpOwotICAgICAgICB9IGVsc2UgaWYgKG5vZGUub3AgPT0gQ29t
cGFyZUVxICYmIHNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KG5vZGUuY2hpbGQxKCksIG5vZGUu
Y2hpbGQyKCkpKSB7Ci0gICAgICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShu
b2RlLCBicmFuY2hOb2RlSW5kZXgsIG1faml0Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQ
dHIpOwotICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgdXNlKG5v
ZGUuY2hpbGQyKCkpOwotICAgICAgICB9IGVsc2UgaWYgKG5vZGUub3AgPT0gQ29tcGFyZUVxICYm
IHNob3VsZFNwZWN1bGF0ZUFycmF5KG5vZGUuY2hpbGQxKCksIG5vZGUuY2hpbGQyKCkpKSB7Ci0g
ICAgICAgICAgICBjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2Rl
SW5kZXgsIG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpOwotICAgICAgICAgICAgdXNl
KG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOwotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIG5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2gobm9kZSwg
YnJhbmNoTm9kZUluZGV4LCBjb25kaXRpb24sIG9wZXJhdGlvbik7Ci0KLSAgICAgICAgbV9jb21w
aWxlSW5kZXggPSBicmFuY2hOb2RlSW5kZXg7CisgICAgaWYgKGNvbXBpbGVQZWVwSG9sZUJyYW5j
aChub2RlLCBjb25kaXRpb24sIGRvdWJsZUNvbmRpdGlvbiwgb3BlcmF0aW9uKSkKICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQogCiAgICAgaWYgKHNob3VsZFNwZWN1bGF0ZUludGVnZXIobm9k
ZS5jaGlsZDEoKSwgbm9kZS5jaGlsZDIoKSkpIHsKICAgICAgICAgU3BlY3VsYXRlSW50ZWdlck9w
ZXJhbmQgb3AxKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwpAQCAtNTM3LDYgKzUxMCw3OCBAQCBib29s
IFNwZWN1bGF0aXZlSklUOjpjb21wYXJlKE5vZGUmIG5vZGUsCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVBZGQoTm9kZSYgbm9kZSkKK3sK
KyAgICBKU1ZhbHVlT3BlcmFuZCBvcDEodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgSlNWYWx1
ZU9wZXJhbmQgb3AyKHRoaXMsIG5vZGUuY2hpbGQyKCkpOworICAgIAorICAgIEdQUlJlZyBvcDFH
UFIgPSBvcDEuZ3ByKCk7CisgICAgR1BSUmVnIG9wMkdQUiA9IG9wMi5ncHIoKTsKKyAgICAKKyAg
ICBmbHVzaFJlZ2lzdGVycygpOworICAgIAorICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7Cisg
ICAgaWYgKGlzS25vd25Ob3ROdW1iZXIobm9kZS5jaGlsZDEoKSkgfHwgaXNLbm93bk5vdE51bWJl
cihub2RlLmNoaWxkMigpKSkKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFk
ZE5vdE51bWJlciwgcmVzdWx0LmdwcigpLCBvcDFHUFIsIG9wMkdQUik7CisgICAgZWxzZQorICAg
ICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvblZhbHVlQWRkLCByZXN1bHQuZ3ByKCksIG9wMUdQ
Uiwgb3AyR1BSKTsKKyAgICAKKyAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21w
aWxlSW5kZXgpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTG9naWNhbE5vdChO
b2RlJiBub2RlKQoreworICAgIGlmIChpc0tub3duQm9vbGVhbihub2RlLmNoaWxkMSgpKSkgewor
ICAgICAgICBTcGVjdWxhdGVCb29sZWFuT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgp
KTsKKyAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCB2YWx1ZSk7CisgICAgICAgIAor
ICAgICAgICBtX2ppdC5tb3ZlKHZhbHVlLmdwcigpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICBt
X2ppdC54b3JQdHIoVHJ1c3RlZEltbTMyKHRydWUpLCByZXN1bHQuZ3ByKCkpOworICAgICAgICAK
KyAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4LCBEYXRh
Rm9ybWF0SlNCb29sZWFuKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBQcmVk
aWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2ppdC5nZXRQcmVkaWN0aW9uKG5vZGUuY2hpbGQxKCkp
OworICAgIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3Rpb24pIHx8ICFwcmVkaWN0aW9u
KSB7CisgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwor
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOyAvLyBGSVhNRTogV2UgY291bGQgcmV1
c2UsIGJ1dCBvbiBzcGVjdWxhdGlvbiBmYWlsIHdvdWxkIG5lZWQgcmVjb3ZlcnkgdG8gcmVzdG9y
ZSB0YWcgKGFraW4gdG8gYWRkKS4KKyAgICAgICAgCisgICAgICAgIG1faml0Lm1vdmUodmFsdWUu
Z3ByKCksIHJlc3VsdC5ncHIoKSk7CisgICAgICAgIG1faml0LnhvclB0cihUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZXN1bHQuZ3ByKCkpOworICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKG1faml0LmJyYW5jaFRlc3RQdHIoSklUQ29tcGlsZXI6Ok5vblpl
cm8sIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KH4xKSkp
KTsKKyAgICAgICAgbV9qaXQueG9yUHRyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90
PihWYWx1ZVRydWUpKSwgcmVzdWx0LmdwcigpKTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHdl
IGFkZCBhIERhdGFGb3JtYXRCb29sLCB3ZSBzaG91bGQgdXNlIGl0IGhlcmUuCisgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgRGF0YUZvcm1hdEpTQm9v
bGVhbik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgSlNWYWx1ZU9wZXJhbmQg
YXJnMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMp
OworICAgIAorICAgIEdQUlJlZyBhcmcxR1BSID0gYXJnMS5ncHIoKTsKKyAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgIAorICAgIGFyZzEudXNlKCk7CisgICAgCisgICAg
bV9qaXQubW92ZShhcmcxR1BSLCByZXN1bHRHUFIpOworICAgIG1faml0LnhvclB0cihUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZXN1bHRHUFIpOworICAg
IEpJVENvbXBpbGVyOjpKdW1wIGZhc3RDYXNlID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21w
aWxlcjo6WmVybywgcmVzdWx0R1BSLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
fjEpKSk7CisgICAgCisgICAgc2lsZW50U3BpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAg
ICBtX2ppdC5tb3ZlKGFyZzFHUFIsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgbV9qaXQu
bW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKGRmZ0NvbnZlcnRKU1ZhbHVlVG9Cb29s
ZWFuKTsKKyAgICBtX2ppdC5tb3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHRHUFIp
OworICAgIHNpbGVudEZpbGxBbGxSZWdpc3RlcnMocmVzdWx0R1BSKTsKKyAgICAKKyAgICBmYXN0
Q2FzZS5saW5rKCZtX2ppdCk7CisgICAgCisgICAgbV9qaXQueG9yUHRyKFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZVRydWUpKSwgcmVzdWx0R1BSKTsKKyAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgsIERhdGFGb3JtYXRKU0Jvb2xlYW4sIFVz
ZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7Cit9CisKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKIHsKICAgICBOb2RlVHlwZSBvcCA9IG5vZGUub3A7CkBAIC01NjQs
MjQgKzYwOSwyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0dWFs
UmVnaXN0ZXIoKTsKICAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4ocmVzdWx0LmdwcigpLCB2aXJ0
dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJJbnRlZ2VyKTsKICAgICAgICAgICAgIG1fZ2VuZXJhdGlv
bkluZm9bdmlydHVhbFJlZ2lzdGVyXS5pbml0SW50ZWdlcihtX2NvbXBpbGVJbmRleCwgbm9kZS5y
ZWZDb3VudCgpLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRkcmVzc0Zvcihub2RlLmxvY2FsKCkpLCByZXN1
bHQuZ3ByKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KIAotICAgICAgICAgICAg
Ly8gTGlrZSBqc1ZhbHVlUmVzdWx0LCBidXQgZG9uJ3QgdXNlQ2hpbGRyZW4gLSBvdXIgY2hpbGRy
ZW4gYXJlIHBoaSBub2RlcywKLSAgICAgICAgICAgIC8vIGFuZCBkb24ndCByZXByZXNlbnQgdmFs
dWVzIHdpdGhpbiB0aGlzIGRhdGFmbG93IHdpdGggdmlydHVhbCByZWdpc3RlcnMuCi0gICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgdmlydHVhbFJlZ2lzdGVyID0gbm9kZS52aXJ0dWFsUmVnaXN0
ZXIoKTsKLSAgICAgICAgICAgIG1fZ3Bycy5yZXRhaW4ocmVzdWx0LmdwcigpLCB2aXJ0dWFsUmVn
aXN0ZXIsIFNwaWxsT3JkZXJKUyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIERhdGFGb3Jt
YXQgZm9ybWF0OwotICAgICAgICAgICAgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRpY3Rpb24p
KQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IERhdGFGb3JtYXRKU0NlbGw7Ci0gICAgICAgICAg
ICBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3Rpb24pKQotICAgICAgICAgICAg
ICAgIGZvcm1hdCA9IERhdGFGb3JtYXRKU0Jvb2xlYW47Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgZm9ybWF0ID0gRGF0YUZvcm1hdEpTOworICAgICAgICBtX2ppdC5sb2FkUHRy
KEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUubG9jYWwoKSksIHJlc3VsdC5ncHIoKSk7CiAK
LSAgICAgICAgICAgIG1fZ2VuZXJhdGlvbkluZm9bdmlydHVhbFJlZ2lzdGVyXS5pbml0SlNWYWx1
ZShtX2NvbXBpbGVJbmRleCwgbm9kZS5yZWZDb3VudCgpLCByZXN1bHQuZ3ByKCksIGZvcm1hdCk7
Ci0gICAgICAgIH0KKyAgICAgICAgLy8gTGlrZSBqc1ZhbHVlUmVzdWx0LCBidXQgZG9uJ3QgdXNl
Q2hpbGRyZW4gLSBvdXIgY2hpbGRyZW4gYXJlIHBoaSBub2RlcywKKyAgICAgICAgLy8gYW5kIGRv
bid0IHJlcHJlc2VudCB2YWx1ZXMgd2l0aGluIHRoaXMgZGF0YWZsb3cgd2l0aCB2aXJ0dWFsIHJl
Z2lzdGVycy4KKyAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IG5vZGUu
dmlydHVhbFJlZ2lzdGVyKCk7CisgICAgICAgIG1fZ3Bycy5yZXRhaW4ocmVzdWx0LmdwcigpLCB2
aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJKUyk7CisKKyAgICAgICAgRGF0YUZvcm1hdCBmb3Jt
YXQ7CisgICAgICAgIGlmIChpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0aW9uKSkKKyAgICAgICAg
ICAgIGZvcm1hdCA9IERhdGFGb3JtYXRKU0NlbGw7CisgICAgICAgIGVsc2UgaWYgKGlzQm9vbGVh
blByZWRpY3Rpb24ocHJlZGljdGlvbikpCisgICAgICAgICAgICBmb3JtYXQgPSBEYXRhRm9ybWF0
SlNCb29sZWFuOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmb3JtYXQgPSBEYXRhRm9ybWF0
SlM7CisKKyAgICAgICAgbV9nZW5lcmF0aW9uSW5mb1t2aXJ0dWFsUmVnaXN0ZXJdLmluaXRKU1Zh
bHVlKG1fY29tcGlsZUluZGV4LCBub2RlLnJlZkNvdW50KCksIHJlc3VsdC5ncHIoKSwgZm9ybWF0
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC04NjIsMjIgKzkwOCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgfQogCiAgICAgICAgIEFT
U0VSVChvcCA9PSBWYWx1ZUFkZCk7Ci0KLSAgICAgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMs
IG5vZGUuY2hpbGQxKCkpOwotICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcDIodGhpcywgbm9kZS5j
aGlsZDIoKSk7Ci0gICAgICAgIAotICAgICAgICBHUFJSZWcgb3AxR1BSID0gb3AxLmdwcigpOwot
ICAgICAgICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOwotICAgICAgICAKLSAgICAgICAgZmx1
c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgCi0gICAgICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7
Ci0gICAgICAgIGlmIChpc0tub3duTm90TnVtYmVyKG5vZGUuY2hpbGQxKCkpIHx8IGlzS25vd25O
b3ROdW1iZXIobm9kZS5jaGlsZDIoKSkpCi0gICAgICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJh
dGlvblZhbHVlQWRkTm90TnVtYmVyLCByZXN1bHQuZ3ByKCksIG9wMUdQUiwgb3AyR1BSKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25WYWx1ZUFkZCwg
cmVzdWx0LmdwcigpLCBvcDFHUFIsIG9wMkdQUik7Ci0gICAgICAgIAotICAgICAgICBqc1ZhbHVl
UmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOworICAgICAgICBjb21waWxlVmFs
dWVBZGQobm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTE1NywzNyArMTE4OCw5
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCi0gICAgY2FzZSBMb2dpY2FsTm90OiB7Ci0gICAgICAgIGlmIChpc0tub3du
Qm9vbGVhbihub2RlLmNoaWxkMSgpKSkgewotICAgICAgICAgICAgU3BlY3VsYXRlQm9vbGVhbk9w
ZXJhbmQgdmFsdWUodGhpcywgbm9kZS5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIHZhbHVlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbV9qaXQu
bW92ZSh2YWx1ZS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgIG1faml0LnhvclB0
cihUcnVzdGVkSW1tMzIodHJ1ZSksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgRGF0YUZv
cm1hdEpTQm9vbGVhbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9qaXQuZ2V0UHJlZGljdGlvbihu
b2RlLmNoaWxkMSgpKTsKLSAgICAgICAgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGlv
bikgfHwgIXByZWRpY3Rpb24pIHsKLSAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlz
KTsgLy8gRklYTUU6IFdlIGNvdWxkIHJldXNlLCBidXQgb24gc3BlY3VsYXRpb24gZmFpbCB3b3Vs
ZCBuZWVkIHJlY292ZXJ5IHRvIHJlc3RvcmUgdGFnIChha2luIHRvIGFkZCkuCi0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIG1faml0Lm1vdmUodmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0g
ICAgICAgICAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+
KFZhbHVlRmFsc2UpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2sobV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6Tm9uWmVybywgcmVzdWx0Lmdwcigp
LCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSkpOwotICAgICAgICAgICAg
bV9qaXQueG9yUHRyKFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZVRydWUp
KSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gSWYgd2UgYWRk
IGEgRGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KLSAgICAgICAgICAgIGpz
VmFsdWVSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgRGF0YUZvcm1hdEpTQm9v
bGVhbik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
bm9uU3BlY3VsYXRpdmVMb2dpY2FsTm90KG5vZGUpOwotICAgICAgICAKKyAgICBjYXNlIExvZ2lj
YWxOb3Q6CisgICAgICAgIGNvbXBpbGVMb2dpY2FsTm90KG5vZGUpOwogICAgICAgICBicmVhazsK
LSAgICB9CiAKICAgICBjYXNlIENvbXBhcmVMZXNzOgogICAgICAgICBpZiAoY29tcGFyZShub2Rl
LCBKSVRDb21waWxlcjo6TGVzc1RoYW4sIEpJVENvbXBpbGVyOjpEb3VibGVMZXNzVGhhbiwgb3Bl
cmF0aW9uQ29tcGFyZUxlc3MpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDk2NDE0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5
NCw2ICsxOTQsNDEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlSW50ZQog
ICAgICAgICBhZGRCcmFuY2gobV9qaXQuanVtcCgpLCBub3RUYWtlbik7CiB9CiAKKy8vIFJldHVy
bnMgdHJ1ZSBpZiB0aGUgY29tcGFyZSBpcyBmdXNlZCB3aXRoIGEgc3Vic2VxdWVudCBicmFuY2gu
Citib29sIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVCcmFuY2goTm9kZSYgbm9kZSwg
TWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24gY29uZGl0aW9uLCBNYWNyb0Fzc2Vt
Ymxlcjo6RG91YmxlQ29uZGl0aW9uIGRvdWJsZUNvbmRpdGlvbiwgWl9ERkdPcGVyYXRpb25fRUpK
IG9wZXJhdGlvbikKK3sKKyAgICAvLyBGdXNlZCBjb21wYXJlICYgYnJhbmNoLgorICAgIE5vZGVJ
bmRleCBicmFuY2hOb2RlSW5kZXggPSBkZXRlY3RQZWVwSG9sZUJyYW5jaCgpOworICAgIGlmIChi
cmFuY2hOb2RlSW5kZXggIT0gTm9Ob2RlKSB7CisgICAgICAgIC8vIGRldGVjdFBlZXBIb2xlQnJh
bmNoIGN1cnJlbnRseSBvbmx5IHBlcm1pdHMgdGhlIGJyYW5jaCB0byBiZSB0aGUgdmVyeSBuZXh0
IG5vZGUsCisgICAgICAgIC8vIHNvIGNhbiBiZSBubyBpbnRlcnZlbmluZyBub2RlcyB0byBhbHNv
IHJlZmVyZW5jZSB0aGUgY29tcGFyZS4gCisgICAgICAgIEFTU0VSVChub2RlLmFkanVzdGVkUmVm
Q291bnQoKSA9PSAxKTsKKworICAgICAgICBpZiAoc2hvdWxkU3BlY3VsYXRlSW50ZWdlcihub2Rl
LmNoaWxkMSgpLCBub2RlLmNoaWxkMigpKSkgeworICAgICAgICAgICAgY29tcGlsZVBlZXBIb2xl
SW50ZWdlckJyYW5jaChub2RlLCBicmFuY2hOb2RlSW5kZXgsIGNvbmRpdGlvbik7CisgICAgICAg
ICAgICB1c2Uobm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAgICB1c2Uobm9kZS5jaGlsZDIoKSk7
CisgICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkU3BlY3VsYXRlTnVtYmVyKG5vZGUuY2hpbGQxKCks
IG5vZGUuY2hpbGQyKCkpKSB7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVEb3VibGVCcmFu
Y2gobm9kZSwgYnJhbmNoTm9kZUluZGV4LCBkb3VibGVDb25kaXRpb24pOworICAgICAgICAgICAg
dXNlKG5vZGUuY2hpbGQxKCkpOworICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOworICAg
ICAgICB9IGVsc2UgaWYgKG5vZGUub3AgPT0gQ29tcGFyZUVxICYmIHNob3VsZFNwZWN1bGF0ZUZp
bmFsT2JqZWN0KG5vZGUuY2hpbGQxKCksIG5vZGUuY2hpbGQyKCkpKSB7CisgICAgICAgICAgICBj
b21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsIG1faml0
Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIpOworICAgICAgICAgICAgdXNlKG5vZGUu
Y2hpbGQxKCkpOworICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQyKCkpOworICAgICAgICB9IGVs
c2UgaWYgKG5vZGUub3AgPT0gQ29tcGFyZUVxICYmIHNob3VsZFNwZWN1bGF0ZUFycmF5KG5vZGUu
Y2hpbGQxKCksIG5vZGUuY2hpbGQyKCkpKSB7CisgICAgICAgICAgICBjb21waWxlUGVlcEhvbGVP
YmplY3RFcXVhbGl0eShub2RlLCBicmFuY2hOb2RlSW5kZXgsIG1faml0Lmdsb2JhbERhdGEoKS0+
anNBcnJheVZQdHIpOworICAgICAgICAgICAgdXNlKG5vZGUuY2hpbGQxKCkpOworICAgICAgICAg
ICAgdXNlKG5vZGUuY2hpbGQyKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5vblNw
ZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2gobm9kZSwgYnJhbmNoTm9kZUluZGV4LCBjb25kaXRpb24s
IG9wZXJhdGlvbik7CisKKyAgICAgICAgbV9jb21waWxlSW5kZXggPSBicmFuY2hOb2RlSW5kZXg7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVNb3ZIaW50KE5vZGUmIG5vZGUpCiB7CiAgICAgQVNT
RVJUKG5vZGUub3AgPT0gU2V0TG9jYWwpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gOTY0MTQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTU3
MCwxMCArNTcwLDEzIEBAIHByaXZhdGU6CiAgICAgfQogICAgIAogICAgIGJvb2wgY29tcGFyZShO
b2RlJiwgTWFjcm9Bc3NlbWJsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24sIE1hY3JvQXNzZW1ibGVy
OjpEb3VibGVDb25kaXRpb24sIFpfREZHT3BlcmF0aW9uX0VKSik7CisgICAgYm9vbCBjb21waWxl
UGVlcEhvbGVCcmFuY2goTm9kZSYsIE1hY3JvQXNzZW1ibGVyOjpSZWxhdGlvbmFsQ29uZGl0aW9u
LCBNYWNyb0Fzc2VtYmxlcjo6RG91YmxlQ29uZGl0aW9uLCBaX0RGR09wZXJhdGlvbl9FSkopOwog
ICAgIHZvaWQgY29tcGlsZVBlZXBIb2xlSW50ZWdlckJyYW5jaChOb2RlJiwgTm9kZUluZGV4IGJy
YW5jaE5vZGVJbmRleCwgSklUQ29tcGlsZXI6OlJlbGF0aW9uYWxDb25kaXRpb24pOwogICAgIHZv
aWQgY29tcGlsZVBlZXBIb2xlRG91YmxlQnJhbmNoKE5vZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9k
ZUluZGV4LCBKSVRDb21waWxlcjo6RG91YmxlQ29uZGl0aW9uKTsKICAgICB2b2lkIGNvbXBpbGVQ
ZWVwSG9sZU9iamVjdEVxdWFsaXR5KE5vZGUmLCBOb2RlSW5kZXggYnJhbmNoTm9kZUluZGV4LCB2
b2lkKiB2cHRyKTsKICAgICB2b2lkIGNvbXBpbGVPYmplY3RFcXVhbGl0eShOb2RlJiwgdm9pZCog
dnB0cik7CisgICAgdm9pZCBjb21waWxlVmFsdWVBZGQoTm9kZSYpOworICAgIHZvaWQgY29tcGls
ZUxvZ2ljYWxOb3QoTm9kZSYpOwogICAgIAogICAgIC8vIEl0IGlzIGFjY2VwdGFibGUgdG8gaGF2
ZSBzdHJ1Y3R1cmUgYmUgZXF1YWwgdG8gc2NyYXRjaCwgc28gbG9uZyBhcyB5b3UncmUgZmluZQog
ICAgIC8vIHdpdGggdGhlIHN0cnVjdHVyZSBHUFIgYmVpbmcgY2xvYmJlcmVkLgo=
</data>
<flag name="review"
          id="106561"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>