<?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>74463</bug_id>
          
          <creation_ts>2011-12-13 16:40:26 -0800</creation_ts>
          <short_desc>DFG OSR exit for UInt32ToNumber should roll forward, not roll backward</short_desc>
          <delta_ts>2011-12-13 17:47:49 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <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>520478</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-13 16:40:26 -0800</bug_when>
    <thetext>Once we get to a UInt32ToNumber node, we may no longer have the state necessary to execute the bytecode operation that the UInt32ToNumber belongs to. So a standard OSR exit, which relies on rolling execution state backwards, won&apos;t work.  But we have all of the information necessary to roll execution forward.  We should do that instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520484</commentid>
    <comment_count>1</comment_count>
      <attachid>119109</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-13 16:53:53 -0800</bug_when>
    <thetext>Created attachment 119109
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520533</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2011-12-13 17:47:49 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/102723</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119109</attachid>
            <date>2011-12-13 16:53:53 -0800</date>
            <delta_ts>2011-12-13 17:30:28 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>uint32tonumber_patch_1.diff</filename>
            <type>text/plain</type>
            <size>29961</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTAyNzIwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDExLTEyLTEzICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIE9TUiBleGl0IGZvciBVSW50MzJUb051bWJlciBzaG91bGQgcm9sbCBmb3J3YXJkLCBub3Qg
cm9sbCBiYWNrd2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzQ0NjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIEltcGxlbWVudHMgcm9sbC1mb3J3YXJkIE9TUiBleGl0IGZvciBVSW50MzJU
b051bWJlciwgd2hpY2ggcmVxdWlyZXMgVmFsdWVSZWNvdmVyaWVzIGtub3dpbmcKKyAgICAgICAg
aG93IHRvIGV4ZWN1dGUgdGhlIHNsb3cgcGF0aCBvZiBVSW50MzJUb051bWJlci4KKworICAgICAg
ICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxhc3RP
U1JFeGl0KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlT3JpZ2luLmg6CisgICAgICAgIChKU0M6
OkNvZGVPcmlnaW46Om9wZXJhdG9yIT0pOgorICAgICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3Zl
cnkuaDoKKyAgICAgICAgKEpTQzo6VmFsdWVSZWNvdmVyeTo6dWludDMySW5HUFIpOgorICAgICAg
ICAoSlNDOjpWYWx1ZVJlY292ZXJ5OjpncHIpOgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5
OjpkdW1wKToKKyAgICAgICAgKiBkZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAgICAgICAg
KiBkZmcvREZHQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuaDoK
KyAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojp2YWx1ZVJlY292ZXJ5Rm9yT3BlcmFuZCk6Cisg
ICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NS
RXhpdENvbXBpbGVyNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXRDb21waWxlcjo6
Y29tcGlsZUV4aXQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVVSW50MzJUb051bWJlcik6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uSW50VHlw
ZWRBcnJheSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVVJbnQzMlRvTnVtYmVyKToKKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVj
dWxhdGl2ZVVJbnQzMlRvTnVtYmVyKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZSk6CisKIDIwMTEtMTItMTMgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNv
bT4KIAogICAgICAgICBBcmd1bWVudHMgb2JqZWN0IGRvZXNuJ3QgaGFuZGxlIG11dGF0aW9uIG9m
IGxlbmd0aCBwcm9wZXJ0eSBjb3JyZWN0bHkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwMjcwMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDI3LDYgKzQy
NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIG1fZGZnRGF0YS0+b3NyRXhpdC5h
cHBlbmQob3NyRXhpdCk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIERGRzo6T1NSRXhp
dCYgbGFzdE9TUkV4aXQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9kZmdEYXRh
LT5vc3JFeGl0Lmxhc3QoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9pZCBhcHBl
bmRTcGVjdWxhdGlvblJlY292ZXJ5KGNvbnN0IERGRzo6U3BlY3VsYXRpb25SZWNvdmVyeSYgcmVj
b3ZlcnkpCiAgICAgICAgIHsKICAgICAgICAgICAgIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCShy
ZXZpc2lvbiAxMDI3MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9y
aWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC03Myw2ICs3Myw4IEBAIHN0cnVjdCBDb2RlT3JpZ2lu
IHsKICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgQ29kZU9yaWdpbiYgb3RoZXIpIGNv
bnN0OwogICAgIAorICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikg
Y29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KKyAgICAKICNpZm5kZWYgTkRFQlVH
CiAgICAgLy8gR2V0IHRoZSBpbmxpbmUgc3RhY2suIFRoaXMgaXMgc2xvdywgYW5kIGlzIGludGVu
ZGVkIGZvciBkZWJ1Z2dpbmcgb25seS4KICAgICBWZWN0b3I8Q29kZU9yaWdpbj4gaW5saW5lU3Rh
Y2soKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJl
Y292ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Zh
bHVlUmVjb3ZlcnkuaAkocmV2aXNpb24gMTAyNzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNiArNTEsNyBA
QCBlbnVtIFZhbHVlUmVjb3ZlcnlUZWNobmlxdWUgewogICAgIEluUGFpciwKICNlbmRpZgogICAg
IEluRlBSLAorICAgIFVJbnQzMkluR1BSLAogICAgIC8vIEl0J3MgaW4gdGhlIHJlZ2lzdGVyIGZp
bGUsIGJ1dCBhdCBhIGRpZmZlcmVudCBsb2NhdGlvbi4KICAgICBEaXNwbGFjZWRJblJlZ2lzdGVy
RmlsZSwKICAgICAvLyBJdCdzIGluIHRoZSByZWdpc3RlciBmaWxlLCBhdCBhIGRpZmZlcmVudCBs
b2NhdGlvbiwgYW5kIGl0J3MgdW5ib3hlZC4KQEAgLTExNCw2ICsxMTUsMTQgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICAKKyAgICBzdGF0aWMgVmFsdWVSZWNv
dmVyeSB1aW50MzJJbkdQUihNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBncHIpCisgICAgewor
ICAgICAgICBWYWx1ZVJlY292ZXJ5IHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fdGVjaG5pcXVl
ID0gVUludDMySW5HUFI7CisgICAgICAgIHJlc3VsdC5tX3NvdXJjZS5ncHIgPSBncHI7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAg
ICAgc3RhdGljIFZhbHVlUmVjb3ZlcnkgaW5QYWlyKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklE
IHRhZ0dQUiwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcGF5bG9hZEdQUikKICAgICB7CkBA
IC0xODIsNyArMTkxLDcgQEAgcHVibGljOgogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpSZWdp
c3RlcklEIGdwcigpIGNvbnN0CiAgICAgewotICAgICAgICBBU1NFUlQobV90ZWNobmlxdWUgPT0g
SW5HUFIgfHwgbV90ZWNobmlxdWUgPT0gVW5ib3hlZEludDMySW5HUFIgfHwgbV90ZWNobmlxdWUg
PT0gVW5ib3hlZEJvb2xlYW5JbkdQUik7CisgICAgICAgIEFTU0VSVChtX3RlY2huaXF1ZSA9PSBJ
bkdQUiB8fCBtX3RlY2huaXF1ZSA9PSBVbmJveGVkSW50MzJJbkdQUiB8fCBtX3RlY2huaXF1ZSA9
PSBVbmJveGVkQm9vbGVhbkluR1BSIHx8IG1fdGVjaG5pcXVlID09IFVJbnQzMkluR1BSKTsKICAg
ICAgICAgcmV0dXJuIG1fc291cmNlLmdwcjsKICAgICB9CiAgICAgCkBAIC0yNDMsOCArMjUyLDEx
IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBVbmJveGVkQm9vbGVhbkluR1BSOgogICAgICAgICAg
ICAgZnByaW50ZihvdXQsICJib29sKCUlciVkKSIsIGdwcigpKTsKICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFVJbnQzMkluR1BSOgorICAgICAgICAgICAgZnByaW50ZihvdXQsICJ1
aW50MzIoJSVyJWQpIiwgZ3ByKCkpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
SW5GUFI6Ci0gICAgICAgICAgICBmcHJpbnRmKG91dCwgIiUlciVkIiwgZnByKCkpOworICAgICAg
ICAgICAgZnByaW50ZihvdXQsICIlJWZyJWQiLCBmcHIoKSk7CiAgICAgICAgICAgICBicmVhazsK
ICNpZiBVU0UoSlNWQUxVRTMyXzY0KQogICAgICAgICBjYXNlIEluUGFpcjoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlz
aW9uIDEwMjcwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxw
ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAKK2NvbnN0IGRvdWJsZSBBc3NlbWJseUhlbHBlcnM6OnR3b1Rv
VGhlMzIgPSAoZG91YmxlKTB4MTAwMDAwMDAwdWxsOworCiBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNo
aW5lT2Zmc2V0PiYgQXNzZW1ibHlIZWxwZXJzOjpkZWNvZGVkQ29kZU1hcEZvcihDb2RlQmxvY2sq
IGNvZGVCbG9jaykKIHsKICAgICBBU1NFUlQoY29kZUJsb2NrID09IGNvZGVCbG9jay0+YmFzZWxp
bmVWZXJzaW9uKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJs
eUhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fz
c2VtYmx5SGVscGVycy5oCShyZXZpc2lvbiAxMDI3MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsNiArMzA1
LDggQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5l
T2Zmc2V0PiYgZGVjb2RlZENvZGVNYXBGb3IoQ29kZUJsb2NrKik7CisgICAgCisgICAgc3RhdGlj
IGNvbnN0IGRvdWJsZSB0d29Ub1RoZTMyOwogCiBwcm90ZWN0ZWQ6CiAgICAgSlNHbG9iYWxEYXRh
KiBtX2dsb2JhbERhdGE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQu
aAkocmV2aXNpb24gMTAyNzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsMTIgQEAgc3RydWN0IE9TUkV4aXQg
ewogICAgICAgICAgICAgcmV0dXJuIG1fYXJndW1lbnRzW2luZGV4XTsKICAgICAgICAgcmV0dXJu
IG1fdmFyaWFibGVzW2luZGV4IC0gbV9hcmd1bWVudHMuc2l6ZSgpXTsKICAgICB9CisgICAgVmFs
dWVSZWNvdmVyeSYgdmFsdWVSZWNvdmVyeUZvck9wZXJhbmQoaW50IG9wZXJhbmQpCisgICAgewor
ICAgICAgICBpZiAob3BlcmFuZElzQXJndW1lbnQob3BlcmFuZCkpCisgICAgICAgICAgICByZXR1
cm4gbV9hcmd1bWVudHNbb3BlcmFuZFRvQXJndW1lbnQob3BlcmFuZCldOworICAgICAgICByZXR1
cm4gbV92YXJpYWJsZXNbb3BlcmFuZF07CisgICAgfQogICAgIGJvb2wgaXNBcmd1bWVudChpbnQg
aW5kZXgpIGNvbnN0IHsgcmV0dXJuIGluZGV4IDwgKGludCltX2FyZ3VtZW50cy5zaXplKCk7IH0K
ICAgICBib29sIGlzVmFyaWFibGUoaW50IGluZGV4KSBjb25zdCB7IHJldHVybiAhaXNBcmd1bWVu
dChpbmRleCk7IH0KICAgICBpbnQgYXJndW1lbnRGb3JJbmRleChpbnQgaW5kZXgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlcjMyXzY0LmNwcAkocmV2aXNpb24gMTAyNzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIzMl82NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw2
ICsxMjQsNyBAQCB2b2lkIE9TUkV4aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAg
Ym9vbCBoYXZlVW5ib3hlZEludDMySW5SZWdpc3RlckZpbGUgPSBmYWxzZTsKICAgICBib29sIGhh
dmVVbmJveGVkQ2VsbEluUmVnaXN0ZXJGaWxlID0gZmFsc2U7CiAgICAgYm9vbCBoYXZlVW5ib3hl
ZEJvb2xlYW5JblJlZ2lzdGVyRmlsZSA9IGZhbHNlOworICAgIGJvb2wgaGF2ZVVJbnQzMnMgPSBm
YWxzZTsKICAgICBib29sIGhhdmVGUFJzID0gZmFsc2U7CiAgICAgYm9vbCBoYXZlQ29uc3RhbnRz
ID0gZmFsc2U7CiAgICAgYm9vbCBoYXZlVW5kZWZpbmVkID0gZmFsc2U7CkBAIC0xNDcsNiArMTQ4
LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAg
ICAgICAgIGNhc2UgSW5HUFI6CiAgICAgICAgICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQ
UjoKICAgICAgICAgICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CisgICAgICAgICAg
ICAgICAgY2FzZSBVSW50MzJJbkdQUjoKICAgICAgICAgICAgICAgICBjYXNlIEluUGFpcjoKICAg
ICAgICAgICAgICAgICBjYXNlIEluRlBSOgogICAgICAgICAgICAgICAgICAgICBpZiAoIXBvaXNv
bmVkVmlydHVhbFJlZ2lzdGVyc1tyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKV0pIHsKQEAgLTE2
MCw2ICsxNjIsMTAgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKKyAgICAgICAg
Y2FzZSBVSW50MzJJbkdQUjoKKyAgICAgICAgICAgIGhhdmVVSW50MzJzID0gdHJ1ZTsKKyAgICAg
ICAgICAgIGJyZWFrOworCiAgICAgICAgIGNhc2UgQWxyZWFkeUluUmVnaXN0ZXJGaWxlQXNVbmJv
eGVkSW50MzI6CiAgICAgICAgICAgICBoYXZlVW5ib3hlZEludDMySW5SZWdpc3RlckZpbGUgPSB0
cnVlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xODcsNyArMTkzLDggQEAgdm9pZCBPU1JFeGl0
Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoQnVmZmVyID0gc3RhdGljX2Nhc3Q8RW5jb2RlZEpTVmFs
dWUqPihtX2ppdC5nbG9iYWxEYXRhKCktPnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkgKiAobnVtYmVyT2ZQb2lzb25lZFZpcnR1YWxSZWdpc3RlcnMgKyAoKG51bWJl
ck9mRGlzcGxhY2VkVmlydHVhbFJlZ2lzdGVycyAqIDIpIDw9IEdQUkluZm86Om51bWJlck9mUmVn
aXN0ZXJzID8gMCA6IG51bWJlck9mRGlzcGxhY2VkVmlydHVhbFJlZ2lzdGVycykpKSk7CisgICAg
dW5zaWduZWQgc2NyYXRjaEJ1ZmZlckxlbmd0aEJlZm9yZVVJbnQzMnMgPSBudW1iZXJPZlBvaXNv
bmVkVmlydHVhbFJlZ2lzdGVycyArICgobnVtYmVyT2ZEaXNwbGFjZWRWaXJ0dWFsUmVnaXN0ZXJz
ICogMikgPD0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPyAwIDogbnVtYmVyT2ZEaXNwbGFj
ZWRWaXJ0dWFsUmVnaXN0ZXJzKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSogc2NyYXRjaEJ1ZmZlciA9
IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4obV9qaXQuZ2xvYmFsRGF0YSgpLT5zY3JhdGNo
QnVmZmVyRm9yU2l6ZShzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogKHNjcmF0Y2hCdWZmZXJMZW5n
dGhCZWZvcmVVSW50MzJzICsgKGhhdmVVSW50MzJzID8gMiA6IDApKSkpOwogCiAgICAgLy8gRnJv
bSBoZXJlIG9uLCB0aGUgY29kZSBhc3N1bWVzIHRoYXQgaXQgaXMgcHJvZml0YWJsZSB0byBtYXhp
bWl6ZSB0aGUgZGlzdGFuY2UKICAgICAvLyBiZXR3ZWVuIHdoZW4gc29tZXRoaW5nIGlzIGNvbXB1
dGVkIGFuZCB3aGVuIGl0IGlzIHN0b3JlZC4KQEAgLTI1Miw2ICsyNTksNDkgQEAgdm9pZCBPU1JF
eGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgICAgIG1faml0LnN0
b3JlMzIocmVjb3ZlcnkucGF5bG9hZEdQUigpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Io
KFZpcnR1YWxSZWdpc3RlcilvcGVyYW5kKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBVSW50MzJJbkdQUjogeworICAgICAgICAgICAgRW5jb2RlZEpT
VmFsdWUqIG15U2NyYXRjaCA9IHNjcmF0Y2hCdWZmZXIgKyBzY3JhdGNoQnVmZmVyTGVuZ3RoQmVm
b3JlVUludDMyczsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgR1BSUmVnIGFkZHJlc3NHUFIg
PSBHUFJJbmZvOjpyZWdUMDsKKyAgICAgICAgICAgIGlmIChhZGRyZXNzR1BSID09IHJlY292ZXJ5
LmdwcigpKQorICAgICAgICAgICAgICAgIGFkZHJlc3NHUFIgPSBHUFJJbmZvOjpyZWdUMTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIoYWRkcmVzc0dQUiwgbXlTY3Jh
dGNoKTsKKyAgICAgICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1t
UHRyKG15U2NyYXRjaCArIDEpLCBhZGRyZXNzR1BSKTsKKyAgICAgICAgICAgIG1faml0LnN0b3Jl
RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIGFkZHJlc3NHUFIpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMihB
c3NlbWJseUhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVjb3ZlcnkuZ3ByKCksIEFzc2Vt
Ymx5SGVscGVyczo6VHJ1c3RlZEltbTMyKDApKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
bV9qaXQuY29udmVydEludDMyVG9Eb3VibGUocmVjb3ZlcnkuZ3ByKCksIEZQUkluZm86OmZwUmVn
VDApOworICAgICAgICAgICAgbV9qaXQuYWRkRG91YmxlKEFzc2VtYmx5SGVscGVyczo6QWJzb2x1
dGVBZGRyZXNzKCZBc3NlbWJseUhlbHBlcnM6OnR3b1RvVGhlMzIpLCBGUFJJbmZvOjpmcFJlZ1Qw
KTsKKyAgICAgICAgICAgIGlmIChleGl0LmlzVmFyaWFibGUoaW5kZXgpICYmIHBvaXNvbmVkVmly
dHVhbFJlZ2lzdGVyc1tleGl0LnZhcmlhYmxlRm9ySW5kZXgoaW5kZXgpXSkgeworICAgICAgICAg
ICAgICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2hC
dWZmZXIgKyBzY3JhdGNoSW5kZXgpLCBhZGRyZXNzR1BSKTsKKyAgICAgICAgICAgICAgICBtX2pp
dC5zdG9yZURvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCBhZGRyZXNzR1BSKTsKKyAgICAgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgICAgIG1faml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVn
VDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcigoVmlydHVhbFJlZ2lzdGVyKW9wZXJhbmQp
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpKdW1wIGRvbmUg
PSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvc2l0aXZlLmxpbmso
Jm1faml0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGV4aXQuaXNWYXJpYWJsZShp
bmRleCkgJiYgcG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzW2V4aXQudmFyaWFibGVGb3JJbmRleChp
bmRleCldKSB7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMihyZWNvdmVyeS5ncHIoKSwg
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2NyYXRjaEJ1ZmZlciArIHNjcmF0Y2hJbmRleCkgKyBP
QkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpKTsK
KyAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSwgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oc2NyYXRjaEJ1
ZmZlciArIHNjcmF0Y2hJbmRleCkgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciwgYXNCaXRzLnRhZykpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICBtX2ppdC5zdG9yZTMyKHJlY292ZXJ5LmdwcigpLCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRG
b3IoKFZpcnR1YWxSZWdpc3RlcilvcGVyYW5kKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuc3Rv
cmUzMihBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksIEFz
c2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpb3BlcmFuZCkpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBkb25lLmxpbmsoJm1faml0KTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIobXlTY3JhdGNoICsgMSksIGFkZHJlc3NHUFIpOworICAgICAgICAgICAgbV9qaXQu
bG9hZERvdWJsZShhZGRyZXNzR1BSLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAgICAgICAgIG1f
aml0LmxvYWRQdHIobXlTY3JhdGNoLCBhZGRyZXNzR1BSKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGV4aXQuaXNWYXJpYWJsZShpbmRleCkgJiYgcG9p
c29uZWRWaXJ0dWFsUmVnaXN0ZXJzW2V4aXQudmFyaWFibGVGb3JJbmRleChpbmRleCldKQorICAg
ICAgICAgICAgICAgIHNjcmF0Y2hJbmRleCsrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0z
NzgsNiArNDI4LDcgQEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAog
CiAgICAgICAgICAgICBjYXNlIEluRlBSOgogICAgICAgICAgICAgY2FzZSBJblBhaXI6CisgICAg
ICAgICAgICBjYXNlIFVJbnQzMkluR1BSOgogICAgICAgICAgICAgICAgIG1faml0LmxvYWQzMihy
ZWludGVycHJldF9jYXN0PGNoYXIqPihzY3JhdGNoQnVmZmVyICsgc2NyYXRjaEluZGV4KSArIE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCksIEdQ
UkluZm86OnJlZ1QwKTsKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkMzIocmVpbnRlcnByZXRf
Y2FzdDxjaGFyKj4oc2NyYXRjaEJ1ZmZlciArIHNjcmF0Y2hJbmRleCkgKyBPQkpFQ1RfT0ZGU0VU
T0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZyksIEdQUkluZm86OnJlZ1QxKTsK
ICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhl
bHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3Rlcil2aXJ0dWFsUmVnaXN0ZXIpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
NjQuY3BwCShyZXZpc2lvbiAxMDI3MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlcjY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw3IEBA
IHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICBib29sIGhhdmVG
UFJzID0gZmFsc2U7CiAgICAgYm9vbCBoYXZlQ29uc3RhbnRzID0gZmFsc2U7CiAgICAgYm9vbCBo
YXZlVW5kZWZpbmVkID0gZmFsc2U7CisgICAgYm9vbCBoYXZlVUludDMycyA9IGZhbHNlOwogICAg
IAogICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBleGl0Lm51bWJlck9mUmVjb3Zlcmll
cygpOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0g
ZXhpdC52YWx1ZVJlY292ZXJ5KGluZGV4KTsKQEAgLTE0MCw2ICsxNDEsNyBAQCB2b2lkIE9TUkV4
aXRDb21waWxlcjo6Y29tcGlsZUV4aXQoY29uc3QgCiAgICAgICAgICAgICAgICAgc3dpdGNoIChl
eGl0Lm1fdmFyaWFibGVzW3JlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpXS50ZWNobmlxdWUoKSkg
ewogICAgICAgICAgICAgICAgIGNhc2UgSW5HUFI6CiAgICAgICAgICAgICAgICAgY2FzZSBVbmJv
eGVkSW50MzJJbkdQUjoKKyAgICAgICAgICAgICAgICBjYXNlIFVJbnQzMkluR1BSOgogICAgICAg
ICAgICAgICAgIGNhc2UgSW5GUFI6CiAgICAgICAgICAgICAgICAgICAgIGlmICghcG9pc29uZWRW
aXJ0dWFsUmVnaXN0ZXJzW3JlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpXSkgewogICAgICAgICAg
ICAgICAgICAgICAgICAgcG9pc29uZWRWaXJ0dWFsUmVnaXN0ZXJzW3JlY292ZXJ5LnZpcnR1YWxS
ZWdpc3RlcigpXSA9IHRydWU7CkBAIC0xNTcsNiArMTU5LDEwIEBAIHZvaWQgT1NSRXhpdENvbXBp
bGVyOjpjb21waWxlRXhpdChjb25zdCAKICAgICAgICAgICAgIGhhdmVVbmJveGVkSW50MzJzID0g
dHJ1ZTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCisgICAgICAgIGNhc2UgVUlu
dDMySW5HUFI6CisgICAgICAgICAgICBoYXZlVUludDMycyA9IHRydWU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIAogICAgICAgICBjYXNlIEluRlBSOgogICAgICAgICAgICAgaGF2
ZUZQUnMgPSB0cnVlOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xODAsNiArMTg2LDggQEAgdm9p
ZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIkRpc3BsYWNlZD0ldSAiLCBudW1iZXJPZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3RlcnMp
OwogICAgIGlmIChoYXZlVW5ib3hlZEludDMycykKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJV
bmJveGVkSW50MzIgIik7CisgICAgaWYgKGhhdmVVSW50MzJzKQorICAgICAgICBmcHJpbnRmKHN0
ZGVyciwgIlVJbnQzMiAiKTsKICAgICBpZiAoaGF2ZUZQUnMpCiAgICAgICAgIGZwcmludGYoc3Rk
ZXJyLCAiRlBSICIpOwogICAgIGlmIChoYXZlQ29uc3RhbnRzKQpAQCAtMTg5LDE0ICsxOTcsMTQg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgIGZwcmludGYo
c3RkZXJyLCAiICIpOwogI2VuZGlmCiAgICAgCi0gICAgRW5jb2RlZEpTVmFsdWUqIHNjcmF0Y2hC
dWZmZXIgPSBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KG1faml0Lmdsb2JhbERhdGEoKS0+
c2NyYXRjaEJ1ZmZlckZvclNpemUoc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSAqIChudW1iZXJPZlBv
aXNvbmVkVmlydHVhbFJlZ2lzdGVycyArIChudW1iZXJPZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3Rl
cnMgPD0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMgPyAwIDogbnVtYmVyT2ZEaXNwbGFjZWRW
aXJ0dWFsUmVnaXN0ZXJzKSkpKTsKKyAgICBFbmNvZGVkSlNWYWx1ZSogc2NyYXRjaEJ1ZmZlciA9
IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4obV9qaXQuZ2xvYmFsRGF0YSgpLT5zY3JhdGNo
QnVmZmVyRm9yU2l6ZShzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogc3RkOjptYXgoaGF2ZVVJbnQz
MnMgPyAydSA6IDB1LCBudW1iZXJPZlBvaXNvbmVkVmlydHVhbFJlZ2lzdGVycyArIChudW1iZXJP
ZkRpc3BsYWNlZFZpcnR1YWxSZWdpc3RlcnMgPD0gR1BSSW5mbzo6bnVtYmVyT2ZSZWdpc3RlcnMg
PyAwIDogbnVtYmVyT2ZEaXNwbGFjZWRWaXJ0dWFsUmVnaXN0ZXJzKSkpKTsKIAogICAgIC8vIEZy
b20gaGVyZSBvbiwgdGhlIGNvZGUgYXNzdW1lcyB0aGF0IGl0IGlzIHByb2ZpdGFibGUgdG8gbWF4
aW1pemUgdGhlIGRpc3RhbmNlCiAgICAgLy8gYmV0d2VlbiB3aGVuIHNvbWV0aGluZyBpcyBjb21w
dXRlZCBhbmQgd2hlbiBpdCBpcyBzdG9yZWQuCiAgICAgCiAgICAgLy8gNSkgUGVyZm9ybSBhbGwg
cmVib3hpbmcgb2YgaW50ZWdlcnMuCiAgICAgCi0gICAgaWYgKGhhdmVVbmJveGVkSW50MzJzKSB7
CisgICAgaWYgKGhhdmVVbmJveGVkSW50MzJzIHx8IGhhdmVVSW50MzJzKSB7CiAgICAgICAgIGZv
ciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBleGl0Lm51bWJlck9mUmVjb3ZlcmllcygpOyArK2lu
ZGV4KSB7CiAgICAgICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9IGV4aXQu
dmFsdWVSZWNvdmVyeShpbmRleCk7CiAgICAgICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2hu
aXF1ZSgpKSB7CkBAIC0yMDksNiArMjE3LDQ0IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21w
aWxlRXhpdChjb25zdCAKICAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKEFzc2VtYmx5SGVs
cGVyczo6SW1tMzIoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KFRhZ1R5cGVOdW1iZXIgPj4gMzIpKSwg
QXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Ioc3RhdGljX2Nhc3Q8VmlydHVhbFJlZ2lzdGVyPihleGl0
Lm9wZXJhbmRGb3JJbmRleChpbmRleCkpKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFVJbnQzMkluR1BSOiB7CisgICAgICAgICAg
ICAgICAgLy8gVGhpcyBvY2N1cnMgd2hlbiB0aGUgc3BlY3VsYXRpdmUgSklUIGxlZnQgYW4gdW5z
aWduZWQgMzItYml0IGludGVnZXIKKyAgICAgICAgICAgICAgICAvLyBpbiBhIEdQUi4gSWYgaXQn
cyBwb3NpdGl2ZSwgd2UgY2FuIGp1c3QgYm94IHRoZSBpbnQuIE90aGVyd2lzZSB3ZQorICAgICAg
ICAgICAgICAgIC8vIG5lZWQgdG8gdHVybiBpdCBpbnRvIGEgYm94ZWQgZG91YmxlLgorICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IHRyeSB0byBiZSBjbGV2ZXIg
d2l0aCByZWdpc3RlciBhbGxvY2F0aW9uIGhlcmU7IHdlIGFzc3VtZQorICAgICAgICAgICAgICAg
IC8vIHRoYXQgdGhlIHByb2dyYW0gaXMgdXNpbmcgRlBScyBhbmQgd2UgZG9uJ3QgdHJ5IHRvIGZp
Z3VyZSBvdXQgd2hpY2gKKyAgICAgICAgICAgICAgICAvLyBvbmVzIGl0IGlzIHVzaW5nLiBJbnN0
ZWFkIGp1c3QgdGVtcG9yYXJpbHkgc2F2ZSBmcFJlZ1QwIGFuZCB0aGVuCisgICAgICAgICAgICAg
ICAgLy8gcmVzdG9yZSBpdC4gVGhpcyBtYWtlcyBzZW5zZSBiZWNhdXNlIHRoaXMgcGF0aCBpcyBu
b3QgY2hlYXAgdG8gYmVnaW4KKyAgICAgICAgICAgICAgICAvLyB3aXRoLCBhbmQgc2hvdWxkIGhh
cHBlbiB2ZXJ5IHJhcmVseS4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBHUFJS
ZWcgYWRkcmVzc0dQUiA9IEdQUkluZm86OnJlZ1QwOworICAgICAgICAgICAgICAgIGlmIChhZGRy
ZXNzR1BSID09IHJlY292ZXJ5LmdwcigpKQorICAgICAgICAgICAgICAgICAgICBhZGRyZXNzR1BS
ID0gR1BSSW5mbzo6cmVnVDE7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbV9q
aXQuc3RvcmVQdHIoYWRkcmVzc0dQUiwgc2NyYXRjaEJ1ZmZlcik7CisgICAgICAgICAgICAgICAg
bV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2NyYXRjaEJ1ZmZlciAr
IDEpLCBhZGRyZXNzR1BSKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZURvdWJsZShGUFJJ
bmZvOjpmcFJlZ1QwLCBhZGRyZXNzR1BSKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMihBc3Nl
bWJseUhlbHBlcnM6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgcmVjb3ZlcnkuZ3ByKCksIEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKDApKTsKKworICAgICAgICAgICAgICAgIG1faml0LmNvbnZl
cnRJbnQzMlRvRG91YmxlKHJlY292ZXJ5LmdwcigpLCBGUFJJbmZvOjpmcFJlZ1QwKTsKKyAgICAg
ICAgICAgICAgICBtX2ppdC5hZGREb3VibGUoQXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJl
c3MoJkFzc2VtYmx5SGVscGVyczo6dHdvVG9UaGUzMiksIEZQUkluZm86OmZwUmVnVDApOworICAg
ICAgICAgICAgICAgIG1faml0LmJveERvdWJsZShGUFJJbmZvOjpmcFJlZ1QwLCByZWNvdmVyeS5n
cHIoKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJz
OjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgcG9zaXRpdmUubGluaygmbV9qaXQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgIG1faml0Lm9yUHRyKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVjb3Zl
cnkuZ3ByKCkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRvbmUubGluaygm
bV9qaXQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1faml0LmxvYWREb3Vi
bGUoYWRkcmVzc0dQUiwgRlBSSW5mbzo6ZnBSZWdUMCk7CisgICAgICAgICAgICAgICAgbV9qaXQu
bG9hZFB0cihzY3JhdGNoQnVmZmVyLCBhZGRyZXNzR1BSKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0yMjYsNiArMjcyLDcg
QEAgdm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICBzd2l0
Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7CiAgICAgICAgIGNhc2UgSW5HUFI6CiAgICAgICAg
IGNhc2UgVW5ib3hlZEludDMySW5HUFI6CisgICAgICAgIGNhc2UgVUludDMySW5HUFI6CiAgICAg
ICAgICAgICBpZiAoZXhpdC5pc1ZhcmlhYmxlKGluZGV4KSAmJiBwb2lzb25lZFZpcnR1YWxSZWdp
c3RlcnNbZXhpdC52YXJpYWJsZUZvckluZGV4KGluZGV4KV0pCiAgICAgICAgICAgICAgICAgbV9q
aXQuc3RvcmVQdHIocmVjb3ZlcnkuZ3ByKCksIHNjcmF0Y2hCdWZmZXIgKyBzY3JhdGNoSW5kZXgr
Kyk7CiAgICAgICAgICAgICBlbHNlCkBAIC0zOTUsNiArNDQyLDcgQEAgdm9pZCBPU1JFeGl0Q29t
cGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IAogICAgICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50
ZWNobmlxdWUoKSkgewogICAgICAgICAgICAgY2FzZSBJbkdQUjoKICAgICAgICAgICAgIGNhc2Ug
VW5ib3hlZEludDMySW5HUFI6CisgICAgICAgICAgICBjYXNlIFVJbnQzMkluR1BSOgogICAgICAg
ICAgICAgY2FzZSBJbkZQUjoKICAgICAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKHNjcmF0Y2hC
dWZmZXIgKyBzY3JhdGNoSW5kZXgrKywgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgICAg
IG1faml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NG
b3IoKFZpcnR1YWxSZWdpc3Rlcil2aXJ0dWFsUmVnaXN0ZXIpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkocmV2
aXNpb24gMTAyNzAxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDcgKzQ1NCw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlVUludDMKICAgICBKSVRDb21waWxlcjo6SnVtcCBw
b3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbk9yRXF1
YWwsIG9wMS5ncHIoKSwgVHJ1c3RlZEltbTMyKDApKTsKICAgICAgICAgCiAgICAgbV9qaXQuY29u
dmVydEludDMyVG9Eb3VibGUob3AxLmdwcigpLCBib3hlci5mcHIoKSk7Ci0gICAgbV9qaXQubW92
ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigmdHdvVG9UaGUzMiksIHJlc3VsdFBheWxvYWQu
Z3ByKCkpOyAvLyByZXVzZSByZXN1bHRQYXlsb2FkIHJlZ2lzdGVyIGhlcmUuCisgICAgbV9qaXQu
bW92ZShKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cigmQXNzZW1ibHlIZWxwZXJzOjp0d29Ub1Ro
ZTMyKSwgcmVzdWx0UGF5bG9hZC5ncHIoKSk7IC8vIHJldXNlIHJlc3VsdFBheWxvYWQgcmVnaXN0
ZXIgaGVyZS4KICAgICBtX2ppdC5hZGREb3VibGUoSklUQ29tcGlsZXI6OkFkZHJlc3MocmVzdWx0
UGF5bG9hZC5ncHIoKSwgMCksIGJveGVyLmZwcigpKTsKICAgICAgICAgCiAgICAgYm94RG91Ymxl
KGJveGVyLmZwcigpLCByZXN1bHRUYWcuZ3ByKCksIHJlc3VsdFBheWxvYWQuZ3ByKCkpOwpAQCAt
MjE2OSwzNCArMjE2OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFVJbnQzMlRvTnVtYmVyOiB7Ci0gICAgICAg
IGlmICghbm9kZUNhblNwZWN1bGF0ZUludGVnZXIobm9kZS5hcml0aE5vZGVGbGFncygpKSkgewot
ICAgICAgICAgICAgLy8gV2Uga25vdyB0aGF0IHRoaXMgc29tZXRpbWVzIHByb2R1Y2VzIGRvdWJs
ZXMuIFNvIHByb2R1Y2UgYSBkb3VibGUgZXZlcnkKLSAgICAgICAgICAgIC8vIHRpbWUuIFRoaXMg
YXQgbGVhc3QgYWxsb3dzIHN1YnNlcXVlbnQgY29kZSB0byBub3QgaGF2ZSB3ZWlyZCBjb25kaXRp
b25hbHMuCi0gICAgICAgICAgICAKLSAgICAgICAgICAgIEludGVnZXJPcGVyYW5kIG9wMSh0aGlz
LCBub2RlLmNoaWxkMSgpKTsKLSAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEdQUlJlZyBpbnB1dEdQUiA9IG9wMS5ncHIoKTsK
LSAgICAgICAgICAgIEZQUlJlZyBvdXRwdXRGUFIgPSByZXN1bHQuZnByKCk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIG1faml0LmNvbnZlcnRJbnQzMlRvRG91YmxlKGlucHV0R1BSLCBvdXRw
dXRGUFIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBwb3Np
dGl2ZSA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbk9yRXF1YWws
IGlucHV0R1BSLCBUcnVzdGVkSW1tMzIoMCkpOwotICAgICAgICAgICAgbV9qaXQuYWRkRG91Ymxl
KEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3MoJnR3b1RvVGhlMzIpLCBvdXRwdXRGUFIpOwot
ICAgICAgICAgICAgcG9zaXRpdmUubGluaygmbV9qaXQpOwotICAgICAgICAgICAgCi0gICAgICAg
ICAgICBkb3VibGVSZXN1bHQob3V0cHV0RlBSLCBtX2NvbXBpbGVJbmRleCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIEludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBu
b2RlLmNoaWxkMSgpKTsKLSAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwot
Ci0gICAgICAgIC8vIFRlc3QgdGhlIG9wZXJhbmQgaXMgcG9zaXRpdmUuCi0gICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBvcDEuZ3ByKCksIFRydXN0ZWRJbW0zMigwKSkp
OwotCi0gICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOwotICAgICAg
ICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgsIG9wMS5mb3JtYXQo
KSk7CisgICAgICAgIGNvbXBpbGVVSW50MzJUb051bWJlcihub2RlKTsKICAgICAgICAgYnJlYWs7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9uIDEwMjcwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2Miw3
ICs0NjIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVVJbnQzCiAgICAg
SklUQ29tcGlsZXI6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6R3JlYXRlclRoYW5PckVxdWFsLCBvcDEuZ3ByKCksIFRydXN0ZWRJbW0zMigwKSk7CiAgICAg
CiAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUob3AxLmdwcigpLCBib3hlci5mcHIoKSk7
Ci0gICAgbV9qaXQuYWRkRG91YmxlKEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3MoJnR3b1Rv
VGhlMzIpLCBib3hlci5mcHIoKSk7CisgICAgbV9qaXQuYWRkRG91YmxlKEpJVENvbXBpbGVyOjpB
YnNvbHV0ZUFkZHJlc3MoJkFzc2VtYmx5SGVscGVyczo6dHdvVG9UaGUzMiksIGJveGVyLmZwcigp
KTsKICAgICAKICAgICBib3hEb3VibGUoYm94ZXIuZnByKCksIHJlc3VsdC5ncHIoKSk7CiAgICAg
CkBAIC0yMjAxLDM0ICsyMjAxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgVUludDMyVG9OdW1iZXI6IHsKLSAg
ICAgICAgaWYgKCFub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdzKCkp
KSB7Ci0gICAgICAgICAgICAvLyBXZSBrbm93IHRoYXQgdGhpcyBzb21ldGltZXMgcHJvZHVjZXMg
ZG91Ymxlcy4gU28gcHJvZHVjZSBhIGRvdWJsZSBldmVyeQotICAgICAgICAgICAgLy8gdGltZS4g
VGhpcyBhdCBsZWFzdCBhbGxvd3Mgc3Vic2VxdWVudCBjb2RlIHRvIG5vdCBoYXZlIHdlaXJkIGNv
bmRpdGlvbmFscy4KLSAgICAgICAgICAgIAotICAgICAgICAgICAgSW50ZWdlck9wZXJhbmQgb3Ax
KHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0
aGlzKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgR1BSUmVnIGlucHV0R1BSID0gb3AxLmdw
cigpOwotICAgICAgICAgICAgRlBSUmVnIG91dHB1dEZQUiA9IHJlc3VsdC5mcHIoKTsKLSAgICAg
ICAgICAgIAotICAgICAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUoaW5wdXRHUFIs
IG91dHB1dEZQUik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IHBvc2l0aXZlID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkdyZWF0ZXJUaGFuT3JF
cXVhbCwgaW5wdXRHUFIsIFRydXN0ZWRJbW0zMigwKSk7Ci0gICAgICAgICAgICBtX2ppdC5hZGRE
b3VibGUoSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVzcygmdHdvVG9UaGUzMiksIG91dHB1dEZQ
Uik7Ci0gICAgICAgICAgICBwb3NpdGl2ZS5saW5rKCZtX2ppdCk7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgICAgIGRvdWJsZVJlc3VsdChvdXRwdXRGUFIsIG1fY29tcGlsZUluZGV4KTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgSW50ZWdlck9wZXJhbmQgb3AxKHRo
aXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9w
MSk7Ci0KLSAgICAgICAgLy8gVGVzdCB0aGUgb3BlcmFuZCBpcyBwb3NpdGl2ZS4KLSAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMS5ncHIoKSwgVHJ1c3RlZEltbTMy
KDApKSk7Ci0KLSAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7Ci0g
ICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgb3AxLmZv
cm1hdCgpKTsKKyAgICAgICAgY29tcGlsZVVJbnQzMlRvTnVtYmVyKG5vZGUpOwogICAgICAgICBi
cmVhazsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCShyZXZpc2lvbiAxMDI3MDEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsOCAr
NDQsNiBAQCBzdGF0aWMgZG91YmxlIERGR19PUEVSQVRJT04gZm1vZEFzREZHT3BlCiAjZGVmaW5l
IGZtb2RBc0RGR09wZXJhdGlvbiBmbW9kCiAjZW5kaWYKIAotY29uc3QgZG91YmxlIFNwZWN1bGF0
aXZlSklUOjp0d29Ub1RoZTMyID0gKGRvdWJsZSkweDEwMDAwMDAwMHVsbDsKLQogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y2xlYXJHZW5lcmF0aW9uSW5mbygpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fZ2VuZXJhdGlvbkluZm8uc2l6ZSgpOyArK2kpCkBAIC0xNDU5LDYgKzE0NTcs
NTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQzMgogICAgIGludGVn
ZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgb3AxLmZvcm1hdCgpKTsKIH0K
IAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVVJbnQzMlRvTnVtYmVyKE5vZGUmIG5vZGUp
Cit7CisgICAgaWYgKCFub2RlQ2FuU3BlY3VsYXRlSW50ZWdlcihub2RlLmFyaXRoTm9kZUZsYWdz
KCkpKSB7CisgICAgICAgIC8vIFdlIGtub3cgdGhhdCB0aGlzIHNvbWV0aW1lcyBwcm9kdWNlcyBk
b3VibGVzLiBTbyBwcm9kdWNlIGEgZG91YmxlIGV2ZXJ5CisgICAgICAgIC8vIHRpbWUuIFRoaXMg
YXQgbGVhc3QgYWxsb3dzIHN1YnNlcXVlbnQgY29kZSB0byBub3QgaGF2ZSB3ZWlyZCBjb25kaXRp
b25hbHMuCisgICAgICAgICAgICAKKyAgICAgICAgSW50ZWdlck9wZXJhbmQgb3AxKHRoaXMsIG5v
ZGUuY2hpbGQxKCkpOworICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAg
ICAgICAgCisgICAgICAgIEdQUlJlZyBpbnB1dEdQUiA9IG9wMS5ncHIoKTsKKyAgICAgICAgRlBS
UmVnIG91dHB1dEZQUiA9IHJlc3VsdC5mcHIoKTsKKyAgICAgICAgICAgIAorICAgICAgICBtX2pp
dC5jb252ZXJ0SW50MzJUb0RvdWJsZShpbnB1dEdQUiwgb3V0cHV0RlBSKTsKKyAgICAgICAgICAg
IAorICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBwb3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIGlucHV0R1BSLCBUcnVzdGVkSW1tMzIo
MCkpOworICAgICAgICBtX2ppdC5hZGREb3VibGUoSklUQ29tcGlsZXI6OkFic29sdXRlQWRkcmVz
cygmQXNzZW1ibHlIZWxwZXJzOjp0d29Ub1RoZTMyKSwgb3V0cHV0RlBSKTsKKyAgICAgICAgcG9z
aXRpdmUubGluaygmbV9qaXQpOworICAgICAgICAgICAgCisgICAgICAgIGRvdWJsZVJlc3VsdChv
dXRwdXRGUFIsIG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IEludGVnZXJPcGVyYW5kIG9wMSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKKyAgICBHUFJUZW1wb3Jh
cnkgcmVzdWx0KHRoaXMsIG9wMSk7CisKKyAgICAvLyBUZXN0IHRoZSBvcGVyYW5kIGlzIHBvc2l0
aXZlLiBUaGlzIGlzIGEgdmVyeSBzcGVjaWFsIHNwZWN1bGF0aW9uIGNoZWNrIC0gd2UgYWN0dWFs
bHkKKyAgICAvLyB1c2Ugcm9sbC1mb3J3YXJkIHNwZWN1bGF0aW9uIGhlcmUsIHdoZXJlIGlmIHRo
aXMgZmFpbHMsIHdlIGp1bXAgdG8gdGhlIGJhc2VsaW5lCisgICAgLy8gaW5zdHJ1Y3Rpb24gdGhh
dCBmb2xsb3dzIHVzLCByYXRoZXIgdGhhbiB0aGUgb25lIHdlJ3JlIGV4ZWN1dGluZyByaWdodCBu
b3cuIFdlIGhhdmUKKyAgICAvLyB0byBkbyB0aGlzIGJlY2F1c2UgYnkgdGhpcyBwb2ludCwgdGhl
IG9yaWdpbmFsIHZhbHVlcyBuZWNlc3NhcnkgdG8gY29tcGlsZSB3aGF0ZXZlcgorICAgIC8vIG9w
ZXJhdGlvbiB0aGUgVUludDMyVG9OdW1iZXIgb3JpZ2luYXRlZCBmcm9tIG1pZ2h0IGJlIGRlYWQu
CisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMS5ncHIoKSwgVHJ1c3Rl
ZEltbTMyKDApKSk7CisgICAgICAgIAorICAgIC8vIFZlcmlmeSB0aGF0IHdlIGNhbiBkbyByb2xs
IGZvcndhcmQuCisgICAgQVNTRVJUKGF0KG1fY29tcGlsZUluZGV4ICsgMSkub3AgPT0gU2V0TG9j
YWwpOworICAgIEFTU0VSVChhdChtX2NvbXBpbGVJbmRleCArIDEpLmNvZGVPcmlnaW4gPT0gbm9k
ZS5jb2RlT3JpZ2luKTsKKyAgICBBU1NFUlQoYXQobV9jb21waWxlSW5kZXggKyAyKS5jb2RlT3Jp
Z2luICE9IG5vZGUuY29kZU9yaWdpbik7CisgICAgICAgIAorICAgIC8vIE5vdyBkbyB0aGUgbWFn
aWMuCisgICAgT1NSRXhpdCYgZXhpdCA9IG1faml0LmNvZGVCbG9jaygpLT5sYXN0T1NSRXhpdCgp
OworICAgIE5vZGUmIHNldExvY2FsID0gYXQobV9jb21waWxlSW5kZXggKyAxKTsKKyAgICBleGl0
Lm1fY29kZU9yaWdpbiA9IGF0KG1fY29tcGlsZUluZGV4ICsgMikuY29kZU9yaWdpbjsKKyAgICBl
eGl0Lm1fbGFzdFNldE9wZXJhbmQgPSBzZXRMb2NhbC5sb2NhbCgpOworICAgICAgICAKKyAgICAv
LyBDcmVhdGUgdGhlIHZhbHVlIHJlY292ZXJ5LCBhbmQgc3R1ZmYgaXQgaW50byB0aGUgcmlnaHQg
cGxhY2UuCisgICAgZXhpdC52YWx1ZVJlY292ZXJ5Rm9yT3BlcmFuZChzZXRMb2NhbC5sb2NhbCgp
KSA9IFZhbHVlUmVjb3Zlcnk6OnVpbnQzMkluR1BSKG9wMS5ncHIoKSk7CisKKyAgICBtX2ppdC5t
b3ZlKG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKKyAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbV9jb21waWxlSW5kZXgsIG9wMS5mb3JtYXQoKSk7Cit9CisKIHN0YXRpYyB2b2lkIGNv
bXBpbGVDbGFtcERvdWJsZVRvQnl0ZShKSVRDb21waWxlciYgaml0LCBHUFJSZWcgcmVzdWx0LCBG
UFJSZWcgc291cmNlLCBGUFJSZWcgc2NyYXRjaCkKIHsKICAgICAvLyBVbm9yZGVyZWQgY29tcGFy
ZSBzbyB3ZSBwaWNrIHVwIE5hTgpAQCAtMTY0MCw3ICsxNjg4LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25JbgogICAgICAgICBGUFJUZW1wb3JhcnkgZnJlc3VsdCh0
aGlzKTsKICAgICAgICAgbV9qaXQuY29udmVydEludDMyVG9Eb3VibGUocmVzdWx0UmVnLCBmcmVz
dWx0LmZwcigpKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgcG9zaXRpdmUgPSBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6R3JlYXRlclRoYW5PckVxdWFsLCByZXN1bHRSZWcsIFRy
dXN0ZWRJbW0zMigwKSk7Ci0gICAgICAgIG1faml0LmFkZERvdWJsZShKSVRDb21waWxlcjo6QWJz
b2x1dGVBZGRyZXNzKCZ0d29Ub1RoZTMyKSwgZnJlc3VsdC5mcHIoKSk7CisgICAgICAgIG1faml0
LmFkZERvdWJsZShKSVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKCZBc3NlbWJseUhlbHBlcnM6
OnR3b1RvVGhlMzIpLCBmcmVzdWx0LmZwcigpKTsKICAgICAgICAgcG9zaXRpdmUubGluaygmbV9q
aXQpOwogICAgICAgICBkb3VibGVSZXN1bHQoZnJlc3VsdC5mcHIoKSwgbV9jb21waWxlSW5kZXgp
OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmgJKHJldmlzaW9uIDEwMjcwMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDggKzE3MCw2IEBAIHBy
aXZhdGU6CiAKICAgICBlbnVtIFVzZUNoaWxkcmVuTW9kZSB7IENhbGxVc2VDaGlsZHJlbiwgVXNl
Q2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5IH07CiAgICAgCi0gICAgc3RhdGljIGNvbnN0IGRvdWJs
ZSB0d29Ub1RoZTMyOwotCiBwdWJsaWM6CiAgICAgU3BlY3VsYXRpdmVKSVQoSklUQ29tcGlsZXIm
KTsKIApAQCAtMTk2OSw2ICsxOTY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNvbXBpbGVHZXRD
aGFyQ29kZUF0KE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uU3RyaW5nKE5vZGUm
KTsKICAgICB2b2lkIGNvbXBpbGVWYWx1ZVRvSW50MzIoTm9kZSYpOworICAgIHZvaWQgY29tcGls
ZVVJbnQzMlRvTnVtYmVyKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVHZXRCeVZhbE9uQnl0ZUFy
cmF5KE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVQdXRCeVZhbEZvckJ5dGVBcnJheShHUFJSZWcg
YmFzZSwgR1BSUmVnIHByb3BlcnR5LCBOb2RlJik7CiAgICAgdm9pZCBjb21waWxlQXJpdGhNdWwo
Tm9kZSYpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTAyNzIwKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTItMTMgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBERkcgT1NSIGV4aXQgZm9yIFVJbnQz
MlRvTnVtYmVyIHNob3VsZCByb2xsIGZvcndhcmQsIG5vdCByb2xsIGJhY2t3YXJkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQ2MworCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9kZmctdWlu
dDMyLXRvLW51bWJlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvanMvZGZn
LXVpbnQzMi10by1udW1iZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQt
dGVzdHMvZGZnLXVpbnQzMi10by1udW1iZXIuanM6IEFkZGVkLgorICAgICAgICAoZm9vKToKKwog
MjAxMS0xMi0xMyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJv
bGxpbmcgb3V0IHIxMDI0NjEsIGEgY2hhbmdlIHRvIGEgbGF5b3V0IHRlc3QgdG8gdHJ5IHRvIHJl
bW92ZSBmbGFraW5lc3Mgb24gQ2hyb21pdW0uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL2Rm
Zy11aW50MzItdG8tbnVtYmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL2RmZy11aW50MzItdG8tbnVtYmVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvanMvZGZnLXVpbnQzMi10by1udW1iZXItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitUaGlzIHRlc3RzIHRoYXQgaWYgdGhlIERG
RyBmYWlscyB0byBjb252ZXJ0IGEgdWludDMyIHRvIGEgbnVtYmVyLCBpdCB3aWxsIE9TUiBleGl0
IGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcmVzdWx0
IGlzIDEyNDUwMAorUEFTUyBmb28oe2Y6MjE0NzQ4MzY0OH0sIHtmOjMyfSkgaXMgMjE0NzQ4MzY0
OAorUEFTUyBmb28oe2Y6MjE0NzQ4MzY0OH0sIHtmOjMxfSkgaXMgMQorUEFTUyBmb28oe2Y6MjE0
NzQ4MzY0OH0sIHtmOjMwfSkgaXMgMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvanMvZGZnLXVpbnQzMi10
by1udW1iZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL2RmZy11aW50
MzItdG8tbnVtYmVyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL2Rm
Zy11aW50MzItdG8tbnVtYmVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKKzwh
RE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhl
YWQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9kZmctdWludDMyLXRvLW51
bWJlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9kZmctdWludDMyLXRvLW51bWJlci5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9kZmctdWludDMyLXRvLW51bWJlci5qcwkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy11aW50MzIt
dG8tbnVtYmVyLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitkZXNjcmlwdGlvbigK
KyJUaGlzIHRlc3RzIHRoYXQgaWYgdGhlIERGRyBmYWlscyB0byBjb252ZXJ0IGEgdWludDMyIHRv
IGEgbnVtYmVyLCBpdCB3aWxsIE9TUiBleGl0IGNvcnJlY3RseS4iCispOworCitmdW5jdGlvbiBm
b28oYSxiKSB7CisgICAgcmV0dXJuIGEuZiA+Pj4gYi5mOworfQorCit2YXIgcmVzdWx0ID0gMDsK
K2ZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDsgKytpKSB7CisgICAgcmVzdWx0ICs9IGZvbyh7Zjpp
ICsgMC41fSwge2Y6Mn0pOworfQorCitzaG91bGRCZSgicmVzdWx0IiwgIjEyNDUwMCIpOworCitz
aG91bGRCZSgiZm9vKHtmOjIxNDc0ODM2NDh9LCB7ZjozMn0pIiwgIjIxNDc0ODM2NDgiKTsKK3No
b3VsZEJlKCJmb28oe2Y6MjE0NzQ4MzY0OH0sIHtmOjMxfSkiLCAiMSIpOworc2hvdWxkQmUoImZv
byh7ZjoyMTQ3NDgzNjQ4fSwge2Y6MzB9KSIsICIyIik7CisK
</data>
<flag name="review"
          id="119013"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>