<?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>14109</bug_id>
          
          <creation_ts>2007-06-12 19:26:44 -0700</creation_ts>
          <short_desc>Cleanup JSEvent and JSClipboard in preparation for autogeneration</short_desc>
          <delta_ts>2007-06-12 21:51: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>DOM</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>13779</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>7732</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-12 19:26:44 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7733</commentid>
    <comment_count>1</comment_count>
      <attachid>14990</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-12 19:34:36 -0700</bug_when>
    <thetext>Created attachment 14990
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7718</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-12 21:51:04 -0700</bug_when>
    <thetext>Landed in r23471.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>14990</attachid>
            <date>2007-06-12 19:34:36 -0700</date>
            <delta_ts>2007-06-12 19:46:49 -0700</delta_ts>
            <desc>patch</desc>
            <filename>eventCleanup.diff</filename>
            <type>text/plain</type>
            <size>25633</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzQ3MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDAgQEAKKzIwMDctMDYtMTIgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxMDkKKyAgICAgICAg
Q2xlYW51cCBKU0V2ZW50IGFuZCBKU0NsaXBib2FyZCBpbiBwcmVwZXJhdGlvbiBmb3IgYXV0b2dl
bmVyYXRpb24KKworICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19ldmVudHMuY3BwOgorICAgICAg
ICAoS0pTOjpET01FdmVudDo6RE9NRXZlbnQpOgorICAgICAgICAoS0pTOjpET01FdmVudDo6Z2V0
VmFsdWVQcm9wZXJ0eSk6CisgICAgICAgIChLSlM6OkRPTUV2ZW50OjpwdXQpOgorICAgICAgICAo
S0pTOjpET01FdmVudDo6cHV0VmFsdWVQcm9wZXJ0eSk6CisgICAgICAgIChLSlM6OkRPTUV2ZW50
UHJvdG90eXBlRnVuY3Rpb246OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEtKUzo6dG9KUyk6
CisgICAgICAgIChLSlM6OnRvRXZlbnQpOgorICAgICAgICAoS0pTOjopOgorICAgICAgICAoS0pT
OjpKU0NsaXBib2FyZDo6SlNDbGlwYm9hcmQpOgorICAgICAgICAoS0pTOjpKU0NsaXBib2FyZDo6
fkpTQ2xpcGJvYXJkKToKKyAgICAgICAgKEtKUzo6SlNDbGlwYm9hcmQ6OmdldE93blByb3BlcnR5
U2xvdCk6CisgICAgICAgIChLSlM6OkpTQ2xpcGJvYXJkOjpnZXRWYWx1ZVByb3BlcnR5KToKKyAg
ICAgICAgKEtKUzo6SlNDbGlwYm9hcmQ6OnB1dCk6CisgICAgICAgIChLSlM6OkpTQ2xpcGJvYXJk
OjpwdXRWYWx1ZVByb3BlcnR5KToKKyAgICAgICAgKEtKUzo6SlNDbGlwYm9hcmRQcm90b3R5cGVG
dW5jdGlvbjo6Y2FsbEFzRnVuY3Rpb24pOgorICAgICAgICAoS0pTOjp0b0NsaXBib2FyZCk6Cisg
ICAgICAgICogYmluZGluZ3MvanMva2pzX2V2ZW50cy5oOgorICAgICAgICAoS0pTOjpET01FdmVu
dDo6KToKKyAgICAgICAgKEtKUzo6RE9NRXZlbnQ6OmltcGwpOgorICAgICAgICAoS0pTOjpKU0Ns
aXBib2FyZDo6aW1wbCk6CisgICAgICAgICogZG9tL0NsaXBib2FyZEV2ZW50Lmg6CisgICAgICAg
ICogZG9tL0V2ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6c3JjRWxlbWVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudDo6cmV0dXJuVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnQ6OmNsaXBib2FyZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OmRhdGFUcmFu
c2Zlcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6Y2xpcGJvYXJkKToKKyAgICAgICAgKiBk
b20vTW91c2VFdmVudC5oOgorCiAyMDA3LTA2LTEzICBMYXJzIEtub2xsIDxsYXJzQHRyb2xsdGVj
aC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrby4KSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMva2pzX2V2ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9r
anNfZXZlbnRzLmNwcAkocmV2aXNpb24gMjM0NjYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL2tq
c19ldmVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zODcsOCArMzg3LDggQEAgY29uc3QgQ2xh
c3NJbmZvIERPTUV2ZW50OjppbmZvID0geyAiRXZlbgogS0pTX0lNUExFTUVOVF9QUk9UT1RZUEVf
RlVOQ1RJT04oRE9NRXZlbnRQcm90b3R5cGVGdW5jdGlvbikKIEtKU19JTVBMRU1FTlRfUFJPVE9U
WVBFKCJET01FdmVudCIsIERPTUV2ZW50UHJvdG90eXBlLCBET01FdmVudFByb3RvdHlwZUZ1bmN0
aW9uKQogCi1ET01FdmVudDo6RE9NRXZlbnQoRXhlY1N0YXRlICpleGVjLCBFdmVudCAqZSkKLSAg
OiBtX2ltcGwoZSksIGNsaXBib2FyZCgwKSAKK0RPTUV2ZW50OjpET01FdmVudChFeGVjU3RhdGUq
IGV4ZWMsIEV2ZW50KiBldmVudCkKKyAgICA6IG1faW1wbChldmVudCkKIHsKICAgICBzZXRQcm90
b3R5cGUoRE9NRXZlbnRQcm90b3R5cGU6OnNlbGYoZXhlYykpOwogfQpAQCAtMzk4LDE4MyArMzk4
LDE3MCBAQCBET01FdmVudDo6fkRPTUV2ZW50KCkKICAgICBTY3JpcHRJbnRlcnByZXRlcjo6Zm9y
Z2V0RE9NT2JqZWN0KG1faW1wbC5nZXQoKSk7CiB9CiAKLS8vIHBhc3MgbWFya3MgdGhyb3VnaCB0
byBKUyBvYmplY3RzIHdlIGhvbGQgZHVyaW5nIGdhcmJhZ2UgY29sbGVjdGlvbgotdm9pZCBET01F
dmVudDo6bWFyaygpCi17Ci0gICAgRE9NT2JqZWN0OjptYXJrKCk7Ci0gICAgaWYgKGNsaXBib2Fy
ZCAmJiAhY2xpcGJvYXJkLT5tYXJrZWQoKSkKLSAgICAgICAgY2xpcGJvYXJkLT5tYXJrKCk7Ci19
Ci0KIGJvb2wgRE9NRXZlbnQ6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUgKmV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewogICAg
IHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8RE9NRXZlbnQsIERPTU9iamVjdD4oZXhlYywgJkRP
TUV2ZW50VGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiB9CiAKLUpTVmFsdWUgKkRP
TUV2ZW50OjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuKSBjb25z
dAorSlNWYWx1ZSogRE9NRXZlbnQ6OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBp
bnQgdG9rZW4pIGNvbnN0CiB7Ci0gIEV2ZW50ICZldmVudCA9ICptX2ltcGw7Ci0gIHN3aXRjaCAo
dG9rZW4pIHsKLSAgY2FzZSBUeXBlOgotICAgIHJldHVybiBqc1N0cmluZyhldmVudC50eXBlKCkp
OwotICBjYXNlIFRhcmdldDoKLSAgY2FzZSBTcmNFbGVtZW50OiAvKk1TSUUgZXh0ZW5zaW9uIC0g
InRoZSBvYmplY3QgdGhhdCBmaXJlZCB0aGUgZXZlbnQiKi8KLSAgICByZXR1cm4gdG9KUyhleGVj
LCBldmVudC50YXJnZXQoKSk7Ci0gIGNhc2UgQ3VycmVudFRhcmdldDoKLSAgICByZXR1cm4gdG9K
UyhleGVjLCBldmVudC5jdXJyZW50VGFyZ2V0KCkpOwotICBjYXNlIEV2ZW50UGhhc2U6Ci0gICAg
cmV0dXJuIGpzTnVtYmVyKGV2ZW50LmV2ZW50UGhhc2UoKSk7Ci0gIGNhc2UgQnViYmxlczoKLSAg
ICByZXR1cm4ganNCb29sZWFuKGV2ZW50LmJ1YmJsZXMoKSk7Ci0gIGNhc2UgQ2FuY2VsQnViYmxl
OgotICAgIHJldHVybiBqc0Jvb2xlYW4oZXZlbnQuY2FuY2VsQnViYmxlKCkpOwotICBjYXNlIFJl
dHVyblZhbHVlOgotICAgIHJldHVybiBqc0Jvb2xlYW4oIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQo
KSk7Ci0gIGNhc2UgQ2FuY2VsYWJsZToKLSAgICByZXR1cm4ganNCb29sZWFuKGV2ZW50LmNhbmNl
bGFibGUoKSk7Ci0gIGNhc2UgVGltZVN0YW1wOgotICAgIHJldHVybiBqc051bWJlcihldmVudC50
aW1lU3RhbXAoKSk7Ci0gIGNhc2UgQ2xpcGJvYXJkRGF0YToKLSAgewotICAgIGlmIChldmVudC5p
c0NsaXBib2FyZEV2ZW50KCkpIHsKLSAgICAgIENsaXBib2FyZEV2ZW50ICppbXBsID0gc3RhdGlj
X2Nhc3Q8Q2xpcGJvYXJkRXZlbnQgKj4oJmV2ZW50KTsKLSAgICAgIGlmICghY2xpcGJvYXJkKQot
ICAgICAgICBjbGlwYm9hcmQgPSBuZXcgQ2xpcGJvYXJkKGV4ZWMsIGltcGwtPmNsaXBib2FyZCgp
KTsKLSAgICAgIHJldHVybiBjbGlwYm9hcmQ7Ci0gICAgfSBlbHNlCi0gICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLSAgfQotICBjYXNlIERhdGFUcmFuc2ZlcjoKLSAgewotICAgIGlmIChldmVu
dC5pc0RyYWdFdmVudCgpKSB7Ci0gICAgICBNb3VzZUV2ZW50ICppbXBsID0gc3RhdGljX2Nhc3Q8
TW91c2VFdmVudCAqPigmZXZlbnQpOwotICAgICAgaWYgKCFjbGlwYm9hcmQpCi0gICAgICAgIGNs
aXBib2FyZCA9IG5ldyBDbGlwYm9hcmQoZXhlYywgaW1wbC0+Y2xpcGJvYXJkKCkpOwotICAgICAg
cmV0dXJuIGNsaXBib2FyZDsKLSAgICB9IGVsc2UKLSAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OwotICB9Ci0gIGRlZmF1bHQ6Ci0gICAgcmV0dXJuIDA7Ci0gIH0KKyAgICBFdmVudCogZXZlbnQg
PSBpbXBsKCk7CisgICAgc3dpdGNoICh0b2tlbikgeworICAgICAgICBjYXNlIFR5cGU6CisgICAg
ICAgICAgICByZXR1cm4ganNTdHJpbmcoZXZlbnQtPnR5cGUoKSk7CisgICAgICAgIGNhc2UgVGFy
Z2V0OgorICAgICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZXZlbnQtPnRhcmdldCgpKTsKKyAg
ICAgICAgY2FzZSBTcmNFbGVtZW50OgorICAgICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZXZl
bnQtPnNyY0VsZW1lbnQoKSk7CisgICAgICAgIGNhc2UgQ3VycmVudFRhcmdldDoKKyAgICAgICAg
ICAgIHJldHVybiB0b0pTKGV4ZWMsIGV2ZW50LT5jdXJyZW50VGFyZ2V0KCkpOworICAgICAgICBj
YXNlIEV2ZW50UGhhc2U6CisgICAgICAgICAgICByZXR1cm4ganNOdW1iZXIoZXZlbnQtPmV2ZW50
UGhhc2UoKSk7CisgICAgICAgIGNhc2UgQnViYmxlczoKKyAgICAgICAgICAgIHJldHVybiBqc0Jv
b2xlYW4oZXZlbnQtPmJ1YmJsZXMoKSk7CisgICAgICAgIGNhc2UgQ2FuY2VsQnViYmxlOgorICAg
ICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihldmVudC0+Y2FuY2VsQnViYmxlKCkpOworICAgICAg
ICBjYXNlIFJldHVyblZhbHVlOgorICAgICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihldmVudC0+
cmV0dXJuVmFsdWUoKSk7CisgICAgICAgIGNhc2UgQ2FuY2VsYWJsZToKKyAgICAgICAgICAgIHJl
dHVybiBqc0Jvb2xlYW4oZXZlbnQtPmNhbmNlbGFibGUoKSk7CisgICAgICAgIGNhc2UgVGltZVN0
YW1wOgorICAgICAgICAgICAgcmV0dXJuIGpzTnVtYmVyKGV2ZW50LT50aW1lU3RhbXAoKSk7Cisg
ICAgICAgIGNhc2UgQ2xpcGJvYXJkRGF0YToKKyAgICAgICAgICAgIGlmIChldmVudC0+aXNDbGlw
Ym9hcmRFdmVudCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGV2ZW50LT5j
bGlwYm9hcmREYXRhKCkpOworICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAg
ICAgIGNhc2UgRGF0YVRyYW5zZmVyOgorICAgICAgICAgICAgaWYgKGV2ZW50LT5pc0RyYWdFdmVu
dCgpKQorICAgICAgICAgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIGV2ZW50LT5kYXRhVHJhbnNm
ZXIoKSk7CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KIH0KIAotdm9pZCBET01FdmVudDo6cHV0
KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgIEpTVmFsdWUgKnZhbHVlLCBpbnQgYXR0cikKK3ZvaWQgRE9NRXZlbnQ6
OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSogdmFsdWUsIGludCBhdHRyKQogewogICAgIGxvb2t1cFB1dDxET01FdmVudCwgRE9NT2Jq
ZWN0PihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyLCAmRE9NRXZlbnRUYWJsZSwgdGhp
cyk7CiB9CiAKLXZvaWQgRE9NRXZlbnQ6OnB1dFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlICpleGVj
LCBpbnQgdG9rZW4sIEpTVmFsdWUgKnZhbHVlLCBpbnQpCit2b2lkIERPTUV2ZW50OjpwdXRWYWx1
ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2VuLCBKU1ZhbHVlKiB2YWx1ZSwgaW50
KQoreworICAgIEV2ZW50KiBldmVudCA9IG1faW1wbC5nZXQoKTsKKyAgICBzd2l0Y2ggKHRva2Vu
KSB7CisgICAgICAgIGNhc2UgUmV0dXJuVmFsdWU6CisgICAgICAgICAgICBldmVudC0+c2V0RGVm
YXVsdFByZXZlbnRlZCghdmFsdWUtPnRvQm9vbGVhbihleGVjKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDYW5jZWxCdWJibGU6CisgICAgICAgICAgICBldmVudC0+c2V0Q2Fu
Y2VsQnViYmxlKHZhbHVlLT50b0Jvb2xlYW4oZXhlYykpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK0pTVmFsdWUq
IERPTUV2ZW50UHJvdG90eXBlRnVuY3Rpb246OmNhbGxBc0Z1bmN0aW9uKEV4ZWNTdGF0ZSAqZXhl
YywgSlNPYmplY3QgKiB0aGlzT2JqLCBjb25zdCBMaXN0ICZhcmdzKQogewotICBFdmVudCAmZXZl
bnQgPSAqbV9pbXBsOwotICBzd2l0Y2ggKHRva2VuKSB7Ci0gIGNhc2UgUmV0dXJuVmFsdWU6Ci0g
ICAgZXZlbnQuc2V0RGVmYXVsdFByZXZlbnRlZCghdmFsdWUtPnRvQm9vbGVhbihleGVjKSk7Ci0g
ICAgYnJlYWs7Ci0gIGNhc2UgQ2FuY2VsQnViYmxlOgotICAgIGV2ZW50LnNldENhbmNlbEJ1YmJs
ZSh2YWx1ZS0+dG9Cb29sZWFuKGV4ZWMpKTsKLSAgICBicmVhazsKLSAgZGVmYXVsdDoKLSAgICBi
cmVhazsKLSAgfQotfQotCi1KU1ZhbHVlICpET01FdmVudFByb3RvdHlwZUZ1bmN0aW9uOjpjYWxs
QXNGdW5jdGlvbihFeGVjU3RhdGUgKmV4ZWMsIEpTT2JqZWN0ICogdGhpc09iaiwgY29uc3QgTGlz
dCAmYXJncykKLXsKLSAgaWYgKCF0aGlzT2JqLT5pbmhlcml0cygmRE9NRXZlbnQ6OmluZm8pKQot
ICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0gIEV2ZW50ICZldmVudCA9
ICpzdGF0aWNfY2FzdDxET01FdmVudCAqPiggdGhpc09iaiApLT5pbXBsKCk7Ci0gIHN3aXRjaCAo
aWQpIHsKLSAgICBjYXNlIERPTUV2ZW50OjpTdG9wUHJvcGFnYXRpb246Ci0gICAgICBldmVudC5z
dG9wUHJvcGFnYXRpb24oKTsKLSAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGNhc2Ug
RE9NRXZlbnQ6OlByZXZlbnREZWZhdWx0OgotICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
LSAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIGNhc2UgRE9NRXZlbnQ6OkluaXRFdmVu
dDoKLSAgICAgIGV2ZW50LmluaXRFdmVudChBdG9taWNTdHJpbmcoYXJnc1swXS0+dG9TdHJpbmco
ZXhlYykpLCBhcmdzWzFdLT50b0Jvb2xlYW4oZXhlYyksIGFyZ3NbMl0tPnRvQm9vbGVhbihleGVj
KSk7Ci0gICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoIXRoaXNPYmotPmluaGVy
aXRzKCZET01FdmVudDo6aW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5
cGVFcnJvcik7CisKKyAgICBFdmVudCogZXZlbnQgPSBzdGF0aWNfY2FzdDxET01FdmVudCo+KHRo
aXNPYmopLT5pbXBsKCk7CisgICAgc3dpdGNoIChpZCkgeworICAgICAgICBjYXNlIERPTUV2ZW50
OjpTdG9wUHJvcGFnYXRpb246CisgICAgICAgICAgICBldmVudC0+c3RvcFByb3BhZ2F0aW9uKCk7
CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgY2FzZSBET01FdmVu
dDo6UHJldmVudERlZmF1bHQ6CisgICAgICAgICAgICBldmVudC0+cHJldmVudERlZmF1bHQoKTsK
KyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICBjYXNlIERPTUV2ZW50
OjpJbml0RXZlbnQ6CisgICAgICAgICAgICBldmVudC0+aW5pdEV2ZW50KEF0b21pY1N0cmluZyhh
cmdzWzBdLT50b1N0cmluZyhleGVjKSksIGFyZ3NbMV0tPnRvQm9vbGVhbihleGVjKSwgYXJnc1sy
XS0+dG9Cb29sZWFuKGV4ZWMpKTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICB9OwogICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotSlNWYWx1ZSogdG9KUyhFeGVjU3Rh
dGUqIGV4ZWMsIEV2ZW50KiBlKQorSlNWYWx1ZSogdG9KUyhFeGVjU3RhdGUqIGV4ZWMsIEV2ZW50
KiBldmVudCkKIHsKLSAgaWYgKCFlKQotICAgIHJldHVybiBqc051bGwoKTsKKyAgICBpZiAoIWV2
ZW50KQorICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgU2NyaXB0SW50ZXJwcmV0ZXIqIGlu
dGVycCA9IHN0YXRpY19jYXN0PFNjcmlwdEludGVycHJldGVyKj4oZXhlYy0+ZHluYW1pY0ludGVy
cHJldGVyKCkpOworICAgIFNjcmlwdEludGVycHJldGVyKiBpbnRlcnAgPSBzdGF0aWNfY2FzdDxT
Y3JpcHRJbnRlcnByZXRlcio+KGV4ZWMtPmR5bmFtaWNJbnRlcnByZXRlcigpKTsKIAotICBKU0xv
Y2sgbG9jazsKKyAgICBKU0xvY2sgbG9jazsKIAotICBET01PYmplY3QqIHJldCA9IGludGVycC0+
Z2V0RE9NT2JqZWN0KGUpOwotICBpZiAoIXJldCkgewotICAgIGlmIChlLT5pc0tleWJvYXJkRXZl
bnQoKSkKLSAgICAgIHJldCA9IG5ldyBKU0tleWJvYXJkRXZlbnQoZXhlYywgc3RhdGljX2Nhc3Q8
S2V5Ym9hcmRFdmVudCo+KGUpKTsKLSAgICBlbHNlIGlmIChlLT5pc1RleHRFdmVudCgpKQotICAg
ICAgcmV0ID0gbmV3IEpTVGV4dEV2ZW50KGV4ZWMsIHN0YXRpY19jYXN0PFRleHRFdmVudCo+KGUp
KTsKLSAgICBlbHNlIGlmIChlLT5pc01vdXNlRXZlbnQoKSkKLSAgICAgIHJldCA9IG5ldyBKU01v
dXNlRXZlbnQoZXhlYywgc3RhdGljX2Nhc3Q8TW91c2VFdmVudCo+KGUpKTsKLSAgICBlbHNlIGlm
IChlLT5pc1doZWVsRXZlbnQoKSkKLSAgICAgIHJldCA9IG5ldyBKU1doZWVsRXZlbnQoZXhlYywg
c3RhdGljX2Nhc3Q8V2hlZWxFdmVudCo+KGUpKTsKLSAgICBlbHNlIGlmIChlLT5pc1VJRXZlbnQo
KSkKLSAgICAgIHJldCA9IG5ldyBKU1VJRXZlbnQoZXhlYywgc3RhdGljX2Nhc3Q8VUlFdmVudCo+
KGUpKTsKLSAgICBlbHNlIGlmIChlLT5pc011dGF0aW9uRXZlbnQoKSkKLSAgICAgIHJldCA9IG5l
dyBKU011dGF0aW9uRXZlbnQoZXhlYywgc3RhdGljX2Nhc3Q8TXV0YXRpb25FdmVudCo+KGUpKTsK
LSAgICBlbHNlIGlmIChlLT5pc092ZXJmbG93RXZlbnQoKSkKLSAgICAgIHJldCA9IG5ldyBKU092
ZXJmbG93RXZlbnQoZXhlYywgc3RhdGljX2Nhc3Q8T3ZlcmZsb3dFdmVudCo+KGUpKTsKKyAgICBE
T01PYmplY3QqIHJldCA9IGludGVycC0+Z2V0RE9NT2JqZWN0KGV2ZW50KTsKKyAgICBpZiAocmV0
KQorICAgICAgICByZXR1cm4gcmV0OworCisgICAgaWYgKGV2ZW50LT5pc0tleWJvYXJkRXZlbnQo
KSkKKyAgICAgICAgcmV0ID0gbmV3IEpTS2V5Ym9hcmRFdmVudChleGVjLCBzdGF0aWNfY2FzdDxL
ZXlib2FyZEV2ZW50Kj4oZXZlbnQpKTsKKyAgICBlbHNlIGlmIChldmVudC0+aXNUZXh0RXZlbnQo
KSkKKyAgICAgICAgcmV0ID0gbmV3IEpTVGV4dEV2ZW50KGV4ZWMsIHN0YXRpY19jYXN0PFRleHRF
dmVudCo+KGV2ZW50KSk7CisgICAgZWxzZSBpZiAoZXZlbnQtPmlzTW91c2VFdmVudCgpKQorICAg
ICAgICByZXQgPSBuZXcgSlNNb3VzZUV2ZW50KGV4ZWMsIHN0YXRpY19jYXN0PE1vdXNlRXZlbnQq
PihldmVudCkpOworICAgIGVsc2UgaWYgKGV2ZW50LT5pc1doZWVsRXZlbnQoKSkKKyAgICAgICAg
cmV0ID0gbmV3IEpTV2hlZWxFdmVudChleGVjLCBzdGF0aWNfY2FzdDxXaGVlbEV2ZW50Kj4oZXZl
bnQpKTsKKyAgICBlbHNlIGlmIChldmVudC0+aXNVSUV2ZW50KCkpCisgICAgICAgIHJldCA9IG5l
dyBKU1VJRXZlbnQoZXhlYywgc3RhdGljX2Nhc3Q8VUlFdmVudCo+KGV2ZW50KSk7CisgICAgZWxz
ZSBpZiAoZXZlbnQtPmlzTXV0YXRpb25FdmVudCgpKQorICAgICAgICByZXQgPSBuZXcgSlNNdXRh
dGlvbkV2ZW50KGV4ZWMsIHN0YXRpY19jYXN0PE11dGF0aW9uRXZlbnQqPihldmVudCkpOworICAg
IGVsc2UgaWYgKGV2ZW50LT5pc092ZXJmbG93RXZlbnQoKSkKKyAgICAgICAgcmV0ID0gbmV3IEpT
T3ZlcmZsb3dFdmVudChleGVjLCBzdGF0aWNfY2FzdDxPdmVyZmxvd0V2ZW50Kj4oZXZlbnQpKTsK
ICAgICBlbHNlCi0gICAgICByZXQgPSBuZXcgSlNFdmVudChleGVjLCBlKTsKKyAgICAgICAgcmV0
ID0gbmV3IEpTRXZlbnQoZXhlYywgZXZlbnQpOwogCi0gICAgaW50ZXJwLT5wdXRET01PYmplY3Qo
ZSwgcmV0KTsKLSAgfQotCi0gIHJldHVybiByZXQ7CisgICAgaW50ZXJwLT5wdXRET01PYmplY3Qo
ZXZlbnQsIHJldCk7CisgICAgcmV0dXJuIHJldDsKIH0KIAotRXZlbnQgKnRvRXZlbnQoSlNWYWx1
ZSAqdmFsKQorRXZlbnQqIHRvRXZlbnQoSlNWYWx1ZSogdmFsKQogewogICAgIGlmICghdmFsIHx8
ICF2YWwtPmlzT2JqZWN0KCZET01FdmVudDo6aW5mbykpCiAgICAgICAgIHJldHVybiAwOwotICAg
IHJldHVybiBzdGF0aWNfY2FzdDxET01FdmVudCAqPih2YWwpLT5pbXBsKCk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PERPTUV2ZW50Kj4odmFsKS0+aW1wbCgpOwogfQogCiAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKLWNvbnN0IENsYXNzSW5mbyBDbGlwYm9hcmQ6OmluZm8gPSB7ICJDbGlwYm9hcmQi
LCAwLCAmQ2xpcGJvYXJkVGFibGUsIDAgfTsKK2NvbnN0IENsYXNzSW5mbyBKU0NsaXBib2FyZDo6
aW5mbyA9IHsgIkNsaXBib2FyZCIsIDAsICZKU0NsaXBib2FyZFRhYmxlLCAwIH07CiAKLS8qIFNv
dXJjZSBmb3IgQ2xpcGJvYXJkVGFibGUuIFVzZSAibWFrZSBoYXNodGFibGVzIiB0byByZWdlbmVy
YXRlLgotQGJlZ2luIENsaXBib2FyZFRhYmxlIDMKLSAgZHJvcEVmZmVjdCAgICBDbGlwYm9hcmQ6
OkRyb3BFZmZlY3QgICBEb250RGVsZXRlCi0gIGVmZmVjdEFsbG93ZWQgQ2xpcGJvYXJkOjpFZmZl
Y3RBbGxvd2VkICAgICAgICBEb250RGVsZXRlCi0gIHR5cGVzICAgICAgICAgQ2xpcGJvYXJkOjpU
eXBlcyAgICAgICAgRG9udERlbGV0ZXxSZWFkT25seQorLyogU291cmNlIGZvciBKU0NsaXBib2Fy
ZFRhYmxlLiBVc2UgIm1ha2UgaGFzaHRhYmxlcyIgdG8gcmVnZW5lcmF0ZS4KK0BiZWdpbiBKU0Ns
aXBib2FyZFRhYmxlIDMKKyAgZHJvcEVmZmVjdCAgICBKU0NsaXBib2FyZDo6RHJvcEVmZmVjdCAg
IERvbnREZWxldGUKKyAgZWZmZWN0QWxsb3dlZCBKU0NsaXBib2FyZDo6RWZmZWN0QWxsb3dlZCAg
ICAgICAgRG9udERlbGV0ZQorICB0eXBlcyAgICAgICAgIEpTQ2xpcGJvYXJkOjpUeXBlcyAgICAg
ICAgRG9udERlbGV0ZXxSZWFkT25seQogQGVuZAotQGJlZ2luIENsaXBib2FyZFByb3RvdHlwZVRh
YmxlIDQKLSAgY2xlYXJEYXRhICAgICBDbGlwYm9hcmQ6OkNsZWFyRGF0YSAgICBEb250RGVsZXRl
fEZ1bmN0aW9uIDAKLSAgZ2V0RGF0YSAgICAgICBDbGlwYm9hcmQ6OkdldERhdGEgICAgICBEb250
RGVsZXRlfEZ1bmN0aW9uIDEKLSAgc2V0RGF0YSAgICAgICBDbGlwYm9hcmQ6OlNldERhdGEgICAg
ICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKLSAgc2V0RHJhZ0ltYWdlICBDbGlwYm9hcmQ6OlNldERy
YWdJbWFnZSBEb250RGVsZXRlfEZ1bmN0aW9uIDMKK0BiZWdpbiBKU0NsaXBib2FyZFByb3RvdHlw
ZVRhYmxlIDQKKyAgY2xlYXJEYXRhICAgICBKU0NsaXBib2FyZDo6Q2xlYXJEYXRhICAgIERvbnRE
ZWxldGV8RnVuY3Rpb24gMAorICBnZXREYXRhICAgICAgIEpTQ2xpcGJvYXJkOjpHZXREYXRhICAg
ICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCisgIHNldERhdGEgICAgICAgSlNDbGlwYm9hcmQ6OlNl
dERhdGEgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDIKKyAgc2V0RHJhZ0ltYWdlICBKU0NsaXBi
b2FyZDo6U2V0RHJhZ0ltYWdlIERvbnREZWxldGV8RnVuY3Rpb24gMwogQGVuZAogKi8KIAotS0pT
X0RFRklORV9QUk9UT1RZUEUoQ2xpcGJvYXJkUHJvdG90eXBlKQotS0pTX0lNUExFTUVOVF9QUk9U
T1RZUEVfRlVOQ1RJT04oQ2xpcGJvYXJkUHJvdG90eXBlRnVuY3Rpb24pCi1LSlNfSU1QTEVNRU5U
X1BST1RPVFlQRSgiQ2xpcGJvYXJkIiwgQ2xpcGJvYXJkUHJvdG90eXBlLCBDbGlwYm9hcmRQcm90
b3R5cGVGdW5jdGlvbikKK0tKU19ERUZJTkVfUFJPVE9UWVBFKEpTQ2xpcGJvYXJkUHJvdG90eXBl
KQorS0pTX0lNUExFTUVOVF9QUk9UT1RZUEVfRlVOQ1RJT04oSlNDbGlwYm9hcmRQcm90b3R5cGVG
dW5jdGlvbikKK0tKU19JTVBMRU1FTlRfUFJPVE9UWVBFKCJDbGlwYm9hcmQiLCBKU0NsaXBib2Fy
ZFByb3RvdHlwZSwgSlNDbGlwYm9hcmRQcm90b3R5cGVGdW5jdGlvbikKKworSlNDbGlwYm9hcmQ6
OkpTQ2xpcGJvYXJkKEV4ZWNTdGF0ZSogZXhlYywgV2ViQ29yZTo6Q2xpcGJvYXJkKiBjYikKKyAg
ICA6IG1faW1wbChjYikKK3sKKyAgICBzZXRQcm90b3R5cGUoSlNDbGlwYm9hcmRQcm90b3R5cGU6
OnNlbGYoZXhlYykpOworfQogCi1DbGlwYm9hcmQ6OkNsaXBib2FyZChFeGVjU3RhdGUgKmV4ZWMs
IFdlYkNvcmU6OkNsaXBib2FyZCAqY2IpCi0gIDogY2xpcGJvYXJkKGNiKQorSlNDbGlwYm9hcmQ6
On5KU0NsaXBib2FyZCgpCiB7Ci0gICAgc2V0UHJvdG90eXBlKENsaXBib2FyZFByb3RvdHlwZTo6
c2VsZihleGVjKSk7CisgICAgU2NyaXB0SW50ZXJwcmV0ZXI6OmZvcmdldERPTU9iamVjdChtX2lt
cGwuZ2V0KCkpOwogfQogCi1ib29sIENsaXBib2FyZDo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3Qm
IHNsb3QpCitib29sIEpTQ2xpcGJvYXJkOjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkK
IHsKLSAgICByZXR1cm4gZ2V0U3RhdGljVmFsdWVTbG90PENsaXBib2FyZCwgRE9NT2JqZWN0Pihl
eGVjLCAmQ2xpcGJvYXJkVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgcmV0
dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU0NsaXBib2FyZCwgRE9NT2JqZWN0PihleGVjLCAmSlND
bGlwYm9hcmRUYWJsZSwgdGhpcywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotSlNWYWx1ZSAq
Q2xpcGJvYXJkOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSAqZXhlYywgaW50IHRva2VuKSBj
b25zdAorSlNWYWx1ZSogSlNDbGlwYm9hcmQ6OmdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiBl
eGVjLCBpbnQgdG9rZW4pIGNvbnN0CiB7CisgICAgV2ViQ29yZTo6Q2xpcGJvYXJkKiBjbGlwYm9h
cmQgPSBpbXBsKCk7CiAgICAgc3dpdGNoICh0b2tlbikgewogICAgICAgICBjYXNlIERyb3BFZmZl
Y3Q6CiAgICAgICAgICAgICBBU1NFUlQoY2xpcGJvYXJkLT5pc0ZvckRyYWdnaW5nKCkgfHwgY2xp
cGJvYXJkLT5kcm9wRWZmZWN0KCkuaXNOdWxsKCkpOwpAQCAtNTg2LDI3ICs1NzMsMjggQEAgSlNW
YWx1ZSAqQ2xpcGJvYXJkOjpnZXRWYWx1ZVByb3BlcnR5KEV4ZQogICAgICAgICB7CiAgICAgICAg
ICAgICBIYXNoU2V0PFN0cmluZz4gdHlwZXMgPSBjbGlwYm9hcmQtPnR5cGVzKCk7CiAgICAgICAg
ICAgICBpZiAodHlwZXMuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHJldHVybiBqc051bGwo
KTsgCisgICAgICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOwogICAgICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICAgICAgTGlzdCBsaXN0OwogICAgICAgICAgICAgICAgIEhhc2hTZXQ8U3Ry
aW5nPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gdHlwZXMuZW5kKCk7Ci0gICAgICAgICAgICAgICAg
Zm9yIChIYXNoU2V0PFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdHlwZXMuYmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSAKKyAgICAgICAgICAgICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSB0eXBlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAg
ICAgICAgICAgICAgICAgIGxpc3QuYXBwZW5kKGpzU3RyaW5nKFVTdHJpbmcoKml0KSkpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBleGVjLT5sZXhpY2FsSW50ZXJwcmV0ZXIoKS0+YnVpbHRpbkFy
cmF5KCktPmNvbnN0cnVjdChleGVjLCBsaXN0KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiB9CiAKLXZvaWQgQ2xpcGJvYXJkOjpwdXQoRXhlY1N0YXRlICpleGVj
LCBjb25zdCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgKnZhbHVlLCBpbnQgYXR0
cikKK3ZvaWQgSlNDbGlwYm9hcmQ6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSogdmFsdWUsIGludCBhdHRyKQogewotICAgIGxvb2t1
cFB1dDxDbGlwYm9hcmQsRE9NT2JqZWN0PihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRy
LCAmQ2xpcGJvYXJkVGFibGUsIHRoaXMgKTsKKyAgICBsb29rdXBQdXQ8SlNDbGlwYm9hcmQsIERP
TU9iamVjdD4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0ciwgJkpTQ2xpcGJvYXJkVGFi
bGUsIHRoaXMgKTsKIH0KIAotdm9pZCBDbGlwYm9hcmQ6OnB1dFZhbHVlUHJvcGVydHkoRXhlY1N0
YXRlICpleGVjLCBpbnQgdG9rZW4sIEpTVmFsdWUgKnZhbHVlLCBpbnQgLyphdHRyKi8pCit2b2lk
IEpTQ2xpcGJvYXJkOjpwdXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgaW50IHRva2Vu
LCBKU1ZhbHVlKiB2YWx1ZSwgaW50IC8qYXR0ciovKQogeworICAgIFdlYkNvcmU6OkNsaXBib2Fy
ZCogY2xpcGJvYXJkID0gaW1wbCgpOwogICAgIHN3aXRjaCAodG9rZW4pIHsKICAgICAgICAgY2Fz
ZSBEcm9wRWZmZWN0OgogICAgICAgICAgICAgLy8gY2FuIG5ldmVyIHNldCB0aGlzIHdoZW4gbm90
IGZvciBkcmFnZ2luZywgdGh1cyBnZXR0aW5nIGFsd2F5cyByZXR1cm5zIE5VTEwgc3RyaW5nCkBA
IC02MjEsNTIgKzYwOSw1MCBAQCB2b2lkIENsaXBib2FyZDo6cHV0VmFsdWVQcm9wZXJ0eShFeGVj
U3RhCiAgICAgfQogfQogCi1KU1ZhbHVlICpDbGlwYm9hcmRQcm90b3R5cGVGdW5jdGlvbjo6Y2Fs
bEFzRnVuY3Rpb24oRXhlY1N0YXRlICpleGVjLCBKU09iamVjdCAqdGhpc09iaiwgY29uc3QgTGlz
dCAmYXJncykKK0pTVmFsdWUqIEpTQ2xpcGJvYXJkUHJvdG90eXBlRnVuY3Rpb246OmNhbGxBc0Z1
bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmosIGNvbnN0IExpc3QmIGFy
Z3MpCiB7Ci0gICAgaWYgKCF0aGlzT2JqLT5pbmhlcml0cygmQ2xpcGJvYXJkOjppbmZvKSkKKyAg
ICBpZiAoIXRoaXNPYmotPmluaGVyaXRzKCZKU0NsaXBib2FyZDo6aW5mbykpCiAgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7CiAKLSAgICBDbGlwYm9hcmQgKmNiID0g
c3RhdGljX2Nhc3Q8Q2xpcGJvYXJkICo+KHRoaXNPYmopOworICAgIFdlYkNvcmU6OkNsaXBib2Fy
ZCogY2xpcGJvYXJkID0gc3RhdGljX2Nhc3Q8SlNDbGlwYm9hcmQqPih0aGlzT2JqKS0+aW1wbCgp
OwogICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgY2FzZSBDbGlwYm9hcmQ6OkNsZWFyRGF0YToK
KyAgICAgICAgY2FzZSBKU0NsaXBib2FyZDo6Q2xlYXJEYXRhOgogICAgICAgICAgICAgaWYgKGFy
Z3Muc2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICBjYi0+Y2xpcGJvYXJkLT5jbGVhckFs
bERhdGEoKTsKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPmNsZWFyQWxsRGF0YSgpOwogICAg
ICAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgfSBlbHNlIGlm
IChhcmdzLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgY2ItPmNsaXBib2FyZC0+Y2xl
YXJEYXRhKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICBjbGlwYm9h
cmQtPmNsZWFyRGF0YShhcmdzWzBdLT50b1N0cmluZyhleGVjKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgImNsZWFyRGF0YTogSW52YWxp
ZCBudW1iZXIgb2YgYXJndW1lbnRzIik7Ci0gICAgICAgIGNhc2UgQ2xpcGJvYXJkOjpHZXREYXRh
OgorICAgICAgICBjYXNlIEpTQ2xpcGJvYXJkOjpHZXREYXRhOgogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoYXJncy5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vz
czsKLSAgICAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0ID0gY2ItPmNsaXBib2FyZC0+Z2V0RGF0
YShhcmdzWzBdLT50b1N0cmluZyhleGVjKSwgc3VjY2Vzcyk7CisgICAgICAgICAgICAgICAgU3Ry
aW5nIHJlc3VsdCA9IGNsaXBib2FyZC0+Z2V0RGF0YShhcmdzWzBdLT50b1N0cmluZyhleGVjKSwg
c3VjY2Vzcyk7CiAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBqc1N0cmluZyhyZXN1bHQpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgImdldERhdGE6IEludmFsaWQgbnVt
YmVyIG9mIGFyZ3VtZW50cyIpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2UgQ2xpcGJvYXJkOjpT
ZXREYXRhOgorICAgICAgICBjYXNlIEpTQ2xpcGJvYXJkOjpTZXREYXRhOgogICAgICAgICAgICAg
aWYgKGFyZ3Muc2l6ZSgpID09IDIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihj
Yi0+Y2xpcGJvYXJkLT5zZXREYXRhKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBhcmdzWzFdLT50
b1N0cmluZyhleGVjKSkpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVy
biB0aHJvd0Vycm9yKGV4ZWMsIFN5bnRheEVycm9yLCAic2V0RGF0YTogSW52YWxpZCBudW1iZXIg
b2YgYXJndW1lbnRzIik7Ci0gICAgICAgIGNhc2UgQ2xpcGJvYXJkOjpTZXREcmFnSW1hZ2U6Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihjbGlwYm9hcmQtPnNldERhdGEoYXJnc1sw
XS0+dG9TdHJpbmcoZXhlYyksIGFyZ3NbMV0tPnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgICAgICAg
ICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBTeW50YXhFcnJvciwgInNldERhdGE6IEludmFsaWQg
bnVtYmVyIG9mIGFyZ3VtZW50cyIpOworICAgICAgICBjYXNlIEpTQ2xpcGJvYXJkOjpTZXREcmFn
SW1hZ2U6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghY2ItPmNsaXBib2FyZC0+aXNGb3JE
cmFnZ2luZygpKQorICAgICAgICAgICAgaWYgKCFjbGlwYm9hcmQtPmlzRm9yRHJhZ2dpbmcoKSkK
ICAgICAgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAogICAgICAgICAgICAgaWYg
KGFyZ3Muc2l6ZSgpICE9IDMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhl
YywgU3ludGF4RXJyb3IsICJzZXREcmFnSW1hZ2U6IEludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50
cyIpOwogCi0gICAgICAgICAgICBpbnQgeCA9IChpbnQpYXJnc1sxXS0+dG9OdW1iZXIoZXhlYyk7
Ci0gICAgICAgICAgICBpbnQgeSA9IChpbnQpYXJnc1syXS0+dG9OdW1iZXIoZXhlYyk7CisgICAg
ICAgICAgICBpbnQgeCA9IHN0YXRpY19jYXN0PGludD4oYXJnc1sxXS0+dG9OdW1iZXIoZXhlYykp
OworICAgICAgICAgICAgaW50IHkgPSBzdGF0aWNfY2FzdDxpbnQ+KGFyZ3NbMl0tPnRvTnVtYmVy
KGV4ZWMpKTsKIAogICAgICAgICAgICAgLy8gU2VlIGlmIHRoZXkgcGFzc2VkIHVzIGEgbm9kZQot
ICAgICAgICAgICAgTm9kZSAqbm9kZSA9IHRvTm9kZShhcmdzWzBdKTsKKyAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSB0b05vZGUoYXJnc1swXSk7CiAgICAgICAgICAgICBpZiAoIW5vZGUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKICAgICAgICAg
ICAgIApAQCAtNjc1LDkgKzY2MSw5IEBAIEpTVmFsdWUgKkNsaXBib2FyZFByb3RvdHlwZUZ1bmN0
aW9uOjpjYWwKIAogICAgICAgICAgICAgaWYgKHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKS0+
aGFzTG9jYWxOYW1lKGltZ1RhZykgJiYgCiAgICAgICAgICAgICAgICAgIW5vZGUtPmluRG9jdW1l
bnQoKSkKLSAgICAgICAgICAgICAgICBjYi0+Y2xpcGJvYXJkLT5zZXREcmFnSW1hZ2Uoc3RhdGlj
X2Nhc3Q8SFRNTEltYWdlRWxlbWVudCo+KG5vZGUpLT5jYWNoZWRJbWFnZSgpLCBJbnRQb2ludCh4
LCB5KSk7CisgICAgICAgICAgICAgICAgY2xpcGJvYXJkLT5zZXREcmFnSW1hZ2Uoc3RhdGljX2Nh
c3Q8SFRNTEltYWdlRWxlbWVudCo+KG5vZGUpLT5jYWNoZWRJbWFnZSgpLCBJbnRQb2ludCh4LCB5
KSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgY2ItPmNsaXBib2FyZC0+c2V0
RHJhZ0ltYWdlRWxlbWVudChub2RlLCBJbnRQb2ludCh4LCB5KSk7ICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPnNldERyYWdJbWFnZUVsZW1lbnQobm9kZSwg
SW50UG9pbnQoeCwgeSkpOyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgfQpAQCAtNjg1LDQgKzY3
MSwxNCBAQCBKU1ZhbHVlICpDbGlwYm9hcmRQcm90b3R5cGVGdW5jdGlvbjo6Y2FsCiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiB9CiAKK0pTVmFsdWUqIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBX
ZWJDb3JlOjpDbGlwYm9hcmQqIG9iaikKK3sKKyAgICByZXR1cm4gY2FjaGVET01PYmplY3Q8V2Vi
Q29yZTo6Q2xpcGJvYXJkLCBKU0NsaXBib2FyZD4oZXhlYywgb2JqKTsKK30KKworV2ViQ29yZTo6
Q2xpcGJvYXJkKiB0b0NsaXBib2FyZChKU1ZhbHVlKiB2YWwpCit7CisgICAgcmV0dXJuIHZhbC0+
aXNPYmplY3QoJkpTQ2xpcGJvYXJkOjppbmZvKSA/IHN0YXRpY19jYXN0PEpTQ2xpcGJvYXJkKj4o
dmFsKS0+aW1wbCgpIDogMDsKK30KKwogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNf
ZXZlbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZXZlbnRzLmgJ
KHJldmlzaW9uIDIzNDY2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfZXZlbnRzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDcgKzM4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogbmFtZXNw
YWNlIEtKUyB7CiAKICAgICBjbGFzcyBXaW5kb3c7Ci0gICAgY2xhc3MgQ2xpcGJvYXJkOworICAg
IGNsYXNzIEpTQ2xpcGJvYXJkOwogICAgIAogICAgIGNsYXNzIEpTQWJzdHJhY3RFdmVudExpc3Rl
bmVyIDogcHVibGljIFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIgewogICAgIHB1YmxpYzoKQEAgLTk4
LDQ1ICs5OCw2MSBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBwdWJsaWM6CiAgICAgICAgIERPTUV2
ZW50KEV4ZWNTdGF0ZSosIFdlYkNvcmU6OkV2ZW50Kik7CiAgICAgICAgIHZpcnR1YWwgfkRPTUV2
ZW50KCk7CisKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3BlcnR5U2xvdChFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIEpTVmFsdWUq
IGdldFZhbHVlUHJvcGVydHkoRXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgSlNWYWx1ZSos
IGludCBhdHRyID0gTm9uZSk7Ci0gICAgICAgIHZvaWQgcHV0VmFsdWVQcm9wZXJ0eShFeGVjU3Rh
dGUqLCBpbnQgdG9rZW4sIEpTVmFsdWUqLCBpbnQpOworICAgICAgICB2b2lkIHB1dFZhbHVlUHJv
cGVydHkoRXhlY1N0YXRlKiwgaW50IHRva2VuLCBKU1ZhbHVlKiwgaW50IGF0dHIpOworCiAgICAg
ICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAm
aW5mbzsgfQogICAgICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87Ci0gICAgICAgIGVu
dW0geyBUeXBlLCBUYXJnZXQsIEN1cnJlbnRUYXJnZXQsIEV2ZW50UGhhc2UsIEJ1YmJsZXMsCi0g
ICAgICAgICAgICAgICBDYW5jZWxhYmxlLCBUaW1lU3RhbXAsIFN0b3BQcm9wYWdhdGlvbiwgUHJl
dmVudERlZmF1bHQsIEluaXRFdmVudCwKLSAgICAgICAgICAgICAgIC8vIE1TIElFIGVxdWl2YWxl
bnRzCi0gICAgICAgICAgICAgICBTcmNFbGVtZW50LCBSZXR1cm5WYWx1ZSwgQ2FuY2VsQnViYmxl
LCBDbGlwYm9hcmREYXRhLCBEYXRhVHJhbnNmZXIgfTsKLSAgICAgICAgV2ViQ29yZTo6RXZlbnQg
KmltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KLSAgICAgICAgdmlydHVhbCB2
b2lkIG1hcmsoKTsKKworICAgICAgICBlbnVtIHsgCisgICAgICAgICAgICBUeXBlLCBUYXJnZXQs
IEN1cnJlbnRUYXJnZXQsIEV2ZW50UGhhc2UsCisgICAgICAgICAgICBCdWJibGVzLCBDYW5jZWxh
YmxlLCBUaW1lU3RhbXAsIFN0b3BQcm9wYWdhdGlvbiwKKyAgICAgICAgICAgIFByZXZlbnREZWZh
dWx0LCBJbml0RXZlbnQsCisKKyAgICAgICAgICAgIC8vIE1TIElFIGVxdWl2YWxlbnRzCisgICAg
ICAgICAgICBTcmNFbGVtZW50LCBSZXR1cm5WYWx1ZSwgQ2FuY2VsQnViYmxlLCBDbGlwYm9hcmRE
YXRhLAorICAgICAgICAgICAgRGF0YVRyYW5zZmVyCisgICAgICAgIH07CisKKyAgICAgICAgV2Vi
Q29yZTo6RXZlbnQqIGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KKwogICAg
IHByb3RlY3RlZDoKICAgICAgICAgUmVmUHRyPFdlYkNvcmU6OkV2ZW50PiBtX2ltcGw7Ci0gICAg
ICAgIG11dGFibGUgQ2xpcGJvYXJkKiBjbGlwYm9hcmQ7CiAgICAgfTsKIAogICAgIEpTVmFsdWUq
IHRvSlMoRXhlY1N0YXRlKiwgV2ViQ29yZTo6RXZlbnQqKTsKLQogICAgIFdlYkNvcmU6OkV2ZW50
KiB0b0V2ZW50KEpTVmFsdWUqKTsgLy8gcmV0dXJucyAwIGlmIHZhbHVlIGlzIG5vdCBhIERPTUV2
ZW50IG9iamVjdAogCiAgICAgS0pTX0RFRklORV9QUk9UT1RZUEUoRE9NRXZlbnRQcm90b3R5cGUp
CiAKLSAgICBjbGFzcyBDbGlwYm9hcmQgOiBwdWJsaWMgRE9NT2JqZWN0IHsKLSAgICBmcmllbmQg
Y2xhc3MgQ2xpcGJvYXJkUHJvdG90eXBlRnVuY3Rpb247CisgICAgY2xhc3MgSlNDbGlwYm9hcmQg
OiBwdWJsaWMgRE9NT2JqZWN0IHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpTQ2xpcGJvYXJkUHJv
dG90eXBlRnVuY3Rpb247CiAgICAgcHVibGljOgotICAgICAgICBDbGlwYm9hcmQoRXhlY1N0YXRl
KiwgV2ViQ29yZTo6Q2xpcGJvYXJkICpkcyk7CisgICAgICAgIEpTQ2xpcGJvYXJkKEV4ZWNTdGF0
ZSosIFdlYkNvcmU6OkNsaXBib2FyZCogZHMpOworICAgICAgICB2aXJ0dWFsIH5KU0NsaXBib2Fy
ZCgpOworCiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwogICAgICAgICBKU1ZhbHVlKiBn
ZXRWYWx1ZVByb3BlcnR5KEV4ZWNTdGF0ZSosIGludCB0b2tlbikgY29uc3Q7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBwdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIEpTVmFsdWUqLCBp
bnQgYXR0ciA9IE5vbmUpOwogICAgICAgICB2b2lkIHB1dFZhbHVlUHJvcGVydHkoRXhlY1N0YXRl
KiwgaW50IHRva2VuLCBKU1ZhbHVlKiwgaW50IGF0dHIpOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
dG9Cb29sZWFuKEV4ZWNTdGF0ZSopIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKwogICAgICAgICB2
aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87
IH0KICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOworCiAgICAgICAgIGVudW0g
eyBDbGVhckRhdGEsIEdldERhdGEsIFNldERhdGEsIFR5cGVzLCBTZXREcmFnSW1hZ2UsIERyb3BF
ZmZlY3QsIEVmZmVjdEFsbG93ZWQgfTsKKworICAgICAgICBXZWJDb3JlOjpDbGlwYm9hcmQqIGlt
cGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KKwogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFJlZlB0cjxXZWJDb3JlOjpDbGlwYm9hcmQ+IGNsaXBib2FyZDsKKyAgICAgICAgUmVmUHRy
PFdlYkNvcmU6OkNsaXBib2FyZD4gbV9pbXBsOwogICAgIH07CiAKKyAgICBKU1ZhbHVlKiB0b0pT
KEV4ZWNTdGF0ZSosIFdlYkNvcmU6OkNsaXBib2FyZCopOworICAgIFdlYkNvcmU6OkNsaXBib2Fy
ZCogdG9DbGlwYm9hcmQoSlNWYWx1ZSopOworCiB9IC8vIG5hbWVzcGFjZQogCiAjZW5kaWYKSW5k
ZXg6IFdlYkNvcmUvZG9tL0NsaXBib2FyZEV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vQ2xpcGJvYXJkRXZlbnQuaAkocmV2aXNpb24gMjM0NjYpCisrKyBXZWJDb3JlL2RvbS9DbGlw
Ym9hcmRFdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogICogQ29weXJpZ2h0
IChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDEgVG9iaWFzIEFudG9uIChhbnRvbkBzdHVkLmZiaS5maC1kYXJtc3RhZHQuZGUpCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyAoc2FtLndlaW5pZ0BnbWFpbC5jb20pCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4K
KyAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM3LDcgKzM3LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDbGlwYm9hcmRFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlQXJnLCBib29sIGNhbmNlbGFibGVBcmcsIENs
aXBib2FyZCogY2xpcGJvYXJkQXJnKTsKIAogICAgICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCgp
IGNvbnN0IHsgcmV0dXJuIG1fY2xpcGJvYXJkLmdldCgpOyB9CisKICAgICAgICAgdmlydHVhbCBi
b29sIGlzQ2xpcGJvYXJkRXZlbnQoKSBjb25zdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIFJl
ZlB0cjxDbGlwYm9hcmQ+IG1fY2xpcGJvYXJkOwogICAgIH07CkluZGV4OiBXZWJDb3JlL2RvbS9F
dmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmgJKHJldmlzaW9uIDIzNDY2
KQorKysgV2ViQ29yZS9kb20vRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAK
ICAqIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogQ29w
eXJpZ2h0IChDKSAyMDAxIFRvYmlhcyBBbnRvbiAoYW50b25Ac3R1ZC5mYmkuZmgtZGFybXN0YWR0
LmRlKQogICogQ29weXJpZ2h0IChDKSAyMDA2IFNhbXVlbCBXZWluaWcgKHNhbS53ZWluaWdAZ21h
aWwuY29tKQotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENv
bXB1dGVyLCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0zMiw2ICszMiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorICAgIGNsYXNzIENsaXBi
b2FyZDsKKwogICAgIC8vIEZJWE1FOiB0aGlzIHNob3VsZCBwcm9iYWJseSBkZWZpbmVkIGVsc2V3
aGVyZS4KICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBET01UaW1lU3RhbXA7CiAKQEAg
LTg5LDYgKzkxLDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRE9NVGltZVN0YW1w
IHRpbWVTdGFtcCgpIHsgcmV0dXJuIG1fY3JlYXRlVGltZTsgfQogICAgICAgICB2b2lkIHN0b3BQ
cm9wYWdhdGlvbigpIHsgbV9wcm9wYWdhdGlvblN0b3BwZWQgPSB0cnVlOyB9CiAKKyAgICAgICAg
Ly8gSUUgRXh0ZW5zaW9ucworICAgICAgICBFdmVudFRhcmdldCogc3JjRWxlbWVudCgpIGNvbnN0
IHsgcmV0dXJuIHRhcmdldCgpOyB9IC8vIE1TSUUgZXh0ZW5zaW9uIC0gInRoZSBvYmplY3QgdGhh
dCBmaXJlZCB0aGUgZXZlbnQiCisgICAgICAgIGJvb2wgcmV0dXJuVmFsdWUoKSBjb25zdCB7IHJl
dHVybiAhbV9kZWZhdWx0UHJldmVudGVkOyB9CisgICAgICAgIENsaXBib2FyZCogY2xpcGJvYXJk
RGF0YSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xpcGJvYXJkRXZlbnQoKSA/IGNsaXBib2FyZCgpIDog
MDsgfQorICAgICAgICBDbGlwYm9hcmQqIGRhdGFUcmFuc2ZlcigpIGNvbnN0IHsgcmV0dXJuIGlz
TW91c2VFdmVudCgpID8gY2xpcGJvYXJkKCkgOiAwOyB9CisKICAgICAgICAgdmlydHVhbCBib29s
IGlzVUlFdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNNb3VzZUV2ZW50KCkg
Y29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc011dGF0aW9uRXZlbnQoKSBjb25zdDsKQEAg
LTEyMSw2ICsxMjksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBzdG9yZXNSZXN1bHRBc1N0cmluZygpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmVSZXN1bHQoY29uc3QgU3RyaW5nJik7CiAKKyAgICAgICAgdmlydHVhbCBDbGlwYm9hcmQqIGNs
aXBib2FyZCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKwogICAgIHByb3RlY3RlZDoKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlY2VpdmVkVGFyZ2V0KCk7CiAgICAgICAgIGJvb2wgZGlzcGF0Y2hlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGFyZ2V0OyB9CkluZGV4OiBXZWJDb3JlL2RvbS9Nb3VzZUV2ZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTW91c2VFdmVudC5oCShyZXZpc2lvbiAyMzQ2
NikKKysrIFdlYkNvcmUvZG9tL01vdXNlRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsOCAr
NTIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVuc2lnbmVkIHNob3J0IGJ1dHRv
bigpIGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uOyB9CiAgICAgICAgIGJvb2wgYnV0dG9uRG93bigp
IGNvbnN0IHsgcmV0dXJuIG1fYnV0dG9uRG93bjsgfQogICAgICAgICBFdmVudFRhcmdldE5vZGUq
IHJlbGF0ZWRUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX3JlbGF0ZWRUYXJnZXQuZ2V0KCk7IH0K
KwogICAgICAgICBDbGlwYm9hcmQqIGNsaXBib2FyZCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcGJv
YXJkLmdldCgpOyB9Ci0gICAgICAgIAorCiAgICAgICAgIE5vZGUqIHRvRWxlbWVudCgpIGNvbnN0
OwogICAgICAgICBOb2RlKiBmcm9tRWxlbWVudCgpIGNvbnN0OwogCg==
</data>
<flag name="review"
          id="6178"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>